var WebSocketMultiplex=function(e){var t={};function n(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function r(e){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e,t){return(c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var n=0;n<t.length;n++){var s=t[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function a(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}n.r(t),n.d(t,"default",function(){return f});var l=function(){function e(){u(this,e),this.listeners={}}return a(e,[{key:"addEventListener",value:function(e,t){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(t)}},{key:"removeEventListener",value:function(e,t){var n=this.listeners[e];if(n){var s=n.findIndex(function(e){return e===t});s>=0&&n.splice(s,1)}}},{key:"dispatchEvent",value:function(e){var t=this,n=e.type;return this["on"+n]&&this["on"+n].call(this,e),n in this.listeners&&this.listeners[n].forEach(function(n){return n.call(t,e)}),!e.defaultPrevented}},{key:"hasEventListeners",value:function(e){return"on"+e in this||!!(e in this.listeners&&this.listeners[e].length)}}]),e}(),h=function(e){function t(e){var n;return u(this,t),(n=i(this,r(t).call(this)))._channel=e,n.readyState=WebSocket.CONNECTING,n.addEventListener("message",function(e){if(n.hasEventListeners("jsonmessage")){var t=new MessageEvent("jsonmessage",{data:JSON.parse(e.data)});n.dispatchEvent(t)}}),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&c(e,t)}(t,l),a(t,[{key:"send",value:function(e){this._channel.send(e)}},{key:"close",value:function(){this.readyState=WebSocket.CLOSING,this._channel.removeSubscriber(this),this._channel=null}}]),t}(),b=function(){function e(t,n){u(this,e),this.multiplex=t,this.name=n,this.subscribed=!1,this.reconnecting=!1,this.subscribers=[]}return a(e,[{key:"subscribe",value:function(){this.subscribed||this.multiplex.ws.send("sub,"+this.name)}},{key:"setSubscribed",value:function(){this.subscribed=!0,this.eachSubscriber(function(e){this.setSubscriberOpen(e)}),this.reconnecting=!1}},{key:"unsubscribe",value:function(){this.subscribed&&this.multiplex.ws.send("uns,"+this.name)}},{key:"setUnsubscribed",value:function(){this.subscribed&&(this.eachSubscriber(function(e){this.setSubscriberClosed(e)}),this.subscribers=[])}},{key:"setReconnecting",value:function(){this.reconnecting=!0,this.subscribed=!1,this.eachSubscriber(function(e){e.readyState=WebSocket.CONNECTING,e.dispatchEvent(new CustomEvent("reconnecting"))})}},{key:"subscriber",value:function(){var e=this,t=new h(this);return this.subscribers.push(t),this.subscribed&&window.setTimeout(function(){e.setSubscriberOpen(t)},0),t}},{key:"setSubscriberOpen",value:function(e){e.readyState!=WebSocket.OPEN&&(e.readyState=WebSocket.OPEN,this.reconnecting?e.dispatchEvent(new CustomEvent("reconnected")):e.dispatchEvent(new Event("open")))}},{key:"setSubscriberClosed",value:function(e){e.readyState!=WebSocket.CLOSED&&(e.readyState=WebSocket.CLOSED,e.dispatchEvent(new CloseEvent("closed")))}},{key:"eachSubscriber",value:function(e){var t=this;this.subscribers.forEach(function(n){return e.call(t,n)})}},{key:"removeSubscriber",value:function(e){var t=this.subscribers.findIndex(function(t){return t===e});t<0||(this.subscribers.splice(t,1),this.setSubscriberClosed(e),this.subscribers.length||this.unsubscribe())}},{key:"send",value:function(e){this.multiplex.ws.send("msg,"+this.name+","+e)}},{key:"receiveMessage",value:function(e){this.eachSubscriber(function(t){return t.dispatchEvent(new MessageEvent("message",{data:e}))})}},{key:"receiveError",value:function(e){this.eachSubscriber(function(t){return t.dispatchEvent(new CustomEvent("error",{detail:e}))})}}]),e}(),f=function(){function e(t){u(this,e),t instanceof WebSocket?this.ws=t:(this.ws=null,this._url=t),this.channels={},this.open(),this.closing=!1}return a(e,[{key:"open",value:function(){var e=this;this.closing=!1,(!this.ws||this.ws.readyState>WebSocket.OPEN)&&(this.ws=new WebSocket(this.url)),this.ws.addEventListener("open",function(t){e.eachChannel(function(e){return e.subscribe()})}),this.ws.addEventListener("close",function(t){e.eachChannel(function(t){e.closing||t.setReconnecting()}),window.setTimeout(function(){e.open()},500)}),this.ws.addEventListener("message",function(t){var n=t.data.split(","),s=n.shift(),i=n.shift(),r=n.join();if(i in e.channels){var c=e.channels[i];switch(s){case"sta":"true"===r?c.setSubscribed():"false"===r&&(c.setUnsubscribed(),delete e.channels[i]);break;case"uns":c.setUnsubscribed(),delete e.channels[i];break;case"msg":c.receiveMessage(r);break;case"err":c.receiveError(r)}}})}},{key:"close",value:function(){this.closing=!0,this.ws.close()}},{key:"eachChannel",value:function(e){var t=this;Object.values(this.channels).forEach(function(n){e.call(t,n)})}},{key:"channel",value:function(e){var t=escape(e);return this.channels[t]||(this.channels[t]=new b(this,t),this.ws.readyState==WebSocket.OPEN&&this.channels[t].subscribe()),this.channels[t].subscriber()}},{key:"url",get:function(){return this._url||this.ws.url},set:function(e){this._url=e}}]),e}()}]).default;
//# sourceMappingURL=websocket_multiplex.js.map