UNPKG

@danielkalen/simplybind

Version:

Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.

1 lines 14.2 kB
(function(t){if(t=function(i,s,e,n){return function(r){return s[r]?i[r]?i[r].exports:(i[r]={exports:{}},i[r].exports=s[r].call(e,t,i[r],i[r].exports)):n(r)}}({},{0:function(t,i,s){var e=0,n="push pop shift unshift splice reverse sort".split(" "),r={},u={},h=["{{","}}"],o=Object.create({silent:!1},{placeholder:{get:function(){return h},set:function(t){_.iA(t)&&2===t.length&&(h=t,E())}}}),c={delay:!1,throttle:!1,simpleSelector:!1,promiseTransforms:!1,dispatchEvents:!1,sendArrayCopies:!1,updateEvenIfSame:!1,updateOnBind:!0},a=Object.defineProperty,f=Object.getOwnPropertyDescriptor,p=function(t,i){return this.uAS(i||this)},l=function(){return""+ ++e},v=function(){return Object.create(null)},b=function(t,i){return function(s,e,n){return w(s,e,n,t,i)}},d=function(t,i){return t.sU||(t.sU=new x(function(){return i?t.sV(t.fDV(),t,!0):t.uAS(t)},"Func",{}))},g=function(t,i){return t&&-1!==t.indexOf(i)},_={iD:function(t){return void 0!==t},iA:function(t){return t instanceof Array},iO:function(t){return"object"==typeof t&&t},iS:function(t){return"string"==typeof t},iN:function(t){return"number"==typeof t},iF:function(t){return"function"==typeof t},iBI:function(t){return t instanceof C}},y=function(t,i,s){var e;return(e=f(t,i))?(s&&(e.configurable=!0),e):(t=Object.getPrototypeOf(t))?y(t,i,!0):void 0},I=function(t,i,s){var e,u;if(t.OD||(t.OD=y(i,t.pr)),s)n.forEach(function(s){return a(i,s,{configurable:!0,value:function(){var e=Array.prototype[s].apply(i,arguments);return t.uAS(t),e}})});else if("Proxy"===t.type){var h=t.oR=t.value;if(t.value={result:null,args:null},_.iF(h)){var o=[].slice,c=e=function(){var s=o.call(arguments);return t.value.args=s=t.tfS?t.tfS(s):s,t.value.result=s=h.apply(i,s),t.uAS(t),s};a(i,t.pr,{configurable:t.isL=!0,get:function(){return c},set:function(i){_.iF(i)?i!==h&&(i!==e&&(h=t.oR=i),c!==e&&(c=e)):c=i}})}}else if((s=t.OD||r).get&&(t.OG=s.get.bind(i)),s.set&&(t.OS=s.set.bind(i)),u=s.configurable){u="Array"===t.type;var f=!t.OS&&!u;a(i,t.pr,{configurable:t.isL=!0,enumerable:s.enumerable,get:t.OG||function(){return t.value},set:function(i){t.sV(i,t,f)}}),u&&I(t,i[t.pr],!0)}},m=function(t,i,s){if(s){var e=[];for(t=0,s=n.length;t<s;t++){var r=n[t];e.push(delete i[r])}return e}return(s=t.OD).set||s.get||(s.value=t.oR||t.value),a(i,t.pr,s)},S=function(t){var i,s=v();for(i in t)s[i]=t[i];return s},M=function(t,i){var s,e=Object.keys(i),n=0;for(s=e.length;n<s;n++){var r=e[n];t[r]=i[r]}},D={get:function(t,i,s,e){return i?u[t._sb_ID]:t._sb_map&&t._sb_map[s]?u[t._sb_map[s]]:void 0},set:function(t,i){if(i)a(t.object,"_sb_ID",{configurable:!0,value:t.ID});else{var s=t.se;t.object._sb_map?t.object._sb_map[s]=t.ID:(i={},i[s]=t.ID,a(t.object,"_sb_map",{configurable:!0,value:i}))}}},O,P=/[.*+?^${}()|[\]\\]/g,j=O=null,E=function(){var t=o.placeholder[0].replace(P,"\\$&"),i=o.placeholder[1].replace(P,"\\$&"),s="[^"+i+"]+";j=new RegExp(t+"("+s+")"+i,"g"),O=new RegExp(""+t+s+i,"g")};E();var V=function(t,i,s){var e,n,r="",u=e=0;for(n=t.length;e<n;u=++e)r+=t[u],s[u]&&(r+=i[s[u]]);return r},A=function(t){throw Error("SimplyBind: "+(N[t]||t))},F=function(t,i){o.silent||(i=B(i),t=N[t],console.warn("SimplyBind: "+t+"\n\n"+i))},G=function(t){A("Invalid argument/s ("+t+")",!0)},B=function(t){return(Error().stack||"").split("\n").slice(t+3).join("\n")},N={erIP:"SimplyBind() and .to() only accept a function, an array, a bound object, a string, or a number.",erFN:"Only functions are allowed for .transform/.condition/All()",erEV:"Invalid argument number in .ofEvent()",emptyList:"Empty collection provided"},w=function(t,i,s,e,n){return(t||0===t)&&(_.iS(t)||_.iN(t)||_.iF(t)||t instanceof Array)||_.iBI(t)||A("erIP"),!_.iO(t)||t instanceof Array?(i=new C(i),i.so=s,i.IS=e,i.cC=n,t=_.iF(t)?i.sS(t,!0):i.sP(t)):t=n?n(t):t.sC(),t};w.version="1.15.6",w.settings=o,w.defaultOptions=c,w.unBindAll=function(t,i){var s;if(t&&(_.iO(t)||_.iF(t))){var e=t._sb_map;if(t._sb_ID&&u[t._sb_ID].rAS(i),e)for(s in e)t=e[s],u[t].rAS(i)}};var x=function(t,i,s){return M(this,s),this.oD=this.so?this.options:c,this.type=i,this.object=t,this.ID=l(),this.subs=[],this.sM=v(),this.pM=v(),this.atEV=[],"Proxy"===this.type&&(this.sV=p),"Event"===this.type||"Func"===this.type&&this.IS||("Pholder"===this.type?(i=this.pr,(t=this.pB=w(i).of(t)._).sPH(),this.value=t.pVL[this.Ph]):(this.value=t=this.fDV(),"ObjectProp"!==this.type||_.iD(t)||f(this.object,this.pr)||(this.object[this.pr]=t),I(this,this.object))),this.aEV(),u[this.ID]=this};x.prototype={aS:function(t,i,s,e){var n;if(t.isMulti){var r=t.bindings;for(t=0,n=r.length;t<n;t++){var u=r[t];this.aS(u,i,s,e)}}else if(this.sM[t.ID])var h=!0;else t.pM[this.ID]=this,this.subs.unshift(t),(n=this.sM[t.ID]=v()).uO=s,n.opts=S(i),(e||"Event"===this.type||"Proxy"===this.type||"Array"===this.type)&&(n.opts.updateEvenIfSame=!0),n.VR="Func"===t.type?"ps":"value";return h},rS:function(t,i){var s;if(t.isMulti){var e=t.bindings;for(t=0,s=e.length;t<s;t++){var n=e[t];this.rS(n,i)}}else this.sM[t.ID]&&(this.subs.splice(this.subs.indexOf(t),1),delete this.sM[t.ID],delete t.pM[this.ID]),i&&(t.rS(this),delete this.pM[t.ID]);0===this.subs.length&&0===Object.keys(this.pM).length&&this.DES()},rAS:function(t){var i,s=this.subs.slice(),e=0;for(i=s.length;e<i;e++){var n=s[e];this.rS(n,t)}},DES:function(){var t;if(delete u[this.ID],this.rPI(),"Event"===this.type){var i=this.atEV,s=0;for(t=i.length;s<t;s++){var e=i[s];this.urEVE(e)}}else"Func"===this.type&&delete this.object._sb_ID;this.isL&&this.OD&&m(this,this.object),"Array"===this.type&&m(this,this.value,!0),this.object._sb_map&&(delete this.object._sb_map[this.se],0===Object.keys(this.object._sb_map).length&&delete this.object._sb_map)},fDV:function(){switch(!1){case"Func"!==this.type:return this.object();default:return this.object[this.pr]}},sV:function(t,i,s,e){if(i||(i=this),this.tfS&&(t=this.tfS(t)),!s)switch(this.type){case"ObjectProp":this.isL?this.OS&&this.OS(t):t!==this.value&&(this.object[this.pr]=t);break;case"Pholder":(e=this.pB).pVL[this.Ph]=t,s=V(e.pCT,e.pVL,e.pIM),e.sV(s,i);break;case"Array":t!==this.value&&(_.iA(t)||(t=Array.prototype.concat(t)),m(this,this.value,!0),I(this,t=t.slice(),!0),this.OS&&this.OS(t));break;case"Func":s=this.ps,this.ps=t,t=this.object(t,s);break;case"Event":this.iE=!0,this.eE(t),this.iE=!1}this.value=t,this.uAS(i)},uAS:function(t){var i,s;if(s=(i=this.subs).length)for(;s--;)this.uS(i[s],t)},uS:function(t,i,s){var e;if(!(i===t||i!==this&&i.sM[t.ID])){var n=this.sM[t.ID];if(!n.dL||!n.dL[i.ID]){if(n.opts.throttle){var r=(s=+new Date)-n.lU;if(r<n.opts.throttle)return clearTimeout(n.uT),n.uT=setTimeout(function(s){return function(){if(s.sM[t.ID])return s.uS(t,i)}}(this),n.opts.throttle-r);n.lU=s}else if(n.opts.delay&&!s)return setTimeout(function(s){return function(){if(s.sM[t.ID])return s.uS(t,i,!0)}}(this),n.opts.delay);s="Array"===this.type&&n.opts.sendArrayCopies?this.value.slice():this.value,r=t[n.VR],(s=(e=n.tF)?e(s,r,t.object):s)===r&&!n.opts.updateEvenIfSame||n.cN&&!n.cN(s,r,t.object)||(n.opts.promiseTransforms&&s&&_.iF(s.then)?s.then(function(s){t.sV(s,i)}):t.sV(s,i),n.uO&&this.rS(t))}}},aM:function(t,i,s,e){var n,r;if(_.iF(s)){var u=0;for(r=i.length;u<r;u++){var h=i[u],o=h._||h;o.isMulti?this.aM(t,o.bindings,s,e):(h=this.sM[o.ID],h[t]=s,e=e&&!h.uO,this.pM[o.ID]&&((n=o.sM[this.ID])[t]||(n[t]=s)),!e&&"Func"!==this.type||"tF"!==t||this.uS(o,this))}return!0}return F("erFN",2)},ss:function(t,i){this.tfS=t,i&&this.sV(this.value)},aD:function(t,i){var s;(null!=(s=this.sM[t.ID]).dL?s.dL:s.dL=v())[i.ID]=1},sPH:function(){if(!this.pVL&&(this.pVL=v(),this.pIM=v(),this.pCT=[],_.iS(this.value))){this.pCT=this.value.split(O);var t=0;this.value=this.value.replace(j,function(i){return function(s,e){return i.pIM[t++]=e,i.pVL[e]=e}}(this))}},aPI:function(t){if("Event"!==this.type)return this.rPI(),this.PI=setInterval(function(t){return function(){var i=t.fDV();return t.sV(i)}}(this),t)},rPI:function(){return clearInterval(this.PI),this.PI=null},aEV:function(){this.evN&&this.rEVE(this.evN)},rEVE:function(t){this.atEV.push(t),this.evH||(this.evH=L.bind(this)),this.object[this.eM.listen](t,this.evH)},urEVE:function(t){this.atEV.splice(this.atEV.indexOf(t),1),this.object[this.eM.remove](t,this.evH)},eE:function(t){this.object[this.eM.emit](this.evN,t)}};var L=function(){this.iE||this.sV(arguments[this.pr],null,!0)},C=function(t,i){var s;if(i)M(this,i),this.sG=1;else for(s in this.sG=0,this.subs=[],this.oP=t||(t={}),this.options={},c)this.options[s]=null!=t[s]?t[s]:c[s];return this};t={sC:function(){return new C(null,this)},dM:function(t){return this._=t,Object.defineProperties(this,{value:{get:function(){return t.value}},original:{get:function(){return t.objects||t.object}},subscribers:{get:function(){return t.subs.slice().map(function(t){return t.object})}}})},createBP:function(t,i,s,e){var n;return this.object=t,(n=D.get(t,e,this.se,this.mC))?this.patchCachedBP(n):(t=new x(t,i,s),D.set(t,e),t)},patchCachedBP:function(t){var i;if("ObjectProp"!==t.type||this.pr in this.object||I(t,this.object),this.so){var s=this.oP;for(n in s){var e=s[n];t.oD[n]=e}}var n=t.oD;for(i in n)e=n[i],this.options[i]=_.iD(this.oP[i])?this.oP[i]:e;return t},sP:function(t){if(_.iN(t)&&(t=t.toString()),this.se=this.pr=t,!this.options.simpleSelector){if(g(t,":")){var i=t.split(":");this.de=i.slice(0,-1).join(":"),this.pr=i[i.length-1]}g(t,".")&&(i=this.pr.split("."),this.pr=i[0],this.Ph=i.slice(1).join(".")),g(this.de,"event")&&(g(t,"#")?(i=this.pr.split("#"),this.evN=i[0],this.pr=i[1]):(this.evN=this.pr,this.pr=0),isNaN(parseInt(this.pr))&&F("erEV",1))}return this},sS:function(t,i){switch(this.sG=1,!1){case!i:var s="Func";break;case!this.Ph:s="Pholder";break;case!(g(this.de,"array")&&_.iA(t[this.pr])):s="Array";break;case!g(this.de,"event"):s="Event",this.eM={listen:this.oP.listenMethod,remove:this.oP.removeMethod,emit:this.oP.emitMethod},t[this.eM.listen]||(this.eM.listen="on"),t[this.eM.remove]||(this.eM.remove="removeListener"),t[this.eM.emit]||(this.eM.emit="emit");break;case!g(this.de,"func"):s="Proxy";break;default:s="ObjectProp"}return g(this.de,"multi")?(t.length||A("emptyList"),this.dM(new Y(this,t,s))):this.dM(this.createBP(t,s,this,i)),g(this._.type,"Event")||g(this._.type,"Proxy")?this.options.updateOnBind=!1:g(this._.type,"Func")&&(this.options.updateOnBind=!0),this.cC?this.cC(this):this},aP:function(t){var i;t.sG=2,t.subs.push(this);var s=t._.aS(this._,t.options,t.uO);if(t.uO)delete t.uO;else if(t.options.updateOnBind&&!s)if(this._.isMulti){var e=this._.bindings,n=0;for(i=e.length;n<i;n++)s=e[n],t._.uS(s,t._)}else t._.uS(this._,t._)}},C.prototype=Object.create(t,{of:{get:function(){if(!this.sG)return k}},set:{get:function(){if(this.sG)return R}},chainTo:{get:function(){if(2===this.sG)return T}},transformSelf:{get:function(){if(1===this.sG)return H}},transform:{get:function(){if(2===this.sG)return U}},transformAll:{get:function(){if(2===this.sG)return W}},condition:{get:function(){if(2===this.sG)return $}},conditionAll:{get:function(){if(2===this.sG)return q}},bothWays:{get:function(){if(2===this.sG)return z}},unBind:{get:function(){if(2===this.sG)return J}},pollEvery:{get:function(){if(this.sG)return K}},stopPolling:{get:function(){if(this.sG)return Q}},setOption:{get:function(){if(2===this.sG)return X}},disallowFrom:{get:function(){var t;if(2===this.sG&&(t=this))return b(!1,function(i){return t._.aD(t.subs[t.subs.length-1]._,i._),t})}},updateOn:{get:function(){var t;if(this.sG&&(t=this))return b(!1,function(i){return i._!==t._&&(t._.pM[i._.ID]=i._,i._.aS(d(t._,!0),i.options,!1,!0)),t})}},removeUpdater:{get:function(){var t,i;if(this.sG&&(i=this)&&(t=this._.sU))return b(!1,function(s){s._.sM[t.ID]&&(delete i._.pM[s._.ID],s._.rS(t))})}},to:{get:function(){var t;if(1===this.sG&&(t=this))return b(!0,function(i){return i._!==t._&&i.aP(t),t})}},and:{get:function(){var t=this.sC();if(2===this.sG)return t;if(1===this.sG){if(!t._.isMulti){var i=t._;t._=t._=new Y(t),t._.addBP(i)}return b(!1,function(i){return t._.addBP(i._),t})}}},once:{get:function(){if(1===this.sG){var t=this.sC();return t.uO=!0,t}}},update:{get:function(){return this.set}},twoWay:{get:function(){return this.bothWays}},pipe:{get:function(){return this.chainTo}}});var k=function(t){return _.iO(t)||_.iF(t)||G(t),_.iBI(t)&&(t=t.object),this.sG=1,this.sS(t)},T=function(t,i,s){return w(this.subs[this.subs.length-1]).to(t,i,s)},R=function(t){return this._.sV(t),this},H=function(t){return _.iF(t)?this._.ss(t,this.options.updateOnBind):F("erFN",1),this},U=function(t){return this._.aM("tF",this.subs.slice(-1),t,this.options.updateOnBind),this},W=function(t){return this._.aM("tF",this.subs,t,this.options.updateOnBind),this},$=function(t){return this._.aM("cN",this.subs.slice(-1),t),this},q=function(t){return this._.aM("cN",this.subs,t),this},z=function(t){var i,s=this.subs[this.subs.length-1],e=s._,n=this._.isMulti?this._.bindings:[this._];for(e.aS(this._,s.options),s=0,i=n.length;s<i;s++){var r=n[s],u=r.sM[e.ID].tF;r=r.sM[e.ID].cN,(u||t)&&(u=_.iF(t)?t:u)&&!1!==t&&(e.sM[this._.ID].tF=u),r&&(e.sM[this._.ID].cN=r)}return this},J=function(t){var i,s=this.subs,e=0;for(i=s.length;e<i;e++){var n=s[e];this._.rS(n._,t)}return this},K=function(t){return this._.aPI(t),this},Q=function(){return this._.rPI(),this},X=function(t,i){return this._.sM[this.subs[this.subs.length-1]._.ID].opts[t]=i,this},Y=function(t,i,s){var e,n;if(t.se=t.se.slice(6),M(this,this.In=t),this.isMulti=!0,this.bindings=e=[],i)for(t=0,n=i.length;t<n;t++){var r=i[t];this.addBP(r,s)}return Object.defineProperties(this,{type:{get:function(){return e.map(function(t){return t.type})}},value:{get:function(){return e.map(function(t){return t.value})}}})},Z=Y.prototype=Object.create(t);return Object.keys(x.prototype).forEach(function(t){return Z[t]=function(i,s,e,n){var r,u=this.bindings,h=0;for(r=u.length;h<r;h++){var o=u[h];"uS"===t&&(s=o),o[t](i,s,e,n)}}}),Z.addBP=function(t,i){this.bindings.push(i?this.createBP(t,i,this.In):t)},i.exports=w,i.exports}},this,t),"function"==typeof define&&define.umd)define(function(){return t(0)});else{if("object"!=typeof module||!module.exports)return this.simplybind=t(0);module.exports=t(0)}}).call(this,"function"==typeof require&&require);