@nethesis/phone-island
Version:
NethVoice CTI Phone Island
3 lines (2 loc) • 1.09 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./batch.js");const t={notify(){},get:()=>[]};exports.createSubscription=function(n,r){let u,c=t,i=0,o=!1;function s(){b.onStateChange&&b.onStateChange()}function l(){i++,u||(u=r?r.addNestedSub(s):n.subscribe(s),c=function(){const t=e.getBatch();let n=null,r=null;return{clear(){n=null,r=null},notify(){t((()=>{let e=n;for(;e;)e.callback(),e=e.next}))},get(){let e=[],t=n;for(;t;)e.push(t),t=t.next;return e},subscribe(e){let t=!0,u=r={callback:e,next:null,prev:r};return u.prev?u.prev.next=u:n=u,function(){t&&null!==n&&(t=!1,u.next?u.next.prev=u.prev:r=u.prev,u.prev?u.prev.next=u.next:n=u.next)}}}}())}function a(){i--,u&&0===i&&(u(),u=void 0,c.clear(),c=t)}const b={addNestedSub:function(e){l();const t=c.subscribe(e);let n=!1;return()=>{n||(n=!0,t(),a())}},notifyNestedSubs:function(){c.notify()},handleChangeWrapper:s,isSubscribed:function(){return o},trySubscribe:function(){o||(o=!0,l())},tryUnsubscribe:function(){o&&(o=!1,a())},getListeners:()=>c};return b};
//# sourceMappingURL=Subscription.js.map