@signalwire/js 3.10.1 → 3.10.2
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/index.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SignalWire JS SDK v3.10.
|
|
2
|
+
* SignalWire JS SDK v3.10.2 (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 d(e,t,r){return i(e)||c.apply(this,arguments)}function u(e,r,o){var s,i=this;r=null==r?"WARN":r;var c="loglevel";function u(){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||d,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,u()||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=u();null==l&&(l=r),i.setLevel(l,!1)}var l=new u,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 u(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 d=[],u=0;u<256;++u)d.push((u+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=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[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 d(){a===i&&(a=i.slice())}function u(){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 d(),a.push(e),function(){if(t){if(c)throw new Error(f(6));t=!1,d();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(u())}return r(),{unsubscribe:t(r)}}})[g]=function(){return this},e}return h({type:y.INIT}),(n={dispatch:h,subscribe:l,getState:u,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],d=e[c],u=(0,r[c])(d,t);if(void 0===u)throw new Error(f(14));o[c]=u,n=n||u!==d}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"),M=T("CHANNEL_END"),O=T("IO"),P=T("MATCH"),x=T("MULTICAST"),R=T("SAGA_ACTION"),A=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,R,{value:!0}))}},ce=function(e){return e===D},de=function(e){return e===j},ue=function(e){return ce(e)||de(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||ue(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={})[O]=!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[x]&&$(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),Me=[],Oe=0;function Pe(e){try{Ae(),e()}finally{Le()}}function xe(e){Me.push(e),Oe||(Ae(),je())}function Re(e){try{return Ae(),e()}finally{je()}}function Ae(){Oe++}function Le(){Oe--}function je(){var e;for(Le();!Oe&&void 0!==(e=Me.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:M},Be=function(e){return e&&e.type===M};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={})[x]=!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[R]?t(e):xe((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;xe((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={},d=!1;i.forEach((function(e){var t=function(t,n){d||(n||ue(t)?(r.cancel(),r(t,n)):(r.cancel(),d=!0,a[e]=t,r(a)))};t.cancel=X,c[e]=t})),r.cancel=function(){d||(d=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){d||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);Re((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===A?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,d.context,r,o,!1,n):t&&t[O]?(0,Ye[t.type])(e,t.payload,n,u):n(t)}));l.cancel=X;var c={meta:o,cancel:function(){0===c.status&&(c.status=1,l(j))},status:0},d=function(e,t,r,n,o,s,i){var a;void 0===i&&(i=X);var c,d,u=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(u=2,ot({meta:o,cancelledTasks:h}),g.isRoot){var n=it();st(),e.onError(t,{sagaStack:n})}d=t,l&&l.reject(t)}else t===j?u=1:1!==u&&(u=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===u&&(u=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===u?l.reject(d):0!==u&&l.resolve(c)),l.promise;var e},a.isRunning=function(){return 0===u},a.isCancelled=function(){return 1===u||0===u&&1===t.status},a.isAborted=function(){return 2===u},a.result=function(){return c},a.error=function(){return d},a);return g}(e,c,r,n,o,s,i),u={task:d,digestEffect:h};return i&&(i.cancel=d.cancel),l(),d;function l(e,r){try{var o;r?(o=t.throw(e),st()):de(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,d=e.effectMiddlewares,u=e.onError,l=void 0===u?se:u,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})),d){var y=k.apply(void 0,d);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 Re((function(){var e=at(b,g,a,v,he(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function dt(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 d(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 d.run=function(){return t.apply(void 0,arguments)},d.setContext=function(e){Z(o,e)},d}var ut={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,d,u=this._events[a],l=arguments.length;if(u.fn){switch(u.once&&this.removeListener(e,u.fn,void 0,!0),l){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,t),!0;case 3:return u.fn.call(u.context,t,n),!0;case 4:return u.fn.call(u.context,t,n,o),!0;case 5:return u.fn.call(u.context,t,n,o,s),!0;case 6:return u.fn.call(u.context,t,n,o,s,i),!0}for(d=1,c=new Array(l-1);d<l;d++)c[d-1]=arguments[d];u.fn.apply(u.context,c)}else{var h,p=u.length;for(d=0;d<p;d++)switch(u[d].once&&this.removeListener(e,u[d].fn,void 0,!0),l){case 1:u[d].fn.call(u[d].context);break;case 2:u[d].fn.call(u[d].context,t);break;case 3:u[d].fn.call(u[d].context,t,n);break;case 4:u[d].fn.call(u[d].context,t,n,o);break;default:if(!c)for(h=1,c=new Array(l-1);h<l;h++)c[h-1]=arguments[h];u[d].fn.apply(u[d].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,d=[],u=a.length;c<u;c++)(a[c].fn!==t||o&&!a[c].once||n&&a[c].context!==n)&&d.push(a[c]);d.length?this._events[s]=1===d.length?d[0]:d: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}(ut);var lt=ut.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__",Mt="__synthetic__",Ot=["room.started","room.ended"].map((e=>`video.${e}`)),Pt=()=>(new Date).toISOString().replace("T"," ").replace("Z",""),xt=o.getLogger("signalwire"),Rt=xt.methodFactory;xt.methodFactory=(e,t,r)=>{const n=Rt(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 At,Lt=xt.getLevel();xt.setLevel(Lt);var jt={},Dt=()=>null!=At?At:xt,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})=>(({instance:e,proxiedObj:t,payload:r,transformedPayload:n,transform:o})=>{const s=St(wt(St({},n),{_eventsNamespace:o.getInstanceEventNamespace?o.getInstanceEventNamespace(r):void 0,eventChannel:o.getInstanceEventChannel?o.getInstanceEventChannel(r):void 0}),(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(s).reduce(((e,[t,r])=>(void 0===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:r,transformedPayload:n,transform:t}),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(Mt))(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)}),dr={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},ur=e=>{if(e.hasOwnProperty("dialogParams")){const t=kt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in dr)e&&t.hasOwnProperty(e)&&(t[dr[e]]=t[e],delete t[e]);e.dialogParams=t}return e},lr=e=>(t={})=>sr({method:e,params:ur(t)}),hr=lr("verto.invite"),pr=lr("verto.bye"),mr=lr("verto.modify"),fr=lr("verto.info"),gr=(e,t)=>ir({id:e,result:{method:t}}),vr={};Et(vr,{authErrorAction:()=>Ir,authExpiringAction:()=>Or,authSuccessAction:()=>Mr,closeConnectionAction:()=>Er,compoundEventAttachAction:()=>Ur,createAction:()=>br,destroyAction:()=>kr,executeAction:()=>Tr,getCustomSagaActionType:()=>$r,initAction:()=>wr,makeCustomSagaAction:()=>Wr,reauthAction:()=>Cr,sessionAuthErrorAction:()=>Dr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>Lr,sessionExpiringAction:()=>Nr,sessionReconnectingAction:()=>jr,socketClosedAction:()=>Pr,socketErrorAction:()=>xr,socketMessageAction:()=>Rr});var yr={};function br(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(yr,{configureStore:()=>Sr,createAction:()=>br}),Ct(yr,C);var _r="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 Sr(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 d=E(...c);let u=k;o&&(u=_r(St({trace:!1},"object"==typeof o&&o)));let l=[d];return Array.isArray(i)?l=[d,...i]:"function"==typeof i&&(l=i(l)),_(a,s,u(...l))}var wr=br("swSdk/init"),kr=br("swSdk/destroy"),Er=br("swSdk/closeConnection"),Cr=br("swSdk/reauth"),Tr=br("swSdk/executeRequest"),Ir=br("auth/error"),Mr=br("auth/success"),Or=br("auth/expiring"),Pr=br("socket/closed"),xr=br("socket/error"),Rr=br("socket/message"),Ar=br("session.connected"),Lr=br("session.disconnected"),jr=br("session.reconnecting"),Dr=br("session.auth_error"),Nr=br("session.expiring"),Vr=(e,t)=>`${t.type}/${e}`,Wr=(e,t)=>wt(St({},t),{type:Vr(e,t)}),$r=(e,t)=>Vr(e,t),Ur=br("compound_event:attach");function qr(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 Br=({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?qr(e.extraReducers):[e.extraReducers],s=St(St({},t),i);return function(e,t,r=[],n){let o,[s,i,a]="function"==typeof t?qr(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 d;return o.forEach((e=>{const r=n[e],o=`${t}/${e}`;let c,d;"reducer"in r?(c=r.reducer,d=r.prepare):c=r,s[e]=c,i[o]=c,a[e]=d?br(o,d):br(o)})),{name:t,reducer:(e,t)=>(d||(d=c()),d(e,t)),actions:a,caseReducers:s,getInitialState:()=>(d||(d=c()),d.getInitialState())}}({name:e,initialState:t,reducers:r,extraReducers:e=>{e.addCase(kr.type,(()=>t)),"function"==typeof n&&n(e)}}),zr=Br({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(Ir.type,((e,{payload:t})=>wt(St({},e),{authStatus:"unauthorized",authError:t.error})))}}),{actions:Fr,reducer:Hr}=zr,Qr=Symbol("BaseSession"),Kr={};Et(Kr,{authErrorAction:()=>Ir,authExpiringAction:()=>Or,authSuccessAction:()=>Mr,closeConnectionAction:()=>Er,compoundEventAttachAction:()=>Ur,configureStore:()=>An,connect:()=>Rn,createAction:()=>br,createCatchableSaga:()=>an,createRestartableSaga:()=>on,destroyAction:()=>kr,executeAction:()=>Tr,getCustomSagaActionType:()=>$r,initAction:()=>wr,makeCustomSagaAction:()=>Wr,reauthAction:()=>Cr,sessionAuthErrorAction:()=>Dr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>Lr,sessionExpiringAction:()=>Nr,sessionReconnectingAction:()=>jr,socketClosedAction:()=>Pr,socketErrorAction:()=>xr,socketMessageAction:()=>Rr});var Jr=({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}}})}),Gr=Br({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 Jr({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 Jr({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:Xr,reducer:Yr}=Gr,Zr={queue:[]},en=Br({name:"executeQueue",initialState:Zr,reducers:{add:(e,{payload:t})=>wt(St({},e),{queue:e.queue.concat(t)}),clean:()=>Zr}}),{actions:tn,reducer:rn}=en,nn=(0,yr.combineReducers)({components:Yr,session:Hr,executeQueue:rn});Et({},{createCatchableSaga:()=>an,createRestartableSaga:()=>on});var on=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)}}))},sn=e=>Vt().error("Catchable Saga Error",e),an=(e,t=sn)=>function*(...r){try{yield Ee(e,...r)}catch(e){t(e)}},cn={};Et(cn,{getAuthError:()=>hn,getAuthStatus:()=>ln,getIceServers:()=>dn,getSession:()=>un});var dn=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},un=e=>e.session,ln=({session:e})=>e.authStatus,hn=({session:e})=>e.authError,pn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},mn=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*fn(e){function*t(t){if("authorized"!==(yield Te(ln)))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(Xr.executeSuccess({componentId:r,requestId:n,response:a})))}catch(e){Vt().warn("worker error",r,e),r&&n&&(yield we(Xr.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(Xr.executeFailure({componentId:r,requestId:n,action:t,error:e}))}}}for(;;){const e=yield Se(Tr.type);yield Ce(t,e)}}function*gn({session:e,sessionChannel:t,pubSubChannel:r,swEventChannel:n}){function*o({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(Xr.upsert(e)),yield we(Tr({method:"video.message",params:{message:gr(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(Xr.upsert(e)),yield we(Tr({method:"video.message",params:{message:gr(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(Xr.upsert(e)),yield we(Tr({method:"video.message",params:{message:gr(s,i),node_id:r}}));break}case"verto.ping":yield we(Tr({method:"video.message",params:{message:gr(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(Xr.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*s(e){switch(e.event_type){case"video.member.updated":return;case"video.room.subscribed":yield we(Xr.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.joined":{const{member:t}=e.params;(null==t?void 0:t.parent_id)&&(yield Te(pn,t.parent_id))&&(yield we(Xr.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*i(e){yield we(r,{type:e.event_type,payload:e.params})}function*a(e){var t;yield we(n,(e=>{const{event_type:t,params:r}=e;return"queuing.relay.tasks"===t?{type:t,payload:e}:{type:t,payload:r}})(e)),"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(s,e):(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("cantina-manager."))})(e)?yield Ce(i,e):yield we({type:e.event_type,payload:e}):yield Ce(o,{jsonrpc:e.params,nodeId:e.node_id})}const c=an((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(a,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(c,e)}}catch(e){Vt().error("sessionChannelWorker error:",e)}finally{Vt().debug("sessionChannelWorker finally")}}function vn(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}}()}var yn=e=>void 0===e.payload?"":(e=>e.type.startsWith("video.member.")||e.type.startsWith("video.__synthetic__.member"))(e)||(e=>e.type.startsWith("video.layout."))(e)||(e=>e.type.startsWith("video.recording."))(e)||(e=>e.type.startsWith("video.playback."))(e)?e.payload.room_session_id:(e=>e.type.startsWith("video.room."))(e)?e.payload.room_session.id:(e=>e.type.startsWith("chat."))(e)?"":(e=>e.type.startsWith("calling."))(e)?e.payload.tag:"";function*bn({pubSubChannel:e,emitter:t}){for(;;){const r=yield Se(e,"*"),{type:n,payload:o}=r;try{const e=yn(r);Ot.includes(n)&&t.emit(n,o),t.emit(Bt({namespace:e,event:n}),o)}catch(e){Vt().error(e)}}}var _n=({executeQueue:e})=>e;function*Sn(){function*e(e){"authorized"!==(yield Te(ln))&&(yield we(tn.add(e.payload)))}for(;;){const t=yield Se(Tr.type);yield Ce(e,t)}}function*wn(){const{queue:e}=yield Te(_n);for(const t of e)yield we(Tr(t));yield we(tn.clean())}var kn=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Tt(this,"name","AuthError"),Object.setPrototypeOf(this,kn.prototype)}};function*En(){const e=yield Te(mn);e.length&&(yield we(Xr.cleanup({ids:e})))}function*Cn(){for(;;)yield Ie(36e5),yield Ce(En)}function*Tn({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Ee(vn,o),i=r.pubSubChannel,a=r.swEventChannel;let c=[];if(null==(n=t.workers)?void 0:n.length)try{const e=t.workers.map((e=>Ee(on(e))));c=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(gn,{session:o,sessionChannel:s,pubSubChannel:i,swEventChannel:a}),yield Ce(On,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const d=yield Ce(Cn);o.connect(),yield Se(kr.type),null==d||d.cancel(),i.close(),s.close(),c.forEach((e=>e.cancel()))}function*In({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,Lr()),t.close())}function*Mn({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(Ir({error:e}))}}function*On(e){for(;;){const t=yield Se([Mr.type,Ir.type,Or.type,xr.type,Pr.type,Cr.type]);switch(t.type){case Mr.type:yield Ce(Pn,e);break;case Ir.type:yield Ce(xn,{action:t,userOptions:e.userOptions,pubSubChannel:e.pubSubChannel});break;case Or.type:yield we(e.pubSubChannel,Nr());break;case xr.type:break;case Pr.type:yield Ce(In,e);break;case Cr.type:yield Ce(Mn,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*Pn(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ce(bn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ce(fn,t);yield we(Fr.connected(t.rpcConnectResult)),yield we(r,Ar());const i=yield Ce(wn);yield Se(Er.type),o.cancel(),s.cancel(),i.cancel()}function*xn(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new kn(o.code,o.message):new Error("Unauthorized"),i=yield Ce(bn,{pubSubChannel:t,emitter:r.emitter});throw yield we(t,Dr(s)),yield Se(Lr),i.cancel(),s}var Rn=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})),d=new Map;let u=!0;const l=n.subscribe((()=>{const e=n.getState(),o=pn(e,c.__uuid)||{};for(const e of i){if(!1===u)return;const r=`${c.__uuid}.${e}`,n=d.get(r),s=o[e];if(void 0!==s&&n!==s){d.set(r,s);const n=t[e];"string"==typeof n?c[n](o):n(o)}}const s=un(e);for(const e of a){if(!1===u)return;const t=`session.${e}`,n=d.get(t),o=s[e];if(void 0!==o&&n!==o){d.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=()=>{u=!1,l(),d.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Ct(Kr,yr);var An=e=>{var t;const{userOptions:r,SessionConstructor:n,preloadedState:o={},runSagaMiddleware:s=!0}=e,i=dt(),a={pubSubChannel:Fe(),swEventChannel:Fe()},c=Sr({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:nn,preloadedState:o,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){t.logger&&(At=t.logger),t.debug&&(e=>{null!=e?Object.assign(jt,e):jt={}})(t.debug),yield Ce(Sn),yield Se(wr.type);try{yield Ee(Tn,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}))})},Ln=e=>e,jn=Symbol("BaseComponent"),Dn=class{constructor(e){this.options=e,Tt(this,"__sw_symbol",jn),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}_handleCompoundEvents(e){const t=this._getInternalEvent(e);let r;for(const e of this.getCompoundEvents().keys())if(this._getInternalEvent(e)===t){r=this.getCompoundEvents().get(e);break}r&&0!==r.length&&(this.store.dispatch(Ur({compoundEvents:r,event:t,namespace:this._eventsNamespace})),r.forEach((e=>{"string"==typeof e&&this._trackEvent(e)})))}_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.__uuid!==this.__uuid&&"function"==typeof r.destroy&&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(this.logger.trace("Got emitterTransform for",e,n),!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){this._handleCompoundEvents(e);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=Ln,transformResolve:n=Ln,transformReject:o=Ln}={transformParams:Ln,transformResolve:Ln,transformReject:Ln}){return new Promise(((s,i)=>{const a=l();this._requests.set(a,{resolve:s,reject:i,transformResolve:n,transformReject:o}),this.store.dispatch(Tr({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},Wr(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()}getCompoundEvents(){return new Map}getEmitterTransforms(){return new Map}get _sessionAuthStatus(){return ln(this.store.getState())}_waitUntilSessionAuthorized(){switch(ln(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=ln(this.store.getState()),o=hn(this.store.getState());if("authorized"===n)e(this),r();else if("unauthorized"===n){const e=o?new kn(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(e={}){return this._workers.forEach((({worker:t},r)=>{const n=this.store.runSaga(t,St({instance:this,runSaga:this.store.runSaga},e));this._runningWorkers.push(n),this._workers.delete(r)}))}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},Nn=class extends Dn{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=ln(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(wr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(kr())}},Vn=class extends Dn{constructor(e){super(e),this.options=e,Tt(this,"subscribeMethod","signalwire.subscribe"),Tt(this,"subscribeParams",{}),Tt(this,"_latestExecuteParams"),this.applyEmitterTransforms({local:!0})}shouldExecuteSubscribe(e){return!this._latestExecuteParams||JSON.stringify(e)!==JSON.stringify(this._latestExecuteParams)}async subscribe(){const e=this.getSubscriptions();if(0===e.length)return void this.logger.warn("`subscribe()` was called without any listeners attached.");const t={method:this.subscribeMethod,params:wt(St({},this.subscribeParams),{event_channel:this.getStateProperty("eventChannel"),events:e})};if(this.shouldExecuteSubscribe(t))return this._latestExecuteParams=t,new Promise((async(e,r)=>{try{return this.applyEmitterTransforms(),this.attachWorkers(),await this.execute(t),e(void 0)}catch(e){return r(e)}}));this.logger.debug("BaseConsumer.subscribe() - Skipped .execute() since the execParams are exactly the same as last time")}},Wn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1,meta:{}};Object.keys(Wn).map((e=>`video.member.updated.${e}`));var $n=Ut(Wn);Object.keys($n).map((e=>`member.updated.${e}`));var Un={};Et(Un,{RoomSessionPlaybackAPI:()=>bo,RoomSessionRecordingAPI:()=>vo,audioMuteMember:()=>no,audioUnmuteMember:()=>oo,createRoomSessionPlaybackObject:()=>_o,createRoomSessionRecordingObject:()=>yo,deafMember:()=>ao,getLayouts:()=>Fn,getMembers:()=>Hn,getPlaybacks:()=>eo,getRecordings:()=>Yn,hideVideoMuted:()=>Jn,play:()=>to,removeMember:()=>fo,setDeaf:()=>uo,setHideVideoMuted:()=>Xn,setInputSensitivityMember:()=>po,setInputVolumeMember:()=>lo,setLayout:()=>Qn,setMemberMeta:()=>go,setMemberPosition:()=>mo,setMeta:()=>ro,setOutputVolumeMember:()=>ho,setPositions:()=>Kn,showVideoMuted:()=>Gn,startRecording:()=>Zn,undeafMember:()=>co,videoMuteMember:()=>so,videoUnmuteMember:()=>io});var qn=()=>{},Bn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:St({room_session_id:this.roomSessionId},r)},t)}}),zn=(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)}}),Fn=Bn("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),Hn=Bn("video.members.get",{transformResolve:e=>({members:e.members})}),Qn=Bn("video.set_layout",{transformResolve:qn}),Kn=Bn("video.set_position",{transformResolve:qn}),Jn=Bn("video.hide_video_muted",{transformResolve:qn}),Gn=Bn("video.show_video_muted",{transformResolve:qn}),Xn={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:qn})}},Yn=Bn("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Ut(e)))})}),Zn={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}}))}},eo=Bn("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Ut(e)))})}),to={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}}))}},ro=Bn("video.set_meta",{transformResolve:qn,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:kt(t,["room_session_id"])}}}),no=zn("video.member.audio_mute",{transformResolve:qn}),oo=zn("video.member.audio_unmute",{transformResolve:qn}),so=zn("video.member.video_mute",{transformResolve:qn}),io=zn("video.member.video_unmute",{transformResolve:qn}),ao=zn("video.member.deaf",{transformResolve:qn}),co=zn("video.member.undeaf",{transformResolve:qn}),uo={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:qn})}},lo=zn("video.member.set_input_volume",{transformResolve:qn}),ho=zn("video.member.set_output_volume",{transformResolve:qn}),po=zn("video.member.set_input_sensitivity",{transformResolve:qn}),mo=zn("video.member.set_position",{transformResolve:qn}),fo={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:qn})}},go=zn("video.member.set_meta",{transformResolve:qn}),vo=class extends Dn{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")}})}},yo=e=>Rn({store:e.store,Component:vo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),bo=class extends Dn{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}})}},_o=e=>Rn({store:e.store,Component:bo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),So={};Et(So,{BaseChatAPI:()=>Do,BaseChatConsumer:()=>jo,ChatMember:()=>Ro,ChatMessage:()=>xo,createBaseChatObject:()=>No,getMemberState:()=>Po,getMembers:()=>Io,getMessages:()=>To,publish:()=>Co,setMemberState:()=>Oo});var wo=()=>{},ko=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),Eo=(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)}}),Co=ko("chat.publish",{transformResolve:wo}),To=ko("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Ut(e))),cursor:e.cursor})}),Io=ko("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Ut(e)))})}),Mo=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})},Oo=Eo("chat.member.set_state",{transformResolve:wo,transformParams:Mo}),Po=Eo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:Mo}),xo=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}},Ro=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:{}}},Ao=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)}}},Lo=e=>e.map((e=>({name:e}))),jo=class extends Vn{constructor(e){super(e),Tt(this,"_eventsPrefix","chat"),Tt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.setWorker("chat",{worker:Ao})}_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:Lo(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 xo(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 Ro(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(vr.reauthAction({token:e}))}))}},Do=Qt(jo,{publish:Co,getMembers:Io,getMessages:To,setMemberState:Oo,getMemberState:Po}),No=e=>Rn({store:e.store,Component:Do,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Vo={};function*Wo(e){const{action:t,memberList:r,channels:{pubSubChannel:n}}=e,o={};t.payload.layout.layers.forEach((e=>{var t;const n=e.member_id;if(!n)return;const s=r.get(n);e.position!==(null==(t=s.member)?void 0:t.current_position)?(Bo({memberList:r,memberId:n,currentPosition:e.position}),o[n]=!0):o[n]=!1}));for(const[e,t]of r)if(o[e])yield we(n,{type:"video.member.updated",payload:t});else if(void 0===o[e]){const t=Bo({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield we(n,{type:"video.member.updated",payload:t})}}function*$o({action:e,channels:t,memberList:r}){var n,o;const s=Bo({memberList:r,memberId:e.payload.member.id,currentPosition:null==(o=null==(n=r.get(e.payload.member.id))?void 0:n.member)?void 0:o.current_position});if(!s)return;const{member:{updated:i=[]}}=e.payload,a=wt(St({},s),{member:St(St({},s.member),e.payload.member)});for(const r of i){const n=`${e.type}.${r}`;yield we(t.pubSubChannel,{type:n,payload:a})}yield we(t.pubSubChannel,{type:e.type,payload:a})}Et(Vo,{MEMBER_POSITION_COMPOUND_EVENTS:()=>Uo,memberPositionWorker:()=>qo,memberUpdatedWorker:()=>$o});var Uo=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),qo=function*({instance:e,channels:t,payload:r}){if(!r)return;const{swEventChannel:n}=t;let o=zo(r);for(;;){const r=yield Se(n,(t=>("video.member.updated"===t.type||"video.layout.changed"===t.type||"video.member.joined"===t.type||"video.member.left"===t.type)&&yn(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":yield Ce($o,{action:r,channels:t,memberList:o,instance:e});break;case"video.member.joined":o.set(r.payload.member.id,r.payload);break;case"video.member.left":o.delete(r.payload.member.id);break;case"video.layout.changed":yield Ce(Wo,{action:r,channels:t,memberList:o,instance:e})}}},Bo=({memberList:e,memberId:t,currentPosition:r})=>{const n=e.get(t);if(!n)return;if(!r)return n;const o=wt(St({},n),{member:wt(St({},null==n?void 0:n.member),{current_position:r})});return e.set(t,o),o},zo=e=>{const t=e.room.members,r=new Map;return t.forEach((t=>{r.set(t.id,{room_id:e.room.room_id,room_session_id:e.room.room_session_id,member:t})})),r},Fo=St({},cn);const Ho=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,Qo=()=>{if(!Ho())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},Ko=(e={audio:!0,video:!0})=>{try{return Qo().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:",Yo());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}},Jo=e=>Qo().getDisplayMedia(e),Go=()=>Qo().enumerateDevices(),Xo=async e=>{let t=await Go().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},Yo=()=>Qo().getSupportedConstraints(),Zo=e=>e&&e instanceof MediaStream,es=()=>"sinkId"in HTMLMediaElement.prototype,ts=async(e,t)=>{if(null!==e)if("string"==typeof t)if(es())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")},rs=e=>{var t;Zo(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(ns))},ns=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},os={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},ss=e=>{if(e)return os[e]},is=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 Xo(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Vt().warn(`No ${e} devices to check for permissions!`),null)})(ss(e))},as=()=>is("camera"),cs=()=>is("microphone"),ds=()=>is("speaker"),us=async(e,t=!1)=>{if(!1===await is(e)){const t=(e=>({audio:!e||"all"===e||"microphone"===e||"speaker"===e,video:!e||"all"===e||"camera"===e}))(e),r=await Ko(t);rs(r)}return hs(e,t)},ls=(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))}))},hs=async(e,t=!1)=>{const r=await Xo(ss(e));return!0===t?r:ls(r)},ps=async(e,t,r)=>{const n=await hs(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},ms=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},fs={camera:as,microphone:cs,speaker:ds},gs=["camera","microphone","speaker"],vs=`Allowed targets are: '${gs.join("', '")}'`,ys={speaker:es},bs=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:gs).filter((e=>!!gs.includes(e)||(Vt().warn(`We'll ignore the "${e}" target as it is not allowed. ${vs}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${vs}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>fs[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in ys)||(null===(o=ys[s])||void 0===o?void 0:o.call(ys))?"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 Go(),o=null==t?void 0:t.reduce(((e,t)=>{const r=ss(t);return r&&e.push(r),e}),[]);let s=ls(n,{excludeDefault:!0,targets:o});return Qo().addEventListener("devicechange",(async()=>{const e=await Go(),t=s,n=ls(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=ms(e),n=ms(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,d=i.updated.length>0;(a||c||d)&&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}),d&&r.emit("updated",{changes:i.updated,devices:n})})),r},_s=e=>"function"==typeof(null==e?void 0:e.getTracks),Ss=async e=>{Vt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)try{return await Ko(e)}catch(e){throw Vt().error("getUserMedia error: ",e),e}},ws=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await ps(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 ps(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},ks=e=>/^m=audio/.test(e),Es=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 Ts{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&&(ns(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 ws(this.options),s=await Ss({[e]:o[e]});if(s&&Zo(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&&Zo(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(ks)<n.findIndex(Es))return e;const o=e.split(r),s=o.findIndex(ks),i=o.findIndex(Es),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(Zo(this.options.localStream))return this.options.localStream;const e=await ws(this.options);return Ss(e)}_attachListeners(){this.instance.addEventListener("signalingstatechange",(()=>{switch(this.logger.debug("signalingState:",this.instance.signalingState),this.instance.signalingState){case"stable":this._negotiating=!1;break;case"have-local-offer":"complete"===this.instance.iceGatheringState&&this._sdpReady();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 Is={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 Ms extends Dn{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({},Is),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(Fo.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};if("verto.invite"===e.method)t.subscribe=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions();else if(!this.nodeId)return void this.logger.warn(`Skip Request. Missing nodeId for '${e.method}'.`);return 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(!Object.keys(e).length)return n(new Error("Invalid audio/video constraints."));if(this.logger.debug("updateConstraints trying constraints",this.__uuid,e),!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 Ko(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"),ns(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();this.logger.debug(`updateConstraints got ${a.length} tracks`);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 got transceiver",r.currentDirection,r.mid),await r.sender.replaceTrack(t),this.logger.debug("updateConstraints replaceTrack"),r.direction="sendrecv",this.logger.debug("updateConstraints set to sendrecv"),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 - "),ns(e),null===(r=this.options.localStream)||void 0===r||r.removeTrack(e))})),this.options.localStream.addTrack(t)):(this.logger.debug("updateConstraints no transceiver 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 Ts(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 Ts(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){var t;const{type:r,sdp:n}=e,o=this._mungeSDP(n);switch(this.logger.debug("MUNGED SDP \n",`Type: ${r}`,"\n\n",o),r){case"offer":return(null===(t=this.peer.instance)||void 0===t?void 0:t.remoteDescription)?this.executeUpdateMedia(o):this.executeInvite(o);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${r}' on call ${this.id}`)}}async executeInvite(e){if("new"!==this.state)throw new Error(`Invalid state: '${this.state}' for connection id: ${this.id}`);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 executeUpdateMedia(e){try{const t=mr(Object.assign(Object.assign({},this.messagePayload),{sdp:e,action:"updateMedia"})),r=await this.vertoExecute(t);r.sdp||this.logger.error("UpdateMedia invalid SDP answer",r),this.logger.debug("UpdateMedia response",r),await this.peer.onRemoteSdp(r.sdp)}catch(e){throw this.logger.error("UpdateMedia error",e),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=fr(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;rs(e),rs(t),this.destroy()}}const Os=e=>`sw-sdk-${e}`,Ps=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e},xs=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),Rs=e=>t=>{const r=document.getElementById(Os(t));r&&(r.style.display=e)},As=vr.createAction("swJs/audioSetSpeakerAction");function*Ls({element:e,room:t}){const r=vr.getCustomSagaActionType(t.__uuid,As);for(;;){const n=yield Se([r]);try{switch(n.type){case r:const o=yield Ee(ts,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*js({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&&ts(t,r).catch((()=>{})),yield Ce(Ls,{element:t,room:n})}function*Ds({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:n}){(async 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"),i.style.display="none",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),n.readyState===HTMLMediaElement.HAVE_NOTHING&&(Vt().debug("Wait for the MCU to be ready"),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:n})),i.style.display="block"})(r).catch((e=>{Vt().error("Handle video track error",e)}))}const Ns={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},Vs={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},Ws=Qt(class extends Ms{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Un.audioMuteMember,audioUnmute:Un.audioUnmuteMember,videoMute:Un.videoMuteMember,videoUnmute:Un.videoUnmuteMember,setMicrophoneVolume:Un.setInputVolumeMember,setInputVolume:Un.setInputVolumeMember,setInputSensitivity:Un.setInputSensitivityMember}),$s=Qt(class extends Ms{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Un.audioMuteMember,audioUnmute:Un.audioUnmuteMember,videoMute:Un.videoMuteMember,videoUnmute:Un.videoUnmuteMember,setInputVolume:Un.setInputVolumeMember,setMicrophoneVolume:Un.setInputVolumeMember,setInputSensitivity:Un.setInputSensitivityMember}),Us=()=>{},qs="video.memberList.updated",Bs=Bt({event:qs}),zs=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Mt),e)),[]).join(".")})(Bs),Fs=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*Hs({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:zs,payload:n})}for(;;){const t=yield Se(e,(({type:e})=>Fs.includes(e)));yield Ce(r,t)}}const Qs=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(Bs))))(r))return;const{cleanup:n}=((e,t)=>{(e=>rr(Fs).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,Us)}));const r=({members:t})=>{e.emit(qs,{members:t})};return e.on(zs,r),{cleanup:()=>{e.off(zs,r)}}})(t,r);yield Ce(Hs,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},Ks=function*(e){if(!e.payload)throw new Error("[memberPositionWorker] Missing payload");yield Ce(Vo.memberPositionWorker,{...e,payload:e.payload})},Js=Qt(class extends Ms{_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=>Un.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=>Un.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Ut({...e.playback,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...Vo.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.setWorker("memberListUpdated",{worker:Qs}),this.attachWorkers()}attachOnSubscribedWorkers(e){this.setWorker("memberPositionWorker",{worker:Ks}),this.attachWorkers({payload:e})}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 Jo({audio:!0===r?Vs: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=Rn({store:this.store,Component:Ws,componentListeners:Ns})(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=Rn({store:this.store,Component:$s,componentListeners:Ns})(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(As(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:Un.audioMuteMember,audioUnmute:Un.audioUnmuteMember,videoMute:Un.videoMuteMember,videoUnmute:Un.videoUnmuteMember,deaf:Un.deafMember,undeaf:Un.undeafMember,setInputVolume:Un.setInputVolumeMember,setOutputVolume:Un.setOutputVolumeMember,setMicrophoneVolume:Un.setInputVolumeMember,setSpeakerVolume:Un.setOutputVolumeMember,setInputSensitivity:Un.setInputSensitivityMember,removeMember:Un.removeMember,getMembers:Un.getMembers,getLayouts:Un.getLayouts,setLayout:Un.setLayout,setPositions:Un.setPositions,setMemberPosition:Un.setMemberPosition,hideVideoMuted:Un.hideVideoMuted,showVideoMuted:Un.showVideoMuted,getRecordings:Un.getRecordings,startRecording:Un.startRecording,getPlaybacks:Un.getPlaybacks,play:Un.play,setHideVideoMuted:Un.setHideVideoMuted,setMeta:Un.setMeta,setMemberMeta:Un.setMemberMeta});class Gs extends Vn{_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 Nn{_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(js,{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,rootElement:t})=>async({layout:r,myMemberId:n,localStream:o})=>{Vt().debug("Process layout.changed");try{const{layers:s=[]}=r,i=s.find((({member_id:e})=>e===n)),a=Os(n);let c=e.get(a);if(!i)return Vt().debug("Location not found"),void(c&&(Vt().debug("Current layer not visible"),c.style.display="none"));if(!c){Vt().debug("Build myLayer"),c=(({location:e})=>{const{top:t,left:r,width:n,height:o}=xs(e),s=document.createElement("div");return s.style.position="absolute",s.style.overflow="hidden",s.style.top=t,s.style.left=r,s.style.width=n,s.style.height=o,s})({location:i}),c.id=a;const r=Ps();r.srcObject=o,r.style.width="100%",r.style.height="100%",c.appendChild(r);const n=t.querySelector(".mcuLayers"),s=document.getElementById(a);return void(n&&!s&&(n.appendChild(c),e.set(a,c)))}const{top:d,left:u,width:l,height:h}=xs(i);Vt().debug("Update myLayer:",d,u,l,h),o.getVideoTracks().length>0&&(c.style.display="block"),c.style.top=d,c.style.left=u,c.style.width=l,c.style.height=h}catch(e){Vt().error("Layout Changed Error",e)}})({rootElement:e,layerMap:o}),a=Rs("none"),c=Rs("block");let d;r.on("layout.changed",(e=>{Vt().debug("Received layout.changed"),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 u=function(o){switch(o.track.kind){case"video":d=n(Ds,{applyLocalVideoOverlay:t,rootElement:e,track:o.track,element:s}),r.off("track",u)}};r.on("track",u),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),o.clear(),d?.cancel()}))}catch(e){Vt().error("videoElementSaga",e)}})({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Rn({store:c.store,customSagas:c.customSagas,Component:Js,componentListeners:Ns})(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=So.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get cantina(){return this._cantina||(this._cantina=(e=>{const t=Rn({store:e.store,Component:Gs,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(vr.reauthAction({token:e}))}}class Ys extends class extends class{constructor(e){var t,r;this.options=e,Tt(this,"__sw_symbol",Qr),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(){var e;const t={agent:this.agent,version:this.connectVersion,authentication:{project:this.options.project,token:this.options.token}};this._relayProtocolIsValid()&&(t.protocol=this.relayProtocol),(null==(e=this.options.contexts)?void 0:e.length)&&(t.contexts=this.options.contexts),this._rpcConnectResult=await this.execute(cr(t))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Mr())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Ir({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(xr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=e.code>=1006&&e.code<=1014?"reconnecting":"disconnected",this.dispatch(Pr()),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":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(Fr.authStatus("unknown")),this.dispatch(Er()),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.10.1"}const Zs=e=>{const t={...e,emitter:new lt},r=An({userOptions:t,SessionConstructor:Ys});return Rn({store:r,Component:Xs,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},ei=["subscribe","publish","updateToken","getMessages","getMembers","getMemberState","setMemberState"];var ti=Object.freeze({__proto__:null,ChatMember:So.ChatMember,ChatMessage:So.ChatMessage,Client:function(e){const t=Zs(e);return new Proxy(t.chat,{get:(e,r,n)=>ei.includes(r)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(r):Reflect.get(e,r,n)})}});const ri={aspectRatio:{ideal:16/9}},ni=e=>new Promise((async(t,r)=>{const{audio:n=!0,video:o=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:d=!0,stopMicrophoneWhileMuted:u=!0,speakerId:l,...h}=e,p=Zs({...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?ri:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});if(f.once("destroy",(()=>{p.disconnect()})),c)try{await f.join(),t(f)}catch(e){r(e)}else t(f)})),oi={aspectRatio:{ideal:16/9}},si=["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","setMeta","setMemberMeta"];var ii=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,...d}=e,u=Zs(d),l=u.rooms.makeRoomObject({audio:t,video:!0===r?oi:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{u.disconnect()}));const h={join:()=>new Promise((async(e,t)=>{try{l.attachPreConnectWorkers(),await u.connect(),l.once("room.subscribed",(t=>{l.attachOnSubscribedWorkers(t),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&&si.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:ni,joinRoom:e=>ni({...e,autoJoin:!0}),createClient:Zs}),ai=Object.freeze({__proto__:null,getDevices:hs,getCameraDevices:()=>hs("camera"),getMicrophoneDevices:()=>hs("microphone"),getSpeakerDevices:()=>hs("speaker"),getDevicesWithPermissions:us,getCameraDevicesWithPermissions:()=>us("camera"),getMicrophoneDevicesWithPermissions:()=>us("microphone"),getSpeakerDevicesWithPermissions:()=>us("speaker"),checkPermissions:is,checkCameraPermissions:as,checkMicrophonePermissions:cs,checkSpeakerPermissions:ds,requestPermissions:async e=>{try{const t=await Ko(e);rs(t)}catch(e){throw e}},createDeviceWatcher:bs,createCameraDeviceWatcher:()=>bs({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>bs({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>bs({targets:["speaker"]}),supportsMediaDevices:Ho,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:Ko,getDisplayMedia:Jo,enumerateDevices:Go,getSupportedConstraints:Yo,supportsMediaOutput:es,setMediaElementSinkId:ts,stopStream:rs,stopTrack:ns,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(_s(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},Ko(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(),_s(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=ti,e.Video=ii,e.WebRTC=ai,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 d(e,t,r){return i(e)||c.apply(this,arguments)}function u(e,r,o){var s,i=this;r=null==r?"WARN":r;var c="loglevel";function u(){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||d,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,u()||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=u();null==l&&(l=r),i.setLevel(l,!1)}var l=new u,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 u(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 d=[],u=0;u<256;++u)d.push((u+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=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[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 d(){a===i&&(a=i.slice())}function u(){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 d(),a.push(e),function(){if(t){if(c)throw new Error(f(6));t=!1,d();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(u())}return r(),{unsubscribe:t(r)}}})[g]=function(){return this},e}return h({type:y.INIT}),(n={dispatch:h,subscribe:l,getState:u,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],d=e[c],u=(0,r[c])(d,t);if(void 0===u)throw new Error(f(14));o[c]=u,n=n||u!==d}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"),M=T("CHANNEL_END"),O=T("IO"),P=T("MATCH"),x=T("MULTICAST"),R=T("SAGA_ACTION"),A=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,R,{value:!0}))}},ce=function(e){return e===D},de=function(e){return e===j},ue=function(e){return ce(e)||de(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||ue(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={})[O]=!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[x]&&$(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),Me=[],Oe=0;function Pe(e){try{Ae(),e()}finally{Le()}}function xe(e){Me.push(e),Oe||(Ae(),je())}function Re(e){try{return Ae(),e()}finally{je()}}function Ae(){Oe++}function Le(){Oe--}function je(){var e;for(Le();!Oe&&void 0!==(e=Me.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:M},Be=function(e){return e&&e.type===M};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={})[x]=!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[R]?t(e):xe((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;xe((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={},d=!1;i.forEach((function(e){var t=function(t,n){d||(n||ue(t)?(r.cancel(),r(t,n)):(r.cancel(),d=!0,a[e]=t,r(a)))};t.cancel=X,c[e]=t})),r.cancel=function(){d||(d=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){d||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);Re((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===A?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,d.context,r,o,!1,n):t&&t[O]?(0,Ye[t.type])(e,t.payload,n,u):n(t)}));l.cancel=X;var c={meta:o,cancel:function(){0===c.status&&(c.status=1,l(j))},status:0},d=function(e,t,r,n,o,s,i){var a;void 0===i&&(i=X);var c,d,u=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(u=2,ot({meta:o,cancelledTasks:h}),g.isRoot){var n=it();st(),e.onError(t,{sagaStack:n})}d=t,l&&l.reject(t)}else t===j?u=1:1!==u&&(u=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===u&&(u=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===u?l.reject(d):0!==u&&l.resolve(c)),l.promise;var e},a.isRunning=function(){return 0===u},a.isCancelled=function(){return 1===u||0===u&&1===t.status},a.isAborted=function(){return 2===u},a.result=function(){return c},a.error=function(){return d},a);return g}(e,c,r,n,o,s,i),u={task:d,digestEffect:h};return i&&(i.cancel=d.cancel),l(),d;function l(e,r){try{var o;r?(o=t.throw(e),st()):de(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,d=e.effectMiddlewares,u=e.onError,l=void 0===u?se:u,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})),d){var y=k.apply(void 0,d);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 Re((function(){var e=at(b,g,a,v,he(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function dt(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 d(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 d.run=function(){return t.apply(void 0,arguments)},d.setContext=function(e){Z(o,e)},d}var ut={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,d,u=this._events[a],l=arguments.length;if(u.fn){switch(u.once&&this.removeListener(e,u.fn,void 0,!0),l){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,t),!0;case 3:return u.fn.call(u.context,t,n),!0;case 4:return u.fn.call(u.context,t,n,o),!0;case 5:return u.fn.call(u.context,t,n,o,s),!0;case 6:return u.fn.call(u.context,t,n,o,s,i),!0}for(d=1,c=new Array(l-1);d<l;d++)c[d-1]=arguments[d];u.fn.apply(u.context,c)}else{var h,p=u.length;for(d=0;d<p;d++)switch(u[d].once&&this.removeListener(e,u[d].fn,void 0,!0),l){case 1:u[d].fn.call(u[d].context);break;case 2:u[d].fn.call(u[d].context,t);break;case 3:u[d].fn.call(u[d].context,t,n);break;case 4:u[d].fn.call(u[d].context,t,n,o);break;default:if(!c)for(h=1,c=new Array(l-1);h<l;h++)c[h-1]=arguments[h];u[d].fn.apply(u[d].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,d=[],u=a.length;c<u;c++)(a[c].fn!==t||o&&!a[c].once||n&&a[c].context!==n)&&d.push(a[c]);d.length?this._events[s]=1===d.length?d[0]:d: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}(ut);var lt=ut.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__",Mt="__synthetic__",Ot=["room.started","room.ended"].map((e=>`video.${e}`)),Pt=()=>(new Date).toISOString().replace("T"," ").replace("Z",""),xt=o.getLogger("signalwire"),Rt=xt.methodFactory;xt.methodFactory=(e,t,r)=>{const n=Rt(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 At,Lt=xt.getLevel();xt.setLevel(Lt);var jt={},Dt=()=>null!=At?At:xt,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})=>(({instance:e,proxiedObj:t,payload:r,transformedPayload:n,transform:o})=>{const s=St(wt(St({},n),{_eventsNamespace:o.getInstanceEventNamespace?o.getInstanceEventNamespace(r):void 0,eventChannel:o.getInstanceEventChannel?o.getInstanceEventChannel(r):void 0}),(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(s).reduce(((e,[t,r])=>(void 0===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:r,transformedPayload:n,transform:t}),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(Mt))(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)}),dr={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},ur=e=>{if(e.hasOwnProperty("dialogParams")){const t=kt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in dr)e&&t.hasOwnProperty(e)&&(t[dr[e]]=t[e],delete t[e]);e.dialogParams=t}return e},lr=e=>(t={})=>sr({method:e,params:ur(t)}),hr=lr("verto.invite"),pr=lr("verto.bye"),mr=lr("verto.modify"),fr=lr("verto.info"),gr=(e,t)=>ir({id:e,result:{method:t}}),vr={};Et(vr,{authErrorAction:()=>Ir,authExpiringAction:()=>Or,authSuccessAction:()=>Mr,closeConnectionAction:()=>Er,compoundEventAttachAction:()=>Ur,createAction:()=>br,destroyAction:()=>kr,executeAction:()=>Tr,getCustomSagaActionType:()=>$r,initAction:()=>wr,makeCustomSagaAction:()=>Wr,reauthAction:()=>Cr,sessionAuthErrorAction:()=>Dr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>Lr,sessionExpiringAction:()=>Nr,sessionReconnectingAction:()=>jr,socketClosedAction:()=>Pr,socketErrorAction:()=>xr,socketMessageAction:()=>Rr});var yr={};function br(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(yr,{configureStore:()=>Sr,createAction:()=>br}),Ct(yr,C);var _r="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 Sr(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 d=E(...c);let u=k;o&&(u=_r(St({trace:!1},"object"==typeof o&&o)));let l=[d];return Array.isArray(i)?l=[d,...i]:"function"==typeof i&&(l=i(l)),_(a,s,u(...l))}var wr=br("swSdk/init"),kr=br("swSdk/destroy"),Er=br("swSdk/closeConnection"),Cr=br("swSdk/reauth"),Tr=br("swSdk/executeRequest"),Ir=br("auth/error"),Mr=br("auth/success"),Or=br("auth/expiring"),Pr=br("socket/closed"),xr=br("socket/error"),Rr=br("socket/message"),Ar=br("session.connected"),Lr=br("session.disconnected"),jr=br("session.reconnecting"),Dr=br("session.auth_error"),Nr=br("session.expiring"),Vr=(e,t)=>`${t.type}/${e}`,Wr=(e,t)=>wt(St({},t),{type:Vr(e,t)}),$r=(e,t)=>Vr(e,t),Ur=br("compound_event:attach");function qr(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 Br=({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?qr(e.extraReducers):[e.extraReducers],s=St(St({},t),i);return function(e,t,r=[],n){let o,[s,i,a]="function"==typeof t?qr(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 d;return o.forEach((e=>{const r=n[e],o=`${t}/${e}`;let c,d;"reducer"in r?(c=r.reducer,d=r.prepare):c=r,s[e]=c,i[o]=c,a[e]=d?br(o,d):br(o)})),{name:t,reducer:(e,t)=>(d||(d=c()),d(e,t)),actions:a,caseReducers:s,getInitialState:()=>(d||(d=c()),d.getInitialState())}}({name:e,initialState:t,reducers:r,extraReducers:e=>{e.addCase(kr.type,(()=>t)),"function"==typeof n&&n(e)}}),zr=Br({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(Ir.type,((e,{payload:t})=>wt(St({},e),{authStatus:"unauthorized",authError:t.error})))}}),{actions:Fr,reducer:Hr}=zr,Qr=Symbol("BaseSession"),Kr={};Et(Kr,{authErrorAction:()=>Ir,authExpiringAction:()=>Or,authSuccessAction:()=>Mr,closeConnectionAction:()=>Er,compoundEventAttachAction:()=>Ur,configureStore:()=>An,connect:()=>Rn,createAction:()=>br,createCatchableSaga:()=>an,createRestartableSaga:()=>on,destroyAction:()=>kr,executeAction:()=>Tr,getCustomSagaActionType:()=>$r,initAction:()=>wr,makeCustomSagaAction:()=>Wr,reauthAction:()=>Cr,sessionAuthErrorAction:()=>Dr,sessionConnectedAction:()=>Ar,sessionDisconnectedAction:()=>Lr,sessionExpiringAction:()=>Nr,sessionReconnectingAction:()=>jr,socketClosedAction:()=>Pr,socketErrorAction:()=>xr,socketMessageAction:()=>Rr});var Jr=({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}}})}),Gr=Br({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 Jr({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 Jr({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:Xr,reducer:Yr}=Gr,Zr={queue:[]},en=Br({name:"executeQueue",initialState:Zr,reducers:{add:(e,{payload:t})=>wt(St({},e),{queue:e.queue.concat(t)}),clean:()=>Zr}}),{actions:tn,reducer:rn}=en,nn=(0,yr.combineReducers)({components:Yr,session:Hr,executeQueue:rn});Et({},{createCatchableSaga:()=>an,createRestartableSaga:()=>on});var on=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)}}))},sn=e=>Vt().error("Catchable Saga Error",e),an=(e,t=sn)=>function*(...r){try{yield Ee(e,...r)}catch(e){t(e)}},cn={};Et(cn,{getAuthError:()=>hn,getAuthStatus:()=>ln,getIceServers:()=>dn,getSession:()=>un});var dn=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},un=e=>e.session,ln=({session:e})=>e.authStatus,hn=({session:e})=>e.authError,pn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},mn=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*fn(e){function*t(t){if("authorized"!==(yield Te(ln)))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(Xr.executeSuccess({componentId:r,requestId:n,response:a})))}catch(e){Vt().warn("worker error",r,e),r&&n&&(yield we(Xr.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(Xr.executeFailure({componentId:r,requestId:n,action:t,error:e}))}}}for(;;){const e=yield Se(Tr.type);yield Ce(t,e)}}function*gn({session:e,sessionChannel:t,pubSubChannel:r,swEventChannel:n}){function*o({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(Xr.upsert(e)),yield we(Tr({method:"video.message",params:{message:gr(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(Xr.upsert(e)),yield we(Tr({method:"video.message",params:{message:gr(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(Xr.upsert(e)),yield we(Tr({method:"video.message",params:{message:gr(s,i),node_id:r}}));break}case"verto.ping":yield we(Tr({method:"video.message",params:{message:gr(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(Xr.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*s(e){switch(e.event_type){case"video.member.updated":return;case"video.room.subscribed":yield we(Xr.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.joined":{const{member:t}=e.params;(null==t?void 0:t.parent_id)&&(yield Te(pn,t.parent_id))&&(yield we(Xr.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*i(e){yield we(r,{type:e.event_type,payload:e.params})}function*a(e){var t;yield we(n,(e=>{const{event_type:t,params:r}=e;return"queuing.relay.tasks"===t?{type:t,payload:e}:{type:t,payload:r}})(e)),"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(s,e):(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("cantina-manager."))})(e)?yield Ce(i,e):yield we({type:e.event_type,payload:e}):yield Ce(o,{jsonrpc:e.params,nodeId:e.node_id})}const c=an((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(a,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(c,e)}}catch(e){Vt().error("sessionChannelWorker error:",e)}finally{Vt().debug("sessionChannelWorker finally")}}function vn(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}}()}var yn=e=>void 0===e.payload?"":(e=>e.type.startsWith("video.member.")||e.type.startsWith("video.__synthetic__.member"))(e)||(e=>e.type.startsWith("video.layout."))(e)||(e=>e.type.startsWith("video.recording."))(e)||(e=>e.type.startsWith("video.playback."))(e)?e.payload.room_session_id:(e=>e.type.startsWith("video.room."))(e)?e.payload.room_session.id:(e=>e.type.startsWith("chat."))(e)?"":(e=>e.type.startsWith("calling."))(e)?e.payload.tag:"";function*bn({pubSubChannel:e,emitter:t}){for(;;){const r=yield Se(e,"*"),{type:n,payload:o}=r;try{const e=yn(r);Ot.includes(n)&&t.emit(n,o),t.emit(Bt({namespace:e,event:n}),o)}catch(e){Vt().error(e)}}}var _n=({executeQueue:e})=>e;function*Sn(){function*e(e){"authorized"!==(yield Te(ln))&&(yield we(tn.add(e.payload)))}for(;;){const t=yield Se(Tr.type);yield Ce(e,t)}}function*wn(){const{queue:e}=yield Te(_n);for(const t of e)yield we(Tr(t));yield we(tn.clean())}var kn=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Tt(this,"name","AuthError"),Object.setPrototypeOf(this,kn.prototype)}};function*En(){const e=yield Te(mn);e.length&&(yield we(Xr.cleanup({ids:e})))}function*Cn(){for(;;)yield Ie(36e5),yield Ce(En)}function*Tn({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Ee(vn,o),i=r.pubSubChannel,a=r.swEventChannel;let c=[];if(null==(n=t.workers)?void 0:n.length)try{const e=t.workers.map((e=>Ee(on(e))));c=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(gn,{session:o,sessionChannel:s,pubSubChannel:i,swEventChannel:a}),yield Ce(On,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const d=yield Ce(Cn);o.connect(),yield Se(kr.type),null==d||d.cancel(),i.close(),s.close(),c.forEach((e=>e.cancel()))}function*In({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,Lr()),t.close())}function*Mn({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(Ir({error:e}))}}function*On(e){for(;;){const t=yield Se([Mr.type,Ir.type,Or.type,xr.type,Pr.type,Cr.type]);switch(t.type){case Mr.type:yield Ce(Pn,e);break;case Ir.type:yield Ce(xn,{action:t,userOptions:e.userOptions,pubSubChannel:e.pubSubChannel});break;case Or.type:yield we(e.pubSubChannel,Nr());break;case xr.type:break;case Pr.type:yield Ce(In,e);break;case Cr.type:yield Ce(Mn,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*Pn(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ce(bn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ce(fn,t);yield we(Fr.connected(t.rpcConnectResult)),yield we(r,Ar());const i=yield Ce(wn);yield Se(Er.type),o.cancel(),s.cancel(),i.cancel()}function*xn(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new kn(o.code,o.message):new Error("Unauthorized"),i=yield Ce(bn,{pubSubChannel:t,emitter:r.emitter});throw yield we(t,Dr(s)),yield Se(Lr),i.cancel(),s}var Rn=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})),d=new Map;let u=!0;const l=n.subscribe((()=>{const e=n.getState(),o=pn(e,c.__uuid)||{};for(const e of i){if(!1===u)return;const r=`${c.__uuid}.${e}`,n=d.get(r),s=o[e];if(void 0!==s&&n!==s){d.set(r,s);const n=t[e];"string"==typeof n?c[n](o):n(o)}}const s=un(e);for(const e of a){if(!1===u)return;const t=`session.${e}`,n=d.get(t),o=s[e];if(void 0!==o&&n!==o){d.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=()=>{u=!1,l(),d.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Ct(Kr,yr);var An=e=>{var t;const{userOptions:r,SessionConstructor:n,preloadedState:o={},runSagaMiddleware:s=!0}=e,i=dt(),a={pubSubChannel:Fe(),swEventChannel:Fe()},c=Sr({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:nn,preloadedState:o,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){t.logger&&(At=t.logger),t.debug&&(e=>{null!=e?Object.assign(jt,e):jt={}})(t.debug),yield Ce(Sn),yield Se(wr.type);try{yield Ee(Tn,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}))})},Ln=e=>e,jn=Symbol("BaseComponent"),Dn=class{constructor(e){this.options=e,Tt(this,"__sw_symbol",jn),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}_handleCompoundEvents(e){const t=this._getInternalEvent(e);let r;for(const e of this.getCompoundEvents().keys())if(this._getInternalEvent(e)===t){r=this.getCompoundEvents().get(e);break}r&&0!==r.length&&(this.store.dispatch(Ur({compoundEvents:r,event:t,namespace:this._eventsNamespace})),r.forEach((e=>{"string"==typeof e&&this._trackEvent(e)})))}_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.__uuid!==this.__uuid&&"function"==typeof r.destroy&&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(this.logger.trace("Got emitterTransform for",e,n),!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){this._handleCompoundEvents(e);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=Ln,transformResolve:n=Ln,transformReject:o=Ln}={transformParams:Ln,transformResolve:Ln,transformReject:Ln}){return new Promise(((s,i)=>{const a=l();this._requests.set(a,{resolve:s,reject:i,transformResolve:n,transformReject:o}),this.store.dispatch(Tr({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},Wr(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()}getCompoundEvents(){return new Map}getEmitterTransforms(){return new Map}get _sessionAuthStatus(){return ln(this.store.getState())}_waitUntilSessionAuthorized(){switch(ln(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=ln(this.store.getState()),o=hn(this.store.getState());if("authorized"===n)e(this),r();else if("unauthorized"===n){const e=o?new kn(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(e={}){return this._workers.forEach((({worker:t},r)=>{const n=this.store.runSaga(t,St({instance:this,runSaga:this.store.runSaga},e));this._runningWorkers.push(n),this._workers.delete(r)}))}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},Nn=class extends Dn{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=ln(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(wr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(kr())}},Vn=class extends Dn{constructor(e){super(e),this.options=e,Tt(this,"subscribeMethod","signalwire.subscribe"),Tt(this,"subscribeParams",{}),Tt(this,"_latestExecuteParams"),this.applyEmitterTransforms({local:!0})}shouldExecuteSubscribe(e){return!this._latestExecuteParams||JSON.stringify(e)!==JSON.stringify(this._latestExecuteParams)}async subscribe(){const e=this.getSubscriptions();if(0===e.length)return void this.logger.warn("`subscribe()` was called without any listeners attached.");const t={method:this.subscribeMethod,params:wt(St({},this.subscribeParams),{event_channel:this.getStateProperty("eventChannel"),events:e})};if(this.shouldExecuteSubscribe(t))return this._latestExecuteParams=t,new Promise((async(e,r)=>{try{return this.applyEmitterTransforms(),this.attachWorkers(),await this.execute(t),e(void 0)}catch(e){return r(e)}}));this.logger.debug("BaseConsumer.subscribe() - Skipped .execute() since the execParams are exactly the same as last time")}},Wn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1,meta:{}};Object.keys(Wn).map((e=>`video.member.updated.${e}`));var $n=Ut(Wn);Object.keys($n).map((e=>`member.updated.${e}`));var Un={};Et(Un,{RoomSessionPlaybackAPI:()=>bo,RoomSessionRecordingAPI:()=>vo,audioMuteMember:()=>no,audioUnmuteMember:()=>oo,createRoomSessionPlaybackObject:()=>_o,createRoomSessionRecordingObject:()=>yo,deafMember:()=>ao,getLayouts:()=>Fn,getMembers:()=>Hn,getPlaybacks:()=>eo,getRecordings:()=>Yn,hideVideoMuted:()=>Jn,play:()=>to,removeMember:()=>fo,setDeaf:()=>uo,setHideVideoMuted:()=>Xn,setInputSensitivityMember:()=>po,setInputVolumeMember:()=>lo,setLayout:()=>Qn,setMemberMeta:()=>go,setMemberPosition:()=>mo,setMeta:()=>ro,setOutputVolumeMember:()=>ho,setPositions:()=>Kn,showVideoMuted:()=>Gn,startRecording:()=>Zn,undeafMember:()=>co,videoMuteMember:()=>so,videoUnmuteMember:()=>io});var qn=()=>{},Bn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:St({room_session_id:this.roomSessionId},r)},t)}}),zn=(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)}}),Fn=Bn("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),Hn=Bn("video.members.get",{transformResolve:e=>({members:e.members})}),Qn=Bn("video.set_layout",{transformResolve:qn}),Kn=Bn("video.set_position",{transformResolve:qn}),Jn=Bn("video.hide_video_muted",{transformResolve:qn}),Gn=Bn("video.show_video_muted",{transformResolve:qn}),Xn={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:qn})}},Yn=Bn("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Ut(e)))})}),Zn={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}}))}},eo=Bn("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Ut(e)))})}),to={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}}))}},ro=Bn("video.set_meta",{transformResolve:qn,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:kt(t,["room_session_id"])}}}),no=zn("video.member.audio_mute",{transformResolve:qn}),oo=zn("video.member.audio_unmute",{transformResolve:qn}),so=zn("video.member.video_mute",{transformResolve:qn}),io=zn("video.member.video_unmute",{transformResolve:qn}),ao=zn("video.member.deaf",{transformResolve:qn}),co=zn("video.member.undeaf",{transformResolve:qn}),uo={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:qn})}},lo=zn("video.member.set_input_volume",{transformResolve:qn}),ho=zn("video.member.set_output_volume",{transformResolve:qn}),po=zn("video.member.set_input_sensitivity",{transformResolve:qn}),mo=zn("video.member.set_position",{transformResolve:qn}),fo={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:qn})}},go=zn("video.member.set_meta",{transformResolve:qn}),vo=class extends Dn{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")}})}},yo=e=>Rn({store:e.store,Component:vo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),bo=class extends Dn{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}})}},_o=e=>Rn({store:e.store,Component:bo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),So={};Et(So,{BaseChatAPI:()=>Do,BaseChatConsumer:()=>jo,ChatMember:()=>Ro,ChatMessage:()=>xo,createBaseChatObject:()=>No,getMemberState:()=>Po,getMembers:()=>Io,getMessages:()=>To,publish:()=>Co,setMemberState:()=>Oo});var wo=()=>{},ko=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),Eo=(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)}}),Co=ko("chat.publish",{transformResolve:wo}),To=ko("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Ut(e))),cursor:e.cursor})}),Io=ko("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Ut(e)))})}),Mo=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})},Oo=Eo("chat.member.set_state",{transformResolve:wo,transformParams:Mo}),Po=Eo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:Mo}),xo=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}},Ro=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:{}}},Ao=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)}}},Lo=e=>e.map((e=>({name:e}))),jo=class extends Vn{constructor(e){super(e),Tt(this,"_eventsPrefix","chat"),Tt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.setWorker("chat",{worker:Ao})}_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:Lo(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 xo(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 Ro(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(vr.reauthAction({token:e}))}))}},Do=Qt(jo,{publish:Co,getMembers:Io,getMessages:To,setMemberState:Oo,getMemberState:Po}),No=e=>Rn({store:e.store,Component:Do,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Vo={};function*Wo(e){const{action:t,memberList:r,channels:{pubSubChannel:n}}=e,o={};t.payload.layout.layers.forEach((e=>{var t;const n=e.member_id;if(!n)return;const s=r.get(n);e.position!==(null==(t=s.member)?void 0:t.current_position)?(Bo({memberList:r,memberId:n,currentPosition:e.position}),o[n]=!0):o[n]=!1}));for(const[e,t]of r)if(o[e])yield we(n,{type:"video.member.updated",payload:t});else if(void 0===o[e]){const t=Bo({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield we(n,{type:"video.member.updated",payload:t})}}function*$o({action:e,channels:t,memberList:r}){var n,o;const s=e.payload.member.id,i=Bo({memberList:r,memberId:s,currentPosition:null==(o=null==(n=r.get(s))?void 0:n.member)?void 0:o.current_position});if(!i)return;const{member:{updated:a=[]}}=e.payload,c=wt(St({},i),{member:St(St({},i.member),e.payload.member)});r.set(s,c);for(const r of a){const n=`${e.type}.${r}`;yield we(t.pubSubChannel,{type:n,payload:c})}yield we(t.pubSubChannel,{type:e.type,payload:c})}Et(Vo,{MEMBER_POSITION_COMPOUND_EVENTS:()=>Uo,memberPositionWorker:()=>qo,memberUpdatedWorker:()=>$o});var Uo=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),qo=function*({instance:e,channels:t,payload:r}){if(!r)return;const{swEventChannel:n}=t;let o=zo(r);for(;;){const r=yield Se(n,(t=>("video.member.updated"===t.type||"video.layout.changed"===t.type||"video.member.joined"===t.type||"video.member.left"===t.type)&&yn(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":yield Ce($o,{action:r,channels:t,memberList:o,instance:e});break;case"video.member.joined":o.set(r.payload.member.id,r.payload);break;case"video.member.left":o.delete(r.payload.member.id);break;case"video.layout.changed":yield Ce(Wo,{action:r,channels:t,memberList:o,instance:e})}}},Bo=({memberList:e,memberId:t,currentPosition:r})=>{const n=e.get(t);if(!n)return;if(!r)return n;const o=wt(St({},n),{member:wt(St({},null==n?void 0:n.member),{current_position:r})});return e.set(t,o),o},zo=e=>{const t=e.room.members,r=new Map;return t.forEach((t=>{r.set(t.id,{room_id:e.room.room_id,room_session_id:e.room.room_session_id,member:t})})),r},Fo=St({},cn);const Ho=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,Qo=()=>{if(!Ho())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},Ko=(e={audio:!0,video:!0})=>{try{return Qo().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:",Yo());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}},Jo=e=>Qo().getDisplayMedia(e),Go=()=>Qo().enumerateDevices(),Xo=async e=>{let t=await Go().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},Yo=()=>Qo().getSupportedConstraints(),Zo=e=>e&&e instanceof MediaStream,es=()=>"sinkId"in HTMLMediaElement.prototype,ts=async(e,t)=>{if(null!==e)if("string"==typeof t)if(es())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")},rs=e=>{var t;Zo(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(ns))},ns=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},os={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},ss=e=>{if(e)return os[e]},is=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 Xo(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Vt().warn(`No ${e} devices to check for permissions!`),null)})(ss(e))},as=()=>is("camera"),cs=()=>is("microphone"),ds=()=>is("speaker"),us=async(e,t=!1)=>{if(!1===await is(e)){const t=(e=>({audio:!e||"all"===e||"microphone"===e||"speaker"===e,video:!e||"all"===e||"camera"===e}))(e),r=await Ko(t);rs(r)}return hs(e,t)},ls=(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))}))},hs=async(e,t=!1)=>{const r=await Xo(ss(e));return!0===t?r:ls(r)},ps=async(e,t,r)=>{const n=await hs(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},ms=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},fs={camera:as,microphone:cs,speaker:ds},gs=["camera","microphone","speaker"],vs=`Allowed targets are: '${gs.join("', '")}'`,ys={speaker:es},bs=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:gs).filter((e=>!!gs.includes(e)||(Vt().warn(`We'll ignore the "${e}" target as it is not allowed. ${vs}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${vs}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>fs[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in ys)||(null===(o=ys[s])||void 0===o?void 0:o.call(ys))?"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 Go(),o=null==t?void 0:t.reduce(((e,t)=>{const r=ss(t);return r&&e.push(r),e}),[]);let s=ls(n,{excludeDefault:!0,targets:o});return Qo().addEventListener("devicechange",(async()=>{const e=await Go(),t=s,n=ls(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=ms(e),n=ms(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,d=i.updated.length>0;(a||c||d)&&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}),d&&r.emit("updated",{changes:i.updated,devices:n})})),r},_s=e=>"function"==typeof(null==e?void 0:e.getTracks),Ss=async e=>{Vt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)try{return await Ko(e)}catch(e){throw Vt().error("getUserMedia error: ",e),e}},ws=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await ps(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 ps(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},ks=e=>/^m=audio/.test(e),Es=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 Ts{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&&(ns(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 ws(this.options),s=await Ss({[e]:o[e]});if(s&&Zo(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&&Zo(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(ks)<n.findIndex(Es))return e;const o=e.split(r),s=o.findIndex(ks),i=o.findIndex(Es),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(Zo(this.options.localStream))return this.options.localStream;const e=await ws(this.options);return Ss(e)}_attachListeners(){this.instance.addEventListener("signalingstatechange",(()=>{switch(this.logger.debug("signalingState:",this.instance.signalingState),this.instance.signalingState){case"stable":this._negotiating=!1;break;case"have-local-offer":"complete"===this.instance.iceGatheringState&&this._sdpReady();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 Is={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 Ms extends Dn{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({},Is),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(Fo.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};if("verto.invite"===e.method)t.subscribe=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions();else if(!this.nodeId)return void this.logger.warn(`Skip Request. Missing nodeId for '${e.method}'.`);return 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(!Object.keys(e).length)return n(new Error("Invalid audio/video constraints."));if(this.logger.debug("updateConstraints trying constraints",this.__uuid,e),!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 Ko(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"),ns(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();this.logger.debug(`updateConstraints got ${a.length} tracks`);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 got transceiver",r.currentDirection,r.mid),await r.sender.replaceTrack(t),this.logger.debug("updateConstraints replaceTrack"),r.direction="sendrecv",this.logger.debug("updateConstraints set to sendrecv"),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 - "),ns(e),null===(r=this.options.localStream)||void 0===r||r.removeTrack(e))})),this.options.localStream.addTrack(t)):(this.logger.debug("updateConstraints no transceiver 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 Ts(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 Ts(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){var t;const{type:r,sdp:n}=e,o=this._mungeSDP(n);switch(this.logger.debug("MUNGED SDP \n",`Type: ${r}`,"\n\n",o),r){case"offer":return(null===(t=this.peer.instance)||void 0===t?void 0:t.remoteDescription)?this.executeUpdateMedia(o):this.executeInvite(o);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${r}' on call ${this.id}`)}}async executeInvite(e){if("new"!==this.state)throw new Error(`Invalid state: '${this.state}' for connection id: ${this.id}`);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 executeUpdateMedia(e){try{const t=mr(Object.assign(Object.assign({},this.messagePayload),{sdp:e,action:"updateMedia"})),r=await this.vertoExecute(t);r.sdp||this.logger.error("UpdateMedia invalid SDP answer",r),this.logger.debug("UpdateMedia response",r),await this.peer.onRemoteSdp(r.sdp)}catch(e){throw this.logger.error("UpdateMedia error",e),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=fr(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;rs(e),rs(t),this.destroy()}}const Os=e=>`sw-sdk-${e}`,Ps=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e},xs=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),Rs=e=>t=>{const r=document.getElementById(Os(t));r&&(r.style.display=e)},As=vr.createAction("swJs/audioSetSpeakerAction");function*Ls({element:e,room:t}){const r=vr.getCustomSagaActionType(t.__uuid,As);for(;;){const n=yield Se([r]);try{switch(n.type){case r:const o=yield Ee(ts,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*js({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&&ts(t,r).catch((()=>{})),yield Ce(Ls,{element:t,room:n})}function*Ds({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:n}){(async 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"),i.style.display="none",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),n.readyState===HTMLMediaElement.HAVE_NOTHING&&(Vt().debug("Wait for the MCU to be ready"),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:n})),i.style.display="block"})(r).catch((e=>{Vt().error("Handle video track error",e)}))}const Ns={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},Vs={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},Ws=Qt(class extends Ms{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Un.audioMuteMember,audioUnmute:Un.audioUnmuteMember,videoMute:Un.videoMuteMember,videoUnmute:Un.videoUnmuteMember,setMicrophoneVolume:Un.setInputVolumeMember,setInputVolume:Un.setInputVolumeMember,setInputSensitivity:Un.setInputSensitivityMember}),$s=Qt(class extends Ms{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Un.audioMuteMember,audioUnmute:Un.audioUnmuteMember,videoMute:Un.videoMuteMember,videoUnmute:Un.videoUnmuteMember,setInputVolume:Un.setInputVolumeMember,setMicrophoneVolume:Un.setInputVolumeMember,setInputSensitivity:Un.setInputSensitivityMember}),Us=()=>{},qs="video.memberList.updated",Bs=Bt({event:qs}),zs=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Mt),e)),[]).join(".")})(Bs),Fs=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*Hs({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:zs,payload:n})}for(;;){const t=yield Se(e,(({type:e})=>Fs.includes(e)));yield Ce(r,t)}}const Qs=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(Bs))))(r))return;const{cleanup:n}=((e,t)=>{(e=>rr(Fs).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,Us)}));const r=({members:t})=>{e.emit(qs,{members:t})};return e.on(zs,r),{cleanup:()=>{e.off(zs,r)}}})(t,r);yield Ce(Hs,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},Ks=function*(e){if(!e.payload)throw new Error("[memberPositionWorker] Missing payload");yield Ce(Vo.memberPositionWorker,{...e,payload:e.payload})},Js=Qt(class extends Ms{_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=>Un.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=>Un.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Ut({...e.playback,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...Vo.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.setWorker("memberListUpdated",{worker:Qs}),this.attachWorkers()}attachOnSubscribedWorkers(e){this.setWorker("memberPositionWorker",{worker:Ks}),this.attachWorkers({payload:e})}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 Jo({audio:!0===r?Vs: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=Rn({store:this.store,Component:Ws,componentListeners:Ns})(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=Rn({store:this.store,Component:$s,componentListeners:Ns})(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(As(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:Un.audioMuteMember,audioUnmute:Un.audioUnmuteMember,videoMute:Un.videoMuteMember,videoUnmute:Un.videoUnmuteMember,deaf:Un.deafMember,undeaf:Un.undeafMember,setInputVolume:Un.setInputVolumeMember,setOutputVolume:Un.setOutputVolumeMember,setMicrophoneVolume:Un.setInputVolumeMember,setSpeakerVolume:Un.setOutputVolumeMember,setInputSensitivity:Un.setInputSensitivityMember,removeMember:Un.removeMember,getMembers:Un.getMembers,getLayouts:Un.getLayouts,setLayout:Un.setLayout,setPositions:Un.setPositions,setMemberPosition:Un.setMemberPosition,hideVideoMuted:Un.hideVideoMuted,showVideoMuted:Un.showVideoMuted,getRecordings:Un.getRecordings,startRecording:Un.startRecording,getPlaybacks:Un.getPlaybacks,play:Un.play,setHideVideoMuted:Un.setHideVideoMuted,setMeta:Un.setMeta,setMemberMeta:Un.setMemberMeta});class Gs extends Vn{_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 Nn{_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(js,{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,rootElement:t})=>async({layout:r,myMemberId:n,localStream:o})=>{Vt().debug("Process layout.changed");try{const{layers:s=[]}=r,i=s.find((({member_id:e})=>e===n)),a=Os(n);let c=e.get(a);if(!i)return Vt().debug("Location not found"),void(c&&(Vt().debug("Current layer not visible"),c.style.display="none"));if(!c){Vt().debug("Build myLayer"),c=(({location:e})=>{const{top:t,left:r,width:n,height:o}=xs(e),s=document.createElement("div");return s.style.position="absolute",s.style.overflow="hidden",s.style.top=t,s.style.left=r,s.style.width=n,s.style.height=o,s})({location:i}),c.id=a;const r=Ps();r.srcObject=o,r.style.width="100%",r.style.height="100%",c.appendChild(r);const n=t.querySelector(".mcuLayers"),s=document.getElementById(a);return void(n&&!s&&(n.appendChild(c),e.set(a,c)))}const{top:d,left:u,width:l,height:h}=xs(i);Vt().debug("Update myLayer:",d,u,l,h),o.getVideoTracks().length>0&&(c.style.display="block"),c.style.top=d,c.style.left=u,c.style.width=l,c.style.height=h}catch(e){Vt().error("Layout Changed Error",e)}})({rootElement:e,layerMap:o}),a=Rs("none"),c=Rs("block");let d;r.on("layout.changed",(e=>{Vt().debug("Received layout.changed"),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 u=function(o){switch(o.track.kind){case"video":d=n(Ds,{applyLocalVideoOverlay:t,rootElement:e,track:o.track,element:s}),r.off("track",u)}};r.on("track",u),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),o.clear(),d?.cancel()}))}catch(e){Vt().error("videoElementSaga",e)}})({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Rn({store:c.store,customSagas:c.customSagas,Component:Js,componentListeners:Ns})(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=So.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get cantina(){return this._cantina||(this._cantina=(e=>{const t=Rn({store:e.store,Component:Gs,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(vr.reauthAction({token:e}))}}class Ys extends class extends class{constructor(e){var t,r;this.options=e,Tt(this,"__sw_symbol",Qr),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(){var e;const t={agent:this.agent,version:this.connectVersion,authentication:{project:this.options.project,token:this.options.token}};this._relayProtocolIsValid()&&(t.protocol=this.relayProtocol),(null==(e=this.options.contexts)?void 0:e.length)&&(t.contexts=this.options.contexts),this._rpcConnectResult=await this.execute(cr(t))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Mr())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Ir({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(xr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=e.code>=1006&&e.code<=1014?"reconnecting":"disconnected",this.dispatch(Pr()),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":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(Fr.authStatus("unknown")),this.dispatch(Er()),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.10.2"}const Zs=e=>{const t={...e,emitter:new lt},r=An({userOptions:t,SessionConstructor:Ys});return Rn({store:r,Component:Xs,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},ei=["subscribe","publish","updateToken","getMessages","getMembers","getMemberState","setMemberState"];var ti=Object.freeze({__proto__:null,ChatMember:So.ChatMember,ChatMessage:So.ChatMessage,Client:function(e){const t=Zs(e);return new Proxy(t.chat,{get:(e,r,n)=>ei.includes(r)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(r):Reflect.get(e,r,n)})}});const ri={aspectRatio:{ideal:16/9}},ni=e=>new Promise((async(t,r)=>{const{audio:n=!0,video:o=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:d=!0,stopMicrophoneWhileMuted:u=!0,speakerId:l,...h}=e,p=Zs({...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?ri:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});if(f.once("destroy",(()=>{p.disconnect()})),c)try{await f.join(),t(f)}catch(e){r(e)}else t(f)})),oi={aspectRatio:{ideal:16/9}},si=["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","setMeta","setMemberMeta"];var ii=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,...d}=e,u=Zs(d),l=u.rooms.makeRoomObject({audio:t,video:!0===r?oi:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{u.disconnect()}));const h={join:()=>new Promise((async(e,t)=>{try{l.attachPreConnectWorkers(),await u.connect(),l.once("room.subscribed",(t=>{l.attachOnSubscribedWorkers(t),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&&si.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:ni,joinRoom:e=>ni({...e,autoJoin:!0}),createClient:Zs}),ai=Object.freeze({__proto__:null,getDevices:hs,getCameraDevices:()=>hs("camera"),getMicrophoneDevices:()=>hs("microphone"),getSpeakerDevices:()=>hs("speaker"),getDevicesWithPermissions:us,getCameraDevicesWithPermissions:()=>us("camera"),getMicrophoneDevicesWithPermissions:()=>us("microphone"),getSpeakerDevicesWithPermissions:()=>us("speaker"),checkPermissions:is,checkCameraPermissions:as,checkMicrophonePermissions:cs,checkSpeakerPermissions:ds,requestPermissions:async e=>{try{const t=await Ko(e);rs(t)}catch(e){throw e}},createDeviceWatcher:bs,createCameraDeviceWatcher:()=>bs({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>bs({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>bs({targets:["speaker"]}),supportsMediaDevices:Ho,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:Ko,getDisplayMedia:Jo,enumerateDevices:Go,getSupportedConstraints:Yo,supportsMediaOutput:es,setMediaElementSinkId:ts,stopStream:rs,stopTrack:ns,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(_s(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},Ko(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(),_s(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=ti,e.Video=ii,e.WebRTC=ai,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
7
7
|
//# sourceMappingURL=index.umd.js.map
|