mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-10-24 22:25:09 +03:00
Knockout use Reflection binding
This commit is contained in:
parent
71287022ca
commit
67a68915db
3 changed files with 9 additions and 7 deletions
|
|
@ -1624,11 +1624,11 @@ ko.bindingProvider = new class
|
|||
// Deprecated: with is no longer recommended
|
||||
var rewrittenBindings = ko.expressionRewriting.preProcessBindings(bindingsString),
|
||||
functionBody = "with($data){return{" + rewrittenBindings + "}}";
|
||||
bindingFunction = new Function("$context", "$root", "$parent", "$data", "$element", functionBody);
|
||||
bindingFunction = new Function("$context", "$root", "$parent", "$data", functionBody);
|
||||
bindingCache.set(cacheKey, bindingFunction);
|
||||
}
|
||||
return bindingFunction(bindingContext,
|
||||
bindingContext["$root"], bindingContext["$parent"], bindingContext["$data"] || {}, node
|
||||
bindingContext["$root"], bindingContext["$parent"], bindingContext["$data"] || {}
|
||||
);
|
||||
*/
|
||||
if (!bindingFunction) {
|
||||
|
|
@ -1643,7 +1643,8 @@ ko.bindingProvider = new class
|
|||
bindingContext,
|
||||
{
|
||||
has: () => true,
|
||||
get: (target, key) => target[key] || target['$data'][key]
|
||||
// get: (target, key) => target['$data'][key] || target[key]
|
||||
get: (target, key) => Reflect.has(target['$data'], key) ? target['$data'][key] : target[key]
|
||||
}
|
||||
);
|
||||
return bindingFunction(bindingContext);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ b),a.__ko__hasDomDataOptionValue__=!0,a.value="number"===typeof b?b:"");break;ca
|
|||
1),m=e.match(a),k=-1,l="/"):40===p||123===p||91===p?++h:41===p||125===p||93===p?--h:n||f.length||34!==p&&39!==p||(l=l.slice(1,-1));f.push(l)}if(0<h)throw Error("Unbalanced parentheses, braces, or brackets");}g.push("'$data':()=>$data");return g.join(",")},dc:(e,g)=>-1<e.findIndex(m=>m.key==g),Ha:(e,g,m,f,h,k)=>{g&&c.V(g)?!c.wb(g)||k&&g.L()===h||g(h):(console.log(`"${f}" should contain observable in ${e.outerHTML.replace(/>.+/,">")}`),m.get("$data")[f]=h)}}})();(()=>{function a(f){return 8==f.nodeType&&
|
||||
e.test(f.nodeValue)}function b(f){return 8==f.nodeType&&g.test(f.nodeValue)}function d(f,h){for(var k=f,l=1,p=[];k=k.nextSibling;){if(b(k)&&(c.g.l.set(k,m,!0),!--l))return p;p.push(k);a(k)&&++l}if(!h)throw Error("Cannot find closing comment tag to match: "+f.nodeValue);return null}var e=/^\s*ko(?:\s+([\s\S]+))?\s*$/,g=/^\s*\/ko\s*$/,m="__ko_matchedEndComment__";c.s={aa:{},childNodes:f=>a(f)?d(f):f.childNodes,ka:f=>{a(f)?(f=d(f))&&[...f].forEach(h=>c.removeNode(h)):c.g.Ra(f)},qa:(f,h)=>{a(f)?(c.s.ka(f),
|
||||
f.after(...h)):c.g.qa(f,h)},Vb:(f,h,k)=>{k?k.after(h):a(f)?f.nextSibling.before(h):f.prepend(h)},firstChild:f=>{if(a(f))return f=f.nextSibling,!f||b(f)?null:f;let h=f.firstChild;if(h&&b(h))throw Error("Found invalid end comment, as the first child of "+f);return h},nextSibling:f=>{if(a(f)){var h=d(f,void 0);f=h?(h.length?h[h.length-1]:f).nextSibling:null}if((h=f.nextSibling)&&b(h)){if(b(h)&&!c.g.l.get(h,m))throw Error("Found end comment without a matching opening comment, as child of "+f);return null}return h},
|
||||
Rb:a,bc:f=>(f=f.nodeValue.match(e))?f[1]:null}})();const S=new Map,la=a=>{switch(a.nodeType){case 1:return a.getAttribute("data-bind");case 8:return c.s.bc(a)}return null};c.pb=new class{Yb(a){switch(a.nodeType){case 1:return null!=a.getAttribute("data-bind");case 8:return c.s.Rb(a)}return!1}Pb(a,b){if(a=la(a))try{let d=S.get(a);d||(d=new Function("$context","with($context){return{"+c.ma.Zb(a)+"}}"),S.set(a,d));b=new Proxy(b,{has:()=>!0,get:(e,g)=>e[g]||e.$data[g]});return d(b)}catch(d){throw d.message=
|
||||
Rb:a,bc:f=>(f=f.nodeValue.match(e))?f[1]:null}})();const S=new Map,la=a=>{switch(a.nodeType){case 1:return a.getAttribute("data-bind");case 8:return c.s.bc(a)}return null};c.pb=new class{Yb(a){switch(a.nodeType){case 1:return null!=a.getAttribute("data-bind");case 8:return c.s.Rb(a)}return!1}Pb(a,b){if(a=la(a))try{let d=S.get(a);d||(d=new Function("$context","with($context){return{"+c.ma.Zb(a)+"}}"),S.set(a,d));b=new Proxy(b,{has:()=>!0,get:(e,g)=>Reflect.has(e.$data,g)?e.$data[g]:e[g]});return d(b)}catch(d){throw d.message=
|
||||
"Unable to parse bindings.\nBindings value: "+a+"\nMessage: "+d.message,d;}return null}};const G=Symbol("_subscribable"),H=Symbol("_ancestorBindingInfo"),T=Symbol("_dataDependency"),U={},I=c.g.l.Z();c.i={};c.ba=class{constructor(a,b,d,e){var g=this,m=a===U,f=m?void 0:a,h="function"==typeof f&&!c.V(f),k=e?.dataDependency;a=()=>{var p=h?f():f;p=c.g.h(p);b?(c.g.extend(g,b),H in b&&(g[H]=b[H])):g.$root=p;g[G]=l;m?p=g.$data:g.$data=p;d?.(g,b,p);if(b?.[G]&&!c.u.m().Ta(b[G]))b[G]();k&&(g[T]=k);return g.$data};
|
||||
if(e?.exportDependencies)a();else{var l=c.yb(a);l.L();l.isActive()?l.la=null:g[G]=void 0}}createChildContext(a,b){return new c.ba(a,this,(d,e)=>{d.$parent=e.$data;b.extend?.(d)},b)}extend(a,b){return new c.ba(U,this,d=>c.g.extend(d,"function"==typeof a?a(d):a),b)}};const V=a=>{a=c.g.l.get(a,I);var b=a?.D;b&&(a.D=null,b.xb())};class ma{constructor(a,b,d){this.H=a;this.da=b;this.ua=new Set;this.F=!1;b.D||c.g.N.ha(a,V);d?.D&&(d.D.ua.add(a),this.Aa=d)}xb(){this.Aa?.D?.Nb(this.H)}Nb(a){this.ua.delete(a);
|
||||
this.ua.size||this.sb?.()}sb(){this.F=!0;this.da.D&&!this.ua.size&&(this.da.D=null,c.g.N.Za(this.H,V),c.j.notify(this.H,c.j.ca),this.xb())}}c.j={F:"childrenComplete",ca:"descendantsComplete",subscribe:(a,b,d,e,g)=>{var m=c.g.l.Sa(a,I,{});m.xa||(m.xa=new c.P);g?.notifyImmediately&&m.Wa[b]&&c.u.I(d,e,[a]);return m.xa.subscribe(d,e,b)},notify:(a,b)=>{var d=c.g.l.get(a,I);if(d&&(d.Wa[b]=!0,d.xa?.B(a,b),b==c.j.F))if(d.D)d.D.sb();else if(void 0===d.D&&d.xa?.oa(c.j.ca))throw Error("descendantsComplete event not supported for bindings on this node");
|
||||
|
|
|
|||
|
|
@ -39,11 +39,11 @@ ko.bindingProvider = new class
|
|||
// Deprecated: with is no longer recommended
|
||||
var rewrittenBindings = ko.expressionRewriting.preProcessBindings(bindingsString),
|
||||
functionBody = "with($data){return{" + rewrittenBindings + "}}";
|
||||
bindingFunction = new Function("$context", "$root", "$parent", "$data", "$element", functionBody);
|
||||
bindingFunction = new Function("$context", "$root", "$parent", "$data", functionBody);
|
||||
bindingCache.set(cacheKey, bindingFunction);
|
||||
}
|
||||
return bindingFunction(bindingContext,
|
||||
bindingContext["$root"], bindingContext["$parent"], bindingContext["$data"] || {}, node
|
||||
bindingContext["$root"], bindingContext["$parent"], bindingContext["$data"] || {}
|
||||
);
|
||||
*/
|
||||
if (!bindingFunction) {
|
||||
|
|
@ -58,7 +58,8 @@ ko.bindingProvider = new class
|
|||
bindingContext,
|
||||
{
|
||||
has: () => true,
|
||||
get: (target, key) => target[key] || target['$data'][key]
|
||||
// get: (target, key) => target['$data'][key] || target[key]
|
||||
get: (target, key) => Reflect.has(target['$data'], key) ? target['$data'][key] : target[key]
|
||||
}
|
||||
);
|
||||
return bindingFunction(bindingContext);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue