UNPKG

proxy-observable

Version:
2 lines (1 loc) 1.62 kB
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):n.observable=t()}(this,function(){"use strict";var n=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},t=function(){function n(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}return function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}}(),e=function(){function e(){n(this,e),this.fns={any:[]}}return t(e,[{key:"has",value:function(n){return n in this.fns&&this.fns[n].length>0||this.fns.any.length>0}},{key:"on",value:function(n,t){return n in this.fns==!1&&(this.fns[n]=[]),this.fns[n].push(t),t}},{key:"fire",value:function(n,t,e){return this.fns.any.concat(n in this.fns?this.fns[n]:[]).forEach(function(r){return r(t,e,n)}),this}},{key:"off",value:function(n){for(var t in this.fns)for(var e=this.fns[t],r=0;r<e.length;r++)if(e[r]===n)return e.splice(r,1),!0;return!1}},{key:"once",value:function(n,t){var e=this;return this.on(n,function n(r,i,f){t(r,i,f),e.off(n)}),t}}]),e}();return function(n){if(n.on&&n.off)return n;var t=new e,r=new Proxy(n,{get:function(n,e){if(e in n){if(n.constructor===Array){var i=r;"pop"===e?i=n[n.length-1]:"shift"===e&&(i=n[0]),"push"!==e&&"length"!==e&&t.fire(e,i)}return n[e]}return"on"===e?t.on.bind(t):"once"===e?t.once.bind(t):"off"===e?t.off.bind(t):void 0},set:function(n,e,r){return n.constructor===Array?"length"!==e&&t.fire("change",r):t.has(e)&&t.fire(e,r,n[e]),n[e]=r,!0}});return r}});