@signalwire/js 3.8.0 → 3.9.0
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/core/src/BaseComponent.d.ts +3 -8
- package/dist/core/src/BaseComponent.d.ts.map +1 -1
- package/dist/core/src/BaseSession.d.ts +3 -0
- package/dist/core/src/BaseSession.d.ts.map +1 -1
- package/dist/core/src/chat/BaseChat.d.ts +0 -3
- package/dist/core/src/chat/BaseChat.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +2 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/rooms/methods.d.ts +14 -1
- package/dist/core/src/rooms/methods.d.ts.map +1 -1
- package/dist/core/src/types/index.d.ts +1 -0
- package/dist/core/src/types/index.d.ts.map +1 -1
- package/dist/core/src/types/video.d.ts +2 -0
- package/dist/core/src/types/video.d.ts.map +1 -1
- package/dist/core/src/types/videoLayout.d.ts +2 -0
- package/dist/core/src/types/videoLayout.d.ts.map +1 -1
- package/dist/core/src/types/videoRoomSession.d.ts +1 -3
- package/dist/core/src/types/videoRoomSession.d.ts.map +1 -1
- package/dist/core/src/utils/index.d.ts +1 -0
- package/dist/core/src/utils/index.d.ts.map +1 -1
- package/dist/core/src/utils/interfaces.d.ts +1 -1
- package/dist/core/src/utils/interfaces.d.ts.map +1 -1
- package/dist/core/src/utils/proxyUtils.d.ts +5 -0
- package/dist/core/src/utils/proxyUtils.d.ts.map +1 -1
- package/dist/index.esm.js +20 -14
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +20 -15
- package/dist/index.js.map +3 -3
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/js/src/BaseRoomSession.d.ts.map +1 -1
- package/dist/js/src/RoomSession.d.ts.map +1 -1
- package/dist/js/src/RoomSession.docs.d.ts +12 -7
- package/dist/js/src/RoomSession.docs.d.ts.map +1 -1
- package/dist/js/src/chat/Client.d.ts +1 -1
- package/dist/js/src/chat/Client.d.ts.map +1 -1
- package/dist/js/src/chat/Client.docs.d.ts +2 -2
- package/dist/js/src/index.d.ts +8 -7
- package/dist/js/src/index.d.ts.map +1 -1
- package/dist/js/src/utils/interfaces.d.ts +3 -1
- package/dist/js/src/utils/interfaces.d.ts.map +1 -1
- package/dist/js/src/video.d.ts +3 -3
- package/dist/js/src/video.d.ts.map +1 -1
- package/dist/js/src/webrtc.d.ts +1 -1
- package/dist/js/src/webrtc.d.ts.map +1 -1
- package/dist/js/tsconfig.build.tsbuildinfo +1 -1
- package/dist/webrtc/src/BaseConnection.d.ts.map +1 -1
- package/dist/webrtc/src/index.d.ts +1 -1
- package/dist/webrtc/src/index.d.ts.map +1 -1
- package/dist/webrtc/src/utils/deviceHelpers.d.ts +45 -0
- package/dist/webrtc/src/utils/deviceHelpers.d.ts.map +1 -1
- package/dist/webrtc/src/utils/interfaces.d.ts +3 -0
- package/dist/webrtc/src/utils/interfaces.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/BaseRoomSession.ts +11 -1
- package/src/RoomSession.docs.ts +52 -13
- package/src/RoomSession.ts +2 -0
- package/src/chat/Client.docs.ts +2 -2
- package/src/chat/Client.ts +4 -13
- package/src/index.ts +8 -7
- package/src/utils/interfaces.ts +3 -0
- package/src/video.ts +3 -2
- package/src/webrtc.ts +1 -0
package/dist/index.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SignalWire JS SDK v3.
|
|
2
|
+
* SignalWire JS SDK v3.9.0 (https://signalwire.com)
|
|
3
3
|
* Copyright 2018-2022 SignalWire
|
|
4
4
|
* Licensed under MIT(https://github.com/signalwire/signalwire-js/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SignalWire={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r={exports:{}};!function(e){var r,n;r=t,n=function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function o(e,t){var r=e[t];if("function"==typeof r.bind)return r.bind(e);try{return Function.prototype.bind.call(r,e)}catch(t){return function(){return Function.prototype.apply.apply(r,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(n){return"debug"===n&&(n="log"),typeof console!==t&&("trace"===n&&r?s:void 0!==console[n]?o(console,n):void 0!==console.log?o(console,"log"):e)}function a(t,r){for(var o=0;o<n.length;o++){var s=n[o];this[s]=o<t?e:this.methodFactory(s,t,r)}this.log=this.debug}function c(e,r,n){return function(){typeof console!==t&&(a.call(this,r,n),this[e].apply(this,arguments))}}function u(e,t,r){return i(e)||c.apply(this,arguments)}function d(e,r,o){var s,i=this;r=null==r?"WARN":r;var c="loglevel";function d(){var e;if(typeof window!==t&&c){try{e=window.localStorage[c]}catch(e){}if(typeof e===t)try{var r=window.document.cookie,n=r.indexOf(encodeURIComponent(c)+"=");-1!==n&&(e=/^([^;]+)/.exec(r.slice(n))[1])}catch(e){}return void 0===i.levels[e]&&(e=void 0),e}}"string"==typeof e?c+=":"+e:"symbol"==typeof e&&(c=void 0),i.name=e,i.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},i.methodFactory=o||u,i.getLevel=function(){return s},i.setLevel=function(r,o){if("string"==typeof r&&void 0!==i.levels[r.toUpperCase()]&&(r=i.levels[r.toUpperCase()]),!("number"==typeof r&&r>=0&&r<=i.levels.SILENT))throw"log.setLevel() called with invalid level: "+r;if(s=r,!1!==o&&function(e){var r=(n[e]||"silent").toUpperCase();if(typeof window!==t&&c){try{return void(window.localStorage[c]=r)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"="+r+";"}catch(e){}}}(r),a.call(i,r,e),typeof console===t&&r<i.levels.SILENT)return"No console available for logging"},i.setDefaultLevel=function(e){r=e,d()||i.setLevel(e,!1)},i.resetLevel=function(){i.setLevel(r,!1),function(){if(typeof window!==t&&c){try{return void window.localStorage.removeItem(c)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},i.enableAll=function(e){i.setLevel(i.levels.TRACE,e)},i.disableAll=function(e){i.setLevel(i.levels.SILENT,e)};var l=d();null==l&&(l=r),i.setLevel(l,!1)}var l=new d,h={};l.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=h[e];return t||(t=h[e]=new d(e,l.getLevel(),l.methodFactory)),t};var p=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=p),l},l.getLoggers=function(){return h},l.default=l,l},e.exports?e.exports=n():r.log=n()}(r);var n,o=r.exports,s=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(s)}var a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function c(e){return"string"==typeof e&&a.test(e)}for(var u=[],d=0;d<256;++d)u.push((d+256).toString(16).substr(1));function l(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(u[e[t+0]]+u[e[t+1]]+u[e[t+2]]+u[e[t+3]]+"-"+u[e[t+4]]+u[e[t+5]]+"-"+u[e[t+6]]+u[e[t+7]]+"-"+u[e[t+8]]+u[e[t+9]]+"-"+u[e[t+10]]+u[e[t+11]]+u[e[t+12]]+u[e[t+13]]+u[e[t+14]]+u[e[t+15]]).toLowerCase();if(!c(r))throw TypeError("Stringified UUID is invalid");return r}(n)}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){h(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var g="function"==typeof Symbol&&Symbol.observable||"@@observable",v=function(){return Math.random().toString(36).substring(7).split("").join(".")},y={INIT:"@@redux/INIT"+v(),REPLACE:"@@redux/REPLACE"+v(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+v()}};function b(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function _(e,t,r){var n;if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error(f(0));if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(f(1));return r(_)(e,t)}if("function"!=typeof e)throw new Error(f(2));var o=e,s=t,i=[],a=i,c=!1;function u(){a===i&&(a=i.slice())}function d(){if(c)throw new Error(f(3));return s}function l(e){if("function"!=typeof e)throw new Error(f(4));if(c)throw new Error(f(5));var t=!0;return u(),a.push(e),function(){if(t){if(c)throw new Error(f(6));t=!1,u();var r=a.indexOf(e);a.splice(r,1),i=null}}}function h(e){if(!b(e))throw new Error(f(7));if(void 0===e.type)throw new Error(f(8));if(c)throw new Error(f(9));try{c=!0,s=o(s,e)}finally{c=!1}for(var t=i=a,r=0;r<t.length;r++)(0,t[r])();return e}function p(e){if("function"!=typeof e)throw new Error(f(10));o=e,h({type:y.REPLACE})}function m(){var e,t=l;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new Error(f(11));function r(){e.next&&e.next(d())}return r(),{unsubscribe:t(r)}}})[g]=function(){return this},e}return h({type:y.INIT}),(n={dispatch:h,subscribe:l,getState:d,replaceReducer:p})[g]=m,n}function S(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++){var o=t[n];"function"==typeof e[o]&&(r[o]=e[o])}var s,i=Object.keys(r);try{!function(e){Object.keys(e).forEach((function(t){var r=e[t];if(void 0===r(void 0,{type:y.INIT}))throw new Error(f(12));if(void 0===r(void 0,{type:y.PROBE_UNKNOWN_ACTION()}))throw new Error(f(13))}))}(r)}catch(e){s=e}return function(e,t){if(void 0===e&&(e={}),s)throw s;for(var n=!1,o={},a=0;a<i.length;a++){var c=i[a],u=e[c],d=(0,r[c])(u,t);if(void 0===d)throw new Error(f(14));o[c]=d,n=n||d!==u}return(n=n||i.length!==Object.keys(e).length)?o:e}}function w(e,t){return function(){return t(e.apply(this,arguments))}}function k(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function E(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return function(){var r=e.apply(void 0,arguments),n=function(){throw new Error(f(15))},o={getState:r.getState,dispatch:function(){return n.apply(void 0,arguments)}},s=t.map((function(e){return e(o)}));return n=k.apply(void 0,s)(r.dispatch),m(m({},r),{},{dispatch:n})}}}var C=Object.freeze({__proto__:null,__DO_NOT_USE__ActionTypes:y,applyMiddleware:E,bindActionCreators:function(e,t){if("function"==typeof e)return w(e,t);if("object"!=typeof e||null===e)throw new Error(f(16));var r={};for(var n in e){var o=e[n];"function"==typeof o&&(r[n]=w(o,t))}return r},combineReducers:S,compose:k,createStore:_}),T=function(e){return"@@redux-saga/"+e},I=T("CANCEL_PROMISE"),O=T("CHANNEL_END"),M=T("IO"),P=T("MATCH"),R=T("MULTICAST"),A=T("SAGA_ACTION"),x=T("SELF_CANCELLATION"),L=T("TASK"),j=T("TASK_CANCEL"),D=T("TERMINATE"),N=T("LOCATION");function V(){return(V=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var W=function(e){return null==e},$=function(e){return null!=e},U=function(e){return"function"==typeof e},q=function(e){return"string"==typeof e},B=Array.isArray,z=function(e){return e&&U(e.then)},F=function(e){return e&&U(e.next)&&U(e.throw)},H=function e(t){return t&&(q(t)||K(t)||U(t)||B(t)&&t.every(e))},Q=function(e){return e&&U(e.take)&&U(e.close)},K=function(e){return Boolean(e)&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};function J(e,t){var r;void 0===t&&(t=!0);var n=new Promise((function(n){r=setTimeout(n,e,t)}));return n[I]=function(){clearTimeout(r)},n}var G=function(e){return function(){return!0}}(),X=function(){},Y=function(e){return e},Z=function(e,t){V(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(r){e[r]=t[r]}))};function ee(e,t){var r=e.indexOf(t);r>=0&&e.splice(r,1)}function te(e){var t=!1;return function(){t||(t=!0,e())}}var re=function(e){throw e},ne=function(e){return{value:e,done:!0}};function oe(e,t,r){void 0===t&&(t=re),void 0===r&&(r="iterator");var n={meta:{name:r},next:e,throw:t,return:ne,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(n[Symbol.iterator]=function(){return n}),n}function se(e,t){var r=t.sagaStack;console.error(e),console.error(r)}var ie=function(e){return Array.apply(null,new Array(e))},ae=function(e){return function(t){return e(Object.defineProperty(t,A,{value:!0}))}},ce=function(e){return e===D},ue=function(e){return e===j},de=function(e){return ce(e)||ue(e)};function le(e,t){var r,n=Object.keys(e),o=n.length,s=0,i=B(e)?ie(o):{},a={};return n.forEach((function(e){var n=function(n,a){r||(a||de(n)?(t.cancel(),t(n,a)):(i[e]=n,++s===o&&(r=!0,t(i))))};n.cancel=X,a[e]=n})),t.cancel=function(){r||(r=!0,n.forEach((function(e){return a[e].cancel()})))},a}function he(e){return{name:e.name||"anonymous",location:pe(e)}}function pe(e){return e[N]}var me={isEmpty:G,put:X,take:X},fe="TAKE",ge="CALL",ve="FORK",ye="SELECT",be=function(e,t){var r;return(r={})[M]=!0,r.combinator=!1,r.type=e,r.payload=t,r},_e=function(e){return be(ve,V({},e.payload,{detached:!0}))};function Se(e,t){return void 0===e&&(e="*"),H(e)?be(fe,{pattern:e}):Q(r=e)&&r[R]&&$(t)&&H(t)?be(fe,{channel:e,pattern:t}):Q(e)?be(fe,{channel:e}):void 0;var r}function we(e,t){return W(t)&&(t=e,e=void 0),be("PUT",{channel:e,action:t})}function ke(e,t){var r,n=null;return U(e)?r=e:(B(e)?(n=e[0],r=e[1]):(n=e.context,r=e.fn),n&&q(r)&&U(n[r])&&(r=n[r])),{context:n,fn:r,args:t}}function Ee(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return be(ge,ke(e,r))}function Ce(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return be(ve,ke(e,r))}function Te(e){void 0===e&&(e=Y);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return be(ye,{selector:e,args:r})}var Ie=Ee.bind(null,J),Oe=[],Me=0;function Pe(e){try{xe(),e()}finally{Le()}}function Re(e){Oe.push(e),Me||(xe(),je())}function Ae(e){try{return xe(),e()}finally{je()}}function xe(){Me++}function Le(){Me--}function je(){var e;for(Le();!Me&&void 0!==(e=Oe.shift());)Pe(e)}var De=function(e){return function(t){return e.some((function(e){return Ue(e)(t)}))}},Ne=function(e){return function(t){return e(t)}},Ve=function(e){return function(t){return t.type===String(e)}},We=function(e){return function(t){return t.type===e}},$e=function(){return G};function Ue(e){var t,r="*"===e?$e:q(e)?Ve:B(e)?De:U(t=e)&&t.hasOwnProperty("toString")?Ve:U(e)?Ne:K(e)?We:null;if(null===r)throw new Error("invalid pattern: "+e);return r(e)}var qe={type:O},Be=function(e){return e&&e.type===O};function ze(e){void 0===e&&(e=function(e,t){void 0===e&&(e=10);var r=new Array(e),n=0,o=0,s=0,i=function(){if(0!=n){var t=r[s];return r[s]=null,n--,s=(s+1)%e,t}},a=function(){for(var e=[];n;)e.push(i());return e};return{isEmpty:function(){return 0==n},put:function(t){var i;n<e||(i=2*e,r=a(),n=r.length,o=r.length,s=0,r.length=i,e=i),function(t){r[o]=t,o=(o+1)%e,n++}(t)},take:i,flush:a}}(void 0));var t=!1,r=[];return{take:function(n){t&&e.isEmpty()?n(qe):e.isEmpty()?(r.push(n),n.cancel=function(){ee(r,n)}):n(e.take())},put:function(n){if(!t){if(0===r.length)return e.put(n);r.shift()(n)}},flush:function(r){t&&e.isEmpty()?r(qe):r(e.flush())},close:function(){if(!t){t=!0;var e=r;r=[];for(var n=0,o=e.length;n<o;n++)(0,e[n])(qe)}}}}function Fe(){var e,t=!1,r=[],n=r,o=function(){n===r&&(n=r.slice())},s=function(){t=!0;var e=r=n;n=[],e.forEach((function(e){e(qe)}))};return(e={})[R]=!0,e.put=function(e){if(!t)if(Be(e))s();else for(var o=r=n,i=0,a=o.length;i<a;i++){var c=o[i];c[P](e)&&(c.cancel(),c(e))}},e.take=function(e,r){void 0===r&&(r=$e),t?e(qe):(e[P]=r,o(),n.push(e),e.cancel=te((function(){o(),ee(n,e)})))},e.close=s,e}function He(){var e=Fe(),t=e.put;return e.put=function(e){e[A]?t(e):Re((function(){t(e)}))},e}function Qe(e,t){var r=e[I];U(r)&&(t.cancel=r),e.then(t,(function(e){t(e,!0)}))}var Ke,Je=0,Ge=function(){return++Je};function Xe(e){e.isRunning()&&e.cancel()}var Ye=((Ke={}).TAKE=function(e,t,r){var n=t.channel,o=void 0===n?e.channel:n,s=t.pattern,i=t.maybe,a=function(e){e instanceof Error?r(e,!0):!Be(e)||i?r(e):r(D)};try{o.take(a,$(s)?Ue(s):null)}catch(e){return void r(e,!0)}r.cancel=a.cancel},Ke.PUT=function(e,t,r){var n=t.channel,o=t.action,s=t.resolve;Re((function(){var t;try{t=(n?n.put:e.dispatch)(o)}catch(e){return void r(e,!0)}s&&z(t)?Qe(t,r):r(t)}))},Ke.ALL=function(e,t,r,n){var o=n.digestEffect,s=Je,i=Object.keys(t);if(0!==i.length){var a=le(t,r);i.forEach((function(e){o(t[e],s,a[e],e)}))}else r(B(t)?[]:{})},Ke.RACE=function(e,t,r,n){var o=n.digestEffect,s=Je,i=Object.keys(t),a=B(t)?ie(i.length):{},c={},u=!1;i.forEach((function(e){var t=function(t,n){u||(n||de(t)?(r.cancel(),r(t,n)):(r.cancel(),u=!0,a[e]=t,r(a)))};t.cancel=X,c[e]=t})),r.cancel=function(){u||(u=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){u||o(t[e],s,c[e],e)}))},Ke.CALL=function(e,t,r,n){var o=t.context,s=t.fn,i=t.args,a=n.task;try{var c=s.apply(o,i);if(z(c))return void Qe(c,r);if(F(c))return void at(e,c,a.context,Je,he(s),!1,r);r(c)}catch(e){r(e,!0)}},Ke.CPS=function(e,t,r){var n=t.context,o=t.fn,s=t.args;try{var i=function(e,t){W(e)?r(t):r(e,!0)};o.apply(n,s.concat(i)),i.cancel&&(r.cancel=i.cancel)}catch(e){r(e,!0)}},Ke.FORK=function(e,t,r,n){var o=t.fn,s=t.detached,i=n.task,a=function(e){var t=e.context,r=e.fn,n=e.args;try{var o=r.apply(t,n);if(F(o))return o;var s=!1;return oe((function(e){return s?{value:e,done:!0}:(s=!0,{value:o,done:!z(o)})}))}catch(e){return oe((function(){throw e}))}}({context:t.context,fn:o,args:t.args}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:he(t)}(a,o);Ae((function(){var t=at(e,a,i.context,Je,c,s,void 0);s?r(t):t.isRunning()?(i.queue.addTask(t),r(t)):t.isAborted()?i.queue.abort(t.error()):r(t)}))},Ke.JOIN=function(e,t,r,n){var o=n.task,s=function(e,t){if(e.isRunning()){var r={task:o,cb:t};t.cancel=function(){e.isRunning()&&ee(e.joiners,r)},e.joiners.push(r)}else e.isAborted()?t(e.error(),!0):t(e.result())};if(B(t)){if(0===t.length)return void r([]);var i=le(t,r);t.forEach((function(e,t){s(e,i[t])}))}else s(t,r)},Ke.CANCEL=function(e,t,r,n){t===x?Xe(n.task):B(t)?t.forEach(Xe):Xe(t),r()},Ke.SELECT=function(e,t,r){var n=t.selector,o=t.args;try{r(n.apply(void 0,[e.getState()].concat(o)))}catch(e){r(e,!0)}},Ke.ACTION_CHANNEL=function(e,t,r){var n=t.pattern,o=ze(t.buffer),s=Ue(n),i=function t(r){Be(r)||e.channel.take(t,s),o.put(r)},a=o.close;o.close=function(){i.cancel(),a()},e.channel.take(i,s),r(o)},Ke.CANCELLED=function(e,t,r,n){r(n.task.isCancelled())},Ke.FLUSH=function(e,t,r){t.flush(r)},Ke.GET_CONTEXT=function(e,t,r,n){r(n.task.context[t])},Ke.SET_CONTEXT=function(e,t,r,n){Z(n.task.context,t),r()},Ke);function Ze(e,t){return e+"?"+t}function et(e){var t=e.name,r=e.location;return r?t+" "+Ze(r.fileName,r.lineNumber):t}function tt(e){var t,r=(t=[]).concat.apply(t,e.map((function(e){return e.cancelledTasks})));return r.length?["Tasks cancelled due to error:"].concat(r).join("\n"):""}var rt=null,nt=[],ot=function(e){e.crashedEffect=rt,nt.push(e)},st=function(){rt=null,nt.length=0},it=function(){var e,t=nt[0],r=nt.slice(1),n=t.crashedEffect?(e=pe(t.crashedEffect))?e.code+" "+Ze(e.fileName,e.lineNumber):"":null;return["The above error occurred in task "+et(t.meta)+(n?" \n when executing effect "+n:"")].concat(r.map((function(e){return" created by "+et(e.meta)})),[tt(nt)]).join("\n")};function at(e,t,r,n,o,s,i){var a=e.finalizeRunEffect((function(t,r,n){z(t)?Qe(t,n):F(t)?at(e,t,u.context,r,o,!1,n):t&&t[M]?(0,Ye[t.type])(e,t.payload,n,d):n(t)}));l.cancel=X;var c={meta:o,cancel:function(){0===c.status&&(c.status=1,l(j))},status:0},u=function(e,t,r,n,o,s,i){var a;void 0===i&&(i=X);var c,u,d=0,l=null,h=[],p=Object.create(r),m=function(e,t,r){var n,o=[],s=!1;function i(e){h.push.apply(h,m.getTasks().map((function(e){return e.meta.name}))),c(),r(e,!0)}function a(t){o.push(t),t.cont=function(a,c){s||(ee(o,t),t.cont=X,c?i(a):(t===e&&(n=a),o.length||(s=!0,r(n))))}}function c(){s||(s=!0,o.forEach((function(e){e.cont=X,e.cancel()})),o=[])}return a(e),{addTask:a,cancelAll:c,abort:i,getTasks:function(){return o}}}(t,0,f);function f(t,r){if(r){if(d=2,ot({meta:o,cancelledTasks:h}),g.isRoot){var n=it();st(),e.onError(t,{sagaStack:n})}u=t,l&&l.reject(t)}else t===j?d=1:1!==d&&(d=3),c=t,l&&l.resolve(t);g.cont(t,r),g.joiners.forEach((function(e){e.cb(t,r)})),g.joiners=null}var g=((a={})[L]=!0,a.id=n,a.meta=o,a.isRoot=s,a.context=p,a.joiners=[],a.queue=m,a.cancel=function(){0===d&&(d=1,m.cancelAll(),f(j,!1))},a.cont=i,a.end=f,a.setContext=function(e){Z(p,e)},a.toPromise=function(){return l||((e={}).promise=new Promise((function(t,r){e.resolve=t,e.reject=r})),l=e,2===d?l.reject(u):0!==d&&l.resolve(c)),l.promise;var e},a.isRunning=function(){return 0===d},a.isCancelled=function(){return 1===d||0===d&&1===t.status},a.isAborted=function(){return 2===d},a.result=function(){return c},a.error=function(){return u},a);return g}(e,c,r,n,o,s,i),d={task:u,digestEffect:h};return i&&(i.cancel=u.cancel),l(),u;function l(e,r){try{var o;r?(o=t.throw(e),st()):ue(e)?(c.status=1,l.cancel(),o=U(t.return)?t.return(j):{done:!0,value:j}):o=ce(e)?U(t.return)?t.return():{done:!0}:t.next(e),o.done?(1!==c.status&&(c.status=3),c.cont(o.value)):h(o.value,n,l)}catch(e){if(1===c.status)throw e;c.status=2,c.cont(e,!0)}}function h(t,r,n,o){void 0===o&&(o="");var s,i=Ge();function c(r,o){s||(s=!0,n.cancel=X,e.sagaMonitor&&(o?e.sagaMonitor.effectRejected(i,r):e.sagaMonitor.effectResolved(i,r)),o&&function(e){rt=e}(t),n(r,o))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:i,parentEffectId:r,label:o,effect:t}),c.cancel=X,n.cancel=function(){s||(s=!0,c.cancel(),c.cancel=X,e.sagaMonitor&&e.sagaMonitor.effectCancelled(i))},a(t,i,c)}}function ct(e,t){for(var r=e.channel,n=void 0===r?He():r,o=e.dispatch,s=e.getState,i=e.context,a=void 0===i?{}:i,c=e.sagaMonitor,u=e.effectMiddlewares,d=e.onError,l=void 0===d?se:d,h=arguments.length,p=new Array(h>2?h-2:0),m=2;m<h;m++)p[m-2]=arguments[m];var f,g=t.apply(void 0,p),v=Ge();if(c&&(c.rootSagaStarted=c.rootSagaStarted||X,c.effectTriggered=c.effectTriggered||X,c.effectResolved=c.effectResolved||X,c.effectRejected=c.effectRejected||X,c.effectCancelled=c.effectCancelled||X,c.actionDispatched=c.actionDispatched||X,c.rootSagaStarted({effectId:v,saga:t,args:p})),u){var y=k.apply(void 0,u);f=function(e){return function(t,r,n){return y((function(t){return e(t,r,n)}))(t)}}}else f=Y;var b={channel:n,dispatch:ae(o),getState:s,sagaMonitor:c,onError:l,finalizeRunEffect:f};return Ae((function(){var e=at(b,g,a,v,he(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function ut(e){var t,r=void 0===e?{}:e,n=r.context,o=void 0===n?{}:n,s=r.channel,i=void 0===s?He():s,a=r.sagaMonitor,c=function(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)t.indexOf(r=s[n])>=0||(o[r]=e[r]);return o}(r,["context","channel","sagaMonitor"]);function u(e){return t=ct.bind(null,V({},c,{context:o,channel:i,dispatch:e.dispatch,getState:e.getState,sagaMonitor:a})),function(e){return function(t){a&&a.actionDispatched&&a.actionDispatched(t);var r=e(t);return i.put(t),r}}}return u.run=function(){return t.apply(void 0,arguments)},u.setContext=function(e){Z(o,e)},u}var dt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new o(n,s||e,i),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function i(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,o=[];if(0===this._eventsCount)return o;for(n in e=this._events)t.call(e,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,s=new Array(o);n<o;n++)s[n]=t[n].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[r?r+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,n,o,s,i){var a=r?r+e:e;if(!this._events[a])return!1;var c,u,d=this._events[a],l=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),l){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,n),!0;case 4:return d.fn.call(d.context,t,n,o),!0;case 5:return d.fn.call(d.context,t,n,o,s),!0;case 6:return d.fn.call(d.context,t,n,o,s,i),!0}for(u=1,c=new Array(l-1);u<l;u++)c[u-1]=arguments[u];d.fn.apply(d.context,c)}else{var h,p=d.length;for(u=0;u<p;u++)switch(d[u].once&&this.removeListener(e,d[u].fn,void 0,!0),l){case 1:d[u].fn.call(d[u].context);break;case 2:d[u].fn.call(d[u].context,t);break;case 3:d[u].fn.call(d[u].context,t,n);break;case 4:d[u].fn.call(d[u].context,t,n,o);break;default:if(!c)for(h=1,c=new Array(l-1);h<l;h++)c[h-1]=arguments[h];d[u].fn.apply(d[u].context,c)}}return!0},a.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},a.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},a.prototype.removeListener=function(e,t,n,o){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return i(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||n&&a.context!==n||i(this,s);else{for(var c=0,u=[],d=a.length;c<d;c++)(a[c].fn!==t||o&&!a[c].once||n&&a[c].context!==n)&&u.push(a[c]);u.length?this._events[s]=1===u.length?u[0]:u:i(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=r?r+e:e]&&i(this,t):(this._events=new n,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=r,a.EventEmitter=a,e.exports=a}(dt);var lt=dt.exports,ht=Object.defineProperty,pt=Object.defineProperties,mt=Object.getOwnPropertyDescriptor,ft=Object.getOwnPropertyDescriptors,gt=Object.getOwnPropertyNames,vt=Object.getOwnPropertySymbols,yt=Object.prototype.hasOwnProperty,bt=Object.prototype.propertyIsEnumerable,_t=(e,t,r)=>t in e?ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,St=(e,t)=>{for(var r in t||(t={}))yt.call(t,r)&&_t(e,r,t[r]);if(vt)for(var r of vt(t))bt.call(t,r)&&_t(e,r,t[r]);return e},wt=(e,t)=>pt(e,ft(t)),kt=(e,t)=>{var r={};for(var n in e)yt.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&vt)for(var n of vt(e))t.indexOf(n)<0&&bt.call(e,n)&&(r[n]=e[n]);return r},Et=(e,t)=>{for(var r in t)ht(e,r,{get:t[r],enumerable:!0})},Ct=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of gt(t))yt.call(e,o)||!r&&"default"===o||ht(e,o,{get:()=>t[o],enumerable:!(n=mt(t,o))||n.enumerable});return e},Tt=(e,t,r)=>(_t(e,"symbol"!=typeof t?t+"":t,r),r),It="__local__",Ot="__synthetic__",Mt=["room.started","room.ended"].map((e=>`video.${e}`)),Pt=()=>(new Date).toISOString().replace("T"," ").replace("Z",""),Rt=o.getLogger("signalwire"),At=Rt.methodFactory;Rt.methodFactory=(e,t,r)=>{const n=At(e,t,r);return function(){const e=[Pt(),"-"];for(let t=0;t<arguments.length;t++)e.push(arguments[t]);n.apply(void 0,e)}};var xt,Lt=Rt.getLevel();Rt.setLevel(Lt);var jt={},Dt=()=>null!=xt?xt:Rt,Nt=({type:e,payload:t})=>{const r=Dt(),{logWsTraffic:n}=jt||{};if(!n)return;const o=(e=>!("method"in e)||"signalwire.ping"!==e.method)(t)?JSON.stringify(t,null,2):t;return r.info(`${e.toUpperCase()}: \n`,o,"\n")},Vt=()=>{const e=Dt();return new Proxy(e,{get:(e,t,r)=>"wsTraffic"===t?Nt:Reflect.get(e,t,r)})},Wt=(e,t)=>{const{result:r={},error:n}=e;if(n)return{error:n};const{code:o,node_id:s,result:i=null}=r;return o&&"200"!==o?{error:r}:null===i?(t&&(r.node_id=t),{result:r}):i?i.jsonrpc?Wt(i,s):{result:i}:{result:r}},$t={propsToUpdateValue:["updated","layers","members","recordings","playbacks"]},Ut=(e,t=$t)=>Object.entries(e).reduce(((e,[r,n])=>{const o=qt(r);return e[o]="object"==typeof n&&n?Array.isArray(n)?t.propsToUpdateValue.includes(r)?n.map((e=>"string"==typeof e?qt(e):Ut(e))):n:Ut(n):(e=>e.endsWith("At"))(o)?(e=>{if(void 0===e)return e;const t=new Date(1e3*e);return isNaN(t.getTime())?e:t})(n):n,e}),{}),qt=e=>e.includes("_")?e.split("_").reduce(((e,t,r)=>{const n=t.trim().charAt(0),o=t.substr(1).toLowerCase();return`${e}${0===r?n.toLowerCase():n.toUpperCase()}${o}`}),""):e,Bt=({event:e,namespace:t})=>("string"==typeof e&&(e=Ht({event:e,namespace:t}),e=Ft(e)),e),zt=/[A-Z]/g,Ft=e=>e.replace(zt,(e=>`_${e.toLowerCase()}`)),Ht=({namespace:e,event:t})=>!e||t.startsWith(e)?t:`${e}:${t}`,Qt=(e,t)=>(Object.keys(t).forEach((t=>{if(e.prototype.hasOwnProperty(t))throw new Error(`[extendComponent] Duplicated method name: ${t}`)})),Object.defineProperties(e.prototype,t),e),Kt=({instance:e,transform:t,payload:r,transformedPayload:n})=>new Proxy(e,{get:(e,o,s)=>"toString"===o?(({property:e,payload:t})=>"function"==typeof e?()=>JSON.stringify(t):e)({property:e[o],payload:n}):"_eventsNamespace"===o&&t.getInstanceEventNamespace?t.getInstanceEventNamespace(r):"eventChannel"===o&&t.getInstanceEventChannel?t.getInstanceEventChannel(r):o in n?n[o]:Reflect.get(e,o,s)}),Jt=new Map,Gt=[{field:"members",preProcessPayload:e=>({member:e}),eventTransformType:"roomSessionMember"},{field:"recordings",preProcessPayload:e=>({recording:e}),eventTransformType:"roomSessionRecording"}],Xt=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch(t){return e}},Yt=/^(ws|wss):\/\//,Zt=e=>e.includes("session."),er=["video.member.updated","video.member.talking"],tr=["video.room.joined","video.track","video.active","video.answering","video.destroy","video.early","video.hangup","video.held","video.new","video.purge","video.recovering","video.requesting","video.ringing","video.trying"],rr=e=>{const t=e.map((e=>{if("string"==typeof e){const t=(e=>{const t=e.split(":");return t[t.length-1]})(e);return tr.includes(t)||(e=>e.includes(Ot))(t)||Zt(t)?null:er.find((e=>t.startsWith(e)))||t}return e}));return Array.from(new Set(t)).filter(Boolean)},nr=e=>e.includes(It),or=e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(It),e)),[]).join(".")},sr=e=>{var t;return St({jsonrpc:"2.0",id:null!=(t=e.id)?t:l()},e)},ir=e=>St({jsonrpc:"2.0"},e),ar={major:3,minor:0,revision:0},cr=e=>sr({method:"signalwire.connect",params:St({version:ar},e)}),ur={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},dr=e=>{if(e.hasOwnProperty("dialogParams")){const t=kt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in ur)e&&t.hasOwnProperty(e)&&(t[ur[e]]=t[e],delete t[e]);e.dialogParams=t}return e},lr=e=>(t={})=>sr({method:e,params:dr(t)}),hr=lr("verto.invite"),pr=lr("verto.bye"),mr=lr("verto.info"),fr=(e,t)=>ir({id:e,result:{method:t}}),gr={};Et(gr,{authErrorAction:()=>Tr,authExpiringAction:()=>Or,authSuccessAction:()=>Ir,closeConnectionAction:()=>kr,createAction:()=>yr,destroyAction:()=>wr,executeAction:()=>Cr,getCustomSagaActionType:()=>Wr,initAction:()=>Sr,makeCustomSagaAction:()=>Vr,reauthAction:()=>Er,sessionAuthErrorAction:()=>jr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>xr,sessionExpiringAction:()=>Dr,sessionReconnectingAction:()=>Lr,socketClosedAction:()=>Mr,socketErrorAction:()=>Pr,socketMessageAction:()=>Rr});var vr={};function yr(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error("prepareAction did not return an object");return St(St({type:e,payload:n.payload},"meta"in n&&{meta:n.meta}),"error"in n&&{error:n.error})}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>t.type===e,r}Et(vr,{configureStore:()=>_r,createAction:()=>yr}),Ct(vr,C);var br="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?k:k.apply(null,arguments)};function _r(e){const t=function(){return[]},{reducer:r,middleware:n=t(),devTools:o=!0,preloadedState:s,enhancers:i}=e||{};let a;if("function"==typeof r)a=r;else{if(!function(e){if("object"!=typeof e||null===e)return!1;let t=Object.getPrototypeOf(e);if(null===t)return!0;let r=t;for(;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return t===r}(r))throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');a=S(r)}let c=n;"function"==typeof c&&(c=c(t));const u=E(...c);let d=k;o&&(d=br(St({trace:!1},"object"==typeof o&&o)));let l=[u];return Array.isArray(i)?l=[u,...i]:"function"==typeof i&&(l=i(l)),_(a,s,d(...l))}var Sr=yr("swSdk/init"),wr=yr("swSdk/destroy"),kr=yr("swSdk/closeConnection"),Er=yr("swSdk/reauth"),Cr=yr("swSdk/executeRequest"),Tr=yr("auth/error"),Ir=yr("auth/success"),Or=yr("auth/expiring"),Mr=yr("socket/closed"),Pr=yr("socket/error"),Rr=yr("socket/message"),Ar=yr("session.connected"),xr=yr("session.disconnected"),Lr=yr("session.reconnecting"),jr=yr("session.auth_error"),Dr=yr("session.expiring"),Nr=(e,t)=>`${t.type}/${e}`,Vr=(e,t)=>wt(St({},t),{type:Nr(e,t)}),Wr=(e,t)=>Nr(e,t);function $r(e){const t={},r=[];let n;const o={addCase(e,r){const n="string"==typeof e?e:e.type;if(n in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[n]=r,o},addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),o),addDefaultCase:e=>(n=e,o)};return e(o),[t,r,n]}var Ur=({name:e="",initialState:t,reducers:r,extraReducers:n})=>function(e){const{name:t}=e;if(!t)throw new Error("`name` is a required option for createSlice");const r=e.initialState,n=e.reducers||{},o=Object.keys(n),s={},i={},a={};function c(){const[t={},n=[],o]="function"==typeof e.extraReducers?$r(e.extraReducers):[e.extraReducers],s=St(St({},t),i);return function(e,t,r=[],n){let o,[s,i,a]="function"==typeof t?$r(t):[t,r,n];function c(e=o(),t){let r=[s[t.type],...i.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===r.filter((e=>!!e)).length&&(r=[a]),r.reduce(((e,r)=>r?r(e,t):e),e)}return o="function"==typeof e?()=>e():()=>e,c.getInitialState=o,c}(r,s,n,o)}let u;return o.forEach((e=>{const r=n[e],o=`${t}/${e}`;let c,u;"reducer"in r?(c=r.reducer,u=r.prepare):c=r,s[e]=c,i[o]=c,a[e]=u?yr(o,u):yr(o)})),{name:t,reducer:(e,t)=>(u||(u=c()),u(e,t)),actions:a,caseReducers:s,getInitialState:()=>(u||(u=c()),u.getInitialState())}}({name:e,initialState:t,reducers:r,extraReducers:e=>{e.addCase(wr.type,(()=>t)),"function"==typeof n&&n(e)}}),qr=Ur({name:"session",initialState:{protocol:"",iceServers:[],authStatus:"unknown",authError:void 0,authCount:0},reducers:{connected:(e,{payload:t})=>{var r,n;return wt(St({},e),{authStatus:"authorized",authCount:e.authCount+1,protocol:null!=(r=null==t?void 0:t.protocol)?r:"",iceServers:null!=(n=null==t?void 0:t.ice_servers)?n:[]})},authStatus:(e,{payload:t})=>wt(St({},e),{authStatus:t})},extraReducers:e=>{e.addCase(Tr.type,((e,{payload:t})=>wt(St({},e),{authStatus:"unauthorized",authError:t.error})))}}),{actions:Br,reducer:zr}=qr,Fr={};Et(Fr,{authErrorAction:()=>Tr,authExpiringAction:()=>Or,authSuccessAction:()=>Ir,closeConnectionAction:()=>kr,configureStore:()=>Mn,connect:()=>On,createAction:()=>yr,createCatchableSaga:()=>nn,createRestartableSaga:()=>tn,destroyAction:()=>wr,executeAction:()=>Cr,getCustomSagaActionType:()=>Wr,initAction:()=>Sr,makeCustomSagaAction:()=>Vr,reauthAction:()=>Er,sessionAuthErrorAction:()=>jr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>xr,sessionExpiringAction:()=>Dr,sessionReconnectingAction:()=>Lr,socketClosedAction:()=>Mr,socketErrorAction:()=>Pr,socketMessageAction:()=>Rr});var Hr=({state:e,payload:t,componentId:r,key:n,requestId:o})=>wt(St({},e),r in e.byId?{byId:wt(St({},e.byId),{[r]:wt(St({},e.byId[r]),{[n]:wt(St({},e.byId[r][n]),{[o]:t})})})}:{byId:wt(St({},e.byId),{[r]:{id:r,[n]:{[o]:t}}})}),Qr=Ur({name:"components",initialState:{byId:{}},reducers:{upsert:(e,{payload:t})=>wt(St({},e),t.id in e.byId?{byId:wt(St({},e.byId),{[t.id]:St(St({},e.byId[t.id]),t)})}:{byId:wt(St({},e.byId),{[t.id]:t})}),executeSuccess:(e,{payload:t})=>{const{componentId:r,requestId:n,response:o}=t;return Hr({componentId:r,requestId:n,state:e,key:"responses",payload:o})},executeFailure:(e,{payload:t})=>{const{componentId:r,requestId:n,error:o,action:s}=t;return Hr({componentId:r,requestId:n,state:e,key:"errors",payload:{action:s,jsonrpc:o}})},cleanup:(e,{payload:t})=>wt(St({},e),{byId:Object.entries(e.byId).reduce(((e,[r,n])=>(t.ids.includes(r)||(e[r]=n),e)),{})})}}),{actions:Kr,reducer:Jr}=Qr,Gr={queue:[]},Xr=Ur({name:"executeQueue",initialState:Gr,reducers:{add:(e,{payload:t})=>wt(St({},e),{queue:e.queue.concat(t)}),clean:()=>Gr}}),{actions:Yr,reducer:Zr}=Xr,en=(0,vr.combineReducers)({components:Jr,session:zr,executeQueue:Zr});Et({},{createCatchableSaga:()=>nn,createRestartableSaga:()=>tn});var tn=e=>function*(){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];_e(Ce.apply(void 0,[e].concat(r)))}((function*(){for(;;)try{Vt().debug("Run a restartable saga"),yield Ee(e),Vt().debug("One of the restartable saga has ended. Restarting..")}catch(e){Vt().error("Restartable Saga Error",e)}}))},rn=e=>Vt().error("Catchable Saga Error",e),nn=(e,t=rn)=>function*(...r){try{yield Ee(e,...r)}catch(e){t(e)}},on={};Et(on,{getAuthError:()=>un,getAuthStatus:()=>cn,getIceServers:()=>sn,getSession:()=>an});var sn=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},an=e=>e.session,cn=({session:e})=>e.authStatus,un=({session:e})=>e.authError,dn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},ln=e=>{const t=(({components:e})=>e.byId)(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r};function*hn(e){function*t(t){if("authorized"!==(yield Te(cn)))return;const{componentId:r,requestId:n,method:o,params:s}=t.payload;try{const i=(({method:e,params:t})=>sr({method:e,params:t}))({id:n,method:o,params:s}),a=yield Ee(e.execute,i);r&&n&&(yield we(Kr.executeSuccess({componentId:r,requestId:n,response:a})))}catch(e){Vt().warn("worker error",r,e),r&&n&&(yield we(Kr.executeFailure({componentId:r,requestId:n,action:t,error:e})))}finally{if((yield be("CANCELLED",{}))&&r&&n){const e={jsonrpc:"2.0",id:n,error:{code:-32600,message:"Cancelled task"}};Vt().debug("executeActionWorker cancelled",{requestId:n,componentId:r,error:e}),yield we(Kr.executeFailure({componentId:r,requestId:n,action:t,error:e}))}}}for(;;){const e=yield Se(Cr.type);yield Ce(t,e)}}function*pn({session:e,sessionChannel:t,pubSubChannel:r}){function*n({jsonrpc:t,nodeId:r}){var n,o;const{id:s,method:i,params:a={}}=t;switch(i){case"verto.media":{const e={id:a.callID,state:"early",remoteSDP:a.sdp,nodeId:r};yield we(Kr.upsert(e)),yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break}case"verto.answer":{const e={id:a.callID,state:"active",nodeId:r};(null==a?void 0:a.sdp)&&(e.remoteSDP=a.sdp),yield we(Kr.upsert(e)),yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break}case"verto.bye":{const e={id:a.callID,state:"hangup",nodeId:r,byeCause:null!=(n=null==a?void 0:a.cause)?n:"",byeCauseCode:null!=(o=null==a?void 0:a.causeCode)?o:0,redirectDestination:null==a?void 0:a.redirectDestination};yield we(Kr.upsert(e)),yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break}case"verto.ping":yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break;case"verto.punt":return e.disconnect();case"verto.mediaParams":{const{callID:e,mediaParams:t={}}=a;if(!e){Vt().debug("Invalid mediaParams event",a);break}const r={id:e};(null==t?void 0:t.video)&&(r.videoConstraints=t.video),(null==t?void 0:t.audio)&&(r.audioConstraints=t.audio),yield we(Kr.upsert(r));break}case"verto.info":return Vt().debug("Verto Info",a);case"verto.clientReady":return Vt().debug("Verto ClientReady",a);case"verto.announce":return Vt().debug("Verto Announce",a);default:return Vt().debug(`Unknown Verto method: ${i}`,a)}}function*o(e){switch(e.event_type){case"video.room.subscribed":yield we(Kr.upsert({id:e.params.call_id,roomId:e.params.room_session.room_id,roomSessionId:e.params.room_session.id,memberId:e.params.member_id,previewUrl:e.params.room_session.preview_url})),yield we(r,{type:"video.room.joined",payload:e.params});break;case"video.member.updated":{const{member:{updated:t=[]}}=e.params;for(const n of t){const t=`video.member.updated.${n}`;yield we(r,{type:t,payload:e.params})}break}case"video.member.joined":{const{member:t}=e.params;(null==t?void 0:t.parent_id)&&(yield Te(dn,t.parent_id))&&(yield we(Kr.upsert({id:t.id,roomId:e.params.room_id,roomSessionId:e.params.room_session_id,memberId:t.id})));break}case"video.member.talking":{const{member:t}=e.params;if("talking"in t){const n=t.talking?"started":"ended";yield we(r,{type:`video.member.talking.${n}`,payload:e.params});const o=t.talking?"start":"stop";yield we(r,{type:`video.member.talking.${o}`,payload:e.params})}break}}yield we(r,{type:e.event_type,payload:e.params})}function*s(e){yield we(r,{type:e.event_type,payload:e.params})}function*i(e){var t;"webrtc.message"!==(null==(t=e)?void 0:t.event_type)?(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("video."))})(e)?yield Ce(o,e):(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("cantina-manager."))})(e)?yield Ce(s,e):yield we({type:e.event_type,payload:e}):yield Ce(n,{jsonrpc:e.params,nodeId:e.node_id})}const a=nn((function*(e){if(e.type!==Rr.type)return void(yield we(e));const{method:t,params:r}=e.payload;switch(t){case"signalwire.event":yield Ce(i,r);break;default:return Vt().debug(`Unknown message: ${t}`,e)}}),(e=>{Vt().error("Channel Error",e)}));for(;;)try{for(;;){const e=yield Se(t);yield Ce(a,e)}}catch(e){Vt().error("sessionChannelWorker error:",e)}finally{Vt().debug("sessionChannelWorker finally")}}function mn(e){return function(t,r){void 0===r&&(r=me);var n,o,s=!1,i=ze(r),a=function(){s||(s=!0,U(n)&&n(),i.close())};return n=te((o=function(e){Be(e)?a():i.put(e)},e.dispatch=e=>{o(e)},n=()=>{Vt().debug("sessionChannel unsubscribe"),e.disconnect()})),s&&n(),{take:i.take,flush:i.flush,close:a}}()}function*fn({pubSubChannel:e,emitter:t}){for(;;){const n=yield Se(e,"*"),{type:o,payload:s}=n;try{const e=void 0===(r=n).payload?"":(e=>e.type.startsWith("video.member.")||e.type.startsWith("video.__synthetic__.member"))(r)||(e=>e.type.startsWith("video.layout."))(r)||(e=>e.type.startsWith("video.recording."))(r)||(e=>e.type.startsWith("video.playback."))(r)?r.payload.room_session_id:(e=>e.type.startsWith("video.room."))(r)?r.payload.room_session.id:((e=>{e.type.startsWith("chat.")})(r),"");Mt.includes(o)&&t.emit(o,s),t.emit(Bt({namespace:e,event:o}),s)}catch(e){Vt().error(e)}}var r}var gn=({executeQueue:e})=>e;function*vn(){function*e(e){"authorized"!==(yield Te(cn))&&(yield we(Yr.add(e.payload)))}for(;;){const t=yield Se(Cr.type);yield Ce(e,t)}}function*yn(){const{queue:e}=yield Te(gn);for(const t of e)yield we(Cr(t));yield we(Yr.clean())}var bn=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Tt(this,"name","AuthError"),Object.setPrototypeOf(this,bn.prototype)}};function*_n(){const e=yield Te(ln);e.length&&(yield we(Kr.cleanup({ids:e})))}function*Sn(){for(;;)yield Ie(36e5),yield Ce(_n)}function*wn({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Ee(mn,o),i=r.pubSubChannel;let a=[];if(null==(n=t.workers)?void 0:n.length)try{const e=t.workers.map((e=>Ee(tn(e))));a=yield function(e){var t=be("ALL",e);return t.combinator=!0,t}(e)}catch(e){Vt().error("Error running custom workers",e)}yield Ce(pn,{session:o,sessionChannel:s,pubSubChannel:i}),yield Ce(Cn,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const c=yield Ce(Sn);o.connect(),yield Se(wr.type),null==c||c.cancel(),i.close(),s.close(),a.forEach((e=>e.cancel()))}function*kn({session:e,sessionChannel:t,pubSubChannel:r}){"reconnecting"===e.status?(yield we(r,Lr()),yield Ie(2e3*Math.random()),yield Ee(e.connect)):(yield we(r,xr()),t.close())}function*En({session:e,token:t,pubSubChannel:r}){try{e.reauthenticate&&(e.token=t,yield Ee(e.reauthenticate),yield we(r,Ar()))}catch(e){Vt().error("Reauthenticate Error",e),yield we(Tr({error:e}))}}function*Cn(e){for(;;){const t=yield Se([Ir.type,Tr.type,Or.type,Pr.type,Mr.type,Er.type]);switch(t.type){case Ir.type:yield Ce(Tn,e);break;case Tr.type:yield Ce(In,{action:t,userOptions:e.userOptions,pubSubChannel:e.pubSubChannel});break;case Or.type:yield we(e.pubSubChannel,Dr());break;case Pr.type:break;case Mr.type:yield Ce(kn,e);break;case Er.type:yield Ce(En,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*Tn(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ce(fn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ce(hn,t);yield we(Br.connected(t.rpcConnectResult)),yield we(r,Ar());const i=yield Ce(yn);yield Se(kr.type),o.cancel(),s.cancel(),i.cancel()}function*In(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new bn(o.code,o.message):new Error("Unauthorized"),i=yield Ce(fn,{pubSubChannel:t,emitter:r.emitter});throw yield we(t,jr(s)),yield Se(xr),i.cancel(),s}var On=e=>{const{componentListeners:t={},sessionListeners:r={},store:n,Component:o,customSagas:s=[]}=e,i=Object.keys(t),a=Object.keys(r);return e=>{const c=new o(wt(St({},e),{store:n})),u=new Map;let d=!0;const l=n.subscribe((()=>{const e=n.getState(),o=dn(e,c.__uuid)||{};for(const e of i){if(!1===d)return;const r=`${c.__uuid}.${e}`,n=u.get(r),s=o[e];if(void 0!==s&&n!==s){u.set(r,s);const n=t[e];"string"==typeof n?c[n](o):n(o)}}const s=an(e);for(const e of a){if(!1===d)return;const t=`session.${e}`,n=u.get(t),o=s[e];if(void 0!==o&&n!==o){u.set(t,o);const n=r[e];"string"==typeof n?c[n](s):"function"==typeof n&&n(s)}}})),h=null==s?void 0:s.map((e=>n.runSaga(e,{instance:c,runSaga:n.runSaga})));return c.destroyer=()=>{d=!1,l(),u.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Ct(Fr,vr);var Mn=e=>{var t;const{userOptions:r,SessionConstructor:n,preloadedState:o={},runSagaMiddleware:s=!0}=e,i=ut(),a={pubSubChannel:Fe()},c=_r({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:en,preloadedState:o,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){t.logger&&(xt=t.logger),t.debug&&(e=>{null!=e?Object.assign(jt,e):jt={}})(t.debug),yield Ce(vn),yield Se(Sr.type);try{yield Ee(wn,wt(St({},e),{userOptions:t,channels:r}))}catch(e){return void Vt().error("RootSaga Error:",e)}})({SessionConstructor:n});i.run(e,{userOptions:r,channels:a})}return wt(St({},c),{runSaga:(e,t)=>i.run(e,wt(St({},t),{channels:a}))})},Pn=e=>e,Rn=class{constructor(e){this.options=e,Tt(this,"uuid",l()),Tt(this,"_eventsPrefix",""),Tt(this,"_eventsRegisterQueue",new Set),Tt(this,"_eventsEmitQueue",new Set),Tt(this,"_eventsNamespace"),Tt(this,"_eventsTransformsCache",new Map),Tt(this,"_requests",new Map),Tt(this,"_customSagaTriggers",new Map),Tt(this,"_destroyer"),Tt(this,"_emitterTransforms",new Map),Tt(this,"_emitterListenersCache",new Map),Tt(this,"_trackedEvents",[]),Tt(this,"_runningWorkers",[]),Tt(this,"_workers",new Map)}get __uuid(){return this.uuid}_getNamespacedEvent(e){let t=this._eventsNamespace;return"string"==typeof e&&nr(e)&&(t=this.__uuid),Bt({event:e,namespace:t})}_getPrefixedEvent(e){return!this._eventsPrefix||"string"!=typeof e||e.includes(`${this._eventsPrefix}.`)||Zt(e)?e:`${this._eventsPrefix}.${e}`}_getInternalEvent(e){return this._getNamespacedEvent(this._getPrefixedEvent(e))}get logger(){return Vt()}set destroyer(e){this._destroyer=e}get store(){return this.options.store}get emitter(){return this.options.emitter}addEventToRegisterQueue(e){const[t,r]=e.params;return this.logger.trace("Adding event to the register queue",{event:t,fn:r}),this._eventsRegisterQueue.add({type:e.type,params:e.params}),this.emitter}_addEventToEmitQueue(e,t){this.logger.trace("Adding to the emit queue",e),this._eventsEmitQueue.add({event:e,args:t})}shouldAddToQueue(){return void 0===this._eventsNamespace}runAndCacheEventHandlerTransform({internalEvent:e,transform:t,payload:r}){if(!this._eventsTransformsCache.has(e)){const n=t.instanceFactory(r);return this._eventsTransformsCache.set(e,n),n}return this._eventsTransformsCache.get(e)}cleanupEventHandlerTransformCache({internalEvent:e,force:t}){const r=this._eventsTransformsCache.get(e),n=this.listenerCount(e);return r&&(t||n<=1)?(r.destroy(),this._eventsTransformsCache.delete(e)):(this.logger.trace("[cleanupEventHandlerTransformCache] Key wasn't cached",e),!1)}getEmitterListenersMapByInternalEventName(e){var t;return null!=(t=this._emitterListenersCache.get(e))?t:new Map}getAndRemoveStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);if(t&&r.has(t)){const n=r.get(t);return r.delete(t),this._emitterListenersCache.set(e,r),n}return t}_createStableEventHandler(e,t){return r=>{const n=this._emitterTransforms.get(e);if(!n)return t(r);const o=this.runAndCacheEventHandlerTransform({internalEvent:e,transform:n,payload:r}),s=this._parseNestedFields(n.payloadTransform(r)),i=Kt({instance:o,payload:r,transformedPayload:s,transform:n});return t(i)}}_parseNestedFields(e){return Gt.forEach((({field:t,preProcessPayload:r,eventTransformType:n})=>{var o;const s=this._emitterTransforms.get(n);s&&(null==(o=null==e?void 0:e[t])?void 0:o.length)&&(e[t]=e[t].map((e=>(({transform:e,payload:t})=>{const r=(({transform:e,payload:t})=>{if(!Jt.has(e.type)){const r=e.instanceFactory(t);return Jt.set(e.type,r),r}return Jt.get(e.type)})({transform:e,payload:t}),n=e.payloadTransform(t);return Kt({transform:e,payload:t,instance:r,transformedPayload:n})})({transform:s,payload:r(e)}))))})),e}getOrCreateStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);let n=r.get(t);return n||(n=this._createStableEventHandler(e,t),r.set(t,n),this._emitterListenersCache.set(e,r)),n}_trackEvent(e){this._trackedEvents=Array.from(new Set(this._trackedEvents.concat(e)))}_untrackEvent(e){this._trackedEvents=this._trackedEvents.filter((t=>t!==e))}_addListener(e,t,r){const n=this._getInternalEvent(e);this._trackEvent(n);const o=r?"once":"on";if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:o,params:[e,t]}),this.emitter;const s=this.getOrCreateStableEventHandler(n,t);return this.logger.trace("Registering event",n),this.emitter[o](n,s)}on(e,t){return this._addListener(e,t)}once(e,t){return this._addListener(e,t,!0)}off(e,t){if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:"off",params:[e,t]}),this.emitter;const r=this._getInternalEvent(e),n=this.getAndRemoveStableEventHandler(r,t);return this.cleanupEventHandlerTransformCache({internalEvent:r,force:!n}),this.logger.trace("Removing event listener",r),this._untrackEvent(r),this.emitter.off(r,n)}removeAllListeners(e){return this.shouldAddToQueue()?(this.addEventToRegisterQueue({type:"removeAllListeners",params:[e]}),this.emitter):e?this.off(e):(this.eventNames().forEach((e=>{this.off(e)})),this.emitter)}eventNames(){return this._trackedEvents}getSubscriptions(){return rr(this.eventNames())}emit(e,...t){if(this.shouldAddToQueue())return this._addEventToEmitQueue(e,t),!1;const r=this._getInternalEvent(e);return this.logger.trace("Emit on event:",r),this.emitter.emit(r,...t)}listenerCount(e){return this.emitter.listenerCount(e)}destroy(){var e;null==(e=this._destroyer)||e.call(this),this.removeAllListeners(),this.detachWorkers()}execute({method:e,params:t},{transformParams:r=Pn,transformResolve:n=Pn,transformReject:o=Pn}={transformParams:Pn,transformResolve:Pn,transformReject:Pn}){return new Promise(((s,i)=>{const a=l();this._requests.set(a,{resolve:s,reject:i,transformResolve:n,transformReject:o}),this.store.dispatch(Cr({requestId:a,componentId:this.__uuid,method:e,params:r(t)}))}))}triggerCustomSaga(e){return new Promise(((t,r)=>{const n=l();this._customSagaTriggers.set(n,{resolve:t,reject:r}),this.store.dispatch(St({dispatchId:n},Vr(this.__uuid,e)))}))}settleCustomSagaTrigger({dispatchId:e,payload:t,kind:r}){const n=this._customSagaTriggers.get(e);n&&(n[r](t),this._customSagaTriggers.delete(e))}select(e){return e(this.store.getState())}onError(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.errors[r])&&(t.reject(t.transformReject(e.errors[r])),this._requests.delete(r))}))}onSuccess(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.responses[r])&&(t.resolve(t.transformResolve(e.responses[r])),this._requests.delete(r))}))}getStateProperty(e){return this[e]}flushEventsRegisterQueue(){this._eventsRegisterQueue.forEach((e=>{this[e.type](...e.params),this._eventsRegisterQueue.delete(e)}))}flushEventsEmitQueue(){this._eventsEmitQueue.forEach((e=>{const{event:t,args:r}=e;this.emit(t,...r),this._eventsEmitQueue.delete(e)}))}flushEventsQueue(){this.flushEventsRegisterQueue(),this.flushEventsEmitQueue()}_attachListeners(e){"string"==typeof e&&(this._eventsNamespace=e),this.flushEventsQueue()}getEmitterTransforms(){return new Map}get _sessionAuthStatus(){return cn(this.store.getState())}_waitUntilSessionAuthorized(){switch(cn(this.store.getState())){case"authorized":return Promise.resolve(this);case"unknown":case"authorizing":return new Promise(((e,t)=>{const r=this.store.subscribe((()=>{const n=cn(this.store.getState()),o=un(this.store.getState());if("authorized"===n)e(this),r();else if("unauthorized"===n){const e=o?new bn(o.code,o.message):new Error("Unauthorized");t(e),r()}}))}));case"unauthorized":return Promise.reject(new Error("Unauthorized"))}}_setEmitterTransform({event:e,handler:t,local:r}){const n=this._getInternalEvent(e);(r?nr(e):!nr(e)&&this.eventNames().includes(n))&&this._emitterTransforms.set(n,t)}applyEmitterTransforms({local:e=!1}={local:!1}){this.getEmitterTransforms().forEach(((t,r)=>{Array.isArray(r)?r.forEach((r=>{this._setEmitterTransform({event:r,handler:t,local:e})})):this._setEmitterTransform({event:r,handler:t,local:e}),this._emitterTransforms.set(t.type,t)}))}setWorker(e,t){this._workers.set(e,t)}getWorkers(){return this._workers}attachWorkers(){this.getWorkers().forEach((({worker:e},t)=>{const r=this.store.runSaga(e,{instance:this,runSaga:this.store.runSaga});this._runningWorkers.push(r),this._workers.delete(t)}))}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},An=class extends Rn{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=cn(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(Sr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(wr())}},xn=class extends Rn{constructor(e){super(e),this.options=e,Tt(this,"subscribeMethod","signalwire.subscribe"),Tt(this,"subscribeParams",{}),this.applyEmitterTransforms({local:!0})}subscribe(){return new Promise((async(e,t)=>{const r=this.getSubscriptions();if(r.length>0){const e={method:this.subscribeMethod,params:wt(St({},this.subscribeParams),{event_channel:this.getStateProperty("eventChannel"),events:r})};try{this.applyEmitterTransforms(),this.attachWorkers(),await this.execute(e)}catch(e){return t(e)}}else this.logger.warn("`subscribe()` was called without any listeners attached.");return e(void 0)}))}},Ln={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(Ln).map((e=>`video.member.updated.${e}`));var jn=Ut(Ln);Object.keys(jn).map((e=>`member.updated.${e}`));var Dn={};Et(Dn,{RoomSessionPlaybackAPI:()=>uo,RoomSessionRecordingAPI:()=>ao,audioMuteMember:()=>Gn,audioUnmuteMember:()=>Xn,createRoomSessionPlaybackObject:()=>lo,createRoomSessionRecordingObject:()=>co,deafMember:()=>eo,getLayouts:()=>$n,getMembers:()=>Un,getPlaybacks:()=>Kn,getRecordings:()=>Hn,hideVideoMuted:()=>Bn,play:()=>Jn,removeMember:()=>io,setDeaf:()=>ro,setHideVideoMuted:()=>Fn,setInputSensitivityMember:()=>so,setInputVolumeMember:()=>no,setLayout:()=>qn,setOutputVolumeMember:()=>oo,showVideoMuted:()=>zn,startRecording:()=>Qn,undeafMember:()=>to,videoMuteMember:()=>Yn,videoUnmuteMember:()=>Zn});var Nn=()=>{},Vn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:St({room_session_id:this.roomSessionId},r)},t)}}),Wn=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=kt(n,["memberId"]);return this.execute({method:e,params:St({room_session_id:this.roomSessionId,member_id:o||this.memberId},s)},t)}}),$n=Vn("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),Un=Vn("video.members.get",{transformResolve:e=>({members:e.members})}),qn=Vn("video.set_layout",{transformResolve:Nn}),Bn=Vn("video.hide_video_muted",{transformResolve:Nn}),zn=Vn("video.show_video_muted",{transformResolve:Nn}),Fn={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:Nn})}},Hn=Vn("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Ut(e)))})}),Qn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(or("video.recording.start"),t);try{const e=await this.execute({method:"video.recording.start",params:{room_session_id:this.roomSessionId}});this.emit(or("video.recording.start"),wt(St({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(or("video.recording.start"),t),e}}))}},Kn=Vn("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Ut(e)))})}),Jn={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(or("video.playback.start"),r);try{const t=await this.execute({method:"video.playback.start",params:St({room_session_id:this.roomSessionId},e)});this.emit(or("video.playback.start"),wt(St({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(or("video.playback.start"),r),e}}))}},Gn=Wn("video.member.audio_mute",{transformResolve:Nn}),Xn=Wn("video.member.audio_unmute",{transformResolve:Nn}),Yn=Wn("video.member.video_mute",{transformResolve:Nn}),Zn=Wn("video.member.video_unmute",{transformResolve:Nn}),eo=Wn("video.member.deaf",{transformResolve:Nn}),to=Wn("video.member.undeaf",{transformResolve:Nn}),ro={value:function(e){return this.execute({method:e?"video.member.deaf":"video.member.undeaf",params:{room_session_id:this.roomSessionId,member_id:this.memberId}},{transformResolve:Nn})}},no=Wn("video.member.set_input_volume",{transformResolve:Nn}),oo=Wn("video.member.set_output_volume",{transformResolve:Nn}),so=Wn("video.member.set_input_sensitivity",{transformResolve:Nn}),io={value:function(e){var t=e,{memberId:r}=t,n=kt(t,["memberId"]);if(!r)throw new TypeError('Invalid or missing "memberId" argument');return this.execute({method:"video.member.remove",params:St({room_session_id:this.roomSessionId,member_id:r},n)},{transformResolve:Nn})}},ao=class extends Rn{async pause(){await this.execute({method:"video.recording.pause",params:{room_session_id:this.getStateProperty("roomSessionId"),recording_id:this.getStateProperty("id")}})}async resume(){await this.execute({method:"video.recording.resume",params:{room_session_id:this.getStateProperty("roomSessionId"),recording_id:this.getStateProperty("id")}})}async stop(){await this.execute({method:"video.recording.stop",params:{room_session_id:this.getStateProperty("roomSessionId"),recording_id:this.getStateProperty("id")}})}},co=e=>On({store:e.store,Component:ao,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),uo=class extends Rn{async pause(){await this.execute({method:"video.playback.pause",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id")}})}async resume(){await this.execute({method:"video.playback.resume",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id")}})}async stop(){await this.execute({method:"video.playback.stop",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id")}})}async setVolume(e){await this.execute({method:"video.playback.set_volume",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),volume:e}})}},lo=e=>On({store:e.store,Component:uo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),ho={};Et(ho,{BaseChatAPI:()=>Io,BaseChatConsumer:()=>To,ChatMember:()=>ko,ChatMessage:()=>wo,createBaseChatObject:()=>Oo,getMemberState:()=>So,getMembers:()=>yo,getMessages:()=>vo,publish:()=>go,setMemberState:()=>_o});var po=()=>{},mo=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),fo=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=kt(n,["memberId"]);return this.execute({method:e,params:St({member_id:o},s)},t)}}),go=mo("chat.publish",{transformResolve:po}),vo=mo("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Ut(e))),cursor:e.cursor})}),yo=mo("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Ut(e)))})}),bo=e=>{const t=(r=null==e?void 0:e.channels,Array.isArray(r)||"string"==typeof r?(e=>{const t=!e||Array.isArray(e)?e:[e];return Array.isArray(t)?t.map((e=>({name:e}))):[]})(e.channels):void 0);var r;return wt(St({},e),{channels:t})},_o=fo("chat.member.set_state",{transformResolve:po,transformParams:bo}),So=fo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:bo}),wo=class{constructor(e){this.payload=e}get id(){return this.payload.id}get member(){return this.payload.member}get channel(){return this.payload.channel}get content(){return this.payload.content}get meta(){return this.payload.meta}get publishedAt(){return this.payload.publishedAt}},ko=class{constructor(e){this.payload=e}get id(){return this.payload.id}get channel(){return this.payload.channel}get state(){var e;return null!=(e=this.payload.state)?e:{}}},Eo=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Se((e=>e.type.startsWith("chat.")));switch(Vt().debug("chatWorker:",t),t.type){case"chat.channel.message":yield we(e,{type:"chat.message",payload:t.payload});break;case"chat.member.joined":case"chat.member.updated":case"chat.member.left":yield we(e,t);break;default:Vt().warn("[chatWorker] Unrecognized Action",t)}}},Co=e=>e.map((e=>({name:e}))),To=class extends xn{constructor(e){super(e),Tt(this,"_eventsPrefix","chat"),Tt(this,"subscribeMethod","chat.subscribe"),this._attachListeners("")}_getChannelsParam(e,t){const r=!e||Array.isArray(e)?e:[e];if(!Array.isArray(r)||0===r.length)throw new Error(`Please specify one or more channels when calling .${t}()`);return{channels:Co(r)}}_setSubscribeParams(e){this.subscribeParams=St(St({},this.subscribeParams),e)}_getSubscribeParams({channels:e}){return St({},this._getChannelsParam(e,"subscribe"))}_getUnsubscribeParams({channels:e}){const t=this._getChannelsParam(e,"unsubscribe");return St({},t)}getWorkers(){return new Map([["chat",{worker:Eo}]])}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:e=>{const{channel:t,message:r}=e.params;return new wo(Ut(wt(St({},r),{channel:t})))},payloadTransform:e=>{const{channel:t,message:r}=e.params;return Ut(wt(St({},r),{channel:t}))}}],[["member.joined","member.left","member.updated"],{type:"chatMessage",instanceFactory:e=>{const{member:t}=e.params;return new ko(Ut(t))},payloadTransform:e=>{const{member:t}=e.params;return Ut(t)}}]])}async subscribe(e){const t=this._getSubscribeParams({channels:e});return this._setSubscribeParams(t),super.subscribe()}async unsubscribe(e){if("unknown"===this._sessionAuthStatus||"unauthorized"===this._sessionAuthStatus)throw new Error("You must be authenticated to unsubscribe from a channel");const t=this._getUnsubscribeParams({channels:e});return new Promise((async(e,r)=>{const n=this.getSubscriptions();if(n.length>0){const e={method:"chat.unsubscribe",params:wt(St({},t),{events:n})};try{await this.execute(e)}catch(e){return r(e)}}else this.logger.warn("`unsubscribe()` was called without any listeners attached.");return e(void 0)}))}updateToken(e){return new Promise(((t,r)=>{this.once("session.auth_error",(e=>{r(e)})),this.once("session.connected",(()=>{t()})),this.store.dispatch(gr.reauthAction({token:e}))}))}},Io=Qt(To,{publish:go,getMembers:yo,getMessages:vo,setMemberState:_o,getMemberState:So}),Oo=e=>On({store:e.store,Component:Io,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Mo=St({},on);const Po=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,Ro=()=>{if(!Po())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},Ao=(e={audio:!0,video:!0})=>{try{return Ro().getUserMedia(e)}catch(t){switch(t.name){case"Error":Vt().error("navigator.mediaDevices.getUserMedia doesn't seem to be supported.");break;case"NotFoundError":Vt().error("No media tracks of the type specified were found that satisfy the given constraints.");break;case"NotReadableError":Vt().error("Hardware error occurred at the operating system, browser, or Web page level which prevented access to the device. This could have been caused by having the Camera or Mic being user by another application.");break;case"OverconstrainedError":Vt().error(`The constraint: ${t.constraint} cannot be met by the selected device.`),Vt().info("List of available constraints:",Do());break;case"NotAllowedError":Vt().error("The user has mostly likely denied access to the device. This could also happen if the browsing context is insecure (using HTTP rather than HTTPS)");break;case"TypeError":0===Object.keys(e).length?Vt().error('Constraints can\'t be empty nor have "video" and "audio" set to false.'):Vt().error("Please check that you are calling this method from a secure context (using HTTPS rather than HTTP).");break;case"SecurityError":Vt().error("User media support is disabled on the Document on which getUserMedia() was called. The mechanism by which user media support is enabled and disabled is left up to the individual user agent.")}throw t}},xo=e=>Ro().getDisplayMedia(e),Lo=()=>Ro().enumerateDevices(),jo=async e=>{let t=await Lo().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},Do=()=>Ro().getSupportedConstraints(),No=e=>e&&e instanceof MediaStream,Vo=()=>"sinkId"in HTMLMediaElement.prototype,Wo=async(e,t)=>{if(null!==e)if("string"==typeof t)if(Vo())try{return await e.setSinkId(t)}catch(e){throw"SecurityError"===e.name?Vt().error(`You need to use HTTPS for selecting audio output device: ${e}`):Vt().error(`Error: ${e}`),e}else Vt().warn("Browser does not support output device selection.");else Vt().warn(`Invalid speaker deviceId: '${t}'`);else Vt().warn("No HTMLMediaElement to attach the speakerId")},$o=e=>{var t;No(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(Uo))},Uo=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},qo={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},Bo=e=>{if(e)return qo[e]},zo=async e=>{if("permissions"in navigator&&"function"==typeof navigator.permissions.query&&e)try{return"granted"===(await navigator.permissions.query({name:e})).state}catch(e){}return(async e=>{const t=await jo(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Vt().warn(`No ${e} devices to check for permissions!`),null)})(Bo(e))},Fo=()=>zo("camera"),Ho=()=>zo("microphone"),Qo=()=>zo("speaker"),Ko=async(e,t=!1)=>{if(!1===await zo(e)){const t=(e=>({audio:!e||"all"===e||"microphone"===e||"speaker"===e,video:!e||"all"===e||"camera"===e}))(e),r=await Ao(t);$o(r)}return Go(e,t)},Jo=(e,t={})=>{const r=[];return e.filter((({deviceId:e,kind:n,groupId:o})=>{var s;if(!e||t.targets&&!(null===(s=t.targets)||void 0===s?void 0:s.includes(n)))return!1;if(!o)return!0;const i=`${n}-${o}`,a=!(null==t?void 0:t.excludeDefault)||"default"!==e;return!(r.includes(i)||!a||(r.push(i),0))}))},Go=async(e,t=!1)=>{const r=await jo(Bo(e));return!0===t?r:Jo(r)},Xo=async(e,t,r)=>{const n=await Go(r,!0);for(let r=0;r<n.length;r++){const{deviceId:o,label:s}=n[r];if(e===o||t===s)return o}return null},Yo=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},Zo={camera:Fo,microphone:Ho,speaker:Qo},es=["camera","microphone","speaker"],ts=`Allowed targets are: '${es.join("', '")}'`,rs={speaker:Vo},ns=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:es).filter((e=>!!es.includes(e)||(Vt().warn(`We'll ignore the "${e}" target as it is not allowed. ${ts}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${ts}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>Zo[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in rs)||(null===(o=rs[s])||void 0===o?void 0:o.call(rs))?"supported":"unsupported"].push([s,!!r]),e}),{supported:[],unsupported:[]})})({targets:r});if(n.unsupported.length>0&&r.length===n.unsupported.length)throw new Error(`The platform doesn't support "${r.join(", ")}" as target/s, which means it's not possible to watch for changes on those devices.`);if(n.supported.every((([e,t])=>!t)))throw new Error("You must ask the user for permissions before being able to listen for device changes. Try calling getUserMedia() before calling `createDeviceWatcher()`.");let o=[];const s=n.supported.reduce(((e,[t,r])=>(r?e.push(t):o.push(t),e)),[]);if(s.length!==r.length){const e=n.unsupported.length>0?`The platform doesn't support "${n.unsupported.map((([e])=>e)).join(", ")}" as target/s, which means it's not possible to watch for changes on those devices. `:"",t=o.length>0?`The user hasn't granted permissions for the following targets: ${o.join(", ")}. `:"";Vt().warn(`${e}${t}We'll be watching for the following targets instead: "${s.join(", ")}"`)}return Vt().debug(`Watching these targets: "${s.join(", ")}"`),s})({targets:e.targets}),r=new lt,n=await Lo(),o=null==t?void 0:t.reduce(((e,t)=>{const r=Bo(t);return r&&e.push(r),e}),[]);let s=Jo(n,{excludeDefault:!0,targets:o});return Ro().addEventListener("devicechange",(async()=>{const e=await Lo(),t=s,n=Jo(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=Yo(e),n=Yo(e),o=[];Vt().debug("[_getDeviceListDiff] <- oldDevices",e),Vt().debug("[_getDeviceListDiff] -> newDevices",t);const s=t.filter((e=>{const t=e.deviceId,s=r.get(t);return s&&(n.delete(t),e.label!==s.label&&o.push(e)),void 0===s}));return{updated:o.map((e=>({type:"updated",payload:e}))),removed:Array.from(n,(([e,t])=>t)).map((e=>({type:"removed",payload:e}))),added:s.map((e=>({type:"added",payload:e})))}})(t,n),a=i.added.length>0,c=i.removed.length>0,u=i.updated.length>0;(a||c||u)&&r.emit("changed",{changes:i,devices:n}),a&&r.emit("added",{changes:i.added,devices:n}),c&&r.emit("removed",{changes:i.removed,devices:n}),u&&r.emit("updated",{changes:i.updated,devices:n})})),r},os=async e=>{Vt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)try{return await Ao(e)}catch(e){throw Vt().error("getUserMedia error: ",e),e}},ss=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await Xo(r,n,"microphone").catch((e=>null));e&&("boolean"==typeof t&&(t={}),t.deviceId={exact:e})}let{video:o=!1,camId:s}=e;const{camLabel:i=""}=e;if(s){const e=await Xo(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},is=e=>/^m=audio/.test(e),as=e=>/^m=video/.test(e),cs=e=>{const t=e.split("\r\n"),r=t.findIndex((e=>/^a=rtpmap/.test(e)&&/opus\/48000/.test(e)));if(r<0)return e;const n=(e=>{const t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),r=e.match(t);return r&&2==r.length?r[1]:null})(t[r]),o=new RegExp(`a=fmtp:${n}`),s=t.findIndex((e=>o.test(e)));return s>=0?/stereo=1;/.test(t[s])||(t[s]+="; stereo=1; sprop-stereo=1"):t[r]+=`\r\na=fmtp:${n} stereo=1; sprop-stereo=1`,t.join("\r\n")};class us{constructor(e,t){this.call=e,this.type=t,this._negotiating=!1,this.options=e.options,this.logger.debug("New Peer with type:",this.type,"Options:",this.options),this._onIce=this._onIce.bind(this)}get logger(){return Vt()}get isOffer(){return"offer"===this.type}get isAnswer(){return"answer"===this.type}get isSimulcast(){return!0===this.options.simulcast}get isSfu(){return!0===this.options.sfu}get localVideoTrack(){const e=this._getSenderByKind("video");return(null==e?void 0:e.track)||null}get localAudioTrack(){const e=this._getSenderByKind("audio");return(null==e?void 0:e.track)||null}get hasAudioSender(){return!!this._getSenderByKind("audio")}get hasVideoSender(){return!!this._getSenderByKind("video")}get hasAudioReceiver(){return!!this._getReceiverByKind("audio")}get hasVideoReceiver(){return!!this._getReceiverByKind("video")}get config(){const{rtcPeerConfig:e={}}=this.options,t=Object.assign({bundlePolicy:"max-compat",iceServers:this.call.iceServers,sdpSemantics:"unified-plan"},e);return this.logger.debug("RTC config",t),t}get localSdp(){var e,t;return null===(t=null===(e=this.instance)||void 0===e?void 0:e.localDescription)||void 0===t?void 0:t.sdp}stopTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to stop.`);n.track&&(Uo(n.track),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.removeTrack(n.track))}catch(t){this.logger.error("RTCPeer stopTrackSender error",e,t)}}async restoreTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to restore.`);if(n.track&&"ended"!==n.track.readyState)return this.logger.info(`There is already an active ${e} track.`);const o=await ss(this.options),s=await os({[e]:o[e]});if(s&&No(s)){const o=s.getTracks().find((t=>t.kind===e));o&&(await n.replaceTrack(o),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.addTrack(o))}}catch(t){this.logger.error("RTCPeer restoreTrackSender error",e,t)}}getDeviceId(e){try{const t=this._getSenderByKind(e);if(!t||!t.track)return null;const{deviceId:r=null}=t.track.getSettings();return r}catch(t){return this.logger.error("RTCPeer getDeviceId error",e,t),null}}getTrackSettings(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.getSettings():null}catch(t){return this.logger.error("RTCPeer getTrackSettings error",e,t),null}}getDeviceLabel(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.label:null}catch(t){return this.logger.error("RTCPeer getDeviceLabel error",e,t),null}}restartIceWithRelayOnly(){try{const e=this.instance.getConfiguration();if("relay"===e.iceTransportPolicy)return this.logger.warn("RTCPeer already with iceTransportPolicy relay only");const t=Object.assign(Object.assign({},e),{iceTransportPolicy:"relay"});this.instance.setConfiguration(t),this.instance.restartIce()}catch(e){this.logger.error("RTCPeer restartIce error",e)}}async applyMediaConstraints(e,t){try{const r=this._getSenderByKind(e);if(!r||!r.track)return this.logger.info("No sender to apply constraints",e,t);if("live"===r.track.readyState){const n=Object.assign(Object.assign({},r.track.getConstraints()),t),o=this.getDeviceId(e);o&&!this.options.screenShare&&(n.deviceId={exact:o}),this.logger.info(`Apply ${e} constraints`,this.call.id,n),await r.track.applyConstraints(n)}}catch(r){this.logger.error("Error applying constraints",e,t)}}_getSenderByKind(e){return this.instance.getSenders?this.instance.getSenders().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getSenders() not available."),null)}_getReceiverByKind(e){return this.instance.getReceivers?this.instance.getReceivers().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getReceivers() not available."),null)}async startNegotiation(e=!1){var t,r;if(this._negotiating)return this.logger.warn("Skip twice onnegotiationneeded!");this._negotiating=!0;try{if((this.options.additionalDevice||this.options.screenShare)&&(null===(r=(t=this.instance).getTransceivers)||void 0===r||r.call(t).forEach((e=>{e.direction="sendonly"}))),this.instance.removeEventListener("icecandidate",this._onIce),this.instance.addEventListener("icecandidate",this._onIce),this.isOffer){this.logger.debug("Trying to generate offer");const e=await this.instance.createOffer({voiceActivityDetection:!1});await this._setLocalDescription(e)}if(this.isAnswer){this.logger.debug("Trying to generate answer"),await this._setRemoteDescription({sdp:this.options.remoteSdp,type:"offer"});const e=await this.instance.createAnswer({voiceActivityDetection:!1});await this._setLocalDescription(e)}e&&this._sdpReady()}catch(e){this.logger.error(`Error creating ${this.type}:`,e)}}async onRemoteSdp(e){try{const t=this.isOffer?"answer":"offer";await this._setRemoteDescription({sdp:e,type:t}),this.isOffer&&this._resolveStartMethod()}catch(e){this.logger.error(`Error handling remote SDP on call ${this.call.id}:`,e),this.call.hangup(),this._rejectStartMethod(e)}}_setupRTCPeerConnection(){this.instance||(this.instance=new window.RTCPeerConnection(this.config),this._attachListeners())}async start(){return new Promise((async(e,t)=>{this._resolveStartMethod=e,this._rejectStartMethod=t;try{this.options.localStream=await this._retrieveLocalStream()}catch(e){return this.logger.error("Error retrieving a local stream",e),this._rejectStartMethod(e),this.call.setState("hangup")}this._setupRTCPeerConnection();const{localStream:r=null}=this.options;if(r&&No(r)){const e=r.getAudioTracks();this.logger.debug("Local audio tracks: ",e);const t=r.getVideoTracks();if(this.logger.debug("Local video tracks: ",t),this.isOffer&&"function"==typeof this.instance.addTransceiver){e.forEach((e=>{this.instance.addTransceiver(e,{direction:"sendrecv",streams:[r]})}));const n={direction:"sendrecv",streams:[r]};if(this.isSimulcast&&(n.sendEncodings=["0","1","2"].map((e=>({active:!0,rid:e,scaleResolutionDownBy:6*Number(e)||1})))),this.logger.debug("Applying video transceiverParams",n),t.forEach((e=>{this.instance.addTransceiver(e,n)})),this.isSfu){const{msStreamsNumber:e=5}=this.options;this.logger.debug("Add ",e,"recvonly MS Streams"),n.direction="recvonly";for(let t=0;t<Number(e);t++)this.instance.addTransceiver("video",n)}}else"function"==typeof this.instance.addTrack?(e.forEach((e=>{this.instance.addTrack(e,r)})),t.forEach((e=>{this.instance.addTrack(e,r)}))):this.instance.addStream(r)}this.isOffer?(this.options.negotiateAudio&&this._checkMediaToNegotiate("audio"),this.options.negotiateVideo&&this._checkMediaToNegotiate("video")):this.startNegotiation()}))}_checkMediaToNegotiate(e){if(!this._getSenderByKind(e)&&this.instance.addTransceiver){const t=this.instance.addTransceiver(e,{direction:"recvonly"});this.logger.debug("Add transceiver",e,t)}}async _sdpReady(){if(clearTimeout(this._iceTimeout),this._iceTimeout=null,!this.instance.localDescription)return;const{sdp:e,type:t}=this.instance.localDescription;if(-1===e.indexOf("candidate"))return this.logger.debug("No candidate - retry \n"),void this.startNegotiation(!0);this.logger.debug("LOCAL SDP \n",`Type: ${t}`,"\n\n",e),this.instance.removeEventListener("icecandidate",this._onIce);try{await this.call.onLocalSDPReady(this.instance.localDescription)}catch(e){this._rejectStartMethod(e)}}_onIce(e){this._iceTimeout||(this._iceTimeout=setTimeout((()=>this._sdpReady()),this.options.iceGatheringTimeout)),e.candidate?(this.logger.debug("IceCandidate:",e.candidate),this.call.emit("icecandidate",e)):this._sdpReady()}_setLocalDescription(e){const{useStereo:t,googleMaxBitrate:r,googleMinBitrate:n,googleStartBitrate:o}=this.options;return e.sdp&&t&&(e.sdp=cs(e.sdp)),e.sdp&&r&&n&&o&&(e.sdp=((e,t,r,n)=>{const o=e.split("\r\n");return o.forEach(((e,s)=>{/^a=fmtp:\d*/.test(e)?o[s]+=`;x-google-max-bitrate=${t};x-google-min-bitrate=${r};x-google-start-bitrate=${n}`:/^a=mid:(1|video)/.test(e)&&(o[s]+=`\r\nb=AS:${t}`)})),o.join("\r\n")})(e.sdp,r,n,o)),this.logger.debug("LOCAL SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setLocalDescription(e)}_setRemoteDescription(e){e.sdp&&this.options.useStereo&&(e.sdp=cs(e.sdp)),e.sdp&&this.instance.localDescription&&(e.sdp=((e,t)=>{const r="\r\n",n=this.instance.localDescription.sdp.split(r);if(n.findIndex(is)<n.findIndex(as))return e;const o=e.split(r),s=o.findIndex(is),i=o.findIndex(as),a=o.slice(s,i),c=o.slice(i,o.length-1);return[...o.slice(0,s),...c,...a,""].join(r)})(e.sdp));const t=e;return this.logger.debug("REMOTE SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setRemoteDescription(t)}async _retrieveLocalStream(){if(No(this.options.localStream))return this.options.localStream;const e=await ss(this.options);return os(e)}_attachListeners(){this.instance.addEventListener("signalingstatechange",(()=>{switch(this.logger.debug("signalingState:",this.instance.signalingState),this.instance.signalingState){case"stable":this._negotiating=!1;break;case"closed":delete this.instance;break;default:this._negotiating=!0}})),this.instance.addEventListener("negotiationneeded",(()=>{this.logger.debug("Negotiation needed event"),this.startNegotiation()})),this.instance.addEventListener("iceconnectionstatechange",(()=>{this.logger.debug("iceConnectionState:",this.instance.iceConnectionState)})),this.instance.addEventListener("icegatheringstatechange",(()=>{this.logger.debug("iceGatheringState:",this.instance.iceGatheringState)})),this.instance.addEventListener("track",(e=>{this.call.emit("track",e),this.options.remoteStream=e.streams[0]})),this.instance.addEventListener("addstream",(e=>{e.stream&&(this.options.remoteStream=e.stream)}))}}const ds={destinationNumber:"room",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:!0,video:{aspectRatio:16/9},useStereo:!1,attach:!1,screenShare:!1,additionalDevice:!1,userVariables:{},requestTimeout:1e4,autoApplyMediaParams:!0,iceGatheringTimeout:2e3};class ls extends Rn{constructor(e){super(e),this.nodeId="",this.gotEarly=!1,this.doReinvite=!1,this._eventsPrefix="video",this.state="new",this.prevState="new",this.options=Object.assign(Object.assign({},ds),e),this.setState("new"),this.logger.debug("New Call with Options:",this.options),this.applyEmitterTransforms({local:!0}),this.attachWorkers()}get id(){return this.__uuid}get active(){return"active"===this.state}get trying(){return"trying"===this.state}get memberId(){return this._memberId}get previewUrl(){return this._previewUrl}get roomId(){return this._roomId}get roomSessionId(){return this._roomSessionId}get localStream(){return this.options.localStream}get remoteStream(){return this.options.remoteStream}get iceServers(){var e,t;return null!==(t=null===(e=this.options)||void 0===e?void 0:e.iceServers)&&void 0!==t?t:this.select(Mo.getIceServers)}get messagePayload(){const{destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c}=this.options;return{sessid:this.options.sessionid,dialogParams:{id:this.__uuid,destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c}}}get cameraId(){return this.peer?this.peer.getDeviceId("video"):null}get cameraLabel(){return this.peer?this.peer.getDeviceLabel("video"):null}get microphoneId(){return this.peer?this.peer.getDeviceId("audio"):null}get microphoneLabel(){return this.peer?this.peer.getDeviceLabel("audio"):null}get withAudio(){return!!this.remoteStream&&this.remoteStream.getAudioTracks().length>0}get withVideo(){return!!this.remoteStream&&this.remoteStream.getVideoTracks().length>0}get localVideoTrack(){return this.peer.localVideoTrack}get localAudioTrack(){return this.peer.localAudioTrack}vertoExecute(e){const t={message:e,node_id:this.nodeId};return"verto.invite"===e.method&&(t.subscribe=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions()),this.execute({method:"video.message",params:t})}onStateChange(e){switch(this.logger.debug("onStateChange",e),e.state){case"hangup":this._hangup(e);break;default:this.setState(e.state)}}onRemoteSDP(e){this.logger.debug("onRemoteSDP",e),e.remoteSDP&&this.peer.onRemoteSdp(e.remoteSDP)}onRoomSubscribed(e){this.logger.debug("onRoomSubscribed",e),this.nodeId=e.nodeId,this._roomId=e.roomId,this._roomSessionId=e.roomSessionId,this._memberId=e.memberId,this._previewUrl=e.previewUrl,this._attachListeners(this.options.additionalDevice||this.options.screenShare?e.memberId:e.roomSessionId),this.applyEmitterTransforms()}onVideoConstraints(e){this.logger.debug("onVideoConstraints",e),(null==e?void 0:e.videoConstraints)&&this.peer.applyMediaConstraints("video",e.videoConstraints)}onAudioConstraints(e){this.logger.debug("onAudioConstraints",e),(null==e?void 0:e.audioConstraints)&&this.peer.applyMediaConstraints("audio",e.audioConstraints)}updateCamera(e){return this.updateConstraints({video:Object.assign({aspectRatio:16/9},e)})}updateMicrophone(e){return this.updateConstraints({audio:e})}manageSendersWithConstraints(e){return!1===e.audio&&(this.logger.info("Switching off the microphone"),this.stopOutboundAudio()),!1===e.video&&(this.logger.info("Switching off the camera"),this.stopOutboundVideo()),e.audio||e.video}updateConstraints(e){return new Promise((async(t,r)=>{try{if(this.logger.debug("updateConstraints trying constraints",this.__uuid,e),!Object.keys(e).length)return this.logger.warn("Invalid constraints:",e);if(!this.manageSendersWithConstraints(e))return void this.logger.debug("Either `video` and `audio` (or both) constraints were set to `false` so their corresponding senders (if any) were stopped");const r=await Ao(e);this.logger.debug("updateConstraints got stream",r),this.options.localStream||(this.options.localStream=new MediaStream);const{instance:n}=this.peer,o=r.getTracks();for(let e=0;e<o.length;e++){const t=o[e];this.logger.debug("updateConstraints apply track: ",t);const r=n.getTransceivers().find((({mid:e,sender:r,receiver:n})=>r.track&&r.track.kind===t.kind?(this.logger.debug("Found transceiver by sender"),!0):n.track&&n.track.kind===t.kind?(this.logger.debug("Found transceiver by receiver"),!0):null===e&&(this.logger.debug("Found disassociated transceiver"),!0)));r&&r.sender?(this.logger.debug("updateConstraints FOUND - replaceTrack on it and on localStream"),await r.sender.replaceTrack(t),this.logger.debug("updateConstraints replaceTrack SUCCESS"),this.options.localStream.getTracks().forEach((e=>{var r;e.kind===t.kind&&e.id!==t.id&&(this.logger.debug("updateConstraints stop old track and apply new one - "),Uo(e),null===(r=this.options.localStream)||void 0===r||r.removeTrack(e))})),this.options.localStream.addTrack(t)):(this.logger.debug("updateConstraints NOT FOUND - addTrack and start dancing!"),this.peer.type="offer",this.doReinvite=!0,this.options.localStream.addTrack(t),n.addTrack(t,this.options.localStream)),this.logger.debug("updateConstraints Simply update mic/cam"),"audio"===t.kind?this.options.micId=t.getSettings().deviceId:"video"===t.kind&&(this.options.camId=t.getSettings().deviceId)}this.logger.debug("updateConstraints done!"),t()}catch(e){this.logger.error("updateConstraints",e),r(e)}}))}invite(){return new Promise((async(e,t)=>{this.direction="outbound",this.peer=new us(this,"offer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Invite error",e),t(e)}}))}answer(){return new Promise((async(e,t)=>{this.direction="inbound",this.peer=new us(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){const{type:t,sdp:r}=e,n=this._mungeSDP(r);switch(this.logger.debug("MUNGED SDP \n",`Type: ${t}`,"\n\n",n),t){case"offer":return this.executeInvite(n);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${t}' on call ${this.id}`)}}async executeInvite(e){this.setState("requesting");try{const t=hr(Object.assign(Object.assign({},this.messagePayload),{sdp:e})),r=await this.vertoExecute(t);this.logger.debug("Invite response",r)}catch(e){throw this.setState("hangup"),e.jsonrpc}}async hangup(){try{const e=pr(this.messagePayload);await this.vertoExecute(e)}catch(e){this.logger.error("Hangup error:",e)}finally{this._hangup()}}dtmf(e){const t=mr(Object.assign(Object.assign({},this.messagePayload),{dtmf:e}));this.vertoExecute(t)}doReinviteWithRelayOnly(){this.peer&&this.active&&this.peer.restartIceWithRelayOnly()}stopOutboundAudio(){this.peer&&this.active&&this.peer.stopTrackSender("audio")}restoreOutboundAudio(){this.peer&&this.active&&this.peer.restoreTrackSender("audio")}stopOutboundVideo(){this.peer&&this.active&&this.peer.stopTrackSender("video")}restoreOutboundVideo(){this.peer&&this.active&&this.peer.restoreTrackSender("video")}setState(e){switch(this.prevState=this.state,this.state=e,this.logger.debug(`Call ${this.id} state change from ${this.prevState} to ${this.state}`),this.emit(this.state,this),e){case"purge":this._finalize();break;case"hangup":this.setState("destroy");break;case"destroy":this._finalize()}}_hangup(e={}){const{byeCause:t="NORMAL_CLEARING",byeCauseCode:r="16",redirectDestination:n}=e;return this.cause=t,this.causeCode=r,n&&this.peer.localSdp?(this.logger.debug("Redirect Destination to:",n),this.nodeId=n,this.executeInvite(this.peer.localSdp)):this.setState("hangup")}_mungeSDP(e){return e}_finalize(){this.peer&&this.peer.instance&&(this.peer.instance.close(),delete this.peer);const{remoteStream:e,localStream:t}=this.options;$o(e),$o(t),this.destroy()}}const hs=e=>`sw-sdk-${e}`,ps=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e},ms=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),fs=e=>t=>{const r=document.getElementById(hs(t));r&&(r.style.display=e)},gs=gr.createAction("swJs/audioSetSpeakerAction");function*vs({element:e,room:t}){const r=gr.getCustomSagaActionType(t.__uuid,gs);for(;;){const n=yield Se([r]);try{switch(n.type){case r:const o=yield Ee(Wo,e,n.payload);t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:o,kind:"resolve"})}}catch(e){t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:e,kind:"reject"}),Vt().error(e)}}}function*ys({track:e,element:t,speakerId:r,room:n}){(({track:e,element:t})=>{t.autoplay=!0,t.playsinline=!0,t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({track:e,element:t}),r&&Wo(t,r).catch((()=>{})),yield Ce(vs,{element:t,room:n})}function*bs({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:n}){(r=>{if((({track:e,element:t})=>{t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({element:n,track:r}),n.style.width="100%",!t)return void e.appendChild(n);const o=document.createElement("div");o.style.position="absolute",o.style.top="0",o.style.left="0",o.style.right="0",o.style.bottom="0",o.appendChild(n);const s=document.createElement("div");s.style.paddingBottom="56.25%",s.appendChild(o);const i=document.createElement("div");i.classList.add("mcuLayers"),s.appendChild(i);const a=document.createElement("div");a.style.position="relative",a.style.width="100%",a.style.margin="0 auto",a.appendChild(s),e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.appendChild(a)})(r)}const _s={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},Ss={echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},ws=Qt(class extends ls{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Dn.audioMuteMember,audioUnmute:Dn.audioUnmuteMember,videoMute:Dn.videoMuteMember,videoUnmute:Dn.videoUnmuteMember,setMicrophoneVolume:Dn.setInputVolumeMember,setInputVolume:Dn.setInputVolumeMember,setInputSensitivity:Dn.setInputSensitivityMember}),ks=Qt(class extends ls{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Dn.audioMuteMember,audioUnmute:Dn.audioUnmuteMember,videoMute:Dn.videoMuteMember,videoUnmute:Dn.videoUnmuteMember,setInputVolume:Dn.setInputVolumeMember,setMicrophoneVolume:Dn.setInputVolumeMember,setInputSensitivity:Dn.setInputSensitivityMember}),Es=()=>{},Cs="video.memberList.updated",Ts=Bt({event:Cs}),Is=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Ot),e)),[]).join(".")})(Ts),Os=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*Ms({pubSubChannel:e}){const t=new Map;function*r(r){const n={room_session_id:"video.room.joined"===r.type?r.payload.room_session.id:r.payload.room_session_id,members:(({action:e,memberList:t})=>{const r=(e=>"video.room.joined"===e.type?e.payload.room_session.members:[e.payload.member])(e);switch(e.type){case"video.member.left":r.forEach((e=>{t.delete(e.id)}));break;default:r.forEach((e=>{t.set(e.id,e)}))}return Array.from(t.values())})({action:r,memberList:t})};yield we(e,{type:Is,payload:n})}for(;;){const t=yield Se(e,(({type:e})=>Os.includes(e)));yield Ce(r,t)}}const Ps=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(Ts))))(r))return;const{cleanup:n}=((e,t)=>{(e=>rr(Os).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,Es)}));const r=({members:t})=>{e.emit(Cs,{members:t})};return e.on(Is,r),{cleanup:()=>{e.off(Is,r)}}})(t,r);yield Ce(Ms,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},Rs=Qt(class extends ls{_screenShareList=new Set;_deviceList=new Set;get screenShareList(){return Array.from(this._screenShareList)}get deviceList(){return Array.from(this._deviceList)}getEmitterTransforms(){return new Map([[[or("video.recording.start"),"video.recording.started","video.recording.updated","video.recording.ended"],{type:"roomSessionRecording",instanceFactory:e=>Dn.createRoomSessionRecordingObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Ut({...e.recording,room_session_id:this.roomSessionId})}],[[or("video.playback.start"),"video.playback.started","video.playback.updated","video.playback.ended"],{type:"roomSessionPlayback",instanceFactory:e=>Dn.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Ut({...e.playback,room_session_id:this.roomSessionId})}]])}attachPreConnectWorkers(){this.setWorker("memberListUpdated",{worker:Ps}),this.attachWorkers()}async createScreenShareObject(e={}){return this.startScreenShare(e)}async startScreenShare(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!0}=e,o=await xo({audio:!0===r?Ss:r,video:n}),s={...this.options,screenShare:!0,recoverCall:!1,localStream:o,remoteStream:void 0,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId}},i=On({store:this.store,Component:ws,componentListeners:_s})(s);o.getVideoTracks().forEach((e=>{e.addEventListener("ended",(()=>{i&&i.active&&i.leave()}))})),i.on("destroy",(()=>{this._screenShareList.delete(i)}));try{return this._screenShareList.add(i),t&&await i.join(),i}catch(e){throw this.logger.error("ScreenShare Error",e),e}}addCamera(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,video:r})}addMicrophone(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,audio:r})}async addDevice(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!1}=e;if(!r&&!n)throw new TypeError("At least one of `audio` or `video` must be requested.");const o={...this.options,localStream:void 0,remoteStream:void 0,audio:r,video:n,additionalDevice:!0,recoverCall:!1,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId}},s=On({store:this.store,Component:ks,componentListeners:_s})(o);s.on("destroy",(()=>{this._deviceList.delete(s)}));try{return this._deviceList.add(s),t&&await s.join(),s}catch(e){throw this.logger.error("RoomDevice Error",e),e}}join(){return super.invite()}leave(){return this.hangup()}updateSpeaker({deviceId:e}){return this.triggerCustomSaga(gs(e))}async hangup(){return this._screenShareList.forEach((e=>{e.leave()})),this._deviceList.forEach((e=>{e.leave()})),super.hangup()}_finalize(){this._screenShareList.clear(),this._deviceList.clear(),super._finalize()}getLayoutList(){return this.getLayouts()}getMemberList(){return this.getMembers()}},{audioMute:Dn.audioMuteMember,audioUnmute:Dn.audioUnmuteMember,videoMute:Dn.videoMuteMember,videoUnmute:Dn.videoUnmuteMember,deaf:Dn.deafMember,undeaf:Dn.undeafMember,setInputVolume:Dn.setInputVolumeMember,setOutputVolume:Dn.setOutputVolumeMember,setMicrophoneVolume:Dn.setInputVolumeMember,setSpeakerVolume:Dn.setOutputVolumeMember,setInputSensitivity:Dn.setInputSensitivityMember,removeMember:Dn.removeMember,getMembers:Dn.getMembers,getLayouts:Dn.getLayouts,setLayout:Dn.setLayout,hideVideoMuted:Dn.hideVideoMuted,showVideoMuted:Dn.showVideoMuted,getRecordings:Dn.getRecordings,startRecording:Dn.startRecording,getPlaybacks:Dn.getPlaybacks,play:Dn.play,setHideVideoMuted:Dn.setHideVideoMuted});class As extends xn{_eventsPrefix="cantina-manager";getEmitterTransforms(){return new Map([[["cantina-manager.rooms.subscribed"],{type:"roomSession",instanceFactory:({rooms:e})=>({rooms:e.map((e=>Ut(e)))}),payloadTransform:({rooms:e})=>({rooms:e.map((e=>Ut(e)))})}],[["cantina-manager.room.started","cantina-manager.room.added","cantina-manager.room.updated","cantina-manager.room.ended","cantina-manager.room.deleted"],{type:"roomSession",instanceFactory:e=>Ut(e),payloadTransform:e=>Ut(e)}]])}}class xs extends An{_cantina;_chat;get rooms(){return{makeRoomObject:e=>{const{rootElement:t,applyLocalVideoOverlay:r=!0,stopCameraWhileMuted:n=!0,stopMicrophoneWhileMuted:o=!0,...s}=e,i=[];i.push((({speakerId:e})=>function*({instance:t,runSaga:r}){try{const n=new Audio;let o;const s=function(i){switch(i.track.kind){case"audio":o=r(ys,{track:i.track,element:n,speakerId:e,room:t}),t.off("track",s)}};t.on("track",s),t.once("destroy",(()=>{o?.cancel()}))}catch(e){Vt().error("audioElementSaga",e)}})({speakerId:s.speakerId})),t&&i.push((({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:n}){try{const o=new Map,s=ps(),i=(({layerMap:e,element:t,rootElement:r})=>async({layout:n,myMemberId:o,localStream:s})=>{try{const{layers:i=[]}=n,a=i.find((({member_id:e})=>e===o)),c=hs(o);let u=e.get(c);if(!a)return void(u&&(Vt().debug("Current layer not visible"),u.style.display="none"));if(!u){u=await(async({location:e,element:t})=>{t.readyState===HTMLMediaElement.HAVE_NOTHING&&await(({element:e})=>new Promise((t=>{e.addEventListener("canplay",(function r(){e.removeEventListener("canplay",r),t()})),e.addEventListener("resize",(function r(){e.removeEventListener("resize",r),t()}))})))({element:t});const{top:r,left:n,width:o,height:s}=ms(e),i=document.createElement("div");return i.style.position="absolute",i.style.overflow="hidden",i.style.top=r,i.style.left=n,i.style.width=o,i.style.height=s,i})({element:t,location:a}),u.id=c;const n=ps();n.srcObject=s,n.style.width="100%",n.style.height="100%",u.appendChild(n);const o=r.querySelector(".mcuLayers"),i=document.getElementById(c);return void(o&&!i&&(o.appendChild(u),e.set(c,u)))}const{top:d,left:l,width:h,height:p}=ms(a);u.style.display="block",u.style.top=d,u.style.left=l,u.style.width=h,u.style.height=p}catch(e){Vt().error("Layout Changed Error",e)}})({rootElement:e,element:s,layerMap:o}),a=fs("none"),c=fs("block");let u;r.on("layout.changed",(e=>{r.peer.hasVideoSender&&r.localStream&&i({layout:e.layout,localStream:r.localStream,myMemberId:r.memberId})})),r.on("member.updated.video_muted",(e=>{try{const{member:t}=e;t.id===r.memberId&&"video_muted"in t&&(t.video_muted?a(t.id):c(t.id))}catch(e){Vt().error("Error handling video_muted",e)}}));const d=function(o){switch(o.track.kind){case"video":u=n(bs,{applyLocalVideoOverlay:t,rootElement:e,track:o.track,element:s}),r.off("track",d)}};r.on("track",d),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),o.clear(),u?.cancel()}))}catch(e){Vt().error("videoElementSaga",e)}})({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},On({store:c.store,customSagas:c.customSagas,Component:Rs,componentListeners:_s})(c));var c;return o&&a.on("member.updated.audio_muted",(({member:e})=>{try{e.id===a.memberId&&"audio_muted"in e&&(e.audio_muted?a.stopOutboundAudio():a.restoreOutboundAudio())}catch(e){this.logger.error("Error handling audio_muted",e)}})),n&&a.on("member.updated.video_muted",(({member:e})=>{try{e.id===a.memberId&&"video_muted"in e&&(e.video_muted?a.stopOutboundVideo():a.restoreOutboundVideo())}catch(e){this.logger.error("Error handling video_muted",e)}})),a}}}get chat(){return this._chat||(this._chat=ho.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get cantina(){return this._cantina||(this._cantina=(e=>{const t=On({store:e.store,Component:As,componentListeners:{errors:"onError",responses:"onSuccess"}})(e);return new Proxy(t,{get:(e,t,r)=>"_eventsNamespace"===t?"":"eventChannel"===t?"cantina-manager.rooms":Reflect.get(e,t,r)})})(this.options)),this._cantina}reauthenticate(e){this.store.dispatch(gr.reauthAction({token:e}))}}class Ls extends class extends class{constructor(e){var t,r;this.options=e,Tt(this,"uuid",l()),Tt(this,"WebSocketConstructor"),Tt(this,"agent"),Tt(this,"connectVersion",ar),Tt(this,"_rpcConnectResult"),Tt(this,"_requests",new Map),Tt(this,"_socket",null),Tt(this,"_host","wss://relay.signalwire.com"),Tt(this,"_executeTimeoutMs",1e4),Tt(this,"_executeTimeoutError",Symbol.for("sw-execute-timeout")),Tt(this,"_checkPingDelay",15e3),Tt(this,"_checkPingTimer",null),Tt(this,"_status","unknown");const{host:n,logLevel:o="info"}=e;n&&(this._host=(e=>`${Yt.test(e)?"":"wss://"}${e}`)(n)),o&&(null==(r=(t=this.logger).setLevel)||r.call(t,o)),this._onSocketOpen=this._onSocketOpen.bind(this),this._onSocketError=this._onSocketError.bind(this),this._onSocketClose=this._onSocketClose.bind(this),this._onSocketMessage=this._onSocketMessage.bind(this),this.execute=this.execute.bind(this),this.connect=this.connect.bind(this)}get host(){return this._host}get rpcConnectResult(){return this._rpcConnectResult}get relayProtocol(){var e,t;return null!=(t=null==(e=this._rpcConnectResult)?void 0:e.protocol)?t:""}get signature(){var e,t;return null==(t=null==(e=this._rpcConnectResult)?void 0:e.authorization)?void 0:t.signature}get logger(){return Vt()}get connecting(){var e;return 0===(null==(e=this._socket)?void 0:e.readyState)}get connected(){var e;return 1===(null==(e=this._socket)?void 0:e.readyState)}get closing(){var e;return 2===(null==(e=this._socket)?void 0:e.readyState)}get closed(){return!this._socket||3===this._socket.readyState}get status(){return this._status}set token(e){this.options.token=e}connect(){(null==this?void 0:this.WebSocketConstructor)?this._socket?this.logger.warn("Session already connected."):(this._socket=this._createSocket(),this._socket.addEventListener("open",this._onSocketOpen),this._socket.addEventListener("close",this._onSocketClose),this._socket.addEventListener("error",this._onSocketError),this._socket.addEventListener("message",this._onSocketMessage)):this.logger.error("Missing WebSocketConstructor")}_createSocket(){return new this.WebSocketConstructor(this._host)}async disconnect(){this._socket&&!this.closing?(clearTimeout(this._checkPingTimer),this._requests.clear(),this._closeConnection("disconnected")):this.logger.warn("Session not connected or already in closing state.")}execute(e){if("idle"===this._status||!this.connected)return Promise.reject("Can't call `execute` when Session is not authorized.");let t;return t="params"in e?new Promise(((t,r)=>{this._requests.set(e.id,{rpcRequest:e,resolve:t,reject:r})})):Promise.resolve(),this.logger.wsTraffic({type:"send",payload:e}),this._socket.send(this.encode(e)),((e,t,r)=>{let n=null;return Promise.race([e,new Promise(((e,o)=>n=setTimeout(o,t,r)))]).finally((()=>clearTimeout(n)))})(t,this._executeTimeoutMs,this._executeTimeoutError).catch((t=>{if(t!==this._executeTimeoutError)throw t;this.logger.error("Request Timeout",e),this._closeConnection("reconnecting")}))}async authenticate(){const e={agent:this.agent,version:this.connectVersion,authentication:{project:this.options.project,token:this.options.token}};this._relayProtocolIsValid()&&(e.protocol=this.relayProtocol),this._rpcConnectResult=await this.execute(cr(e))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Ir())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Tr({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(Pr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=e.code>=1006&&e.code<=1014?"reconnecting":"disconnected",this.dispatch(Mr()),this._socket=null}_onSocketMessage(e){const t=this.decode(e.data);if(this.logger.wsTraffic({type:"recv",payload:t}),!Boolean(t.method)){const e=this._requests.get(t.id);if(e){const{rpcRequest:r,resolve:n,reject:o}=e;this._requests.delete(t.id);const{result:s,error:i}=(({response:e,request:t})=>{const{result:r={},error:n}=e;if(n)return{error:n};switch(t.method){case"signalwire.connect":return{result:r};default:return Wt(e)}})({response:t,request:r});return i?o(i):n(s)}return this.logger.warn("Unknown request for",t)}var r;switch(t.method){case"signalwire.ping":case"blade.ping":return this._pingHandler(t);case"signalwire.disconnect":this.execute((r=t.id,ir({id:r,result:{}}))).catch((e=>{this.logger.error("SwDisconnect Error",e)})).finally((()=>{this._status="idle"}));break;default:this.dispatch(Rr(t)),this._handleWebSocketMessage(t)}}_handleWebSocketMessage(e){}dispatch(e){throw new Error("Method not implemented")}_relayProtocolIsValid(){var e;return this.signature&&(null==(e=null==this?void 0:this.relayProtocol)?void 0:e.split("_")[1])===this.signature}encode(e){return JSON.stringify(e)}decode(e){return Xt(e)}async _pingHandler(e){var t,r,n;clearTimeout(this._checkPingTimer),this._checkPingTimer=setTimeout((()=>{this._closeConnection("reconnecting")}),this._checkPingDelay),await this.execute((r=e.id,n=null==(t=null==e?void 0:e.params)?void 0:t.timestamp,ir({id:r,result:{timestamp:n||Date.now()/1e3}})))}_closeConnection(e){this._status=e,this.dispatch(Br.authStatus("unknown")),this.dispatch(kr()),this._socket&&(this._socket.close(),this._socket=null)}}{constructor(e){super(e),this.options=e,Tt(this,"_expiredDiffSeconds",0),Tt(this,"_refreshTokenNotificationDiff",120),Tt(this,"_checkTokenExpirationDelay",2e4),Tt(this,"_checkTokenExpirationTimer",null),this._checkTokenExpiration=this._checkTokenExpiration.bind(this),this.reauthenticate=this.reauthenticate.bind(this)}get expiresAt(){var e,t,r;const n=null!=(r=null==(t=null==(e=null==this?void 0:this._rpcConnectResult)?void 0:e.authorization)?void 0:t.expires_at)?r:0;if("string"==typeof n){const e=Date.parse(n);if(!isNaN(e))return Math.floor(e/1e3)}return n}get expiresIn(){const e=Math.floor(Date.now()/1e3);return this.expiresAt-e}get expired(){return this.expiresIn<=this._expiredDiffSeconds}async authenticate(){const e={agent:this.agent,version:this.connectVersion,authentication:{jwt_token:this.options.token}};if(this._relayProtocolIsValid())e.protocol=this.relayProtocol;else if(this.signature){const r=await(t=this.signature,(async(e,t)=>{if("undefined"==typeof window&&"undefined"!=typeof process)return null;const r=window.sessionStorage.getItem((e=>`@signalwire:${e}`)(t));return Xt(r)})(0,t));r&&(e.protocol=r)}var t;this._rpcConnectResult=await this.execute(cr(e)),this._checkTokenExpiration()}async reauthenticate(){if(this.expired)return this.connect();const e={project:this._rpcConnectResult.authorization.project,jwt_token:this.options.token};try{this._rpcConnectResult=await this.execute((t=e,sr({method:"signalwire.reauthenticate",params:{authentication:t}})))}catch(e){throw clearTimeout(this._checkTokenExpirationTimer),e}var t}_onSocketClose(e){clearTimeout(this._checkTokenExpirationTimer),super._onSocketClose(e)}_checkTokenExpiration(){this.expiresAt&&(this.expiresIn<=this._refreshTokenNotificationDiff&&(this.dispatch(Or()),this.options._onRefreshToken?this.options._onRefreshToken():this.logger.warn("The token is going to expire!")),clearTimeout(this._checkTokenExpirationTimer),this.expired||(this._checkTokenExpirationTimer=setTimeout(this._checkTokenExpiration,this._checkTokenExpirationDelay)))}}{WebSocketConstructor=WebSocket;agent="@signalwire/js/3.8.0"}const js=e=>{const t={...e,emitter:new lt},r=Mn({userOptions:t,SessionConstructor:Ls});return On({store:r,Component:xs,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)};var Ds=Object.freeze({__proto__:null,ChatMember:ho.ChatMember,ChatMessage:ho.ChatMessage,Client:function(e){Vt().warn("`Chat` is still under development and may change in the future without prior notice.");const t=js(e),r=async e=>(await t.connect(),t.chat.subscribe(e)),n=async e=>(await t.connect(),t.chat.publish(e));return new Proxy(t.chat,{get:(e,t,o)=>"subscribe"===t?r:"publish"===t?n:Reflect.get(e,t,o)})}});const Ns={aspectRatio:{ideal:16/9}},Vs=e=>new Promise((async(t,r)=>{const{audio:n=!0,video:o=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:u=!0,stopMicrophoneWhileMuted:d=!0,speakerId:l,...h}=e,p=js({...h});if(await p.connect(),!p)return;let m;if(i){const e=document.getElementById(i);e?m=e:(m=document.body,Vt().warn(`We couldn't find an element with id: ${i}: using 'document.body' instead.`))}const f=p.rooms.makeRoomObject({audio:n,video:!0===o?Ns:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:u,stopMicrophoneWhileMuted:d,speakerId:l});if(f.once("destroy",(()=>{p.disconnect()})),c)try{await f.join(),t(f)}catch(e){r(e)}else t(f)})),Ws={aspectRatio:{ideal:16/9}},$s=["audioMute","audioUnmute","deaf","getLayouts","getMembers","getRecordings","hideVideoMuted","leave","removerMember","restoreOutboundAudio","restoreOutboundVideo","setInputSensitivity","setInputVolume","setLayout","setOutputVolume","showVideoMuted","startRecording","stopOutboundAudio","stopOutboundVideo","undeaf","videoMute","videoUnmute","setMicrophoneVolume","setSpeakerVolume"];var Us=Object.freeze({__proto__:null,RoomSession:function(e){const{audio:t=!0,video:r=!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s=!0,stopCameraWhileMuted:i=!0,stopMicrophoneWhileMuted:a=!0,speakerId:c,...u}=e,d=js(u),l=d.rooms.makeRoomObject({audio:t,video:!0===r?Ws:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{d.disconnect()}));const h={join:()=>new Promise((async(e,t)=>{try{l.attachPreConnectWorkers(),await d.connect(),l.once("room.subscribed",(()=>{e(l)})),await l.join()}catch(e){Vt().error("RoomSession Join",e),t(e)}}))};return new Proxy(l,{get(e,t,r){if(t in h)return h[t];if(!e.active&&$s.includes(t))throw new Error(`Tried to access the property/method "${t}" before the room was connected. Please call roomSession.join() first.`);return Reflect.get(e,t,r)}})},createRoomObject:Vs,joinRoom:e=>Vs({...e,autoJoin:!0}),createClient:js}),qs=Object.freeze({__proto__:null,getDevices:Go,getCameraDevices:()=>Go("camera"),getMicrophoneDevices:()=>Go("microphone"),getSpeakerDevices:()=>Go("speaker"),getDevicesWithPermissions:Ko,getCameraDevicesWithPermissions:()=>Ko("camera"),getMicrophoneDevicesWithPermissions:()=>Ko("microphone"),getSpeakerDevicesWithPermissions:()=>Ko("speaker"),checkPermissions:zo,checkCameraPermissions:Fo,checkMicrophonePermissions:Ho,checkSpeakerPermissions:Qo,requestPermissions:async e=>{try{const t=await Ao(e);$o(t)}catch(e){throw e}},createDeviceWatcher:ns,createCameraDeviceWatcher:()=>ns({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>ns({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>ns({targets:["speaker"]}),supportsMediaDevices:Po,supportsGetUserMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)},supportsGetDisplayMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getDisplayMedia)},getUserMedia:Ao,getDisplayMedia:xo,enumerateDevices:Lo,getSupportedConstraints:Do,supportsMediaOutput:Vo,setMediaElementSinkId:Wo,stopStream:$o,stopTrack:Uo});e.Chat=Ds,e.Video=Us,e.WebRTC=qs,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SignalWire={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r={exports:{}};!function(e){var r,n;r=t,n=function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function o(e,t){var r=e[t];if("function"==typeof r.bind)return r.bind(e);try{return Function.prototype.bind.call(r,e)}catch(t){return function(){return Function.prototype.apply.apply(r,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(n){return"debug"===n&&(n="log"),typeof console!==t&&("trace"===n&&r?s:void 0!==console[n]?o(console,n):void 0!==console.log?o(console,"log"):e)}function a(t,r){for(var o=0;o<n.length;o++){var s=n[o];this[s]=o<t?e:this.methodFactory(s,t,r)}this.log=this.debug}function c(e,r,n){return function(){typeof console!==t&&(a.call(this,r,n),this[e].apply(this,arguments))}}function u(e,t,r){return i(e)||c.apply(this,arguments)}function d(e,r,o){var s,i=this;r=null==r?"WARN":r;var c="loglevel";function d(){var e;if(typeof window!==t&&c){try{e=window.localStorage[c]}catch(e){}if(typeof e===t)try{var r=window.document.cookie,n=r.indexOf(encodeURIComponent(c)+"=");-1!==n&&(e=/^([^;]+)/.exec(r.slice(n))[1])}catch(e){}return void 0===i.levels[e]&&(e=void 0),e}}"string"==typeof e?c+=":"+e:"symbol"==typeof e&&(c=void 0),i.name=e,i.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},i.methodFactory=o||u,i.getLevel=function(){return s},i.setLevel=function(r,o){if("string"==typeof r&&void 0!==i.levels[r.toUpperCase()]&&(r=i.levels[r.toUpperCase()]),!("number"==typeof r&&r>=0&&r<=i.levels.SILENT))throw"log.setLevel() called with invalid level: "+r;if(s=r,!1!==o&&function(e){var r=(n[e]||"silent").toUpperCase();if(typeof window!==t&&c){try{return void(window.localStorage[c]=r)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"="+r+";"}catch(e){}}}(r),a.call(i,r,e),typeof console===t&&r<i.levels.SILENT)return"No console available for logging"},i.setDefaultLevel=function(e){r=e,d()||i.setLevel(e,!1)},i.resetLevel=function(){i.setLevel(r,!1),function(){if(typeof window!==t&&c){try{return void window.localStorage.removeItem(c)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},i.enableAll=function(e){i.setLevel(i.levels.TRACE,e)},i.disableAll=function(e){i.setLevel(i.levels.SILENT,e)};var l=d();null==l&&(l=r),i.setLevel(l,!1)}var l=new d,h={};l.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=h[e];return t||(t=h[e]=new d(e,l.getLevel(),l.methodFactory)),t};var p=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=p),l},l.getLoggers=function(){return h},l.default=l,l},e.exports?e.exports=n():r.log=n()}(r);var n,o=r.exports,s=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(s)}var a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function c(e){return"string"==typeof e&&a.test(e)}for(var u=[],d=0;d<256;++d)u.push((d+256).toString(16).substr(1));function l(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(u[e[t+0]]+u[e[t+1]]+u[e[t+2]]+u[e[t+3]]+"-"+u[e[t+4]]+u[e[t+5]]+"-"+u[e[t+6]]+u[e[t+7]]+"-"+u[e[t+8]]+u[e[t+9]]+"-"+u[e[t+10]]+u[e[t+11]]+u[e[t+12]]+u[e[t+13]]+u[e[t+14]]+u[e[t+15]]).toLowerCase();if(!c(r))throw TypeError("Stringified UUID is invalid");return r}(n)}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){h(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var g="function"==typeof Symbol&&Symbol.observable||"@@observable",v=function(){return Math.random().toString(36).substring(7).split("").join(".")},y={INIT:"@@redux/INIT"+v(),REPLACE:"@@redux/REPLACE"+v(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+v()}};function b(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function _(e,t,r){var n;if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error(f(0));if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(f(1));return r(_)(e,t)}if("function"!=typeof e)throw new Error(f(2));var o=e,s=t,i=[],a=i,c=!1;function u(){a===i&&(a=i.slice())}function d(){if(c)throw new Error(f(3));return s}function l(e){if("function"!=typeof e)throw new Error(f(4));if(c)throw new Error(f(5));var t=!0;return u(),a.push(e),function(){if(t){if(c)throw new Error(f(6));t=!1,u();var r=a.indexOf(e);a.splice(r,1),i=null}}}function h(e){if(!b(e))throw new Error(f(7));if(void 0===e.type)throw new Error(f(8));if(c)throw new Error(f(9));try{c=!0,s=o(s,e)}finally{c=!1}for(var t=i=a,r=0;r<t.length;r++)(0,t[r])();return e}function p(e){if("function"!=typeof e)throw new Error(f(10));o=e,h({type:y.REPLACE})}function m(){var e,t=l;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new Error(f(11));function r(){e.next&&e.next(d())}return r(),{unsubscribe:t(r)}}})[g]=function(){return this},e}return h({type:y.INIT}),(n={dispatch:h,subscribe:l,getState:d,replaceReducer:p})[g]=m,n}function S(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++){var o=t[n];"function"==typeof e[o]&&(r[o]=e[o])}var s,i=Object.keys(r);try{!function(e){Object.keys(e).forEach((function(t){var r=e[t];if(void 0===r(void 0,{type:y.INIT}))throw new Error(f(12));if(void 0===r(void 0,{type:y.PROBE_UNKNOWN_ACTION()}))throw new Error(f(13))}))}(r)}catch(e){s=e}return function(e,t){if(void 0===e&&(e={}),s)throw s;for(var n=!1,o={},a=0;a<i.length;a++){var c=i[a],u=e[c],d=(0,r[c])(u,t);if(void 0===d)throw new Error(f(14));o[c]=d,n=n||d!==u}return(n=n||i.length!==Object.keys(e).length)?o:e}}function w(e,t){return function(){return t(e.apply(this,arguments))}}function k(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function E(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return function(){var r=e.apply(void 0,arguments),n=function(){throw new Error(f(15))},o={getState:r.getState,dispatch:function(){return n.apply(void 0,arguments)}},s=t.map((function(e){return e(o)}));return n=k.apply(void 0,s)(r.dispatch),m(m({},r),{},{dispatch:n})}}}var C=Object.freeze({__proto__:null,__DO_NOT_USE__ActionTypes:y,applyMiddleware:E,bindActionCreators:function(e,t){if("function"==typeof e)return w(e,t);if("object"!=typeof e||null===e)throw new Error(f(16));var r={};for(var n in e){var o=e[n];"function"==typeof o&&(r[n]=w(o,t))}return r},combineReducers:S,compose:k,createStore:_}),T=function(e){return"@@redux-saga/"+e},I=T("CANCEL_PROMISE"),O=T("CHANNEL_END"),M=T("IO"),P=T("MATCH"),R=T("MULTICAST"),A=T("SAGA_ACTION"),x=T("SELF_CANCELLATION"),j=T("TASK"),L=T("TASK_CANCEL"),D=T("TERMINATE"),N=T("LOCATION");function V(){return(V=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var W=function(e){return null==e},$=function(e){return null!=e},U=function(e){return"function"==typeof e},q=function(e){return"string"==typeof e},B=Array.isArray,F=function(e){return e&&U(e.then)},z=function(e){return e&&U(e.next)&&U(e.throw)},H=function e(t){return t&&(q(t)||K(t)||U(t)||B(t)&&t.every(e))},Q=function(e){return e&&U(e.take)&&U(e.close)},K=function(e){return Boolean(e)&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};function J(e,t){var r;void 0===t&&(t=!0);var n=new Promise((function(n){r=setTimeout(n,e,t)}));return n[I]=function(){clearTimeout(r)},n}var G=function(e){return function(){return!0}}(),X=function(){},Y=function(e){return e},Z=function(e,t){V(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(r){e[r]=t[r]}))};function ee(e,t){var r=e.indexOf(t);r>=0&&e.splice(r,1)}function te(e){var t=!1;return function(){t||(t=!0,e())}}var re=function(e){throw e},ne=function(e){return{value:e,done:!0}};function oe(e,t,r){void 0===t&&(t=re),void 0===r&&(r="iterator");var n={meta:{name:r},next:e,throw:t,return:ne,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(n[Symbol.iterator]=function(){return n}),n}function se(e,t){var r=t.sagaStack;console.error(e),console.error(r)}var ie=function(e){return Array.apply(null,new Array(e))},ae=function(e){return function(t){return e(Object.defineProperty(t,A,{value:!0}))}},ce=function(e){return e===D},ue=function(e){return e===L},de=function(e){return ce(e)||ue(e)};function le(e,t){var r,n=Object.keys(e),o=n.length,s=0,i=B(e)?ie(o):{},a={};return n.forEach((function(e){var n=function(n,a){r||(a||de(n)?(t.cancel(),t(n,a)):(i[e]=n,++s===o&&(r=!0,t(i))))};n.cancel=X,a[e]=n})),t.cancel=function(){r||(r=!0,n.forEach((function(e){return a[e].cancel()})))},a}function he(e){return{name:e.name||"anonymous",location:pe(e)}}function pe(e){return e[N]}var me={isEmpty:G,put:X,take:X},fe="TAKE",ge="CALL",ve="FORK",ye="SELECT",be=function(e,t){var r;return(r={})[M]=!0,r.combinator=!1,r.type=e,r.payload=t,r},_e=function(e){return be(ve,V({},e.payload,{detached:!0}))};function Se(e,t){return void 0===e&&(e="*"),H(e)?be(fe,{pattern:e}):Q(r=e)&&r[R]&&$(t)&&H(t)?be(fe,{channel:e,pattern:t}):Q(e)?be(fe,{channel:e}):void 0;var r}function we(e,t){return W(t)&&(t=e,e=void 0),be("PUT",{channel:e,action:t})}function ke(e,t){var r,n=null;return U(e)?r=e:(B(e)?(n=e[0],r=e[1]):(n=e.context,r=e.fn),n&&q(r)&&U(n[r])&&(r=n[r])),{context:n,fn:r,args:t}}function Ee(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return be(ge,ke(e,r))}function Ce(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return be(ve,ke(e,r))}function Te(e){void 0===e&&(e=Y);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return be(ye,{selector:e,args:r})}var Ie=Ee.bind(null,J),Oe=[],Me=0;function Pe(e){try{xe(),e()}finally{je()}}function Re(e){Oe.push(e),Me||(xe(),Le())}function Ae(e){try{return xe(),e()}finally{Le()}}function xe(){Me++}function je(){Me--}function Le(){var e;for(je();!Me&&void 0!==(e=Oe.shift());)Pe(e)}var De=function(e){return function(t){return e.some((function(e){return Ue(e)(t)}))}},Ne=function(e){return function(t){return e(t)}},Ve=function(e){return function(t){return t.type===String(e)}},We=function(e){return function(t){return t.type===e}},$e=function(){return G};function Ue(e){var t,r="*"===e?$e:q(e)?Ve:B(e)?De:U(t=e)&&t.hasOwnProperty("toString")?Ve:U(e)?Ne:K(e)?We:null;if(null===r)throw new Error("invalid pattern: "+e);return r(e)}var qe={type:O},Be=function(e){return e&&e.type===O};function Fe(e){void 0===e&&(e=function(e,t){void 0===e&&(e=10);var r=new Array(e),n=0,o=0,s=0,i=function(){if(0!=n){var t=r[s];return r[s]=null,n--,s=(s+1)%e,t}},a=function(){for(var e=[];n;)e.push(i());return e};return{isEmpty:function(){return 0==n},put:function(t){var i;n<e||(i=2*e,r=a(),n=r.length,o=r.length,s=0,r.length=i,e=i),function(t){r[o]=t,o=(o+1)%e,n++}(t)},take:i,flush:a}}(void 0));var t=!1,r=[];return{take:function(n){t&&e.isEmpty()?n(qe):e.isEmpty()?(r.push(n),n.cancel=function(){ee(r,n)}):n(e.take())},put:function(n){if(!t){if(0===r.length)return e.put(n);r.shift()(n)}},flush:function(r){t&&e.isEmpty()?r(qe):r(e.flush())},close:function(){if(!t){t=!0;var e=r;r=[];for(var n=0,o=e.length;n<o;n++)(0,e[n])(qe)}}}}function ze(){var e,t=!1,r=[],n=r,o=function(){n===r&&(n=r.slice())},s=function(){t=!0;var e=r=n;n=[],e.forEach((function(e){e(qe)}))};return(e={})[R]=!0,e.put=function(e){if(!t)if(Be(e))s();else for(var o=r=n,i=0,a=o.length;i<a;i++){var c=o[i];c[P](e)&&(c.cancel(),c(e))}},e.take=function(e,r){void 0===r&&(r=$e),t?e(qe):(e[P]=r,o(),n.push(e),e.cancel=te((function(){o(),ee(n,e)})))},e.close=s,e}function He(){var e=ze(),t=e.put;return e.put=function(e){e[A]?t(e):Re((function(){t(e)}))},e}function Qe(e,t){var r=e[I];U(r)&&(t.cancel=r),e.then(t,(function(e){t(e,!0)}))}var Ke,Je=0,Ge=function(){return++Je};function Xe(e){e.isRunning()&&e.cancel()}var Ye=((Ke={}).TAKE=function(e,t,r){var n=t.channel,o=void 0===n?e.channel:n,s=t.pattern,i=t.maybe,a=function(e){e instanceof Error?r(e,!0):!Be(e)||i?r(e):r(D)};try{o.take(a,$(s)?Ue(s):null)}catch(e){return void r(e,!0)}r.cancel=a.cancel},Ke.PUT=function(e,t,r){var n=t.channel,o=t.action,s=t.resolve;Re((function(){var t;try{t=(n?n.put:e.dispatch)(o)}catch(e){return void r(e,!0)}s&&F(t)?Qe(t,r):r(t)}))},Ke.ALL=function(e,t,r,n){var o=n.digestEffect,s=Je,i=Object.keys(t);if(0!==i.length){var a=le(t,r);i.forEach((function(e){o(t[e],s,a[e],e)}))}else r(B(t)?[]:{})},Ke.RACE=function(e,t,r,n){var o=n.digestEffect,s=Je,i=Object.keys(t),a=B(t)?ie(i.length):{},c={},u=!1;i.forEach((function(e){var t=function(t,n){u||(n||de(t)?(r.cancel(),r(t,n)):(r.cancel(),u=!0,a[e]=t,r(a)))};t.cancel=X,c[e]=t})),r.cancel=function(){u||(u=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){u||o(t[e],s,c[e],e)}))},Ke.CALL=function(e,t,r,n){var o=t.context,s=t.fn,i=t.args,a=n.task;try{var c=s.apply(o,i);if(F(c))return void Qe(c,r);if(z(c))return void at(e,c,a.context,Je,he(s),!1,r);r(c)}catch(e){r(e,!0)}},Ke.CPS=function(e,t,r){var n=t.context,o=t.fn,s=t.args;try{var i=function(e,t){W(e)?r(t):r(e,!0)};o.apply(n,s.concat(i)),i.cancel&&(r.cancel=i.cancel)}catch(e){r(e,!0)}},Ke.FORK=function(e,t,r,n){var o=t.fn,s=t.detached,i=n.task,a=function(e){var t=e.context,r=e.fn,n=e.args;try{var o=r.apply(t,n);if(z(o))return o;var s=!1;return oe((function(e){return s?{value:e,done:!0}:(s=!0,{value:o,done:!F(o)})}))}catch(e){return oe((function(){throw e}))}}({context:t.context,fn:o,args:t.args}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:he(t)}(a,o);Ae((function(){var t=at(e,a,i.context,Je,c,s,void 0);s?r(t):t.isRunning()?(i.queue.addTask(t),r(t)):t.isAborted()?i.queue.abort(t.error()):r(t)}))},Ke.JOIN=function(e,t,r,n){var o=n.task,s=function(e,t){if(e.isRunning()){var r={task:o,cb:t};t.cancel=function(){e.isRunning()&&ee(e.joiners,r)},e.joiners.push(r)}else e.isAborted()?t(e.error(),!0):t(e.result())};if(B(t)){if(0===t.length)return void r([]);var i=le(t,r);t.forEach((function(e,t){s(e,i[t])}))}else s(t,r)},Ke.CANCEL=function(e,t,r,n){t===x?Xe(n.task):B(t)?t.forEach(Xe):Xe(t),r()},Ke.SELECT=function(e,t,r){var n=t.selector,o=t.args;try{r(n.apply(void 0,[e.getState()].concat(o)))}catch(e){r(e,!0)}},Ke.ACTION_CHANNEL=function(e,t,r){var n=t.pattern,o=Fe(t.buffer),s=Ue(n),i=function t(r){Be(r)||e.channel.take(t,s),o.put(r)},a=o.close;o.close=function(){i.cancel(),a()},e.channel.take(i,s),r(o)},Ke.CANCELLED=function(e,t,r,n){r(n.task.isCancelled())},Ke.FLUSH=function(e,t,r){t.flush(r)},Ke.GET_CONTEXT=function(e,t,r,n){r(n.task.context[t])},Ke.SET_CONTEXT=function(e,t,r,n){Z(n.task.context,t),r()},Ke);function Ze(e,t){return e+"?"+t}function et(e){var t=e.name,r=e.location;return r?t+" "+Ze(r.fileName,r.lineNumber):t}function tt(e){var t,r=(t=[]).concat.apply(t,e.map((function(e){return e.cancelledTasks})));return r.length?["Tasks cancelled due to error:"].concat(r).join("\n"):""}var rt=null,nt=[],ot=function(e){e.crashedEffect=rt,nt.push(e)},st=function(){rt=null,nt.length=0},it=function(){var e,t=nt[0],r=nt.slice(1),n=t.crashedEffect?(e=pe(t.crashedEffect))?e.code+" "+Ze(e.fileName,e.lineNumber):"":null;return["The above error occurred in task "+et(t.meta)+(n?" \n when executing effect "+n:"")].concat(r.map((function(e){return" created by "+et(e.meta)})),[tt(nt)]).join("\n")};function at(e,t,r,n,o,s,i){var a=e.finalizeRunEffect((function(t,r,n){F(t)?Qe(t,n):z(t)?at(e,t,u.context,r,o,!1,n):t&&t[M]?(0,Ye[t.type])(e,t.payload,n,d):n(t)}));l.cancel=X;var c={meta:o,cancel:function(){0===c.status&&(c.status=1,l(L))},status:0},u=function(e,t,r,n,o,s,i){var a;void 0===i&&(i=X);var c,u,d=0,l=null,h=[],p=Object.create(r),m=function(e,t,r){var n,o=[],s=!1;function i(e){h.push.apply(h,m.getTasks().map((function(e){return e.meta.name}))),c(),r(e,!0)}function a(t){o.push(t),t.cont=function(a,c){s||(ee(o,t),t.cont=X,c?i(a):(t===e&&(n=a),o.length||(s=!0,r(n))))}}function c(){s||(s=!0,o.forEach((function(e){e.cont=X,e.cancel()})),o=[])}return a(e),{addTask:a,cancelAll:c,abort:i,getTasks:function(){return o}}}(t,0,f);function f(t,r){if(r){if(d=2,ot({meta:o,cancelledTasks:h}),g.isRoot){var n=it();st(),e.onError(t,{sagaStack:n})}u=t,l&&l.reject(t)}else t===L?d=1:1!==d&&(d=3),c=t,l&&l.resolve(t);g.cont(t,r),g.joiners.forEach((function(e){e.cb(t,r)})),g.joiners=null}var g=((a={})[j]=!0,a.id=n,a.meta=o,a.isRoot=s,a.context=p,a.joiners=[],a.queue=m,a.cancel=function(){0===d&&(d=1,m.cancelAll(),f(L,!1))},a.cont=i,a.end=f,a.setContext=function(e){Z(p,e)},a.toPromise=function(){return l||((e={}).promise=new Promise((function(t,r){e.resolve=t,e.reject=r})),l=e,2===d?l.reject(u):0!==d&&l.resolve(c)),l.promise;var e},a.isRunning=function(){return 0===d},a.isCancelled=function(){return 1===d||0===d&&1===t.status},a.isAborted=function(){return 2===d},a.result=function(){return c},a.error=function(){return u},a);return g}(e,c,r,n,o,s,i),d={task:u,digestEffect:h};return i&&(i.cancel=u.cancel),l(),u;function l(e,r){try{var o;r?(o=t.throw(e),st()):ue(e)?(c.status=1,l.cancel(),o=U(t.return)?t.return(L):{done:!0,value:L}):o=ce(e)?U(t.return)?t.return():{done:!0}:t.next(e),o.done?(1!==c.status&&(c.status=3),c.cont(o.value)):h(o.value,n,l)}catch(e){if(1===c.status)throw e;c.status=2,c.cont(e,!0)}}function h(t,r,n,o){void 0===o&&(o="");var s,i=Ge();function c(r,o){s||(s=!0,n.cancel=X,e.sagaMonitor&&(o?e.sagaMonitor.effectRejected(i,r):e.sagaMonitor.effectResolved(i,r)),o&&function(e){rt=e}(t),n(r,o))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:i,parentEffectId:r,label:o,effect:t}),c.cancel=X,n.cancel=function(){s||(s=!0,c.cancel(),c.cancel=X,e.sagaMonitor&&e.sagaMonitor.effectCancelled(i))},a(t,i,c)}}function ct(e,t){for(var r=e.channel,n=void 0===r?He():r,o=e.dispatch,s=e.getState,i=e.context,a=void 0===i?{}:i,c=e.sagaMonitor,u=e.effectMiddlewares,d=e.onError,l=void 0===d?se:d,h=arguments.length,p=new Array(h>2?h-2:0),m=2;m<h;m++)p[m-2]=arguments[m];var f,g=t.apply(void 0,p),v=Ge();if(c&&(c.rootSagaStarted=c.rootSagaStarted||X,c.effectTriggered=c.effectTriggered||X,c.effectResolved=c.effectResolved||X,c.effectRejected=c.effectRejected||X,c.effectCancelled=c.effectCancelled||X,c.actionDispatched=c.actionDispatched||X,c.rootSagaStarted({effectId:v,saga:t,args:p})),u){var y=k.apply(void 0,u);f=function(e){return function(t,r,n){return y((function(t){return e(t,r,n)}))(t)}}}else f=Y;var b={channel:n,dispatch:ae(o),getState:s,sagaMonitor:c,onError:l,finalizeRunEffect:f};return Ae((function(){var e=at(b,g,a,v,he(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function ut(e){var t,r=void 0===e?{}:e,n=r.context,o=void 0===n?{}:n,s=r.channel,i=void 0===s?He():s,a=r.sagaMonitor,c=function(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)t.indexOf(r=s[n])>=0||(o[r]=e[r]);return o}(r,["context","channel","sagaMonitor"]);function u(e){return t=ct.bind(null,V({},c,{context:o,channel:i,dispatch:e.dispatch,getState:e.getState,sagaMonitor:a})),function(e){return function(t){a&&a.actionDispatched&&a.actionDispatched(t);var r=e(t);return i.put(t),r}}}return u.run=function(){return t.apply(void 0,arguments)},u.setContext=function(e){Z(o,e)},u}var dt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new o(n,s||e,i),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function i(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,o=[];if(0===this._eventsCount)return o;for(n in e=this._events)t.call(e,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,s=new Array(o);n<o;n++)s[n]=t[n].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[r?r+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,n,o,s,i){var a=r?r+e:e;if(!this._events[a])return!1;var c,u,d=this._events[a],l=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),l){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,n),!0;case 4:return d.fn.call(d.context,t,n,o),!0;case 5:return d.fn.call(d.context,t,n,o,s),!0;case 6:return d.fn.call(d.context,t,n,o,s,i),!0}for(u=1,c=new Array(l-1);u<l;u++)c[u-1]=arguments[u];d.fn.apply(d.context,c)}else{var h,p=d.length;for(u=0;u<p;u++)switch(d[u].once&&this.removeListener(e,d[u].fn,void 0,!0),l){case 1:d[u].fn.call(d[u].context);break;case 2:d[u].fn.call(d[u].context,t);break;case 3:d[u].fn.call(d[u].context,t,n);break;case 4:d[u].fn.call(d[u].context,t,n,o);break;default:if(!c)for(h=1,c=new Array(l-1);h<l;h++)c[h-1]=arguments[h];d[u].fn.apply(d[u].context,c)}}return!0},a.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},a.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},a.prototype.removeListener=function(e,t,n,o){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return i(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||n&&a.context!==n||i(this,s);else{for(var c=0,u=[],d=a.length;c<d;c++)(a[c].fn!==t||o&&!a[c].once||n&&a[c].context!==n)&&u.push(a[c]);u.length?this._events[s]=1===u.length?u[0]:u:i(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=r?r+e:e]&&i(this,t):(this._events=new n,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=r,a.EventEmitter=a,e.exports=a}(dt);var lt=dt.exports,ht=Object.defineProperty,pt=Object.defineProperties,mt=Object.getOwnPropertyDescriptor,ft=Object.getOwnPropertyDescriptors,gt=Object.getOwnPropertyNames,vt=Object.getOwnPropertySymbols,yt=Object.prototype.hasOwnProperty,bt=Object.prototype.propertyIsEnumerable,_t=(e,t,r)=>t in e?ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,St=(e,t)=>{for(var r in t||(t={}))yt.call(t,r)&&_t(e,r,t[r]);if(vt)for(var r of vt(t))bt.call(t,r)&&_t(e,r,t[r]);return e},wt=(e,t)=>pt(e,ft(t)),kt=(e,t)=>{var r={};for(var n in e)yt.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&vt)for(var n of vt(e))t.indexOf(n)<0&&bt.call(e,n)&&(r[n]=e[n]);return r},Et=(e,t)=>{for(var r in t)ht(e,r,{get:t[r],enumerable:!0})},Ct=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of gt(t))yt.call(e,o)||!r&&"default"===o||ht(e,o,{get:()=>t[o],enumerable:!(n=mt(t,o))||n.enumerable});return e},Tt=(e,t,r)=>(_t(e,"symbol"!=typeof t?t+"":t,r),r),It="__local__",Ot="__synthetic__",Mt=["room.started","room.ended"].map((e=>`video.${e}`)),Pt=()=>(new Date).toISOString().replace("T"," ").replace("Z",""),Rt=o.getLogger("signalwire"),At=Rt.methodFactory;Rt.methodFactory=(e,t,r)=>{const n=At(e,t,r);return function(){const e=[Pt(),"-"];for(let t=0;t<arguments.length;t++)e.push(arguments[t]);n.apply(void 0,e)}};var xt,jt=Rt.getLevel();Rt.setLevel(jt);var Lt={},Dt=()=>null!=xt?xt:Rt,Nt=({type:e,payload:t})=>{const r=Dt(),{logWsTraffic:n}=Lt||{};if(!n)return;const o=(e=>!("method"in e)||"signalwire.ping"!==e.method)(t)?JSON.stringify(t,null,2):t;return r.info(`${e.toUpperCase()}: \n`,o,"\n")},Vt=()=>{const e=Dt();return new Proxy(e,{get:(e,t,r)=>"wsTraffic"===t?Nt:Reflect.get(e,t,r)})},Wt=(e,t)=>{const{result:r={},error:n}=e;if(n)return{error:n};const{code:o,node_id:s,result:i=null}=r;return o&&"200"!==o?{error:r}:null===i?(t&&(r.node_id=t),{result:r}):i?i.jsonrpc?Wt(i,s):{result:i}:{result:r}},$t={propsToUpdateValue:["updated","layers","members","recordings","playbacks"]},Ut=(e,t=$t)=>Object.entries(e).reduce(((e,[r,n])=>{const o=qt(r);return e[o]="object"==typeof n&&n?Array.isArray(n)?t.propsToUpdateValue.includes(r)?n.map((e=>"string"==typeof e?qt(e):Ut(e))):n:Ut(n):(e=>e.endsWith("At"))(o)?(e=>{if(void 0===e)return e;const t=new Date(1e3*e);return isNaN(t.getTime())?e:t})(n):n,e}),{}),qt=e=>e.includes("_")?e.split("_").reduce(((e,t,r)=>{const n=t.trim().charAt(0),o=t.substr(1).toLowerCase();return`${e}${0===r?n.toLowerCase():n.toUpperCase()}${o}`}),""):e,Bt=({event:e,namespace:t})=>("string"==typeof e&&(e=Ht({event:e,namespace:t}),e=zt(e)),e),Ft=/[A-Z]/g,zt=e=>e.replace(Ft,(e=>`_${e.toLowerCase()}`)),Ht=({namespace:e,event:t})=>!e||t.startsWith(e)?t:`${e}:${t}`,Qt=(e,t)=>(Object.keys(t).forEach((t=>{if(e.prototype.hasOwnProperty(t))throw new Error(`[extendComponent] Duplicated method name: ${t}`)})),Object.defineProperties(e.prototype,t),e),Kt=({instance:e,transform:t,payload:r,transformedPayload:n})=>(({instance:e,proxiedObj:t,payload:r})=>{const n=St(St({},r),(e=>{let t={},r=e,n=!0;for(;n;)Object.getOwnPropertyNames(r).forEach((r=>{"function"!=typeof e[r]||"string"!=typeof r||r in t||(t[r]=e[r])})),r&&r.__sw_symbol?r=Object.getPrototypeOf(r):n=!1;return t})(e));return Object.defineProperties(t,Object.entries(n).reduce(((e,[t,r])=>(e[t]={value:r,enumerable:!0,configurable:!0,writable:!0},e)),{}))})({instance:e,proxiedObj:new Proxy(e,{get:(e,o,s)=>"toString"===o?(({property:e,payload:t})=>"function"==typeof e?()=>JSON.stringify(t):e)({property:e[o],payload:n}):"_eventsNamespace"===o&&t.getInstanceEventNamespace?t.getInstanceEventNamespace(r):"eventChannel"===o&&t.getInstanceEventChannel?t.getInstanceEventChannel(r):o in n?n[o]:Reflect.get(e,o,s)}),payload:n}),Jt=new Map,Gt=[{field:"members",preProcessPayload:e=>({member:e}),eventTransformType:"roomSessionMember"},{field:"recordings",preProcessPayload:e=>({recording:e}),eventTransformType:"roomSessionRecording"}],Xt=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch(t){return e}},Yt=/^(ws|wss):\/\//,Zt=e=>e.includes("session."),er=["video.member.updated","video.member.talking"],tr=["video.room.joined","video.track","video.active","video.answering","video.destroy","video.early","video.hangup","video.held","video.new","video.purge","video.recovering","video.requesting","video.ringing","video.trying"],rr=e=>{const t=e.map((e=>{if("string"==typeof e){const t=(e=>{const t=e.split(":");return t[t.length-1]})(e);return tr.includes(t)||(e=>e.includes(Ot))(t)||Zt(t)?null:er.find((e=>t.startsWith(e)))||t}return e}));return Array.from(new Set(t)).filter(Boolean)},nr=e=>e.includes(It),or=e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(It),e)),[]).join(".")},sr=e=>{var t;return St({jsonrpc:"2.0",id:null!=(t=e.id)?t:l()},e)},ir=e=>St({jsonrpc:"2.0"},e),ar={major:3,minor:0,revision:0},cr=e=>sr({method:"signalwire.connect",params:St({version:ar},e)}),ur={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},dr=e=>{if(e.hasOwnProperty("dialogParams")){const t=kt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in ur)e&&t.hasOwnProperty(e)&&(t[ur[e]]=t[e],delete t[e]);e.dialogParams=t}return e},lr=e=>(t={})=>sr({method:e,params:dr(t)}),hr=lr("verto.invite"),pr=lr("verto.bye"),mr=lr("verto.info"),fr=(e,t)=>ir({id:e,result:{method:t}}),gr={};Et(gr,{authErrorAction:()=>Tr,authExpiringAction:()=>Or,authSuccessAction:()=>Ir,closeConnectionAction:()=>kr,createAction:()=>yr,destroyAction:()=>wr,executeAction:()=>Cr,getCustomSagaActionType:()=>Wr,initAction:()=>Sr,makeCustomSagaAction:()=>Vr,reauthAction:()=>Er,sessionAuthErrorAction:()=>Lr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>xr,sessionExpiringAction:()=>Dr,sessionReconnectingAction:()=>jr,socketClosedAction:()=>Mr,socketErrorAction:()=>Pr,socketMessageAction:()=>Rr});var vr={};function yr(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error("prepareAction did not return an object");return St(St({type:e,payload:n.payload},"meta"in n&&{meta:n.meta}),"error"in n&&{error:n.error})}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>t.type===e,r}Et(vr,{configureStore:()=>_r,createAction:()=>yr}),Ct(vr,C);var br="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?k:k.apply(null,arguments)};function _r(e){const t=function(){return[]},{reducer:r,middleware:n=t(),devTools:o=!0,preloadedState:s,enhancers:i}=e||{};let a;if("function"==typeof r)a=r;else{if(!function(e){if("object"!=typeof e||null===e)return!1;let t=Object.getPrototypeOf(e);if(null===t)return!0;let r=t;for(;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return t===r}(r))throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');a=S(r)}let c=n;"function"==typeof c&&(c=c(t));const u=E(...c);let d=k;o&&(d=br(St({trace:!1},"object"==typeof o&&o)));let l=[u];return Array.isArray(i)?l=[u,...i]:"function"==typeof i&&(l=i(l)),_(a,s,d(...l))}var Sr=yr("swSdk/init"),wr=yr("swSdk/destroy"),kr=yr("swSdk/closeConnection"),Er=yr("swSdk/reauth"),Cr=yr("swSdk/executeRequest"),Tr=yr("auth/error"),Ir=yr("auth/success"),Or=yr("auth/expiring"),Mr=yr("socket/closed"),Pr=yr("socket/error"),Rr=yr("socket/message"),Ar=yr("session.connected"),xr=yr("session.disconnected"),jr=yr("session.reconnecting"),Lr=yr("session.auth_error"),Dr=yr("session.expiring"),Nr=(e,t)=>`${t.type}/${e}`,Vr=(e,t)=>wt(St({},t),{type:Nr(e,t)}),Wr=(e,t)=>Nr(e,t);function $r(e){const t={},r=[];let n;const o={addCase(e,r){const n="string"==typeof e?e:e.type;if(n in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[n]=r,o},addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),o),addDefaultCase:e=>(n=e,o)};return e(o),[t,r,n]}var Ur=({name:e="",initialState:t,reducers:r,extraReducers:n})=>function(e){const{name:t}=e;if(!t)throw new Error("`name` is a required option for createSlice");const r=e.initialState,n=e.reducers||{},o=Object.keys(n),s={},i={},a={};function c(){const[t={},n=[],o]="function"==typeof e.extraReducers?$r(e.extraReducers):[e.extraReducers],s=St(St({},t),i);return function(e,t,r=[],n){let o,[s,i,a]="function"==typeof t?$r(t):[t,r,n];function c(e=o(),t){let r=[s[t.type],...i.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===r.filter((e=>!!e)).length&&(r=[a]),r.reduce(((e,r)=>r?r(e,t):e),e)}return o="function"==typeof e?()=>e():()=>e,c.getInitialState=o,c}(r,s,n,o)}let u;return o.forEach((e=>{const r=n[e],o=`${t}/${e}`;let c,u;"reducer"in r?(c=r.reducer,u=r.prepare):c=r,s[e]=c,i[o]=c,a[e]=u?yr(o,u):yr(o)})),{name:t,reducer:(e,t)=>(u||(u=c()),u(e,t)),actions:a,caseReducers:s,getInitialState:()=>(u||(u=c()),u.getInitialState())}}({name:e,initialState:t,reducers:r,extraReducers:e=>{e.addCase(wr.type,(()=>t)),"function"==typeof n&&n(e)}}),qr=Ur({name:"session",initialState:{protocol:"",iceServers:[],authStatus:"unknown",authError:void 0,authCount:0},reducers:{connected:(e,{payload:t})=>{var r,n;return wt(St({},e),{authStatus:"authorized",authCount:e.authCount+1,protocol:null!=(r=null==t?void 0:t.protocol)?r:"",iceServers:null!=(n=null==t?void 0:t.ice_servers)?n:[]})},authStatus:(e,{payload:t})=>wt(St({},e),{authStatus:t})},extraReducers:e=>{e.addCase(Tr.type,((e,{payload:t})=>wt(St({},e),{authStatus:"unauthorized",authError:t.error})))}}),{actions:Br,reducer:Fr}=qr,zr=Symbol("BaseSession"),Hr={};Et(Hr,{authErrorAction:()=>Tr,authExpiringAction:()=>Or,authSuccessAction:()=>Ir,closeConnectionAction:()=>kr,configureStore:()=>Pn,connect:()=>Mn,createAction:()=>yr,createCatchableSaga:()=>on,createRestartableSaga:()=>rn,destroyAction:()=>wr,executeAction:()=>Cr,getCustomSagaActionType:()=>Wr,initAction:()=>Sr,makeCustomSagaAction:()=>Vr,reauthAction:()=>Er,sessionAuthErrorAction:()=>Lr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>xr,sessionExpiringAction:()=>Dr,sessionReconnectingAction:()=>jr,socketClosedAction:()=>Mr,socketErrorAction:()=>Pr,socketMessageAction:()=>Rr});var Qr=({state:e,payload:t,componentId:r,key:n,requestId:o})=>wt(St({},e),r in e.byId?{byId:wt(St({},e.byId),{[r]:wt(St({},e.byId[r]),{[n]:wt(St({},e.byId[r][n]),{[o]:t})})})}:{byId:wt(St({},e.byId),{[r]:{id:r,[n]:{[o]:t}}})}),Kr=Ur({name:"components",initialState:{byId:{}},reducers:{upsert:(e,{payload:t})=>wt(St({},e),t.id in e.byId?{byId:wt(St({},e.byId),{[t.id]:St(St({},e.byId[t.id]),t)})}:{byId:wt(St({},e.byId),{[t.id]:t})}),executeSuccess:(e,{payload:t})=>{const{componentId:r,requestId:n,response:o}=t;return Qr({componentId:r,requestId:n,state:e,key:"responses",payload:o})},executeFailure:(e,{payload:t})=>{const{componentId:r,requestId:n,error:o,action:s}=t;return Qr({componentId:r,requestId:n,state:e,key:"errors",payload:{action:s,jsonrpc:o}})},cleanup:(e,{payload:t})=>wt(St({},e),{byId:Object.entries(e.byId).reduce(((e,[r,n])=>(t.ids.includes(r)||(e[r]=n),e)),{})})}}),{actions:Jr,reducer:Gr}=Kr,Xr={queue:[]},Yr=Ur({name:"executeQueue",initialState:Xr,reducers:{add:(e,{payload:t})=>wt(St({},e),{queue:e.queue.concat(t)}),clean:()=>Xr}}),{actions:Zr,reducer:en}=Yr,tn=(0,vr.combineReducers)({components:Gr,session:Fr,executeQueue:en});Et({},{createCatchableSaga:()=>on,createRestartableSaga:()=>rn});var rn=e=>function*(){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];_e(Ce.apply(void 0,[e].concat(r)))}((function*(){for(;;)try{Vt().debug("Run a restartable saga"),yield Ee(e),Vt().debug("One of the restartable saga has ended. Restarting..")}catch(e){Vt().error("Restartable Saga Error",e)}}))},nn=e=>Vt().error("Catchable Saga Error",e),on=(e,t=nn)=>function*(...r){try{yield Ee(e,...r)}catch(e){t(e)}},sn={};Et(sn,{getAuthError:()=>dn,getAuthStatus:()=>un,getIceServers:()=>an,getSession:()=>cn});var an=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},cn=e=>e.session,un=({session:e})=>e.authStatus,dn=({session:e})=>e.authError,ln=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},hn=e=>{const t=(({components:e})=>e.byId)(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r};function*pn(e){function*t(t){if("authorized"!==(yield Te(un)))return;const{componentId:r,requestId:n,method:o,params:s}=t.payload;try{const i=(({method:e,params:t})=>sr({method:e,params:t}))({id:n,method:o,params:s}),a=yield Ee(e.execute,i);r&&n&&(yield we(Jr.executeSuccess({componentId:r,requestId:n,response:a})))}catch(e){Vt().warn("worker error",r,e),r&&n&&(yield we(Jr.executeFailure({componentId:r,requestId:n,action:t,error:e})))}finally{if((yield be("CANCELLED",{}))&&r&&n){const e={jsonrpc:"2.0",id:n,error:{code:-32600,message:"Cancelled task"}};Vt().debug("executeActionWorker cancelled",{requestId:n,componentId:r,error:e}),yield we(Jr.executeFailure({componentId:r,requestId:n,action:t,error:e}))}}}for(;;){const e=yield Se(Cr.type);yield Ce(t,e)}}function*mn({session:e,sessionChannel:t,pubSubChannel:r}){function*n({jsonrpc:t,nodeId:r}){var n,o;const{id:s,method:i,params:a={}}=t;switch(i){case"verto.media":{const e={id:a.callID,state:"early",remoteSDP:a.sdp,nodeId:r};yield we(Jr.upsert(e)),yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break}case"verto.answer":{const e={id:a.callID,state:"active",nodeId:r};(null==a?void 0:a.sdp)&&(e.remoteSDP=a.sdp),yield we(Jr.upsert(e)),yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break}case"verto.bye":{const e={id:a.callID,state:"hangup",nodeId:r,byeCause:null!=(n=null==a?void 0:a.cause)?n:"",byeCauseCode:null!=(o=null==a?void 0:a.causeCode)?o:0,redirectDestination:null==a?void 0:a.redirectDestination};yield we(Jr.upsert(e)),yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break}case"verto.ping":yield we(Cr({method:"video.message",params:{message:fr(s,i),node_id:r}}));break;case"verto.punt":return e.disconnect();case"verto.mediaParams":{const{callID:e,mediaParams:t={}}=a;if(!e){Vt().debug("Invalid mediaParams event",a);break}const r={id:e};(null==t?void 0:t.video)&&(r.videoConstraints=t.video),(null==t?void 0:t.audio)&&(r.audioConstraints=t.audio),yield we(Jr.upsert(r));break}case"verto.info":return Vt().debug("Verto Info",a);case"verto.clientReady":return Vt().debug("Verto ClientReady",a);case"verto.announce":return Vt().debug("Verto Announce",a);default:return Vt().debug(`Unknown Verto method: ${i}`,a)}}function*o(e){switch(e.event_type){case"video.room.subscribed":yield we(Jr.upsert({id:e.params.call_id,roomId:e.params.room_session.room_id,roomSessionId:e.params.room_session.id,memberId:e.params.member_id,previewUrl:e.params.room_session.preview_url})),yield we(r,{type:"video.room.joined",payload:e.params});break;case"video.member.updated":{const{member:{updated:t=[]}}=e.params;for(const n of t){const t=`video.member.updated.${n}`;yield we(r,{type:t,payload:e.params})}break}case"video.member.joined":{const{member:t}=e.params;(null==t?void 0:t.parent_id)&&(yield Te(ln,t.parent_id))&&(yield we(Jr.upsert({id:t.id,roomId:e.params.room_id,roomSessionId:e.params.room_session_id,memberId:t.id})));break}case"video.member.talking":{const{member:t}=e.params;if("talking"in t){const n=t.talking?"started":"ended";yield we(r,{type:`video.member.talking.${n}`,payload:e.params});const o=t.talking?"start":"stop";yield we(r,{type:`video.member.talking.${o}`,payload:e.params})}break}}yield we(r,{type:e.event_type,payload:e.params})}function*s(e){yield we(r,{type:e.event_type,payload:e.params})}function*i(e){var t;"webrtc.message"!==(null==(t=e)?void 0:t.event_type)?(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("video."))})(e)?yield Ce(o,e):(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("cantina-manager."))})(e)?yield Ce(s,e):yield we({type:e.event_type,payload:e}):yield Ce(n,{jsonrpc:e.params,nodeId:e.node_id})}const a=on((function*(e){if(e.type!==Rr.type)return void(yield we(e));const{method:t,params:r}=e.payload;switch(t){case"signalwire.event":yield Ce(i,r);break;default:return Vt().debug(`Unknown message: ${t}`,e)}}),(e=>{Vt().error("Channel Error",e)}));for(;;)try{for(;;){const e=yield Se(t);yield Ce(a,e)}}catch(e){Vt().error("sessionChannelWorker error:",e)}finally{Vt().debug("sessionChannelWorker finally")}}function fn(e){return function(t,r){void 0===r&&(r=me);var n,o,s=!1,i=Fe(r),a=function(){s||(s=!0,U(n)&&n(),i.close())};return n=te((o=function(e){Be(e)?a():i.put(e)},e.dispatch=e=>{o(e)},n=()=>{Vt().debug("sessionChannel unsubscribe"),e.disconnect()})),s&&n(),{take:i.take,flush:i.flush,close:a}}()}function*gn({pubSubChannel:e,emitter:t}){for(;;){const n=yield Se(e,"*"),{type:o,payload:s}=n;try{const e=void 0===(r=n).payload?"":(e=>e.type.startsWith("video.member.")||e.type.startsWith("video.__synthetic__.member"))(r)||(e=>e.type.startsWith("video.layout."))(r)||(e=>e.type.startsWith("video.recording."))(r)||(e=>e.type.startsWith("video.playback."))(r)?r.payload.room_session_id:(e=>e.type.startsWith("video.room."))(r)?r.payload.room_session.id:((e=>{e.type.startsWith("chat.")})(r),"");Mt.includes(o)&&t.emit(o,s),t.emit(Bt({namespace:e,event:o}),s)}catch(e){Vt().error(e)}}var r}var vn=({executeQueue:e})=>e;function*yn(){function*e(e){"authorized"!==(yield Te(un))&&(yield we(Zr.add(e.payload)))}for(;;){const t=yield Se(Cr.type);yield Ce(e,t)}}function*bn(){const{queue:e}=yield Te(vn);for(const t of e)yield we(Cr(t));yield we(Zr.clean())}var _n=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Tt(this,"name","AuthError"),Object.setPrototypeOf(this,_n.prototype)}};function*Sn(){const e=yield Te(hn);e.length&&(yield we(Jr.cleanup({ids:e})))}function*wn(){for(;;)yield Ie(36e5),yield Ce(Sn)}function*kn({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Ee(fn,o),i=r.pubSubChannel;let a=[];if(null==(n=t.workers)?void 0:n.length)try{const e=t.workers.map((e=>Ee(rn(e))));a=yield function(e){var t=be("ALL",e);return t.combinator=!0,t}(e)}catch(e){Vt().error("Error running custom workers",e)}yield Ce(mn,{session:o,sessionChannel:s,pubSubChannel:i}),yield Ce(Tn,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const c=yield Ce(wn);o.connect(),yield Se(wr.type),null==c||c.cancel(),i.close(),s.close(),a.forEach((e=>e.cancel()))}function*En({session:e,sessionChannel:t,pubSubChannel:r}){"reconnecting"===e.status?(yield we(r,jr()),yield Ie(2e3*Math.random()),yield Ee(e.connect)):(yield we(r,xr()),t.close())}function*Cn({session:e,token:t,pubSubChannel:r}){try{e.reauthenticate&&(e.token=t,yield Ee(e.reauthenticate),yield we(r,Ar()))}catch(e){Vt().error("Reauthenticate Error",e),yield we(Tr({error:e}))}}function*Tn(e){for(;;){const t=yield Se([Ir.type,Tr.type,Or.type,Pr.type,Mr.type,Er.type]);switch(t.type){case Ir.type:yield Ce(In,e);break;case Tr.type:yield Ce(On,{action:t,userOptions:e.userOptions,pubSubChannel:e.pubSubChannel});break;case Or.type:yield we(e.pubSubChannel,Dr());break;case Pr.type:break;case Mr.type:yield Ce(En,e);break;case Er.type:yield Ce(Cn,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*In(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ce(gn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ce(pn,t);yield we(Br.connected(t.rpcConnectResult)),yield we(r,Ar());const i=yield Ce(bn);yield Se(kr.type),o.cancel(),s.cancel(),i.cancel()}function*On(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new _n(o.code,o.message):new Error("Unauthorized"),i=yield Ce(gn,{pubSubChannel:t,emitter:r.emitter});throw yield we(t,Lr(s)),yield Se(xr),i.cancel(),s}var Mn=e=>{const{componentListeners:t={},sessionListeners:r={},store:n,Component:o,customSagas:s=[]}=e,i=Object.keys(t),a=Object.keys(r);return e=>{const c=new o(wt(St({},e),{store:n})),u=new Map;let d=!0;const l=n.subscribe((()=>{const e=n.getState(),o=ln(e,c.__uuid)||{};for(const e of i){if(!1===d)return;const r=`${c.__uuid}.${e}`,n=u.get(r),s=o[e];if(void 0!==s&&n!==s){u.set(r,s);const n=t[e];"string"==typeof n?c[n](o):n(o)}}const s=cn(e);for(const e of a){if(!1===d)return;const t=`session.${e}`,n=u.get(t),o=s[e];if(void 0!==o&&n!==o){u.set(t,o);const n=r[e];"string"==typeof n?c[n](s):"function"==typeof n&&n(s)}}})),h=null==s?void 0:s.map((e=>n.runSaga(e,{instance:c,runSaga:n.runSaga})));return c.destroyer=()=>{d=!1,l(),u.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Ct(Hr,vr);var Pn=e=>{var t;const{userOptions:r,SessionConstructor:n,preloadedState:o={},runSagaMiddleware:s=!0}=e,i=ut(),a={pubSubChannel:ze()},c=_r({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:tn,preloadedState:o,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){t.logger&&(xt=t.logger),t.debug&&(e=>{null!=e?Object.assign(Lt,e):Lt={}})(t.debug),yield Ce(yn),yield Se(Sr.type);try{yield Ee(kn,wt(St({},e),{userOptions:t,channels:r}))}catch(e){return void Vt().error("RootSaga Error:",e)}})({SessionConstructor:n});i.run(e,{userOptions:r,channels:a})}return wt(St({},c),{runSaga:(e,t)=>i.run(e,wt(St({},t),{channels:a}))})},Rn=e=>e,An=Symbol("BaseComponent"),xn=class{constructor(e){this.options=e,Tt(this,"__sw_symbol",An),Tt(this,"uuid",l()),Tt(this,"_eventsPrefix",""),Tt(this,"_eventsRegisterQueue",new Set),Tt(this,"_eventsEmitQueue",new Set),Tt(this,"_eventsNamespace"),Tt(this,"_eventsTransformsCache",new Map),Tt(this,"_requests",new Map),Tt(this,"_customSagaTriggers",new Map),Tt(this,"_destroyer"),Tt(this,"_emitterTransforms",new Map),Tt(this,"_emitterListenersCache",new Map),Tt(this,"_trackedEvents",[]),Tt(this,"_runningWorkers",[]),Tt(this,"_workers",new Map)}get __uuid(){return this.uuid}_getNamespacedEvent(e){let t=this._eventsNamespace;return"string"==typeof e&&nr(e)&&(t=this.__uuid),Bt({event:e,namespace:t})}_getPrefixedEvent(e){return!this._eventsPrefix||"string"!=typeof e||e.includes(`${this._eventsPrefix}.`)||Zt(e)?e:`${this._eventsPrefix}.${e}`}_getInternalEvent(e){return this._getNamespacedEvent(this._getPrefixedEvent(e))}get logger(){return Vt()}set destroyer(e){this._destroyer=e}get store(){return this.options.store}get emitter(){return this.options.emitter}addEventToRegisterQueue(e){const[t,r]=e.params;return this.logger.trace("Adding event to the register queue",{event:t,fn:r}),this._eventsRegisterQueue.add({type:e.type,params:e.params}),this.emitter}_addEventToEmitQueue(e,t){this.logger.trace("Adding to the emit queue",e),this._eventsEmitQueue.add({event:e,args:t})}shouldAddToQueue(){return void 0===this._eventsNamespace}runAndCacheEventHandlerTransform({internalEvent:e,transform:t,payload:r}){if(!this._eventsTransformsCache.has(e)){const n=t.instanceFactory(r);return this._eventsTransformsCache.set(e,n),n}return this._eventsTransformsCache.get(e)}cleanupEventHandlerTransformCache({internalEvent:e,force:t}){const r=this._eventsTransformsCache.get(e),n=this.listenerCount(e);return r&&(t||n<=1)?(r.destroy(),this._eventsTransformsCache.delete(e)):(this.logger.trace("[cleanupEventHandlerTransformCache] Key wasn't cached",e),!1)}getEmitterListenersMapByInternalEventName(e){var t;return null!=(t=this._emitterListenersCache.get(e))?t:new Map}getAndRemoveStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);if(t&&r.has(t)){const n=r.get(t);return r.delete(t),this._emitterListenersCache.set(e,r),n}return t}_createStableEventHandler(e,t){return r=>{const n=this._emitterTransforms.get(e);if(!n)return t(r);const o=this.runAndCacheEventHandlerTransform({internalEvent:e,transform:n,payload:r}),s=this._parseNestedFields(n.payloadTransform(r)),i=Kt({instance:o,payload:r,transformedPayload:s,transform:n});return t(i)}}_parseNestedFields(e){return Gt.forEach((({field:t,preProcessPayload:r,eventTransformType:n})=>{var o;const s=this._emitterTransforms.get(n);s&&(null==(o=null==e?void 0:e[t])?void 0:o.length)&&(e[t]=e[t].map((e=>(({transform:e,payload:t})=>{const r=(({transform:e,payload:t})=>{if(!Jt.has(e.type)){const r=e.instanceFactory(t);return Jt.set(e.type,r),r}return Jt.get(e.type)})({transform:e,payload:t}),n=e.payloadTransform(t);return Kt({transform:e,payload:t,instance:r,transformedPayload:n})})({transform:s,payload:r(e)}))))})),e}getOrCreateStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);let n=r.get(t);return n||(n=this._createStableEventHandler(e,t),r.set(t,n),this._emitterListenersCache.set(e,r)),n}_trackEvent(e){this._trackedEvents=Array.from(new Set(this._trackedEvents.concat(e)))}_untrackEvent(e){this._trackedEvents=this._trackedEvents.filter((t=>t!==e))}_addListener(e,t,r){const n=this._getInternalEvent(e);this._trackEvent(n);const o=r?"once":"on";if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:o,params:[e,t]}),this.emitter;const s=this.getOrCreateStableEventHandler(n,t);return this.logger.trace("Registering event",n),this.emitter[o](n,s)}on(e,t){return this._addListener(e,t)}once(e,t){return this._addListener(e,t,!0)}off(e,t){if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:"off",params:[e,t]}),this.emitter;const r=this._getInternalEvent(e),n=this.getAndRemoveStableEventHandler(r,t);return this.cleanupEventHandlerTransformCache({internalEvent:r,force:!n}),this.logger.trace("Removing event listener",r),this._untrackEvent(r),this.emitter.off(r,n)}removeAllListeners(e){return this.shouldAddToQueue()?(this.addEventToRegisterQueue({type:"removeAllListeners",params:[e]}),this.emitter):e?this.off(e):(this.eventNames().forEach((e=>{this.off(e)})),this.emitter)}eventNames(){return this._trackedEvents}getSubscriptions(){return rr(this.eventNames())}emit(e,...t){if(this.shouldAddToQueue())return this._addEventToEmitQueue(e,t),!1;const r=this._getInternalEvent(e);return this.logger.trace("Emit on event:",r),this.emitter.emit(r,...t)}listenerCount(e){return this.emitter.listenerCount(e)}destroy(){var e;null==(e=this._destroyer)||e.call(this),this.removeAllListeners(),this.detachWorkers()}execute({method:e,params:t},{transformParams:r=Rn,transformResolve:n=Rn,transformReject:o=Rn}={transformParams:Rn,transformResolve:Rn,transformReject:Rn}){return new Promise(((s,i)=>{const a=l();this._requests.set(a,{resolve:s,reject:i,transformResolve:n,transformReject:o}),this.store.dispatch(Cr({requestId:a,componentId:this.__uuid,method:e,params:r(t)}))}))}triggerCustomSaga(e){return new Promise(((t,r)=>{const n=l();this._customSagaTriggers.set(n,{resolve:t,reject:r}),this.store.dispatch(St({dispatchId:n},Vr(this.__uuid,e)))}))}settleCustomSagaTrigger({dispatchId:e,payload:t,kind:r}){const n=this._customSagaTriggers.get(e);n&&(n[r](t),this._customSagaTriggers.delete(e))}select(e){return e(this.store.getState())}onError(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.errors[r])&&(t.reject(t.transformReject(e.errors[r])),this._requests.delete(r))}))}onSuccess(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.responses[r])&&(t.resolve(t.transformResolve(e.responses[r])),this._requests.delete(r))}))}getStateProperty(e){return this[e]}flushEventsRegisterQueue(){this._eventsRegisterQueue.forEach((e=>{this[e.type](...e.params),this._eventsRegisterQueue.delete(e)}))}flushEventsEmitQueue(){this._eventsEmitQueue.forEach((e=>{const{event:t,args:r}=e;this.emit(t,...r),this._eventsEmitQueue.delete(e)}))}flushEventsQueue(){this.flushEventsRegisterQueue(),this.flushEventsEmitQueue()}_attachListeners(e){"string"==typeof e&&(this._eventsNamespace=e),this.flushEventsQueue()}getEmitterTransforms(){return new Map}get _sessionAuthStatus(){return un(this.store.getState())}_waitUntilSessionAuthorized(){switch(un(this.store.getState())){case"authorized":return Promise.resolve(this);case"unknown":case"authorizing":return new Promise(((e,t)=>{const r=this.store.subscribe((()=>{const n=un(this.store.getState()),o=dn(this.store.getState());if("authorized"===n)e(this),r();else if("unauthorized"===n){const e=o?new _n(o.code,o.message):new Error("Unauthorized");t(e),r()}}))}));case"unauthorized":return Promise.reject(new Error("Unauthorized"))}}_setEmitterTransform({event:e,handler:t,local:r}){const n=this._getInternalEvent(e);(r?nr(e):!nr(e)&&this.eventNames().includes(n))&&this._emitterTransforms.set(n,t)}applyEmitterTransforms({local:e=!1}={local:!1}){this.getEmitterTransforms().forEach(((t,r)=>{Array.isArray(r)?r.forEach((r=>{this._setEmitterTransform({event:r,handler:t,local:e})})):this._setEmitterTransform({event:r,handler:t,local:e}),this._emitterTransforms.set(t.type,t)}))}setWorker(e,t){this._workers.set(e,t)}attachWorkers(){return this._workers.forEach((({worker:e},t)=>{const r=this.store.runSaga(e,{instance:this,runSaga:this.store.runSaga});this._runningWorkers.push(r),this._workers.delete(t)}))}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},jn=class extends xn{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=un(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(Sr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(wr())}},Ln=class extends xn{constructor(e){super(e),this.options=e,Tt(this,"subscribeMethod","signalwire.subscribe"),Tt(this,"subscribeParams",{}),this.applyEmitterTransforms({local:!0})}subscribe(){return new Promise((async(e,t)=>{const r=this.getSubscriptions();if(r.length>0){const e={method:this.subscribeMethod,params:wt(St({},this.subscribeParams),{event_channel:this.getStateProperty("eventChannel"),events:r})};try{this.applyEmitterTransforms(),this.attachWorkers(),await this.execute(e)}catch(e){return t(e)}}else this.logger.warn("`subscribe()` was called without any listeners attached.");return e(void 0)}))}},Dn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(Dn).map((e=>`video.member.updated.${e}`));var Nn=Ut(Dn);Object.keys(Nn).map((e=>`member.updated.${e}`));var Vn={};Et(Vn,{RoomSessionPlaybackAPI:()=>mo,RoomSessionRecordingAPI:()=>ho,audioMuteMember:()=>Zn,audioUnmuteMember:()=>eo,createRoomSessionPlaybackObject:()=>fo,createRoomSessionRecordingObject:()=>po,deafMember:()=>no,getLayouts:()=>qn,getMembers:()=>Bn,getPlaybacks:()=>Xn,getRecordings:()=>Jn,hideVideoMuted:()=>Hn,play:()=>Yn,removeMember:()=>lo,setDeaf:()=>so,setHideVideoMuted:()=>Kn,setInputSensitivityMember:()=>co,setInputVolumeMember:()=>io,setLayout:()=>Fn,setMemberPosition:()=>uo,setOutputVolumeMember:()=>ao,setPositions:()=>zn,showVideoMuted:()=>Qn,startRecording:()=>Gn,undeafMember:()=>oo,videoMuteMember:()=>to,videoUnmuteMember:()=>ro});var Wn=()=>{},$n=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:St({room_session_id:this.roomSessionId},r)},t)}}),Un=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=kt(n,["memberId"]);return this.execute({method:e,params:St({room_session_id:this.roomSessionId,member_id:o||this.memberId},s)},t)}}),qn=$n("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),Bn=$n("video.members.get",{transformResolve:e=>({members:e.members})}),Fn=$n("video.set_layout",{transformResolve:Wn}),zn=$n("video.set_position",{transformResolve:Wn}),Hn=$n("video.hide_video_muted",{transformResolve:Wn}),Qn=$n("video.show_video_muted",{transformResolve:Wn}),Kn={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:Wn})}},Jn=$n("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Ut(e)))})}),Gn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(or("video.recording.start"),t);try{const e=await this.execute({method:"video.recording.start",params:{room_session_id:this.roomSessionId}});this.emit(or("video.recording.start"),wt(St({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(or("video.recording.start"),t),e}}))}},Xn=$n("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Ut(e)))})}),Yn={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(or("video.playback.start"),r);try{const t=await this.execute({method:"video.playback.start",params:St({room_session_id:this.roomSessionId},e)});this.emit(or("video.playback.start"),wt(St({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(or("video.playback.start"),r),e}}))}},Zn=Un("video.member.audio_mute",{transformResolve:Wn}),eo=Un("video.member.audio_unmute",{transformResolve:Wn}),to=Un("video.member.video_mute",{transformResolve:Wn}),ro=Un("video.member.video_unmute",{transformResolve:Wn}),no=Un("video.member.deaf",{transformResolve:Wn}),oo=Un("video.member.undeaf",{transformResolve:Wn}),so={value:function(e){return this.execute({method:e?"video.member.deaf":"video.member.undeaf",params:{room_session_id:this.roomSessionId,member_id:this.memberId}},{transformResolve:Wn})}},io=Un("video.member.set_input_volume",{transformResolve:Wn}),ao=Un("video.member.set_output_volume",{transformResolve:Wn}),co=Un("video.member.set_input_sensitivity",{transformResolve:Wn}),uo=Un("video.member.set_position",{transformResolve:Wn}),lo={value:function(e){var t=e,{memberId:r}=t,n=kt(t,["memberId"]);if(!r)throw new TypeError('Invalid or missing "memberId" argument');return this.execute({method:"video.member.remove",params:St({room_session_id:this.roomSessionId,member_id:r},n)},{transformResolve:Wn})}},ho=class extends xn{async pause(){await this.execute({method:"video.recording.pause",params:{room_session_id:this.getStateProperty("roomSessionId"),recording_id:this.getStateProperty("id")}})}async resume(){await this.execute({method:"video.recording.resume",params:{room_session_id:this.getStateProperty("roomSessionId"),recording_id:this.getStateProperty("id")}})}async stop(){await this.execute({method:"video.recording.stop",params:{room_session_id:this.getStateProperty("roomSessionId"),recording_id:this.getStateProperty("id")}})}},po=e=>Mn({store:e.store,Component:ho,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),mo=class extends xn{async pause(){await this.execute({method:"video.playback.pause",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id")}})}async resume(){await this.execute({method:"video.playback.resume",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id")}})}async stop(){await this.execute({method:"video.playback.stop",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id")}})}async setVolume(e){await this.execute({method:"video.playback.set_volume",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),volume:e}})}},fo=e=>Mn({store:e.store,Component:mo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),go={};Et(go,{BaseChatAPI:()=>Ro,BaseChatConsumer:()=>Po,ChatMember:()=>Io,ChatMessage:()=>To,createBaseChatObject:()=>Ao,getMemberState:()=>Co,getMembers:()=>wo,getMessages:()=>So,publish:()=>_o,setMemberState:()=>Eo});var vo=()=>{},yo=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),bo=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=kt(n,["memberId"]);return this.execute({method:e,params:St({member_id:o},s)},t)}}),_o=yo("chat.publish",{transformResolve:vo}),So=yo("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Ut(e))),cursor:e.cursor})}),wo=yo("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Ut(e)))})}),ko=e=>{const t=(r=null==e?void 0:e.channels,Array.isArray(r)||"string"==typeof r?(e=>{const t=!e||Array.isArray(e)?e:[e];return Array.isArray(t)?t.map((e=>({name:e}))):[]})(e.channels):void 0);var r;return wt(St({},e),{channels:t})},Eo=bo("chat.member.set_state",{transformResolve:vo,transformParams:ko}),Co=bo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:ko}),To=class{constructor(e){this.payload=e}get id(){return this.payload.id}get member(){return this.payload.member}get channel(){return this.payload.channel}get content(){return this.payload.content}get meta(){return this.payload.meta}get publishedAt(){return this.payload.publishedAt}},Io=class{constructor(e){this.payload=e}get id(){return this.payload.id}get channel(){return this.payload.channel}get state(){var e;return null!=(e=this.payload.state)?e:{}}},Oo=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Se((e=>e.type.startsWith("chat.")));switch(Vt().debug("chatWorker:",t),t.type){case"chat.channel.message":yield we(e,{type:"chat.message",payload:t.payload});break;case"chat.member.joined":case"chat.member.updated":case"chat.member.left":yield we(e,t);break;default:Vt().warn("[chatWorker] Unrecognized Action",t)}}},Mo=e=>e.map((e=>({name:e}))),Po=class extends Ln{constructor(e){super(e),Tt(this,"_eventsPrefix","chat"),Tt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.setWorker("chat",{worker:Oo})}_getChannelsParam(e,t){const r=!e||Array.isArray(e)?e:[e];if(!Array.isArray(r)||0===r.length)throw new Error(`Please specify one or more channels when calling .${t}()`);return{channels:Mo(r)}}_setSubscribeParams(e){this.subscribeParams=St(St({},this.subscribeParams),e)}_getSubscribeParams({channels:e}){return St({},this._getChannelsParam(e,"subscribe"))}_getUnsubscribeParams({channels:e}){const t=this._getChannelsParam(e,"unsubscribe");return St({},t)}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:e=>{const{channel:t,message:r}=e.params;return new To(Ut(wt(St({},r),{channel:t})))},payloadTransform:e=>{const{channel:t,message:r}=e.params;return Ut(wt(St({},r),{channel:t}))}}],[["member.joined","member.left","member.updated"],{type:"chatMessage",instanceFactory:e=>{const{member:t}=e.params;return new Io(Ut(t))},payloadTransform:e=>{const{member:t}=e.params;return Ut(t)}}]])}async subscribe(e){const t=this._getSubscribeParams({channels:e});return this._setSubscribeParams(t),super.subscribe()}async unsubscribe(e){if("unknown"===this._sessionAuthStatus||"unauthorized"===this._sessionAuthStatus)throw new Error("You must be authenticated to unsubscribe from a channel");const t=this._getUnsubscribeParams({channels:e});return new Promise((async(e,r)=>{const n=this.getSubscriptions();if(n.length>0){const e={method:"chat.unsubscribe",params:wt(St({},t),{events:n})};try{await this.execute(e)}catch(e){return r(e)}}else this.logger.warn("`unsubscribe()` was called without any listeners attached.");return e(void 0)}))}updateToken(e){return new Promise(((t,r)=>{this.once("session.auth_error",(e=>{r(e)})),this.once("session.connected",(()=>{t()})),this.store.dispatch(gr.reauthAction({token:e}))}))}},Ro=Qt(Po,{publish:_o,getMembers:wo,getMessages:So,setMemberState:Eo,getMemberState:Co}),Ao=e=>Mn({store:e.store,Component:Ro,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),xo=St({},sn);const jo=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,Lo=()=>{if(!jo())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},Do=(e={audio:!0,video:!0})=>{try{return Lo().getUserMedia(e)}catch(t){switch(t.name){case"Error":Vt().error("navigator.mediaDevices.getUserMedia doesn't seem to be supported.");break;case"NotFoundError":Vt().error("No media tracks of the type specified were found that satisfy the given constraints.");break;case"NotReadableError":Vt().error("Hardware error occurred at the operating system, browser, or Web page level which prevented access to the device. This could have been caused by having the Camera or Mic being user by another application.");break;case"OverconstrainedError":Vt().error(`The constraint: ${t.constraint} cannot be met by the selected device.`),Vt().info("List of available constraints:",$o());break;case"NotAllowedError":Vt().error("The user has mostly likely denied access to the device. This could also happen if the browsing context is insecure (using HTTP rather than HTTPS)");break;case"TypeError":0===Object.keys(e).length?Vt().error('Constraints can\'t be empty nor have "video" and "audio" set to false.'):Vt().error("Please check that you are calling this method from a secure context (using HTTPS rather than HTTP).");break;case"SecurityError":Vt().error("User media support is disabled on the Document on which getUserMedia() was called. The mechanism by which user media support is enabled and disabled is left up to the individual user agent.")}throw t}},No=e=>Lo().getDisplayMedia(e),Vo=()=>Lo().enumerateDevices(),Wo=async e=>{let t=await Vo().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},$o=()=>Lo().getSupportedConstraints(),Uo=e=>e&&e instanceof MediaStream,qo=()=>"sinkId"in HTMLMediaElement.prototype,Bo=async(e,t)=>{if(null!==e)if("string"==typeof t)if(qo())try{return await e.setSinkId(t)}catch(e){throw"SecurityError"===e.name?Vt().error(`You need to use HTTPS for selecting audio output device: ${e}`):Vt().error(`Error: ${e}`),e}else Vt().warn("Browser does not support output device selection.");else Vt().warn(`Invalid speaker deviceId: '${t}'`);else Vt().warn("No HTMLMediaElement to attach the speakerId")},Fo=e=>{var t;Uo(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(zo))},zo=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},Ho={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},Qo=e=>{if(e)return Ho[e]},Ko=async e=>{if("permissions"in navigator&&"function"==typeof navigator.permissions.query&&e)try{return"granted"===(await navigator.permissions.query({name:e})).state}catch(e){}return(async e=>{const t=await Wo(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Vt().warn(`No ${e} devices to check for permissions!`),null)})(Qo(e))},Jo=()=>Ko("camera"),Go=()=>Ko("microphone"),Xo=()=>Ko("speaker"),Yo=async(e,t=!1)=>{if(!1===await Ko(e)){const t=(e=>({audio:!e||"all"===e||"microphone"===e||"speaker"===e,video:!e||"all"===e||"camera"===e}))(e),r=await Do(t);Fo(r)}return es(e,t)},Zo=(e,t={})=>{const r=[];return e.filter((({deviceId:e,kind:n,groupId:o})=>{var s;if(!e||t.targets&&!(null===(s=t.targets)||void 0===s?void 0:s.includes(n)))return!1;if(!o)return!0;const i=`${n}-${o}`,a=!(null==t?void 0:t.excludeDefault)||"default"!==e;return!(r.includes(i)||!a||(r.push(i),0))}))},es=async(e,t=!1)=>{const r=await Wo(Qo(e));return!0===t?r:Zo(r)},ts=async(e,t,r)=>{const n=await es(r,!0);for(let r=0;r<n.length;r++){const{deviceId:o,label:s}=n[r];if(e===o||t===s)return o}return null},rs=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},ns={camera:Jo,microphone:Go,speaker:Xo},os=["camera","microphone","speaker"],ss=`Allowed targets are: '${os.join("', '")}'`,is={speaker:qo},as=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:os).filter((e=>!!os.includes(e)||(Vt().warn(`We'll ignore the "${e}" target as it is not allowed. ${ss}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${ss}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>ns[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in is)||(null===(o=is[s])||void 0===o?void 0:o.call(is))?"supported":"unsupported"].push([s,!!r]),e}),{supported:[],unsupported:[]})})({targets:r});if(n.unsupported.length>0&&r.length===n.unsupported.length)throw new Error(`The platform doesn't support "${r.join(", ")}" as target/s, which means it's not possible to watch for changes on those devices.`);if(n.supported.every((([e,t])=>!t)))throw new Error("You must ask the user for permissions before being able to listen for device changes. Try calling getUserMedia() before calling `createDeviceWatcher()`.");let o=[];const s=n.supported.reduce(((e,[t,r])=>(r?e.push(t):o.push(t),e)),[]);if(s.length!==r.length){const e=n.unsupported.length>0?`The platform doesn't support "${n.unsupported.map((([e])=>e)).join(", ")}" as target/s, which means it's not possible to watch for changes on those devices. `:"",t=o.length>0?`The user hasn't granted permissions for the following targets: ${o.join(", ")}. `:"";Vt().warn(`${e}${t}We'll be watching for the following targets instead: "${s.join(", ")}"`)}return Vt().debug(`Watching these targets: "${s.join(", ")}"`),s})({targets:e.targets}),r=new lt,n=await Vo(),o=null==t?void 0:t.reduce(((e,t)=>{const r=Qo(t);return r&&e.push(r),e}),[]);let s=Zo(n,{excludeDefault:!0,targets:o});return Lo().addEventListener("devicechange",(async()=>{const e=await Vo(),t=s,n=Zo(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=rs(e),n=rs(e),o=[];Vt().debug("[_getDeviceListDiff] <- oldDevices",e),Vt().debug("[_getDeviceListDiff] -> newDevices",t);const s=t.filter((e=>{const t=e.deviceId,s=r.get(t);return s&&(n.delete(t),e.label!==s.label&&o.push(e)),void 0===s}));return{updated:o.map((e=>({type:"updated",payload:e}))),removed:Array.from(n,(([e,t])=>t)).map((e=>({type:"removed",payload:e}))),added:s.map((e=>({type:"added",payload:e})))}})(t,n),a=i.added.length>0,c=i.removed.length>0,u=i.updated.length>0;(a||c||u)&&r.emit("changed",{changes:i,devices:n}),a&&r.emit("added",{changes:i.added,devices:n}),c&&r.emit("removed",{changes:i.removed,devices:n}),u&&r.emit("updated",{changes:i.updated,devices:n})})),r},cs=e=>"function"==typeof e.getTracks,us=async e=>{Vt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)try{return await Do(e)}catch(e){throw Vt().error("getUserMedia error: ",e),e}},ds=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await ts(r,n,"microphone").catch((e=>null));e&&("boolean"==typeof t&&(t={}),t.deviceId={exact:e})}let{video:o=!1,camId:s}=e;const{camLabel:i=""}=e;if(s){const e=await ts(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},ls=e=>/^m=audio/.test(e),hs=e=>/^m=video/.test(e),ps=e=>{const t=e.split("\r\n"),r=t.findIndex((e=>/^a=rtpmap/.test(e)&&/opus\/48000/.test(e)));if(r<0)return e;const n=(e=>{const t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),r=e.match(t);return r&&2==r.length?r[1]:null})(t[r]),o=new RegExp(`a=fmtp:${n}`),s=t.findIndex((e=>o.test(e)));return s>=0?/stereo=1;/.test(t[s])||(t[s]+="; stereo=1; sprop-stereo=1"):t[r]+=`\r\na=fmtp:${n} stereo=1; sprop-stereo=1`,t.join("\r\n")};class ms{constructor(e,t){this.call=e,this.type=t,this._negotiating=!1,this.options=e.options,this.logger.debug("New Peer with type:",this.type,"Options:",this.options),this._onIce=this._onIce.bind(this)}get logger(){return Vt()}get isOffer(){return"offer"===this.type}get isAnswer(){return"answer"===this.type}get isSimulcast(){return!0===this.options.simulcast}get isSfu(){return!0===this.options.sfu}get localVideoTrack(){const e=this._getSenderByKind("video");return(null==e?void 0:e.track)||null}get localAudioTrack(){const e=this._getSenderByKind("audio");return(null==e?void 0:e.track)||null}get hasAudioSender(){return!!this._getSenderByKind("audio")}get hasVideoSender(){return!!this._getSenderByKind("video")}get hasAudioReceiver(){return!!this._getReceiverByKind("audio")}get hasVideoReceiver(){return!!this._getReceiverByKind("video")}get config(){const{rtcPeerConfig:e={}}=this.options,t=Object.assign({bundlePolicy:"max-compat",iceServers:this.call.iceServers,sdpSemantics:"unified-plan"},e);return this.logger.debug("RTC config",t),t}get localSdp(){var e,t;return null===(t=null===(e=this.instance)||void 0===e?void 0:e.localDescription)||void 0===t?void 0:t.sdp}stopTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to stop.`);n.track&&(zo(n.track),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.removeTrack(n.track))}catch(t){this.logger.error("RTCPeer stopTrackSender error",e,t)}}async restoreTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to restore.`);if(n.track&&"ended"!==n.track.readyState)return this.logger.info(`There is already an active ${e} track.`);const o=await ds(this.options),s=await us({[e]:o[e]});if(s&&Uo(s)){const o=s.getTracks().find((t=>t.kind===e));o&&(await n.replaceTrack(o),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.addTrack(o))}}catch(t){this.logger.error("RTCPeer restoreTrackSender error",e,t)}}getDeviceId(e){try{const t=this._getSenderByKind(e);if(!t||!t.track)return null;const{deviceId:r=null}=t.track.getSettings();return r}catch(t){return this.logger.error("RTCPeer getDeviceId error",e,t),null}}getTrackSettings(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.getSettings():null}catch(t){return this.logger.error("RTCPeer getTrackSettings error",e,t),null}}getDeviceLabel(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.label:null}catch(t){return this.logger.error("RTCPeer getDeviceLabel error",e,t),null}}restartIceWithRelayOnly(){try{const e=this.instance.getConfiguration();if("relay"===e.iceTransportPolicy)return this.logger.warn("RTCPeer already with iceTransportPolicy relay only");const t=Object.assign(Object.assign({},e),{iceTransportPolicy:"relay"});this.instance.setConfiguration(t),this.instance.restartIce()}catch(e){this.logger.error("RTCPeer restartIce error",e)}}async applyMediaConstraints(e,t){try{const r=this._getSenderByKind(e);if(!r||!r.track)return this.logger.info("No sender to apply constraints",e,t);if("live"===r.track.readyState){const n=Object.assign(Object.assign({},r.track.getConstraints()),t),o=this.getDeviceId(e);o&&!this.options.screenShare&&(n.deviceId={exact:o}),this.logger.info(`Apply ${e} constraints`,this.call.id,n),await r.track.applyConstraints(n)}}catch(r){this.logger.error("Error applying constraints",e,t)}}_getSenderByKind(e){return this.instance.getSenders?this.instance.getSenders().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getSenders() not available."),null)}_getReceiverByKind(e){return this.instance.getReceivers?this.instance.getReceivers().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getReceivers() not available."),null)}async startNegotiation(e=!1){var t,r;if(this._negotiating)return this.logger.warn("Skip twice onnegotiationneeded!");this._negotiating=!0;try{if((this.options.additionalDevice||this.options.screenShare)&&(null===(r=(t=this.instance).getTransceivers)||void 0===r||r.call(t).forEach((e=>{e.direction="sendonly"}))),this.instance.removeEventListener("icecandidate",this._onIce),this.instance.addEventListener("icecandidate",this._onIce),this.isOffer){this.logger.debug("Trying to generate offer");const e=await this.instance.createOffer({voiceActivityDetection:!1});await this._setLocalDescription(e)}if(this.isAnswer){this.logger.debug("Trying to generate answer"),await this._setRemoteDescription({sdp:this.options.remoteSdp,type:"offer"});const e=await this.instance.createAnswer({voiceActivityDetection:!1});await this._setLocalDescription(e)}e&&this._sdpReady()}catch(e){this.logger.error(`Error creating ${this.type}:`,e)}}async onRemoteSdp(e){try{const t=this.isOffer?"answer":"offer";await this._setRemoteDescription({sdp:e,type:t}),this.isOffer&&this._resolveStartMethod()}catch(e){this.logger.error(`Error handling remote SDP on call ${this.call.id}:`,e),this.call.hangup(),this._rejectStartMethod(e)}}_setupRTCPeerConnection(){this.instance||(this.instance=new window.RTCPeerConnection(this.config),this._attachListeners())}async start(){return new Promise((async(e,t)=>{this._resolveStartMethod=e,this._rejectStartMethod=t;try{this.options.localStream=await this._retrieveLocalStream()}catch(e){return this.logger.error("Error retrieving a local stream",e),this._rejectStartMethod(e),this.call.setState("hangup")}this._setupRTCPeerConnection();const{localStream:r=null}=this.options;if(r&&Uo(r)){const e=r.getAudioTracks();this.logger.debug("Local audio tracks: ",e);const t=r.getVideoTracks();if(this.logger.debug("Local video tracks: ",t),this.isOffer&&"function"==typeof this.instance.addTransceiver){e.forEach((e=>{this.instance.addTransceiver(e,{direction:"sendrecv",streams:[r]})}));const n={direction:"sendrecv",streams:[r]};if(this.isSimulcast&&(n.sendEncodings=["0","1","2"].map((e=>({active:!0,rid:e,scaleResolutionDownBy:6*Number(e)||1})))),this.logger.debug("Applying video transceiverParams",n),t.forEach((e=>{this.instance.addTransceiver(e,n)})),this.isSfu){const{msStreamsNumber:e=5}=this.options;this.logger.debug("Add ",e,"recvonly MS Streams"),n.direction="recvonly";for(let t=0;t<Number(e);t++)this.instance.addTransceiver("video",n)}}else"function"==typeof this.instance.addTrack?(e.forEach((e=>{this.instance.addTrack(e,r)})),t.forEach((e=>{this.instance.addTrack(e,r)}))):this.instance.addStream(r)}this.isOffer?(this.options.negotiateAudio&&this._checkMediaToNegotiate("audio"),this.options.negotiateVideo&&this._checkMediaToNegotiate("video")):this.startNegotiation()}))}_checkMediaToNegotiate(e){if(!this._getSenderByKind(e)&&this.instance.addTransceiver){const t=this.instance.addTransceiver(e,{direction:"recvonly"});this.logger.debug("Add transceiver",e,t)}}async _sdpReady(){if(clearTimeout(this._iceTimeout),this._iceTimeout=null,!this.instance.localDescription)return;const{sdp:e,type:t}=this.instance.localDescription;if(-1===e.indexOf("candidate"))return this.logger.debug("No candidate - retry \n"),void this.startNegotiation(!0);this.logger.debug("LOCAL SDP \n",`Type: ${t}`,"\n\n",e),this.instance.removeEventListener("icecandidate",this._onIce);try{await this.call.onLocalSDPReady(this.instance.localDescription)}catch(e){this._rejectStartMethod(e)}}_onIce(e){this._iceTimeout||(this._iceTimeout=setTimeout((()=>this._sdpReady()),this.options.iceGatheringTimeout)),e.candidate?(this.logger.debug("IceCandidate:",e.candidate),this.call.emit("icecandidate",e)):this._sdpReady()}_setLocalDescription(e){const{useStereo:t,googleMaxBitrate:r,googleMinBitrate:n,googleStartBitrate:o}=this.options;return e.sdp&&t&&(e.sdp=ps(e.sdp)),e.sdp&&r&&n&&o&&(e.sdp=((e,t,r,n)=>{const o=e.split("\r\n");return o.forEach(((e,s)=>{/^a=fmtp:\d*/.test(e)?o[s]+=`;x-google-max-bitrate=${t};x-google-min-bitrate=${r};x-google-start-bitrate=${n}`:/^a=mid:(1|video)/.test(e)&&(o[s]+=`\r\nb=AS:${t}`)})),o.join("\r\n")})(e.sdp,r,n,o)),this.logger.debug("LOCAL SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setLocalDescription(e)}_setRemoteDescription(e){e.sdp&&this.options.useStereo&&(e.sdp=ps(e.sdp)),e.sdp&&this.instance.localDescription&&(e.sdp=((e,t)=>{const r="\r\n",n=this.instance.localDescription.sdp.split(r);if(n.findIndex(ls)<n.findIndex(hs))return e;const o=e.split(r),s=o.findIndex(ls),i=o.findIndex(hs),a=o.slice(s,i),c=o.slice(i,o.length-1);return[...o.slice(0,s),...c,...a,""].join(r)})(e.sdp));const t=e;return this.logger.debug("REMOTE SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setRemoteDescription(t)}async _retrieveLocalStream(){if(Uo(this.options.localStream))return this.options.localStream;const e=await ds(this.options);return us(e)}_attachListeners(){this.instance.addEventListener("signalingstatechange",(()=>{switch(this.logger.debug("signalingState:",this.instance.signalingState),this.instance.signalingState){case"stable":this._negotiating=!1;break;case"closed":delete this.instance;break;default:this._negotiating=!0}})),this.instance.addEventListener("negotiationneeded",(()=>{this.logger.debug("Negotiation needed event"),this.startNegotiation()})),this.instance.addEventListener("iceconnectionstatechange",(()=>{this.logger.debug("iceConnectionState:",this.instance.iceConnectionState)})),this.instance.addEventListener("icegatheringstatechange",(()=>{this.logger.debug("iceGatheringState:",this.instance.iceGatheringState)})),this.instance.addEventListener("track",(e=>{this.call.emit("track",e),this.options.remoteStream=e.streams[0]})),this.instance.addEventListener("addstream",(e=>{e.stream&&(this.options.remoteStream=e.stream)}))}}const fs={destinationNumber:"room",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:!0,video:{aspectRatio:16/9},useStereo:!1,attach:!1,screenShare:!1,additionalDevice:!1,userVariables:{},requestTimeout:1e4,autoApplyMediaParams:!0,iceGatheringTimeout:2e3};class gs extends xn{constructor(e){super(e),this.nodeId="",this.gotEarly=!1,this.doReinvite=!1,this._eventsPrefix="video",this.state="new",this.prevState="new",this.options=Object.assign(Object.assign({},fs),e),this.setState("new"),this.logger.debug("New Call with Options:",this.options),this.applyEmitterTransforms({local:!0}),this.attachWorkers()}get id(){return this.__uuid}get active(){return"active"===this.state}get trying(){return"trying"===this.state}get memberId(){return this._memberId}get previewUrl(){return this._previewUrl}get roomId(){return this._roomId}get roomSessionId(){return this._roomSessionId}get localStream(){return this.options.localStream}get remoteStream(){return this.options.remoteStream}get iceServers(){var e,t;return null!==(t=null===(e=this.options)||void 0===e?void 0:e.iceServers)&&void 0!==t?t:this.select(xo.getIceServers)}get messagePayload(){const{destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c}=this.options;return{sessid:this.options.sessionid,dialogParams:{id:this.__uuid,destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c}}}get cameraId(){return this.peer?this.peer.getDeviceId("video"):null}get cameraLabel(){return this.peer?this.peer.getDeviceLabel("video"):null}get microphoneId(){return this.peer?this.peer.getDeviceId("audio"):null}get microphoneLabel(){return this.peer?this.peer.getDeviceLabel("audio"):null}get withAudio(){return!!this.remoteStream&&this.remoteStream.getAudioTracks().length>0}get withVideo(){return!!this.remoteStream&&this.remoteStream.getVideoTracks().length>0}get localVideoTrack(){return this.peer.localVideoTrack}get localAudioTrack(){return this.peer.localAudioTrack}vertoExecute(e){const t={message:e,node_id:this.nodeId};return"verto.invite"===e.method&&(t.subscribe=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions()),this.execute({method:"video.message",params:t})}onStateChange(e){switch(this.logger.debug("onStateChange",e),e.state){case"hangup":this._hangup(e);break;default:this.setState(e.state)}}onRemoteSDP(e){this.logger.debug("onRemoteSDP",e),e.remoteSDP&&this.peer.onRemoteSdp(e.remoteSDP)}onRoomSubscribed(e){this.logger.debug("onRoomSubscribed",e),this.nodeId=e.nodeId,this._roomId=e.roomId,this._roomSessionId=e.roomSessionId,this._memberId=e.memberId,this._previewUrl=e.previewUrl,this._attachListeners(this.options.additionalDevice||this.options.screenShare?e.memberId:e.roomSessionId),this.applyEmitterTransforms()}onVideoConstraints(e){this.logger.debug("onVideoConstraints",e),(null==e?void 0:e.videoConstraints)&&this.peer.applyMediaConstraints("video",e.videoConstraints)}onAudioConstraints(e){this.logger.debug("onAudioConstraints",e),(null==e?void 0:e.audioConstraints)&&this.peer.applyMediaConstraints("audio",e.audioConstraints)}updateCamera(e){return this.updateConstraints({video:Object.assign({aspectRatio:16/9},e)})}updateMicrophone(e){return this.updateConstraints({audio:e})}manageSendersWithConstraints(e){return!1===e.audio&&(this.logger.info("Switching off the microphone"),this.stopOutboundAudio()),!1===e.video&&(this.logger.info("Switching off the camera"),this.stopOutboundVideo()),e.audio||e.video}updateConstraints(e,{attempt:t=0}={}){return t>1?Promise.reject(new Error("Failed to update constraints")):new Promise((async(r,n)=>{var o;try{if(this.logger.debug("updateConstraints trying constraints",this.__uuid,e),!Object.keys(e).length)return this.logger.warn("Invalid constraints:",e);if(!this.manageSendersWithConstraints(e))return void this.logger.debug("Either `video` and `audio` (or both) constraints were set to `false` so their corresponding senders (if any) were stopped");let s;try{s=await Do(e)}catch(s){if(s instanceof DOMException&&"Concurrent mic process limit."===s.message){let n={};null===(o=this.options.localStream)||void 0===o||o.getTracks().forEach((t=>{var r;n[t.kind]=t.getConstraints(),void 0!==e[t.kind]&&(this.logger.debug("updateConstraints stop old tracks to retrieve new ones"),zo(t),null===(r=this.options.localStream)||void 0===r||r.removeTrack(t))}));try{return r(this.updateConstraints(e,{attempt:t+1}))}catch(e){return this.logger.error("Restoring previous constraints"),r(this.updateConstraints(n,{attempt:t+1}))}}return this.logger.error("updateConstraints",s),n(s)}this.logger.debug("updateConstraints got stream",s),this.options.localStream||(this.options.localStream=new MediaStream);const{instance:i}=this.peer,a=s.getTracks();for(let e=0;e<a.length;e++){const t=a[e];this.logger.debug("updateConstraints apply track: ",t);const r=i.getTransceivers().find((({mid:e,sender:r,receiver:n})=>r.track&&r.track.kind===t.kind?(this.logger.debug("Found transceiver by sender"),!0):n.track&&n.track.kind===t.kind?(this.logger.debug("Found transceiver by receiver"),!0):null===e&&(this.logger.debug("Found disassociated transceiver"),!0)));r&&r.sender?(this.logger.debug("updateConstraints FOUND - replaceTrack on it and on localStream"),await r.sender.replaceTrack(t),this.logger.debug("updateConstraints replaceTrack SUCCESS"),this.options.localStream.getTracks().forEach((e=>{var r;e.kind===t.kind&&e.id!==t.id&&(this.logger.debug("updateConstraints stop old track and apply new one - "),zo(e),null===(r=this.options.localStream)||void 0===r||r.removeTrack(e))})),this.options.localStream.addTrack(t)):(this.logger.debug("updateConstraints NOT FOUND - addTrack and start dancing!"),this.peer.type="offer",this.doReinvite=!0,this.options.localStream.addTrack(t),i.addTrack(t,this.options.localStream)),this.logger.debug("updateConstraints Simply update mic/cam"),"audio"===t.kind?this.options.micId=t.getSettings().deviceId:"video"===t.kind&&(this.options.camId=t.getSettings().deviceId)}this.logger.debug("updateConstraints done!"),r()}catch(e){this.logger.error("updateConstraints",e),n(e)}}))}invite(){return new Promise((async(e,t)=>{this.direction="outbound",this.peer=new ms(this,"offer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Invite error",e),t(e)}}))}answer(){return new Promise((async(e,t)=>{this.direction="inbound",this.peer=new ms(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){const{type:t,sdp:r}=e,n=this._mungeSDP(r);switch(this.logger.debug("MUNGED SDP \n",`Type: ${t}`,"\n\n",n),t){case"offer":return this.executeInvite(n);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${t}' on call ${this.id}`)}}async executeInvite(e){this.setState("requesting");try{const t=this.options.screenShare?{layout:this.options.layout,positions:this.options.positions}:{},r=hr(Object.assign(Object.assign(Object.assign({},this.messagePayload),t),{sdp:e})),n=await this.vertoExecute(r);this.logger.debug("Invite response",n)}catch(e){throw this.setState("hangup"),e.jsonrpc}}async hangup(){try{const e=pr(this.messagePayload);await this.vertoExecute(e)}catch(e){this.logger.error("Hangup error:",e)}finally{this._hangup()}}dtmf(e){const t=mr(Object.assign(Object.assign({},this.messagePayload),{dtmf:e}));this.vertoExecute(t)}doReinviteWithRelayOnly(){this.peer&&this.active&&this.peer.restartIceWithRelayOnly()}stopOutboundAudio(){this.peer&&this.active&&this.peer.stopTrackSender("audio")}restoreOutboundAudio(){this.peer&&this.active&&this.peer.restoreTrackSender("audio")}stopOutboundVideo(){this.peer&&this.active&&this.peer.stopTrackSender("video")}restoreOutboundVideo(){this.peer&&this.active&&this.peer.restoreTrackSender("video")}setState(e){switch(this.prevState=this.state,this.state=e,this.logger.debug(`Call ${this.id} state change from ${this.prevState} to ${this.state}`),this.emit(this.state,this),e){case"purge":this._finalize();break;case"hangup":this.setState("destroy");break;case"destroy":this._finalize()}}_hangup(e={}){const{byeCause:t="NORMAL_CLEARING",byeCauseCode:r="16",redirectDestination:n}=e;return this.cause=t,this.causeCode=r,n&&this.peer.localSdp?(this.logger.debug("Redirect Destination to:",n),this.nodeId=n,this.executeInvite(this.peer.localSdp)):this.setState("hangup")}_mungeSDP(e){return e}_finalize(){this.peer&&this.peer.instance&&(this.peer.instance.close(),delete this.peer);const{remoteStream:e,localStream:t}=this.options;Fo(e),Fo(t),this.destroy()}}const vs=e=>`sw-sdk-${e}`,ys=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e},bs=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),_s=e=>t=>{const r=document.getElementById(vs(t));r&&(r.style.display=e)},Ss=gr.createAction("swJs/audioSetSpeakerAction");function*ws({element:e,room:t}){const r=gr.getCustomSagaActionType(t.__uuid,Ss);for(;;){const n=yield Se([r]);try{switch(n.type){case r:const o=yield Ee(Bo,e,n.payload);t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:o,kind:"resolve"})}}catch(e){t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:e,kind:"reject"}),Vt().error(e)}}}function*ks({track:e,element:t,speakerId:r,room:n}){(({track:e,element:t})=>{t.autoplay=!0,t.playsinline=!0,t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({track:e,element:t}),r&&Bo(t,r).catch((()=>{})),yield Ce(ws,{element:t,room:n})}function*Es({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:n}){(r=>{if((({track:e,element:t})=>{t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({element:n,track:r}),n.style.width="100%",!t)return void e.appendChild(n);const o=document.createElement("div");o.style.position="absolute",o.style.top="0",o.style.left="0",o.style.right="0",o.style.bottom="0",o.appendChild(n);const s=document.createElement("div");s.style.paddingBottom="56.25%",s.appendChild(o);const i=document.createElement("div");i.classList.add("mcuLayers"),s.appendChild(i);const a=document.createElement("div");a.style.position="relative",a.style.width="100%",a.style.margin="0 auto",a.appendChild(s),e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.appendChild(a)})(r)}const Cs={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},Ts={echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},Is=Qt(class extends gs{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Vn.audioMuteMember,audioUnmute:Vn.audioUnmuteMember,videoMute:Vn.videoMuteMember,videoUnmute:Vn.videoUnmuteMember,setMicrophoneVolume:Vn.setInputVolumeMember,setInputVolume:Vn.setInputVolumeMember,setInputSensitivity:Vn.setInputSensitivityMember}),Os=Qt(class extends gs{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Vn.audioMuteMember,audioUnmute:Vn.audioUnmuteMember,videoMute:Vn.videoMuteMember,videoUnmute:Vn.videoUnmuteMember,setInputVolume:Vn.setInputVolumeMember,setMicrophoneVolume:Vn.setInputVolumeMember,setInputSensitivity:Vn.setInputSensitivityMember}),Ms=()=>{},Ps="video.memberList.updated",Rs=Bt({event:Ps}),As=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Ot),e)),[]).join(".")})(Rs),xs=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*js({pubSubChannel:e}){const t=new Map;function*r(r){const n={room_session_id:"video.room.joined"===r.type?r.payload.room_session.id:r.payload.room_session_id,members:(({action:e,memberList:t})=>{const r=(e=>"video.room.joined"===e.type?e.payload.room_session.members:[e.payload.member])(e);switch(e.type){case"video.member.left":r.forEach((e=>{t.delete(e.id)}));break;default:r.forEach((e=>{t.set(e.id,e)}))}return Array.from(t.values())})({action:r,memberList:t})};yield we(e,{type:As,payload:n})}for(;;){const t=yield Se(e,(({type:e})=>xs.includes(e)));yield Ce(r,t)}}const Ls=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(Rs))))(r))return;const{cleanup:n}=((e,t)=>{(e=>rr(xs).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,Ms)}));const r=({members:t})=>{e.emit(Ps,{members:t})};return e.on(As,r),{cleanup:()=>{e.off(As,r)}}})(t,r);yield Ce(js,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},Ds=Qt(class extends gs{_screenShareList=new Set;_deviceList=new Set;get screenShareList(){return Array.from(this._screenShareList)}get deviceList(){return Array.from(this._deviceList)}getEmitterTransforms(){return new Map([[[or("video.recording.start"),"video.recording.started","video.recording.updated","video.recording.ended"],{type:"roomSessionRecording",instanceFactory:e=>Vn.createRoomSessionRecordingObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Ut({...e.recording,room_session_id:this.roomSessionId})}],[[or("video.playback.start"),"video.playback.started","video.playback.updated","video.playback.ended"],{type:"roomSessionPlayback",instanceFactory:e=>Vn.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Ut({...e.playback,room_session_id:this.roomSessionId})}]])}attachPreConnectWorkers(){this.setWorker("memberListUpdated",{worker:Ls}),this.attachWorkers()}async createScreenShareObject(e={}){return this.startScreenShare(e)}async startScreenShare(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!0,layout:o,positions:s}=e,i=await No({audio:!0===r?Ts:r,video:n}),a={...this.options,screenShare:!0,recoverCall:!1,localStream:i,remoteStream:void 0,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId},layout:o,positions:s},c=Mn({store:this.store,Component:Is,componentListeners:Cs})(a);i.getVideoTracks().forEach((e=>{e.addEventListener("ended",(()=>{c&&c.active&&c.leave()}))})),c.on("destroy",(()=>{this._screenShareList.delete(c)}));try{return this._screenShareList.add(c),t&&await c.join(),c}catch(e){throw this.logger.error("ScreenShare Error",e),e}}addCamera(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,video:r})}addMicrophone(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,audio:r})}async addDevice(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!1}=e;if(!r&&!n)throw new TypeError("At least one of `audio` or `video` must be requested.");const o={...this.options,localStream:void 0,remoteStream:void 0,audio:r,video:n,additionalDevice:!0,recoverCall:!1,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId}},s=Mn({store:this.store,Component:Os,componentListeners:Cs})(o);s.on("destroy",(()=>{this._deviceList.delete(s)}));try{return this._deviceList.add(s),t&&await s.join(),s}catch(e){throw this.logger.error("RoomDevice Error",e),e}}join(){return super.invite()}leave(){return this.hangup()}updateSpeaker({deviceId:e}){return this.triggerCustomSaga(Ss(e))}async hangup(){return this._screenShareList.forEach((e=>{e.leave()})),this._deviceList.forEach((e=>{e.leave()})),super.hangup()}_finalize(){this._screenShareList.clear(),this._deviceList.clear(),super._finalize()}getLayoutList(){return this.getLayouts()}getMemberList(){return this.getMembers()}},{audioMute:Vn.audioMuteMember,audioUnmute:Vn.audioUnmuteMember,videoMute:Vn.videoMuteMember,videoUnmute:Vn.videoUnmuteMember,deaf:Vn.deafMember,undeaf:Vn.undeafMember,setInputVolume:Vn.setInputVolumeMember,setOutputVolume:Vn.setOutputVolumeMember,setMicrophoneVolume:Vn.setInputVolumeMember,setSpeakerVolume:Vn.setOutputVolumeMember,setInputSensitivity:Vn.setInputSensitivityMember,removeMember:Vn.removeMember,getMembers:Vn.getMembers,getLayouts:Vn.getLayouts,setLayout:Vn.setLayout,hideVideoMuted:Vn.hideVideoMuted,showVideoMuted:Vn.showVideoMuted,getRecordings:Vn.getRecordings,startRecording:Vn.startRecording,getPlaybacks:Vn.getPlaybacks,play:Vn.play,setHideVideoMuted:Vn.setHideVideoMuted});class Ns extends Ln{_eventsPrefix="cantina-manager";getEmitterTransforms(){return new Map([[["cantina-manager.rooms.subscribed"],{type:"roomSession",instanceFactory:({rooms:e})=>({rooms:e.map((e=>Ut(e)))}),payloadTransform:({rooms:e})=>({rooms:e.map((e=>Ut(e)))})}],[["cantina-manager.room.started","cantina-manager.room.added","cantina-manager.room.updated","cantina-manager.room.ended","cantina-manager.room.deleted"],{type:"roomSession",instanceFactory:e=>Ut(e),payloadTransform:e=>Ut(e)}]])}}class Vs extends jn{_cantina;_chat;get rooms(){return{makeRoomObject:e=>{const{rootElement:t,applyLocalVideoOverlay:r=!0,stopCameraWhileMuted:n=!0,stopMicrophoneWhileMuted:o=!0,...s}=e,i=[];i.push((({speakerId:e})=>function*({instance:t,runSaga:r}){try{const n=new Audio;let o;const s=function(i){switch(i.track.kind){case"audio":o=r(ks,{track:i.track,element:n,speakerId:e,room:t}),t.off("track",s)}};t.on("track",s),t.once("destroy",(()=>{o?.cancel()}))}catch(e){Vt().error("audioElementSaga",e)}})({speakerId:s.speakerId})),t&&i.push((({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:n}){try{const o=new Map,s=ys(),i=(({layerMap:e,element:t,rootElement:r})=>async({layout:n,myMemberId:o,localStream:s})=>{try{const{layers:i=[]}=n,a=i.find((({member_id:e})=>e===o)),c=vs(o);let u=e.get(c);if(!a)return void(u&&(Vt().debug("Current layer not visible"),u.style.display="none"));if(!u){u=await(async({location:e,element:t})=>{t.readyState===HTMLMediaElement.HAVE_NOTHING&&await(({element:e})=>new Promise((t=>{e.addEventListener("canplay",(function r(){e.removeEventListener("canplay",r),t()})),e.addEventListener("resize",(function r(){e.removeEventListener("resize",r),t()}))})))({element:t});const{top:r,left:n,width:o,height:s}=bs(e),i=document.createElement("div");return i.style.position="absolute",i.style.overflow="hidden",i.style.top=r,i.style.left=n,i.style.width=o,i.style.height=s,i})({element:t,location:a}),u.id=c;const n=ys();n.srcObject=s,n.style.width="100%",n.style.height="100%",u.appendChild(n);const o=r.querySelector(".mcuLayers"),i=document.getElementById(c);return void(o&&!i&&(o.appendChild(u),e.set(c,u)))}const{top:d,left:l,width:h,height:p}=bs(a);u.style.display="block",u.style.top=d,u.style.left=l,u.style.width=h,u.style.height=p}catch(e){Vt().error("Layout Changed Error",e)}})({rootElement:e,element:s,layerMap:o}),a=_s("none"),c=_s("block");let u;r.on("layout.changed",(e=>{r.peer.hasVideoSender&&r.localStream&&i({layout:e.layout,localStream:r.localStream,myMemberId:r.memberId})})),r.on("member.updated.video_muted",(e=>{try{const{member:t}=e;t.id===r.memberId&&"video_muted"in t&&(t.video_muted?a(t.id):c(t.id))}catch(e){Vt().error("Error handling video_muted",e)}}));const d=function(o){switch(o.track.kind){case"video":u=n(Es,{applyLocalVideoOverlay:t,rootElement:e,track:o.track,element:s}),r.off("track",d)}};r.on("track",d),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),o.clear(),u?.cancel()}))}catch(e){Vt().error("videoElementSaga",e)}})({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Mn({store:c.store,customSagas:c.customSagas,Component:Ds,componentListeners:Cs})(c));var c;return o&&a.on("member.updated.audio_muted",(({member:e})=>{try{e.id===a.memberId&&"audio_muted"in e&&(e.audio_muted?a.stopOutboundAudio():a.restoreOutboundAudio())}catch(e){this.logger.error("Error handling audio_muted",e)}})),n&&a.on("member.updated.video_muted",(({member:e})=>{try{e.id===a.memberId&&"video_muted"in e&&(e.video_muted?a.stopOutboundVideo():a.restoreOutboundVideo())}catch(e){this.logger.error("Error handling video_muted",e)}})),a}}}get chat(){return this._chat||(this._chat=go.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get cantina(){return this._cantina||(this._cantina=(e=>{const t=Mn({store:e.store,Component:Ns,componentListeners:{errors:"onError",responses:"onSuccess"}})(e);return new Proxy(t,{get:(e,t,r)=>"_eventsNamespace"===t?"":"eventChannel"===t?"cantina-manager.rooms":Reflect.get(e,t,r)})})(this.options)),this._cantina}reauthenticate(e){this.store.dispatch(gr.reauthAction({token:e}))}}class Ws extends class extends class{constructor(e){var t,r;this.options=e,Tt(this,"__sw_symbol",zr),Tt(this,"uuid",l()),Tt(this,"WebSocketConstructor"),Tt(this,"agent"),Tt(this,"connectVersion",ar),Tt(this,"_rpcConnectResult"),Tt(this,"_requests",new Map),Tt(this,"_socket",null),Tt(this,"_host","wss://relay.signalwire.com"),Tt(this,"_executeTimeoutMs",1e4),Tt(this,"_executeTimeoutError",Symbol.for("sw-execute-timeout")),Tt(this,"_checkPingDelay",15e3),Tt(this,"_checkPingTimer",null),Tt(this,"_status","unknown");const{host:n,logLevel:o="info"}=e;n&&(this._host=(e=>`${Yt.test(e)?"":"wss://"}${e}`)(n)),o&&(null==(r=(t=this.logger).setLevel)||r.call(t,o)),this._onSocketOpen=this._onSocketOpen.bind(this),this._onSocketError=this._onSocketError.bind(this),this._onSocketClose=this._onSocketClose.bind(this),this._onSocketMessage=this._onSocketMessage.bind(this),this.execute=this.execute.bind(this),this.connect=this.connect.bind(this)}get host(){return this._host}get rpcConnectResult(){return this._rpcConnectResult}get relayProtocol(){var e,t;return null!=(t=null==(e=this._rpcConnectResult)?void 0:e.protocol)?t:""}get signature(){var e,t;return null==(t=null==(e=this._rpcConnectResult)?void 0:e.authorization)?void 0:t.signature}get logger(){return Vt()}get connecting(){var e;return 0===(null==(e=this._socket)?void 0:e.readyState)}get connected(){var e;return 1===(null==(e=this._socket)?void 0:e.readyState)}get closing(){var e;return 2===(null==(e=this._socket)?void 0:e.readyState)}get closed(){return!this._socket||3===this._socket.readyState}get status(){return this._status}set token(e){this.options.token=e}connect(){(null==this?void 0:this.WebSocketConstructor)?this._socket?this.logger.warn("Session already connected."):(this._socket=this._createSocket(),this._socket.addEventListener("open",this._onSocketOpen),this._socket.addEventListener("close",this._onSocketClose),this._socket.addEventListener("error",this._onSocketError),this._socket.addEventListener("message",this._onSocketMessage)):this.logger.error("Missing WebSocketConstructor")}_createSocket(){return new this.WebSocketConstructor(this._host)}async disconnect(){this._socket&&!this.closing?(clearTimeout(this._checkPingTimer),this._requests.clear(),this._closeConnection("disconnected")):this.logger.warn("Session not connected or already in closing state.")}execute(e){if("idle"===this._status||!this.connected)return Promise.reject("Can't call `execute` when Session is not authorized.");let t;return t="params"in e?new Promise(((t,r)=>{this._requests.set(e.id,{rpcRequest:e,resolve:t,reject:r})})):Promise.resolve(),this.logger.wsTraffic({type:"send",payload:e}),this._socket.send(this.encode(e)),((e,t,r)=>{let n=null;return Promise.race([e,new Promise(((e,o)=>n=setTimeout(o,t,r)))]).finally((()=>clearTimeout(n)))})(t,this._executeTimeoutMs,this._executeTimeoutError).catch((t=>{if(t!==this._executeTimeoutError)throw t;this.logger.error("Request Timeout",e),this._closeConnection("reconnecting")}))}async authenticate(){const e={agent:this.agent,version:this.connectVersion,authentication:{project:this.options.project,token:this.options.token}};this._relayProtocolIsValid()&&(e.protocol=this.relayProtocol),this._rpcConnectResult=await this.execute(cr(e))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Ir())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Tr({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(Pr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=e.code>=1006&&e.code<=1014?"reconnecting":"disconnected",this.dispatch(Mr()),this._socket=null}_onSocketMessage(e){const t=this.decode(e.data);if(this.logger.wsTraffic({type:"recv",payload:t}),!Boolean(t.method)){const e=this._requests.get(t.id);if(e){const{rpcRequest:r,resolve:n,reject:o}=e;this._requests.delete(t.id);const{result:s,error:i}=(({response:e,request:t})=>{const{result:r={},error:n}=e;if(n)return{error:n};switch(t.method){case"signalwire.connect":return{result:r};default:return Wt(e)}})({response:t,request:r});return i?o(i):n(s)}return this.logger.warn("Unknown request for",t)}var r;switch(t.method){case"signalwire.ping":case"blade.ping":return this._pingHandler(t);case"signalwire.disconnect":this.execute((r=t.id,ir({id:r,result:{}}))).catch((e=>{this.logger.error("SwDisconnect Error",e)})).finally((()=>{this._status="idle"}));break;default:this.dispatch(Rr(t)),this._handleWebSocketMessage(t)}}_handleWebSocketMessage(e){}dispatch(e){throw new Error("Method not implemented")}_relayProtocolIsValid(){var e;return this.signature&&(null==(e=null==this?void 0:this.relayProtocol)?void 0:e.split("_")[1])===this.signature}encode(e){return JSON.stringify(e)}decode(e){return Xt(e)}async _pingHandler(e){var t,r,n;clearTimeout(this._checkPingTimer),this._checkPingTimer=setTimeout((()=>{this._closeConnection("reconnecting")}),this._checkPingDelay),await this.execute((r=e.id,n=null==(t=null==e?void 0:e.params)?void 0:t.timestamp,ir({id:r,result:{timestamp:n||Date.now()/1e3}})))}_closeConnection(e){this._status=e,this.dispatch(Br.authStatus("unknown")),this.dispatch(kr()),this._socket&&(this._socket.close(),this._socket=null)}}{constructor(e){super(e),this.options=e,Tt(this,"_expiredDiffSeconds",0),Tt(this,"_refreshTokenNotificationDiff",120),Tt(this,"_checkTokenExpirationDelay",2e4),Tt(this,"_checkTokenExpirationTimer",null),this._checkTokenExpiration=this._checkTokenExpiration.bind(this),this.reauthenticate=this.reauthenticate.bind(this)}get expiresAt(){var e,t,r;const n=null!=(r=null==(t=null==(e=null==this?void 0:this._rpcConnectResult)?void 0:e.authorization)?void 0:t.expires_at)?r:0;if("string"==typeof n){const e=Date.parse(n);if(!isNaN(e))return Math.floor(e/1e3)}return n}get expiresIn(){const e=Math.floor(Date.now()/1e3);return this.expiresAt-e}get expired(){return this.expiresIn<=this._expiredDiffSeconds}async authenticate(){const e={agent:this.agent,version:this.connectVersion,authentication:{jwt_token:this.options.token}};if(this._relayProtocolIsValid())e.protocol=this.relayProtocol;else if(this.signature){const r=await(t=this.signature,(async(e,t)=>{if("undefined"==typeof window&&"undefined"!=typeof process)return null;const r=window.sessionStorage.getItem((e=>`@signalwire:${e}`)(t));return Xt(r)})(0,t));r&&(e.protocol=r)}var t;this._rpcConnectResult=await this.execute(cr(e)),this._checkTokenExpiration()}async reauthenticate(){if(this.expired)return this.connect();const e={project:this._rpcConnectResult.authorization.project,jwt_token:this.options.token};try{this._rpcConnectResult=await this.execute((t=e,sr({method:"signalwire.reauthenticate",params:{authentication:t}})))}catch(e){throw clearTimeout(this._checkTokenExpirationTimer),e}var t}_onSocketClose(e){clearTimeout(this._checkTokenExpirationTimer),super._onSocketClose(e)}_checkTokenExpiration(){this.expiresAt&&(this.expiresIn<=this._refreshTokenNotificationDiff&&(this.dispatch(Or()),this.options._onRefreshToken?this.options._onRefreshToken():this.logger.warn("The token is going to expire!")),clearTimeout(this._checkTokenExpirationTimer),this.expired||(this._checkTokenExpirationTimer=setTimeout(this._checkTokenExpiration,this._checkTokenExpirationDelay)))}}{WebSocketConstructor=WebSocket;agent="@signalwire/js/3.9.0"}const $s=e=>{const t={...e,emitter:new lt},r=Pn({userOptions:t,SessionConstructor:Ws});return Mn({store:r,Component:Vs,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)};var Us=Object.freeze({__proto__:null,ChatMember:go.ChatMember,ChatMessage:go.ChatMessage,Client:function(e){const t=$s(e),r=async e=>(await t.connect(),t.chat.subscribe(e)),n=async e=>(await t.connect(),t.chat.publish(e));return new Proxy(t.chat,{get:(e,t,o)=>"subscribe"===t?r:"publish"===t?n:Reflect.get(e,t,o)})}});const qs={aspectRatio:{ideal:16/9}},Bs=e=>new Promise((async(t,r)=>{const{audio:n=!0,video:o=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:u=!0,stopMicrophoneWhileMuted:d=!0,speakerId:l,...h}=e,p=$s({...h});if(await p.connect(),!p)return;let m;if(i){const e=document.getElementById(i);e?m=e:(m=document.body,Vt().warn(`We couldn't find an element with id: ${i}: using 'document.body' instead.`))}const f=p.rooms.makeRoomObject({audio:n,video:!0===o?qs:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:u,stopMicrophoneWhileMuted:d,speakerId:l});if(f.once("destroy",(()=>{p.disconnect()})),c)try{await f.join(),t(f)}catch(e){r(e)}else t(f)})),Fs={aspectRatio:{ideal:16/9}},zs=["audioMute","audioUnmute","deaf","getLayouts","getMembers","getRecordings","hideVideoMuted","leave","removerMember","restoreOutboundAudio","restoreOutboundVideo","setInputSensitivity","setInputVolume","setLayout","setPositions","setMemberPosition","setOutputVolume","showVideoMuted","startRecording","stopOutboundAudio","stopOutboundVideo","undeaf","videoMute","videoUnmute","setMicrophoneVolume","setSpeakerVolume"];var Hs=Object.freeze({__proto__:null,RoomSession:function(e){const{audio:t=!0,video:r=!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s=!0,stopCameraWhileMuted:i=!0,stopMicrophoneWhileMuted:a=!0,speakerId:c,...u}=e,d=$s(u),l=d.rooms.makeRoomObject({audio:t,video:!0===r?Fs:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{d.disconnect()}));const h={join:()=>new Promise((async(e,t)=>{try{l.attachPreConnectWorkers(),await d.connect(),l.once("room.subscribed",(()=>{e(l)})),await l.join()}catch(e){Vt().error("RoomSession Join",e),t(e)}}))};return new Proxy(l,{get(e,t,r){if(t in h)return h[t];if(!e.active&&zs.includes(t))throw new Error(`Tried to access the property/method "${t}" before the room was connected. Please call roomSession.join() first.`);return Reflect.get(e,t,r)}})},createRoomObject:Bs,joinRoom:e=>Bs({...e,autoJoin:!0}),createClient:$s}),Qs=Object.freeze({__proto__:null,getDevices:es,getCameraDevices:()=>es("camera"),getMicrophoneDevices:()=>es("microphone"),getSpeakerDevices:()=>es("speaker"),getDevicesWithPermissions:Yo,getCameraDevicesWithPermissions:()=>Yo("camera"),getMicrophoneDevicesWithPermissions:()=>Yo("microphone"),getSpeakerDevicesWithPermissions:()=>Yo("speaker"),checkPermissions:Ko,checkCameraPermissions:Jo,checkMicrophonePermissions:Go,checkSpeakerPermissions:Xo,requestPermissions:async e=>{try{const t=await Do(e);Fo(t)}catch(e){throw e}},createDeviceWatcher:as,createCameraDeviceWatcher:()=>as({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>as({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>as({targets:["speaker"]}),supportsMediaDevices:jo,supportsGetUserMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)},supportsGetDisplayMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getDisplayMedia)},getUserMedia:Do,getDisplayMedia:No,enumerateDevices:Vo,getSupportedConstraints:$o,supportsMediaOutput:qo,setMediaElementSinkId:Bo,stopStream:Fo,stopTrack:zo,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(cs(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},Do(t)})(e);if(!t)throw new Error("Failed to get the audio stream");const r=new lt,n=new(window.AudioContext||window.webkitAudioContext),o=(e=>{const t=e.createAnalyser();return t.fftSize=64,t.minDecibels=-90,t.maxDecibels=-10,t.smoothingTimeConstant=.85,t})(n);let s,i;try{n.createMediaStreamSource(t).connect(o)}catch(e){throw new Error("No audio track found")}t.getAudioTracks().forEach((e=>{e.addEventListener("ended",(()=>{r.emit("destroyed","disconnected")}))}));const a=()=>{try{const e=new Uint8Array(o.frequencyBinCount);o.getByteFrequencyData(e);const t=e.reduce(((e,t)=>e+t),0)/20;i!==t&&(i=t,r.emit("volumeChanged",Math.min(i,100))),s=requestAnimationFrame(a)}catch(e){r.emit("destroyed","error")}};s=requestAnimationFrame(a);const c=()=>{s&&cancelAnimationFrame(s),n.close(),cs(e)||t.getTracks().forEach((e=>e.stop())),r.emit("destroyed",null),r.removeAllListeners()};return new Proxy(r,{get:(e,t,r)=>"destroy"===t?c:Reflect.get(e,t,r)})}});e.Chat=Us,e.Video=Hs,e.WebRTC=Qs,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
7
7
|
//# sourceMappingURL=index.umd.js.map
|