@webqit/observer 1.7.3 → 1.7.4

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/main.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t);var n=function(e){return!Array.isArray(e)&&"object"==typeof e&&e},i=function(e){return typeof e};function s(e,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var r,n,i=globalThis.WebQitInternalsRegistry.get(e);if(!i){if(i=new Map,!1===t[0])return i;globalThis.WebQitInternalsRegistry.set(e,i)}for(;r=t.shift();)if((n=i)&&!(i=i.get(r))){if(i=new Map,!1===t[0])return i;n.set(r,i)}return i}var a=function(e){return Array.isArray(e)},o=function(e){return"function"==typeof e},l=function(e){return null===e||""===e},u=function(e){return arguments.length&&(void 0===e||void 0===e)},c=function(e){return Array.isArray(e)||"object"==typeof e&&e||o(e)},f=function(e){return o(e)||e&&"[object function]"==={}.toString.call(e)},p=function(e){return e instanceof Number||"number"==typeof e},h=function(e){return p(e)||!0!==e&&!1!==e&&null!==e&&""!==e&&!isNaN(1*e)},g=function(e){return e instanceof String||"string"==typeof e&&null!==e},b=function(e,t=1){var r=0;e.forEach(e=>{r++});var n=e.slice(e.length-r,t);return arguments.length>1?n:n[0]},d=function(e,t=1){return arguments.length>1?b(e.slice().reverse(),t).reverse():b(e.slice().reverse())},v=function(e,...t){return t.forEach(t=>{e.indexOf(t)<0&&e.push(t)}),e},m=function(e,t){var r=[];return function(e,t){t=(t=t||Object.prototype)&&!a(t)?[t]:t;var r=[];for(e=e;e&&(!t||t.indexOf(e)<0)&&"default"!==e.name;)r.push(e),e=e?Object.getPrototypeOf(e):null;return r}(e,t).forEach(e=>{v(r,...Object.getOwnPropertyNames(e))}),r};function y(e,t,r=!1,i=!1,s=!1){var o=0,l=e.shift();if((h(l)||!0===l||!1===l)&&(o=l,l=e.shift()),!e.length)throw new Error("_merge() requires two or more array/objects.");return e.forEach((e,u)=>{(c(e)||f(e))&&(r?m(e):Object.getOwnPropertyNames(e)).forEach(c=>{if(t(c,l,e,u)){var f=l[c],p=e[c];if((a(f)&&a(p)||n(f)&&n(p))&&(!0===o||o>0))l[c]=a(f)&&a(p)?[]:{},y([h(o)?o-1:o,l[c],f,p],t,r,i,s);else if(a(l)&&a(e))i?l[c]=p:l.push(p);else try{s?Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(e,c)):l[c]=e[c]}catch(e){}}})}),l}var w=function(e,t){var r=void 0;return c(e)&&Object.keys(e).forEach((n,i)=>{!1!==r&&(r=t(h(n)?parseFloat(n):n,e[n],i))}),r};new Map;var O=function(...e){return y(e,(e,t,r)=>!0,!1,!1,!1)};function j(e,t,r=null,n=!1){return t.length>e.length?-1:("number"==typeof r?n?e.slice(0,r+1+(r<0?e.length:0)):e.slice(r):e).reduce((e,r,i)=>{var[s,a,o]=e;if(!n&&s>-1)return[s,a,o];var l=o+1,u=r===t[l]?0===l?[i,0]:[a,l]:[-1,-1];return u[1]===t.length-1&&(u[1]=-1,u[0]>-1)?[u[0]].concat(u):[s].concat(u)},[-1,-1,-1])[0]+(n||"number"!=typeof r?0:r>-1?r:e.length-r)}function P(e,t,r=null,n=!1){var i=j(e,t,r,n);return-1===i?[]:e.slice(i+t.length)}var E=function(e,t=!0){return a(e)?e:!t&&n(e)?[e]:!1!==e&&0!==e&&function(e){return l(e)||u(e)||!1===e||0===e||c(e)&&!Object.keys(e).length}(e)?[]:function(e){return!g(e)&&!u(e.length)}(e)?Array.prototype.slice.call(e):n(e)?Object.values(e):[e]};function _(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?e.join(".")===t.join("."):e.length===t.length&&e.reduce((e,r,n)=>e&&r===t[n],!0)}var F=function(e,t,r=null){return a(t)?e.filter(e=>r?t.filter(t=>r(e,t)).length:-1!==t.indexOf(e)):[]};function S(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?(e.join(".")+".").startsWith(t.join(".")+"."):t.reduce((t,r,n)=>t&&r===e[n],!0)}function x(e){return(D(e)?e:E(e).length?[e]:[]).reduce((e,t)=>e.concat([E(t)]),[]).map(e=>T.resolve(e))}class T extends Array{static resolve(e){return e.every(e=>!(e+"").includes("."))?(new T).concat(e):e}get dotSafe(){return!0}}function D(e){return E(e).reduce((e,t)=>e||a(t),!1)}function W(e){return e.filter(e=>e||0===e).length!==e.length}class k{constructor(e){this.target=e,this.fireables=[],this.currentlyFiring=[]}add(e){return this.fireables.push(e),e}remove(e){this.fireables=this.fireables.filter(t=>t!==e)}removeMatches(e){this.match(e).forEach(e=>{this.fireables=this.fireables.filter(t=>t!==e)})}match(e){return this.fireables.filter(t=>{var r=x(t.filter),n=E((t.params||{}).tags),i=x(e.filter),s=E((e.params||{}).tags);return(!e.originalHandler||t.handler===e.originalHandler)&&(!i.length||_(i,r))&&(!s.length||s.length===n.length&&F(n,s).length===s.length)})}static _getFirebase(e,t,r=!0,n=this.__namespace){if(!c(t))throw new Error('Subject must be of type object; "'+i(t)+'" given!');var a=this;return n&&globalThis.WebQitObserverNamespaceRegistry.has(e+"-"+n)&&(a=globalThis.WebQitObserverNamespaceRegistry.get(e+"-"+n),e+="-"+n),!s(t,"firebases").has(e)&&r&&s(t,"firebases").set(e,new a(t)),s(t,"firebases").get(e)}static _namespace(e,t,r=null){if(e+="-"+t,2===arguments.length)return globalThis.WebQitObserverNamespaceRegistry.get(e);if(!(r.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${t} must be a subclass of ${this.name}.`);globalThis.WebQitObserverNamespaceRegistry.set(e,r),r.__namespace=t}}globalThis.WebQitObserverNamespaceRegistry||(globalThis.WebQitObserverNamespaceRegistry=new Map);class R{constructor(e,t){this.target=e,this.handler=t.handler,this.filter=t.filter,this.params=t.params}disconnect(){this.disconnected=!0}}class z extends R{fire(e,t,r){return this.disconnected||this.filter&&!F(E(this.filter),[e.type]).length?t(...Array.prototype.slice.call(arguments,2)):this.handler(e,r,t)}}var I=function(e,t=[],r=!0){var n=0;return h(arguments[0])&&c(arguments[1])&&(n=arguments[0],e=arguments[1],t=arguments[2]||[]),y([n,{},e],(e,r,n)=>f(t)?t(e):!a(t)||!t.length||t.indexOf(e)>-1,!1,!1,r)};class V{constructor(e,t){if(this.target=e,!t.type)throw new Error("Action type must be given in definition!");w(t,(e,t)=>{Object.defineProperty(this,e,{value:t,enumerable:!0})}),Object.seal(this)}}class A extends k{add(e){return super.add(new z(this.target,e))}fire(e,t=null){if(e instanceof V||(e=new V(this.target,e)),this.currentlyFiring.filter(t=>t.type===e.type&&t.name===e.name).length)return t?t():void 0;this.currentlyFiring.push(e);const r=(n,...i)=>{var s=this.fireables[n];return s?s.fire(e,(...e)=>r(n+1,...e),...i):t?t(...i):i[0]};var n=r(0);return this.currentlyFiring.pop(),n}static getFirebase(e,t=!0,r=null){return super._getFirebase("interceptor",...arguments)}static namespace(e,t=null){return super._namespace("interceptor",...arguments)}}var M=function(e){return s(e,!1).get(e)||e},Q=function(e,t,r={},n={}){if(!t||!c(t))throw new Error("Target must be of type object!");t=M(t);var i,s=function(n){return arguments.length?n:Reflect[e](t,...Object.values(r))};return(i=A.getFirebase(t,!1,n.namespace))?i.fire({type:e,...r},s):s()},N=function(e,t,r,n={}){return Q("apply",e,{thisArgument:t,argumentsList:r},n)},C=function(e,t,r=null,n={}){return Q("construct",e,arguments.length>2?{argumentsList:t,newTarget:r}:{argumentsList:t},n)};class q{constructor(e,t=!1){this._={},this._.target=e,this._.cancellable=t,this._.propagationStopped=!1,this._.defaultPrevented=!1,this._.promisesInstance=null,this._.promises=[]}get target(){return this._.target}get cancellable(){return this._.cancellable}stopPropagation(){this._.propagationStopped=!0}get propagationStopped(){return this._.propagationStopped}preventDefault(){this._.defaultPrevented=!0}get defaultPrevented(){return this._.defaultPrevented}waitUntil(e){e instanceof Promise&&(this._.promises.push(e),this._.promisesInstance=null)}get promises(){return!this._.promisesInstance&&this._.promises.length&&(this._.promisesInstance=Promise.all(this._.promises)),this._.promisesInstance}respondWith(e){var t,r=n(e)&&!u(e.propagationStopped)&&!u(e.defaultPrevented);!1===e||r&&e.propagationStopped?this.stopPropagation():!1===e||r&&e.defaultPrevented?this.preventDefault():(e instanceof Promise&&(t=e)||r&&(t=e.promises))&&this.waitUntil(t)}}class B extends R{constructor(e,t){if(super(e,t),this.filters2D=x(this.filter),this.filtersIsOriginally2D=D(this.filter),this.filtersIsDynamic=this.filters2D.filter(e=>W(E(e))).length>0,this.filtersIsDynamic&&this.filters2D.length>1)throw new Error('Only one "Dynamic Filter" must be observed at a time! "'+this.filters2D.map(e=>"["+e.join(", ")+"]").join(", ")+'" have been bound together.')}fire(e){if(this.disconnected||this.params.type&&(t=e=>this.params.type===e.type,!e.reduce((e,r,n)=>e||t(r,n),!1)))return;var t;const r=e=>!["set","def"].includes(e.type)||!this.params.diff||(f(this.params.diff)?this.params.diff(e.value,e.oldValue):e.value!==e.oldValue);var i=new q(this.target);if(this.filters2D.length){var s=e.filter(e=>this.filters2D.filter((t,n)=>{var i=t.slice();return this.filtersIsDynamic&&e.path.forEach((e,t)=>{i[t]=i[t]||0===i[t]?i[t]:e}),(!this.filtersIsDynamic||!W(i))&&r(e)&&(!this.params.subtree&&_(i,e.path)||this.params.suptree&&S(i,e.path)&&(!h(this.params.suptree)||P(i,e.path).length<=this.params.suptree)||this.params.subtree&&e.path.length>=i.length&&S(e.path,i)&&(!h(this.params.subtree)||P(e.path,i).length<=this.params.subtree))}).length);if(s.length)if(this.filtersIsOriginally2D||this.params.subtree){var a=s;n(this.filter)&&(a={...this.filter},s.forEach((e,t)=>{a[e.name]=e})),i.respondWith(this.handler(a,i))}else s.forEach((e,t)=>{i.respondWith(this.handler(e,i))})}else(this.params.subtree||e.filter(e=>_(e.path,[e.name])).length===e.length)&&e.filter(e=>r(e)).length&&i.respondWith(this.handler(e,i));return i}}class H{constructor(e,t){if(this.target=e,t.originalSubject||(this.originalSubject=e),!("type"in t))throw new Error("Mutation type must be given in definition!");if(!("name"in t))throw new Error("Property name must be given in definition!");w(t,(e,t)=>{"path"===e&&(t=T.resolve(t)),Object.defineProperty(this,e,{value:t,enumerable:!0})}),this.path||Object.defineProperty(this,"path",{value:T.resolve([t.name]),enumerable:!0}),Object.seal(this)}}class U extends k{constructor(e){super(e),this.buffers=[]}add(e){return super.add(new B(this.target,e))}fire(e,t){var r=new q(this.target,t);return e=E(e,!1).map(e=>e instanceof H?e:new H(this.target,e)),this.buffers.length?(d(this.buffers)(e),r):(this.currentlyFiring.filter(t=>e.filter(e=>t.type===e.type&&t.name===e.name).length).length,this.fireables.forEach(n=>{if(r.propagationStopped&&t)return r;r.respondWith(n.fire(e))}),r)}static getFirebase(e,t=!0,r=null){return super._getFirebase("observer",...arguments)}static namespace(e,t=null){return super._namespace("observer",...arguments)}}var G=function(e,t,r=null,n={}){if(!(e=r||e)||!c(e))throw new Error("Target must be of type object!");e=M(e);var i=E(t),o=i.map(t=>{var a,o=function(n){return arguments.length?n:s(e,"accessorizedProps").has(t)&&s(e,"accessorizedProps").get(t).touch(!0)?s(e,"accessorizedProps").get(t).get():r?Reflect.get(e,t,r):Reflect.get(e,t)};return(a=A.getFirebase(e,!0,n.namespace))?a.fire({type:"get",name:t,related:i,receiver:r},o):o()});return a(t)?o:o[0]},K=function(e,t,r=null,n={}){if(!(e=M(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+i(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),!f(r))throw new Error('Handler must be a function; "'+i(r)+'" given!');var s,a=U.getFirebase(e,!0,n.namespace),o={filter:t,handler:r,params:n};if((o.filter||"*"===o.params.subtree||o.params.subtree&&X(e))&&J(e,o.filter,o.params.subtree,n.namespace),o.params.unique&&(s=a.match({filter:t,params:n})).length){if("replace"!==o.params.unique)return s[0];a.remove(s[0])}return a.add(o)},L=function(e,t,r,i=null,s={}){var a;if(e!==r&&(K(r,(r,n)=>{if(a=U.getFirebase(e,!1,s.namespace)){var i=r.map(r=>{var n=r;do{if(n.target===e)return}while(n=n.src);var i={};return w(r,(e,t)=>{"target"!==e&&"name"!==e&&"path"!==e&&"src"!==e&&(i[e]=t)}),i.name=t,i.path=[t].concat(r.path),i.originalSubject=r.originalSubject,i.src=r,new H(e,i)}).filter(e=>e);if(i.length)return a.fire(i,n.cancellable)}},{subtree:!0,...s,unique:!0,tags:[$,t,e]}),n(i)&&(a=U.getFirebase(e,!1,s.namespace)))){var o=O({name:t,type:"set",value:r,related:[t]},i);let e=a.fire(o,s.cancellable);if(s.eventTypeReturn)return e}};const $={};function J(e,t=null,r=!1,n=null){if(!e||!c(e))throw new Error("Target must be of type object!");var i=U.getFirebase(e,!0,n);if(i&&!i.build){i.build=r;var s=x(t),a=!s.length||s.filter(e=>!e[0]&&0!==e[0]).length?Object.keys(e):s.map(e=>e[0]),o=s.length?s.map(e=>e.slice(1)).filter(e=>e.length):null;i.subBuild=o&&o.length?o:null,a.forEach(t=>{var s=G(e,t,null,{namespace:n});try{c(s)&&(L(e,t,s,null,params),(i.subBuild&&X(s)||(_isFunction(r)?r(s):r&&X(s)))&&J(s,i.subBuild,r,n))}catch(e){}})}}const X=e=>(e instanceof Object||e instanceof Array||e instanceof Function)&&("undefined"==typeof window||e!==window);var Y=function(e,t,r=null,n={}){if(!(e=M(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+i(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!f(r))throw new Error('Handler must be a function; "'+i(r)+'" given!');var s;if(s=U.getFirebase(e,!1,n.namespace))return s.removeMatches({filter:t,originalHandler:r,params:n})},Z=function(e,t,r,i=null,s={}){var a;if(Y(r,null,null,{...s,tags:[$,t,e]}),n(i)&&(a=U.getFirebase(e,!1,s.namespace))){var o=O({name:t,type:"del",oldValue:r,related:[t]},i);a.fire(o,s.cancellable)}},ee=function(e,t,r={}){return Q("has",e,{name:t},r)},te=function(e,t,r,i={}){t=r.receiver||t;var o=r.keysOrPayload,l=r.value;if(!t||!c(t))throw new Error("Target must be of type object!");n(o)&&(i=l||{},l=null),t=M(t);var u=A.getFirebase(t,!1,i.namespace),f=U.getFirebase(t,!1,i.namespace);const h=(n,a,o,l)=>{var p,h="set";e&&(h="defineProperty",a=(p=a||{}).value);var g,b=!1;ee(t,n,i)&&(b=!0,g=G(t,n,r.receiver,i));var d={name:n,type:h,value:a,receiver:r.receiver,related:o,detail:l,isUpdate:b,oldValue:g},v=function(e){if(arguments.length&&(p?p=e:a=e),p){if(s(t,"accessorizedProps",!1).has(n)&&!s(t,"accessorizedProps").get(n).restore())return!1;Object.defineProperty(t,n,p)}else if(s(t,"accessorizedProps",!1).has(n))return s(t,"accessorizedProps").get(n).set(a);return t[n]=a,!0};if(u){var m=p?{type:"defineProperty",name:n,descriptor:p,receiver:r.receiver,related:o,detail:l,isUpdate:b,oldValue:g}:{type:"set",name:n,value:a,receiver:r.receiver,related:o,detail:l,isUpdate:b,oldValue:g};d.success=u.fire(m,v)}else d.success=v();return d.success&&d.value!==d.oldValue&&(c(d.oldValue)&&Z(t,n,d.oldValue,null,i),c(d.value)&&(L(t,n,d.value,null,i),f&&(f.subBuild||f.build&&X(d.value))&&J(d.value,f.subBuild,f.build,i.namespace))),d};var b,d=[];a(o)||(g(o)||p(o))&&(b=E(o))?d=b.map(e=>h(e,l,b,i.detail)):n(o)&&(b=Object.keys(o))&&(d=b.map(e=>h(e,o[e],b,i.detail)));var v,m=d.filter(e=>!1!==e.success);return f?(v=f.fire(m,i.cancellable)).successCount=m.length:i.eventTypeReturn&&(v=new q(t)),i.eventTypeReturn?v:m.length>0},re=function(e,t,r=null,n={}){return te(!0,e,{keysOrPayload:t,value:r},n)},ne=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=M(e);var n,i,a=E(t),o=a.map(t=>{var n;ee(e,t,r)&&(n=G(e,t,null,r));var i,o={name:t,type:"deleteProperty",related:a,detail:r.detail,oldValue:n},l=function(r){return arguments.length?r:!(s(e,"accessorizedProps",!1).has(t)&&!s(e,"accessorizedProps").get(t).restore())&&(delete e[t],!0)};return(i=A.getFirebase(e,!1,r.namespace))?o.success=i.fire({type:"deleteProperty",name:t,oldValue:n,related:a},l):o.success=l(),o.success&&c(o.oldValue)&&Z(e,t,o.oldValue,null,r),o}).filter(e=>!1!==e.success);return(n=U.getFirebase(e,!1,r.namespace))?(i=n.fire(o,r.cancellable)).successCount=o.length:r.eventTypeReturn&&(i=new q(e)),r.eventTypeReturn?i:o.length>0},ie=function(e,t,r={}){return Q("getOwnPropertyDescriptor",e,{name:t},r)},se=function(e,t={}){return Q("getPrototypeOf",e,{},t)},ae=function(e,t={}){return Q("isExtensible",e,{},t)},oe=function(e,t={}){return Q("ownKeys",e,{},t)},le=function(e,t={}){return Q("preventExtensions",e,{},t)},ue=function(e,t,r=null,n=null,i={}){return te(!1,e,arguments.length>3?{keysOrPayload:t,value:r,receiver:n}:{keysOrPayload:t,value:r},i)},ce=function(e,t,r={}){return Q("setPrototypeOf",e,{prototype:t},r)},fe={apply:N,construct:C,defineProperty:re,deleteProperty:ne,get:G,getOwnPropertyDescriptor:ie,getPrototypeOf:se,has:ee,isExtensible:ae,ownKeys:oe,preventExtensions:le,set:ue,setPrototypeOf:ce,accessorize:function(e,t=[],r={}){r=n(t)?t:r;var i=(1===arguments.length?Object.keys(e):E(t)).map(t=>{if(s(e,"accessorizedProps").has(t)&&s(e,"accessorizedProps").get(t).touch(!0))return!1;const n=()=>{for(var r,n=e;!r&&(n=Object.getPrototypeOf(n));)r=Object.getOwnPropertyDescriptor(n,t);return r};var i,a,o=Object.getOwnPropertyDescriptor(e,t);o||(i={writable:!0,enumerable:!(t in e),configurable:!1!==r.configurable});var l={...o||i};"value"in l&&delete l.value,"writable"in l&&delete l.writable,l.get=()=>{if(u.ongoingGets.length)return u.get();u.ongoingGets.push(1);var n=G(e,t,null,r);return u.ongoingGets.pop(),n},l.set=n=>{if(u.ongoingSets.length)return u.set(n);u.ongoingSets.push(1);var i=ue(e,t,n,null,r);return u.ongoingSets.pop(),i};var u={ongoingGets:[],ongoingSets:[],get:function(){var t=o;return t||(t=a?i:n()||i),t.get?t.get.call(e):t.value},set:function(t){var r=o;return r||(a?r=i:(r=n())?"value"in r&&(r=i,a=!0):(r=i,a=!0)),r.set||r.get?!!r.set&&r.set.call(e,t):(r.value=t,!0)},restore:function(){try{return this.intact()&&(o||a?Object.defineProperty(e,t,o||i):delete e[t],s(e,"accessorizedProps").delete(t)),!0}catch(e){}return!1},intact:function(){return(Object.getOwnPropertyDescriptor(e,t)||{}).get===l.get},touch:function(e=!1){return this.intact()||!!e&&!this.restore()}};try{return Object.defineProperty(e,t,l),s(e,"accessorizedProps").set(t,u),!0}catch(e){}return!1});return a(t)?i:i[0]},unaccessorize:function(e,t=[],r={}){r=n(t)?t:r;var i=(1===arguments.length?Object.keys(e):E(t)).map(t=>!s(e,"accessorizedProps",!1).has(t)||s(e,"accessorizedProps").get(t).restore());return a(t)?i:i[0]},proxy:function(e,t={}){if(!c(e))throw new Error('Object must be of type target; "'+i(e)+'" given!');var r=new Proxy(e,{apply:(e,r,n)=>N(e,r,n,t),construct:(e,r,n=null)=>C(e,r,n,t),defineProperty:(e,r,n)=>re(e,r,n,t),deleteProperty:(e,r)=>ne(e,r,t),get:(e,n,i=null)=>{var s=G(e,n,i,t);return!1!==t.proxyAutoBinding&&f(s)&&!function(e){return o(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}(s)?s.bind(r):s},getOwnPropertyDescriptor:(e,r)=>ie(e,r,t),getPrototypeOf:e=>se(e,t),has:(e,r)=>ee(e,r,t),isExtensible:e=>ae(e,t),ownKeys:e=>oe(e,t),preventExtensions:e=>le(e,t),set:(e,r,n,i=null)=>ue(e,r,n,i,t),setPrototypeOf:(e,r)=>ce(e,r,t)});return s(r).set(r,e),r},unproxy:M,observe:K,unobserve:Y,intercept:function(e,t,r={}){if(e=M(e),!c(e))throw new Error('Object must be of type target; "'+i(handler)+'" given!');var s={},a=!0;n(t)||(f(t)?t={[null]:t}:f(r)&&(t={[t]:r},r=arguments.length>3?arguments[3]:{}),a=!1);var o=A.getFirebase(e,!0,r.namespace);return Object.keys(t).forEach(e=>{if(!f(t[e]))throw new Error("Callback"+(null===e?"":" for "+e)+' must be a function; "'+i(t[e])+'" given!');var n,l={filter:e,handler:t[e],params:r};if(l.params.unique&&(n=o.match(l)).length){if("replace"!==l.params.unique)return n[0];o.remove(n[0])}a?s[e]=o.add(l):s=o.add(l)}),s},unintercept:function(e,t=null,r={}){if(!(e=M(e))||!c(e))throw new Error('Object must be of type target; "'+i(e)+'" given!');var n=A.getFirebase(e,!1,r.namespace);_isObject(t)||(f(t)?t={[null]:t}:f(r)&&(t={[t]:r},r=arguments.length>3?arguments[3]:{}),isOriginallyObj=!1),(n=A.getFirebase(e,!1,r.namespace))&&Object.keys(t).forEach(e=>{if(!f(t[e]))throw new Error("Callback"+(null===e?"":" for "+e)+' must be a function; "'+i(t[e])+'" given!');var s={filter:e,originalHandler:t[e],params:r};return n.removeMatches(s)})},closure:function(e,...t){var r=t.map(e=>{if(e=M(e),!c(e))throw new Error("Target must be of type object!");return{target:e,subjectCopy:a(e)?e.slice(0):I(e)}}),n=e(...t);const i=()=>{r.map(e=>{var t,r,n=Object.keys(e.subjectCopy),i=Object.keys(e.target),s=[],a=(t=n.concat(i),t.filter((e,t,r)=>r.indexOf(e)===t)).map(t=>{if(e.subjectCopy[t]!==e.target[t]){s.push(t);var r={name:t,related:s,buffered:!0};return i.includes(t)?(r.type="set",r.value=e.target[t],n.includes(t)&&(r.isUpdate=!0)):r.type="del",n.includes(t)&&(r.oldValue=e.subjectCopy[t]),c(e.subjectCopy[t])&&Z(e.target,t,e.subjectCopy[t]),c(e.target[t])&&L(e.target,t,e.target[t]),r}}).filter(e=>e);if(a.length&&(r=U.getFirebase(e.target,!1)))return r.fire(a)})};return n instanceof Promise?n.then(i):i(),n},build:J,link:L,unlink:Z,Observers:U,Interceptors:A};window.WebQit||(window.WebQit={}),window.WebQit.Observer=fe}]);
1
+ !function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t);var n=function(e){return!Array.isArray(e)&&"object"==typeof e&&e},i=function(e){return typeof e};function s(e,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var r,n,i=globalThis.WebQitInternalsRegistry.get(e);if(!i){if(i=new Map,!1===t[0])return i;globalThis.WebQitInternalsRegistry.set(e,i)}for(;r=t.shift();)if((n=i)&&!(i=i.get(r))){if(i=new Map,!1===t[0])return i;n.set(r,i)}return i}var a=function(e){return Array.isArray(e)},o=function(e){return"function"==typeof e},l=function(e){return null===e||""===e},u=function(e){return arguments.length&&(void 0===e||void 0===e)},c=function(e){return Array.isArray(e)||"object"==typeof e&&e||o(e)},f=function(e){return o(e)||e&&"[object function]"==={}.toString.call(e)},p=function(e){return e instanceof Number||"number"==typeof e},h=function(e){return p(e)||!0!==e&&!1!==e&&null!==e&&""!==e&&!isNaN(1*e)},g=function(e){return e instanceof String||"string"==typeof e&&null!==e},b=function(e,t=1){var r=0;e.forEach(e=>{r++});var n=e.slice(e.length-r,t);return arguments.length>1?n:n[0]},d=function(e,t=1){return arguments.length>1?b(e.slice().reverse(),t).reverse():b(e.slice().reverse())},v=function(e,...t){return t.forEach(t=>{e.indexOf(t)<0&&e.push(t)}),e},m=function(e,t){var r=[];return function(e,t){t=(t=t||Object.prototype)&&!a(t)?[t]:t;var r=[];for(e=e;e&&(!t||t.indexOf(e)<0)&&"default"!==e.name;)r.push(e),e=e?Object.getPrototypeOf(e):null;return r}(e,t).forEach(e=>{v(r,...Object.getOwnPropertyNames(e))}),r};function y(e,t,r=!1,i=!1,s=!1){var o=0,l=e.shift();if((h(l)||!0===l||!1===l)&&(o=l,l=e.shift()),!e.length)throw new Error("_merge() requires two or more array/objects.");return e.forEach((e,u)=>{(c(e)||f(e))&&(r?m(e):Object.getOwnPropertyNames(e)).forEach(c=>{if(t(c,l,e,u)){var f=l[c],p=e[c];if((a(f)&&a(p)||n(f)&&n(p))&&(!0===o||o>0))l[c]=a(f)&&a(p)?[]:{},y([h(o)?o-1:o,l[c],f,p],t,r,i,s);else if(a(l)&&a(e))i?l[c]=p:l.push(p);else try{s?Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(e,c)):l[c]=e[c]}catch(e){}}})}),l}var w=function(e,t){var r=void 0;return c(e)&&Object.keys(e).forEach((n,i)=>{!1!==r&&(r=t(h(n)?parseFloat(n):n,e[n],i))}),r};new Map;var O=function(...e){return y(e,(e,t,r)=>!0,!1,!1,!1)};function j(e,t,r=null,n=!1){return t.length>e.length?-1:("number"==typeof r?n?e.slice(0,r+1+(r<0?e.length:0)):e.slice(r):e).reduce((e,r,i)=>{var[s,a,o]=e;if(!n&&s>-1)return[s,a,o];var l=o+1,u=r===t[l]?0===l?[i,0]:[a,l]:[-1,-1];return u[1]===t.length-1&&(u[1]=-1,u[0]>-1)?[u[0]].concat(u):[s].concat(u)},[-1,-1,-1])[0]+(n||"number"!=typeof r?0:r>-1?r:e.length-r)}function P(e,t,r=null,n=!1){var i=j(e,t,r,n);return-1===i?[]:e.slice(i+t.length)}var E=function(e,t=!0){return a(e)?e:!t&&n(e)?[e]:!1!==e&&0!==e&&function(e){return l(e)||u(e)||!1===e||0===e||c(e)&&!Object.keys(e).length}(e)?[]:function(e){return!g(e)&&!u(e.length)}(e)?Array.prototype.slice.call(e):n(e)?Object.values(e):[e]};function _(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?e.join(".")===t.join("."):e.length===t.length&&e.reduce((e,r,n)=>e&&r===t[n],!0)}var F=function(e,t,r=null){return a(t)?e.filter(e=>r?t.filter(t=>r(e,t)).length:-1!==t.indexOf(e)):[]};function S(e,t,r=null){return r||!1!==r&&e.dotSafe&&t.dotSafe?(e.join(".")+".").startsWith(t.join(".")+"."):t.reduce((t,r,n)=>t&&r===e[n],!0)}function x(e){return(D(e)?e:E(e).length?[e]:[]).reduce((e,t)=>e.concat([E(t)]),[]).map(e=>T.resolve(e))}class T extends Array{static resolve(e){return e.every(e=>!(e+"").includes("."))?(new T).concat(e):e}get dotSafe(){return!0}}function D(e){return E(e).reduce((e,t)=>e||a(t),!1)}function W(e){return e.filter(e=>e||0===e).length!==e.length}class k{constructor(e){this.target=e,this.fireables=[],this.currentlyFiring=[]}add(e){return this.fireables.push(e),e}remove(e){this.fireables=this.fireables.filter(t=>t!==e)}removeMatches(e){this.match(e).forEach(e=>{this.fireables=this.fireables.filter(t=>t!==e)})}match(e){return this.fireables.filter(t=>{var r=x(t.filter),n=E((t.params||{}).tags),i=x(e.filter),s=E((e.params||{}).tags);return(!e.originalHandler||t.handler===e.originalHandler)&&(!i.length||_(i,r))&&(!s.length||s.length===n.length&&F(n,s).length===s.length)})}static _getFirebase(e,t,r=!0,n=this.__namespace){if(!c(t))throw new Error('Subject must be of type object; "'+i(t)+'" given!');var a=this;return n&&globalThis.WebQitObserverNamespaceRegistry.has(e+"-"+n)&&(a=globalThis.WebQitObserverNamespaceRegistry.get(e+"-"+n),e+="-"+n),!s(t,"firebases").has(e)&&r&&s(t,"firebases").set(e,new a(t)),s(t,"firebases").get(e)}static _namespace(e,t,r=null){if(e+="-"+t,2===arguments.length)return globalThis.WebQitObserverNamespaceRegistry.get(e);if(!(r.prototype instanceof this))throw new Error(`The implementation of the namespace ${this.name}.${t} must be a subclass of ${this.name}.`);globalThis.WebQitObserverNamespaceRegistry.set(e,r),r.__namespace=t}}globalThis.WebQitObserverNamespaceRegistry||(globalThis.WebQitObserverNamespaceRegistry=new Map);class R{constructor(e,t){this.target=e,this.handler=t.handler,this.filter=t.filter,this.params=t.params}disconnect(){this.disconnected=!0}}class z extends R{fire(e,t,r){return this.disconnected||this.filter&&!F(E(this.filter),[e.type]).length?t(...Array.prototype.slice.call(arguments,2)):this.handler(e,r,t)}}var I=function(e,t=[],r=!0){var n=0;return h(arguments[0])&&c(arguments[1])&&(n=arguments[0],e=arguments[1],t=arguments[2]||[]),y([n,{},e],(e,r,n)=>f(t)?t(e):!a(t)||!t.length||t.indexOf(e)>-1,!1,!1,r)};class V{constructor(e,t){if(this.target=e,!t.type)throw new Error("Action type must be given in definition!");w(t,(e,t)=>{Object.defineProperty(this,e,{value:t,enumerable:!0})}),Object.seal(this)}}class A extends k{add(e){return super.add(new z(this.target,e))}fire(e,t=null){if(e instanceof V||(e=new V(this.target,e)),this.currentlyFiring.filter(t=>t.type===e.type&&t.name===e.name).length)return t?t():void 0;this.currentlyFiring.push(e);const r=(n,...i)=>{var s=this.fireables[n];return s?s.fire(e,(...e)=>r(n+1,...e),...i):t?t(...i):i[0]};var n=r(0);return this.currentlyFiring.pop(),n}static getFirebase(e,t=!0,r=null){return super._getFirebase("interceptor",...arguments)}static namespace(e,t=null){return super._namespace("interceptor",...arguments)}}var M=function(e){return s(e,!1).get(e)||e},Q=function(e,t,r={},n={}){if(!t||!c(t))throw new Error("Target must be of type object!");t=M(t);var i,s=function(n){return arguments.length?n:Reflect[e](t,...Object.values(r))};return(i=A.getFirebase(t,!1,n.namespace))?i.fire({type:e,...r},s):s()},N=function(e,t,r,n={}){return Q("apply",e,{thisArgument:t,argumentsList:r},n)},C=function(e,t,r=null,n={}){return Q("construct",e,arguments.length>2?{argumentsList:t,newTarget:r}:{argumentsList:t},n)};class q{constructor(e,t=!1){this._={},this._.target=e,this._.cancellable=t,this._.propagationStopped=!1,this._.defaultPrevented=!1,this._.promisesInstance=null,this._.promises=[]}get target(){return this._.target}get cancellable(){return this._.cancellable}stopPropagation(){this._.propagationStopped=!0}get propagationStopped(){return this._.propagationStopped}preventDefault(){this._.defaultPrevented=!0}get defaultPrevented(){return this._.defaultPrevented}waitUntil(e){e instanceof Promise&&(this._.promises.push(e),this._.promisesInstance=null)}get promises(){return!this._.promisesInstance&&this._.promises.length&&(this._.promisesInstance=Promise.all(this._.promises)),this._.promisesInstance}respondWith(e){var t,r=n(e)&&!u(e.propagationStopped)&&!u(e.defaultPrevented);!1===e||r&&e.propagationStopped?this.stopPropagation():!1===e||r&&e.defaultPrevented?this.preventDefault():(e instanceof Promise&&(t=e)||r&&(t=e.promises))&&this.waitUntil(t)}}class B extends R{constructor(e,t){if(super(e,t),this.filters2D=x(this.filter),this.filtersIsOriginally2D=D(this.filter),this.filtersIsDynamic=this.filters2D.filter(e=>W(E(e))).length>0,this.filtersIsDynamic&&this.filters2D.length>1)throw new Error('Only one "Dynamic Filter" must be observed at a time! "'+this.filters2D.map(e=>"["+e.join(", ")+"]").join(", ")+'" have been bound together.')}fire(e){if(this.disconnected||this.params.type&&(t=e=>this.params.type===e.type,!e.reduce((e,r,n)=>e||t(r,n),!1)))return;var t;const r=e=>!["set","def"].includes(e.type)||!this.params.diff||(f(this.params.diff)?this.params.diff(e.value,e.oldValue):e.value!==e.oldValue);var i=new q(this.target);if(this.filters2D.length){var s=e.filter(e=>this.filters2D.filter((t,n)=>{var i=t.slice();return this.filtersIsDynamic&&e.path.forEach((e,t)=>{i[t]=i[t]||0===i[t]?i[t]:e}),(!this.filtersIsDynamic||!W(i))&&r(e)&&(!this.params.subtree&&_(i,e.path)||this.params.suptree&&S(i,e.path)&&(!h(this.params.suptree)||P(i,e.path).length<=this.params.suptree)||this.params.subtree&&e.path.length>=i.length&&S(e.path,i)&&(!h(this.params.subtree)||P(e.path,i).length<=this.params.subtree))}).length);if(s.length)if(this.filtersIsOriginally2D||this.params.subtree){var a=s;n(this.filter)&&(a={...this.filter},s.forEach((e,t)=>{a[e.name]=e})),i.respondWith(this.handler(a,i))}else s.forEach((e,t)=>{i.respondWith(this.handler(e,i))})}else(this.params.subtree||e.filter(e=>_(e.path,[e.name])).length===e.length)&&e.filter(e=>r(e)).length&&i.respondWith(this.handler(e,i));return i}}class H{constructor(e,t){if(this.target=e,t.originalSubject||(this.originalSubject=e),!("type"in t))throw new Error("Mutation type must be given in definition!");if(!("name"in t))throw new Error("Property name must be given in definition!");w(t,(e,t)=>{"path"===e&&(t=T.resolve(t)),Object.defineProperty(this,e,{value:t,enumerable:!0})}),this.path||Object.defineProperty(this,"path",{value:T.resolve([t.name]),enumerable:!0}),Object.seal(this)}}class U extends k{constructor(e){super(e),this.buffers=[]}add(e){return super.add(new B(this.target,e))}fire(e,t){var r=new q(this.target,t);return e=E(e,!1).map(e=>e instanceof H?e:new H(this.target,e)),this.buffers.length?(d(this.buffers)(e),r):(this.currentlyFiring.filter(t=>e.filter(e=>t.type===e.type&&t.name===e.name).length).length,this.fireables.forEach(n=>{if(r.propagationStopped&&t)return r;r.respondWith(n.fire(e))}),r)}static getFirebase(e,t=!0,r=null){return super._getFirebase("observer",...arguments)}static namespace(e,t=null){return super._namespace("observer",...arguments)}}var G=function(e,t,r=null,n={}){if(!(e=r||e)||!c(e))throw new Error("Target must be of type object!");e=M(e);var i=E(t),o=i.map(t=>{var a,o=function(n){return arguments.length?n:s(e,"accessorizedProps").has(t)&&s(e,"accessorizedProps").get(t).touch(!0)?s(e,"accessorizedProps").get(t).get():r?Reflect.get(e,t,r):Reflect.get(e,t)};return(a=A.getFirebase(e,!0,n.namespace))?a.fire({type:"get",name:t,related:i,receiver:r},o):o()});return a(t)?o:o[0]},K=function(e,t,r=null,n={}){if(!(e=M(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+i(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),!f(r))throw new Error('Handler must be a function; "'+i(r)+'" given!');var s,a=U.getFirebase(e,!0,n.namespace),o={filter:t,handler:r,params:n};if((o.filter||"*"===o.params.subtree||o.params.subtree&&X(e))&&J(e,o.filter,o.params.subtree,n.namespace),o.params.unique&&(s=a.match({filter:t,params:n})).length){if("replace"!==o.params.unique)return s[0];a.remove(s[0])}return a.add(o)},L=function(e,t,r,i=null,s={}){var a;if(e!==r&&(K(r,(r,n)=>{if(a=U.getFirebase(e,!1,s.namespace)){var i=r.map(r=>{var n=r;do{if(n.target===e)return}while(n=n.src);var i={};return w(r,(e,t)=>{"target"!==e&&"name"!==e&&"path"!==e&&"src"!==e&&(i[e]=t)}),i.name=t,i.path=[t].concat(r.path),i.originalSubject=r.originalSubject,i.src=r,new H(e,i)}).filter(e=>e);if(i.length)return a.fire(i,n.cancellable)}},{subtree:!0,...s,unique:!0,tags:[$,t,e]}),n(i)&&(a=U.getFirebase(e,!1,s.namespace)))){var o=O({name:t,type:"set",value:r,related:[t]},i);let e=a.fire(o,s.cancellable);if(s.eventTypeReturn)return e}};const $={};function J(e,t=null,r=!1,n=null){if(!e||!c(e))throw new Error("Target must be of type object!");var i=U.getFirebase(e,!0,n);if(i&&!i.build){i.build=r;var s=x(t),a=!s.length||s.filter(e=>!e[0]&&0!==e[0]).length?Object.keys(e):s.map(e=>e[0]),o=s.length?s.map(e=>e.slice(1)).filter(e=>e.length):null;i.subBuild=o&&o.length?o:null,a.forEach(t=>{var s=G(e,t,null,{namespace:n});try{c(s)&&(L(e,t,s,null,params),(i.subBuild&&X(s)||(_isFunction(r)?r(s):r&&X(s)))&&J(s,i.subBuild,r,n))}catch(e){}})}}const X=e=>(e instanceof Object||e instanceof Array||e instanceof Function)&&("undefined"==typeof window||e!==window);var Y=function(e,t,r=null,n={}){if(!(e=M(e))||!c(e))throw new Error('Observable subjects must be of type object; "'+i(e)+'" given!');if(f(t)&&(n=arguments.length>2?r:{},r=t,t=null),r&&!f(r))throw new Error('Handler must be a function; "'+i(r)+'" given!');var s;if(s=U.getFirebase(e,!1,n.namespace))return s.removeMatches({filter:t,originalHandler:r,params:n})},Z=function(e,t,r,i=null,s={}){var a;if(Y(r,null,null,{...s,tags:[$,t,e]}),n(i)&&(a=U.getFirebase(e,!1,s.namespace))){var o=O({name:t,type:"del",oldValue:r,related:[t]},i);a.fire(o,s.cancellable)}},ee=function(e,t,r={}){return Q("has",e,{name:t},r)},te=function(e,t,r,i={}){t=r.receiver||t;var o=r.keysOrPayload,l=r.value;if(!t||!c(t))throw new Error("Target must be of type object!");n(o)&&(i=l||{},l=null),t=M(t);var u=A.getFirebase(t,!1,i.namespace),f=U.getFirebase(t,!1,i.namespace);const h=(n,a,o,l)=>{var p,h="set";e&&(h="defineProperty",a=(p=a||{}).value);var g,b=!1;ee(t,n,i)&&(b=!0,g=G(t,n,r.receiver,i));var d={name:n,type:h,value:a,receiver:r.receiver,related:o,detail:l,isUpdate:b,oldValue:g},v=function(e){if(arguments.length&&(p?p=e:a=e),p){if(s(t,"accessorizedProps",!1).has(n)&&!s(t,"accessorizedProps").get(n).restore())return!1;Object.defineProperty(t,n,p)}else if(s(t,"accessorizedProps",!1).has(n))return s(t,"accessorizedProps").get(n).set(a);return t[n]=a,!0};if(u){var m=p?{type:"defineProperty",name:n,descriptor:p,receiver:r.receiver,related:o,detail:l,isUpdate:b,oldValue:g}:{type:"set",name:n,value:a,receiver:r.receiver,related:o,detail:l,isUpdate:b,oldValue:g};d.success=u.fire(m,v)}else d.success=v();return d.success&&d.value!==d.oldValue&&(c(d.oldValue)&&Z(t,n,d.oldValue,null,i),c(d.value)&&(L(t,n,d.value,null,i),f&&(f.subBuild||f.build&&X(d.value))&&J(d.value,f.subBuild,f.build,i.namespace))),d};var b,d=[];a(o)||(g(o)||p(o))&&(b=E(o))?d=b.map(e=>h(e,l,b,i.detail)):n(o)&&(b=Object.keys(o))&&(d=b.map(e=>h(e,o[e],b,i.detail)));var v,m=d.filter(e=>!1!==e.success);return f?(v=f.fire(m,i.cancellable)).successCount=m.length:i.eventTypeReturn&&(v=new q(t)),i.eventTypeReturn?v:m.length>0},re=function(e,t,r=null,n={}){return te(!0,e,{keysOrPayload:t,value:r},n)},ne=function(e,t,r={}){if(!e||!c(e))throw new Error("Target must be of type object!");e=M(e);var n,i,a=E(t),o=a.map(t=>{var n;ee(e,t,r)&&(n=G(e,t,null,r));var i,o={name:t,type:"deleteProperty",related:a,detail:r.detail,oldValue:n},l=function(r){return arguments.length?r:!(s(e,"accessorizedProps",!1).has(t)&&!s(e,"accessorizedProps").get(t).restore())&&(delete e[t],!0)};return(i=A.getFirebase(e,!1,r.namespace))?o.success=i.fire({type:"deleteProperty",name:t,oldValue:n,related:a},l):o.success=l(),o.success&&c(o.oldValue)&&Z(e,t,o.oldValue,null,r),o}).filter(e=>!1!==e.success);return(n=U.getFirebase(e,!1,r.namespace))?(i=n.fire(o,r.cancellable)).successCount=o.length:r.eventTypeReturn&&(i=new q(e)),r.eventTypeReturn?i:o.length>0},ie=function(e,t,r={}){return Q("getOwnPropertyDescriptor",e,{name:t},r)},se=function(e,t={}){return Q("getPrototypeOf",e,{},t)},ae=function(e,t={}){return Q("isExtensible",e,{},t)},oe=function(e,t={}){return Q("ownKeys",e,{},t)},le=function(e,t={}){return Q("preventExtensions",e,{},t)},ue=function(e,t,r=null,n=null,i={}){return te(!1,e,arguments.length>3?{keysOrPayload:t,value:r,receiver:n}:{keysOrPayload:t,value:r},i)},ce=function(e,t,r={}){return Q("setPrototypeOf",e,{prototype:t},r)},fe={apply:N,construct:C,defineProperty:re,deleteProperty:ne,get:G,getOwnPropertyDescriptor:ie,getPrototypeOf:se,has:ee,isExtensible:ae,ownKeys:oe,preventExtensions:le,set:ue,setPrototypeOf:ce,accessorize:function(e,t=[],r={}){r=n(t)?t:r;var i=(1===arguments.length?Object.keys(e):E(t)).map(t=>{if(s(e,"accessorizedProps").has(t)&&s(e,"accessorizedProps").get(t).touch(!0))return!1;const n=()=>{for(var r,n=e;!r&&(n=Object.getPrototypeOf(n));)r=Object.getOwnPropertyDescriptor(n,t);return r};var i,a,o=Object.getOwnPropertyDescriptor(e,t);o||(i={writable:!0,enumerable:!(t in e),configurable:!1!==r.configurable});var l={...o||i};"value"in l&&delete l.value,"writable"in l&&delete l.writable,l.get=()=>{if(u.ongoingGets.length)return u.get();u.ongoingGets.push(1);var n=G(e,t,null,r);return u.ongoingGets.pop(),n},l.set=n=>{if(u.ongoingSets.length)return u.set(n);u.ongoingSets.push(1);var i=ue(e,t,n,null,r);return u.ongoingSets.pop(),i};var u={ongoingGets:[],ongoingSets:[],get:function(){var t=o;return t||(t=a?i:n()||i),t.get?t.get.call(e):t.value},set:function(t){var r=o;return r||(a?r=i:(r=n())?"value"in r&&(r=i,a=!0):(r=i,a=!0)),r.set||r.get?!!r.set&&r.set.call(e,t):(r.value=t,!0)},restore:function(){try{return this.intact()&&(o||a?Object.defineProperty(e,t,o||i):delete e[t],s(e,"accessorizedProps").delete(t)),!0}catch(e){}return!1},intact:function(){return(Object.getOwnPropertyDescriptor(e,t)||{}).get===l.get},touch:function(e=!1){return this.intact()||!!e&&!this.restore()}};try{return Object.defineProperty(e,t,l),s(e,"accessorizedProps").set(t,u),!0}catch(e){}return!1});return a(t)?i:i[0]},unaccessorize:function(e,t=[],r={}){r=n(t)?t:r;var i=(1===arguments.length?Object.keys(e):E(t)).map(t=>!s(e,"accessorizedProps",!1).has(t)||s(e,"accessorizedProps").get(t).restore());return a(t)?i:i[0]},proxy:function(e,t={}){if(!c(e))throw new Error('Object must be of type target; "'+i(e)+'" given!');var r=new Proxy(e,{apply:(e,r,n)=>N(e,r,n,t),construct:(e,r,n=null)=>C(e,r,n,t),defineProperty:(e,r,n)=>re(e,r,n,t),deleteProperty:(e,r)=>ne(e,r,t),get:(e,n,i=null)=>{var s=G(e,n,i,t);return!1!==t.proxyAutoBinding&&f(s)&&!function(e){return o(e)&&/^class\s?/.test(Function.prototype.toString.call(e))}(s)?s.bind(r):s},getOwnPropertyDescriptor:(e,r)=>ie(e,r,t),getPrototypeOf:e=>se(e,t),has:(e,r)=>ee(e,r,t),isExtensible:e=>ae(e,t),ownKeys:e=>oe(e,t),preventExtensions:e=>le(e,t),set:(e,r,n,i=null)=>ue(e,r,n,i,t),setPrototypeOf:(e,r)=>ce(e,r,t)});return s(r).set(r,e),r},unproxy:M,observe:K,unobserve:Y,intercept:function(e,t,r={}){if(e=M(e),!c(e))throw new Error('Object must be of type target; "'+i(handler)+'" given!');var s={},a=!0;n(t)||(f(t)?t={"":t}:f(r)&&(t={[t]:r},r=arguments.length>3?arguments[3]:{}),a=!1);var o=A.getFirebase(e,!0,r.namespace);return Object.keys(t).forEach(e=>{if(!f(t[e]))throw new Error("Callback"+(null===e?"":" for "+e)+' must be a function; "'+i(t[e])+'" given!');var n,l={filter:e,handler:t[e],params:r};if(l.params.unique&&(n=o.match(l)).length){if("replace"!==l.params.unique)return n[0];o.remove(n[0])}a?s[e]=o.add(l):s=o.add(l)}),s},unintercept:function(e,t=null,r={}){if(!(e=M(e))||!c(e))throw new Error('Object must be of type target; "'+i(e)+'" given!');var n=A.getFirebase(e,!1,r.namespace);_isObject(t)||(f(t)?t={[null]:t}:f(r)&&(t={[t]:r},r=arguments.length>3?arguments[3]:{}),isOriginallyObj=!1),(n=A.getFirebase(e,!1,r.namespace))&&Object.keys(t).forEach(e=>{if(!f(t[e]))throw new Error("Callback"+(null===e?"":" for "+e)+' must be a function; "'+i(t[e])+'" given!');var s={filter:e,originalHandler:t[e],params:r};return n.removeMatches(s)})},closure:function(e,...t){var r=t.map(e=>{if(e=M(e),!c(e))throw new Error("Target must be of type object!");return{target:e,subjectCopy:a(e)?e.slice(0):I(e)}}),n=e(...t);const i=()=>{r.map(e=>{var t,r,n=Object.keys(e.subjectCopy),i=Object.keys(e.target),s=[],a=(t=n.concat(i),t.filter((e,t,r)=>r.indexOf(e)===t)).map(t=>{if(e.subjectCopy[t]!==e.target[t]){s.push(t);var r={name:t,related:s,buffered:!0};return i.includes(t)?(r.type="set",r.value=e.target[t],n.includes(t)&&(r.isUpdate=!0)):r.type="del",n.includes(t)&&(r.oldValue=e.subjectCopy[t]),c(e.subjectCopy[t])&&Z(e.target,t,e.subjectCopy[t]),c(e.target[t])&&L(e.target,t,e.target[t]),r}}).filter(e=>e);if(a.length&&(r=U.getFirebase(e.target,!1)))return r.fire(a)})};return n instanceof Promise?n.then(i):i(),n},build:J,link:L,unlink:Z,Observers:U,Interceptors:A};window.WebQit||(window.WebQit={}),window.WebQit.Observer=fe}]);
2
2
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@webqit/util/js/isObject.js","webpack:///./node_modules/@webqit/util/js/getType.js","webpack:///./node_modules/@webqit/util/js/internals.js","webpack:///./node_modules/@webqit/util/js/isArray.js","webpack:///./node_modules/@webqit/util/js/isTypeFunction.js","webpack:///./node_modules/@webqit/util/js/isNull.js","webpack:///./node_modules/@webqit/util/js/isUndefined.js","webpack:///./node_modules/@webqit/util/js/isTypeObject.js","webpack:///./node_modules/@webqit/util/js/isFunction.js","webpack:///./node_modules/@webqit/util/js/isNumber.js","webpack:///./node_modules/@webqit/util/js/isNumeric.js","webpack:///./node_modules/@webqit/util/js/isString.js","webpack:///./node_modules/@webqit/util/arr/first.js","webpack:///./node_modules/@webqit/util/arr/last.js","webpack:///./node_modules/@webqit/util/arr/pushUnique.js","webpack:///./node_modules/@webqit/util/obj/getAllPropertyNames.js","webpack:///./node_modules/@webqit/util/obj/getPrototypeChain.js","webpack:///./node_modules/@webqit/util/obj/mergeCallback.js","webpack:///./node_modules/@webqit/util/obj/each.js","webpack:///./node_modules/@webqit/util/js/mixin.js","webpack:///./node_modules/@webqit/util/obj/merge.js","webpack:///./node_modules/@webqit/util/arr/indexOfSet.js","webpack:///./node_modules/@webqit/util/arr/after.js","webpack:///./node_modules/@webqit/util/arr/following.js","webpack:///./node_modules/@webqit/util/arr/from.js","webpack:///./node_modules/@webqit/util/js/isEmpty.js","webpack:///./node_modules/@webqit/util/js/isTypeArray.js","webpack:///./node_modules/@webqit/util/arr/equals.js","webpack:///./node_modules/@webqit/util/arr/flatten.js","webpack:///./node_modules/@webqit/util/arr/intersect.js","webpack:///./node_modules/@webqit/util/arr/startsWith.js","webpack:///./src/core/utils.js","webpack:///./src/core/Firebase.js","webpack:///./src/core/Fireable.js","webpack:///./src/core/Interceptor.js","webpack:///./node_modules/@webqit/util/obj/compareCallback.js","webpack:///./node_modules/@webqit/util/obj/copy.js","webpack:///./src/core/Action.js","webpack:///./src/core/Interceptors.js","webpack:///./src/actors/unproxy.js","webpack:///./src/actions/_exec.js","webpack:///./src/actions/apply.js","webpack:///./src/actions/construct.js","webpack:///./src/core/Event.js","webpack:///./src/core/Observer.js","webpack:///./node_modules/@webqit/util/arr/any.js","webpack:///./src/core/Mutation.js","webpack:///./src/core/Observers.js","webpack:///./src/actions/get.js","webpack:///./src/reactions/observe.js","webpack:///./src/connectors/link.js","webpack:///./src/connectors/build.js","webpack:///./src/reactions/unobserve.js","webpack:///./src/connectors/unlink.js","webpack:///./src/actions/has.js","webpack:///./src/actions/_setOrDefine.js","webpack:///./src/actions/defineProperty.js","webpack:///./src/actions/deleteProperty.js","webpack:///./src/actions/getOwnPropertyDescriptor.js","webpack:///./src/actions/getPrototypeOf.js","webpack:///./src/actions/isExtensible.js","webpack:///./src/actions/ownKeys.js","webpack:///./src/actions/preventExtensions.js","webpack:///./src/actions/set.js","webpack:///./src/actions/setPrototypeOf.js","webpack:///./src/index.js","webpack:///./src/actors/accessorize.js","webpack:///./src/actors/unaccessorize.js","webpack:///./src/actors/proxy.js","webpack:///./node_modules/@webqit/util/js/isClass.js","webpack:///./src/reactions/intercept.js","webpack:///./src/reactions/unintercept.js","webpack:///./src/reactions/closure.js","webpack:///./node_modules/@webqit/util/arr/unique.js","webpack:///./src/browser-entry.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Array","isArray","val","internals","obj","namespaces","globalThis","WebQitInternalsRegistry","Map","_ns","_itnls","itnls","set","shift","arguments","length","undefined","toString","Number","isNaN","String","count","arr","forEach","itm","firsts","slice","amount","reverse","items","indexOf","push","keysAll","until","prototypalChain","getPrototypeOf","getOwnPropertyNames","mergeCallback","objs","callback","deepProps","isReplace","withSymbols","depth","obj1","Error","obj2","valAtObj1","valAtObj2","getOwnPropertyDescriptor","e","returnValue","keys","k","parseFloat","indexOfSet","a","b","fromInex","last","reduce","cursors","index","cursorA","cursorB","_cursorB","_cursors","concat","subsetIndex","castObject","values","equals","dotSafe","join","prev","arr2","filter","val1","val2","startsWith","paths2D","paths","pathsIs2D","multiple","path","map","DotSafePath","resolve","every","v","includes","yes","pathsIsDynamic","pathArray","seg","target","this","fireables","currentlyFiring","fireable","_fireable","dfn","match","fireableFilter","fireableTags","params","tags","dfnFilter","dfnTags","originalHandler","handler","type","createIfNotExists","namespace","__namespace","ImplementationClass","WebQitObserverNamespaceRegistry","has","Fireable","disconnected","event","next","recieved","seal","super","add","action","defaultHandler","_args","interceptor","fire","args","pop","_getFirebase","_namespace","interceptors","_val","Reflect","payload","getFirebase","_exec","thisArgument","argumentsList","newTarget","cancellable","_","propagationStopped","defaultPrevented","promisesInstance","promises","promise","Promise","all","rspns","proms","isEvent","stopPropagation","preventDefault","waitUntil","filters2D","filtersIsOriginally2D","filtersIsDynamic","changes","delta","prevTest","diff","oldValue","evt","matches","observerPathArray","observerPathArray_Resolved","_seg","subtree","suptree","changesObject","respondWith","originalSubject","buffers","observer","receiver","_keys","defaultGet","_value","touch","related","existing","observers","isUserObject","build","unique","remove","observe","eventObject","_changes","src","field","linkTag","_event","eventTypeReturn","_paths2D","rootLevelKeysToObserve","subLevelKeysToObserve","subBuild","_isFunction","Function","window","removeMatches","unobserve","keysOrPayload","handleSet","detail","descriptor","define","isUpdate","defaultSet","_success","restore","success","unlink","events","successfulEvents","successCount","_setOrDefine","defaultDel","apply","construct","deleteProperty","isExtensible","ownKeys","preventExtensions","setPrototypeOf","accessorize","successFlags","getDescriptorDeep","proto","altOriginalOwnDescriptor","activeIsAltOriginalOwnDescriptor","originalOwnDescriptor","writable","configurable","reactiveOwnDescriptor","controlObject","ongoingGets","newValue","ongoingSets","operation","intact","delete","attemptRestore","unaccessorize","proxy","Proxy","propertyKey","attributes","proxyAutoBinding","test","unproxy","intercept","returnObj","isOriginallyObj","trap","unintercept","_isObject","closure","context","subjects","subjectCopy","result","fireDiffs","cntxt","initialKeys","currentKeys","self","buffered","then","link","Observers","Interceptors","WebQit","Observer"],"mappings":"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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\n/**\n * Tells if val is pure object.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\n};\n","\n/**\n * Returns the val's type.\n *\n * @param string \tval\n *\n * @return string\n */\nexport default function(val) {\n\treturn typeof val;\n};\n","\n/**\n * Creates and/or returns an \"internals\" object for the given object.\n * \n * @param Any obj\n * @param String namespace\n * \n * @return Object\n */\nexport default function internals(obj, ...namespaces) {\n if (!globalThis.WebQitInternalsRegistry) {\n globalThis.WebQitInternalsRegistry = new Map;\n }\n var itnls = globalThis.WebQitInternalsRegistry.get(obj);\n if (!itnls) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n globalThis.WebQitInternalsRegistry.set(obj, itnls);\n }\n var _ns, _itnls;\n while ((_ns = namespaces.shift())) {\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n _itnls.set(_ns, itnls);\n }\n }\n return itnls;\n}","\n/**\n * Tells if val is of type \"array\".\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val);\n};\n","\n/**\n * Tells if val is of type \"function\".\n * This holds true for both regular functions and classes.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn typeof val === 'function';\n};\n","\n/**\n * Tells if val is undefined or is null.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === null || val === '';\n};\n","\n/**\n * Tells if val is undefined or is of type \"undefined\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\n};\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"object\".\n * This holds true for anything object, including built-ins.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\n};\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"function\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\n};\n","\n/**\n * Tells if val is of type \"number\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof Number || (typeof val === 'number');\n};\n","\n/**\n * @imports\n */\nimport _isNumber from './isNumber.js';\n/**\n * Tells if val is of type \"string\" or a numeric string.\n * This holds true for both numbers and numeric strings.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\n};\n","\n/**\n * Tells if val is of type \"string\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\n};\n","\n/**\n * Returns THE FIRST ENTRY OR A NUMBER OF ENTRIES counting forward from the begining.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\tvar count = 0;\n\tarr.forEach(itm => {\n\t\tcount ++;\n\t});\n\tvar firsts = arr.slice(arr.length - count, amount);\n\treturn arguments.length > 1 ? firsts : firsts[0];\n};\n","\n/**\n * @imports\n */\nimport _first from './first.js';\n\n/**\n * Returns THE LAST ENTRY OR A NUMBER OF ENTRIES counting forward to the end.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\treturn arguments.length > 1\n\t\t? _first(arr.slice().reverse(), amount).reverse()\n\t\t: _first(arr.slice().reverse());\n};\n","\n/**\n * Adds an item if not already exist.\n *\n * @param array \tarr\n * @param array\t \t...itms\n *\n * @return array\n */\nexport default function(arr, ...items) {\n\titems.forEach(itm => {\n\t\tif (arr.indexOf(itm) < 0) {\n\t\t\tarr.push(itm);\n\t\t}\n\t});\n\treturn arr;\n};\n","\n/**\n * @imports\n */\nimport _pushUnique from '../arr/pushUnique.js';\nimport _getPrototypeChain from './getPrototypeChain.js';\n\n/**\n * Eagerly retrieves object members all down the prototype chain.\n *\n * @param object\t \tobj\n * @param object\t \tuntil\n *\n * @return array\n */\nexport default function(obj, until) {\n\tvar keysAll = [];\n\t_getPrototypeChain(obj, until).forEach(obj => {\n\t\t_pushUnique(keysAll, ...Object.getOwnPropertyNames(obj));\n\t});\n\treturn keysAll;\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the prototype chain.\n *\n * @param object \t\tobj\n * @param object\t \tuntil\n *\n * @return bool\n */\nexport default function(obj, until) {\n\tuntil = until || Object.prototype;\n\tuntil = until && !_isArray(until) ? [until] : until;\n\t// We get the chain of inheritance\n\tvar prototypalChain = [];\n\tvar obj = obj;\n\twhile((obj && (!until || until.indexOf(obj) < 0) && obj.name !== 'default')) {\n\t\tprototypalChain.push(obj);\n\t\tobj = obj ? Object.getPrototypeOf(obj) : null;\n\t}\n\treturn prototypalChain;\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _getAllPropertyNames from './getAllPropertyNames.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function mergeCallback(objs, callback, deepProps = false, isReplace = false, withSymbols = false) {\n\tvar depth = 0;\n\tvar obj1 = objs.shift();\n\tif (_isNumeric(obj1) || obj1 === true || obj1 === false) {\n\t\tdepth = obj1;\n\t\tobj1 = objs.shift();\n\t}\n\tif (!objs.length) {\n\t\tthrow new Error('_merge() requires two or more array/objects.');\n\t}\n\tobjs.forEach((obj2, i) => {\n\t\tif (!_isTypeObject(obj2) && !_isFunction(obj2)) {\n\t\t\treturn;\n\t\t}\n\t\t(deepProps ? _getAllPropertyNames(obj2) : Object.getOwnPropertyNames(obj2)).forEach(key => {\n\t\t\tif (!callback(key, obj1, obj2, i)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar valAtObj1 = obj1[key];\n\t\t\tvar valAtObj2 = obj2[key];\n\t\t\tif (((_isArray(valAtObj1) && _isArray(valAtObj2)) || (_isObject(valAtObj1) && _isObject(valAtObj2))) \n\t\t\t&& (depth === true || depth > 0)) {\n\t\t\t\t// RECURSE...\n\t\t\t\tobj1[key] = _isArray(valAtObj1) && _isArray(valAtObj2) ? [] : {};\n\t\t\t\tmergeCallback([_isNumeric(depth) ? depth - 1 : depth, obj1[key], valAtObj1, valAtObj2], callback, deepProps, isReplace, withSymbols);\n\t\t\t} else {\n\t\t\t\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\t\t\t\tif (isReplace) {\n\t\t\t\t\t\tobj1[key] = valAtObj2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj1.push(valAtObj2);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// In case we're setting a read-only property\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (withSymbols) {\n\t\t\t\t\t\t\tObject.defineProperty(obj1, key, Object.getOwnPropertyDescriptor(obj2, key));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj1[key] = obj2[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\treturn obj1;\n};\n","\n/**\n * @imports\n */\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Loops thru obj flatly with a callback function.\n * Stops when callback returns a non-undefined value.\n *\n * @param array|object \t\t\tobj \t\t\tThe array or object to iterate.\n * @param function \t\t\t\tcallback \t\tThe callback function.\n *\n * @return mixed|null\t\t\tAny non-null return from callback\n */\nexport default function(obj, callback) {\n\tvar returnValue = undefined;\n\tif (_isTypeObject(obj)) {\n\t\tObject.keys(obj).forEach((k, i) => {\n\t\t\tif (returnValue !== false) {\n\t\t\t\treturnValue = callback(_isNumeric(k) ? parseFloat(k) : k, obj[k], i);\n\t\t\t}\n\t\t});\n\t}\n\treturn returnValue;\n};\n","\n/**\n * @imports\n */\nimport _isArray from './isArray.js';\nimport _isFunction from './isFunction.js';\nimport _arrLast from '../arr/last.js';\nimport _mergeCallback from '../obj/mergeCallback.js';\nimport _each from '../obj/each.js';\n\n/**\n * A multi-inheritance implementstion.\n *\n * @param array\t \t...classes\n *\n * @return object\n */\nconst Implementations = new Map;\nexport default function mixin(...classes) {\n\t\n\tvar Traps = {};\n\tvar RetrnDirective = 'last';\n\tif (_isArray(arguments[0])) {\n\t\tclasses = arguments[0];\n\t\tTraps = arguments[1];\n\t\tif (arguments[2]) {\n\t\t\tRetrnDirective = arguments[2];\n\t\t}\n\t}\n\t// -----------------------\n\tvar Base = _arrLast(classes);\n\tvar supersMap = {};\n\t// -----------------------\n\t// Create the Mixin\n\t// ...with a special constructor.\n\t// -----------------------\n\tvar Mixin = class {\n\t\tconstructor(...args) {\n\t\t\tclasses.forEach((_class, i) => {\n\t\t\t\tReflect.construct(_class, args, this.constructor);\n\t\t\t});\n\t\t}\n\t};\n\t// -----------------------\n\t// Implement a special handler of the \"instanceof\" operator.\n\t// -----------------------\n\tclasses.forEach((_class, i) => {\n\t\tif (!Implementations.has(_class)) {\n\t\t\tImplementations.set(_class, []);\n\t\t\ttry {\n\t\t\t\tvar originalInstanceChecker = _class[Symbol.hasInstance];\n\t\t\t\tObject.defineProperty(_class, Symbol.hasInstance, {value: function(instance) {\n\t\t\t\t\tif (originalInstanceChecker.call(this, instance)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (Implementations.has(this)) {\n\t\t\t\t\t\treturn Implementations.get(this).reduce((yes, _mixin) => yes || (instance instanceof _mixin), false);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}});\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error('Cannot mixin the class at index ' + i + '. Class may already have been configured for instance checks somewhere.');\n\t\t\t}\n\t\t}\n\t\tImplementations.get(_class).push(Mixin);\n\t});\n\t// ---------------------\n\t// Mixin both static and instance properties and methods\n\t// ---------------------\n\tclasses.forEach(_class => {\n\t\t// Copy const members\n\t\t_mergeCallback([Mixin, _class], (key, obj1, obj2) => ![\n\t\t\t'name', 'prototype', 'prototypes', 'length', 'caller', 'callee', 'arguments', 'constructor', 'apply', \"bind\", 'call', 'toString',/**/\n\t\t].includes(key), true/*deepProps*/);\n\t\t_mergeCallback([Mixin.prototype, _class.prototype], (key, obj1, obj2) => {\n\t\t\tif (!['prototype', 'prototypes'].includes(key)) {\n\t\t\t\tif (_isFunction(obj2[key])) {\n\t\t\t\t\tif (_isArray(supersMap[key])) {\n\t\t\t\t\t\tsupersMap[key].push(obj2[key]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsupersMap[key] = [obj2[key]];\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}, true/*deepProps*/);\n\t});\n\t// Extend (proxy) methods\n\t_each(supersMap, (name, supers) => {\n\t\tif (name === 'constructor') {\n\t\t\treturn;\n\t\t}\n\t\t// NOTE: this must not be defined as an arrow function\n\t\t// for the benefit of the \"this\".\n\t\tMixin.prototype[name] = function(...args) {\n\t\t\tif (Object.hasOwnProperty(Traps, name) && _isFunction(Traps[name])) {\n\t\t\t\t// Wrap a call to the trap...\n\t\t\t\t// So mixin supers are passed to traps\n\t\t\t\treturn Traps[name].call(this, supers, ...args);\n\t\t\t} else {\n\t\t\t\t// Call each super and return\n\t\t\t\t// the last one's return value\n\t\t\t\tvar supersReturnValues = [];\n\t\t\t\tsupers.forEach(supr => {\n\t\t\t\t\tsupersReturnValues.push(supr.call(this, ...args));\n\t\t\t\t})\n\t\t\t\treturn _arrLast(supersReturnValues);\n\t\t\t}\n\t\t};\n\t});\n\treturn Mixin;\n};","\n/**\n * @imports\n */\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function(...objs) {\n\treturn _mergeCallback(objs, (k, obj1, obj2) => {\n\t\treturn true;\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n","\n/**\n * Returns the index of subset array \"b\" in array \"a\".\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last\n * \n * @returns Int\n */\nexport default function indexOfSet(a, b, fromInex = null, last = false) {\n if (b.length > a.length) return -1;\n\treturn (typeof fromInex === 'number' ? (last ? a.slice(0, (fromInex + 1) + (fromInex < 0 ? a.length : 0)) : a.slice(fromInex)) : a).reduce((cursors, value, i) => {\n var [ index, cursorA, cursorB ] = cursors;\n if (!last && index > -1) {\n return [index, cursorA, cursorB];\n }\n var _cursorB = cursorB + 1;\n var _cursors = value === b[_cursorB] ? (_cursorB === 0 ? [i, 0] : [cursorA, _cursorB]) : [-1, -1];\n if (_cursors[1] === b.length - 1) {\n // Reset B cursor\n _cursors[1] = -1;\n if (_cursors[0] > -1) {\n return [_cursors[0]].concat(_cursors);\n }\n }\n return [index].concat(_cursors);\n }, [-1, -1, -1])[0] + (last || typeof fromInex !== 'number' ? 0 : (fromInex > -1 ? fromInex : a.length - fromInex));\n}","\n/**\n * @imports\n */\nimport _after from '../str/after.js';\nimport _indexOfSet from './indexOfSet.js';\n\n/**\n * Returns members of array \"a\" after the array \"b\" subset.\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last \n * \n * @returns Bool\n */\nexport default function after(a, b, fromInex = null, last = false) {\n\tvar subsetIndex = _indexOfSet(a, b, fromInex, last);\n\treturn subsetIndex === -1 ? [] : a.slice(subsetIndex + b.length);\n}","\n/**\n * @imports\n */\nimport _isUndefined from '../js/isUndefined.js';\nimport _isFunction from '../js/isFunction.js';\n\n/**\n * 1. Returns the ENTRY following (either the FIRST or the LAST instance of) the reference.\n * 2. Returns A NUMBER OF ENTRIES counting forwards from (either the FIRST or the LAST instance of) the given reference.\n *\n * @param array \t\tarr\n * @param mixed\t \t\treference\n * @param int|bool \t\tlength\n * @param bool|function\t loop\n * @param bool\t \t\tlastReference\n *\n * @return mixed|array\n */\nexport default function(arr, reference, length = false, loop = false, lastReference = false) {\n\tif (arr.indexOf(reference) === -1) {\n\t\treturn length ? [] : undefined;\n\t}\n\tvar amount = length === true ? arr.length - 1 : (length === false ? 1 : length);\n\tvar from = lastReference ? arr.lastIndexOf(reference) + 1 : arr.indexOf(reference) + 1;\n\tvar after = !_isUndefined(reference) ? arr.slice(from, from + amount) : [];\n\tif (loop && after.length < amount && after.length < arr.length) {\n\t\tif (!_isFunction(loop) || loop(amount - after.length)) {\n\t\t\tafter = after.concat(arr.slice(0, amount - after.length));\n\t\t}\n\t};\n\treturn length ? after : after[0];\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isTypeArray from '../js/isTypeArray.js';\nimport _isEmpty from '../js/isEmpty.js';\nimport _isObject from '../js/isObject.js';\n\n/**\n * Casts an array-like object to an array.\n *\n * @param mixed \tval\n * @param bool\t \tcastObject\n *\n * @return array\n */\nexport default function(val, castObject = true) {\n\tif (_isArray(val)) {\n\t\treturn val;\n\t};\n\tif (!castObject && _isObject(val)) {\n\t\treturn [val];\n\t};\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\n\t\treturn [];\n\t};\n\tif (_isTypeArray(val)) {\n\t\treturn Array.prototype.slice.call(val);\n\t};\n\tif (_isObject(val)) {\n\t\treturn Object.values(val);\n\t};\n\treturn [val];\n};\n","\n/**\n * @imports\n */\nimport _isNull from './isNull.js';\nimport _isUndefined from './isUndefined.js';\nimport _isTypeObject from './isTypeObject.js';\n\n/**\n * Tells if val is empty in its own type.\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\n * objects without keys, empty arrays.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\n};\n","\n/**\n * @imports\n */\nimport _isString from './isString.js';\nimport _isUndefined from './isUndefined.js';\n\n/**\n * Tells if val is \"array-like\".\n * This holds true for anything that has a length property.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !_isString(val) && !_isUndefined(val.length);\n};\n","\n/**\n * Tells if two arrays are shallow equals.\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe\n * \n * @returns Bool\n */\nexport default function equals(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? a.join('.') === b.join('.') \n\t\t: a.length === b.length && a.reduce((prev, value, i) => prev && value === b[i], true);\n}","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Flattens a nested array to the given depth.\n *\n * @param array \tarr\n * @param int \t \tdepth\n * @param bool \t \twithObjects\n *\n * @return array\n */\nconst _flatten = function(arr, depth = 1, withObjects = true) {\n\tif (!_isNumeric(depth) || depth <= 0) {\n\t\treturn arr;\n\t};\n\tif (!_isArray(arr) && _isObject(arr) && withObjects) {\n\t\tarr = Object.values(arr);\n\t};\n\tif (!_isArray(arr)) {\n\t\treturn arr;\n\t};\n\treturn arr.reduce((acc, val) => _isArray(val) || (_isObject(val) && withObjects) \n\t\t? acc.concat(_flatten(!_isArray(val) ? Object.values(val) : val, depth - 1, withObjects)) \n\t\t: acc.concat(val), []);\n};\n\n/**\n * @exports\n */\nexport default _flatten;","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the intersection of two arrays;\n * optionally using a custom matching function.\n *\n * @param array \tarr\n * @param array\t \tarr2\n * @param function \tcallback\n *\n * @return array\n */\nexport default function(arr, arr2, callback = null) {\n\treturn !_isArray(arr2) ? [] : arr.filter(val1 => callback \n\t\t? arr2.filter(val2 => callback(val1, val2)).length \n\t\t: arr2.indexOf(val1) !== -1\n\t);\n};\n","\n/**\n * Tells if the array \"a\" starts with array \"b\".\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe \n * \n * @returns Bool\n */\nexport default function startsWith(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? (a.join('.') + '.').startsWith(b.join('.') + '.') \n\t\t: b.reduce((prev, value, i) => prev && value === a[i], true);\n}","\n/**\n * @imports\n */\nimport { _isArray } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _all } from '@webqit/util/arr/index.js';\n\n\n/**\n * Returns paths in 2-dimensional form.\n * \n * - key => [ [key] ]\n * - [key] => [ [key] ]\n * - [key, key2] => [ [key, key2] ]\n * - [ [key] ] => [ [key] ]\n * - [ [key1, key2] ] => [ [key1, key2] ]\n * \n * @param Array|String paths\n * \n * @return Array\n */\nexport function paths2D(paths) {\n\treturn (pathsIs2D(paths) ? paths : (_arrFrom(paths).length ? [paths] : []))\n\t\t.reduce((multiple, path) => multiple.concat([_arrFrom(path)]), [])\n\t\t.map(path => DotSafePath.resolve(path));\n}\nexport class DotSafePath extends Array {\n\tstatic resolve(path) {\n\t\t// Note the concat() below...\n\t\t// the spread operator: new DotSafePath(...path) doesn't work when path is [0].\n\t\treturn path.every(v => !(v + '').includes('.')) ? (new DotSafePath).concat(path) : path;\n\t}\n\tget dotSafe() { return true }\n}\n\n/**\n * OTHER HELPERS\n */\n\nexport function pathsIs2D(paths) {\n\treturn _arrFrom(paths).reduce((yes, path) => yes || _isArray(path), false);\n}\nexport function pathsIsDynamic(pathArray) {\n\t// Note that trying to simply match empty slots, as in: pathArray.filter(seg => !seg && seg !== 0).length\n\t// doesn't work when the empty slots are really empty slote, as in: [ 'key', <1 empty item> ]\n\treturn pathArray.filter(seg => seg || seg === 0).length !== pathArray.length;\n}\nexport function paths2DIsDynamic(paths) {\n\treturn paths.filter(pathArray => pathsIsDynamic(_arrFrom(pathArray))).length > 0;\n}\n\n","\n/**\n * @imports\n */\nimport { _isTypeObject, _isFunction, _getType, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\nimport { paths2D } from './utils.js'\n\n/**\n * ---------------------------\n * The Firebase class\n * ---------------------------\n */\n\nexport default class Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tthis.target = target;\n\t\tthis.fireables = [];\n\t\tthis.currentlyFiring = [];\n\t}\n\t\n\t/**\n\t * Adds an Fireable instance\n\t * with optional tags.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return Fireable\n\t */\n\tadd(fireable) {\n\t\tthis.fireables.push(fireable);\n\t\treturn fireable;\n\t}\n\t\n\t/**\n\t * Removes fireables by instance.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return void\n\t */\n\tremove(fireable) {\n\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t}\n\t\n\t/**\n\t * Removes fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tremoveMatches(dfn) {\n\t\tthis.match(dfn).forEach(fireable => {\n\t\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t\t});\n\t}\n\t\n\t/**\n\t * Finds fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return array\n\t */\n\tmatch(dfn) {\n\t\treturn this.fireables.filter(fireable => {\n\t\t\tvar fireableFilter = paths2D(fireable.filter);\n\t\t\tvar fireableTags = _arrFrom((fireable.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\tvar dfnFilter = paths2D(dfn.filter);\n\t\t\tvar dfnTags = _arrFrom((dfn.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\treturn (!dfn.originalHandler || fireable.handler === dfn.originalHandler)\n\t\t\t\t&& (!dfnFilter.length || _arrEquals(dfnFilter, fireableFilter))\n\t\t\t\t&& (!dfnTags.length || (dfnTags.length === fireableTags.length && _intersect(fireableTags, dfnTags).length === dfnTags.length));\n\t\t});\n\t}\n\t\t\n\t/**\n\t * Returns a observer-specific object embedded on an element.\n\t *\n\t * @param string\t\ttype\n\t * @param array|object\ttarget\n\t * @param bool \tcreateIfNotExists\n\t * @param string \tnamespace\n\t *\n\t * @return Firebase\n\t */\n\tstatic _getFirebase(type, target, createIfNotExists = true, namespace = this.__namespace) {\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Subject must be of type object; \"' + _getType(target) + '\" given!');\n\t\t}\n\t\tvar ImplementationClass = this;\n\t\tif (namespace && globalThis.WebQitObserverNamespaceRegistry.has(type + '-' + namespace)) {\n\t\t\tImplementationClass = globalThis.WebQitObserverNamespaceRegistry.get(type + '-' + namespace);\n\t\t\ttype += '-' + namespace\n\t\t}\n\t\tif (!_internals(target, 'firebases').has(type) && createIfNotExists) {\n\t\t\t_internals(target, 'firebases').set(type, new ImplementationClass(target));\n\t\t}\n\t\treturn _internals(target, 'firebases').get(type);\n\t}\n\n\t/**\n\t * Extend a Fireable Class with a namespace.\n\t *\n\t * @param string\t\tnamespace\n\t * @param class \tImplementationClass\n\t *\n\t * @return void|class\n\t */\n\tstatic _namespace(type, namespace, ImplementationClass = null) {\n\t\ttype += '-' + namespace;\n\t\tif (arguments.length === 2) {\n\t\t\treturn globalThis.WebQitObserverNamespaceRegistry.get(type);\n\t\t}\n\t\tif (!(ImplementationClass.prototype instanceof this)) {\n\t\t\tthrow new Error(`The implementation of the namespace ${this.name}.${namespace} must be a subclass of ${this.name}.`);\n\t\t}\n\t\tglobalThis.WebQitObserverNamespaceRegistry.set(type, ImplementationClass);\n\t\tImplementationClass.__namespace = namespace;\n\t}\n}\n\nif (!globalThis.WebQitObserverNamespaceRegistry) {\n\tglobalThis.WebQitObserverNamespaceRegistry = new Map();\n}\n","\n/**\n * ---------------------------\n * The Fireable class\n * ---------------------------\n */\n\nexport default class Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object|array\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tthis.handler = dfn.handler;\n\t\tthis.filter = dfn.filter;\n\t\tthis.params = dfn.params;\n\n\t}\n\n\t/**\n\t * Sets a \"disconnected\" flag on the Fireable.\n\t *\n\t * @return void\n\t */\n\tdisconnect() {\n\t\tthis.disconnected = true;\n\t}\n}","\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _intersect } from '@webqit/util/arr/index.js';\nimport Fireable from './Fireable.js';\n\n/**\n * ---------------------------\n * The Trap class\n * ---------------------------\n */\n\nexport default class Interceptor extends Fireable {\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's fields.\n\t *\n\t * @param Event\t\t\t \t\t\tevent\n\t * @param function\t\t\t\t\tnext\n\t * @param mixed\t\t\t\t\t \trecieved\n\t *\n\t * @return void\n\t */\n\tfire(event, next, recieved) {\n\t\tif (this.disconnected || (this.filter && !_intersect(_arrFrom(this.filter), [event.type]).length)) {\n\t\t\treturn next(...Array.prototype.slice.call(arguments, 2));\n\t\t}\n\t\treturn this.handler(event, recieved, next);\n\t}\n}","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isBoolean from '../js/isBoolean.js';\nimport _each from './each.js';\n\n/**\n * Gets the match(es) between (members of) two values;\n * assertion optionally custom.\n *\n * @param mixed \t\t\tob1\n * @param mixed \t\t\tobj2\n * @param string|function\tassertion\n * @param bool\t\t\t\tnetComparison\n * @param bool\t\t\t\tcontrast\n * @param bool\t\t\t\treturnOnFirstFalse\n *\n * @return bool|array|object\n */\nexport default function(obj1, obj2, assertion = true, netComparison = true, contrast = false, returnOnFirstFalse = false) {\n\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\tvar result = [];\n\t\tvar contn = true;\n\t\tobj1.forEach(v1 => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = false;\n\t\t\t_each(obj2, (k, v2) => {\n\t\t\t\tif (!testPass || (netComparison && _isTypeObject(v1))) {\n\t\t\t\t\ttestPass = assertion(v1, v2);\n\t\t\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\t\t\ttestPass = false;\n\t\t\t\t\t}\n\t\t\t\t\tif (_isTypeObject(testPass) && netComparison) {\n\t\t\t\t\t\t// Further recursions should use this testPass as v1\n\t\t\t\t\t\tv1 = testPass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult.push(netComparison ? testPass : v1);\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult.push(testPass);\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult.push(v1);\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\t\n\tif (_isObject(obj1) && _isObject(obj2)) {\n\t\tvar result = {};\n\t\tvar contn = true;\n\t\tObject.keys(obj1).forEach(k => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = assertion(obj1[k], obj2[k]);\n\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\ttestPass = false;\n\t\t\t}\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult[k] = netComparison ? testPass : obj1[k];\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult[k] = testPass;\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult[k] = obj1[k];\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Copies an object.\n *\n * @param object\t \tobj\n * @param array\t\t \tfilter\n *\n * @return object\n */\nexport default function(obj, filter = [], withSymbols = true) {\n\tvar depth = 0;\n\tif (_isNumeric(arguments[0]) && _isTypeObject(arguments[1])) {\n\t\tdepth = arguments[0];\n\t\tobj = arguments[1];\n\t\tfilter = arguments[2] || [];\n\t}\n\treturn _mergeCallback([depth, {}, obj], (key, obj1, obj2) => {\n\t\treturn _isFunction(filter) ? filter(key) \n\t\t\t: (_isArray(filter) && filter.length ? filter.indexOf(key) > -1 : true);\n\t}, false/*deepProps*/, false/*isReplace*/, withSymbols);\n};\n","\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Action {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.type) {\n\t\t\tthrow new Error('Action type must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tObject.seal(this);\n\t}\n}","\n/**\n * @imports\n */\nimport Firebase from './Firebase.js';\nimport Interceptor from './Interceptor.js';\nimport Action from './Action.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Interceptors extends Firebase {\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Interceptor(this.target, dfn));\n\t}\n\n\t/**\n\t * Fires all interceptors with the given action.\n\t *\n\t * @param Action\t\t\taction\n\t * @param function\t\t\tdefaultHandler\n\t *\n\t * @return mixed\n\t */\n\tfire(action, defaultHandler = null) {\n\t\tif (!(action instanceof Action)) {\n\t\t\taction = new Action(this.target, action);\n\t\t}\n\t\tif (this.currentlyFiring.filter(a => a.type === action.type && a.name === action.name).length) {\n\t\t\treturn defaultHandler ? defaultHandler() : undefined;\n\t\t}\n\t\tthis.currentlyFiring.push(action);\n\t\tconst next = (index, ..._args) => {\n\t\t\tvar interceptor = this.fireables[index];\n\t\t\tif (interceptor) {\n\t\t\t\treturn interceptor.fire(action, (...args) => {\n\t\t\t\t\treturn next(index + 1, ...args);\n\t\t\t\t}/*next*/, ..._args);\n\t\t\t}\n\t\t\treturn defaultHandler ? defaultHandler(..._args) : _args[0];\n\t\t};\n\t\tvar value = next(0);\n\t\tthis.currentlyFiring.pop();\n\t\treturn value;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('interceptor', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('interceptor', ...arguments);\n\t}\n}","\n/**\n * @imports\n */\nimport { _internals } from '@webqit/util/js/index.js';\n\n/**\n * Returns the original object earlier proxied by proxy().\n *\n * @param Proxy|Any\t\ttarget\n *\n * @return Any\n */\nexport default function(target) {\n // Proxy targets are mapped to their own instances internally\n return _internals(target, false).get(target) || target;\n}\n","\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a Reflect operation of the specified type.\n *\n * @param string\t\ttype\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(type, target, payload = {}, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\t// Execute any \"keys\" traps, otherwise \"test\" the default way\n\tvar interceptors, defaultHandler = function(_val) {\n\t\treturn arguments.length ? _val : Reflect[type](target, ...Object.values(payload));\n\t};\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\treturn interceptors.fire({ type, ...payload }, defaultHandler);\n\t}\n\treturn defaultHandler();\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs an \"apply\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tthisArgument\n * @param array\t\t\targumentsList\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, thisArgument, argumentsList, params = {}) {\n\treturn _exec('apply', target, { thisArgument, argumentsList }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"construct\" operation on a target.\n *\n * @param array|object\ttarget\n * @param array\t\t\targumentsList\n * @param object\t\tnewTarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, argumentsList, newTarget = null, params = {}) {\n\treturn _exec('construct', target, arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, params);\n}\n","\n/**\n * @imports\n */\nimport { _isUndefined, _isObject } from '@webqit/util/js/index.js';\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The Event class\n * ---------------------------\n */\n\nexport default class Event {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return void\n\t */\n\tconstructor(target, cancellable = false) {\n\t\tthis._ = {};\n\t\tthis._.target = target;\n\t\tthis._.cancellable = cancellable;\n\t\tthis._.propagationStopped = false;\n\t\tthis._.defaultPrevented = false;\n\t\tthis._.promisesInstance = null;\n\t\tthis._.promises = [];\n\t}\n\n\t/**\n\t * Gets the \"target\" object.\n\t *\n\t * @return array|object\n\t */\n\tget target() {\n\t\treturn this._.target;\n\t}\n\n\t/**\n\t * Gets the \"cancellable\" flag.\n\t *\n\t * @return bool\n\t */\n\tget cancellable() {\n\t\treturn this._.cancellable;\n\t}\n\n\t/**\n\t * -----------------------\n\t * RESPONSE HANDLERS\n\t * -----------------------\n\t */\n\n\t/**\n\t * Stops the evnt from reaching other listeners.\n\t *\n\t * @return bool\n\t */\n\tstopPropagation() {\n\t\tthis._.propagationStopped = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if stopPropagation() has been called.\n\t *\n\t * @return bool\n\t */\n\tget propagationStopped() {\n\t\treturn this._.propagationStopped;\n\t}\n\t\t\n\t/**\n\t * Sets a disposition that asks event initiator not to\n\t * proceed with default action.\n\t *\n\t * @return void\n\t */\n\tpreventDefault() {\n\t\tthis._.defaultPrevented = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if preventDefault() has been called.\n\t *\n\t * @return bool\n\t */\n\tget defaultPrevented() {\n\t\treturn this._.defaultPrevented;\n\t}\n\t\t\n\t/**\n\t * Sets a Promise disposition.\n\t *\n\t * @param Promise\tpromise\n\t *\n\t * @return void\n\t */\n\twaitUntil(promise) {\n\t\tif (promise instanceof Promise) {\n\t\t\tthis._.promises.push(promise);\n\t\t\tthis._.promisesInstance = null;\n\t\t}\n\t}\n\t\t\n\t/**\n\t * (Readonly) returns all promises.\n\t *\n\t * @return Promise|null\n\t */\n\tget promises() {\n\t\tif (!this._.promisesInstance && this._.promises.length) {\n\t\t\tthis._.promisesInstance = Promise.all(this._.promises);\n\t\t}\n\t\treturn this._.promisesInstance;\n\t}\n\t\t\n\t/**\n\t * Evaluates the given disposition value and\n\t * calls an appropriate disposition method.\n\t *\n\t * @params mixed \trspns\n\t *\n\t * @return void\n\t */\n\trespondWith(rspns) {\n\t\tvar proms;\n\t\tvar isEvent = _isObject(rspns) && !_isUndefined(rspns.propagationStopped) && !_isUndefined(rspns.defaultPrevented)\n\t\tif ((rspns === false) || (isEvent && rspns.propagationStopped)) {\n\t\t\tthis.stopPropagation();\n\t\t} else if ((rspns === false) || (isEvent && rspns.defaultPrevented)) {\n\t\t\tthis.preventDefault();\n\t\t} else if ((rspns instanceof Promise && (proms = rspns))\n\t\t|| (isEvent && (proms = rspns.promises))) {\n\t\t\tthis.waitUntil(proms);\n\t\t}\n\t}\n}","\n/**\n * @imports\n */\nimport {\n\t_after as _arrAfter, _startsWith as _arrStartsWith,\n\t_any, _equals as _arrEquals,\n} from '@webqit/util/arr/index.js';\nimport { _isNumeric, _isFunction, _isObject } from '@webqit/util/js/index.js';\nimport { paths2D, pathsIs2D, pathsIsDynamic, paths2DIsDynamic } from './utils.js'\nimport Fireable from './Fireable.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Observer class\n * ---------------------------\n */\n\nexport default class Observer extends Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tsuper(target, dfn);\n\t\t// The rest of this code is designed for a 2-dimensional array.\n\t\tthis.filters2D = paths2D(this.filter);\n\t\tthis.filtersIsOriginally2D = pathsIs2D(this.filter);\n\t\tthis.filtersIsDynamic = paths2DIsDynamic(this.filters2D);\n\t\tif (this.filtersIsDynamic && this.filters2D.length > 1) {\n\t\t\tthrow new Error('Only one \"Dynamic Filter\" must be observed at a time! \"' + this.filters2D.map(pathArray => '[' + pathArray.join(', ') + ']').join(', ') + '\" have been bound together.');\n\t\t}\n\t}\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's filter.\n\t *\n\t * @param array\t\t\t \tchanges\n\t *\n\t * @return void\n\t */\n\tfire(changes) {\n\t\tif (this.disconnected || (this.params.type && !_any(changes, delta => this.params.type === delta.type))) {\n\t\t\treturn;\n\t\t}\n\t\tconst diff = delta => !['set', 'def'].includes(delta.type) || (\n\t\t\t!this.params.diff || (_isFunction(this.params.diff) ? this.params.diff(delta.value, delta.oldValue) : delta.value !== delta.oldValue)\n\t\t);\n\t\tvar evt = new Event(this.target);\n\t\tif (this.filters2D.length) {\n\t\t\tvar matches = changes.filter(delta => {\n\t\t\t\t// one observerPathArray can turn out to be two if dynamic\n\t\t\t\t// OR evt.originatingFields is multiple and this.params.subtree\n\t\t\t\treturn this.filters2D.filter((observerPathArray, i) => {\n\t\t\t\t\tvar observerPathArray_Resolved = observerPathArray.slice();\n\t\t\t\t\tif (this.filtersIsDynamic) {\n\t\t\t\t\t\t// Note that if we had tried to loop thru observerPathArray_Resolved,\n\t\t\t\t\t\t// we wouldn't be able tp access slots that are truly empty, as in: [ 'key', <1 empty item> ]\n\t\t\t\t\t\tdelta.path.forEach((_seg, i) => {\n\t\t\t\t\t\t\tobserverPathArray_Resolved[i] = observerPathArray_Resolved[i] || observerPathArray_Resolved[i] === 0 \n\t\t\t\t\t\t\t\t? observerPathArray_Resolved[i]\n\t\t\t\t\t\t\t\t: _seg;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn (!this.filtersIsDynamic || !pathsIsDynamic(observerPathArray_Resolved)) && diff(delta) && ((!this.params.subtree && _arrEquals(observerPathArray_Resolved, delta.path))\n\t\t\t\t\t\t|| (this.params.suptree && _arrStartsWith(observerPathArray_Resolved, delta.path) && (!_isNumeric(this.params.suptree) || _arrAfter(observerPathArray_Resolved, delta.path).length <= this.params.suptree))\n\t\t\t\t\t\t|| (this.params.subtree && delta.path.length >= observerPathArray_Resolved.length && _arrStartsWith(delta.path, observerPathArray_Resolved) && (!_isNumeric(this.params.subtree) || _arrAfter(delta.path, observerPathArray_Resolved).length <= this.params.subtree))\n\t\t\t\t\t);\n\t\t\t\t}).length;\n\t\t\t});\n\t\t\tif (matches.length) {\n\t\t\t\tif (this.filtersIsOriginally2D || this.params.subtree) {\n\t\t\t\t\tvar changesObject = matches;\n\t\t\t\t\tif (_isObject(this.filter)) {\n\t\t\t\t\t\tchangesObject = {...this.filter};\n\t\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\t\tchangesObject[e.name] = e;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tevt.respondWith(this.handler(changesObject, evt));\n\t\t\t\t} else {\n\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\tevt.respondWith(this.handler(e, evt));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((this.params.subtree || changes.filter(delta => _arrEquals(delta.path, [delta.name])).length === changes.length) && changes.filter(delta => diff(delta)).length) {\n\t\t\tevt.respondWith(this.handler(changes, evt));\n\t\t}\n\t\treturn evt;\n\t}\n}\n","\n/**\n * Tells if ANY items pass the test.\n *\n * @param array \tarr\n * @param function \tcallback\n *\n * @return bool\n */\nexport default function(arr, callback) {\n\treturn arr.reduce((prevTest, itm, i) => prevTest || callback(itm, i), false);\n};\n","\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\nimport { DotSafePath } from './utils.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Mutation {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.originalSubject) {\n\t\t\tthis.originalSubject = target;\n\t\t}\n\t\tif (!('type' in dfn)) {\n\t\t\tthrow new Error('Mutation type must be given in definition!');\n\t\t}\n\t\tif (!('name' in dfn)) {\n\t\t\tthrow new Error('Property name must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tif (key === 'path') {\n\t\t\t\tvalue = DotSafePath.resolve(value);\n\t\t\t}\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tif (!this.path) {\n\t\t\tObject.defineProperty(this, 'path', {value: DotSafePath.resolve([dfn.name]), enumerable:true});\n\t\t}\n\t\tObject.seal(this);\n\t}\n}","\n/**\n * @imports\n */\nimport { _from as _arrFrom, _remove, _last } from '@webqit/util/arr/index.js';\nimport Firebase from './Firebase.js';\nimport Observer from './Observer.js';\nimport Mutation from './Mutation.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Observers extends Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tsuper(target);\n\t\tthis.buffers = [];\n\t}\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Observer(this.target, dfn));\n\t}\n\t\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param array|Mutation\t\tchanges\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return Event\n\t */\n\tfire(changes, cancellable) {\n\t\tvar evt = new Event(this.target, cancellable);\n\t\t// We accept multiple changes\n\t\tchanges = _arrFrom(changes, false).map(delta => !(delta instanceof Mutation) ? new Mutation(this.target, delta) : delta);\n\t\tif (this.buffers.length) {\n\t\t\t_last(this.buffers)(changes);\n\t\t\treturn evt;\n\t\t}\n\t\tif (this.currentlyFiring.filter(d => changes.filter(delta => d.type === delta.type && d.name === delta.name).length).length) {\n\t\t\t//return false;\n\t\t}\n\t\t//this.currentlyFiring.push(...changes);\n\t\tthis.fireables.forEach(observer => {\n\t\t\tif (evt.propagationStopped && cancellable) {\n\t\t\t\treturn evt;\n\t\t\t}\n\t\t\tevt.respondWith(observer.fire(changes));\n\t\t});\n\t\t//changes.forEach(delta => _remove(this.currentlyFiring, delta));\n\t\treturn evt;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('observer', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('observer', ...arguments);\n\t}\n}","\n/**\n * @imports\n */\nimport {\n\t_isArray, _isNumeric, _isClass,\n\t_isFunction, _isTypeObject, _internals\n} from '@webqit/util/js/index.js';\nimport { _from as _objFrom } from '@webqit/util/obj/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a \"get\" operation on a target.\n * Fires any such query observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return mixed\n */\nexport default function(target, keys, receiver = null, params = {}) {\n\ttarget = receiver || target;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\tvar _keys = _arrFrom(keys);\n\tvar values = _keys.map(key => {\n\t\t// Execute any \"get\" traps, otherwise \"get\" the default way\n\t\tvar interceptors, defaultGet = function(_value) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _value;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).get();\n\t\t\t}\n\t\t\treturn receiver \n\t\t\t\t? Reflect.get(target, key, receiver) \n\t\t\t\t: Reflect.get(target, key);\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, true, params.namespace)) {\n\t\t\treturn interceptors.fire({type:'get', name: key, related: _keys, receiver}, defaultGet);\n\t\t}\n\t\treturn defaultGet();\n\t});\n\t// ---------------------------------\n\treturn _isArray(keys) ? values : values[0];\n}\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Adds an observer to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\thandler\n * @param object\t\t\t\t\tparams\n *\n * @return Observer\n */\nexport default function(target, filter, handler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? handler : {};\n\t\thandler = filter;\n\t\tfilter = null;\n\t}\n\tif (!_isFunction(handler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar existing, observers = Observers.getFirebase(target, true, params.namespace);\n\tvar dfn = {filter, handler, params,};\n\tif (dfn.filter || dfn.params.subtree === '*' || (dfn.params.subtree && isUserObject(target))) {\n\t\tbuild(target, dfn.filter, dfn.params.subtree, params.namespace);\n\t}\n\tif (dfn.params.unique && (existing = observers.match({filter, params})).length) {\n\t\tif (dfn.params.unique !== 'replace') {\n\t\t\treturn existing[0];\n\t\t}\n\t\tobservers.remove(existing[0]);\n\t}\n\treturn observers.add(dfn);\n}\n","\n/**\n * @imports\n */\nimport { _each, _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Mutation from '../core/Mutation.js';\nimport Observers from '../core/Observers.js';\nimport observe from '../reactions/observe.js';\n\n/**\n * Bubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tvalue\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tif (target === value) {\n\t\treturn;\n\t}\n\tvar observers;\n\tobserve(value, (changes, eventObject) => {\n\t\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\t\tvar _changes = changes.map(delta => {\n\t\t\t\t// ------------\n\t\t\t\t// Recursive events must not propagate\n\t\t\t\t// ------------\n\t\t\t\tvar d = delta;\n\t\t\t\tdo {\n\t\t\t\t\tif (d.target === target) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} while(d = d.src);\n\t\t\t\t// ------------\n\t\t\t\t// Create propagation\n\t\t\t\t// ------------\n\t\t\t\tvar dfn = {}; _each(delta, (key, value) => {\n\t\t\t\t\tif (key !== 'target' && key !== 'name' && key !== 'path' && key !== 'src') {\n\t\t\t\t\t\tdfn[key] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdfn.name = field;\n\t\t\t\tdfn.path = [field].concat(delta.path);\n\t\t\t\tdfn.originalSubject = delta.originalSubject;\n\t\t\t\tdfn.src = delta;\n\t\t\t\treturn new Mutation(target, dfn);\n\t\t\t}).filter(c => c);\n\t\t\tif (_changes.length) {\n\t\t\t\treturn observers.fire(_changes, eventObject.cancellable);\n\t\t\t}\n\t\t}\n\t}, {subtree: true, ...params, unique: true, tags: [linkTag, field, target]});\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'set',\n\t\t\tvalue,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tlet eventObject = observers.fire(_event, params.cancellable);\n\t\tif (params.eventTypeReturn) {\n\t\t\treturn eventObject;\n\t\t}\n\t}\n}\n\n/**\n * @var object\n */\nexport const linkTag = {};","\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _before, _after } from '@webqit/util/str/index.js';\nimport { paths2D } from '../core/utils.js';\nimport Observers from '../core/Observers.js';\nimport _get from '../actions/get.js';\nimport link from './link.js';\n\n/**\n * Recursively \"connects\" an object's members to the object\n * for observer actions.\n *\n * @param array|object\ttarget\n * @param string|array\tpaths\n * @param bool\t\t\tsubtree\n * @param String\t\tnamespace\n *\n * @return void\n */\nexport default function build(target, paths = null, subtree = false, namespace = null) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tvar observers = Observers.getFirebase(target, true, namespace);\n\tif (!observers || observers.build) {\n\t\treturn;\n\t}\n\tobservers.build = subtree;\n\t// ---------------------------------\n\t// For paths2D, refer to the comments at class Observer.\n\tvar _paths2D = paths2D(paths);\n\t// If any path starts with a dot, (a wild card path), all keys at this level is implied\n\tvar rootLevelKeysToObserve = !_paths2D.length || _paths2D.filter(path => /*Starts with an empty segment*/!path[0] && path[0] !== 0).length\n\t\t? Object.keys(target)\n\t\t: _paths2D.map(path => path[0]);\n\tvar subLevelKeysToObserve = _paths2D.length ? _paths2D.map(path => path.slice(1)).filter(p => p.length) : null;\n\tobservers.subBuild = subLevelKeysToObserve && subLevelKeysToObserve.length ? subLevelKeysToObserve : null;\n\trootLevelKeysToObserve.forEach(key => {\n\t\tvar value = _get(target, key, null, { namespace });\n\t\ttry {\n\t\t\tif (_isTypeObject(value)) {\n\t\t\t\tlink(target, key, value, null, params);\n\t\t\t\tif ((observers.subBuild && isUserObject(value)) \n\t\t\t\t|| (_isFunction(subtree) ? subtree(value) : (subtree && isUserObject(value)))) {\n\t\t\t\t\tbuild(value, observers.subBuild, subtree, namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch(e) {/* instanceof-ing certain primitives may throw */}\n\t});\n}\n\n/**\n * Tells if an object if a User Object.\n * \n * @param Object value\n * \n * @return Bool\n */\nexport const isUserObject = value => ((value instanceof Object) || (value instanceof Array) || (value instanceof Function))\n\t&& (typeof window === 'undefined' || value !== window);\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Removes observers from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\toriginalHandler\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, filter, originalHandler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? originalHandler : {};\n\t\toriginalHandler = filter;\n\t\tfilter = null;\n\t}\n\tif (originalHandler && !_isFunction(originalHandler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(originalHandler) + '\" given!');\n\t}\n\tvar observers;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\treturn observers.removeMatches({filter, originalHandler, params});\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Observers from '../core/Observers.js';\nimport unobserve from '../reactions/unobserve.js';\nimport { linkTag } from './link.js';\n\n/**\n * Unbubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tobject\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tunobserve(value, null, null, {...params, tags:[linkTag, field, target]});\n\tvar observers;\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'del',\n\t\t\toldValue: value,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tobservers.fire(_event, params.cancellable);\n\t}\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"has\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string\t\tname\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('has', target, { name }, params);\n}\n","\n/**\n * @imports\n */\nimport {\n\t_isObject, _isTypeObject, _internals,\n\t_isNumber, _isArray, _isString\n} from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"_setProp\" type of operation on a target.\n * Fires any observers for the specific type that may be bound to target.\n *\n * @param bool\t\t\tdefine\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param Object\t\tparams\n *\n * @return Event\n */\nexport default function(define, target, payload, params = {}) {\n\ttarget = payload.receiver || target;\n\tvar keysOrPayload = payload.keysOrPayload;\n\tvar value = payload.value;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tif (_isObject(keysOrPayload)) {\n\t\tparams = value || {};\n\t\tvalue = null;\n\t}\n\t// ----------\n\ttarget = _unproxy(target);\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace),\n\t\tobservers = Observers.getFirebase(target, false, params.namespace);\n\t// ----------\n\tconst handleSet = (key, value, related, detail) => {\n\t\tvar type = 'set', descriptor;\n\t\tif (define) {\n\t\t\ttype = 'defineProperty';\n\t\t\tdescriptor = value || {};\n\t\t\tvalue = descriptor.value;\n\t\t}\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar isUpdate = false, oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\tisUpdate = true;\n\t\t\toldValue = _get(target, key, payload.receiver, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\treceiver: payload.receiver,\n\t\t\trelated,\n\t\t\tdetail,\n\t\t\tisUpdate,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// The set operation\n\t\tvar defaultSet = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\tif (descriptor) {\n\t\t\t\t\tdescriptor = _success;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = _success;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (descriptor) {\n\t\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(target, key, descriptor);\n\t\t\t} else if (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).set(value);\n\t\t\t}\n\t\t\ttarget[key] = value;\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors) {\n\t\t\tvar eventObject = descriptor \n\t\t\t\t? {type: 'defineProperty', name: key, descriptor, receiver: payload.receiver, related, detail, isUpdate, oldValue} \n\t\t\t\t: {type: 'set', name: key, value, receiver: payload.receiver, related, detail, isUpdate, oldValue};\n\t\t\te.success = interceptors.fire(eventObject, defaultSet);\n\t\t} else {\n\t\t\te.success = defaultSet();\n\t\t}\n\t\t// ---------------------------------\n\t\tif (e.success && e.value !== e.oldValue) {\n\t\t\t// Unobserve outgoing value for bubbling\n\t\t\tif (_isTypeObject(e.oldValue)) {\n\t\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t\t}\n\t\t\t// Observe incoming value for bubbling\n\t\t\tif (_isTypeObject(e.value)) {\n\t\t\t\tlink(target, key, e.value, null, params);\n\t\t\t\tif (observers && (observers.subBuild || (observers.build && isUserObject(e.value)))) {\n\t\t\t\t\tbuild(e.value, observers.subBuild, observers.build, params.namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn e;\n\t};\n\t// ---------------------------------\n\tvar keys, events = [];\n\tif (_isArray(keysOrPayload) || ((_isString(keysOrPayload) || _isNumber(keysOrPayload)) && (keys = _arrFrom(keysOrPayload)))) {\n\t\tevents = keys.map(key => handleSet(key, value, keys, params.detail));\n\t} else if (_isObject(keysOrPayload) && (keys = Object.keys(keysOrPayload))) {\n\t\tevents = keys.map(key => handleSet(key, keysOrPayload[key], keys, params.detail));\n\t}\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar evt;\n\tif (observers) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n","\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"defineProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, params = {}) {\n\treturn _setOrDefine(true/*define*/, target, { keysOrPayload, value }, params);\n}\n","\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isTypeObject, _internals } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"deleteProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return Event\n */\nexport default function(target, keys, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\tvar _keys = _arrFrom(keys);\n\tvar events = _keys.map(key => {\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\toldValue = _get(target, key, null, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype: 'deleteProperty',\n\t\t\trelated: _keys,\n\t\t\tdetail: params.detail,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// Execute any \"del\" traps, otherwise \"del\" the default way\n\t\tvar interceptors, defaultDel = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _success;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdelete target[key];\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\t\te.success = interceptors.fire({type: 'deleteProperty', name:key, oldValue, related: _keys}, defaultDel);\n\t\t} else {\n\t\t\te.success = defaultDel();\n\t\t}\n\t\t// ---------------------------------\n\t\t// Unobserve outgoing value for bubbling\n\t\tif (e.success && _isTypeObject(e.oldValue)) {\n\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t}\n\t\treturn e;\n\t});\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar observers, evt;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getOwnPropertyDescriptor\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string|number name\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('getOwnPropertyDescriptor', target, { name }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('getPrototypeOf', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"isExtensible\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('isExtensible', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"ownKeys\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('ownKeys', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"preventExtensions\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('preventExtensions', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"set\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, receiver = null, params = {}) {\n\treturn _setOrDefine(false/*define*/, target, arguments.length > 3 ? { keysOrPayload, value, receiver } : { keysOrPayload, value }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"setPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tprototype\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, prototype, params = {}) {\n\treturn _exec('setPrototypeOf', target, { prototype }, params);\n}\n","\n/**\n * @imports\n */\n// Actions\nimport apply from './actions/apply.js';\nimport construct from './actions/construct.js';\nimport defineProperty from './actions/defineProperty.js';\nimport deleteProperty from './actions/deleteProperty.js';\nimport get from './actions/get.js';\nimport getOwnPropertyDescriptor from './actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from './actions/getPrototypeOf.js';\nimport has from './actions/has.js';\nimport isExtensible from './actions/isExtensible.js';\nimport ownKeys from './actions/ownKeys.js';\nimport preventExtensions from './actions/preventExtensions.js';\nimport set from './actions/set.js';\nimport setPrototypeOf from './actions/setPrototypeOf.js';\n// Actors\nimport accessorize from './actors/accessorize.js';\nimport unaccessorize from './actors/unaccessorize.js';\nimport proxy from './actors/proxy.js';\nimport unproxy from './actors/unproxy.js';\n// Reactions\nimport observe from './reactions/observe.js';\nimport unobserve from './reactions/unobserve.js';\nimport intercept from './reactions/intercept.js';\nimport unintercept from './reactions/unintercept.js';\nimport closure from './reactions/closure.js';\n// Connectors\nimport build from './connectors/build.js';\nimport link from './connectors/link.js';\nimport unlink from './connectors/unlink.js';\n// Core\nimport Observers from './core/Observers.js';\nimport Interceptors from './core/Interceptors.js';\n\n/**\n * @exports\n */\nexport default {\n\t// Actions\n\tapply,\n\tconstruct,\n\tdefineProperty,\n\tdeleteProperty,\n\tget,\n\tgetOwnPropertyDescriptor,\n\tgetPrototypeOf,\n\thas,\n\tisExtensible,\n\townKeys,\n\tpreventExtensions,\n\tset,\n\tsetPrototypeOf,\n\t// Actors\n\taccessorize,\n\tunaccessorize,\n\tproxy,\n\tunproxy,\n\t// Reactions\n\tobserve,\n\tunobserve,\n\tintercept,\n\tunintercept,\n\tclosure,\n\t// Connectors\n\tbuild,\n\tlink,\n\tunlink,\n\t// Core\n\tObservers,\n\tInterceptors,\n}","\n/**\n * @imports\n */\nimport { _isArray, _internals } from '@webqit/util/js/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport _get from '../actions/get.js';\nimport _set from '../actions/set.js';\n\n/**\n * Initializes \"Reflxive getter/setter\" traps on the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\treturn false;\n\t\t}\n\t\t// ----------\n\t\tconst getDescriptorDeep = () => {\n\t\t\tvar descriptor, proto = target;\n\t\t\twhile (!descriptor && (proto = Object.getPrototypeOf(proto))) {\n\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(proto, key);\n\t\t\t}\n\t\t\treturn descriptor;\n\t\t};\n\t\t// ----------\n\t\tvar originalOwnDescriptor = Object.getOwnPropertyDescriptor(target, key),\n\t\t\taltOriginalOwnDescriptor,\n\t\t\tactiveIsAltOriginalOwnDescriptor;\n\t\tif (!originalOwnDescriptor) {\n\t\t\t// Not an own property\n\t\t\t// and maybe not even defined at all in the prototype chain\n\t\t\taltOriginalOwnDescriptor = {\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: key in target ? false/* existing but inherited*/ : true,\n\t\t\t\tconfigurable: params.configurable !== false,\n\t\t\t};\n\t\t}\n\t\t// ----------\n\t\tvar reactiveOwnDescriptor = { ...(originalOwnDescriptor || altOriginalOwnDescriptor) };\n\t\tif ('value' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.value;\n\t\t}\n\t\tif ('writable' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.writable;\n\t\t}\n\t\t// ----------\n\t\treactiveOwnDescriptor.get = () => {\n\t\t\tif (controlObject.ongoingGets.length) {\n\t\t\t\t// .touch(true)\n\t\t\t\treturn controlObject.get();\n\t\t\t}\n\t\t\t// _get() will return here\n\t\t\t// but to call controlObject.get();\n\t\t\tcontrolObject.ongoingGets.push(1);\n\t\t\tvar value = _get(target, key, null, params);\n\t\t\tcontrolObject.ongoingGets.pop();\n\t\t\treturn value;\n\t\t};\n\t\tvar setting;\n\t\treactiveOwnDescriptor.set = newValue => {\n\t\t\tif (controlObject.ongoingSets.length) {\n\t\t\t\treturn controlObject.set(newValue);\n\t\t\t}\n\t\t\t// _set() will return here\n\t\t\t// but to call controlObject.set();\n\t\t\tcontrolObject.ongoingSets.push(1);\n\t\t\tvar operation = _set(target, key, newValue, null, params);\n\t\t\tcontrolObject.ongoingSets.pop();\n\t\t\treturn operation;\n\t\t};\n\t\t// ----------\n\t\tvar controlObject = {\n\t\t\tongoingGets: [],\n\t\t\tongoingSets: [],\n\t\t\tget: function() {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// getDescriptorDeep() or altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = getDescriptorDeep() || altOriginalOwnDescriptor;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\treturn descriptor.get ? descriptor.get.call(target) : descriptor.value;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else if (descriptor = getDescriptorDeep()) {\n\t\t\t\t\t\tif (('value' in descriptor)) {\n\t\t\t\t\t\t\t// Deep is data property.\n\t\t\t\t\t\t\t// We should rather switch to altOriginalOwnDescriptor\n\t\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Not yet switched to altOriginalOwnDescriptor\n\t\t\t\t\t\t// and no getDescriptorDeep()\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\tif (descriptor.set || descriptor.get) {\n\t\t\t\t\tif (!descriptor.set) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Can sometimes return undefined\n\t\t\t\t\treturn descriptor.set.call(target, value);\n\t\t\t\t}\n\t\t\t\tdescriptor.value = value;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\trestore: function() {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.intact()) {\n\t\t\t\t\t\tif (originalOwnDescriptor || activeIsAltOriginalOwnDescriptor /* switched */) {\n\t\t\t\t\t\t\tObject.defineProperty(target, key, originalOwnDescriptor || altOriginalOwnDescriptor /* switch target */);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdelete target[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_internals(target, 'accessorizedProps').delete(key);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} catch(e) {}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tintact: function() {\n\t\t\t\treturn (Object.getOwnPropertyDescriptor(target, key) || {}).get === reactiveOwnDescriptor.get;\n\t\t\t},\n\t\t\ttouch: function(attemptRestore = false) {\n\t\t\t\t// If intact, or not intact but not restorable, return true - \"valid\"\n\t\t\t\treturn this.intact() || (attemptRestore ? !this.restore() : false);\n\t\t\t},\n\t\t}\n\t\t// ----------\n\t\ttry {\n\t\t\tObject.defineProperty(target, key, reactiveOwnDescriptor);\n\t\t\t_internals(target, 'accessorizedProps').set(key, controlObject);\n\t\t\treturn true;\n\t\t} catch(e) {}\n\t\treturn false;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n","\n/**\n * @imports\n */\nimport { _isArray, _isObject, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\n\n/**\n * Removes previously initialized \"Reflxive getter/setter\" traps from the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\treturn _internals(target, 'accessorizedProps').get(key).restore();\n\t\t}\n\t\treturn true;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n","\n/**\n * @imports\n */\nimport {\n _isClass, _isFunction, _isTypeObject,\n _getType, _internals,\n} from '@webqit/util/js/index.js';\nimport apply from '../actions/apply.js';\nimport construct from '../actions/construct.js';\nimport defineProperty from '../actions/defineProperty.js';\nimport deleteProperty from '../actions/deleteProperty.js';\nimport get from '../actions/get.js';\nimport getOwnPropertyDescriptor from '../actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from '../actions/getPrototypeOf.js';\nimport has from '../actions/has.js';\nimport isExtensible from '../actions/isExtensible.js';\nimport ownKeys from '../actions/ownKeys.js';\nimport preventExtensions from '../actions/preventExtensions.js';\nimport set from '../actions/set.js';\nimport setPrototypeOf from '../actions/setPrototypeOf.js';\n\n/**\n * Returns an object as a proxy and binds all instance methods\n * to the proxy instead of the object itself.\n *\n * @param Object|Array\t\ttarget\n * @param Object\t\t params\n *\n * @return Proxy\n */\nexport default function(target, params = {}) {\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n }\n var proxy = new Proxy(target, {\n apply: (target, thisArgument, argumentsList) => apply(target, thisArgument, argumentsList, params),\n construct: (target, argumentsList, newTarget = null) => construct(target, argumentsList, newTarget, params),\n defineProperty: (target, propertyKey, attributes) => defineProperty(target, propertyKey, attributes, params),\n deleteProperty: (target, propertyKey) => deleteProperty(target, propertyKey, params),\n get: (target, propertyKey, receiver = null) => {\n var val = get(target, propertyKey, receiver, params);\n if (params.proxyAutoBinding !== false && _isFunction(val) && !_isClass(val)) {\n return val.bind(proxy);\n }\n return val;\n },\n getOwnPropertyDescriptor: (target, propertyKey) => getOwnPropertyDescriptor(target, propertyKey, params),\n getPrototypeOf: target => getPrototypeOf(target, params),\n has: (target, propertyKey) => has(target, propertyKey, params),\n isExtensible: target => isExtensible(target, params),\n ownKeys: target => ownKeys(target, params),\n preventExtensions: target => preventExtensions(target, params),\n set: (target, propertyKey, value, receiver = null) => set(target, propertyKey, value, receiver, params),\n setPrototypeOf: (target, prototype) => setPrototypeOf(target, prototype, params),\n });\n _internals(proxy).set(proxy, target);\n\treturn proxy;\n}\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"class\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\n};\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _isObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Adds a trap to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return Interceptor\n */\nexport default function(target, trap, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar returnObj = {}, isOriginallyObj = true;\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { [null]: trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, true, params.namespace);\n\tObject.keys(trap).forEach(filter => {\n\t\tif (!_isFunction(trap[filter])) {\n\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t}\n\t\tvar dfn = { filter, handler: trap[filter], params }, existing;\n\t\tif (dfn.params.unique && (existing = interceptors.match(dfn)).length) {\n\t\t\tif (dfn.params.unique !== 'replace') {\n\t\t\t\treturn existing[0];\n\t\t\t}\n\t\t\tinterceptors.remove(existing[0]);\n\t\t}\n\t\tif (isOriginallyObj) {\n\t\t\treturnObj[filter] = interceptors.add(dfn);\n\t\t} else {\n\t\t\treturnObj = interceptors.add(dfn);\n\t\t}\n\t});\n\treturn returnObj;\n}\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Removes traps from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, trap = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace);\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { [null]: trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\tObject.keys(trap).forEach(filter => {\n\t\t\tif (!_isFunction(trap[filter])) {\n\t\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t\t}\n\t\t\tvar dfn = { filter, originalHandler: trap[filter], params };\n\t\t\treturn interceptors.removeMatches(dfn);\n\t\t});\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _copy } from '@webqit/util/obj/index.js';\nimport { _unique } from '@webqit/util/arr/index.js';\nimport { _isArray, _isTypeObject } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\n\n/**\n * Executes a callback function on a target in \"closure\" mode.\n * Fires any observers that may be bound to target on recorded changes.\n *\n * @param function\t\tcallback\n * @param array\t\t\t...subjects\n *\n * @return array|Event\n */\nexport default function(callback, ...subjects) {\n\tvar context = subjects.map(target => {\n\t\ttarget = _unproxy(target);\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Target must be of type object!');\n\t\t}\n\t\treturn {\n\t\t\ttarget,\n\t\t\tsubjectCopy: _isArray(target) ? target.slice(0) : _copy(target),\n\t\t};\n\t});\n\t// ---------------------------------\n\tvar result = callback(...subjects);\n\t// ---------------------------------\n\tconst fireDiffs = () => {\n\t\tcontext.map(cntxt => {\n\t\t\tvar initialKeys = Object.keys(cntxt.subjectCopy);\n\t\t\tvar currentKeys = Object.keys(cntxt.target);\n\t\t\tvar related = [];\n\t\t\tvar changes = _unique(initialKeys.concat(currentKeys)).map(key => {\n\t\t\t\tif (cntxt.subjectCopy[key] !== cntxt.target[key]) {\n\t\t\t\t\trelated.push(key);\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// The event object\n\t\t\t\t\tvar e = {\n\t\t\t\t\t\tname:key,\n\t\t\t\t\t\trelated,\n\t\t\t\t\t\tbuffered: true,\n\t\t\t\t\t};\n\t\t\t\t\tif (currentKeys.includes(key)) {\n\t\t\t\t\t\te.type = 'set';\n\t\t\t\t\t\te.value = cntxt.target[key];\n\t\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\t\te.isUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.type = 'del';\n\t\t\t\t\t}\n\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\te.oldValue = cntxt.subjectCopy[key];\n\t\t\t\t\t}\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// Unobserve outgoing value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.subjectCopy[key])) {\n\t\t\t\t\t\tunlink(cntxt.target, key, cntxt.subjectCopy[key]);\n\t\t\t\t\t}\n\t\t\t\t\t// Observe incoming value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.target[key])) {\n\t\t\t\t\t\tlink(cntxt.target, key, cntxt.target[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t}).filter(c => c);\n\t\t\t// ---------------------------------\n\t\t\tvar observers;\n\t\t\tif (changes.length && (observers = Observers.getFirebase(cntxt.target, false))) {\n\t\t\t\treturn observers.fire(changes);\n\t\t\t}\n\t\t});\n\t};\n\tif (result instanceof Promise) {\n\t\tresult.then(fireDiffs);\n\t} else {\n\t\tfireDiffs();\n\t}\n\treturn result;\n}\n","\n/**\n * Returns a list of unique items.\n *\n * @param array\t \t\t\t\tarr\n *\t *\n * @return array\n */\nexport default function(arr) {\n\tconst distinct = (value, index, self) => {\n\t\treturn self.indexOf(value) === index;\n\t};\n\treturn arr.filter(distinct);\n};\n","\n/**\n * @imports\n */\nimport Observer from './index.js';\n\n// As globals\nif (!window.WebQit) {\n\twindow.WebQit = {};\n}\nwindow.WebQit.Observer = Observer;"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@webqit/util/js/isObject.js","webpack:///./node_modules/@webqit/util/js/getType.js","webpack:///./node_modules/@webqit/util/js/internals.js","webpack:///./node_modules/@webqit/util/js/isArray.js","webpack:///./node_modules/@webqit/util/js/isTypeFunction.js","webpack:///./node_modules/@webqit/util/js/isNull.js","webpack:///./node_modules/@webqit/util/js/isUndefined.js","webpack:///./node_modules/@webqit/util/js/isTypeObject.js","webpack:///./node_modules/@webqit/util/js/isFunction.js","webpack:///./node_modules/@webqit/util/js/isNumber.js","webpack:///./node_modules/@webqit/util/js/isNumeric.js","webpack:///./node_modules/@webqit/util/js/isString.js","webpack:///./node_modules/@webqit/util/arr/first.js","webpack:///./node_modules/@webqit/util/arr/last.js","webpack:///./node_modules/@webqit/util/arr/pushUnique.js","webpack:///./node_modules/@webqit/util/obj/getAllPropertyNames.js","webpack:///./node_modules/@webqit/util/obj/getPrototypeChain.js","webpack:///./node_modules/@webqit/util/obj/mergeCallback.js","webpack:///./node_modules/@webqit/util/obj/each.js","webpack:///./node_modules/@webqit/util/js/mixin.js","webpack:///./node_modules/@webqit/util/obj/merge.js","webpack:///./node_modules/@webqit/util/arr/indexOfSet.js","webpack:///./node_modules/@webqit/util/arr/after.js","webpack:///./node_modules/@webqit/util/arr/following.js","webpack:///./node_modules/@webqit/util/arr/from.js","webpack:///./node_modules/@webqit/util/js/isEmpty.js","webpack:///./node_modules/@webqit/util/js/isTypeArray.js","webpack:///./node_modules/@webqit/util/arr/equals.js","webpack:///./node_modules/@webqit/util/arr/flatten.js","webpack:///./node_modules/@webqit/util/arr/intersect.js","webpack:///./node_modules/@webqit/util/arr/startsWith.js","webpack:///./src/core/utils.js","webpack:///./src/core/Firebase.js","webpack:///./src/core/Fireable.js","webpack:///./src/core/Interceptor.js","webpack:///./node_modules/@webqit/util/obj/compareCallback.js","webpack:///./node_modules/@webqit/util/obj/copy.js","webpack:///./src/core/Action.js","webpack:///./src/core/Interceptors.js","webpack:///./src/actors/unproxy.js","webpack:///./src/actions/_exec.js","webpack:///./src/actions/apply.js","webpack:///./src/actions/construct.js","webpack:///./src/core/Event.js","webpack:///./src/core/Observer.js","webpack:///./node_modules/@webqit/util/arr/any.js","webpack:///./src/core/Mutation.js","webpack:///./src/core/Observers.js","webpack:///./src/actions/get.js","webpack:///./src/reactions/observe.js","webpack:///./src/connectors/link.js","webpack:///./src/connectors/build.js","webpack:///./src/reactions/unobserve.js","webpack:///./src/connectors/unlink.js","webpack:///./src/actions/has.js","webpack:///./src/actions/_setOrDefine.js","webpack:///./src/actions/defineProperty.js","webpack:///./src/actions/deleteProperty.js","webpack:///./src/actions/getOwnPropertyDescriptor.js","webpack:///./src/actions/getPrototypeOf.js","webpack:///./src/actions/isExtensible.js","webpack:///./src/actions/ownKeys.js","webpack:///./src/actions/preventExtensions.js","webpack:///./src/actions/set.js","webpack:///./src/actions/setPrototypeOf.js","webpack:///./src/index.js","webpack:///./src/actors/accessorize.js","webpack:///./src/actors/unaccessorize.js","webpack:///./src/actors/proxy.js","webpack:///./node_modules/@webqit/util/js/isClass.js","webpack:///./src/reactions/intercept.js","webpack:///./src/reactions/unintercept.js","webpack:///./src/reactions/closure.js","webpack:///./node_modules/@webqit/util/arr/unique.js","webpack:///./src/browser-entry.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Array","isArray","val","internals","obj","namespaces","globalThis","WebQitInternalsRegistry","Map","_ns","_itnls","itnls","set","shift","arguments","length","undefined","toString","Number","isNaN","String","count","arr","forEach","itm","firsts","slice","amount","reverse","items","indexOf","push","keysAll","until","prototypalChain","getPrototypeOf","getOwnPropertyNames","mergeCallback","objs","callback","deepProps","isReplace","withSymbols","depth","obj1","Error","obj2","valAtObj1","valAtObj2","getOwnPropertyDescriptor","e","returnValue","keys","k","parseFloat","indexOfSet","a","b","fromInex","last","reduce","cursors","index","cursorA","cursorB","_cursorB","_cursors","concat","subsetIndex","castObject","values","equals","dotSafe","join","prev","arr2","filter","val1","val2","startsWith","paths2D","paths","pathsIs2D","multiple","path","map","DotSafePath","resolve","every","v","includes","yes","pathsIsDynamic","pathArray","seg","target","this","fireables","currentlyFiring","fireable","_fireable","dfn","match","fireableFilter","fireableTags","params","tags","dfnFilter","dfnTags","originalHandler","handler","type","createIfNotExists","namespace","__namespace","ImplementationClass","WebQitObserverNamespaceRegistry","has","Fireable","disconnected","event","next","recieved","seal","super","add","action","defaultHandler","_args","interceptor","fire","args","pop","_getFirebase","_namespace","interceptors","_val","Reflect","payload","getFirebase","_exec","thisArgument","argumentsList","newTarget","cancellable","_","propagationStopped","defaultPrevented","promisesInstance","promises","promise","Promise","all","rspns","proms","isEvent","stopPropagation","preventDefault","waitUntil","filters2D","filtersIsOriginally2D","filtersIsDynamic","changes","delta","prevTest","diff","oldValue","evt","matches","observerPathArray","observerPathArray_Resolved","_seg","subtree","suptree","changesObject","respondWith","originalSubject","buffers","observer","receiver","_keys","defaultGet","_value","touch","related","existing","observers","isUserObject","build","unique","remove","observe","eventObject","_changes","src","field","linkTag","_event","eventTypeReturn","_paths2D","rootLevelKeysToObserve","subLevelKeysToObserve","subBuild","_isFunction","Function","window","removeMatches","unobserve","keysOrPayload","handleSet","detail","descriptor","define","isUpdate","defaultSet","_success","restore","success","unlink","events","successfulEvents","successCount","_setOrDefine","defaultDel","apply","construct","deleteProperty","isExtensible","ownKeys","preventExtensions","setPrototypeOf","accessorize","successFlags","getDescriptorDeep","proto","altOriginalOwnDescriptor","activeIsAltOriginalOwnDescriptor","originalOwnDescriptor","writable","configurable","reactiveOwnDescriptor","controlObject","ongoingGets","newValue","ongoingSets","operation","intact","delete","attemptRestore","unaccessorize","proxy","Proxy","propertyKey","attributes","proxyAutoBinding","test","unproxy","intercept","returnObj","isOriginallyObj","trap","unintercept","_isObject","closure","context","subjects","subjectCopy","result","fireDiffs","cntxt","initialKeys","currentKeys","self","buffered","then","link","Observers","Interceptors","WebQit","Observer"],"mappings":"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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\n/**\n * Tells if val is pure object.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\n};\n","\n/**\n * Returns the val's type.\n *\n * @param string \tval\n *\n * @return string\n */\nexport default function(val) {\n\treturn typeof val;\n};\n","\n/**\n * Creates and/or returns an \"internals\" object for the given object.\n * \n * @param Any obj\n * @param String namespace\n * \n * @return Object\n */\nexport default function internals(obj, ...namespaces) {\n if (!globalThis.WebQitInternalsRegistry) {\n globalThis.WebQitInternalsRegistry = new Map;\n }\n var itnls = globalThis.WebQitInternalsRegistry.get(obj);\n if (!itnls) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n globalThis.WebQitInternalsRegistry.set(obj, itnls);\n }\n var _ns, _itnls;\n while ((_ns = namespaces.shift())) {\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n _itnls.set(_ns, itnls);\n }\n }\n return itnls;\n}","\n/**\n * Tells if val is of type \"array\".\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val);\n};\n","\n/**\n * Tells if val is of type \"function\".\n * This holds true for both regular functions and classes.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn typeof val === 'function';\n};\n","\n/**\n * Tells if val is undefined or is null.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === null || val === '';\n};\n","\n/**\n * Tells if val is undefined or is of type \"undefined\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\n};\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"object\".\n * This holds true for anything object, including built-ins.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\n};\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"function\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\n};\n","\n/**\n * Tells if val is of type \"number\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof Number || (typeof val === 'number');\n};\n","\n/**\n * @imports\n */\nimport _isNumber from './isNumber.js';\n/**\n * Tells if val is of type \"string\" or a numeric string.\n * This holds true for both numbers and numeric strings.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\n};\n","\n/**\n * Tells if val is of type \"string\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\n};\n","\n/**\n * Returns THE FIRST ENTRY OR A NUMBER OF ENTRIES counting forward from the begining.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\tvar count = 0;\n\tarr.forEach(itm => {\n\t\tcount ++;\n\t});\n\tvar firsts = arr.slice(arr.length - count, amount);\n\treturn arguments.length > 1 ? firsts : firsts[0];\n};\n","\n/**\n * @imports\n */\nimport _first from './first.js';\n\n/**\n * Returns THE LAST ENTRY OR A NUMBER OF ENTRIES counting forward to the end.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\treturn arguments.length > 1\n\t\t? _first(arr.slice().reverse(), amount).reverse()\n\t\t: _first(arr.slice().reverse());\n};\n","\n/**\n * Adds an item if not already exist.\n *\n * @param array \tarr\n * @param array\t \t...itms\n *\n * @return array\n */\nexport default function(arr, ...items) {\n\titems.forEach(itm => {\n\t\tif (arr.indexOf(itm) < 0) {\n\t\t\tarr.push(itm);\n\t\t}\n\t});\n\treturn arr;\n};\n","\n/**\n * @imports\n */\nimport _pushUnique from '../arr/pushUnique.js';\nimport _getPrototypeChain from './getPrototypeChain.js';\n\n/**\n * Eagerly retrieves object members all down the prototype chain.\n *\n * @param object\t \tobj\n * @param object\t \tuntil\n *\n * @return array\n */\nexport default function(obj, until) {\n\tvar keysAll = [];\n\t_getPrototypeChain(obj, until).forEach(obj => {\n\t\t_pushUnique(keysAll, ...Object.getOwnPropertyNames(obj));\n\t});\n\treturn keysAll;\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the prototype chain.\n *\n * @param object \t\tobj\n * @param object\t \tuntil\n *\n * @return bool\n */\nexport default function(obj, until) {\n\tuntil = until || Object.prototype;\n\tuntil = until && !_isArray(until) ? [until] : until;\n\t// We get the chain of inheritance\n\tvar prototypalChain = [];\n\tvar obj = obj;\n\twhile((obj && (!until || until.indexOf(obj) < 0) && obj.name !== 'default')) {\n\t\tprototypalChain.push(obj);\n\t\tobj = obj ? Object.getPrototypeOf(obj) : null;\n\t}\n\treturn prototypalChain;\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _getAllPropertyNames from './getAllPropertyNames.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function mergeCallback(objs, callback, deepProps = false, isReplace = false, withSymbols = false) {\n\tvar depth = 0;\n\tvar obj1 = objs.shift();\n\tif (_isNumeric(obj1) || obj1 === true || obj1 === false) {\n\t\tdepth = obj1;\n\t\tobj1 = objs.shift();\n\t}\n\tif (!objs.length) {\n\t\tthrow new Error('_merge() requires two or more array/objects.');\n\t}\n\tobjs.forEach((obj2, i) => {\n\t\tif (!_isTypeObject(obj2) && !_isFunction(obj2)) {\n\t\t\treturn;\n\t\t}\n\t\t(deepProps ? _getAllPropertyNames(obj2) : Object.getOwnPropertyNames(obj2)).forEach(key => {\n\t\t\tif (!callback(key, obj1, obj2, i)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar valAtObj1 = obj1[key];\n\t\t\tvar valAtObj2 = obj2[key];\n\t\t\tif (((_isArray(valAtObj1) && _isArray(valAtObj2)) || (_isObject(valAtObj1) && _isObject(valAtObj2))) \n\t\t\t&& (depth === true || depth > 0)) {\n\t\t\t\t// RECURSE...\n\t\t\t\tobj1[key] = _isArray(valAtObj1) && _isArray(valAtObj2) ? [] : {};\n\t\t\t\tmergeCallback([_isNumeric(depth) ? depth - 1 : depth, obj1[key], valAtObj1, valAtObj2], callback, deepProps, isReplace, withSymbols);\n\t\t\t} else {\n\t\t\t\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\t\t\t\tif (isReplace) {\n\t\t\t\t\t\tobj1[key] = valAtObj2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj1.push(valAtObj2);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// In case we're setting a read-only property\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (withSymbols) {\n\t\t\t\t\t\t\tObject.defineProperty(obj1, key, Object.getOwnPropertyDescriptor(obj2, key));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj1[key] = obj2[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\treturn obj1;\n};\n","\n/**\n * @imports\n */\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Loops thru obj flatly with a callback function.\n * Stops when callback returns a non-undefined value.\n *\n * @param array|object \t\t\tobj \t\t\tThe array or object to iterate.\n * @param function \t\t\t\tcallback \t\tThe callback function.\n *\n * @return mixed|null\t\t\tAny non-null return from callback\n */\nexport default function(obj, callback) {\n\tvar returnValue = undefined;\n\tif (_isTypeObject(obj)) {\n\t\tObject.keys(obj).forEach((k, i) => {\n\t\t\tif (returnValue !== false) {\n\t\t\t\treturnValue = callback(_isNumeric(k) ? parseFloat(k) : k, obj[k], i);\n\t\t\t}\n\t\t});\n\t}\n\treturn returnValue;\n};\n","\n/**\n * @imports\n */\nimport _isArray from './isArray.js';\nimport _isFunction from './isFunction.js';\nimport _arrLast from '../arr/last.js';\nimport _mergeCallback from '../obj/mergeCallback.js';\nimport _each from '../obj/each.js';\n\n/**\n * A multi-inheritance implementstion.\n *\n * @param array\t \t...classes\n *\n * @return object\n */\nconst Implementations = new Map;\nexport default function mixin(...classes) {\n\t\n\tvar Traps = {};\n\tvar RetrnDirective = 'last';\n\tif (_isArray(arguments[0])) {\n\t\tclasses = arguments[0];\n\t\tTraps = arguments[1];\n\t\tif (arguments[2]) {\n\t\t\tRetrnDirective = arguments[2];\n\t\t}\n\t}\n\t// -----------------------\n\tvar Base = _arrLast(classes);\n\tvar supersMap = {};\n\t// -----------------------\n\t// Create the Mixin\n\t// ...with a special constructor.\n\t// -----------------------\n\tvar Mixin = class {\n\t\tconstructor(...args) {\n\t\t\tclasses.forEach((_class, i) => {\n\t\t\t\tReflect.construct(_class, args, this.constructor);\n\t\t\t});\n\t\t}\n\t};\n\t// -----------------------\n\t// Implement a special handler of the \"instanceof\" operator.\n\t// -----------------------\n\tclasses.forEach((_class, i) => {\n\t\tif (!Implementations.has(_class)) {\n\t\t\tImplementations.set(_class, []);\n\t\t\ttry {\n\t\t\t\tvar originalInstanceChecker = _class[Symbol.hasInstance];\n\t\t\t\tObject.defineProperty(_class, Symbol.hasInstance, {value: function(instance) {\n\t\t\t\t\tif (originalInstanceChecker.call(this, instance)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (Implementations.has(this)) {\n\t\t\t\t\t\treturn Implementations.get(this).reduce((yes, _mixin) => yes || (instance instanceof _mixin), false);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}});\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error('Cannot mixin the class at index ' + i + '. Class may already have been configured for instance checks somewhere.');\n\t\t\t}\n\t\t}\n\t\tImplementations.get(_class).push(Mixin);\n\t});\n\t// ---------------------\n\t// Mixin both static and instance properties and methods\n\t// ---------------------\n\tclasses.forEach(_class => {\n\t\t// Copy const members\n\t\t_mergeCallback([Mixin, _class], (key, obj1, obj2) => ![\n\t\t\t'name', 'prototype', 'prototypes', 'length', 'caller', 'callee', 'arguments', 'constructor', 'apply', \"bind\", 'call', 'toString',/**/\n\t\t].includes(key), true/*deepProps*/);\n\t\t_mergeCallback([Mixin.prototype, _class.prototype], (key, obj1, obj2) => {\n\t\t\tif (!['prototype', 'prototypes'].includes(key)) {\n\t\t\t\tif (_isFunction(obj2[key])) {\n\t\t\t\t\tif (_isArray(supersMap[key])) {\n\t\t\t\t\t\tsupersMap[key].push(obj2[key]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsupersMap[key] = [obj2[key]];\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}, true/*deepProps*/);\n\t});\n\t// Extend (proxy) methods\n\t_each(supersMap, (name, supers) => {\n\t\tif (name === 'constructor') {\n\t\t\treturn;\n\t\t}\n\t\t// NOTE: this must not be defined as an arrow function\n\t\t// for the benefit of the \"this\".\n\t\tMixin.prototype[name] = function(...args) {\n\t\t\tif (Object.hasOwnProperty(Traps, name) && _isFunction(Traps[name])) {\n\t\t\t\t// Wrap a call to the trap...\n\t\t\t\t// So mixin supers are passed to traps\n\t\t\t\treturn Traps[name].call(this, supers, ...args);\n\t\t\t} else {\n\t\t\t\t// Call each super and return\n\t\t\t\t// the last one's return value\n\t\t\t\tvar supersReturnValues = [];\n\t\t\t\tsupers.forEach(supr => {\n\t\t\t\t\tsupersReturnValues.push(supr.call(this, ...args));\n\t\t\t\t})\n\t\t\t\treturn _arrLast(supersReturnValues);\n\t\t\t}\n\t\t};\n\t});\n\treturn Mixin;\n};","\n/**\n * @imports\n */\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function(...objs) {\n\treturn _mergeCallback(objs, (k, obj1, obj2) => {\n\t\treturn true;\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n","\n/**\n * Returns the index of subset array \"b\" in array \"a\".\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last\n * \n * @returns Int\n */\nexport default function indexOfSet(a, b, fromInex = null, last = false) {\n if (b.length > a.length) return -1;\n\treturn (typeof fromInex === 'number' ? (last ? a.slice(0, (fromInex + 1) + (fromInex < 0 ? a.length : 0)) : a.slice(fromInex)) : a).reduce((cursors, value, i) => {\n var [ index, cursorA, cursorB ] = cursors;\n if (!last && index > -1) {\n return [index, cursorA, cursorB];\n }\n var _cursorB = cursorB + 1;\n var _cursors = value === b[_cursorB] ? (_cursorB === 0 ? [i, 0] : [cursorA, _cursorB]) : [-1, -1];\n if (_cursors[1] === b.length - 1) {\n // Reset B cursor\n _cursors[1] = -1;\n if (_cursors[0] > -1) {\n return [_cursors[0]].concat(_cursors);\n }\n }\n return [index].concat(_cursors);\n }, [-1, -1, -1])[0] + (last || typeof fromInex !== 'number' ? 0 : (fromInex > -1 ? fromInex : a.length - fromInex));\n}","\n/**\n * @imports\n */\nimport _after from '../str/after.js';\nimport _indexOfSet from './indexOfSet.js';\n\n/**\n * Returns members of array \"a\" after the array \"b\" subset.\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last \n * \n * @returns Bool\n */\nexport default function after(a, b, fromInex = null, last = false) {\n\tvar subsetIndex = _indexOfSet(a, b, fromInex, last);\n\treturn subsetIndex === -1 ? [] : a.slice(subsetIndex + b.length);\n}","\n/**\n * @imports\n */\nimport _isUndefined from '../js/isUndefined.js';\nimport _isFunction from '../js/isFunction.js';\n\n/**\n * 1. Returns the ENTRY following (either the FIRST or the LAST instance of) the reference.\n * 2. Returns A NUMBER OF ENTRIES counting forwards from (either the FIRST or the LAST instance of) the given reference.\n *\n * @param array \t\tarr\n * @param mixed\t \t\treference\n * @param int|bool \t\tlength\n * @param bool|function\t loop\n * @param bool\t \t\tlastReference\n *\n * @return mixed|array\n */\nexport default function(arr, reference, length = false, loop = false, lastReference = false) {\n\tif (arr.indexOf(reference) === -1) {\n\t\treturn length ? [] : undefined;\n\t}\n\tvar amount = length === true ? arr.length - 1 : (length === false ? 1 : length);\n\tvar from = lastReference ? arr.lastIndexOf(reference) + 1 : arr.indexOf(reference) + 1;\n\tvar after = !_isUndefined(reference) ? arr.slice(from, from + amount) : [];\n\tif (loop && after.length < amount && after.length < arr.length) {\n\t\tif (!_isFunction(loop) || loop(amount - after.length)) {\n\t\t\tafter = after.concat(arr.slice(0, amount - after.length));\n\t\t}\n\t};\n\treturn length ? after : after[0];\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isTypeArray from '../js/isTypeArray.js';\nimport _isEmpty from '../js/isEmpty.js';\nimport _isObject from '../js/isObject.js';\n\n/**\n * Casts an array-like object to an array.\n *\n * @param mixed \tval\n * @param bool\t \tcastObject\n *\n * @return array\n */\nexport default function(val, castObject = true) {\n\tif (_isArray(val)) {\n\t\treturn val;\n\t};\n\tif (!castObject && _isObject(val)) {\n\t\treturn [val];\n\t};\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\n\t\treturn [];\n\t};\n\tif (_isTypeArray(val)) {\n\t\treturn Array.prototype.slice.call(val);\n\t};\n\tif (_isObject(val)) {\n\t\treturn Object.values(val);\n\t};\n\treturn [val];\n};\n","\n/**\n * @imports\n */\nimport _isNull from './isNull.js';\nimport _isUndefined from './isUndefined.js';\nimport _isTypeObject from './isTypeObject.js';\n\n/**\n * Tells if val is empty in its own type.\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\n * objects without keys, empty arrays.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\n};\n","\n/**\n * @imports\n */\nimport _isString from './isString.js';\nimport _isUndefined from './isUndefined.js';\n\n/**\n * Tells if val is \"array-like\".\n * This holds true for anything that has a length property.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !_isString(val) && !_isUndefined(val.length);\n};\n","\n/**\n * Tells if two arrays are shallow equals.\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe\n * \n * @returns Bool\n */\nexport default function equals(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? a.join('.') === b.join('.') \n\t\t: a.length === b.length && a.reduce((prev, value, i) => prev && value === b[i], true);\n}","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Flattens a nested array to the given depth.\n *\n * @param array \tarr\n * @param int \t \tdepth\n * @param bool \t \twithObjects\n *\n * @return array\n */\nconst _flatten = function(arr, depth = 1, withObjects = true) {\n\tif (!_isNumeric(depth) || depth <= 0) {\n\t\treturn arr;\n\t};\n\tif (!_isArray(arr) && _isObject(arr) && withObjects) {\n\t\tarr = Object.values(arr);\n\t};\n\tif (!_isArray(arr)) {\n\t\treturn arr;\n\t};\n\treturn arr.reduce((acc, val) => _isArray(val) || (_isObject(val) && withObjects) \n\t\t? acc.concat(_flatten(!_isArray(val) ? Object.values(val) : val, depth - 1, withObjects)) \n\t\t: acc.concat(val), []);\n};\n\n/**\n * @exports\n */\nexport default _flatten;","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the intersection of two arrays;\n * optionally using a custom matching function.\n *\n * @param array \tarr\n * @param array\t \tarr2\n * @param function \tcallback\n *\n * @return array\n */\nexport default function(arr, arr2, callback = null) {\n\treturn !_isArray(arr2) ? [] : arr.filter(val1 => callback \n\t\t? arr2.filter(val2 => callback(val1, val2)).length \n\t\t: arr2.indexOf(val1) !== -1\n\t);\n};\n","\n/**\n * Tells if the array \"a\" starts with array \"b\".\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe \n * \n * @returns Bool\n */\nexport default function startsWith(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? (a.join('.') + '.').startsWith(b.join('.') + '.') \n\t\t: b.reduce((prev, value, i) => prev && value === a[i], true);\n}","\n/**\n * @imports\n */\nimport { _isArray } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _all } from '@webqit/util/arr/index.js';\n\n\n/**\n * Returns paths in 2-dimensional form.\n * \n * - key => [ [key] ]\n * - [key] => [ [key] ]\n * - [key, key2] => [ [key, key2] ]\n * - [ [key] ] => [ [key] ]\n * - [ [key1, key2] ] => [ [key1, key2] ]\n * \n * @param Array|String paths\n * \n * @return Array\n */\nexport function paths2D(paths) {\n\treturn (pathsIs2D(paths) ? paths : (_arrFrom(paths).length ? [paths] : []))\n\t\t.reduce((multiple, path) => multiple.concat([_arrFrom(path)]), [])\n\t\t.map(path => DotSafePath.resolve(path));\n}\nexport class DotSafePath extends Array {\n\tstatic resolve(path) {\n\t\t// Note the concat() below...\n\t\t// the spread operator: new DotSafePath(...path) doesn't work when path is [0].\n\t\treturn path.every(v => !(v + '').includes('.')) ? (new DotSafePath).concat(path) : path;\n\t}\n\tget dotSafe() { return true }\n}\n\n/**\n * OTHER HELPERS\n */\n\nexport function pathsIs2D(paths) {\n\treturn _arrFrom(paths).reduce((yes, path) => yes || _isArray(path), false);\n}\nexport function pathsIsDynamic(pathArray) {\n\t// Note that trying to simply match empty slots, as in: pathArray.filter(seg => !seg && seg !== 0).length\n\t// doesn't work when the empty slots are really empty slote, as in: [ 'key', <1 empty item> ]\n\treturn pathArray.filter(seg => seg || seg === 0).length !== pathArray.length;\n}\nexport function paths2DIsDynamic(paths) {\n\treturn paths.filter(pathArray => pathsIsDynamic(_arrFrom(pathArray))).length > 0;\n}\n\n","\n/**\n * @imports\n */\nimport { _isTypeObject, _isFunction, _getType, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\nimport { paths2D } from './utils.js'\n\n/**\n * ---------------------------\n * The Firebase class\n * ---------------------------\n */\n\nexport default class Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tthis.target = target;\n\t\tthis.fireables = [];\n\t\tthis.currentlyFiring = [];\n\t}\n\t\n\t/**\n\t * Adds an Fireable instance\n\t * with optional tags.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return Fireable\n\t */\n\tadd(fireable) {\n\t\tthis.fireables.push(fireable);\n\t\treturn fireable;\n\t}\n\t\n\t/**\n\t * Removes fireables by instance.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return void\n\t */\n\tremove(fireable) {\n\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t}\n\t\n\t/**\n\t * Removes fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tremoveMatches(dfn) {\n\t\tthis.match(dfn).forEach(fireable => {\n\t\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t\t});\n\t}\n\t\n\t/**\n\t * Finds fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return array\n\t */\n\tmatch(dfn) {\n\t\treturn this.fireables.filter(fireable => {\n\t\t\tvar fireableFilter = paths2D(fireable.filter);\n\t\t\tvar fireableTags = _arrFrom((fireable.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\tvar dfnFilter = paths2D(dfn.filter);\n\t\t\tvar dfnTags = _arrFrom((dfn.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\treturn (!dfn.originalHandler || fireable.handler === dfn.originalHandler)\n\t\t\t\t&& (!dfnFilter.length || _arrEquals(dfnFilter, fireableFilter))\n\t\t\t\t&& (!dfnTags.length || (dfnTags.length === fireableTags.length && _intersect(fireableTags, dfnTags).length === dfnTags.length));\n\t\t});\n\t}\n\t\t\n\t/**\n\t * Returns a observer-specific object embedded on an element.\n\t *\n\t * @param string\t\ttype\n\t * @param array|object\ttarget\n\t * @param bool \tcreateIfNotExists\n\t * @param string \tnamespace\n\t *\n\t * @return Firebase\n\t */\n\tstatic _getFirebase(type, target, createIfNotExists = true, namespace = this.__namespace) {\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Subject must be of type object; \"' + _getType(target) + '\" given!');\n\t\t}\n\t\tvar ImplementationClass = this;\n\t\tif (namespace && globalThis.WebQitObserverNamespaceRegistry.has(type + '-' + namespace)) {\n\t\t\tImplementationClass = globalThis.WebQitObserverNamespaceRegistry.get(type + '-' + namespace);\n\t\t\ttype += '-' + namespace\n\t\t}\n\t\tif (!_internals(target, 'firebases').has(type) && createIfNotExists) {\n\t\t\t_internals(target, 'firebases').set(type, new ImplementationClass(target));\n\t\t}\n\t\treturn _internals(target, 'firebases').get(type);\n\t}\n\n\t/**\n\t * Extend a Fireable Class with a namespace.\n\t *\n\t * @param string\t\tnamespace\n\t * @param class \tImplementationClass\n\t *\n\t * @return void|class\n\t */\n\tstatic _namespace(type, namespace, ImplementationClass = null) {\n\t\ttype += '-' + namespace;\n\t\tif (arguments.length === 2) {\n\t\t\treturn globalThis.WebQitObserverNamespaceRegistry.get(type);\n\t\t}\n\t\tif (!(ImplementationClass.prototype instanceof this)) {\n\t\t\tthrow new Error(`The implementation of the namespace ${this.name}.${namespace} must be a subclass of ${this.name}.`);\n\t\t}\n\t\tglobalThis.WebQitObserverNamespaceRegistry.set(type, ImplementationClass);\n\t\tImplementationClass.__namespace = namespace;\n\t}\n}\n\nif (!globalThis.WebQitObserverNamespaceRegistry) {\n\tglobalThis.WebQitObserverNamespaceRegistry = new Map();\n}\n","\n/**\n * ---------------------------\n * The Fireable class\n * ---------------------------\n */\n\nexport default class Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object|array\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tthis.handler = dfn.handler;\n\t\tthis.filter = dfn.filter;\n\t\tthis.params = dfn.params;\n\n\t}\n\n\t/**\n\t * Sets a \"disconnected\" flag on the Fireable.\n\t *\n\t * @return void\n\t */\n\tdisconnect() {\n\t\tthis.disconnected = true;\n\t}\n}","\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _intersect } from '@webqit/util/arr/index.js';\nimport Fireable from './Fireable.js';\n\n/**\n * ---------------------------\n * The Trap class\n * ---------------------------\n */\n\nexport default class Interceptor extends Fireable {\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's fields.\n\t *\n\t * @param Event\t\t\t \t\t\tevent\n\t * @param function\t\t\t\t\tnext\n\t * @param mixed\t\t\t\t\t \trecieved\n\t *\n\t * @return void\n\t */\n\tfire(event, next, recieved) {\n\t\tif (this.disconnected || (this.filter && !_intersect(_arrFrom(this.filter), [event.type]).length)) {\n\t\t\treturn next(...Array.prototype.slice.call(arguments, 2));\n\t\t}\n\t\treturn this.handler(event, recieved, next);\n\t}\n}","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isBoolean from '../js/isBoolean.js';\nimport _each from './each.js';\n\n/**\n * Gets the match(es) between (members of) two values;\n * assertion optionally custom.\n *\n * @param mixed \t\t\tob1\n * @param mixed \t\t\tobj2\n * @param string|function\tassertion\n * @param bool\t\t\t\tnetComparison\n * @param bool\t\t\t\tcontrast\n * @param bool\t\t\t\treturnOnFirstFalse\n *\n * @return bool|array|object\n */\nexport default function(obj1, obj2, assertion = true, netComparison = true, contrast = false, returnOnFirstFalse = false) {\n\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\tvar result = [];\n\t\tvar contn = true;\n\t\tobj1.forEach(v1 => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = false;\n\t\t\t_each(obj2, (k, v2) => {\n\t\t\t\tif (!testPass || (netComparison && _isTypeObject(v1))) {\n\t\t\t\t\ttestPass = assertion(v1, v2);\n\t\t\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\t\t\ttestPass = false;\n\t\t\t\t\t}\n\t\t\t\t\tif (_isTypeObject(testPass) && netComparison) {\n\t\t\t\t\t\t// Further recursions should use this testPass as v1\n\t\t\t\t\t\tv1 = testPass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult.push(netComparison ? testPass : v1);\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult.push(testPass);\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult.push(v1);\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\t\n\tif (_isObject(obj1) && _isObject(obj2)) {\n\t\tvar result = {};\n\t\tvar contn = true;\n\t\tObject.keys(obj1).forEach(k => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = assertion(obj1[k], obj2[k]);\n\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\ttestPass = false;\n\t\t\t}\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult[k] = netComparison ? testPass : obj1[k];\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult[k] = testPass;\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult[k] = obj1[k];\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Copies an object.\n *\n * @param object\t \tobj\n * @param array\t\t \tfilter\n *\n * @return object\n */\nexport default function(obj, filter = [], withSymbols = true) {\n\tvar depth = 0;\n\tif (_isNumeric(arguments[0]) && _isTypeObject(arguments[1])) {\n\t\tdepth = arguments[0];\n\t\tobj = arguments[1];\n\t\tfilter = arguments[2] || [];\n\t}\n\treturn _mergeCallback([depth, {}, obj], (key, obj1, obj2) => {\n\t\treturn _isFunction(filter) ? filter(key) \n\t\t\t: (_isArray(filter) && filter.length ? filter.indexOf(key) > -1 : true);\n\t}, false/*deepProps*/, false/*isReplace*/, withSymbols);\n};\n","\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Action {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.type) {\n\t\t\tthrow new Error('Action type must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tObject.seal(this);\n\t}\n}","\n/**\n * @imports\n */\nimport Firebase from './Firebase.js';\nimport Interceptor from './Interceptor.js';\nimport Action from './Action.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Interceptors extends Firebase {\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Interceptor(this.target, dfn));\n\t}\n\n\t/**\n\t * Fires all interceptors with the given action.\n\t *\n\t * @param Action\t\t\taction\n\t * @param function\t\t\tdefaultHandler\n\t *\n\t * @return mixed\n\t */\n\tfire(action, defaultHandler = null) {\n\t\tif (!(action instanceof Action)) {\n\t\t\taction = new Action(this.target, action);\n\t\t}\n\t\tif (this.currentlyFiring.filter(a => a.type === action.type && a.name === action.name).length) {\n\t\t\treturn defaultHandler ? defaultHandler() : undefined;\n\t\t}\n\t\tthis.currentlyFiring.push(action);\n\t\tconst next = (index, ..._args) => {\n\t\t\tvar interceptor = this.fireables[index];\n\t\t\tif (interceptor) {\n\t\t\t\treturn interceptor.fire(action, (...args) => {\n\t\t\t\t\treturn next(index + 1, ...args);\n\t\t\t\t}/*next*/, ..._args);\n\t\t\t}\n\t\t\treturn defaultHandler ? defaultHandler(..._args) : _args[0];\n\t\t};\n\t\tvar value = next(0);\n\t\tthis.currentlyFiring.pop();\n\t\treturn value;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('interceptor', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('interceptor', ...arguments);\n\t}\n}","\n/**\n * @imports\n */\nimport { _internals } from '@webqit/util/js/index.js';\n\n/**\n * Returns the original object earlier proxied by proxy().\n *\n * @param Proxy|Any\t\ttarget\n *\n * @return Any\n */\nexport default function(target) {\n // Proxy targets are mapped to their own instances internally\n return _internals(target, false).get(target) || target;\n}\n","\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a Reflect operation of the specified type.\n *\n * @param string\t\ttype\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(type, target, payload = {}, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\t// Execute any \"keys\" traps, otherwise \"test\" the default way\n\tvar interceptors, defaultHandler = function(_val) {\n\t\treturn arguments.length ? _val : Reflect[type](target, ...Object.values(payload));\n\t};\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\treturn interceptors.fire({ type, ...payload }, defaultHandler);\n\t}\n\treturn defaultHandler();\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs an \"apply\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tthisArgument\n * @param array\t\t\targumentsList\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, thisArgument, argumentsList, params = {}) {\n\treturn _exec('apply', target, { thisArgument, argumentsList }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"construct\" operation on a target.\n *\n * @param array|object\ttarget\n * @param array\t\t\targumentsList\n * @param object\t\tnewTarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, argumentsList, newTarget = null, params = {}) {\n\treturn _exec('construct', target, arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, params);\n}\n","\n/**\n * @imports\n */\nimport { _isUndefined, _isObject } from '@webqit/util/js/index.js';\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The Event class\n * ---------------------------\n */\n\nexport default class Event {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return void\n\t */\n\tconstructor(target, cancellable = false) {\n\t\tthis._ = {};\n\t\tthis._.target = target;\n\t\tthis._.cancellable = cancellable;\n\t\tthis._.propagationStopped = false;\n\t\tthis._.defaultPrevented = false;\n\t\tthis._.promisesInstance = null;\n\t\tthis._.promises = [];\n\t}\n\n\t/**\n\t * Gets the \"target\" object.\n\t *\n\t * @return array|object\n\t */\n\tget target() {\n\t\treturn this._.target;\n\t}\n\n\t/**\n\t * Gets the \"cancellable\" flag.\n\t *\n\t * @return bool\n\t */\n\tget cancellable() {\n\t\treturn this._.cancellable;\n\t}\n\n\t/**\n\t * -----------------------\n\t * RESPONSE HANDLERS\n\t * -----------------------\n\t */\n\n\t/**\n\t * Stops the evnt from reaching other listeners.\n\t *\n\t * @return bool\n\t */\n\tstopPropagation() {\n\t\tthis._.propagationStopped = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if stopPropagation() has been called.\n\t *\n\t * @return bool\n\t */\n\tget propagationStopped() {\n\t\treturn this._.propagationStopped;\n\t}\n\t\t\n\t/**\n\t * Sets a disposition that asks event initiator not to\n\t * proceed with default action.\n\t *\n\t * @return void\n\t */\n\tpreventDefault() {\n\t\tthis._.defaultPrevented = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if preventDefault() has been called.\n\t *\n\t * @return bool\n\t */\n\tget defaultPrevented() {\n\t\treturn this._.defaultPrevented;\n\t}\n\t\t\n\t/**\n\t * Sets a Promise disposition.\n\t *\n\t * @param Promise\tpromise\n\t *\n\t * @return void\n\t */\n\twaitUntil(promise) {\n\t\tif (promise instanceof Promise) {\n\t\t\tthis._.promises.push(promise);\n\t\t\tthis._.promisesInstance = null;\n\t\t}\n\t}\n\t\t\n\t/**\n\t * (Readonly) returns all promises.\n\t *\n\t * @return Promise|null\n\t */\n\tget promises() {\n\t\tif (!this._.promisesInstance && this._.promises.length) {\n\t\t\tthis._.promisesInstance = Promise.all(this._.promises);\n\t\t}\n\t\treturn this._.promisesInstance;\n\t}\n\t\t\n\t/**\n\t * Evaluates the given disposition value and\n\t * calls an appropriate disposition method.\n\t *\n\t * @params mixed \trspns\n\t *\n\t * @return void\n\t */\n\trespondWith(rspns) {\n\t\tvar proms;\n\t\tvar isEvent = _isObject(rspns) && !_isUndefined(rspns.propagationStopped) && !_isUndefined(rspns.defaultPrevented)\n\t\tif ((rspns === false) || (isEvent && rspns.propagationStopped)) {\n\t\t\tthis.stopPropagation();\n\t\t} else if ((rspns === false) || (isEvent && rspns.defaultPrevented)) {\n\t\t\tthis.preventDefault();\n\t\t} else if ((rspns instanceof Promise && (proms = rspns))\n\t\t|| (isEvent && (proms = rspns.promises))) {\n\t\t\tthis.waitUntil(proms);\n\t\t}\n\t}\n}","\n/**\n * @imports\n */\nimport {\n\t_after as _arrAfter, _startsWith as _arrStartsWith,\n\t_any, _equals as _arrEquals,\n} from '@webqit/util/arr/index.js';\nimport { _isNumeric, _isFunction, _isObject } from '@webqit/util/js/index.js';\nimport { paths2D, pathsIs2D, pathsIsDynamic, paths2DIsDynamic } from './utils.js'\nimport Fireable from './Fireable.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Observer class\n * ---------------------------\n */\n\nexport default class Observer extends Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tsuper(target, dfn);\n\t\t// The rest of this code is designed for a 2-dimensional array.\n\t\tthis.filters2D = paths2D(this.filter);\n\t\tthis.filtersIsOriginally2D = pathsIs2D(this.filter);\n\t\tthis.filtersIsDynamic = paths2DIsDynamic(this.filters2D);\n\t\tif (this.filtersIsDynamic && this.filters2D.length > 1) {\n\t\t\tthrow new Error('Only one \"Dynamic Filter\" must be observed at a time! \"' + this.filters2D.map(pathArray => '[' + pathArray.join(', ') + ']').join(', ') + '\" have been bound together.');\n\t\t}\n\t}\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's filter.\n\t *\n\t * @param array\t\t\t \tchanges\n\t *\n\t * @return void\n\t */\n\tfire(changes) {\n\t\tif (this.disconnected || (this.params.type && !_any(changes, delta => this.params.type === delta.type))) {\n\t\t\treturn;\n\t\t}\n\t\tconst diff = delta => !['set', 'def'].includes(delta.type) || (\n\t\t\t!this.params.diff || (_isFunction(this.params.diff) ? this.params.diff(delta.value, delta.oldValue) : delta.value !== delta.oldValue)\n\t\t);\n\t\tvar evt = new Event(this.target);\n\t\tif (this.filters2D.length) {\n\t\t\tvar matches = changes.filter(delta => {\n\t\t\t\t// one observerPathArray can turn out to be two if dynamic\n\t\t\t\t// OR evt.originatingFields is multiple and this.params.subtree\n\t\t\t\treturn this.filters2D.filter((observerPathArray, i) => {\n\t\t\t\t\tvar observerPathArray_Resolved = observerPathArray.slice();\n\t\t\t\t\tif (this.filtersIsDynamic) {\n\t\t\t\t\t\t// Note that if we had tried to loop thru observerPathArray_Resolved,\n\t\t\t\t\t\t// we wouldn't be able tp access slots that are truly empty, as in: [ 'key', <1 empty item> ]\n\t\t\t\t\t\tdelta.path.forEach((_seg, i) => {\n\t\t\t\t\t\t\tobserverPathArray_Resolved[i] = observerPathArray_Resolved[i] || observerPathArray_Resolved[i] === 0 \n\t\t\t\t\t\t\t\t? observerPathArray_Resolved[i]\n\t\t\t\t\t\t\t\t: _seg;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn (!this.filtersIsDynamic || !pathsIsDynamic(observerPathArray_Resolved)) && diff(delta) && ((!this.params.subtree && _arrEquals(observerPathArray_Resolved, delta.path))\n\t\t\t\t\t\t|| (this.params.suptree && _arrStartsWith(observerPathArray_Resolved, delta.path) && (!_isNumeric(this.params.suptree) || _arrAfter(observerPathArray_Resolved, delta.path).length <= this.params.suptree))\n\t\t\t\t\t\t|| (this.params.subtree && delta.path.length >= observerPathArray_Resolved.length && _arrStartsWith(delta.path, observerPathArray_Resolved) && (!_isNumeric(this.params.subtree) || _arrAfter(delta.path, observerPathArray_Resolved).length <= this.params.subtree))\n\t\t\t\t\t);\n\t\t\t\t}).length;\n\t\t\t});\n\t\t\tif (matches.length) {\n\t\t\t\tif (this.filtersIsOriginally2D || this.params.subtree) {\n\t\t\t\t\tvar changesObject = matches;\n\t\t\t\t\tif (_isObject(this.filter)) {\n\t\t\t\t\t\tchangesObject = {...this.filter};\n\t\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\t\tchangesObject[e.name] = e;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tevt.respondWith(this.handler(changesObject, evt));\n\t\t\t\t} else {\n\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\tevt.respondWith(this.handler(e, evt));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((this.params.subtree || changes.filter(delta => _arrEquals(delta.path, [delta.name])).length === changes.length) && changes.filter(delta => diff(delta)).length) {\n\t\t\tevt.respondWith(this.handler(changes, evt));\n\t\t}\n\t\treturn evt;\n\t}\n}\n","\n/**\n * Tells if ANY items pass the test.\n *\n * @param array \tarr\n * @param function \tcallback\n *\n * @return bool\n */\nexport default function(arr, callback) {\n\treturn arr.reduce((prevTest, itm, i) => prevTest || callback(itm, i), false);\n};\n","\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\nimport { DotSafePath } from './utils.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Mutation {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.originalSubject) {\n\t\t\tthis.originalSubject = target;\n\t\t}\n\t\tif (!('type' in dfn)) {\n\t\t\tthrow new Error('Mutation type must be given in definition!');\n\t\t}\n\t\tif (!('name' in dfn)) {\n\t\t\tthrow new Error('Property name must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tif (key === 'path') {\n\t\t\t\tvalue = DotSafePath.resolve(value);\n\t\t\t}\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tif (!this.path) {\n\t\t\tObject.defineProperty(this, 'path', {value: DotSafePath.resolve([dfn.name]), enumerable:true});\n\t\t}\n\t\tObject.seal(this);\n\t}\n}","\n/**\n * @imports\n */\nimport { _from as _arrFrom, _remove, _last } from '@webqit/util/arr/index.js';\nimport Firebase from './Firebase.js';\nimport Observer from './Observer.js';\nimport Mutation from './Mutation.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Observers extends Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tsuper(target);\n\t\tthis.buffers = [];\n\t}\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Observer(this.target, dfn));\n\t}\n\t\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param array|Mutation\t\tchanges\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return Event\n\t */\n\tfire(changes, cancellable) {\n\t\tvar evt = new Event(this.target, cancellable);\n\t\t// We accept multiple changes\n\t\tchanges = _arrFrom(changes, false).map(delta => !(delta instanceof Mutation) ? new Mutation(this.target, delta) : delta);\n\t\tif (this.buffers.length) {\n\t\t\t_last(this.buffers)(changes);\n\t\t\treturn evt;\n\t\t}\n\t\tif (this.currentlyFiring.filter(d => changes.filter(delta => d.type === delta.type && d.name === delta.name).length).length) {\n\t\t\t//return false;\n\t\t}\n\t\t//this.currentlyFiring.push(...changes);\n\t\tthis.fireables.forEach(observer => {\n\t\t\tif (evt.propagationStopped && cancellable) {\n\t\t\t\treturn evt;\n\t\t\t}\n\t\t\tevt.respondWith(observer.fire(changes));\n\t\t});\n\t\t//changes.forEach(delta => _remove(this.currentlyFiring, delta));\n\t\treturn evt;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('observer', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('observer', ...arguments);\n\t}\n}","\n/**\n * @imports\n */\nimport {\n\t_isArray, _isNumeric, _isClass,\n\t_isFunction, _isTypeObject, _internals\n} from '@webqit/util/js/index.js';\nimport { _from as _objFrom } from '@webqit/util/obj/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a \"get\" operation on a target.\n * Fires any such query observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return mixed\n */\nexport default function(target, keys, receiver = null, params = {}) {\n\ttarget = receiver || target;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\tvar _keys = _arrFrom(keys);\n\tvar values = _keys.map(key => {\n\t\t// Execute any \"get\" traps, otherwise \"get\" the default way\n\t\tvar interceptors, defaultGet = function(_value) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _value;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).get();\n\t\t\t}\n\t\t\treturn receiver \n\t\t\t\t? Reflect.get(target, key, receiver) \n\t\t\t\t: Reflect.get(target, key);\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, true, params.namespace)) {\n\t\t\treturn interceptors.fire({type:'get', name: key, related: _keys, receiver}, defaultGet);\n\t\t}\n\t\treturn defaultGet();\n\t});\n\t// ---------------------------------\n\treturn _isArray(keys) ? values : values[0];\n}\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Adds an observer to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\thandler\n * @param object\t\t\t\t\tparams\n *\n * @return Observer\n */\nexport default function(target, filter, handler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? handler : {};\n\t\thandler = filter;\n\t\tfilter = null;\n\t}\n\tif (!_isFunction(handler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar existing, observers = Observers.getFirebase(target, true, params.namespace);\n\tvar dfn = {filter, handler, params,};\n\tif (dfn.filter || dfn.params.subtree === '*' || (dfn.params.subtree && isUserObject(target))) {\n\t\tbuild(target, dfn.filter, dfn.params.subtree, params.namespace);\n\t}\n\tif (dfn.params.unique && (existing = observers.match({filter, params})).length) {\n\t\tif (dfn.params.unique !== 'replace') {\n\t\t\treturn existing[0];\n\t\t}\n\t\tobservers.remove(existing[0]);\n\t}\n\treturn observers.add(dfn);\n}\n","\n/**\n * @imports\n */\nimport { _each, _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Mutation from '../core/Mutation.js';\nimport Observers from '../core/Observers.js';\nimport observe from '../reactions/observe.js';\n\n/**\n * Bubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tvalue\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tif (target === value) {\n\t\treturn;\n\t}\n\tvar observers;\n\tobserve(value, (changes, eventObject) => {\n\t\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\t\tvar _changes = changes.map(delta => {\n\t\t\t\t// ------------\n\t\t\t\t// Recursive events must not propagate\n\t\t\t\t// ------------\n\t\t\t\tvar d = delta;\n\t\t\t\tdo {\n\t\t\t\t\tif (d.target === target) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} while(d = d.src);\n\t\t\t\t// ------------\n\t\t\t\t// Create propagation\n\t\t\t\t// ------------\n\t\t\t\tvar dfn = {}; _each(delta, (key, value) => {\n\t\t\t\t\tif (key !== 'target' && key !== 'name' && key !== 'path' && key !== 'src') {\n\t\t\t\t\t\tdfn[key] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdfn.name = field;\n\t\t\t\tdfn.path = [field].concat(delta.path);\n\t\t\t\tdfn.originalSubject = delta.originalSubject;\n\t\t\t\tdfn.src = delta;\n\t\t\t\treturn new Mutation(target, dfn);\n\t\t\t}).filter(c => c);\n\t\t\tif (_changes.length) {\n\t\t\t\treturn observers.fire(_changes, eventObject.cancellable);\n\t\t\t}\n\t\t}\n\t}, {subtree: true, ...params, unique: true, tags: [linkTag, field, target]});\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'set',\n\t\t\tvalue,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tlet eventObject = observers.fire(_event, params.cancellable);\n\t\tif (params.eventTypeReturn) {\n\t\t\treturn eventObject;\n\t\t}\n\t}\n}\n\n/**\n * @var object\n */\nexport const linkTag = {};","\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _before, _after } from '@webqit/util/str/index.js';\nimport { paths2D } from '../core/utils.js';\nimport Observers from '../core/Observers.js';\nimport _get from '../actions/get.js';\nimport link from './link.js';\n\n/**\n * Recursively \"connects\" an object's members to the object\n * for observer actions.\n *\n * @param array|object\ttarget\n * @param string|array\tpaths\n * @param bool\t\t\tsubtree\n * @param String\t\tnamespace\n *\n * @return void\n */\nexport default function build(target, paths = null, subtree = false, namespace = null) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tvar observers = Observers.getFirebase(target, true, namespace);\n\tif (!observers || observers.build) {\n\t\treturn;\n\t}\n\tobservers.build = subtree;\n\t// ---------------------------------\n\t// For paths2D, refer to the comments at class Observer.\n\tvar _paths2D = paths2D(paths);\n\t// If any path starts with a dot, (a wild card path), all keys at this level is implied\n\tvar rootLevelKeysToObserve = !_paths2D.length || _paths2D.filter(path => /*Starts with an empty segment*/!path[0] && path[0] !== 0).length\n\t\t? Object.keys(target)\n\t\t: _paths2D.map(path => path[0]);\n\tvar subLevelKeysToObserve = _paths2D.length ? _paths2D.map(path => path.slice(1)).filter(p => p.length) : null;\n\tobservers.subBuild = subLevelKeysToObserve && subLevelKeysToObserve.length ? subLevelKeysToObserve : null;\n\trootLevelKeysToObserve.forEach(key => {\n\t\tvar value = _get(target, key, null, { namespace });\n\t\ttry {\n\t\t\tif (_isTypeObject(value)) {\n\t\t\t\tlink(target, key, value, null, params);\n\t\t\t\tif ((observers.subBuild && isUserObject(value)) \n\t\t\t\t|| (_isFunction(subtree) ? subtree(value) : (subtree && isUserObject(value)))) {\n\t\t\t\t\tbuild(value, observers.subBuild, subtree, namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch(e) {/* instanceof-ing certain primitives may throw */}\n\t});\n}\n\n/**\n * Tells if an object if a User Object.\n * \n * @param Object value\n * \n * @return Bool\n */\nexport const isUserObject = value => ((value instanceof Object) || (value instanceof Array) || (value instanceof Function))\n\t&& (typeof window === 'undefined' || value !== window);\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Removes observers from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\toriginalHandler\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, filter, originalHandler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? originalHandler : {};\n\t\toriginalHandler = filter;\n\t\tfilter = null;\n\t}\n\tif (originalHandler && !_isFunction(originalHandler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(originalHandler) + '\" given!');\n\t}\n\tvar observers;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\treturn observers.removeMatches({filter, originalHandler, params});\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Observers from '../core/Observers.js';\nimport unobserve from '../reactions/unobserve.js';\nimport { linkTag } from './link.js';\n\n/**\n * Unbubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tobject\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tunobserve(value, null, null, {...params, tags:[linkTag, field, target]});\n\tvar observers;\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'del',\n\t\t\toldValue: value,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tobservers.fire(_event, params.cancellable);\n\t}\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"has\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string\t\tname\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('has', target, { name }, params);\n}\n","\n/**\n * @imports\n */\nimport {\n\t_isObject, _isTypeObject, _internals,\n\t_isNumber, _isArray, _isString\n} from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"_setProp\" type of operation on a target.\n * Fires any observers for the specific type that may be bound to target.\n *\n * @param bool\t\t\tdefine\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param Object\t\tparams\n *\n * @return Event\n */\nexport default function(define, target, payload, params = {}) {\n\ttarget = payload.receiver || target;\n\tvar keysOrPayload = payload.keysOrPayload;\n\tvar value = payload.value;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tif (_isObject(keysOrPayload)) {\n\t\tparams = value || {};\n\t\tvalue = null;\n\t}\n\t// ----------\n\ttarget = _unproxy(target);\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace),\n\t\tobservers = Observers.getFirebase(target, false, params.namespace);\n\t// ----------\n\tconst handleSet = (key, value, related, detail) => {\n\t\tvar type = 'set', descriptor;\n\t\tif (define) {\n\t\t\ttype = 'defineProperty';\n\t\t\tdescriptor = value || {};\n\t\t\tvalue = descriptor.value;\n\t\t}\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar isUpdate = false, oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\tisUpdate = true;\n\t\t\toldValue = _get(target, key, payload.receiver, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\treceiver: payload.receiver,\n\t\t\trelated,\n\t\t\tdetail,\n\t\t\tisUpdate,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// The set operation\n\t\tvar defaultSet = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\tif (descriptor) {\n\t\t\t\t\tdescriptor = _success;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = _success;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (descriptor) {\n\t\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(target, key, descriptor);\n\t\t\t} else if (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).set(value);\n\t\t\t}\n\t\t\ttarget[key] = value;\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors) {\n\t\t\tvar eventObject = descriptor \n\t\t\t\t? {type: 'defineProperty', name: key, descriptor, receiver: payload.receiver, related, detail, isUpdate, oldValue} \n\t\t\t\t: {type: 'set', name: key, value, receiver: payload.receiver, related, detail, isUpdate, oldValue};\n\t\t\te.success = interceptors.fire(eventObject, defaultSet);\n\t\t} else {\n\t\t\te.success = defaultSet();\n\t\t}\n\t\t// ---------------------------------\n\t\tif (e.success && e.value !== e.oldValue) {\n\t\t\t// Unobserve outgoing value for bubbling\n\t\t\tif (_isTypeObject(e.oldValue)) {\n\t\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t\t}\n\t\t\t// Observe incoming value for bubbling\n\t\t\tif (_isTypeObject(e.value)) {\n\t\t\t\tlink(target, key, e.value, null, params);\n\t\t\t\tif (observers && (observers.subBuild || (observers.build && isUserObject(e.value)))) {\n\t\t\t\t\tbuild(e.value, observers.subBuild, observers.build, params.namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn e;\n\t};\n\t// ---------------------------------\n\tvar keys, events = [];\n\tif (_isArray(keysOrPayload) || ((_isString(keysOrPayload) || _isNumber(keysOrPayload)) && (keys = _arrFrom(keysOrPayload)))) {\n\t\tevents = keys.map(key => handleSet(key, value, keys, params.detail));\n\t} else if (_isObject(keysOrPayload) && (keys = Object.keys(keysOrPayload))) {\n\t\tevents = keys.map(key => handleSet(key, keysOrPayload[key], keys, params.detail));\n\t}\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar evt;\n\tif (observers) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n","\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"defineProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, params = {}) {\n\treturn _setOrDefine(true/*define*/, target, { keysOrPayload, value }, params);\n}\n","\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isTypeObject, _internals } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"deleteProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return Event\n */\nexport default function(target, keys, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\tvar _keys = _arrFrom(keys);\n\tvar events = _keys.map(key => {\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\toldValue = _get(target, key, null, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype: 'deleteProperty',\n\t\t\trelated: _keys,\n\t\t\tdetail: params.detail,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// Execute any \"del\" traps, otherwise \"del\" the default way\n\t\tvar interceptors, defaultDel = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _success;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdelete target[key];\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\t\te.success = interceptors.fire({type: 'deleteProperty', name:key, oldValue, related: _keys}, defaultDel);\n\t\t} else {\n\t\t\te.success = defaultDel();\n\t\t}\n\t\t// ---------------------------------\n\t\t// Unobserve outgoing value for bubbling\n\t\tif (e.success && _isTypeObject(e.oldValue)) {\n\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t}\n\t\treturn e;\n\t});\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar observers, evt;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getOwnPropertyDescriptor\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string|number name\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('getOwnPropertyDescriptor', target, { name }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('getPrototypeOf', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"isExtensible\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('isExtensible', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"ownKeys\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('ownKeys', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"preventExtensions\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('preventExtensions', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"set\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, receiver = null, params = {}) {\n\treturn _setOrDefine(false/*define*/, target, arguments.length > 3 ? { keysOrPayload, value, receiver } : { keysOrPayload, value }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"setPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tprototype\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, prototype, params = {}) {\n\treturn _exec('setPrototypeOf', target, { prototype }, params);\n}\n","\n/**\n * @imports\n */\n// Actions\nimport apply from './actions/apply.js';\nimport construct from './actions/construct.js';\nimport defineProperty from './actions/defineProperty.js';\nimport deleteProperty from './actions/deleteProperty.js';\nimport get from './actions/get.js';\nimport getOwnPropertyDescriptor from './actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from './actions/getPrototypeOf.js';\nimport has from './actions/has.js';\nimport isExtensible from './actions/isExtensible.js';\nimport ownKeys from './actions/ownKeys.js';\nimport preventExtensions from './actions/preventExtensions.js';\nimport set from './actions/set.js';\nimport setPrototypeOf from './actions/setPrototypeOf.js';\n// Actors\nimport accessorize from './actors/accessorize.js';\nimport unaccessorize from './actors/unaccessorize.js';\nimport proxy from './actors/proxy.js';\nimport unproxy from './actors/unproxy.js';\n// Reactions\nimport observe from './reactions/observe.js';\nimport unobserve from './reactions/unobserve.js';\nimport intercept from './reactions/intercept.js';\nimport unintercept from './reactions/unintercept.js';\nimport closure from './reactions/closure.js';\n// Connectors\nimport build from './connectors/build.js';\nimport link from './connectors/link.js';\nimport unlink from './connectors/unlink.js';\n// Core\nimport Observers from './core/Observers.js';\nimport Interceptors from './core/Interceptors.js';\n\n/**\n * @exports\n */\nexport default {\n\t// Actions\n\tapply,\n\tconstruct,\n\tdefineProperty,\n\tdeleteProperty,\n\tget,\n\tgetOwnPropertyDescriptor,\n\tgetPrototypeOf,\n\thas,\n\tisExtensible,\n\townKeys,\n\tpreventExtensions,\n\tset,\n\tsetPrototypeOf,\n\t// Actors\n\taccessorize,\n\tunaccessorize,\n\tproxy,\n\tunproxy,\n\t// Reactions\n\tobserve,\n\tunobserve,\n\tintercept,\n\tunintercept,\n\tclosure,\n\t// Connectors\n\tbuild,\n\tlink,\n\tunlink,\n\t// Core\n\tObservers,\n\tInterceptors,\n}","\n/**\n * @imports\n */\nimport { _isArray, _internals } from '@webqit/util/js/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport _get from '../actions/get.js';\nimport _set from '../actions/set.js';\n\n/**\n * Initializes \"Reflxive getter/setter\" traps on the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\treturn false;\n\t\t}\n\t\t// ----------\n\t\tconst getDescriptorDeep = () => {\n\t\t\tvar descriptor, proto = target;\n\t\t\twhile (!descriptor && (proto = Object.getPrototypeOf(proto))) {\n\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(proto, key);\n\t\t\t}\n\t\t\treturn descriptor;\n\t\t};\n\t\t// ----------\n\t\tvar originalOwnDescriptor = Object.getOwnPropertyDescriptor(target, key),\n\t\t\taltOriginalOwnDescriptor,\n\t\t\tactiveIsAltOriginalOwnDescriptor;\n\t\tif (!originalOwnDescriptor) {\n\t\t\t// Not an own property\n\t\t\t// and maybe not even defined at all in the prototype chain\n\t\t\taltOriginalOwnDescriptor = {\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: key in target ? false/* existing but inherited*/ : true,\n\t\t\t\tconfigurable: params.configurable !== false,\n\t\t\t};\n\t\t}\n\t\t// ----------\n\t\tvar reactiveOwnDescriptor = { ...(originalOwnDescriptor || altOriginalOwnDescriptor) };\n\t\tif ('value' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.value;\n\t\t}\n\t\tif ('writable' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.writable;\n\t\t}\n\t\t// ----------\n\t\treactiveOwnDescriptor.get = () => {\n\t\t\tif (controlObject.ongoingGets.length) {\n\t\t\t\t// .touch(true)\n\t\t\t\treturn controlObject.get();\n\t\t\t}\n\t\t\t// _get() will return here\n\t\t\t// but to call controlObject.get();\n\t\t\tcontrolObject.ongoingGets.push(1);\n\t\t\tvar value = _get(target, key, null, params);\n\t\t\tcontrolObject.ongoingGets.pop();\n\t\t\treturn value;\n\t\t};\n\t\tvar setting;\n\t\treactiveOwnDescriptor.set = newValue => {\n\t\t\tif (controlObject.ongoingSets.length) {\n\t\t\t\treturn controlObject.set(newValue);\n\t\t\t}\n\t\t\t// _set() will return here\n\t\t\t// but to call controlObject.set();\n\t\t\tcontrolObject.ongoingSets.push(1);\n\t\t\tvar operation = _set(target, key, newValue, null, params);\n\t\t\tcontrolObject.ongoingSets.pop();\n\t\t\treturn operation;\n\t\t};\n\t\t// ----------\n\t\tvar controlObject = {\n\t\t\tongoingGets: [],\n\t\t\tongoingSets: [],\n\t\t\tget: function() {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// getDescriptorDeep() or altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = getDescriptorDeep() || altOriginalOwnDescriptor;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\treturn descriptor.get ? descriptor.get.call(target) : descriptor.value;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else if (descriptor = getDescriptorDeep()) {\n\t\t\t\t\t\tif (('value' in descriptor)) {\n\t\t\t\t\t\t\t// Deep is data property.\n\t\t\t\t\t\t\t// We should rather switch to altOriginalOwnDescriptor\n\t\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Not yet switched to altOriginalOwnDescriptor\n\t\t\t\t\t\t// and no getDescriptorDeep()\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\tif (descriptor.set || descriptor.get) {\n\t\t\t\t\tif (!descriptor.set) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Can sometimes return undefined\n\t\t\t\t\treturn descriptor.set.call(target, value);\n\t\t\t\t}\n\t\t\t\tdescriptor.value = value;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\trestore: function() {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.intact()) {\n\t\t\t\t\t\tif (originalOwnDescriptor || activeIsAltOriginalOwnDescriptor /* switched */) {\n\t\t\t\t\t\t\tObject.defineProperty(target, key, originalOwnDescriptor || altOriginalOwnDescriptor /* switch target */);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdelete target[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_internals(target, 'accessorizedProps').delete(key);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} catch(e) {}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tintact: function() {\n\t\t\t\treturn (Object.getOwnPropertyDescriptor(target, key) || {}).get === reactiveOwnDescriptor.get;\n\t\t\t},\n\t\t\ttouch: function(attemptRestore = false) {\n\t\t\t\t// If intact, or not intact but not restorable, return true - \"valid\"\n\t\t\t\treturn this.intact() || (attemptRestore ? !this.restore() : false);\n\t\t\t},\n\t\t}\n\t\t// ----------\n\t\ttry {\n\t\t\tObject.defineProperty(target, key, reactiveOwnDescriptor);\n\t\t\t_internals(target, 'accessorizedProps').set(key, controlObject);\n\t\t\treturn true;\n\t\t} catch(e) {}\n\t\treturn false;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n","\n/**\n * @imports\n */\nimport { _isArray, _isObject, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\n\n/**\n * Removes previously initialized \"Reflxive getter/setter\" traps from the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\treturn _internals(target, 'accessorizedProps').get(key).restore();\n\t\t}\n\t\treturn true;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n","\n/**\n * @imports\n */\nimport {\n _isClass, _isFunction, _isTypeObject,\n _getType, _internals,\n} from '@webqit/util/js/index.js';\nimport apply from '../actions/apply.js';\nimport construct from '../actions/construct.js';\nimport defineProperty from '../actions/defineProperty.js';\nimport deleteProperty from '../actions/deleteProperty.js';\nimport get from '../actions/get.js';\nimport getOwnPropertyDescriptor from '../actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from '../actions/getPrototypeOf.js';\nimport has from '../actions/has.js';\nimport isExtensible from '../actions/isExtensible.js';\nimport ownKeys from '../actions/ownKeys.js';\nimport preventExtensions from '../actions/preventExtensions.js';\nimport set from '../actions/set.js';\nimport setPrototypeOf from '../actions/setPrototypeOf.js';\n\n/**\n * Returns an object as a proxy and binds all instance methods\n * to the proxy instead of the object itself.\n *\n * @param Object|Array\t\ttarget\n * @param Object\t\t params\n *\n * @return Proxy\n */\nexport default function(target, params = {}) {\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n }\n var proxy = new Proxy(target, {\n apply: (target, thisArgument, argumentsList) => apply(target, thisArgument, argumentsList, params),\n construct: (target, argumentsList, newTarget = null) => construct(target, argumentsList, newTarget, params),\n defineProperty: (target, propertyKey, attributes) => defineProperty(target, propertyKey, attributes, params),\n deleteProperty: (target, propertyKey) => deleteProperty(target, propertyKey, params),\n get: (target, propertyKey, receiver = null) => {\n var val = get(target, propertyKey, receiver, params);\n if (params.proxyAutoBinding !== false && _isFunction(val) && !_isClass(val)) {\n return val.bind(proxy);\n }\n return val;\n },\n getOwnPropertyDescriptor: (target, propertyKey) => getOwnPropertyDescriptor(target, propertyKey, params),\n getPrototypeOf: target => getPrototypeOf(target, params),\n has: (target, propertyKey) => has(target, propertyKey, params),\n isExtensible: target => isExtensible(target, params),\n ownKeys: target => ownKeys(target, params),\n preventExtensions: target => preventExtensions(target, params),\n set: (target, propertyKey, value, receiver = null) => set(target, propertyKey, value, receiver, params),\n setPrototypeOf: (target, prototype) => setPrototypeOf(target, prototype, params),\n });\n _internals(proxy).set(proxy, target);\n\treturn proxy;\n}\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"class\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\n};\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _isObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Adds a trap to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return Interceptor\n */\nexport default function(target, trap, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar returnObj = {}, isOriginallyObj = true;\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { '': trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, true, params.namespace);\n\tObject.keys(trap).forEach(filter => {\n\t\tif (!_isFunction(trap[filter])) {\n\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t}\n\t\tvar dfn = { filter, handler: trap[filter], params }, existing;\n\t\tif (dfn.params.unique && (existing = interceptors.match(dfn)).length) {\n\t\t\tif (dfn.params.unique !== 'replace') {\n\t\t\t\treturn existing[0];\n\t\t\t}\n\t\t\tinterceptors.remove(existing[0]);\n\t\t}\n\t\tif (isOriginallyObj) {\n\t\t\treturnObj[filter] = interceptors.add(dfn);\n\t\t} else {\n\t\t\treturnObj = interceptors.add(dfn);\n\t\t}\n\t});\n\treturn returnObj;\n}\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Removes traps from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, trap = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace);\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { [null]: trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\tObject.keys(trap).forEach(filter => {\n\t\t\tif (!_isFunction(trap[filter])) {\n\t\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t\t}\n\t\t\tvar dfn = { filter, originalHandler: trap[filter], params };\n\t\t\treturn interceptors.removeMatches(dfn);\n\t\t});\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _copy } from '@webqit/util/obj/index.js';\nimport { _unique } from '@webqit/util/arr/index.js';\nimport { _isArray, _isTypeObject } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\n\n/**\n * Executes a callback function on a target in \"closure\" mode.\n * Fires any observers that may be bound to target on recorded changes.\n *\n * @param function\t\tcallback\n * @param array\t\t\t...subjects\n *\n * @return array|Event\n */\nexport default function(callback, ...subjects) {\n\tvar context = subjects.map(target => {\n\t\ttarget = _unproxy(target);\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Target must be of type object!');\n\t\t}\n\t\treturn {\n\t\t\ttarget,\n\t\t\tsubjectCopy: _isArray(target) ? target.slice(0) : _copy(target),\n\t\t};\n\t});\n\t// ---------------------------------\n\tvar result = callback(...subjects);\n\t// ---------------------------------\n\tconst fireDiffs = () => {\n\t\tcontext.map(cntxt => {\n\t\t\tvar initialKeys = Object.keys(cntxt.subjectCopy);\n\t\t\tvar currentKeys = Object.keys(cntxt.target);\n\t\t\tvar related = [];\n\t\t\tvar changes = _unique(initialKeys.concat(currentKeys)).map(key => {\n\t\t\t\tif (cntxt.subjectCopy[key] !== cntxt.target[key]) {\n\t\t\t\t\trelated.push(key);\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// The event object\n\t\t\t\t\tvar e = {\n\t\t\t\t\t\tname:key,\n\t\t\t\t\t\trelated,\n\t\t\t\t\t\tbuffered: true,\n\t\t\t\t\t};\n\t\t\t\t\tif (currentKeys.includes(key)) {\n\t\t\t\t\t\te.type = 'set';\n\t\t\t\t\t\te.value = cntxt.target[key];\n\t\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\t\te.isUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.type = 'del';\n\t\t\t\t\t}\n\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\te.oldValue = cntxt.subjectCopy[key];\n\t\t\t\t\t}\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// Unobserve outgoing value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.subjectCopy[key])) {\n\t\t\t\t\t\tunlink(cntxt.target, key, cntxt.subjectCopy[key]);\n\t\t\t\t\t}\n\t\t\t\t\t// Observe incoming value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.target[key])) {\n\t\t\t\t\t\tlink(cntxt.target, key, cntxt.target[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t}).filter(c => c);\n\t\t\t// ---------------------------------\n\t\t\tvar observers;\n\t\t\tif (changes.length && (observers = Observers.getFirebase(cntxt.target, false))) {\n\t\t\t\treturn observers.fire(changes);\n\t\t\t}\n\t\t});\n\t};\n\tif (result instanceof Promise) {\n\t\tresult.then(fireDiffs);\n\t} else {\n\t\tfireDiffs();\n\t}\n\treturn result;\n}\n","\n/**\n * Returns a list of unique items.\n *\n * @param array\t \t\t\t\tarr\n *\t *\n * @return array\n */\nexport default function(arr) {\n\tconst distinct = (value, index, self) => {\n\t\treturn self.indexOf(value) === index;\n\t};\n\treturn arr.filter(distinct);\n};\n","\n/**\n * @imports\n */\nimport Observer from './index.js';\n\n// As globals\nif (!window.WebQit) {\n\twindow.WebQit = {};\n}\nwindow.WebQit.Observer = Observer;"],"sourceRoot":""}
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "events"
13
13
  ],
14
14
  "homepage": "https://webqit.io/tooling/observer",
15
- "version": "1.7.3",
15
+ "version": "1.7.4",
16
16
  "license": "MIT",
17
17
  "repository": {
18
18
  "type": "git",
@@ -24,7 +24,7 @@ export default function(target, trap, params = {}) {
24
24
  if (!_isObject(trap)) {
25
25
  // Backwards compatibility
26
26
  if (_isFunction(trap)) {
27
- trap = { [null]: trap };
27
+ trap = { '': trap };
28
28
  } else if (_isFunction(params)) {
29
29
  trap = { [trap]: params };
30
30
  params = arguments.length > 3 ? arguments[3] : {};