@signalwire/js 3.16.0 → 3.17.0-dev.202210101110.a32413d.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * SignalWire JS SDK v3.16.0 (https://signalwire.com)
2
+ * SignalWire JS SDK v3.17.0-dev.202210101110.a32413d.0 (https://signalwire.com)
3
3
  * Copyright 2018-2022 SignalWire
4
4
  * Licensed under MIT(https://github.com/signalwire/signalwire-js/blob/main/LICENSE)
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SignalWire={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r={exports:{}};!function(e){var r,o;r=t,o=function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),o=["trace","debug","info","warn","error"];function n(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(o){return"debug"===o&&(o="log"),typeof console!==t&&("trace"===o&&r?s:void 0!==console[o]?n(console,o):void 0!==console.log?n(console,"log"):e)}function a(t,r){for(var n=0;n<o.length;n++){var s=o[n];this[s]=n<t?e:this.methodFactory(s,t,r)}this.log=this.debug}function c(e,r,o){return function(){typeof console!==t&&(a.call(this,r,o),this[e].apply(this,arguments))}}function d(e,t,r){return i(e)||c.apply(this,arguments)}function u(e,r,n){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,o=r.indexOf(encodeURIComponent(c)+"=");-1!==o&&(e=/^([^;]+)/.exec(r.slice(o))[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=n||d,i.getLevel=function(){return s},i.setLevel=function(r,n){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!==n&&function(e){var r=(o[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 m=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=m),l},l.getLoggers=function(){return h},l.default=l,l},e.exports?e.exports=o():r.log=o()}(r);var o,n=r.exports,s=new Uint8Array(16);function i(){if(!o&&!(o="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 o(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){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}function h(e,t,r){function o(e,o,n,s){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),"string"==typeof o&&(o=function(e){if(!c(e))throw TypeError("Invalid UUID");var t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var i=new Uint8Array(16+e.length);if(i.set(o),i.set(e,o.length),(i=r(i))[6]=15&i[6]|t,i[8]=63&i[8]|128,n){s=s||0;for(var a=0;a<16;++a)n[s+a]=i[a];return n}return l(i)}try{o.name=e}catch(e){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}function m(e){return 14+(e+64>>>9<<4)+1}function p(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(e,t,r,o,n,s){return p((i=p(p(t,e),p(o,s)))<<(a=n)|i>>>32-a,r);var i,a}function g(e,t,r,o,n,s,i){return f(t&r|~t&o,e,t,n,s,i)}function v(e,t,r,o,n,s,i){return f(t&o|r&~o,e,t,n,s,i)}function y(e,t,r,o,n,s,i){return f(t^r^o,e,t,n,s,i)}function b(e,t,r,o,n,s,i){return f(r^(t|~o),e,t,n,s,i)}function _(e,t,r){var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){r=r||0;for(var n=0;n<16;++n)t[r+n]=o[n];return t}return l(o)}function S(e,t,r,o){switch(e){case 0:return t&r^~t&o;case 1:return t^r^o;case 2:return t&r^t&o^r&o;case 3:return t^r^o}}function w(e,t){return e<<t|e>>>32-t}function k(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function C(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(Object(r),!0).forEach((function(t){k(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function T(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. "}h("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){for(var t=[],r=32*e.length,o="0123456789abcdef",n=0;n<r;n+=8){var s=e[n>>5]>>>n%32&255,i=parseInt(o.charAt(s>>>4&15)+o.charAt(15&s),16);t.push(i)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[m(t)-1]=t;for(var r=1732584193,o=-271733879,n=-1732584194,s=271733878,i=0;i<e.length;i+=16){var a=r,c=o,d=n,u=s;r=g(r,o,n,s,e[i],7,-680876936),s=g(s,r,o,n,e[i+1],12,-389564586),n=g(n,s,r,o,e[i+2],17,606105819),o=g(o,n,s,r,e[i+3],22,-1044525330),r=g(r,o,n,s,e[i+4],7,-176418897),s=g(s,r,o,n,e[i+5],12,1200080426),n=g(n,s,r,o,e[i+6],17,-1473231341),o=g(o,n,s,r,e[i+7],22,-45705983),r=g(r,o,n,s,e[i+8],7,1770035416),s=g(s,r,o,n,e[i+9],12,-1958414417),n=g(n,s,r,o,e[i+10],17,-42063),o=g(o,n,s,r,e[i+11],22,-1990404162),r=g(r,o,n,s,e[i+12],7,1804603682),s=g(s,r,o,n,e[i+13],12,-40341101),n=g(n,s,r,o,e[i+14],17,-1502002290),r=v(r,o=g(o,n,s,r,e[i+15],22,1236535329),n,s,e[i+1],5,-165796510),s=v(s,r,o,n,e[i+6],9,-1069501632),n=v(n,s,r,o,e[i+11],14,643717713),o=v(o,n,s,r,e[i],20,-373897302),r=v(r,o,n,s,e[i+5],5,-701558691),s=v(s,r,o,n,e[i+10],9,38016083),n=v(n,s,r,o,e[i+15],14,-660478335),o=v(o,n,s,r,e[i+4],20,-405537848),r=v(r,o,n,s,e[i+9],5,568446438),s=v(s,r,o,n,e[i+14],9,-1019803690),n=v(n,s,r,o,e[i+3],14,-187363961),o=v(o,n,s,r,e[i+8],20,1163531501),r=v(r,o,n,s,e[i+13],5,-1444681467),s=v(s,r,o,n,e[i+2],9,-51403784),n=v(n,s,r,o,e[i+7],14,1735328473),r=y(r,o=v(o,n,s,r,e[i+12],20,-1926607734),n,s,e[i+5],4,-378558),s=y(s,r,o,n,e[i+8],11,-2022574463),n=y(n,s,r,o,e[i+11],16,1839030562),o=y(o,n,s,r,e[i+14],23,-35309556),r=y(r,o,n,s,e[i+1],4,-1530992060),s=y(s,r,o,n,e[i+4],11,1272893353),n=y(n,s,r,o,e[i+7],16,-155497632),o=y(o,n,s,r,e[i+10],23,-1094730640),r=y(r,o,n,s,e[i+13],4,681279174),s=y(s,r,o,n,e[i],11,-358537222),n=y(n,s,r,o,e[i+3],16,-722521979),o=y(o,n,s,r,e[i+6],23,76029189),r=y(r,o,n,s,e[i+9],4,-640364487),s=y(s,r,o,n,e[i+12],11,-421815835),n=y(n,s,r,o,e[i+15],16,530742520),r=b(r,o=y(o,n,s,r,e[i+2],23,-995338651),n,s,e[i],6,-198630844),s=b(s,r,o,n,e[i+7],10,1126891415),n=b(n,s,r,o,e[i+14],15,-1416354905),o=b(o,n,s,r,e[i+5],21,-57434055),r=b(r,o,n,s,e[i+12],6,1700485571),s=b(s,r,o,n,e[i+3],10,-1894986606),n=b(n,s,r,o,e[i+10],15,-1051523),o=b(o,n,s,r,e[i+1],21,-2054922799),r=b(r,o,n,s,e[i+8],6,1873313359),s=b(s,r,o,n,e[i+15],10,-30611744),n=b(n,s,r,o,e[i+6],15,-1560198380),o=b(o,n,s,r,e[i+13],21,1309151649),r=b(r,o,n,s,e[i+4],6,-145523070),s=b(s,r,o,n,e[i+11],10,-1120210379),n=b(n,s,r,o,e[i+2],15,718787259),o=b(o,n,s,r,e[i+9],21,-343485551),r=p(r,a),o=p(o,c),n=p(n,d),s=p(s,u)}return[r,o,n,s]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(m(t)),o=0;o<t;o+=8)r[o>>5]|=(255&e[o/8])<<o%32;return r}(e),8*e.length))})),h("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var o=unescape(encodeURIComponent(e));e=[];for(var n=0;n<o.length;++n)e.push(o.charCodeAt(n))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var s=Math.ceil((e.length/4+2)/16),i=new Array(s),a=0;a<s;++a){for(var c=new Uint32Array(16),d=0;d<16;++d)c[d]=e[64*a+4*d]<<24|e[64*a+4*d+1]<<16|e[64*a+4*d+2]<<8|e[64*a+4*d+3];i[a]=c}i[s-1][14]=8*(e.length-1)/Math.pow(2,32),i[s-1][14]=Math.floor(i[s-1][14]),i[s-1][15]=8*(e.length-1)&4294967295;for(var u=0;u<s;++u){for(var l=new Uint32Array(80),h=0;h<16;++h)l[h]=i[u][h];for(var m=16;m<80;++m)l[m]=w(l[m-3]^l[m-8]^l[m-14]^l[m-16],1);for(var p=r[0],f=r[1],g=r[2],v=r[3],y=r[4],b=0;b<80;++b){var _=Math.floor(b/20),k=w(p,5)+S(_,f,g,v)+y+t[_]+l[b]>>>0;y=v,v=g,g=w(f,30)>>>0,f=p,p=k}r[0]=r[0]+p>>>0,r[1]=r[1]+f>>>0,r[2]=r[2]+g>>>0,r[3]=r[3]+v>>>0,r[4]=r[4]+y>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]}));var I="function"==typeof Symbol&&Symbol.observable||"@@observable",M=function(){return Math.random().toString(36).substring(7).split("").join(".")},P={INIT:"@@redux/INIT"+M(),REPLACE:"@@redux/REPLACE"+M(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+M()}};function R(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 A(e,t,r){var o;if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error(T(0));if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(T(1));return r(A)(e,t)}if("function"!=typeof e)throw new Error(T(2));var n=e,s=t,i=[],a=i,c=!1;function d(){a===i&&(a=i.slice())}function u(){if(c)throw new Error(T(3));return s}function l(e){if("function"!=typeof e)throw new Error(T(4));if(c)throw new Error(T(5));var t=!0;return d(),a.push(e),function(){if(t){if(c)throw new Error(T(6));t=!1,d();var r=a.indexOf(e);a.splice(r,1),i=null}}}function h(e){if(!R(e))throw new Error(T(7));if(void 0===e.type)throw new Error(T(8));if(c)throw new Error(T(9));try{c=!0,s=n(s,e)}finally{c=!1}for(var t=i=a,r=0;r<t.length;r++)(0,t[r])();return e}function m(e){if("function"!=typeof e)throw new Error(T(10));n=e,h({type:P.REPLACE})}function p(){var e,t=l;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new Error(T(11));function r(){e.next&&e.next(u())}return r(),{unsubscribe:t(r)}}})[I]=function(){return this},e}return h({type:P.INIT}),(o={dispatch:h,subscribe:l,getState:u,replaceReducer:m})[I]=p,o}function O(e){for(var t=Object.keys(e),r={},o=0;o<t.length;o++){var n=t[o];"function"==typeof e[n]&&(r[n]=e[n])}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:P.INIT}))throw new Error(T(12));if(void 0===r(void 0,{type:P.PROBE_UNKNOWN_ACTION()}))throw new Error(T(13))}))}(r)}catch(e){s=e}return function(e,t){if(void 0===e&&(e={}),s)throw s;for(var o=!1,n={},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(T(14));n[c]=u,o=o||u!==d}return(o=o||i.length!==Object.keys(e).length)?n:e}}function x(e,t){return function(){return t(e.apply(this,arguments))}}function j(){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 L(){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),o=function(){throw new Error(T(15))},n={getState:r.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=t.map((function(e){return e(n)}));return o=j.apply(void 0,s)(r.dispatch),C(C({},r),{},{dispatch:o})}}}var N=Object.freeze({__proto__:null,__DO_NOT_USE__ActionTypes:P,applyMiddleware:L,bindActionCreators:function(e,t){if("function"==typeof e)return x(e,t);if("object"!=typeof e||null===e)throw new Error(T(16));var r={};for(var o in e){var n=e[o];"function"==typeof n&&(r[o]=x(n,t))}return r},combineReducers:O,compose:j,createStore:A,legacy_createStore:A}),D=function(e){return"@@redux-saga/"+e},W=D("CANCEL_PROMISE"),V=D("CHANNEL_END"),U=D("IO"),$=D("MATCH"),B=D("MULTICAST"),F=D("SAGA_ACTION"),q=D("SELF_CANCELLATION"),z=D("TASK"),H=D("TASK_CANCEL"),J=D("TERMINATE"),Q=D("LOCATION");function G(){return(G=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}var K=function(e){return null==e},X=function(e){return null!=e},Y=function(e){return"function"==typeof e},Z=function(e){return"string"==typeof e},ee=Array.isArray,te=function(e){return e&&Y(e.then)},re=function(e){return e&&Y(e.next)&&Y(e.throw)},oe=function e(t){return t&&(Z(t)||se(t)||Y(t)||ee(t)&&t.every(e))},ne=function(e){return e&&Y(e.take)&&Y(e.close)},se=function(e){return Boolean(e)&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};function ie(e,t){var r;void 0===t&&(t=!0);var o=new Promise((function(o){r=setTimeout(o,e,t)}));return o[W]=function(){clearTimeout(r)},o}var ae=function(e){return function(){return!0}}(),ce=function(){},de=function(e){return e},ue=function(e,t){G(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(r){e[r]=t[r]}))};function le(e,t){var r=e.indexOf(t);r>=0&&e.splice(r,1)}function he(e){var t=!1;return function(){t||(t=!0,e())}}var me=function(e){throw e},pe=function(e){return{value:e,done:!0}};function fe(e,t,r){void 0===t&&(t=me),void 0===r&&(r="iterator");var o={meta:{name:r},next:e,throw:t,return:pe,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(o[Symbol.iterator]=function(){return o}),o}function ge(e,t){var r=t.sagaStack;console.error(e),console.error(r)}var ve=function(e){return Array.apply(null,new Array(e))},ye=function(e){return function(t){return e(Object.defineProperty(t,F,{value:!0}))}},be=function(e){return e===J},_e=function(e){return e===H},Se=function(e){return be(e)||_e(e)};function we(e,t){var r,o=Object.keys(e),n=o.length,s=0,i=ee(e)?ve(n):{},a={};return o.forEach((function(e){var o=function(o,a){r||(a||Se(o)?(t.cancel(),t(o,a)):(i[e]=o,++s===n&&(r=!0,t(i))))};o.cancel=ce,a[e]=o})),t.cancel=function(){r||(r=!0,o.forEach((function(e){return a[e].cancel()})))},a}function ke(e){return{name:e.name||"anonymous",location:Ee(e)}}function Ee(e){return e[Q]}var Ce={isEmpty:ae,put:ce,take:ce},Te="TAKE",Ie="CALL",Me="FORK",Pe="SELECT",Re=function(e,t){var r;return(r={})[U]=!0,r.combinator=!1,r.type=e,r.payload=t,r},Ae=function(e){return Re(Me,G({},e.payload,{detached:!0}))};function Oe(e,t){return void 0===e&&(e="*"),oe(e)?Re(Te,{pattern:e}):ne(r=e)&&r[B]&&X(t)&&oe(t)?Re(Te,{channel:e,pattern:t}):ne(e)?Re(Te,{channel:e}):void 0;var r}function xe(e,t){return K(t)&&(t=e,e=void 0),Re("PUT",{channel:e,action:t})}function je(e,t){var r,o=null;return Y(e)?r=e:(ee(e)?(o=e[0],r=e[1]):(o=e.context,r=e.fn),o&&Z(r)&&Y(o[r])&&(r=o[r])),{context:o,fn:r,args:t}}function Le(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return Re(Ie,je(e,r))}function Ne(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return Re(Me,je(e,r))}function De(e){void 0===e&&(e=de);for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return Re(Pe,{selector:e,args:r})}function We(){return Re("CANCELLED",{})}var Ve=Le.bind(null,ie),Ue=[],$e=0;function Be(e){try{ze(),e()}finally{He()}}function Fe(e){Ue.push(e),$e||(ze(),Je())}function qe(e){try{return ze(),e()}finally{Je()}}function ze(){$e++}function He(){$e--}function Je(){var e;for(He();!$e&&void 0!==(e=Ue.shift());)Be(e)}var Qe=function(e){return function(t){return e.some((function(e){return Ze(e)(t)}))}},Ge=function(e){return function(t){return e(t)}},Ke=function(e){return function(t){return t.type===String(e)}},Xe=function(e){return function(t){return t.type===e}},Ye=function(){return ae};function Ze(e){var t="*"===e?Ye:Z(e)?Ke:ee(e)?Qe:function(e){return Y(e)&&e.hasOwnProperty("toString")}(e)?Ke:Y(e)?Ge:se(e)?Xe:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var et={type:V},tt=function(e){return e&&e.type===V};function rt(e){void 0===e&&(e=function(e,t){void 0===e&&(e=10);var r=new Array(e),o=0,n=0,s=0,i=function(){if(0!=o){var t=r[s];return r[s]=null,o--,s=(s+1)%e,t}},a=function(){for(var e=[];o;)e.push(i());return e};return{isEmpty:function(){return 0==o},put:function(t){var i;o<e||(i=2*e,r=a(),o=r.length,n=r.length,s=0,r.length=i,e=i),function(t){r[n]=t,n=(n+1)%e,o++}(t)},take:i,flush:a}}(void 0));var t=!1,r=[];return{take:function(o){t&&e.isEmpty()?o(et):e.isEmpty()?(r.push(o),o.cancel=function(){le(r,o)}):o(e.take())},put:function(o){if(!t){if(0===r.length)return e.put(o);r.shift()(o)}},flush:function(r){t&&e.isEmpty()?r(et):r(e.flush())},close:function(){if(!t){t=!0;var e=r;r=[];for(var o=0,n=e.length;o<n;o++)(0,e[o])(et)}}}}function ot(e,t){void 0===t&&(t=Ce);var r,o=!1,n=rt(t),s=function(){o||(o=!0,Y(r)&&r(),n.close())};return r=he(r=e((function(e){tt(e)?s():n.put(e)}))),o&&r(),{take:n.take,flush:n.flush,close:s}}function nt(){var e,t=!1,r=[],o=r,n=function(){o===r&&(o=r.slice())},s=function(){t=!0;var e=r=o;o=[],e.forEach((function(e){e(et)}))};return(e={})[B]=!0,e.put=function(e){if(!t)if(tt(e))s();else for(var n=r=o,i=0,a=n.length;i<a;i++){var c=n[i];c[$](e)&&(c.cancel(),c(e))}},e.take=function(e,r){void 0===r&&(r=Ye),t?e(et):(e[$]=r,n(),o.push(e),e.cancel=he((function(){n(),le(o,e)})))},e.close=s,e}function st(){var e=nt(),t=e.put;return e.put=function(e){e[F]?t(e):Fe((function(){t(e)}))},e}function it(e,t){var r=e[W];Y(r)&&(t.cancel=r),e.then(t,(function(e){t(e,!0)}))}var at,ct=0,dt=function(){return++ct};function ut(e){e.isRunning()&&e.cancel()}var lt=((at={}).TAKE=function(e,t,r){var o=t.channel,n=void 0===o?e.channel:o,s=t.pattern,i=t.maybe,a=function(e){e instanceof Error?r(e,!0):!tt(e)||i?r(e):r(J)};try{n.take(a,X(s)?Ze(s):null)}catch(e){return void r(e,!0)}r.cancel=a.cancel},at.PUT=function(e,t,r){var o=t.channel,n=t.action,s=t.resolve;Fe((function(){var t;try{t=(o?o.put:e.dispatch)(n)}catch(e){return void r(e,!0)}s&&te(t)?it(t,r):r(t)}))},at.ALL=function(e,t,r,o){var n=o.digestEffect,s=ct,i=Object.keys(t);if(0!==i.length){var a=we(t,r);i.forEach((function(e){n(t[e],s,a[e],e)}))}else r(ee(t)?[]:{})},at.RACE=function(e,t,r,o){var n=o.digestEffect,s=ct,i=Object.keys(t),a=ee(t)?ve(i.length):{},c={},d=!1;i.forEach((function(e){var t=function(t,o){d||(o||Se(t)?(r.cancel(),r(t,o)):(r.cancel(),d=!0,a[e]=t,r(a)))};t.cancel=ce,c[e]=t})),r.cancel=function(){d||(d=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){d||n(t[e],s,c[e],e)}))},at.CALL=function(e,t,r,o){var n=t.context,s=t.fn,i=t.args,a=o.task;try{var c=s.apply(n,i);if(te(c))return void it(c,r);if(re(c))return void _t(e,c,a.context,ct,ke(s),!1,r);r(c)}catch(e){r(e,!0)}},at.CPS=function(e,t,r){var o=t.context,n=t.fn,s=t.args;try{var i=function(e,t){K(e)?r(t):r(e,!0)};n.apply(o,s.concat(i)),i.cancel&&(r.cancel=i.cancel)}catch(e){r(e,!0)}},at.FORK=function(e,t,r,o){var n=t.fn,s=t.detached,i=o.task,a=function(e){var t=e.context,r=e.fn,o=e.args;try{var n=r.apply(t,o);if(re(n))return n;var s=!1;return fe((function(e){return s?{value:e,done:!0}:(s=!0,{value:n,done:!te(n)})}))}catch(e){return fe((function(){throw e}))}}({context:t.context,fn:n,args:t.args}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:ke(t)}(a,n);qe((function(){var t=_t(e,a,i.context,ct,c,s,void 0);s?r(t):t.isRunning()?(i.queue.addTask(t),r(t)):t.isAborted()?i.queue.abort(t.error()):r(t)}))},at.JOIN=function(e,t,r,o){var n=o.task,s=function(e,t){if(e.isRunning()){var r={task:n,cb:t};t.cancel=function(){e.isRunning()&&le(e.joiners,r)},e.joiners.push(r)}else e.isAborted()?t(e.error(),!0):t(e.result())};if(ee(t)){if(0===t.length)return void r([]);var i=we(t,r);t.forEach((function(e,t){s(e,i[t])}))}else s(t,r)},at.CANCEL=function(e,t,r,o){t===q?ut(o.task):ee(t)?t.forEach(ut):ut(t),r()},at.SELECT=function(e,t,r){var o=t.selector,n=t.args;try{r(o.apply(void 0,[e.getState()].concat(n)))}catch(e){r(e,!0)}},at.ACTION_CHANNEL=function(e,t,r){var o=t.pattern,n=rt(t.buffer),s=Ze(o),i=function t(r){tt(r)||e.channel.take(t,s),n.put(r)},a=n.close;n.close=function(){i.cancel(),a()},e.channel.take(i,s),r(n)},at.CANCELLED=function(e,t,r,o){r(o.task.isCancelled())},at.FLUSH=function(e,t,r){t.flush(r)},at.GET_CONTEXT=function(e,t,r,o){r(o.task.context[t])},at.SET_CONTEXT=function(e,t,r,o){ue(o.task.context,t),r()},at);function ht(e,t){return e+"?"+t}function mt(e){var t=e.name,r=e.location;return r?t+" "+ht(r.fileName,r.lineNumber):t}function pt(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 ft=null,gt=[],vt=function(e){e.crashedEffect=ft,gt.push(e)},yt=function(){ft=null,gt.length=0},bt=function(){var e,t=gt[0],r=gt.slice(1),o=t.crashedEffect?(e=Ee(t.crashedEffect))?e.code+" "+ht(e.fileName,e.lineNumber):"":null;return["The above error occurred in task "+mt(t.meta)+(o?" \n when executing effect "+o:"")].concat(r.map((function(e){return" created by "+mt(e.meta)})),[pt(gt)]).join("\n")};function _t(e,t,r,o,n,s,i){var a=e.finalizeRunEffect((function(t,r,o){te(t)?it(t,o):re(t)?_t(e,t,d.context,r,n,!1,o):t&&t[U]?(0,lt[t.type])(e,t.payload,o,u):o(t)}));l.cancel=ce;var c={meta:n,cancel:function(){0===c.status&&(c.status=1,l(H))},status:0},d=function(e,t,r,o,n,s,i){var a;void 0===i&&(i=ce);var c,d,u=0,l=null,h=[],m=Object.create(r),p=function(e,t,r){var o,n=[],s=!1;function i(e){h.push.apply(h,p.getTasks().map((function(e){return e.meta.name}))),c(),r(e,!0)}function a(t){n.push(t),t.cont=function(a,c){s||(le(n,t),t.cont=ce,c?i(a):(t===e&&(o=a),n.length||(s=!0,r(o))))}}function c(){s||(s=!0,n.forEach((function(e){e.cont=ce,e.cancel()})),n=[])}return a(e),{addTask:a,cancelAll:c,abort:i,getTasks:function(){return n}}}(t,0,f);function f(t,r){if(r){if(u=2,vt({meta:n,cancelledTasks:h}),g.isRoot){var o=bt();yt(),e.onError(t,{sagaStack:o})}d=t,l&&l.reject(t)}else t===H?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={})[z]=!0,a.id=o,a.meta=n,a.isRoot=s,a.context=m,a.joiners=[],a.queue=p,a.cancel=function(){0===u&&(u=1,p.cancelAll(),f(H,!1))},a.cont=i,a.end=f,a.setContext=function(e){ue(m,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,o,n,s,i),u={task:d,digestEffect:h};return i&&(i.cancel=d.cancel),l(),d;function l(e,r){try{var n;r?(n=t.throw(e),yt()):_e(e)?(c.status=1,l.cancel(),n=Y(t.return)?t.return(H):{done:!0,value:H}):n=be(e)?Y(t.return)?t.return():{done:!0}:t.next(e),n.done?(1!==c.status&&(c.status=3),c.cont(n.value)):h(n.value,o,l)}catch(e){if(1===c.status)throw e;c.status=2,c.cont(e,!0)}}function h(t,r,o,n){void 0===n&&(n="");var s,i=dt();function c(r,n){s||(s=!0,o.cancel=ce,e.sagaMonitor&&(n?e.sagaMonitor.effectRejected(i,r):e.sagaMonitor.effectResolved(i,r)),n&&function(e){ft=e}(t),o(r,n))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:i,parentEffectId:r,label:n,effect:t}),c.cancel=ce,o.cancel=function(){s||(s=!0,c.cancel(),c.cancel=ce,e.sagaMonitor&&e.sagaMonitor.effectCancelled(i))},a(t,i,c)}}function St(e,t){for(var r=e.channel,o=void 0===r?st():r,n=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?ge:u,h=arguments.length,m=new Array(h>2?h-2:0),p=2;p<h;p++)m[p-2]=arguments[p];var f,g=t.apply(void 0,m),v=dt();if(c&&(c.rootSagaStarted=c.rootSagaStarted||ce,c.effectTriggered=c.effectTriggered||ce,c.effectResolved=c.effectResolved||ce,c.effectRejected=c.effectRejected||ce,c.effectCancelled=c.effectCancelled||ce,c.actionDispatched=c.actionDispatched||ce,c.rootSagaStarted({effectId:v,saga:t,args:m})),d){var y=j.apply(void 0,d);f=function(e){return function(t,r,o){return y((function(t){return e(t,r,o)}))(t)}}}else f=de;var b={channel:o,dispatch:ye(n),getState:s,sagaMonitor:c,onError:l,finalizeRunEffect:f};return qe((function(){var e=_t(b,g,a,v,ke(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function wt(e){var t,r=void 0===e?{}:e,o=r.context,n=void 0===o?{}:o,s=r.channel,i=void 0===s?st():s,a=r.sagaMonitor,c=function(e,t){if(null==e)return{};var r,o,n={},s=Object.keys(e);for(o=0;o<s.length;o++)t.indexOf(r=s[o])>=0||(n[r]=e[r]);return n}(r,["context","channel","sagaMonitor"]);function d(e){return t=St.bind(null,G({},c,{context:n,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){ue(n,e)},d}var kt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function o(){}function n(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,o,s,i){if("function"!=typeof o)throw new TypeError("The listener must be a function");var a=new n(o,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 o:delete e._events[t]}function a(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,o,n=[];if(0===this._eventsCount)return n;for(o in e=this._events)t.call(e,o)&&n.push(r?o.slice(1):o);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var o=0,n=t.length,s=new Array(n);o<n;o++)s[o]=t[o].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,o,n,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,o),!0;case 4:return u.fn.call(u.context,t,o,n),!0;case 5:return u.fn.call(u.context,t,o,n,s),!0;case 6:return u.fn.call(u.context,t,o,n,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,m=u.length;for(d=0;d<m;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,o);break;case 4:u[d].fn.call(u[d].context,t,o,n);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,o,n){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||n&&!a.once||o&&a.context!==o||i(this,s);else{for(var c=0,d=[],u=a.length;c<u;c++)(a[c].fn!==t||n&&!a[c].once||o&&a[c].context!==o)&&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 o,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}(kt);var Et=kt.exports,Ct=Object.defineProperty,Tt=Object.defineProperties,It=Object.getOwnPropertyDescriptor,Mt=Object.getOwnPropertyDescriptors,Pt=Object.getOwnPropertyNames,Rt=Object.getOwnPropertySymbols,At=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,xt=(e,t,r)=>t in e?Ct(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,jt=(e,t)=>{for(var r in t||(t={}))At.call(t,r)&&xt(e,r,t[r]);if(Rt)for(var r of Rt(t))Ot.call(t,r)&&xt(e,r,t[r]);return e},Lt=(e,t)=>Tt(e,Mt(t)),Nt=(e,t)=>{var r={};for(var o in e)At.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&Rt)for(var o of Rt(e))t.indexOf(o)<0&&Ot.call(e,o)&&(r[o]=e[o]);return r},Dt=(e,t)=>{for(var r in t)Ct(e,r,{get:t[r],enumerable:!0})},Wt=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of Pt(t))At.call(e,n)||n===r||Ct(e,n,{get:()=>t[n],enumerable:!(o=It(t,n))||o.enumerable});return e},Vt=(e,t,r)=>(Wt(e,t,"default"),r&&Wt(r,t,"default")),Ut=(e,t,r)=>(xt(e,"symbol"!=typeof t?t+"":t,r),r),$t="__local__",Bt="__synthetic__",Ft=["room.started","room.ended"].map((e=>`video.${e}`)),qt=n.getLogger("signalwire"),zt=qt.methodFactory;qt.methodFactory=(e,t,r)=>{const o=zt(e,t,r);return function(...e){e.unshift((new Date).toISOString(),"-"),o.apply(void 0,e)}};var Ht,Jt=qt.getLevel();qt.setLevel(Jt);var Qt={},Gt=()=>null!=Ht?Ht:qt,Kt=({type:e,payload:t})=>{const r=Gt(),{logWsTraffic:o}=Qt||{};if(!o)return;const n=(e=>!("method"in e)||"signalwire.ping"!==e.method)(t)?JSON.stringify(t,null,2):t;return r.info(`${e.toUpperCase()}: \n`,n,"\n")},Xt=()=>{const e=Gt();return new Proxy(e,{get:(e,t,r)=>"wsTraffic"===t?Kt:Reflect.get(e,t,r)})},Yt=(e,t)=>{const{result:r={},error:o}=e;if(o)return{error:o};const{code:n,node_id:s,result:i=null}=r;return n&&"200"!==n?{error:r}:null===i?(t&&(r.node_id=t),{result:r}):i?i.jsonrpc?Yt(i,s):{result:i}:{result:r}},Zt={propsToUpdateValue:["updated","layers","members","recordings","playbacks"]},er=(e,t=Zt)=>(null==e?void 0:e.__sw_symbol)||(null==e?void 0:e.__sw_proxy)?e:Object.entries(e).reduce(((e,[r,o])=>{const n=tr(r);return e[n]="object"==typeof o&&o?Array.isArray(o)?t.propsToUpdateValue.includes(r)?o.map((e=>"string"==typeof e?tr(e):er(e))):o:er(o):(e=>e.endsWith("At"))(n)?(e=>{if(void 0===e)return e;const t=new Date(1e3*e);return isNaN(t.getTime())?e:t})(o):o,e}),{}),tr=e=>e.includes("_")?e.split("_").reduce(((e,t,r)=>{const o=t.trim().charAt(0),n=t.substr(1).toLowerCase();return`${e}${0===r?o.toLowerCase():o.toUpperCase()}${n}`}),""):e,rr=/[A-Z]/g,or=({event:e,namespace:t})=>("string"==typeof e&&(e=(e=>e.replace(rr,(e=>`_${e.toLowerCase()}`)))(e=nr({event:e,namespace:t}))),e),nr=({namespace:e,event:t})=>!e||t.startsWith(e)?t:`${e}:${t}`,sr=(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),ir=({instance:e,transform:t,payload:r,transformedPayload:o})=>(({instance:e,proxiedObj:t,payload:r,transformedPayload:o,transform:n})=>{const s=jt(Lt(jt({},o),{_eventsNamespace:n.getInstanceEventNamespace?n.getInstanceEventNamespace(r):void 0,eventChannel:n.getInstanceEventChannel?n.getInstanceEventChannel(r):void 0}),(e=>{let t={},r=e,o=!0;for(;o;)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):o=!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,n,s)=>"__sw_proxy"===n||("toString"===n?(({property:e,payload:t})=>"function"==typeof e?()=>JSON.stringify(t):e)({property:e[n],payload:o}):"_eventsNamespace"===n&&t.getInstanceEventNamespace?t.getInstanceEventNamespace(r):"eventChannel"===n&&t.getInstanceEventChannel?t.getInstanceEventChannel(r):n in o?o[n]:Reflect.get(e,n,s))}),payload:r,transformedPayload:o,transform:t}),ar=new Map,cr=/^(ws|wss):\/\//,dr=(e,t,r)=>{let o=null;return Promise.race([e,new Promise(((e,n)=>o=setTimeout(n,t,r)))]).finally((()=>clearTimeout(o)))},ur=e=>e.includes("session."),lr=["video.member.updated","video.member.talking"],hr=["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"],mr=e=>{const t=e.map((e=>{if("string"==typeof e){const t=(e=>{const t=e.split(":");return t[t.length-1]})(e);return hr.includes(t)||(e=>e.includes(Bt))(t)||pr(t)||ur(t)?null:lr.find((e=>t.startsWith(e)))||t}return e}));return Array.from(new Set(t)).filter(Boolean)},pr=e=>e.includes($t),fr=e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push($t),e)),[]).join(".")},gr=e=>{var t;return jt({jsonrpc:"2.0",id:null!=(t=e.id)?t:_()},e)},vr=e=>jt({jsonrpc:"2.0"},e),yr={major:3,minor:0,revision:0},br=e=>gr({method:"signalwire.connect",params:jt({version:yr},e)}),_r={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},Sr=e=>{if(e.hasOwnProperty("dialogParams")){const t=Nt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in _r)e&&t.hasOwnProperty(e)&&(t[_r[e]]=t[e],delete t[e]);e.dialogParams=t}return e},wr=e=>(t={})=>gr({method:e,params:Sr(t)}),kr=wr("verto.invite"),Er=wr("verto.bye"),Cr=wr("verto.modify"),Tr=wr("verto.info"),Ir=wr("verto.pong"),Mr=(e,t)=>vr({id:e,result:{method:t}}),Pr={};Dt(Pr,{authErrorAction:()=>Vr,authExpiringAction:()=>$r,authSuccessAction:()=>Ur,closeConnectionAction:()=>Nr,compoundEventAttachAction:()=>Zr,createAction:()=>Ar,destroyAction:()=>Lr,executeAction:()=>Wr,getCustomSagaActionType:()=>Yr,initAction:()=>jr,makeCustomSagaAction:()=>Xr,reauthAction:()=>Dr,sessionAuthErrorAction:()=>Qr,sessionConnectedAction:()=>zr,sessionDisconnectedAction:()=>Hr,sessionExpiringAction:()=>Gr,sessionReconnectingAction:()=>Jr,socketClosedAction:()=>Br,socketErrorAction:()=>Fr,socketMessageAction:()=>qr});var Rr={};function Ar(e,t){function r(...r){if(t){let o=t(...r);if(!o)throw new Error("prepareAction did not return an object");return jt(jt({type:e,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>t.type===e,r}Dt(Rr,{configureStore:()=>xr,createAction:()=>Ar}),Vt(Rr,N);var Or="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?j:j.apply(null,arguments)};function xr(e){const t=function(){return[]},{reducer:r,middleware:o=t(),devTools:n=!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=O(r)}let c=o;"function"==typeof c&&(c=c(t));const d=L(...c);let u=j;n&&(u=Or(jt({trace:!1},"object"==typeof n&&n)));let l=[d];return Array.isArray(i)?l=[d,...i]:"function"==typeof i&&(l=i(l)),A(a,s,u(...l))}var jr=Ar("swSdk/init"),Lr=Ar("swSdk/destroy"),Nr=Ar("swSdk/closeConnection"),Dr=Ar("swSdk/reauth"),Wr=Ar("swSdk/executeRequest"),Vr=Ar("auth/error"),Ur=Ar("auth/success"),$r=Ar("auth/expiring"),Br=Ar("socket/closed"),Fr=Ar("socket/error"),qr=Ar("socket/message"),zr=Ar("session.connected"),Hr=Ar("session.disconnected"),Jr=Ar("session.reconnecting"),Qr=Ar("session.auth_error"),Gr=Ar("session.expiring"),Kr=(e,t)=>`${t.type}/${e}`,Xr=(e,t)=>Lt(jt({},t),{type:Kr(e,t)}),Yr=(e,t)=>Kr(e,t),Zr=Ar("compound_event:attach");function eo(e){const t={},r=[];let o;const n={addCase(e,r){const o="string"==typeof e?e:e.type;if(o in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[o]=r,n},addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),n),addDefaultCase:e=>(o=e,n)};return e(n),[t,r,o]}var to=({name:e="",initialState:t,reducers:r,extraReducers:o})=>function(e){const{name:t}=e;if(!t)throw new Error("`name` is a required option for createSlice");const r=e.initialState,o=e.reducers||{},n=Object.keys(o),s={},i={},a={};function c(){const[t={},o=[],n]="function"==typeof e.extraReducers?eo(e.extraReducers):[e.extraReducers],s=jt(jt({},t),i);return function(e,t,r=[],o){let n,[s,i,a]="function"==typeof t?eo(t):[t,r,o];function c(e=n(),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 n="function"==typeof e?()=>e():()=>e,c.getInitialState=n,c}(r,s,o,n)}let d;return n.forEach((e=>{const r=o[e],n=`${t}/${e}`;let c,d;"reducer"in r?(c=r.reducer,d=r.prepare):c=r,s[e]=c,i[n]=c,a[e]=d?Ar(n,d):Ar(n)})),{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(Lr.type,(()=>t)),"function"==typeof o&&o(e)}});function ro(e){return[jr.type,Dr.type].includes(e.type)}var oo=to({name:"session",initialState:{protocol:"",iceServers:[],authStatus:"unknown",authState:void 0,authError:void 0,authCount:0},reducers:{connected:(e,{payload:t})=>{var r,o;return Lt(jt({},e),{authStatus:"authorized",authState:null==t?void 0:t.authorization,authCount:e.authCount+1,protocol:null!=(r=null==t?void 0:t.protocol)?r:"",iceServers:null!=(o=null==t?void 0:t.ice_servers)?o:[]})},authStatus:(e,{payload:t})=>Lt(jt({},e),{authStatus:t}),updateAuthState:(e,{payload:t})=>Lt(jt({},e),{authState:t})},extraReducers:e=>{e.addCase(Vr.type,((e,{payload:t})=>Lt(jt({},e),{authStatus:"unauthorized",authError:t.error}))),e.addMatcher(ro,(e=>Lt(jt({},e),{authStatus:"authorizing"})))}}),{actions:no,reducer:so}=oo,io=Symbol("BaseSession"),ao=class{constructor(e){var t,r;this.options=e,Ut(this,"__sw_symbol",io),Ut(this,"uuid",_()),Ut(this,"WebSocketConstructor"),Ut(this,"agent"),Ut(this,"connectVersion",yr),Ut(this,"_rpcConnectResult"),Ut(this,"_requests",new Map),Ut(this,"_socket",null),Ut(this,"_host","wss://relay.signalwire.com"),Ut(this,"_executeTimeoutMs",1e4),Ut(this,"_executeTimeoutError",Symbol.for("sw-execute-timeout")),Ut(this,"_checkPingDelay",15e3),Ut(this,"_checkPingTimer",null),Ut(this,"_status","unknown");const{host:o,logLevel:n="info"}=e;o&&(this._host=(e=>`${cr.test(e)?"":"wss://"}${e}`)(o)),n&&(null==(r=(t=this.logger).setLevel)||r.call(t,n)),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 Xt()}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}get idle(){return"idle"===this._status}get ready(){return!Boolean(this.idle||!this.connected)}set token(e){this.options.token=e}connect(){if(!(null==this?void 0:this.WebSocketConstructor))return void this.logger.error("Missing WebSocketConstructor");if(this._socket)return void this.logger.warn("Session already connected.");this._socket=this._createSocket();const e=t=>{var r;null==(r=this._socket)||r.removeEventListener("open",e),this._onSocketOpen(t)};this._socket.addEventListener("open",e);const t=e=>{var r;null==(r=this._socket)||r.removeEventListener("close",t),this._onSocketClose(e)};this._socket.addEventListener("close",t);const r=e=>{var t;null==(t=this._socket)||t.removeEventListener("error",r),this._onSocketError(e)};this._socket.addEventListener("error",r),this._socket.removeEventListener("message",this._onSocketMessage),this._socket.addEventListener("message",this._onSocketMessage)}_createSocket(){return new this.WebSocketConstructor(this._host)}async disconnect(){this._socket&&!this.closing?(clearTimeout(this._checkPingTimer),this._requests.clear(),this._closeConnection("disconnected")):this.logger.debug("Session not connected or already in closing state.")}execute(e){if(!this.ready)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)),dr(t,this._executeTimeoutMs,this._executeTimeoutError).catch((t=>{if(t!==this._executeTimeoutError)throw t;if(this.logger.error("Request Timeout",e),"disconnected"===this.status)return this.logger.debug("Request failed because the session is disconnected",this.status,this._socket);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(br(t))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Ur())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Vr({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(Fr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=1e3==e.code||1002==e.code?"disconnected":"reconnecting",this.dispatch(Br()),this._socket=null}_onSocketMessage(e){const t=this.decode(e.data);if(this.logger.wsTraffic({type:"recv",payload:t}),(e=>!(e=>Boolean(e.method))(e))(t)){const e=this._requests.get(t.id);if(e){const{rpcRequest:r,resolve:o,reject:n}=e;this._requests.delete(t.id);const{result:s,error:i}=(({response:e,request:t})=>{const{result:r={},error:o}=e;if(o)return{error:o};switch(t.method){case"signalwire.connect":return{result:r};default:return Yt(e)}})({response:t,request:r});return i?n(i):o(s)}return this.logger.warn("Unknown request for",t)}switch(t.method){case"signalwire.ping":return this._pingHandler(t);case"signalwire.disconnect":this.execute((r=t.id,vr({id:r,result:{}}))).catch((e=>{this.logger.error("SwDisconnect Error",e)})).finally((()=>{this._status="idle"}));break;default:this.dispatch(qr(t)),this._handleWebSocketMessage(t)}var r}_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(e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch(t){return e}})(e)}async _pingHandler(e){var t,r,o;clearTimeout(this._checkPingTimer),this._checkPingTimer=setTimeout((()=>{this._closeConnection("reconnecting")}),this._checkPingDelay),await this.execute((r=e.id,o=null==(t=null==e?void 0:e.params)?void 0:t.timestamp,vr({id:r,result:{timestamp:o||Date.now()/1e3}})))}_closeConnection(e){this._status=e,this.dispatch(no.authStatus("disconnected"===e?"unauthorized":"unknown")),this.dispatch(Nr()),this._socket&&(this._socket.close(),this._socket=null)}},co=class extends ao{constructor(e){super(e),this.options=e,Ut(this,"_expiredDiffSeconds",0),Ut(this,"_refreshTokenNotificationDiff",120),Ut(this,"_checkTokenExpirationDelay",2e4),Ut(this,"_checkTokenExpirationTimer",null),this._checkTokenExpiration=this._checkTokenExpiration.bind(this),this.reauthenticate=this.reauthenticate.bind(this)}get expiresAt(){var e,t,r;const o=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 o){const e=Date.parse(o);if(!isNaN(e))return Math.floor(e/1e3)}return o}get expiresIn(){const e=Math.floor(Date.now()/1e3);return this.expiresAt-e}get expired(){return this.expiresAt>0&&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{const t=await this.retrieveRelayProtocol();t&&(e.protocol=t)}this._rpcConnectResult=await this.execute(br(e)),await this.persistRelayProtocol(),this._checkTokenExpiration()}async retrieveRelayProtocol(){return""}async persistRelayProtocol(){}async reauthenticate(){if(this.logger.debug("Session Reauthenticate",{ready:this.ready,expired:this.expired}),!this.ready||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,gr({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($r()),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)))}},uo={};Dt(uo,{authErrorAction:()=>Vr,authExpiringAction:()=>$r,authSuccessAction:()=>Ur,closeConnectionAction:()=>Nr,compoundEventAttachAction:()=>Zr,configureStore:()=>Go,connect:()=>Qo,createAction:()=>Ar,createCatchableSaga:()=>wo,createRestartableSaga:()=>_o,destroyAction:()=>Lr,eventChannel:()=>ot,executeAction:()=>Wr,getCustomSagaActionType:()=>Yr,initAction:()=>jr,makeCustomSagaAction:()=>Xr,reauthAction:()=>Dr,sessionAuthErrorAction:()=>Qr,sessionConnectedAction:()=>zr,sessionDisconnectedAction:()=>Hr,sessionExpiringAction:()=>Gr,sessionReconnectingAction:()=>Jr,socketClosedAction:()=>Br,socketErrorAction:()=>Fr,socketMessageAction:()=>qr});var lo=({state:e,payload:t,componentId:r,key:o,requestId:n})=>Lt(jt({},e),r in e.byId?{byId:Lt(jt({},e.byId),{[r]:Lt(jt({},e.byId[r]),{[o]:Lt(jt({},e.byId[r][o]),{[n]:t})})})}:{byId:Lt(jt({},e.byId),{[r]:{id:r,[o]:{[n]:t}}})}),ho=to({name:"components",initialState:{byId:{}},reducers:{upsert:(e,{payload:t})=>Lt(jt({},e),t.id in e.byId?{byId:Lt(jt({},e.byId),{[t.id]:jt(jt({},e.byId[t.id]),t)})}:{byId:Lt(jt({},e.byId),{[t.id]:t})}),executeSuccess:(e,{payload:t})=>{const{componentId:r,requestId:o,response:n}=t;return lo({componentId:r,requestId:o,state:e,key:"responses",payload:n})},executeFailure:(e,{payload:t})=>{const{componentId:r,requestId:o,error:n,action:s}=t;return lo({componentId:r,requestId:o,state:e,key:"errors",payload:{action:s,jsonrpc:n}})},cleanup:(e,{payload:t})=>Lt(jt({},e),{byId:Object.entries(e.byId).reduce(((e,[r,o])=>(t.ids.includes(r)||(e[r]=o),e)),{})})}}),{actions:mo,reducer:po}=ho,fo={queue:[]},go=to({name:"executeQueue",initialState:fo,reducers:{add:(e,{payload:t})=>Lt(jt({},e),{queue:e.queue.concat(t)}),clean:()=>fo}}),{actions:vo,reducer:yo}=go,bo=(0,Rr.combineReducers)({components:po,session:so,executeQueue:yo});Dt({},{createCatchableSaga:()=>wo,createRestartableSaga:()=>_o,eventChannel:()=>ot});var _o=e=>function*(){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];Ae(Ne.apply(void 0,[e].concat(r)))}((function*(){for(;;)try{Xt().debug("Run a restartable saga"),yield Le(e),Xt().debug("One of the restartable saga has ended. Restarting..")}catch(e){Xt().error("Restartable Saga Error",e)}}))},So=e=>Xt().error("Catchable Saga Error",e),wo=(e,t=So)=>function*(...r){try{yield Le(e,...r)}catch(e){t(e)}},ko={};Dt(ko,{getAuthError:()=>Io,getAuthState:()=>Mo,getAuthStatus:()=>To,getIceServers:()=>Eo,getSession:()=>Co});var Eo=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},Co=e=>e.session,To=({session:e})=>e.authStatus,Io=({session:e})=>e.authError,Mo=({session:e})=>e.authState;function*Po(e){function*t(t){if("authorized"!==(yield De(To)))return;const{componentId:r,requestId:o,method:n,params:s}=t.payload;try{const i=(({method:e,params:t})=>gr({method:e,params:t}))({id:o,method:n,params:s}),a=yield Le(e.execute,i);r&&o&&(yield xe(mo.executeSuccess({componentId:r,requestId:o,response:a})))}catch(e){Xt().warn("worker error",r,JSON.stringify(e)),r&&o&&(yield xe(mo.executeFailure({componentId:r,requestId:o,action:t,error:e})))}finally{if((yield We())&&r&&o){const e={jsonrpc:"2.0",id:o,error:{code:-32600,message:"Cancelled task"}};Xt().debug("executeActionWorker cancelled",{requestId:o,componentId:r,error:e}),yield xe(mo.executeFailure({componentId:r,requestId:o,action:t,error:e}))}}}for(;;){const e=yield Oe(Wr.type);yield Ne(t,e)}}function*Ro({sessionChannel:e,pubSubChannel:t,swEventChannel:r}){function*o(e){switch(e.event_type){case"video.room.audience_count":return void(yield xe(t,{type:"video.room.audienceCount",payload:e.params}));case"video.member.updated":return;case"video.member.talking":{const{member:r}=e.params;if("talking"in r){const o=r.talking?"started":"ended";yield xe(t,{type:`video.member.talking.${o}`,payload:e.params});const n=r.talking?"start":"stop";yield xe(t,{type:`video.member.talking.${n}`,payload:e.params})}break}}yield xe(t,{type:e.event_type,payload:e.params})}function*n(e){yield xe(r,(e=>{const{event_type:t,params:r,node_id:o}=e;if("queuing.relay.tasks"===t)return{type:t,payload:e};if("webrtc.message"===t&&(null==r?void 0:r.jsonrpc)){const e=r;return e.params&&(e.params.nodeId=o),{type:t,payload:e}}return{type:t,payload:r}})(e)),(e=>"webrtc.message"===(null==e?void 0:e.event_type))(e)||((e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("video."))})(e)?yield Ne(o,e):yield xe({type:e.event_type,payload:e}))}const s=wo((function*(e){if(e.type!==qr.type)return void(yield xe(e));const{method:t,params:r}=e.payload;switch(t){case"signalwire.event":yield Ne(n,r);break;default:return Xt().debug(`Unknown message: ${t}`,e)}}),(e=>{Xt().error("Channel Error",e)}));for(;;)try{for(;;){const t=yield Oe(e);yield Ne(s,t)}}catch(e){Xt().error("sessionChannelWorker error:",e)}finally{Xt().debug("sessionChannelWorker finally")}}function Ao(e){return ot((t=>(e.dispatch=e=>{Xt().debug("[session.dispatch]",e),t(e)},()=>{Xt().debug("sessionChannel unsubscribe"),e.disconnect()})))}var Oo=e=>{var t;return 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=>e.type.startsWith("video.stream."))(e)||(e=>"video.room.audience_count"===e.type||"video.room.audienceCount"===e.type)(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)&&null!=(t=e.payload.tag)?t:""};function*xo({pubSubChannel:e,emitter:t}){Xt().debug("pubSubSaga [started]");try{for(;;){const r=yield Oe(e,"*"),{type:o,payload:n}=r;try{const e=Oo(r);Ft.includes(o)&&t.emit(o,n),Xt().trace("Emit:",or({namespace:e,event:o})),t.emit(or({namespace:e,event:o}),n)}catch(e){Xt().error(e)}}}finally{(yield We())&&Xt().debug("pubSubSaga [cancelled]")}}var jo=({executeQueue:e})=>e;function*Lo(){function*e(e){"authorized"!==(yield De(To))&&(yield xe(vo.add(e.payload)))}for(;;){const t=yield Oe(Wr.type);yield Ne(e,t)}}function*No(){const{queue:e}=yield De(jo);for(const t of e)yield xe(Wr(t));yield xe(vo.clean())}var Do=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Ut(this,"name","AuthError"),Object.setPrototypeOf(this,Do.prototype)}};function*Wo({SessionConstructor:e,userOptions:t,channels:r}){var o;const n=new e(t),s=yield Le(Ao,n),i=r.pubSubChannel,a=r.swEventChannel;let c=[];if(null==(o=t.workers)?void 0:o.length)try{const e=t.workers.map((e=>Le(_o(e))));c=yield function(e){var t=Re("ALL",e);return t.combinator=!0,t}(e)}catch(e){Xt().error("Error running custom workers",e)}yield Ne(Ro,{sessionChannel:s,pubSubChannel:i,swEventChannel:a});const d=yield Ne(xo,{pubSubChannel:i,emitter:t.emitter}),u=yield Ne($o,{session:n,sessionChannel:s,pubSubChannel:i,userOptions:t});n.connect(),yield Oe(Lr.type),d.cancel(),u.cancel(),s.close(),c.forEach((e=>e.cancel()))}function*Vo({session:e,pubSubChannel:t}){Xt().debug("socketClosedWorker",e.status),"reconnecting"===e.status?(yield xe(t,Jr()),yield Ve(2e3*Math.random()),yield Le(e.connect)):"disconnected"===e.status?(yield xe(t,Hr()),yield xe(Lr())):Xt().warn("Unhandled Session Status",e.status)}function*Uo({session:e,token:t,pubSubChannel:r}){try{e.reauthenticate&&(e.token=t,yield Le(e.reauthenticate),yield xe(no.connected(e.rpcConnectResult)),yield xe(r,zr()))}catch(e){Xt().error("Reauthenticate Error",e),yield xe(Vr({error:e}))}}function*$o(e){let t;Xt().debug("sessionStatusWatcher [started]");try{for(;;){const o=yield Oe([Ur.type,Vr.type,$r.type,Fr.type,Br.type,Dr.type]);switch(Xt().debug("sessionStatusWatcher",o.type,o.payload),o.type){case Ur.type:t&&(yield(r=t,void 0===r&&(r=q),Re("CANCEL",r))),t=yield Ne(Bo,e);break;case Vr.type:yield Ne(Fo,Lt(jt({},e),{action:o}));break;case $r.type:yield xe(e.pubSubChannel,Gr());break;case Fr.type:break;case Br.type:yield Ne(Vo,e);break;case Dr.type:yield Ne(Uo,{session:e.session,token:o.payload.token,pubSubChannel:e.pubSubChannel})}}}finally{(yield We())&&Xt().debug("sessionStatusWatcher [cancelled]")}var r}function*Bo(e){Xt().debug("startSaga [started]");try{const{session:t,pubSubChannel:r}=e,o=yield Ne(Po,t);yield xe(no.connected(t.rpcConnectResult)),yield xe(r,zr());const n=yield Ne(No);yield Oe(Nr.type),o.cancel(),n.cancel()}finally{(yield We())&&Xt().debug("startSaga [cancelled]")}}function*Fo(e){Xt().debug("sessionAuthErrorSaga [started]");try{const{pubSubChannel:t,session:r,action:o}=e,{error:n}=o.payload,s=n?new Do(n.code,n.message):new Error("Unauthorized");yield xe(t,Qr(s)),yield Le([r,r.disconnect])}finally{(yield We())&&Xt().debug("sessionAuthErrorSaga [cancelled]")}}var qo={};Dt(qo,{getComponent:()=>zo,getComponentsById:()=>Ho,getComponentsToCleanup:()=>Jo});var zo=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},Ho=({components:e})=>e.byId,Jo=e=>{const t=Ho(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r},Qo=e=>{const{componentListeners:t={},sessionListeners:r={},store:o,Component:n,customSagas:s=[]}=e,i=Object.keys(t),a=Object.keys(r);return e=>{const c=new n(Lt(jt({},e),{store:o})),d=new Map;let u=!0;const l=o.subscribe((()=>{const e=o.getState(),n=zo(e,c.__uuid)||{};for(const e of i){if(!1===u)return;const r=`${c.__uuid}.${e}`,o=d.get(r),s=n[e];if(void 0!==s&&o!==s){d.set(r,s);const o=t[e];"string"==typeof o?c[o](n):o(n)}}const s=Co(e);for(const e of a){if(!1===u)return;const t=`session.${e}`,o=d.get(t),n=s[e];if(void 0!==n&&o!==n){d.set(t,n);const o=r[e];"string"==typeof o?c[o](s):"function"==typeof o&&o(s)}}})),h=null==s?void 0:s.map((e=>o.runSaga(e,{instance:c,runSaga:o.runSaga})));return c.destroyer=()=>{u=!1,l(),d.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Vt(uo,Rr);var Go=e=>{var t;const{userOptions:r,SessionConstructor:o,preloadedState:n={},runSagaMiddleware:s=!0}=e,i=wt(),a={pubSubChannel:nt(),swEventChannel:nt()},c=xr({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:bo,preloadedState:n,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){var o;for(t.logger&&(Ht=t.logger),t.debug&&(e=>{null!=e?Object.assign(Qt,e):Qt={}})(t.debug),yield Ne(Lo);;){const n=yield Oe([jr.type,Dr.type]);(null==(o=null==n?void 0:n.payload)?void 0:o.token)&&(t.token=n.payload.token);try{yield Le(Wo,Lt(jt({},e),{userOptions:t,channels:r}))}catch(e){Xt().error("RootSaga Error:",e)}finally{(yield We())&&Xt().debug("rootSaga [cancelled]"),Xt().debug("Reboot rootSaga")}}})({SessionConstructor:o});i.run(e,{userOptions:r,channels:a})}return Lt(jt({},c),{runSaga:(e,t)=>i.run(e,Lt(jt({},t),{channels:a}))})},Ko=e=>e,Xo=Symbol("BaseComponent"),Yo=class{constructor(e){this.options=e,Ut(this,"__sw_symbol",Xo),Ut(this,"uuid",_()),Ut(this,"_proxyFactoryCache",new WeakMap),Ut(this,"_eventsPrefix",""),Ut(this,"_eventsRegisterQueue",new Set),Ut(this,"_eventsEmitQueue",new Set),Ut(this,"_eventsNamespace"),Ut(this,"_eventsTransformsCache",new Map),Ut(this,"_requests",new Map),Ut(this,"_customSagaTriggers",new Map),Ut(this,"_destroyer"),Ut(this,"_emitterTransforms",new Map),Ut(this,"_emitterListenersCache",new Map),Ut(this,"_trackedEvents",[]),Ut(this,"_runningWorkers",[]),Ut(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(Zr({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&&pr(e)&&(t=this.__uuid),or({event:e,namespace:t})}_getPrefixedEvent(e){return!this._eventsPrefix||"string"!=typeof e||e.includes(`${this._eventsPrefix}.`)||ur(e)?e:`${this._eventsPrefix}.${e}`}_getInternalEvent(e){return this._getNamespacedEvent(this._getPrefixedEvent(e))}get logger(){return Xt()}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("no-cache"===t.mode)return t.instanceFactory(r);if(!this._eventsTransformsCache.has(e)){const o=t.instanceFactory(r);return this._eventsTransformsCache.set(e,o),o}return this._eventsTransformsCache.get(e)}cleanupEventHandlerTransformCache({internalEvent:e,force:t}){const r=this._eventsTransformsCache.get(e),o=this.listenerCount(e);return r&&(t||o<=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 o=r.get(t);return r.delete(t),this._emitterListenersCache.set(e,r),o}return t}_createStableEventHandler(e,t){return r=>{const o=this._emitterTransforms.get(e);if(this.logger.trace("Got emitterTransform for",e,o),!o)return t(r);const n=this.runAndCacheEventHandlerTransform({internalEvent:e,transform:o,payload:r});let s;if(this._proxyFactoryCache.has(r))s=this._proxyFactoryCache.get(r);else{const e=this._parseNestedFields(r,o);s=ir({instance:n,payload:r,transformedPayload:e,transform:o}),this._proxyFactoryCache.set(r,s)}return t(s)}}_parseNestedFields(e,t,r=(e=>e),o){if(!t.nestedFieldsToProcess)return t.payloadTransform(e);if(e.__sw_proxy)return e;if(!o){const o=t.payloadTransform(e);return this._parseNestedFields(o,t,r,o)}return Array.isArray(e)?o=e.map(((o,n)=>this._parseNestedFields(r(o),t,r,e[n]))):e&&"object"==typeof e&&Object.entries(e).forEach((([e,n])=>{var s;const i=null==(s=t.nestedFieldsToProcess)?void 0:s[e],a=i?this._emitterTransforms.get(i.eventTransformType):void 0;o[e]=n&&"object"==typeof n?this._parseNestedFields(n,t,(e=>i&&a&&e&&"object"==typeof e?(({transform:e,payload:t})=>{const r=(({transform:e,payload:t})=>{if(!ar.has(e.type)){const r=e.instanceFactory(t);return ar.set(e.type,r),r}return ar.get(e.type)})({transform:e,payload:t}),o=e.payloadTransform(t);return ir({transform:e,payload:t,instance:r,transformedPayload:o})})({transform:a,payload:r(i.processInstancePayload(e))}):e),o[e]):r(n)})),o}getOrCreateStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);let o=r.get(t);return o||(o=this._createStableEventHandler(e,t),r.set(t,o),this._emitterListenersCache.set(e,r)),o}_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 o=this._getInternalEvent(e);this._trackEvent(o);const n=r?"once":"on";if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:n,params:[e,t]}),this.emitter;const s=this.getOrCreateStableEventHandler(o,t);return this.logger.trace("Registering event",o),this.emitter[n](o,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),o=this.getAndRemoveStableEventHandler(r,t);return this.cleanupEventHandlerTransformCache({internalEvent:r,force:!o}),this.logger.trace("Removing event listener",r),this._untrackEvent(r),this.emitter.off(r,o)}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 mr(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=Ko,transformResolve:o=Ko,transformReject:n=Ko}={transformParams:Ko,transformResolve:Ko,transformReject:Ko}){return new Promise(((s,i)=>{const a=_();this._requests.set(a,{resolve:s,reject:i,transformResolve:o,transformReject:n}),this.store.dispatch(Wr({requestId:a,componentId:this.__uuid,method:e,params:r(t)}))}))}triggerCustomSaga(e){return new Promise(((t,r)=>{const o=_();this._customSagaTriggers.set(o,{resolve:t,reject:r}),this.store.dispatch(jt({dispatchId:o},Xr(this.__uuid,e)))}))}settleCustomSagaTrigger({dispatchId:e,payload:t,kind:r}){const o=this._customSagaTriggers.get(e);o&&(o[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 To(this.store.getState())}get _sessionAuthState(){return Mo(this.store.getState())}_waitUntilSessionAuthorized(){switch(To(this.store.getState())){case"authorized":return Promise.resolve(this);case"unknown":case"authorizing":return new Promise(((e,t)=>{const r=this.store.subscribe((()=>{const o=To(this.store.getState()),n=Io(this.store.getState());if("authorized"===o)e(this),r();else if("unauthorized"===o){const e=n?new Do(n.code,n.message):new Error("Unauthorized");t(e),r()}}))}));case"unauthorized":return Promise.reject(new Error("Unauthorized"))}}_setEmitterTransform({event:e,handler:t,local:r}){const o=this._getInternalEvent(e);(r?pr(e):!pr(e)&&this.eventNames().includes(o))&&this._emitterTransforms.set(o,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)}))}runWorker(e,t){this._workers.has(e)?Xt().warn(`[runWorker] Worker with name ${e} has already been registerd.`):this._setWorker(e,t),this._attachWorker(e,t)}_setWorker(e,t){this._workers.set(e,t)}_attachWorker(e,t){var r=t,{worker:o}=r,n=Nt(r,["worker"]);const s=this.store.runSaga(o,jt({instance:this,runSaga:this.store.runSaga},n));this._runningWorkers.push(s),this._workers.delete(e)}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},Zo=class extends Yo{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=To(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(jr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(Lr())}},en=class extends Yo{constructor(e){super(e),this.options=e,Ut(this,"subscribeMethod","signalwire.subscribe"),Ut(this,"subscribeParams",{}),Ut(this,"_latestExecuteParams"),this.applyEmitterTransforms({local:!0});const t=()=>{this._latestExecuteParams=void 0};super.on("session.connected",t),super.on("session.disconnected",t),super.on("session.reconnecting",t)}shouldExecuteSubscribe(e){return!this._latestExecuteParams||JSON.stringify(e)!==JSON.stringify(this._latestExecuteParams)}async subscribe(){await this._waitUntilSessionAuthorized();const e=this.getSubscriptions();if(0===e.length)return void this.logger.debug("`subscribe()` was called without any listeners attached.");const t={method:this.subscribeMethod,params:Lt(jt({},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(),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")}},tn={audio_muted:!0,video_muted:!0,deaf:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(tn).map((e=>`video.member.updated.${e}`));var rn=er(tn);Object.keys(rn).map((e=>`member.updated.${e}`));var on={};Dt(on,{RoomSessionPlaybackAPI:()=>Jn,RoomSessionRecordingAPI:()=>zn,RoomSessionStreamAPI:()=>Gn,audioMuteMember:()=>Tn,audioUnmuteMember:()=>In,createRoomSessionPlaybackObject:()=>Qn,createRoomSessionRecordingObject:()=>Hn,createRoomSessionStreamObject:()=>Kn,deafMember:()=>Rn,deleteMemberMeta:()=>qn,deleteMeta:()=>kn,demote:()=>Dn,getLayouts:()=>cn,getMemberMeta:()=>$n,getMembers:()=>dn,getMeta:()=>_n,getPlaybacks:()=>vn,getRecordings:()=>fn,getStreams:()=>En,hideVideoMuted:()=>hn,play:()=>yn,promote:()=>Nn,removeAllMembers:()=>Un,removeMember:()=>Vn,setDeaf:()=>On,setHideVideoMuted:()=>pn,setInputSensitivityMember:()=>Ln,setInputVolumeMember:()=>xn,setLayout:()=>un,setMemberMeta:()=>Bn,setMemberPosition:()=>Wn,setMeta:()=>Sn,setOutputVolumeMember:()=>jn,setPositions:()=>ln,showVideoMuted:()=>mn,startRecording:()=>gn,startStream:()=>Cn,undeafMember:()=>An,updateMemberMeta:()=>Fn,updateMeta:()=>wn,videoMuteMember:()=>Mn,videoUnmuteMember:()=>Pn});var nn=()=>{},sn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:jt({room_session_id:this.roomSessionId},r)},t)}}),an=(e,t={})=>({value:function(r={}){var o=r,{memberId:n}=o,s=Nt(o,["memberId"]);return this.execute({method:e,params:jt({room_session_id:this.roomSessionId,member_id:n||this.memberId},s)},t)}}),cn=sn("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),dn=sn("video.members.get",{transformResolve:e=>({members:e.members})}),un=sn("video.set_layout",{transformResolve:nn}),ln=sn("video.set_position",{transformResolve:nn}),hn=sn("video.hide_video_muted",{transformResolve:nn}),mn=sn("video.show_video_muted",{transformResolve:nn}),pn={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:nn})}},fn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.recording.list"),t);try{const e=await this.execute({method:"video.recording.list",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.recording.list"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.recording.list"),t),e}}))}},gn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.recording.start"),t);try{const e=await this.execute({method:"video.recording.start",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.recording.start"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.recording.start"),t),e}}))}},vn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.playback.list"),t);try{const e=await this.execute({method:"video.playback.list",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.playback.list"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.playback.list"),t),e}}))}},yn={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(fr("video.playback.start"),r);try{const t=await this.execute({method:"video.playback.start",params:jt({room_session_id:this.roomSessionId},e)});this.emit(fr("video.playback.start"),Lt(jt({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.playback.start"),r),e}}))}},bn=e=>sn(e,{transformResolve:nn,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:Nt(t,["room_session_id"])}}}),_n=sn("video.get_meta",{transformResolve:({meta:e})=>({meta:e})}),Sn=bn("video.set_meta"),wn=bn("video.update_meta"),kn={value:function(e){return this.execute({method:"video.delete_meta",params:{room_session_id:this.roomSessionId,keys:e}})}},En={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.stream.list"),t);try{const e=await this.execute({method:"video.stream.list",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.stream.list"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.stream.list"),t),e}}))}},Cn={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(fr("video.stream.start"),r);try{const t=await this.execute({method:"video.stream.start",params:jt({room_session_id:this.roomSessionId},e)});this.emit(fr("video.stream.start"),Lt(jt({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.stream.start"),r),e}}))}},Tn=an("video.member.audio_mute",{transformResolve:nn}),In=an("video.member.audio_unmute",{transformResolve:nn}),Mn=an("video.member.video_mute",{transformResolve:nn}),Pn=an("video.member.video_unmute",{transformResolve:nn}),Rn=an("video.member.deaf",{transformResolve:nn}),An=an("video.member.undeaf",{transformResolve:nn}),On={value:function(e){return this.execute({method:e?"video.member.deaf":"video.member.undeaf",params:{room_session_id:this.roomSessionId,member_id:this.memberId}},{transformResolve:nn})}},xn=an("video.member.set_input_volume",{transformResolve:nn}),jn=an("video.member.set_output_volume",{transformResolve:nn}),Ln=an("video.member.set_input_sensitivity",{transformResolve:nn}),Nn={value:function(e){var t=e,{memberId:r,mediaAllowed:o,joinAudioMuted:n,joinVideoMuted:s}=t,i=Nt(t,["memberId","mediaAllowed","joinAudioMuted","joinVideoMuted"]);return this.execute({method:"video.member.promote",params:jt({room_session_id:this.roomSessionId,member_id:r,media_allowed:o,join_audio_muted:n,join_video_muted:s},i)},{transformResolve:nn})}},Dn={value:function({memberId:e,mediaAllowed:t}){return this.execute({method:"video.member.demote",params:{room_session_id:this.roomSessionId,member_id:e,media_allowed:t}},{transformResolve:nn})}},Wn=an("video.member.set_position",{transformResolve:nn}),Vn={value:function(e){var t=e,{memberId:r}=t,o=Nt(t,["memberId"]);if(!r)throw new TypeError('Invalid or missing "memberId" argument');return this.execute({method:"video.member.remove",params:jt({room_session_id:this.roomSessionId,member_id:r},o)},{transformResolve:nn})}},Un={value:function(){return this.execute({method:"video.member.remove",params:{room_session_id:this.roomSessionId,member_id:"all"}},{transformResolve:nn})}},$n=an("video.member.get_meta",{transformResolve:({meta:e})=>({meta:e})}),Bn=an("video.member.set_meta",{transformResolve:nn}),Fn=an("video.member.update_meta",{transformResolve:nn}),qn=an("video.member.delete_meta",{transformResolve:nn}),zn=class extends Yo{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")}})}},Hn=e=>Qo({store:e.store,Component:zn,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Jn=class extends Yo{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}})}async seek(e){await this.execute({method:"video.playback.seek_absolute",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),position:Math.abs(e)}})}async forward(e=5e3){await this.execute({method:"video.playback.seek_relative",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),position:Math.abs(e)}})}async rewind(e=5e3){await this.execute({method:"video.playback.seek_relative",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),position:-Math.abs(e)}})}},Qn=e=>Qo({store:e.store,Component:Jn,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Gn=class extends Yo{async stop(){await this.execute({method:"video.stream.stop",params:{room_session_id:this.getStateProperty("roomSessionId"),stream_id:this.getStateProperty("id")}})}},Kn=e=>Qo({store:e.store,Component:Gn,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Xn={};Dt(Xn,{BaseChatAPI:()=>vs,BaseChatConsumer:()=>gs,ChatMember:()=>ms,ChatMessage:()=>ps,createBaseChatObject:()=>ys,getMemberState:()=>is,getMembers:()=>os,getMessages:()=>rs,publish:()=>ts,setMemberState:()=>ss});var Yn=()=>{},Zn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),es=(e,t={})=>({value:function(r={}){var o=r,{memberId:n}=o,s=Nt(o,["memberId"]);return this.execute({method:e,params:jt({member_id:n},s)},t)}}),ts=Zn("chat.publish",{transformResolve:Yn}),rs=Zn("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>er(e))),cursor:e.cursor})}),os=Zn("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>er(e)))})}),ns=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 Lt(jt({},e),{channels:t})},ss=es("chat.member.set_state",{transformResolve:Yn,transformParams:ns}),is=es("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:ns}),as={};Dt(as,{BasePubSubConsumer:()=>ls,PubSubMessage:()=>cs,createBasePubSubObject:()=>hs});var cs=class{constructor(e){this.payload=e}get id(){return this.payload.id}get channel(){return this.payload.channel}get content(){return this.payload.content}get meta(){return this.payload.meta}get publishedAt(){return this.payload.publishedAt}},ds=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Oe((e=>e.type.startsWith("chat.")));switch(t.type){case"chat.channel.message":yield xe(e,{type:"chat.message",payload:t.payload});break;default:Xt().debug("[pubSubWorker] Unrecognized Action",t)}}},us=e=>e.map((e=>({name:e}))),ls=class extends en{constructor(e){super(e),Ut(this,"_eventsPrefix","chat"),Ut(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.runWorker("pubSub",{worker:ds})}getEmitterTransforms(){return new Map([[["message"],{type:"pubSubMessage",instanceFactory:()=>new cs({}),payloadTransform:e=>{const{channel:t,message:r}=e.params,o=Nt(r,["member"]);return er(Lt(jt({},o),{channel:t}))}}]])}_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:us(r)}}_setSubscribeParams(e){this.subscribeParams=jt(jt({},this.subscribeParams),e)}_getSubscribeParams({channels:e}){return jt({},this._getChannelsParam(e,"subscribe"))}_getUnsubscribeParams({channels:e}){const t=this._getChannelsParam(e,"unsubscribe");return jt({},t)}_checkMissingSubscriptions(){0===this.getSubscriptions().length&&(this.logger.info("Subscribe was called before any listeners were attached. Move `.subscribe()` right after your event listeners to suppress this message."),this.once("message",(()=>{})))}async subscribe(e){this._checkMissingSubscriptions();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 o=this.getSubscriptions();if(o.length>0){const e={method:"chat.unsubscribe",params:Lt(jt({},t),{events:o})};try{await this.execute(e)}catch(e){return r(e)}}else this.logger.warn("`unsubscribe()` was called without any listeners attached.");return e()}))}updateToken(e){return new Promise(((t,r)=>{this.once("session.auth_error",(e=>{r(e)})),this.once("session.connected",(()=>{t()})),this.store.dispatch(Pr.reauthAction({token:e}))}))}publish(e){return this.execute({method:"chat.publish",params:e})}async getAllowedChannels(){await this._waitUntilSessionAuthorized();const e=this.select(Mo);return e&&"channels"in e&&e.channels?e.channels:{}}},hs=e=>Qo({store:e.store,Component:ls,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),ms=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:{}}},ps=class extends cs{get member(){return this.payload.member}},fs=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Oe((e=>e.type.startsWith("chat.")));switch(t.type){case"chat.channel.message":break;case"chat.member.joined":case"chat.member.updated":case"chat.member.left":yield xe(e,t);break;default:Xt().debug("[chatWorker] Unrecognized Action",t)}}},gs=class extends ls{constructor(e){super(e),Ut(this,"_eventsPrefix","chat"),Ut(this,"subscribeMethod","chat.subscribe"),this.runWorker("chat",{worker:fs})}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:()=>new ps({}),payloadTransform:e=>{const{channel:t,message:r}=e.params;return er(Lt(jt({},r),{channel:t}))}}],[["member.joined","member.left","member.updated"],{type:"chatMember",instanceFactory:e=>{const{member:t}=e.params;return new ms(er(t))},payloadTransform:e=>{const{member:t}=e.params;return er(t)}}]])}},vs=sr(gs,{publish:ts,getMembers:os,getMessages:rs,setMemberState:ss,getMemberState:is}),ys=e=>Qo({store:e.store,Component:vs,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),bs={};function*_s(e){const{action:t,memberList:r,channels:{pubSubChannel:o}}=e,n={};t.payload.layout.layers.forEach((e=>{var t;const o=e.member_id;if(!o)return;const s=r.get(o);s&&e.position!==(null==(t=s.member)?void 0:t.current_position)?(Es({memberList:r,memberId:o,currentPosition:e.position}),n[o]=!0):n[o]=!1}));for(const[e,t]of r)if(n[e])yield xe(o,{type:"video.member.updated",payload:t});else if(void 0===n[e]){const t=Es({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield xe(o,{type:"video.member.updated",payload:t})}}function*Ss({action:e,channels:t,memberList:r}){var o,n;const s=e.payload.member.id,i=Es({memberList:r,memberId:s,currentPosition:null==(n=null==(o=r.get(s))?void 0:o.member)?void 0:n.current_position});if(!i)return;const{member:{updated:a=[]}}=e.payload,c=Lt(jt({},i),{member:jt(jt({},i.member),e.payload.member)});r.set(s,c);for(const r of a){const o=`${e.type}.${r}`;yield xe(t.pubSubChannel,{type:o,payload:c})}yield xe(t.pubSubChannel,{type:e.type,payload:c})}Dt(bs,{MEMBER_POSITION_COMPOUND_EVENTS:()=>ws,memberPositionWorker:()=>ks,memberUpdatedWorker:()=>Ss});var ws=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),ks=function*({instance:e,channels:t,initialState:r}){if(!r)return;const{swEventChannel:o}=t;let n=Cs(r);const s=e=>{n.has(e.member.id)||n.set(e.member.id,e)};for(;;){const r=yield Oe(o,(t=>("video.member.updated"===t.type||"video.layout.changed"===t.type||"video.member.joined"===t.type||"video.member.left"===t.type)&&Oo(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":s(r.payload),yield Ne(Ss,{action:r,channels:t,memberList:n,instance:e});break;case"video.member.joined":s(r.payload);break;case"video.member.left":n.delete(r.payload.member.id);break;case"video.layout.changed":yield Ne(_s,{action:r,channels:t,memberList:n,instance:e})}}},Es=({memberList:e,memberId:t,currentPosition:r})=>{const o=e.get(t);if(!o)return;if(!r)return o;const n=Lt(jt({},o),{member:Lt(jt({},null==o?void 0:o.member),{current_position:r})});return e.set(t,n),n},Cs=e=>{const t=e.room_session.members,r=new Map;return t.forEach((t=>{r.set(t.id,{room_id:e.room_session.room_id,room_session_id:e.room_session.id,member:t})})),r};Dt({},{configureFullStack:()=>Rs,configureJestStore:()=>Ps,createMockedLogger:()=>Ms,createPubSubChannel:()=>xs,createSwEventChannel:()=>js,rpcConnectResultVRT:()=>Os,wait:()=>As});var Ts="8f0a119a-cda7-4497-a47d-c81493b824d4",Is="<VRT>",Ms=()=>({fatal:jest.fn(),error:jest.fn(),warn:jest.fn(),info:jest.fn(),debug:jest.fn(),trace:jest.fn(),wsTraffic:jest.fn()}),Ps=e=>Go(jt({userOptions:{project:Ts,token:Is,devTools:!1,emitter:new Et},SessionConstructor:ao,runSagaMiddleware:!1},e)),Rs=()=>{const e={dispatch:console.log,connect:jest.fn(),disconnect:jest.fn(),execute:jest.fn()},t=new Et,r=Go({userOptions:{project:Ts,token:Is,devTools:!1,emitter:t},SessionConstructor:jest.fn().mockImplementation((()=>e))});return r.dispatch(Pr.initAction()),r.dispatch(Pr.authSuccessAction()),{store:r,session:e,emitter:t,destroy:()=>r.dispatch(Pr.destroyAction())}},As=e=>new Promise((t=>{setTimeout(t,e)})),Os={identity:"f3bc99df-2c3d-4fa4-b1dc-e8a8ffc579e6@e3fefa44-1bad-4be9-ad9b-1cbb9abd60c7.west-us",authorization:{type:"video",project:"8f0a119a-cda7-4497-a47d-c81493b824d4",scopes:["video"],scope_id:"26675883-8499-4ee9-85eb-691c4aa209f8",resource:"9c80f1e8-9430-4070-a043-937eb3a96b38",join_as:"member",user_name:"Joe",room:{name:"lobby",display_name:"Lobby",scopes:["room.self.audio_mute","room.self.audio_unmute"],meta:{}},signature:"SGZtkRD9fvuBAOUp1UF56zESxdEvGT6qSGZtkRD9fvuBAOUp1UF56zESxdEvGT6q",media_allowed:"all",audio_allowed:"both",video_allowed:"both",meta:{}},protocol:"signalwire_SGZtkRD9fvuBAOUp1UF56zESxdEvGT6qSGZtkRD9fvuBAOUp1UF56zESxdEvGT6q_03e8c927-8ea3-4661-86d5-778c3e03296a_8f0a119a-cda7-4497-a47d-c81493b824d4",ice_servers:[{urls:"turn.swire.io:443",credential:"sFTwvi8ShXcYNOcyYjFy3ATIUpQ=",credentialType:"password",username:"1619521908:8f0a119a-cda7-4497-a47d-c81493b824d4"}]},xs=()=>nt(),js=()=>nt(),Ls=jt({},ko);const Ns=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,Ds=()=>{if(!Ns())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},Ws=()=>Ds().getSupportedConstraints(),Vs=e=>e&&e instanceof MediaStream,Us=()=>"sinkId"in HTMLMediaElement.prototype,$s=async(e,t)=>{if(null!==e)if("string"==typeof t)if(Us())try{return await e.setSinkId(t)}catch(e){throw"SecurityError"===e.name?Xt().error(`You need to use HTTPS for selecting audio output device: ${e}`):Xt().error(`Error: ${e}`),e}else Xt().warn("Browser does not support output device selection.");else Xt().warn(`Invalid speaker deviceId: '${t}'`);else Xt().warn("No HTMLMediaElement to attach the speakerId")},Bs=e=>{var t;Vs(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(Fs))},Fs=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},qs={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},zs=e=>{if(e)return qs[e]},Hs=()=>Ds().enumerateDevices(),Js=async e=>{let t=await Hs().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},Qs=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 Js(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Xt().warn(`No ${e} devices to check for permissions!`),null)})(zs(e))},Gs=()=>Qs("camera"),Ks=()=>Qs("microphone"),Xs=()=>Qs("speaker"),Ys=async(e={audio:!0,video:!0})=>{var t;try{const t=Ds().getUserMedia(e);if(await(async e=>{const t=[];return(null==e?void 0:e.audio)&&t.push(Ks()),(null==e?void 0:e.video)&&t.push(Gs()),!!t.length&&(await Promise.all(t)).every(Boolean)})(e)){const e=new Error("Timeout reading from your devices");return await dr(t,5e3,e)}return await t}catch(r){switch(r.name){case"Error":Xt().error(null!==(t=null==r?void 0:r.message)&&void 0!==t?t:"navigator.mediaDevices.getUserMedia doesn't seem to be supported.");break;case"NotFoundError":Xt().error("No media tracks of the type specified were found that satisfy the given constraints.");break;case"NotReadableError":Xt().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":Xt().error(`The constraint: ${r.constraint} cannot be met by the selected device.`),Xt().info("List of available constraints:",Ws());break;case"NotAllowedError":Xt().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?Xt().error('Constraints can\'t be empty nor have "video" and "audio" set to false.'):Xt().error("Please check that you are calling this method from a secure context (using HTTPS rather than HTTP).");break;case"SecurityError":Xt().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 r}},Zs=e=>Ds().getDisplayMedia(e),ei=async(e,t=!1)=>ri(e,t),ti=(e,t={})=>{const r=[];return e.filter((({deviceId:e,kind:o,groupId:n})=>{var s;if(!e||t.targets&&!(null===(s=t.targets)||void 0===s?void 0:s.includes(o)))return!1;if(!n)return!0;const i=`${o}-${n}`,a=!(null==t?void 0:t.excludeDefault)||"default"!==e;return!(r.includes(i)||!a||(r.push(i),0))}))},ri=async(e,t=!1)=>{let r;if(!1===await Qs(e)){const t={audio:!(o=e)||"all"===o||"microphone"===o||"speaker"===o,video:!o||"all"===o||"camera"===o};r=await Ys(t)}var o;const n=await Js(zs(e));return r&&Bs(r),!0===t?n:ti(n)},oi=async(e,t,r)=>{const o=await ri(r,!0);for(let r=0;r<o.length;r++){const{deviceId:n,label:s}=o[r];if(e===n||t===s)return n}return null},ni=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},si={camera:Gs,microphone:Ks,speaker:Xs},ii=["camera","microphone","speaker"],ai=`Allowed targets are: '${ii.join("', '")}'`,ci={speaker:Us},di=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:ii).filter((e=>!!ii.includes(e)||(Xt().warn(`We'll ignore the "${e}" target as it is not allowed. ${ai}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${ai}.`);const o=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>si[e]())))).reduce(((e,r,o)=>{var n;const s=t[o];return e[!(s in ci)||(null===(n=ci[s])||void 0===n?void 0:n.call(ci))?"supported":"unsupported"].push([s,!!r]),e}),{supported:[],unsupported:[]})})({targets:r});if(o.unsupported.length>0&&r.length===o.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(o.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 n=[];const s=o.supported.reduce(((e,[t,r])=>(r?e.push(t):n.push(t),e)),[]);if(s.length!==r.length){const e=o.unsupported.length>0?`The platform doesn't support "${o.unsupported.map((([e])=>e)).join(", ")}" as target/s, which means it's not possible to watch for changes on those devices. `:"",t=n.length>0?`The user hasn't granted permissions for the following targets: ${n.join(", ")}. `:"";Xt().warn(`${e}${t}We'll be watching for the following targets instead: "${s.join(", ")}"`)}return Xt().debug(`Watching these targets: "${s.join(", ")}"`),s})({targets:e.targets}),r=new Et,o=await Hs(),n=null==t?void 0:t.reduce(((e,t)=>{const r=zs(t);return r&&e.push(r),e}),[]);let s=ti(o,{excludeDefault:!0,targets:n});return Ds().addEventListener("devicechange",(async()=>{const e=await Hs(),t=s,o=ti(e,{excludeDefault:!0,targets:n});s=o;const i=((e,t)=>{const r=ni(e),o=ni(e),n=[];Xt().debug("[_getDeviceListDiff] <- oldDevices",e),Xt().debug("[_getDeviceListDiff] -> newDevices",t);const s=t.filter((e=>{const t=e.deviceId,s=r.get(t);return s&&(o.delete(t),e.label!==s.label&&n.push(e)),void 0===s}));return{updated:n.map((e=>({type:"updated",payload:e}))),removed:Array.from(o,(([e,t])=>t)).map((e=>({type:"removed",payload:e}))),added:s.map((e=>({type:"added",payload:e})))}})(t,o),a=i.added.length>0,c=i.removed.length>0,d=i.updated.length>0;(a||c||d)&&r.emit("changed",{changes:i,devices:o}),a&&r.emit("added",{changes:i.added,devices:o}),c&&r.emit("removed",{changes:i.removed,devices:o}),d&&r.emit("updated",{changes:i.updated,devices:o})})),r},ui=e=>"function"==typeof(null==e?void 0:e.getTracks),li=e=>{Xt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)return Ys(e)},hi=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:o=""}=e;if(r){const e=await oi(r,o,"microphone").catch((e=>null));e&&("boolean"==typeof t&&(t={}),t.deviceId={exact:e})}let{video:n=!1,camId:s}=e;const{camLabel:i=""}=e;if(s){const e=await oi(s,i,"camera").catch((e=>null));e&&("boolean"==typeof n&&(n={}),n.deviceId={exact:e})}return{audio:t,video:n}},mi=e=>/^m=audio/.test(e),pi=e=>/^m=video/.test(e),fi=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 o=(e=>{const t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),r=e.match(t);return r&&2==r.length?r[1]:null})(t[r]),n=new RegExp(`a=fmtp:${o}`),s=t.findIndex((e=>n.test(e)));return s>=0?/stereo=1;/.test(t[s])||(t[s]+="; stereo=1; sprop-stereo=1"):t[r]+=`\r\na=fmtp:${o} stereo=1; sprop-stereo=1`,t.join("\r\n")};class gi{constructor(e,t){this.call=e,this.type=t,this.uuid=_(),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 Xt()}get localStream(){return this._localStream}set localStream(e){this._localStream=e}get remoteStream(){return this._remoteStream}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;try{const r=this._getSenderByKind(e);if(!r)return this.logger.info(`There is not a '${e}' sender to stop.`);r.track&&(Fs(r.track),null===(t=this._localStream)||void 0===t||t.removeTrack(r.track))}catch(t){this.logger.error("RTCPeer stopTrackSender error",e,t)}}async restoreTrackSender(e){var t;try{const r=this._getSenderByKind(e);if(!r)return this.logger.info(`There is not a '${e}' sender to restore.`);if(r.track&&"ended"!==r.track.readyState)return this.logger.info(`There is already an active ${e} track.`);const o=await hi(this.options),n=await li({[e]:o[e]});if(n&&Vs(n)){const o=n.getTracks().find((t=>t.kind===e));o&&(await r.replaceTrack(o),null===(t=this._localStream)||void 0===t||t.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 o=Object.assign(Object.assign({},r.track.getConstraints()),t),n=this.getDeviceId(e);n&&!this.options.screenShare&&(o.deviceId={exact:n}),this.logger.info(`Apply ${e} constraints`,this.call.id,o),await r.track.applyConstraints(o)}}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=null===(t=this.instance)||void 0===t?void 0:t.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={voiceActivityDetection:!1};this._supportsAddTransceiver()||(e.offerToReceiveAudio=this.options.negotiateAudio,e.offerToReceiveVideo=this.options.negotiateVideo);const t=await this.instance.createOffer(e);await this._setLocalDescription(t)}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)}}onRemoteBye({code:e,message:t}){this._rejectStartMethod({code:e,message:t}),this.stop()}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._localStream=await this._retrieveLocalStream()}catch(e){return this._rejectStartMethod(e),this.call.setState("hangup")}this._setupRTCPeerConnection();let r=!1;if(this._localStream&&Vs(this._localStream)){const e=this._localStream.getAudioTracks();this.logger.debug("Local audio tracks: ",e);const t=this._localStream.getVideoTracks();if(this.logger.debug("Local video tracks: ",t),r=Boolean(e.length||t.length),this.isOffer&&"function"==typeof this.instance.addTransceiver){const r={direction:this.options.negotiateAudio?"sendrecv":"sendonly",streams:[this._localStream]};this.logger.debug("Applying audioTransceiverParams",r),e.forEach((e=>{this.instance.addTransceiver(e,r)}));const o={direction:this.options.negotiateVideo?"sendrecv":"sendonly",streams:[this._localStream]};if(this.isSimulcast&&(o.sendEncodings=["0","1","2"].map((e=>({active:!0,rid:e,scaleResolutionDownBy:6*Number(e)||1})))),this.logger.debug("Applying videoTransceiverParams",o),t.forEach((e=>{this.instance.addTransceiver(e,o)})),this.isSfu){const{msStreamsNumber:e=5}=this.options;this.logger.debug("Add ",e,"recvonly MS Streams"),o.direction="recvonly";for(let t=0;t<Number(e);t++)this.instance.addTransceiver("video",o)}}else if("function"==typeof this.instance.addTrack){const r=this._localStream;e.forEach((e=>this.instance.addTrack(e,r))),t.forEach((e=>this.instance.addTrack(e,r)))}else this.instance.addStream(this._localStream)}this.isOffer?(this.options.negotiateAudio&&this._checkMediaToNegotiate("audio"),this.options.negotiateVideo&&this._checkMediaToNegotiate("video"),this._supportsAddTransceiver()||r||this.startNegotiation()):this.startNegotiation()}))}detachAndStop(){var e;"function"==typeof(null===(e=this.instance)||void 0===e?void 0:e.getTransceivers)&&this.instance.getTransceivers().forEach((e=>{e.sender.track&&e.sender.track.stop(),e.receiver.track&&e.receiver.track.stop()})),this.stop()}stop(){var e,t,r;null===(e=this._localStream)||void 0===e||e.getTracks().forEach((e=>e.stop())),null===(t=this._remoteStream)||void 0===t||t.getTracks().forEach((e=>e.stop())),null===(r=this.instance)||void 0===r||r.close()}_supportsAddTransceiver(){return"function"==typeof this.instance.addTransceiver}_checkMediaToNegotiate(e){if(!this._getSenderByKind(e)&&this._supportsAddTransceiver()){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}=this.instance.localDescription;if(-1===e.indexOf("candidate"))return this.logger.debug("No candidate - retry \n"),void this.startNegotiation(!0);this.instance.removeEventListener("icecandidate",this._onIce);try{await this.call.onLocalSDPReady(this)}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:o,googleStartBitrate:n}=this.options;return e.sdp&&t&&(e.sdp=fi(e.sdp)),e.sdp&&r&&o&&n&&(e.sdp=((e,t,r,o)=>{const n=e.split("\r\n");return n.forEach(((e,s)=>{/^a=fmtp:\d*/.test(e)?n[s]+=`;x-google-max-bitrate=${t};x-google-min-bitrate=${r};x-google-start-bitrate=${o}`:/^a=mid:(1|video)/.test(e)&&(n[s]+=`\r\nb=AS:${t}`)})),n.join("\r\n")})(e.sdp,r,o,n)),this.instance.setLocalDescription(e)}_setRemoteDescription(e){e.sdp&&this.options.useStereo&&(e.sdp=fi(e.sdp)),e.sdp&&this.instance.localDescription&&(e.sdp=((e,t)=>{const r="\r\n",o=this.instance.localDescription.sdp.split(r);if(o.findIndex(mi)<o.findIndex(pi))return e;const n=e.split(r),s=n.findIndex(mi),i=n.findIndex(pi),a=n.slice(s,i),c=n.slice(i,n.length-1);return[...n.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(Vs(this.options.localStream))return this.options.localStream;const e=await hi(this.options);return li(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._remoteStream=e.streams[0]})),this.instance.addEventListener("addstream",(e=>{e.stream&&(this._remoteStream=e.stream)}))}}
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,o;r=t,o=function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),o=["trace","debug","info","warn","error"];function n(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(o){return"debug"===o&&(o="log"),typeof console!==t&&("trace"===o&&r?s:void 0!==console[o]?n(console,o):void 0!==console.log?n(console,"log"):e)}function a(t,r){for(var n=0;n<o.length;n++){var s=o[n];this[s]=n<t?e:this.methodFactory(s,t,r)}this.log=this.debug}function c(e,r,o){return function(){typeof console!==t&&(a.call(this,r,o),this[e].apply(this,arguments))}}function d(e,t,r){return i(e)||c.apply(this,arguments)}function u(e,r,n){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,o=r.indexOf(encodeURIComponent(c)+"=");-1!==o&&(e=/^([^;]+)/.exec(r.slice(o))[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=n||d,i.getLevel=function(){return s},i.setLevel=function(r,n){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!==n&&function(e){var r=(o[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 m=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=m),l},l.getLoggers=function(){return h},l.default=l,l},e.exports?e.exports=o():r.log=o()}(r);var o,n=r.exports,s=new Uint8Array(16);function i(){if(!o&&!(o="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 o(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){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}function h(e,t,r){function o(e,o,n,s){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),"string"==typeof o&&(o=function(e){if(!c(e))throw TypeError("Invalid UUID");var t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var i=new Uint8Array(16+e.length);if(i.set(o),i.set(e,o.length),(i=r(i))[6]=15&i[6]|t,i[8]=63&i[8]|128,n){s=s||0;for(var a=0;a<16;++a)n[s+a]=i[a];return n}return l(i)}try{o.name=e}catch(e){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}function m(e){return 14+(e+64>>>9<<4)+1}function p(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(e,t,r,o,n,s){return p((i=p(p(t,e),p(o,s)))<<(a=n)|i>>>32-a,r);var i,a}function g(e,t,r,o,n,s,i){return f(t&r|~t&o,e,t,n,s,i)}function v(e,t,r,o,n,s,i){return f(t&o|r&~o,e,t,n,s,i)}function y(e,t,r,o,n,s,i){return f(t^r^o,e,t,n,s,i)}function b(e,t,r,o,n,s,i){return f(r^(t|~o),e,t,n,s,i)}function _(e,t,r){var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){r=r||0;for(var n=0;n<16;++n)t[r+n]=o[n];return t}return l(o)}function S(e,t,r,o){switch(e){case 0:return t&r^~t&o;case 1:return t^r^o;case 2:return t&r^t&o^r&o;case 3:return t^r^o}}function w(e,t){return e<<t|e>>>32-t}function k(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function C(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(Object(r),!0).forEach((function(t){k(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function T(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. "}h("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){for(var t=[],r=32*e.length,o="0123456789abcdef",n=0;n<r;n+=8){var s=e[n>>5]>>>n%32&255,i=parseInt(o.charAt(s>>>4&15)+o.charAt(15&s),16);t.push(i)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[m(t)-1]=t;for(var r=1732584193,o=-271733879,n=-1732584194,s=271733878,i=0;i<e.length;i+=16){var a=r,c=o,d=n,u=s;r=g(r,o,n,s,e[i],7,-680876936),s=g(s,r,o,n,e[i+1],12,-389564586),n=g(n,s,r,o,e[i+2],17,606105819),o=g(o,n,s,r,e[i+3],22,-1044525330),r=g(r,o,n,s,e[i+4],7,-176418897),s=g(s,r,o,n,e[i+5],12,1200080426),n=g(n,s,r,o,e[i+6],17,-1473231341),o=g(o,n,s,r,e[i+7],22,-45705983),r=g(r,o,n,s,e[i+8],7,1770035416),s=g(s,r,o,n,e[i+9],12,-1958414417),n=g(n,s,r,o,e[i+10],17,-42063),o=g(o,n,s,r,e[i+11],22,-1990404162),r=g(r,o,n,s,e[i+12],7,1804603682),s=g(s,r,o,n,e[i+13],12,-40341101),n=g(n,s,r,o,e[i+14],17,-1502002290),r=v(r,o=g(o,n,s,r,e[i+15],22,1236535329),n,s,e[i+1],5,-165796510),s=v(s,r,o,n,e[i+6],9,-1069501632),n=v(n,s,r,o,e[i+11],14,643717713),o=v(o,n,s,r,e[i],20,-373897302),r=v(r,o,n,s,e[i+5],5,-701558691),s=v(s,r,o,n,e[i+10],9,38016083),n=v(n,s,r,o,e[i+15],14,-660478335),o=v(o,n,s,r,e[i+4],20,-405537848),r=v(r,o,n,s,e[i+9],5,568446438),s=v(s,r,o,n,e[i+14],9,-1019803690),n=v(n,s,r,o,e[i+3],14,-187363961),o=v(o,n,s,r,e[i+8],20,1163531501),r=v(r,o,n,s,e[i+13],5,-1444681467),s=v(s,r,o,n,e[i+2],9,-51403784),n=v(n,s,r,o,e[i+7],14,1735328473),r=y(r,o=v(o,n,s,r,e[i+12],20,-1926607734),n,s,e[i+5],4,-378558),s=y(s,r,o,n,e[i+8],11,-2022574463),n=y(n,s,r,o,e[i+11],16,1839030562),o=y(o,n,s,r,e[i+14],23,-35309556),r=y(r,o,n,s,e[i+1],4,-1530992060),s=y(s,r,o,n,e[i+4],11,1272893353),n=y(n,s,r,o,e[i+7],16,-155497632),o=y(o,n,s,r,e[i+10],23,-1094730640),r=y(r,o,n,s,e[i+13],4,681279174),s=y(s,r,o,n,e[i],11,-358537222),n=y(n,s,r,o,e[i+3],16,-722521979),o=y(o,n,s,r,e[i+6],23,76029189),r=y(r,o,n,s,e[i+9],4,-640364487),s=y(s,r,o,n,e[i+12],11,-421815835),n=y(n,s,r,o,e[i+15],16,530742520),r=b(r,o=y(o,n,s,r,e[i+2],23,-995338651),n,s,e[i],6,-198630844),s=b(s,r,o,n,e[i+7],10,1126891415),n=b(n,s,r,o,e[i+14],15,-1416354905),o=b(o,n,s,r,e[i+5],21,-57434055),r=b(r,o,n,s,e[i+12],6,1700485571),s=b(s,r,o,n,e[i+3],10,-1894986606),n=b(n,s,r,o,e[i+10],15,-1051523),o=b(o,n,s,r,e[i+1],21,-2054922799),r=b(r,o,n,s,e[i+8],6,1873313359),s=b(s,r,o,n,e[i+15],10,-30611744),n=b(n,s,r,o,e[i+6],15,-1560198380),o=b(o,n,s,r,e[i+13],21,1309151649),r=b(r,o,n,s,e[i+4],6,-145523070),s=b(s,r,o,n,e[i+11],10,-1120210379),n=b(n,s,r,o,e[i+2],15,718787259),o=b(o,n,s,r,e[i+9],21,-343485551),r=p(r,a),o=p(o,c),n=p(n,d),s=p(s,u)}return[r,o,n,s]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(m(t)),o=0;o<t;o+=8)r[o>>5]|=(255&e[o/8])<<o%32;return r}(e),8*e.length))})),h("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var o=unescape(encodeURIComponent(e));e=[];for(var n=0;n<o.length;++n)e.push(o.charCodeAt(n))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var s=Math.ceil((e.length/4+2)/16),i=new Array(s),a=0;a<s;++a){for(var c=new Uint32Array(16),d=0;d<16;++d)c[d]=e[64*a+4*d]<<24|e[64*a+4*d+1]<<16|e[64*a+4*d+2]<<8|e[64*a+4*d+3];i[a]=c}i[s-1][14]=8*(e.length-1)/Math.pow(2,32),i[s-1][14]=Math.floor(i[s-1][14]),i[s-1][15]=8*(e.length-1)&4294967295;for(var u=0;u<s;++u){for(var l=new Uint32Array(80),h=0;h<16;++h)l[h]=i[u][h];for(var m=16;m<80;++m)l[m]=w(l[m-3]^l[m-8]^l[m-14]^l[m-16],1);for(var p=r[0],f=r[1],g=r[2],v=r[3],y=r[4],b=0;b<80;++b){var _=Math.floor(b/20),k=w(p,5)+S(_,f,g,v)+y+t[_]+l[b]>>>0;y=v,v=g,g=w(f,30)>>>0,f=p,p=k}r[0]=r[0]+p>>>0,r[1]=r[1]+f>>>0,r[2]=r[2]+g>>>0,r[3]=r[3]+v>>>0,r[4]=r[4]+y>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]}));var I="function"==typeof Symbol&&Symbol.observable||"@@observable",M=function(){return Math.random().toString(36).substring(7).split("").join(".")},P={INIT:"@@redux/INIT"+M(),REPLACE:"@@redux/REPLACE"+M(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+M()}};function R(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 A(e,t,r){var o;if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error(T(0));if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(T(1));return r(A)(e,t)}if("function"!=typeof e)throw new Error(T(2));var n=e,s=t,i=[],a=i,c=!1;function d(){a===i&&(a=i.slice())}function u(){if(c)throw new Error(T(3));return s}function l(e){if("function"!=typeof e)throw new Error(T(4));if(c)throw new Error(T(5));var t=!0;return d(),a.push(e),function(){if(t){if(c)throw new Error(T(6));t=!1,d();var r=a.indexOf(e);a.splice(r,1),i=null}}}function h(e){if(!R(e))throw new Error(T(7));if(void 0===e.type)throw new Error(T(8));if(c)throw new Error(T(9));try{c=!0,s=n(s,e)}finally{c=!1}for(var t=i=a,r=0;r<t.length;r++)(0,t[r])();return e}function m(e){if("function"!=typeof e)throw new Error(T(10));n=e,h({type:P.REPLACE})}function p(){var e,t=l;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new Error(T(11));function r(){e.next&&e.next(u())}return r(),{unsubscribe:t(r)}}})[I]=function(){return this},e}return h({type:P.INIT}),(o={dispatch:h,subscribe:l,getState:u,replaceReducer:m})[I]=p,o}function O(e){for(var t=Object.keys(e),r={},o=0;o<t.length;o++){var n=t[o];"function"==typeof e[n]&&(r[n]=e[n])}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:P.INIT}))throw new Error(T(12));if(void 0===r(void 0,{type:P.PROBE_UNKNOWN_ACTION()}))throw new Error(T(13))}))}(r)}catch(e){s=e}return function(e,t){if(void 0===e&&(e={}),s)throw s;for(var o=!1,n={},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(T(14));n[c]=u,o=o||u!==d}return(o=o||i.length!==Object.keys(e).length)?n:e}}function x(e,t){return function(){return t(e.apply(this,arguments))}}function j(){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 L(){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),o=function(){throw new Error(T(15))},n={getState:r.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=t.map((function(e){return e(n)}));return o=j.apply(void 0,s)(r.dispatch),C(C({},r),{},{dispatch:o})}}}var N=Object.freeze({__proto__:null,__DO_NOT_USE__ActionTypes:P,applyMiddleware:L,bindActionCreators:function(e,t){if("function"==typeof e)return x(e,t);if("object"!=typeof e||null===e)throw new Error(T(16));var r={};for(var o in e){var n=e[o];"function"==typeof n&&(r[o]=x(n,t))}return r},combineReducers:O,compose:j,createStore:A,legacy_createStore:A}),D=function(e){return"@@redux-saga/"+e},W=D("CANCEL_PROMISE"),V=D("CHANNEL_END"),U=D("IO"),$=D("MATCH"),B=D("MULTICAST"),F=D("SAGA_ACTION"),q=D("SELF_CANCELLATION"),z=D("TASK"),H=D("TASK_CANCEL"),J=D("TERMINATE"),Q=D("LOCATION");function G(){return(G=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}var K=function(e){return null==e},X=function(e){return null!=e},Y=function(e){return"function"==typeof e},Z=function(e){return"string"==typeof e},ee=Array.isArray,te=function(e){return e&&Y(e.then)},re=function(e){return e&&Y(e.next)&&Y(e.throw)},oe=function e(t){return t&&(Z(t)||se(t)||Y(t)||ee(t)&&t.every(e))},ne=function(e){return e&&Y(e.take)&&Y(e.close)},se=function(e){return Boolean(e)&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};function ie(e,t){var r;void 0===t&&(t=!0);var o=new Promise((function(o){r=setTimeout(o,e,t)}));return o[W]=function(){clearTimeout(r)},o}var ae=function(e){return function(){return!0}}(),ce=function(){},de=function(e){return e},ue=function(e,t){G(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(r){e[r]=t[r]}))};function le(e,t){var r=e.indexOf(t);r>=0&&e.splice(r,1)}function he(e){var t=!1;return function(){t||(t=!0,e())}}var me=function(e){throw e},pe=function(e){return{value:e,done:!0}};function fe(e,t,r){void 0===t&&(t=me),void 0===r&&(r="iterator");var o={meta:{name:r},next:e,throw:t,return:pe,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(o[Symbol.iterator]=function(){return o}),o}function ge(e,t){var r=t.sagaStack;console.error(e),console.error(r)}var ve=function(e){return Array.apply(null,new Array(e))},ye=function(e){return function(t){return e(Object.defineProperty(t,F,{value:!0}))}},be=function(e){return e===J},_e=function(e){return e===H},Se=function(e){return be(e)||_e(e)};function we(e,t){var r,o=Object.keys(e),n=o.length,s=0,i=ee(e)?ve(n):{},a={};return o.forEach((function(e){var o=function(o,a){r||(a||Se(o)?(t.cancel(),t(o,a)):(i[e]=o,++s===n&&(r=!0,t(i))))};o.cancel=ce,a[e]=o})),t.cancel=function(){r||(r=!0,o.forEach((function(e){return a[e].cancel()})))},a}function ke(e){return{name:e.name||"anonymous",location:Ee(e)}}function Ee(e){return e[Q]}var Ce={isEmpty:ae,put:ce,take:ce},Te="TAKE",Ie="CALL",Me="FORK",Pe="SELECT",Re=function(e,t){var r;return(r={})[U]=!0,r.combinator=!1,r.type=e,r.payload=t,r},Ae=function(e){return Re(Me,G({},e.payload,{detached:!0}))};function Oe(e,t){return void 0===e&&(e="*"),oe(e)?Re(Te,{pattern:e}):ne(r=e)&&r[B]&&X(t)&&oe(t)?Re(Te,{channel:e,pattern:t}):ne(e)?Re(Te,{channel:e}):void 0;var r}function xe(e,t){return K(t)&&(t=e,e=void 0),Re("PUT",{channel:e,action:t})}function je(e,t){var r,o=null;return Y(e)?r=e:(ee(e)?(o=e[0],r=e[1]):(o=e.context,r=e.fn),o&&Z(r)&&Y(o[r])&&(r=o[r])),{context:o,fn:r,args:t}}function Le(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return Re(Ie,je(e,r))}function Ne(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return Re(Me,je(e,r))}function De(e){void 0===e&&(e=de);for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return Re(Pe,{selector:e,args:r})}function We(){return Re("CANCELLED",{})}var Ve=Le.bind(null,ie),Ue=[],$e=0;function Be(e){try{ze(),e()}finally{He()}}function Fe(e){Ue.push(e),$e||(ze(),Je())}function qe(e){try{return ze(),e()}finally{Je()}}function ze(){$e++}function He(){$e--}function Je(){var e;for(He();!$e&&void 0!==(e=Ue.shift());)Be(e)}var Qe=function(e){return function(t){return e.some((function(e){return Ze(e)(t)}))}},Ge=function(e){return function(t){return e(t)}},Ke=function(e){return function(t){return t.type===String(e)}},Xe=function(e){return function(t){return t.type===e}},Ye=function(){return ae};function Ze(e){var t="*"===e?Ye:Z(e)?Ke:ee(e)?Qe:function(e){return Y(e)&&e.hasOwnProperty("toString")}(e)?Ke:Y(e)?Ge:se(e)?Xe:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var et={type:V},tt=function(e){return e&&e.type===V};function rt(e){void 0===e&&(e=function(e,t){void 0===e&&(e=10);var r=new Array(e),o=0,n=0,s=0,i=function(){if(0!=o){var t=r[s];return r[s]=null,o--,s=(s+1)%e,t}},a=function(){for(var e=[];o;)e.push(i());return e};return{isEmpty:function(){return 0==o},put:function(t){var i;o<e||(i=2*e,r=a(),o=r.length,n=r.length,s=0,r.length=i,e=i),function(t){r[n]=t,n=(n+1)%e,o++}(t)},take:i,flush:a}}(void 0));var t=!1,r=[];return{take:function(o){t&&e.isEmpty()?o(et):e.isEmpty()?(r.push(o),o.cancel=function(){le(r,o)}):o(e.take())},put:function(o){if(!t){if(0===r.length)return e.put(o);r.shift()(o)}},flush:function(r){t&&e.isEmpty()?r(et):r(e.flush())},close:function(){if(!t){t=!0;var e=r;r=[];for(var o=0,n=e.length;o<n;o++)(0,e[o])(et)}}}}function ot(e,t){void 0===t&&(t=Ce);var r,o=!1,n=rt(t),s=function(){o||(o=!0,Y(r)&&r(),n.close())};return r=he(r=e((function(e){tt(e)?s():n.put(e)}))),o&&r(),{take:n.take,flush:n.flush,close:s}}function nt(){var e,t=!1,r=[],o=r,n=function(){o===r&&(o=r.slice())},s=function(){t=!0;var e=r=o;o=[],e.forEach((function(e){e(et)}))};return(e={})[B]=!0,e.put=function(e){if(!t)if(tt(e))s();else for(var n=r=o,i=0,a=n.length;i<a;i++){var c=n[i];c[$](e)&&(c.cancel(),c(e))}},e.take=function(e,r){void 0===r&&(r=Ye),t?e(et):(e[$]=r,n(),o.push(e),e.cancel=he((function(){n(),le(o,e)})))},e.close=s,e}function st(){var e=nt(),t=e.put;return e.put=function(e){e[F]?t(e):Fe((function(){t(e)}))},e}function it(e,t){var r=e[W];Y(r)&&(t.cancel=r),e.then(t,(function(e){t(e,!0)}))}var at,ct=0,dt=function(){return++ct};function ut(e){e.isRunning()&&e.cancel()}var lt=((at={}).TAKE=function(e,t,r){var o=t.channel,n=void 0===o?e.channel:o,s=t.pattern,i=t.maybe,a=function(e){e instanceof Error?r(e,!0):!tt(e)||i?r(e):r(J)};try{n.take(a,X(s)?Ze(s):null)}catch(e){return void r(e,!0)}r.cancel=a.cancel},at.PUT=function(e,t,r){var o=t.channel,n=t.action,s=t.resolve;Fe((function(){var t;try{t=(o?o.put:e.dispatch)(n)}catch(e){return void r(e,!0)}s&&te(t)?it(t,r):r(t)}))},at.ALL=function(e,t,r,o){var n=o.digestEffect,s=ct,i=Object.keys(t);if(0!==i.length){var a=we(t,r);i.forEach((function(e){n(t[e],s,a[e],e)}))}else r(ee(t)?[]:{})},at.RACE=function(e,t,r,o){var n=o.digestEffect,s=ct,i=Object.keys(t),a=ee(t)?ve(i.length):{},c={},d=!1;i.forEach((function(e){var t=function(t,o){d||(o||Se(t)?(r.cancel(),r(t,o)):(r.cancel(),d=!0,a[e]=t,r(a)))};t.cancel=ce,c[e]=t})),r.cancel=function(){d||(d=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){d||n(t[e],s,c[e],e)}))},at.CALL=function(e,t,r,o){var n=t.context,s=t.fn,i=t.args,a=o.task;try{var c=s.apply(n,i);if(te(c))return void it(c,r);if(re(c))return void _t(e,c,a.context,ct,ke(s),!1,r);r(c)}catch(e){r(e,!0)}},at.CPS=function(e,t,r){var o=t.context,n=t.fn,s=t.args;try{var i=function(e,t){K(e)?r(t):r(e,!0)};n.apply(o,s.concat(i)),i.cancel&&(r.cancel=i.cancel)}catch(e){r(e,!0)}},at.FORK=function(e,t,r,o){var n=t.fn,s=t.detached,i=o.task,a=function(e){var t=e.context,r=e.fn,o=e.args;try{var n=r.apply(t,o);if(re(n))return n;var s=!1;return fe((function(e){return s?{value:e,done:!0}:(s=!0,{value:n,done:!te(n)})}))}catch(e){return fe((function(){throw e}))}}({context:t.context,fn:n,args:t.args}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:ke(t)}(a,n);qe((function(){var t=_t(e,a,i.context,ct,c,s,void 0);s?r(t):t.isRunning()?(i.queue.addTask(t),r(t)):t.isAborted()?i.queue.abort(t.error()):r(t)}))},at.JOIN=function(e,t,r,o){var n=o.task,s=function(e,t){if(e.isRunning()){var r={task:n,cb:t};t.cancel=function(){e.isRunning()&&le(e.joiners,r)},e.joiners.push(r)}else e.isAborted()?t(e.error(),!0):t(e.result())};if(ee(t)){if(0===t.length)return void r([]);var i=we(t,r);t.forEach((function(e,t){s(e,i[t])}))}else s(t,r)},at.CANCEL=function(e,t,r,o){t===q?ut(o.task):ee(t)?t.forEach(ut):ut(t),r()},at.SELECT=function(e,t,r){var o=t.selector,n=t.args;try{r(o.apply(void 0,[e.getState()].concat(n)))}catch(e){r(e,!0)}},at.ACTION_CHANNEL=function(e,t,r){var o=t.pattern,n=rt(t.buffer),s=Ze(o),i=function t(r){tt(r)||e.channel.take(t,s),n.put(r)},a=n.close;n.close=function(){i.cancel(),a()},e.channel.take(i,s),r(n)},at.CANCELLED=function(e,t,r,o){r(o.task.isCancelled())},at.FLUSH=function(e,t,r){t.flush(r)},at.GET_CONTEXT=function(e,t,r,o){r(o.task.context[t])},at.SET_CONTEXT=function(e,t,r,o){ue(o.task.context,t),r()},at);function ht(e,t){return e+"?"+t}function mt(e){var t=e.name,r=e.location;return r?t+" "+ht(r.fileName,r.lineNumber):t}function pt(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 ft=null,gt=[],vt=function(e){e.crashedEffect=ft,gt.push(e)},yt=function(){ft=null,gt.length=0},bt=function(){var e,t=gt[0],r=gt.slice(1),o=t.crashedEffect?(e=Ee(t.crashedEffect))?e.code+" "+ht(e.fileName,e.lineNumber):"":null;return["The above error occurred in task "+mt(t.meta)+(o?" \n when executing effect "+o:"")].concat(r.map((function(e){return" created by "+mt(e.meta)})),[pt(gt)]).join("\n")};function _t(e,t,r,o,n,s,i){var a=e.finalizeRunEffect((function(t,r,o){te(t)?it(t,o):re(t)?_t(e,t,d.context,r,n,!1,o):t&&t[U]?(0,lt[t.type])(e,t.payload,o,u):o(t)}));l.cancel=ce;var c={meta:n,cancel:function(){0===c.status&&(c.status=1,l(H))},status:0},d=function(e,t,r,o,n,s,i){var a;void 0===i&&(i=ce);var c,d,u=0,l=null,h=[],m=Object.create(r),p=function(e,t,r){var o,n=[],s=!1;function i(e){h.push.apply(h,p.getTasks().map((function(e){return e.meta.name}))),c(),r(e,!0)}function a(t){n.push(t),t.cont=function(a,c){s||(le(n,t),t.cont=ce,c?i(a):(t===e&&(o=a),n.length||(s=!0,r(o))))}}function c(){s||(s=!0,n.forEach((function(e){e.cont=ce,e.cancel()})),n=[])}return a(e),{addTask:a,cancelAll:c,abort:i,getTasks:function(){return n}}}(t,0,f);function f(t,r){if(r){if(u=2,vt({meta:n,cancelledTasks:h}),g.isRoot){var o=bt();yt(),e.onError(t,{sagaStack:o})}d=t,l&&l.reject(t)}else t===H?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={})[z]=!0,a.id=o,a.meta=n,a.isRoot=s,a.context=m,a.joiners=[],a.queue=p,a.cancel=function(){0===u&&(u=1,p.cancelAll(),f(H,!1))},a.cont=i,a.end=f,a.setContext=function(e){ue(m,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,o,n,s,i),u={task:d,digestEffect:h};return i&&(i.cancel=d.cancel),l(),d;function l(e,r){try{var n;r?(n=t.throw(e),yt()):_e(e)?(c.status=1,l.cancel(),n=Y(t.return)?t.return(H):{done:!0,value:H}):n=be(e)?Y(t.return)?t.return():{done:!0}:t.next(e),n.done?(1!==c.status&&(c.status=3),c.cont(n.value)):h(n.value,o,l)}catch(e){if(1===c.status)throw e;c.status=2,c.cont(e,!0)}}function h(t,r,o,n){void 0===n&&(n="");var s,i=dt();function c(r,n){s||(s=!0,o.cancel=ce,e.sagaMonitor&&(n?e.sagaMonitor.effectRejected(i,r):e.sagaMonitor.effectResolved(i,r)),n&&function(e){ft=e}(t),o(r,n))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:i,parentEffectId:r,label:n,effect:t}),c.cancel=ce,o.cancel=function(){s||(s=!0,c.cancel(),c.cancel=ce,e.sagaMonitor&&e.sagaMonitor.effectCancelled(i))},a(t,i,c)}}function St(e,t){for(var r=e.channel,o=void 0===r?st():r,n=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?ge:u,h=arguments.length,m=new Array(h>2?h-2:0),p=2;p<h;p++)m[p-2]=arguments[p];var f,g=t.apply(void 0,m),v=dt();if(c&&(c.rootSagaStarted=c.rootSagaStarted||ce,c.effectTriggered=c.effectTriggered||ce,c.effectResolved=c.effectResolved||ce,c.effectRejected=c.effectRejected||ce,c.effectCancelled=c.effectCancelled||ce,c.actionDispatched=c.actionDispatched||ce,c.rootSagaStarted({effectId:v,saga:t,args:m})),d){var y=j.apply(void 0,d);f=function(e){return function(t,r,o){return y((function(t){return e(t,r,o)}))(t)}}}else f=de;var b={channel:o,dispatch:ye(n),getState:s,sagaMonitor:c,onError:l,finalizeRunEffect:f};return qe((function(){var e=_t(b,g,a,v,ke(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function wt(e){var t,r=void 0===e?{}:e,o=r.context,n=void 0===o?{}:o,s=r.channel,i=void 0===s?st():s,a=r.sagaMonitor,c=function(e,t){if(null==e)return{};var r,o,n={},s=Object.keys(e);for(o=0;o<s.length;o++)t.indexOf(r=s[o])>=0||(n[r]=e[r]);return n}(r,["context","channel","sagaMonitor"]);function d(e){return t=St.bind(null,G({},c,{context:n,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){ue(n,e)},d}var kt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function o(){}function n(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,o,s,i){if("function"!=typeof o)throw new TypeError("The listener must be a function");var a=new n(o,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 o:delete e._events[t]}function a(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,o,n=[];if(0===this._eventsCount)return n;for(o in e=this._events)t.call(e,o)&&n.push(r?o.slice(1):o);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var o=0,n=t.length,s=new Array(n);o<n;o++)s[o]=t[o].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,o,n,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,o),!0;case 4:return u.fn.call(u.context,t,o,n),!0;case 5:return u.fn.call(u.context,t,o,n,s),!0;case 6:return u.fn.call(u.context,t,o,n,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,m=u.length;for(d=0;d<m;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,o);break;case 4:u[d].fn.call(u[d].context,t,o,n);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,o,n){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||n&&!a.once||o&&a.context!==o||i(this,s);else{for(var c=0,d=[],u=a.length;c<u;c++)(a[c].fn!==t||n&&!a[c].once||o&&a[c].context!==o)&&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 o,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}(kt);var Et=kt.exports,Ct=Object.defineProperty,Tt=Object.defineProperties,It=Object.getOwnPropertyDescriptor,Mt=Object.getOwnPropertyDescriptors,Pt=Object.getOwnPropertyNames,Rt=Object.getOwnPropertySymbols,At=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,xt=(e,t,r)=>t in e?Ct(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,jt=(e,t)=>{for(var r in t||(t={}))At.call(t,r)&&xt(e,r,t[r]);if(Rt)for(var r of Rt(t))Ot.call(t,r)&&xt(e,r,t[r]);return e},Lt=(e,t)=>Tt(e,Mt(t)),Nt=(e,t)=>{var r={};for(var o in e)At.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&Rt)for(var o of Rt(e))t.indexOf(o)<0&&Ot.call(e,o)&&(r[o]=e[o]);return r},Dt=(e,t)=>{for(var r in t)Ct(e,r,{get:t[r],enumerable:!0})},Wt=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of Pt(t))At.call(e,n)||n===r||Ct(e,n,{get:()=>t[n],enumerable:!(o=It(t,n))||o.enumerable});return e},Vt=(e,t,r)=>(Wt(e,t,"default"),r&&Wt(r,t,"default")),Ut=(e,t,r)=>(xt(e,"symbol"!=typeof t?t+"":t,r),r),$t="__local__",Bt="__synthetic__",Ft=["room.started","room.ended"].map((e=>`video.${e}`)),qt=n.getLogger("signalwire"),zt=qt.methodFactory;qt.methodFactory=(e,t,r)=>{const o=zt(e,t,r);return function(...e){e.unshift((new Date).toISOString(),"-"),o.apply(void 0,e)}};var Ht,Jt=qt.getLevel();qt.setLevel(Jt);var Qt={},Gt=()=>null!=Ht?Ht:qt,Kt=({type:e,payload:t})=>{const r=Gt(),{logWsTraffic:o}=Qt||{};if(!o)return;const n=(e=>!("method"in e)||"signalwire.ping"!==e.method)(t)?JSON.stringify(t,null,2):t;return r.info(`${e.toUpperCase()}: \n`,n,"\n")},Xt=()=>{const e=Gt();return new Proxy(e,{get:(e,t,r)=>"wsTraffic"===t?Kt:Reflect.get(e,t,r)})},Yt=(e,t)=>{const{result:r={},error:o}=e;if(o)return{error:o};const{code:n,node_id:s,result:i=null}=r;return n&&"200"!==n?{error:r}:null===i?(t&&(r.node_id=t),{result:r}):i?i.jsonrpc?Yt(i,s):{result:i}:{result:r}},Zt={propsToUpdateValue:["updated","layers","members","recordings","playbacks"]},er=(e,t=Zt)=>(null==e?void 0:e.__sw_symbol)||(null==e?void 0:e.__sw_proxy)?e:Object.entries(e).reduce(((e,[r,o])=>{const n=tr(r);return e[n]="object"==typeof o&&o?Array.isArray(o)?t.propsToUpdateValue.includes(r)?o.map((e=>"string"==typeof e?tr(e):er(e))):o:er(o):(e=>e.endsWith("At"))(n)?(e=>{if(void 0===e)return e;const t=new Date(1e3*e);return isNaN(t.getTime())?e:t})(o):o,e}),{}),tr=e=>e.includes("_")?e.split("_").reduce(((e,t,r)=>{const o=t.trim().charAt(0),n=t.substr(1).toLowerCase();return`${e}${0===r?o.toLowerCase():o.toUpperCase()}${n}`}),""):e,rr=/[A-Z]/g,or=({event:e,namespace:t})=>("string"==typeof e&&(e=(e=>e.replace(rr,(e=>`_${e.toLowerCase()}`)))(e=nr({event:e,namespace:t}))),e),nr=({namespace:e,event:t})=>!e||t.startsWith(e)?t:`${e}:${t}`,sr=(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),ir=({instance:e,transform:t,payload:r,transformedPayload:o})=>(({instance:e,proxiedObj:t,payload:r,transformedPayload:o,transform:n})=>{const s=jt(Lt(jt({},o),{_eventsNamespace:n.getInstanceEventNamespace?n.getInstanceEventNamespace(r):void 0,eventChannel:n.getInstanceEventChannel?n.getInstanceEventChannel(r):void 0}),(e=>{let t={},r=e,o=!0;for(;o;)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):o=!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,n,s)=>"__sw_proxy"===n||("toString"===n?(({property:e,payload:t})=>"function"==typeof e?()=>JSON.stringify(t):e)({property:e[n],payload:o}):"_eventsNamespace"===n&&t.getInstanceEventNamespace?t.getInstanceEventNamespace(r):"eventChannel"===n&&t.getInstanceEventChannel?t.getInstanceEventChannel(r):n in o?o[n]:Reflect.get(e,n,s))}),payload:r,transformedPayload:o,transform:t}),ar=new Map,cr=/^(ws|wss):\/\//,dr=(e,t,r)=>{let o=null;return Promise.race([e,new Promise(((e,n)=>o=setTimeout(n,t,r)))]).finally((()=>clearTimeout(o)))},ur=e=>e.includes("session."),lr=["video.member.updated","video.member.talking"],hr=["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"],mr=e=>{const t=e.map((e=>{if("string"==typeof e){const t=(e=>{const t=e.split(":");return t[t.length-1]})(e);return hr.includes(t)||(e=>e.includes(Bt))(t)||pr(t)||ur(t)?null:lr.find((e=>t.startsWith(e)))||t}return e}));return Array.from(new Set(t)).filter(Boolean)},pr=e=>e.includes($t),fr=e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push($t),e)),[]).join(".")},gr=e=>{var t;return jt({jsonrpc:"2.0",id:null!=(t=e.id)?t:_()},e)},vr=e=>jt({jsonrpc:"2.0"},e),yr={major:3,minor:0,revision:0},br=e=>gr({method:"signalwire.connect",params:jt({version:yr},e)}),_r={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},Sr=e=>{if(e.hasOwnProperty("dialogParams")){const t=Nt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in _r)e&&t.hasOwnProperty(e)&&(t[_r[e]]=t[e],delete t[e]);e.dialogParams=t}return e},wr=e=>(t={})=>gr({method:e,params:Sr(t)}),kr=wr("verto.invite"),Er=wr("verto.bye"),Cr=wr("verto.modify"),Tr=wr("verto.info"),Ir=wr("verto.pong"),Mr=(e,t)=>vr({id:e,result:{method:t}}),Pr={};Dt(Pr,{authErrorAction:()=>Vr,authExpiringAction:()=>$r,authSuccessAction:()=>Ur,closeConnectionAction:()=>Nr,compoundEventAttachAction:()=>Zr,createAction:()=>Ar,destroyAction:()=>Lr,executeAction:()=>Wr,getCustomSagaActionType:()=>Yr,initAction:()=>jr,makeCustomSagaAction:()=>Xr,reauthAction:()=>Dr,sessionAuthErrorAction:()=>Qr,sessionConnectedAction:()=>zr,sessionDisconnectedAction:()=>Hr,sessionExpiringAction:()=>Gr,sessionReconnectingAction:()=>Jr,socketClosedAction:()=>Br,socketErrorAction:()=>Fr,socketMessageAction:()=>qr});var Rr={};function Ar(e,t){function r(...r){if(t){let o=t(...r);if(!o)throw new Error("prepareAction did not return an object");return jt(jt({type:e,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>t.type===e,r}Dt(Rr,{configureStore:()=>xr,createAction:()=>Ar}),Vt(Rr,N);var Or="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?j:j.apply(null,arguments)};function xr(e){const t=function(){return[]},{reducer:r,middleware:o=t(),devTools:n=!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=O(r)}let c=o;"function"==typeof c&&(c=c(t));const d=L(...c);let u=j;n&&(u=Or(jt({trace:!1},"object"==typeof n&&n)));let l=[d];return Array.isArray(i)?l=[d,...i]:"function"==typeof i&&(l=i(l)),A(a,s,u(...l))}var jr=Ar("swSdk/init"),Lr=Ar("swSdk/destroy"),Nr=Ar("swSdk/closeConnection"),Dr=Ar("swSdk/reauth"),Wr=Ar("swSdk/executeRequest"),Vr=Ar("auth/error"),Ur=Ar("auth/success"),$r=Ar("auth/expiring"),Br=Ar("socket/closed"),Fr=Ar("socket/error"),qr=Ar("socket/message"),zr=Ar("session.connected"),Hr=Ar("session.disconnected"),Jr=Ar("session.reconnecting"),Qr=Ar("session.auth_error"),Gr=Ar("session.expiring"),Kr=(e,t)=>`${t.type}/${e}`,Xr=(e,t)=>Lt(jt({},t),{type:Kr(e,t)}),Yr=(e,t)=>Kr(e,t),Zr=Ar("compound_event:attach");function eo(e){const t={},r=[];let o;const n={addCase(e,r){const o="string"==typeof e?e:e.type;if(o in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[o]=r,n},addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),n),addDefaultCase:e=>(o=e,n)};return e(n),[t,r,o]}var to=({name:e="",initialState:t,reducers:r,extraReducers:o})=>function(e){const{name:t}=e;if(!t)throw new Error("`name` is a required option for createSlice");const r=e.initialState,o=e.reducers||{},n=Object.keys(o),s={},i={},a={};function c(){const[t={},o=[],n]="function"==typeof e.extraReducers?eo(e.extraReducers):[e.extraReducers],s=jt(jt({},t),i);return function(e,t,r=[],o){let n,[s,i,a]="function"==typeof t?eo(t):[t,r,o];function c(e=n(),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 n="function"==typeof e?()=>e():()=>e,c.getInitialState=n,c}(r,s,o,n)}let d;return n.forEach((e=>{const r=o[e],n=`${t}/${e}`;let c,d;"reducer"in r?(c=r.reducer,d=r.prepare):c=r,s[e]=c,i[n]=c,a[e]=d?Ar(n,d):Ar(n)})),{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(Lr.type,(()=>t)),"function"==typeof o&&o(e)}});function ro(e){return[jr.type,Dr.type].includes(e.type)}var oo=to({name:"session",initialState:{protocol:"",iceServers:[],authStatus:"unknown",authState:void 0,authError:void 0,authCount:0},reducers:{connected:(e,{payload:t})=>{var r,o;return Lt(jt({},e),{authStatus:"authorized",authState:null==t?void 0:t.authorization,authCount:e.authCount+1,protocol:null!=(r=null==t?void 0:t.protocol)?r:"",iceServers:null!=(o=null==t?void 0:t.ice_servers)?o:[]})},authStatus:(e,{payload:t})=>Lt(jt({},e),{authStatus:t}),updateAuthState:(e,{payload:t})=>Lt(jt({},e),{authState:t})},extraReducers:e=>{e.addCase(Vr.type,((e,{payload:t})=>Lt(jt({},e),{authStatus:"unauthorized",authError:t.error}))),e.addMatcher(ro,(e=>Lt(jt({},e),{authStatus:"authorizing"})))}}),{actions:no,reducer:so}=oo,io=Symbol("BaseSession"),ao=class{constructor(e){var t,r;this.options=e,Ut(this,"__sw_symbol",io),Ut(this,"uuid",_()),Ut(this,"WebSocketConstructor"),Ut(this,"agent"),Ut(this,"connectVersion",yr),Ut(this,"_rpcConnectResult"),Ut(this,"_requests",new Map),Ut(this,"_socket",null),Ut(this,"_host","wss://relay.signalwire.com"),Ut(this,"_executeTimeoutMs",1e4),Ut(this,"_executeTimeoutError",Symbol.for("sw-execute-timeout")),Ut(this,"_checkPingDelay",15e3),Ut(this,"_checkPingTimer",null),Ut(this,"_status","unknown");const{host:o,logLevel:n="info"}=e;o&&(this._host=(e=>`${cr.test(e)?"":"wss://"}${e}`)(o)),n&&(null==(r=(t=this.logger).setLevel)||r.call(t,n)),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 Xt()}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}get idle(){return"idle"===this._status}get ready(){return!Boolean(this.idle||!this.connected)}set token(e){this.options.token=e}connect(){if(!(null==this?void 0:this.WebSocketConstructor))return void this.logger.error("Missing WebSocketConstructor");if(this._socket)return void this.logger.warn("Session already connected.");this._socket=this._createSocket();const e=t=>{var r;null==(r=this._socket)||r.removeEventListener("open",e),this._onSocketOpen(t)};this._socket.addEventListener("open",e);const t=e=>{var r;null==(r=this._socket)||r.removeEventListener("close",t),this._onSocketClose(e)};this._socket.addEventListener("close",t);const r=e=>{var t;null==(t=this._socket)||t.removeEventListener("error",r),this._onSocketError(e)};this._socket.addEventListener("error",r),this._socket.removeEventListener("message",this._onSocketMessage),this._socket.addEventListener("message",this._onSocketMessage)}_createSocket(){return new this.WebSocketConstructor(this._host)}async disconnect(){this._socket&&!this.closing?(clearTimeout(this._checkPingTimer),this._requests.clear(),this._closeConnection("disconnected")):this.logger.debug("Session not connected or already in closing state.")}execute(e){if(!this.ready)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)),dr(t,this._executeTimeoutMs,this._executeTimeoutError).catch((t=>{if(t!==this._executeTimeoutError)throw t;if(this.logger.error("Request Timeout",e),"disconnected"===this.status)return this.logger.debug("Request failed because the session is disconnected",this.status,this._socket);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(br(t))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Ur())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Vr({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(Fr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=1e3==e.code||1002==e.code?"disconnected":"reconnecting",this.dispatch(Br()),this._socket=null}_onSocketMessage(e){const t=this.decode(e.data);if(this.logger.wsTraffic({type:"recv",payload:t}),(e=>!(e=>Boolean(e.method))(e))(t)){const e=this._requests.get(t.id);if(e){const{rpcRequest:r,resolve:o,reject:n}=e;this._requests.delete(t.id);const{result:s,error:i}=(({response:e,request:t})=>{const{result:r={},error:o}=e;if(o)return{error:o};switch(t.method){case"signalwire.connect":return{result:r};default:return Yt(e)}})({response:t,request:r});return i?n(i):o(s)}return this.logger.warn("Unknown request for",t)}switch(t.method){case"signalwire.ping":return this._pingHandler(t);case"signalwire.disconnect":this.execute((r=t.id,vr({id:r,result:{}}))).catch((e=>{this.logger.error("SwDisconnect Error",e)})).finally((()=>{this._status="idle"}));break;default:this.dispatch(qr(t)),this._handleWebSocketMessage(t)}var r}_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(e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch(t){return e}})(e)}async _pingHandler(e){var t,r,o;clearTimeout(this._checkPingTimer),this._checkPingTimer=setTimeout((()=>{this._closeConnection("reconnecting")}),this._checkPingDelay),await this.execute((r=e.id,o=null==(t=null==e?void 0:e.params)?void 0:t.timestamp,vr({id:r,result:{timestamp:o||Date.now()/1e3}})))}_closeConnection(e){this._status=e,this.dispatch(no.authStatus("disconnected"===e?"unauthorized":"unknown")),this.dispatch(Nr()),this._socket&&(this._socket.close(),this._socket=null)}},co=class extends ao{constructor(e){super(e),this.options=e,Ut(this,"_expiredDiffSeconds",0),Ut(this,"_refreshTokenNotificationDiff",120),Ut(this,"_checkTokenExpirationDelay",2e4),Ut(this,"_checkTokenExpirationTimer",null),this._checkTokenExpiration=this._checkTokenExpiration.bind(this),this.reauthenticate=this.reauthenticate.bind(this)}get expiresAt(){var e,t,r;const o=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 o){const e=Date.parse(o);if(!isNaN(e))return Math.floor(e/1e3)}return o}get expiresIn(){const e=Math.floor(Date.now()/1e3);return this.expiresAt-e}get expired(){return this.expiresAt>0&&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{const t=await this.retrieveRelayProtocol();t&&(e.protocol=t)}this._rpcConnectResult=await this.execute(br(e)),await this.persistRelayProtocol(),this._checkTokenExpiration()}async retrieveRelayProtocol(){return""}async persistRelayProtocol(){}async reauthenticate(){if(this.logger.debug("Session Reauthenticate",{ready:this.ready,expired:this.expired}),!this.ready||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,gr({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($r()),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)))}},uo={};Dt(uo,{authErrorAction:()=>Vr,authExpiringAction:()=>$r,authSuccessAction:()=>Ur,closeConnectionAction:()=>Nr,compoundEventAttachAction:()=>Zr,configureStore:()=>Go,connect:()=>Qo,createAction:()=>Ar,createCatchableSaga:()=>wo,createRestartableSaga:()=>_o,destroyAction:()=>Lr,eventChannel:()=>ot,executeAction:()=>Wr,getCustomSagaActionType:()=>Yr,initAction:()=>jr,makeCustomSagaAction:()=>Xr,reauthAction:()=>Dr,sessionAuthErrorAction:()=>Qr,sessionConnectedAction:()=>zr,sessionDisconnectedAction:()=>Hr,sessionExpiringAction:()=>Gr,sessionReconnectingAction:()=>Jr,socketClosedAction:()=>Br,socketErrorAction:()=>Fr,socketMessageAction:()=>qr});var lo=({state:e,payload:t,componentId:r,key:o,requestId:n})=>Lt(jt({},e),r in e.byId?{byId:Lt(jt({},e.byId),{[r]:Lt(jt({},e.byId[r]),{[o]:Lt(jt({},e.byId[r][o]),{[n]:t})})})}:{byId:Lt(jt({},e.byId),{[r]:{id:r,[o]:{[n]:t}}})}),ho=to({name:"components",initialState:{byId:{}},reducers:{upsert:(e,{payload:t})=>Lt(jt({},e),t.id in e.byId?{byId:Lt(jt({},e.byId),{[t.id]:jt(jt({},e.byId[t.id]),t)})}:{byId:Lt(jt({},e.byId),{[t.id]:t})}),executeSuccess:(e,{payload:t})=>{const{componentId:r,requestId:o,response:n}=t;return lo({componentId:r,requestId:o,state:e,key:"responses",payload:n})},executeFailure:(e,{payload:t})=>{const{componentId:r,requestId:o,error:n,action:s}=t;return lo({componentId:r,requestId:o,state:e,key:"errors",payload:{action:s,jsonrpc:n}})},cleanup:(e,{payload:t})=>Lt(jt({},e),{byId:Object.entries(e.byId).reduce(((e,[r,o])=>(t.ids.includes(r)||(e[r]=o),e)),{})})}}),{actions:mo,reducer:po}=ho,fo={queue:[]},go=to({name:"executeQueue",initialState:fo,reducers:{add:(e,{payload:t})=>Lt(jt({},e),{queue:e.queue.concat(t)}),clean:()=>fo}}),{actions:vo,reducer:yo}=go,bo=(0,Rr.combineReducers)({components:po,session:so,executeQueue:yo});Dt({},{createCatchableSaga:()=>wo,createRestartableSaga:()=>_o,eventChannel:()=>ot});var _o=e=>function*(){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];Ae(Ne.apply(void 0,[e].concat(r)))}((function*(){for(;;)try{Xt().debug("Run a restartable saga"),yield Le(e),Xt().debug("One of the restartable saga has ended. Restarting..")}catch(e){Xt().error("Restartable Saga Error",e)}}))},So=e=>Xt().error("Catchable Saga Error",e),wo=(e,t=So)=>function*(...r){try{yield Le(e,...r)}catch(e){t(e)}},ko={};Dt(ko,{getAuthError:()=>Io,getAuthState:()=>Mo,getAuthStatus:()=>To,getIceServers:()=>Eo,getSession:()=>Co});var Eo=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},Co=e=>e.session,To=({session:e})=>e.authStatus,Io=({session:e})=>e.authError,Mo=({session:e})=>e.authState;function*Po(e){function*t(t){if("authorized"!==(yield De(To)))return;const{componentId:r,requestId:o,method:n,params:s}=t.payload;try{const i=(({method:e,params:t})=>gr({method:e,params:t}))({id:o,method:n,params:s}),a=yield Le(e.execute,i);r&&o&&(yield xe(mo.executeSuccess({componentId:r,requestId:o,response:a})))}catch(e){Xt().warn("worker error",r,JSON.stringify(e)),r&&o&&(yield xe(mo.executeFailure({componentId:r,requestId:o,action:t,error:e})))}finally{if((yield We())&&r&&o){const e={jsonrpc:"2.0",id:o,error:{code:-32600,message:"Cancelled task"}};Xt().debug("executeActionWorker cancelled",{requestId:o,componentId:r,error:e}),yield xe(mo.executeFailure({componentId:r,requestId:o,action:t,error:e}))}}}for(;;){const e=yield Oe(Wr.type);yield Ne(t,e)}}function*Ro({sessionChannel:e,pubSubChannel:t,swEventChannel:r}){function*o(e){switch(e.event_type){case"video.room.audience_count":return void(yield xe(t,{type:"video.room.audienceCount",payload:e.params}));case"video.member.updated":return;case"video.member.talking":{const{member:r}=e.params;if("talking"in r){const o=r.talking?"started":"ended";yield xe(t,{type:`video.member.talking.${o}`,payload:e.params});const n=r.talking?"start":"stop";yield xe(t,{type:`video.member.talking.${n}`,payload:e.params})}break}}yield xe(t,{type:e.event_type,payload:e.params})}function*n(e){yield xe(r,(e=>{const{event_type:t,params:r,node_id:o}=e;if("queuing.relay.tasks"===t)return{type:t,payload:e};if("webrtc.message"===t&&(null==r?void 0:r.jsonrpc)){const e=r;return e.params&&(e.params.nodeId=o),{type:t,payload:e}}return{type:t,payload:r}})(e)),(e=>"webrtc.message"===(null==e?void 0:e.event_type))(e)||((e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("video."))})(e)?yield Ne(o,e):yield xe({type:e.event_type,payload:e}))}const s=wo((function*(e){if(e.type!==qr.type)return void(yield xe(e));const{method:t,params:r}=e.payload;switch(t){case"signalwire.event":yield Ne(n,r);break;default:return Xt().debug(`Unknown message: ${t}`,e)}}),(e=>{Xt().error("Channel Error",e)}));for(;;)try{for(;;){const t=yield Oe(e);yield Ne(s,t)}}catch(e){Xt().error("sessionChannelWorker error:",e)}finally{Xt().debug("sessionChannelWorker finally")}}function Ao(e){return ot((t=>(e.dispatch=e=>{Xt().debug("[session.dispatch]",e),t(e)},()=>{Xt().debug("sessionChannel unsubscribe"),e.disconnect()})))}var Oo=e=>{var t;return 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=>e.type.startsWith("video.stream."))(e)||(e=>"video.room.audience_count"===e.type||"video.room.audienceCount"===e.type)(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)&&null!=(t=e.payload.tag)?t:""};function*xo({pubSubChannel:e,emitter:t}){Xt().debug("pubSubSaga [started]");try{for(;;){const r=yield Oe(e,"*"),{type:o,payload:n}=r;try{const e=Oo(r);Ft.includes(o)&&t.emit(o,n),Xt().trace("Emit:",or({namespace:e,event:o})),t.emit(or({namespace:e,event:o}),n)}catch(e){Xt().error(e)}}}finally{(yield We())&&Xt().debug("pubSubSaga [cancelled]")}}var jo=({executeQueue:e})=>e;function*Lo(){function*e(e){"authorized"!==(yield De(To))&&(yield xe(vo.add(e.payload)))}for(;;){const t=yield Oe(Wr.type);yield Ne(e,t)}}function*No(){const{queue:e}=yield De(jo);for(const t of e)yield xe(Wr(t));yield xe(vo.clean())}var Do=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Ut(this,"name","AuthError"),Object.setPrototypeOf(this,Do.prototype)}};function*Wo({SessionConstructor:e,userOptions:t,channels:r}){var o;const n=new e(t),s=yield Le(Ao,n),i=r.pubSubChannel,a=r.swEventChannel;let c=[];if(null==(o=t.workers)?void 0:o.length)try{const e=t.workers.map((e=>Le(_o(e))));c=yield function(e){var t=Re("ALL",e);return t.combinator=!0,t}(e)}catch(e){Xt().error("Error running custom workers",e)}yield Ne(Ro,{sessionChannel:s,pubSubChannel:i,swEventChannel:a});const d=yield Ne(xo,{pubSubChannel:i,emitter:t.emitter}),u=yield Ne($o,{session:n,sessionChannel:s,pubSubChannel:i,userOptions:t});n.connect(),yield Oe(Lr.type),d.cancel(),u.cancel(),s.close(),c.forEach((e=>e.cancel()))}function*Vo({session:e,pubSubChannel:t}){Xt().debug("socketClosedWorker",e.status),"reconnecting"===e.status?(yield xe(t,Jr()),yield Ve(2e3*Math.random()),yield Le(e.connect)):"disconnected"===e.status?(yield xe(t,Hr()),yield xe(Lr())):Xt().warn("Unhandled Session Status",e.status)}function*Uo({session:e,token:t,pubSubChannel:r}){try{e.reauthenticate&&(e.token=t,yield Le(e.reauthenticate),yield xe(no.connected(e.rpcConnectResult)),yield xe(r,zr()))}catch(e){Xt().error("Reauthenticate Error",e),yield xe(Vr({error:e}))}}function*$o(e){let t;Xt().debug("sessionStatusWatcher [started]");try{for(;;){const o=yield Oe([Ur.type,Vr.type,$r.type,Fr.type,Br.type,Dr.type]);switch(Xt().debug("sessionStatusWatcher",o.type,o.payload),o.type){case Ur.type:t&&(yield(r=t,void 0===r&&(r=q),Re("CANCEL",r))),t=yield Ne(Bo,e);break;case Vr.type:yield Ne(Fo,Lt(jt({},e),{action:o}));break;case $r.type:yield xe(e.pubSubChannel,Gr());break;case Fr.type:break;case Br.type:yield Ne(Vo,e);break;case Dr.type:yield Ne(Uo,{session:e.session,token:o.payload.token,pubSubChannel:e.pubSubChannel})}}}finally{(yield We())&&Xt().debug("sessionStatusWatcher [cancelled]")}var r}function*Bo(e){Xt().debug("startSaga [started]");try{const{session:t,pubSubChannel:r}=e,o=yield Ne(Po,t);yield xe(no.connected(t.rpcConnectResult)),yield xe(r,zr());const n=yield Ne(No);yield Oe(Nr.type),o.cancel(),n.cancel()}finally{(yield We())&&Xt().debug("startSaga [cancelled]")}}function*Fo(e){Xt().debug("sessionAuthErrorSaga [started]");try{const{pubSubChannel:t,session:r,action:o}=e,{error:n}=o.payload,s=n?new Do(n.code,n.message):new Error("Unauthorized");yield xe(t,Qr(s)),yield Le([r,r.disconnect])}finally{(yield We())&&Xt().debug("sessionAuthErrorSaga [cancelled]")}}var qo={};Dt(qo,{getComponent:()=>zo,getComponentsById:()=>Ho,getComponentsToCleanup:()=>Jo});var zo=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},Ho=({components:e})=>e.byId,Jo=e=>{const t=Ho(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r},Qo=e=>{const{componentListeners:t={},sessionListeners:r={},store:o,Component:n,customSagas:s=[]}=e,i=Object.keys(t),a=Object.keys(r);return e=>{const c=new n(Lt(jt({},e),{store:o})),d=new Map;let u=!0;const l=o.subscribe((()=>{const e=o.getState(),n=zo(e,c.__uuid)||{};for(const e of i){if(!1===u)return;const r=`${c.__uuid}.${e}`,o=d.get(r),s=n[e];if(void 0!==s&&o!==s){d.set(r,s);const o=t[e];"string"==typeof o?c[o](n):o(n)}}const s=Co(e);for(const e of a){if(!1===u)return;const t=`session.${e}`,o=d.get(t),n=s[e];if(void 0!==n&&o!==n){d.set(t,n);const o=r[e];"string"==typeof o?c[o](s):"function"==typeof o&&o(s)}}})),h=null==s?void 0:s.map((e=>o.runSaga(e,{instance:c,runSaga:o.runSaga})));return c.destroyer=()=>{u=!1,l(),d.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Vt(uo,Rr);var Go=e=>{var t;const{userOptions:r,SessionConstructor:o,preloadedState:n={},runSagaMiddleware:s=!0}=e,i=wt(),a={pubSubChannel:nt(),swEventChannel:nt()},c=xr({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:bo,preloadedState:n,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){var o;for(t.logger&&(Ht=t.logger),t.debug&&(e=>{null!=e?Object.assign(Qt,e):Qt={}})(t.debug),yield Ne(Lo);;){const n=yield Oe([jr.type,Dr.type]);(null==(o=null==n?void 0:n.payload)?void 0:o.token)&&(t.token=n.payload.token);try{yield Le(Wo,Lt(jt({},e),{userOptions:t,channels:r}))}catch(e){Xt().error("RootSaga Error:",e)}finally{(yield We())&&Xt().debug("rootSaga [cancelled]"),Xt().debug("Reboot rootSaga")}}})({SessionConstructor:o});i.run(e,{userOptions:r,channels:a})}return Lt(jt({},c),{runSaga:(e,t)=>i.run(e,Lt(jt({},t),{channels:a}))})},Ko=e=>e,Xo=Symbol("BaseComponent"),Yo=class{constructor(e){this.options=e,Ut(this,"__sw_symbol",Xo),Ut(this,"uuid",_()),Ut(this,"_eventsPrefix",""),Ut(this,"_eventsRegisterQueue",new Set),Ut(this,"_eventsEmitQueue",new Set),Ut(this,"_eventsNamespace"),Ut(this,"_eventsTransformsCache",new Map),Ut(this,"_requests",new Map),Ut(this,"_customSagaTriggers",new Map),Ut(this,"_destroyer"),Ut(this,"_emitterTransforms",new Map),Ut(this,"_emitterListenersCache",new Map),Ut(this,"_trackedEvents",[]),Ut(this,"_runningWorkers",[]),Ut(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(Zr({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&&pr(e)&&(t=this.__uuid),or({event:e,namespace:t})}_getPrefixedEvent(e){return!this._eventsPrefix||"string"!=typeof e||e.includes(`${this._eventsPrefix}.`)||ur(e)?e:`${this._eventsPrefix}.${e}`}_getInternalEvent(e){return this._getNamespacedEvent(this._getPrefixedEvent(e))}get logger(){return Xt()}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("no-cache"===t.mode)return t.instanceFactory(r);if(!this._eventsTransformsCache.has(e)){const o=t.instanceFactory(r);return this._eventsTransformsCache.set(e,o),o}return this._eventsTransformsCache.get(e)}cleanupEventHandlerTransformCache({internalEvent:e,force:t}){const r=this._eventsTransformsCache.get(e),o=this.listenerCount(e);return r&&(t||o<=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 o=r.get(t);return r.delete(t),this._emitterListenersCache.set(e,r),o}return t}_createStableEventHandler(e,t){return r=>{const o=this._emitterTransforms.get(e);if(this.logger.trace("Got emitterTransform for",e,o),!o)return t(r);const n=this.runAndCacheEventHandlerTransform({internalEvent:e,transform:o,payload:r});let s;const i=this._parseNestedFields(r,o);return s=ir({instance:n,payload:r,transformedPayload:i,transform:o}),t(s)}}_parseNestedFields(e,t,r=(e=>e),o){if(!t.nestedFieldsToProcess)return t.payloadTransform(e);if(e.__sw_proxy)return e;if(!o){const o=t.payloadTransform(e);return this._parseNestedFields(o,t,r,o)}return Array.isArray(e)?o=e.map(((o,n)=>this._parseNestedFields(r(o),t,r,e[n]))):e&&"object"==typeof e&&Object.entries(e).forEach((([e,n])=>{var s;const i=null==(s=t.nestedFieldsToProcess)?void 0:s[e],a=i?this._emitterTransforms.get(i.eventTransformType):void 0;o[e]=n&&"object"==typeof n?this._parseNestedFields(n,t,(e=>i&&a&&e&&"object"==typeof e?(({transform:e,payload:t})=>{const r=(({transform:e,payload:t})=>{if(!ar.has(e.type)){const r=e.instanceFactory(t);return ar.set(e.type,r),r}return ar.get(e.type)})({transform:e,payload:t}),o=e.payloadTransform(t);return ir({transform:e,payload:t,instance:r,transformedPayload:o})})({transform:a,payload:r(i.processInstancePayload(e))}):e),o[e]):r(n)})),o}getOrCreateStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);let o=r.get(t);return o||(o=this._createStableEventHandler(e,t),r.set(t,o),this._emitterListenersCache.set(e,r)),o}_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 o=this._getInternalEvent(e);this._trackEvent(o);const n=r?"once":"on";if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:n,params:[e,t]}),this.emitter;const s=this.getOrCreateStableEventHandler(o,t);return this.logger.trace("Registering event",o),this.emitter[n](o,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),o=this.getAndRemoveStableEventHandler(r,t);return this.cleanupEventHandlerTransformCache({internalEvent:r,force:!o}),this.logger.trace("Removing event listener",r),this._untrackEvent(r),this.emitter.off(r,o)}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 mr(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=Ko,transformResolve:o=Ko,transformReject:n=Ko}={transformParams:Ko,transformResolve:Ko,transformReject:Ko}){return new Promise(((s,i)=>{const a=_();this._requests.set(a,{resolve:s,reject:i,transformResolve:o,transformReject:n}),this.store.dispatch(Wr({requestId:a,componentId:this.__uuid,method:e,params:r(t)}))}))}triggerCustomSaga(e){return new Promise(((t,r)=>{const o=_();this._customSagaTriggers.set(o,{resolve:t,reject:r}),this.store.dispatch(jt({dispatchId:o},Xr(this.__uuid,e)))}))}settleCustomSagaTrigger({dispatchId:e,payload:t,kind:r}){const o=this._customSagaTriggers.get(e);o&&(o[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 To(this.store.getState())}get _sessionAuthState(){return Mo(this.store.getState())}_waitUntilSessionAuthorized(){switch(To(this.store.getState())){case"authorized":return Promise.resolve(this);case"unknown":case"authorizing":return new Promise(((e,t)=>{const r=this.store.subscribe((()=>{const o=To(this.store.getState()),n=Io(this.store.getState());if("authorized"===o)e(this),r();else if("unauthorized"===o){const e=n?new Do(n.code,n.message):new Error("Unauthorized");t(e),r()}}))}));case"unauthorized":return Promise.reject(new Error("Unauthorized"))}}_setEmitterTransform({event:e,handler:t,local:r}){const o=this._getInternalEvent(e);(r?pr(e):!pr(e)&&this.eventNames().includes(o))&&this._emitterTransforms.set(o,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)}))}runWorker(e,t){this._workers.has(e)?Xt().warn(`[runWorker] Worker with name ${e} has already been registerd.`):this._setWorker(e,t),this._attachWorker(e,t)}_setWorker(e,t){this._workers.set(e,t)}_attachWorker(e,t){var r=t,{worker:o}=r,n=Nt(r,["worker"]);const s=this.store.runSaga(o,jt({instance:this,runSaga:this.store.runSaga},n));this._runningWorkers.push(s),this._workers.delete(e)}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},Zo=class extends Yo{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=To(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(jr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(Lr())}},en=class extends Yo{constructor(e){super(e),this.options=e,Ut(this,"subscribeMethod","signalwire.subscribe"),Ut(this,"subscribeParams",{}),Ut(this,"_latestExecuteParams"),this.applyEmitterTransforms({local:!0});const t=()=>{this._latestExecuteParams=void 0};super.on("session.connected",t),super.on("session.disconnected",t),super.on("session.reconnecting",t)}shouldExecuteSubscribe(e){return!this._latestExecuteParams||JSON.stringify(e)!==JSON.stringify(this._latestExecuteParams)}async subscribe(){await this._waitUntilSessionAuthorized();const e=this.getSubscriptions();if(0===e.length)return void this.logger.debug("`subscribe()` was called without any listeners attached.");const t={method:this.subscribeMethod,params:Lt(jt({},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(),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")}},tn={audio_muted:!0,video_muted:!0,deaf:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(tn).map((e=>`video.member.updated.${e}`));var rn=er(tn);Object.keys(rn).map((e=>`member.updated.${e}`));var on={};Dt(on,{RoomSessionPlaybackAPI:()=>Jn,RoomSessionRecordingAPI:()=>zn,RoomSessionStreamAPI:()=>Gn,audioMuteMember:()=>Tn,audioUnmuteMember:()=>In,createRoomSessionPlaybackObject:()=>Qn,createRoomSessionRecordingObject:()=>Hn,createRoomSessionStreamObject:()=>Kn,deafMember:()=>Rn,deleteMemberMeta:()=>qn,deleteMeta:()=>kn,demote:()=>Dn,getLayouts:()=>cn,getMemberMeta:()=>$n,getMembers:()=>dn,getMeta:()=>_n,getPlaybacks:()=>vn,getRecordings:()=>fn,getStreams:()=>En,hideVideoMuted:()=>hn,play:()=>yn,promote:()=>Nn,removeAllMembers:()=>Un,removeMember:()=>Vn,setDeaf:()=>On,setHideVideoMuted:()=>pn,setInputSensitivityMember:()=>Ln,setInputVolumeMember:()=>xn,setLayout:()=>un,setMemberMeta:()=>Bn,setMemberPosition:()=>Wn,setMeta:()=>Sn,setOutputVolumeMember:()=>jn,setPositions:()=>ln,showVideoMuted:()=>mn,startRecording:()=>gn,startStream:()=>Cn,undeafMember:()=>An,updateMemberMeta:()=>Fn,updateMeta:()=>wn,videoMuteMember:()=>Mn,videoUnmuteMember:()=>Pn});var nn=()=>{},sn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:jt({room_session_id:this.roomSessionId},r)},t)}}),an=(e,t={})=>({value:function(r={}){var o=r,{memberId:n}=o,s=Nt(o,["memberId"]);return this.execute({method:e,params:jt({room_session_id:this.roomSessionId,member_id:n||this.memberId},s)},t)}}),cn=sn("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),dn=sn("video.members.get",{transformResolve:e=>({members:e.members})}),un=sn("video.set_layout",{transformResolve:nn}),ln=sn("video.set_position",{transformResolve:nn}),hn=sn("video.hide_video_muted",{transformResolve:nn}),mn=sn("video.show_video_muted",{transformResolve:nn}),pn={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:nn})}},fn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.recording.list"),t);try{const e=await this.execute({method:"video.recording.list",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.recording.list"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.recording.list"),t),e}}))}},gn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.recording.start"),t);try{const e=await this.execute({method:"video.recording.start",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.recording.start"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.recording.start"),t),e}}))}},vn={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.playback.list"),t);try{const e=await this.execute({method:"video.playback.list",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.playback.list"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.playback.list"),t),e}}))}},yn={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(fr("video.playback.start"),r);try{const t=await this.execute({method:"video.playback.start",params:jt({room_session_id:this.roomSessionId},e)});this.emit(fr("video.playback.start"),Lt(jt({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.playback.start"),r),e}}))}},bn=e=>sn(e,{transformResolve:nn,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:Nt(t,["room_session_id"])}}}),_n=sn("video.get_meta",{transformResolve:({meta:e})=>({meta:e})}),Sn=bn("video.set_meta"),wn=bn("video.update_meta"),kn={value:function(e){return this.execute({method:"video.delete_meta",params:{room_session_id:this.roomSessionId,keys:e}})}},En={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(fr("video.stream.list"),t);try{const e=await this.execute({method:"video.stream.list",params:{room_session_id:this.roomSessionId}});this.emit(fr("video.stream.list"),Lt(jt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.stream.list"),t),e}}))}},Cn={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(fr("video.stream.start"),r);try{const t=await this.execute({method:"video.stream.start",params:jt({room_session_id:this.roomSessionId},e)});this.emit(fr("video.stream.start"),Lt(jt({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(fr("video.stream.start"),r),e}}))}},Tn=an("video.member.audio_mute",{transformResolve:nn}),In=an("video.member.audio_unmute",{transformResolve:nn}),Mn=an("video.member.video_mute",{transformResolve:nn}),Pn=an("video.member.video_unmute",{transformResolve:nn}),Rn=an("video.member.deaf",{transformResolve:nn}),An=an("video.member.undeaf",{transformResolve:nn}),On={value:function(e){return this.execute({method:e?"video.member.deaf":"video.member.undeaf",params:{room_session_id:this.roomSessionId,member_id:this.memberId}},{transformResolve:nn})}},xn=an("video.member.set_input_volume",{transformResolve:nn}),jn=an("video.member.set_output_volume",{transformResolve:nn}),Ln=an("video.member.set_input_sensitivity",{transformResolve:nn}),Nn={value:function(e){var t=e,{memberId:r,mediaAllowed:o,joinAudioMuted:n,joinVideoMuted:s}=t,i=Nt(t,["memberId","mediaAllowed","joinAudioMuted","joinVideoMuted"]);return this.execute({method:"video.member.promote",params:jt({room_session_id:this.roomSessionId,member_id:r,media_allowed:o,join_audio_muted:n,join_video_muted:s},i)},{transformResolve:nn})}},Dn={value:function({memberId:e,mediaAllowed:t}){return this.execute({method:"video.member.demote",params:{room_session_id:this.roomSessionId,member_id:e,media_allowed:t}},{transformResolve:nn})}},Wn=an("video.member.set_position",{transformResolve:nn}),Vn={value:function(e){var t=e,{memberId:r}=t,o=Nt(t,["memberId"]);if(!r)throw new TypeError('Invalid or missing "memberId" argument');return this.execute({method:"video.member.remove",params:jt({room_session_id:this.roomSessionId,member_id:r},o)},{transformResolve:nn})}},Un={value:function(){return this.execute({method:"video.member.remove",params:{room_session_id:this.roomSessionId,member_id:"all"}},{transformResolve:nn})}},$n=an("video.member.get_meta",{transformResolve:({meta:e})=>({meta:e})}),Bn=an("video.member.set_meta",{transformResolve:nn}),Fn=an("video.member.update_meta",{transformResolve:nn}),qn=an("video.member.delete_meta",{transformResolve:nn}),zn=class extends Yo{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")}})}},Hn=e=>Qo({store:e.store,Component:zn,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Jn=class extends Yo{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}})}async seek(e){await this.execute({method:"video.playback.seek_absolute",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),position:Math.abs(e)}})}async forward(e=5e3){await this.execute({method:"video.playback.seek_relative",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),position:Math.abs(e)}})}async rewind(e=5e3){await this.execute({method:"video.playback.seek_relative",params:{room_session_id:this.getStateProperty("roomSessionId"),playback_id:this.getStateProperty("id"),position:-Math.abs(e)}})}},Qn=e=>Qo({store:e.store,Component:Jn,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Gn=class extends Yo{async stop(){await this.execute({method:"video.stream.stop",params:{room_session_id:this.getStateProperty("roomSessionId"),stream_id:this.getStateProperty("id")}})}},Kn=e=>Qo({store:e.store,Component:Gn,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Xn={};Dt(Xn,{BaseChatAPI:()=>vs,BaseChatConsumer:()=>gs,ChatMember:()=>ms,ChatMessage:()=>ps,createBaseChatObject:()=>ys,getMemberState:()=>is,getMembers:()=>os,getMessages:()=>rs,publish:()=>ts,setMemberState:()=>ss});var Yn=()=>{},Zn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),es=(e,t={})=>({value:function(r={}){var o=r,{memberId:n}=o,s=Nt(o,["memberId"]);return this.execute({method:e,params:jt({member_id:n},s)},t)}}),ts=Zn("chat.publish",{transformResolve:Yn}),rs=Zn("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>er(e))),cursor:e.cursor})}),os=Zn("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>er(e)))})}),ns=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 Lt(jt({},e),{channels:t})},ss=es("chat.member.set_state",{transformResolve:Yn,transformParams:ns}),is=es("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:ns}),as={};Dt(as,{BasePubSubConsumer:()=>ls,PubSubMessage:()=>cs,createBasePubSubObject:()=>hs});var cs=class{constructor(e){this.payload=e}get id(){return this.payload.id}get channel(){return this.payload.channel}get content(){return this.payload.content}get meta(){return this.payload.meta}get publishedAt(){return this.payload.publishedAt}},ds=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Oe((e=>e.type.startsWith("chat.")));switch(t.type){case"chat.channel.message":yield xe(e,{type:"chat.message",payload:t.payload});break;default:Xt().debug("[pubSubWorker] Unrecognized Action",t)}}},us=e=>e.map((e=>({name:e}))),ls=class extends en{constructor(e){super(e),Ut(this,"_eventsPrefix","chat"),Ut(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.runWorker("pubSub",{worker:ds})}getEmitterTransforms(){return new Map([[["message"],{type:"pubSubMessage",instanceFactory:()=>new cs({}),payloadTransform:e=>{const{channel:t,message:r}=e.params,o=Nt(r,["member"]);return er(Lt(jt({},o),{channel:t}))}}]])}_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:us(r)}}_setSubscribeParams(e){this.subscribeParams=jt(jt({},this.subscribeParams),e)}_getSubscribeParams({channels:e}){return jt({},this._getChannelsParam(e,"subscribe"))}_getUnsubscribeParams({channels:e}){const t=this._getChannelsParam(e,"unsubscribe");return jt({},t)}_checkMissingSubscriptions(){0===this.getSubscriptions().length&&(this.logger.info("Subscribe was called before any listeners were attached. Move `.subscribe()` right after your event listeners to suppress this message."),this.once("message",(()=>{})))}async subscribe(e){this._checkMissingSubscriptions();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 o=this.getSubscriptions();if(o.length>0){const e={method:"chat.unsubscribe",params:Lt(jt({},t),{events:o})};try{await this.execute(e)}catch(e){return r(e)}}else this.logger.warn("`unsubscribe()` was called without any listeners attached.");return e()}))}updateToken(e){return new Promise(((t,r)=>{this.once("session.auth_error",(e=>{r(e)})),this.once("session.connected",(()=>{t()})),this.store.dispatch(Pr.reauthAction({token:e}))}))}publish(e){return this.execute({method:"chat.publish",params:e})}async getAllowedChannels(){await this._waitUntilSessionAuthorized();const e=this.select(Mo);return e&&"channels"in e&&e.channels?e.channels:{}}},hs=e=>Qo({store:e.store,Component:ls,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),ms=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:{}}},ps=class extends cs{get member(){return this.payload.member}},fs=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Oe((e=>e.type.startsWith("chat.")));switch(t.type){case"chat.channel.message":break;case"chat.member.joined":case"chat.member.updated":case"chat.member.left":yield xe(e,t);break;default:Xt().debug("[chatWorker] Unrecognized Action",t)}}},gs=class extends ls{constructor(e){super(e),Ut(this,"_eventsPrefix","chat"),Ut(this,"subscribeMethod","chat.subscribe"),this.runWorker("chat",{worker:fs})}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:()=>new ps({}),payloadTransform:e=>{const{channel:t,message:r}=e.params;return er(Lt(jt({},r),{channel:t}))}}],[["member.joined","member.left","member.updated"],{type:"chatMember",instanceFactory:e=>{const{member:t}=e.params;return new ms(er(t))},payloadTransform:e=>{const{member:t}=e.params;return er(t)}}]])}},vs=sr(gs,{publish:ts,getMembers:os,getMessages:rs,setMemberState:ss,getMemberState:is}),ys=e=>Qo({store:e.store,Component:vs,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),bs={};function*_s(e){const{action:t,memberList:r,channels:{pubSubChannel:o}}=e,n={};t.payload.layout.layers.forEach((e=>{var t;const o=e.member_id;if(!o)return;const s=r.get(o);s&&e.position!==(null==(t=s.member)?void 0:t.current_position)?(Es({memberList:r,memberId:o,currentPosition:e.position}),n[o]=!0):n[o]=!1}));for(const[e,t]of r)if(n[e])yield xe(o,{type:"video.member.updated",payload:t});else if(void 0===n[e]){const t=Es({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield xe(o,{type:"video.member.updated",payload:t})}}function*Ss({action:e,channels:t,memberList:r}){var o,n;const s=e.payload.member.id,i=Es({memberList:r,memberId:s,currentPosition:null==(n=null==(o=r.get(s))?void 0:o.member)?void 0:n.current_position});if(!i)return;const{member:{updated:a=[]}}=e.payload,c=Lt(jt({},i),{member:jt(jt({},i.member),e.payload.member)});r.set(s,c);for(const r of a){const o=`${e.type}.${r}`;yield xe(t.pubSubChannel,{type:o,payload:c})}yield xe(t.pubSubChannel,{type:e.type,payload:c})}Dt(bs,{MEMBER_POSITION_COMPOUND_EVENTS:()=>ws,memberPositionWorker:()=>ks,memberUpdatedWorker:()=>Ss});var ws=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),ks=function*({instance:e,channels:t,initialState:r}){if(!r)return;const{swEventChannel:o}=t;let n=Cs(r);const s=e=>{n.has(e.member.id)||n.set(e.member.id,e)};for(;;){const r=yield Oe(o,(t=>("video.member.updated"===t.type||"video.layout.changed"===t.type||"video.member.joined"===t.type||"video.member.left"===t.type)&&Oo(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":s(r.payload),yield Ne(Ss,{action:r,channels:t,memberList:n,instance:e});break;case"video.member.joined":s(r.payload);break;case"video.member.left":n.delete(r.payload.member.id);break;case"video.layout.changed":yield Ne(_s,{action:r,channels:t,memberList:n,instance:e})}}},Es=({memberList:e,memberId:t,currentPosition:r})=>{const o=e.get(t);if(!o)return;if(!r)return o;const n=Lt(jt({},o),{member:Lt(jt({},null==o?void 0:o.member),{current_position:r})});return e.set(t,n),n},Cs=e=>{const t=e.room_session.members,r=new Map;return t.forEach((t=>{r.set(t.id,{room_id:e.room_session.room_id,room_session_id:e.room_session.id,member:t})})),r};Dt({},{configureFullStack:()=>Rs,configureJestStore:()=>Ps,createMockedLogger:()=>Ms,createPubSubChannel:()=>xs,createSwEventChannel:()=>js,rpcConnectResultVRT:()=>Os,wait:()=>As});var Ts="8f0a119a-cda7-4497-a47d-c81493b824d4",Is="<VRT>",Ms=()=>({fatal:jest.fn(),error:jest.fn(),warn:jest.fn(),info:jest.fn(),debug:jest.fn(),trace:jest.fn(),wsTraffic:jest.fn()}),Ps=e=>Go(jt({userOptions:{project:Ts,token:Is,devTools:!1,emitter:new Et},SessionConstructor:ao,runSagaMiddleware:!1},e)),Rs=()=>{const e={dispatch:console.log,connect:jest.fn(),disconnect:jest.fn(),execute:jest.fn()},t=new Et,r=Go({userOptions:{project:Ts,token:Is,devTools:!1,emitter:t},SessionConstructor:jest.fn().mockImplementation((()=>e))});return r.dispatch(Pr.initAction()),r.dispatch(Pr.authSuccessAction()),{store:r,session:e,emitter:t,destroy:()=>r.dispatch(Pr.destroyAction())}},As=e=>new Promise((t=>{setTimeout(t,e)})),Os={identity:"f3bc99df-2c3d-4fa4-b1dc-e8a8ffc579e6@e3fefa44-1bad-4be9-ad9b-1cbb9abd60c7.west-us",authorization:{type:"video",project:"8f0a119a-cda7-4497-a47d-c81493b824d4",scopes:["video"],scope_id:"26675883-8499-4ee9-85eb-691c4aa209f8",resource:"9c80f1e8-9430-4070-a043-937eb3a96b38",join_as:"member",user_name:"Joe",room:{name:"lobby",display_name:"Lobby",scopes:["room.self.audio_mute","room.self.audio_unmute"],meta:{}},signature:"SGZtkRD9fvuBAOUp1UF56zESxdEvGT6qSGZtkRD9fvuBAOUp1UF56zESxdEvGT6q",media_allowed:"all",audio_allowed:"both",video_allowed:"both",meta:{}},protocol:"signalwire_SGZtkRD9fvuBAOUp1UF56zESxdEvGT6qSGZtkRD9fvuBAOUp1UF56zESxdEvGT6q_03e8c927-8ea3-4661-86d5-778c3e03296a_8f0a119a-cda7-4497-a47d-c81493b824d4",ice_servers:[{urls:"turn.swire.io:443",credential:"sFTwvi8ShXcYNOcyYjFy3ATIUpQ=",credentialType:"password",username:"1619521908:8f0a119a-cda7-4497-a47d-c81493b824d4"}]},xs=()=>nt(),js=()=>nt(),Ls=jt({},ko);const Ns=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,Ds=()=>{if(!Ns())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},Ws=()=>Ds().getSupportedConstraints(),Vs=e=>e&&e instanceof MediaStream,Us=()=>"sinkId"in HTMLMediaElement.prototype,$s=async(e,t)=>{if(null!==e)if("string"==typeof t)if(Us())try{return await e.setSinkId(t)}catch(e){throw"SecurityError"===e.name?Xt().error(`You need to use HTTPS for selecting audio output device: ${e}`):Xt().error(`Error: ${e}`),e}else Xt().warn("Browser does not support output device selection.");else Xt().warn(`Invalid speaker deviceId: '${t}'`);else Xt().warn("No HTMLMediaElement to attach the speakerId")},Bs=e=>{var t;Vs(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(Fs))},Fs=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},qs={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},zs=e=>{if(e)return qs[e]},Hs=()=>Ds().enumerateDevices(),Js=async e=>{let t=await Hs().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},Qs=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 Js(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Xt().warn(`No ${e} devices to check for permissions!`),null)})(zs(e))},Gs=()=>Qs("camera"),Ks=()=>Qs("microphone"),Xs=()=>Qs("speaker"),Ys=async(e={audio:!0,video:!0})=>{var t;try{const t=Ds().getUserMedia(e);if(await(async e=>{const t=[];return(null==e?void 0:e.audio)&&t.push(Ks()),(null==e?void 0:e.video)&&t.push(Gs()),!!t.length&&(await Promise.all(t)).every(Boolean)})(e)){const e=new Error("Timeout reading from your devices");return await dr(t,5e3,e)}return await t}catch(r){switch(r.name){case"Error":Xt().error(null!==(t=null==r?void 0:r.message)&&void 0!==t?t:"navigator.mediaDevices.getUserMedia doesn't seem to be supported.");break;case"NotFoundError":Xt().error("No media tracks of the type specified were found that satisfy the given constraints.");break;case"NotReadableError":Xt().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":Xt().error(`The constraint: ${r.constraint} cannot be met by the selected device.`),Xt().info("List of available constraints:",Ws());break;case"NotAllowedError":Xt().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?Xt().error('Constraints can\'t be empty nor have "video" and "audio" set to false.'):Xt().error("Please check that you are calling this method from a secure context (using HTTPS rather than HTTP).");break;case"SecurityError":Xt().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 r}},Zs=e=>Ds().getDisplayMedia(e),ei=async(e,t=!1)=>ri(e,t),ti=(e,t={})=>{const r=[];return e.filter((({deviceId:e,kind:o,groupId:n})=>{var s;if(!e||t.targets&&!(null===(s=t.targets)||void 0===s?void 0:s.includes(o)))return!1;if(!n)return!0;const i=`${o}-${n}`,a=!(null==t?void 0:t.excludeDefault)||"default"!==e;return!(r.includes(i)||!a||(r.push(i),0))}))},ri=async(e,t=!1)=>{let r;if(!1===await Qs(e)){const t={audio:!(o=e)||"all"===o||"microphone"===o||"speaker"===o,video:!o||"all"===o||"camera"===o};r=await Ys(t)}var o;const n=await Js(zs(e));return r&&Bs(r),!0===t?n:ti(n)},oi=async(e,t,r)=>{const o=await ri(r,!0);for(let r=0;r<o.length;r++){const{deviceId:n,label:s}=o[r];if(e===n||t===s)return n}return null},ni=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},si={camera:Gs,microphone:Ks,speaker:Xs},ii=["camera","microphone","speaker"],ai=`Allowed targets are: '${ii.join("', '")}'`,ci={speaker:Us},di=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:ii).filter((e=>!!ii.includes(e)||(Xt().warn(`We'll ignore the "${e}" target as it is not allowed. ${ai}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${ai}.`);const o=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>si[e]())))).reduce(((e,r,o)=>{var n;const s=t[o];return e[!(s in ci)||(null===(n=ci[s])||void 0===n?void 0:n.call(ci))?"supported":"unsupported"].push([s,!!r]),e}),{supported:[],unsupported:[]})})({targets:r});if(o.unsupported.length>0&&r.length===o.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(o.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 n=[];const s=o.supported.reduce(((e,[t,r])=>(r?e.push(t):n.push(t),e)),[]);if(s.length!==r.length){const e=o.unsupported.length>0?`The platform doesn't support "${o.unsupported.map((([e])=>e)).join(", ")}" as target/s, which means it's not possible to watch for changes on those devices. `:"",t=n.length>0?`The user hasn't granted permissions for the following targets: ${n.join(", ")}. `:"";Xt().warn(`${e}${t}We'll be watching for the following targets instead: "${s.join(", ")}"`)}return Xt().debug(`Watching these targets: "${s.join(", ")}"`),s})({targets:e.targets}),r=new Et,o=await Hs(),n=null==t?void 0:t.reduce(((e,t)=>{const r=zs(t);return r&&e.push(r),e}),[]);let s=ti(o,{excludeDefault:!0,targets:n});return Ds().addEventListener("devicechange",(async()=>{const e=await Hs(),t=s,o=ti(e,{excludeDefault:!0,targets:n});s=o;const i=((e,t)=>{const r=ni(e),o=ni(e),n=[];Xt().debug("[_getDeviceListDiff] <- oldDevices",e),Xt().debug("[_getDeviceListDiff] -> newDevices",t);const s=t.filter((e=>{const t=e.deviceId,s=r.get(t);return s&&(o.delete(t),e.label!==s.label&&n.push(e)),void 0===s}));return{updated:n.map((e=>({type:"updated",payload:e}))),removed:Array.from(o,(([e,t])=>t)).map((e=>({type:"removed",payload:e}))),added:s.map((e=>({type:"added",payload:e})))}})(t,o),a=i.added.length>0,c=i.removed.length>0,d=i.updated.length>0;(a||c||d)&&r.emit("changed",{changes:i,devices:o}),a&&r.emit("added",{changes:i.added,devices:o}),c&&r.emit("removed",{changes:i.removed,devices:o}),d&&r.emit("updated",{changes:i.updated,devices:o})})),r},ui=e=>"function"==typeof(null==e?void 0:e.getTracks),li=e=>{Xt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)return Ys(e)},hi=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:o=""}=e;if(r){const e=await oi(r,o,"microphone").catch((e=>null));e&&("boolean"==typeof t&&(t={}),t.deviceId={exact:e})}let{video:n=!1,camId:s}=e;const{camLabel:i=""}=e;if(s){const e=await oi(s,i,"camera").catch((e=>null));e&&("boolean"==typeof n&&(n={}),n.deviceId={exact:e})}return{audio:t,video:n}},mi=e=>/^m=audio/.test(e),pi=e=>/^m=video/.test(e),fi=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 o=(e=>{const t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),r=e.match(t);return r&&2==r.length?r[1]:null})(t[r]),n=new RegExp(`a=fmtp:${o}`),s=t.findIndex((e=>n.test(e)));return s>=0?/stereo=1;/.test(t[s])||(t[s]+="; stereo=1; sprop-stereo=1"):t[r]+=`\r\na=fmtp:${o} stereo=1; sprop-stereo=1`,t.join("\r\n")};class gi{constructor(e,t){this.call=e,this.type=t,this.uuid=_(),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 Xt()}get localStream(){return this._localStream}set localStream(e){this._localStream=e}get remoteStream(){return this._remoteStream}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;try{const r=this._getSenderByKind(e);if(!r)return this.logger.info(`There is not a '${e}' sender to stop.`);r.track&&(Fs(r.track),null===(t=this._localStream)||void 0===t||t.removeTrack(r.track))}catch(t){this.logger.error("RTCPeer stopTrackSender error",e,t)}}async restoreTrackSender(e){var t;try{const r=this._getSenderByKind(e);if(!r)return this.logger.info(`There is not a '${e}' sender to restore.`);if(r.track&&"ended"!==r.track.readyState)return this.logger.info(`There is already an active ${e} track.`);const o=await hi(this.options),n=await li({[e]:o[e]});if(n&&Vs(n)){const o=n.getTracks().find((t=>t.kind===e));o&&(await r.replaceTrack(o),null===(t=this._localStream)||void 0===t||t.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 o=Object.assign(Object.assign({},r.track.getConstraints()),t),n=this.getDeviceId(e);n&&!this.options.screenShare&&(o.deviceId={exact:n}),this.logger.info(`Apply ${e} constraints`,this.call.id,o),await r.track.applyConstraints(o)}}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=null===(t=this.instance)||void 0===t?void 0:t.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={voiceActivityDetection:!1};this._supportsAddTransceiver()||(e.offerToReceiveAudio=this.options.negotiateAudio,e.offerToReceiveVideo=this.options.negotiateVideo);const t=await this.instance.createOffer(e);await this._setLocalDescription(t)}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)}}onRemoteBye({code:e,message:t}){this._rejectStartMethod({code:e,message:t}),this.stop()}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._localStream=await this._retrieveLocalStream()}catch(e){return this._rejectStartMethod(e),this.call.setState("hangup")}this._setupRTCPeerConnection();let r=!1;if(this._localStream&&Vs(this._localStream)){const e=this._localStream.getAudioTracks();this.logger.debug("Local audio tracks: ",e);const t=this._localStream.getVideoTracks();if(this.logger.debug("Local video tracks: ",t),r=Boolean(e.length||t.length),this.isOffer&&"function"==typeof this.instance.addTransceiver){const r={direction:this.options.negotiateAudio?"sendrecv":"sendonly",streams:[this._localStream]};this.logger.debug("Applying audioTransceiverParams",r),e.forEach((e=>{this.instance.addTransceiver(e,r)}));const o={direction:this.options.negotiateVideo?"sendrecv":"sendonly",streams:[this._localStream]};if(this.isSimulcast&&(o.sendEncodings=["0","1","2"].map((e=>({active:!0,rid:e,scaleResolutionDownBy:6*Number(e)||1})))),this.logger.debug("Applying videoTransceiverParams",o),t.forEach((e=>{this.instance.addTransceiver(e,o)})),this.isSfu){const{msStreamsNumber:e=5}=this.options;this.logger.debug("Add ",e,"recvonly MS Streams"),o.direction="recvonly";for(let t=0;t<Number(e);t++)this.instance.addTransceiver("video",o)}}else if("function"==typeof this.instance.addTrack){const r=this._localStream;e.forEach((e=>this.instance.addTrack(e,r))),t.forEach((e=>this.instance.addTrack(e,r)))}else this.instance.addStream(this._localStream)}this.isOffer?(this.options.negotiateAudio&&this._checkMediaToNegotiate("audio"),this.options.negotiateVideo&&this._checkMediaToNegotiate("video"),this._supportsAddTransceiver()||r||this.startNegotiation()):this.startNegotiation()}))}detachAndStop(){var e;"function"==typeof(null===(e=this.instance)||void 0===e?void 0:e.getTransceivers)&&this.instance.getTransceivers().forEach((e=>{e.sender.track&&e.sender.track.stop(),e.receiver.track&&e.receiver.track.stop()})),this.stop()}stop(){var e,t,r;null===(e=this._localStream)||void 0===e||e.getTracks().forEach((e=>e.stop())),null===(t=this._remoteStream)||void 0===t||t.getTracks().forEach((e=>e.stop())),null===(r=this.instance)||void 0===r||r.close()}_supportsAddTransceiver(){return"function"==typeof this.instance.addTransceiver}_checkMediaToNegotiate(e){if(!this._getSenderByKind(e)&&this._supportsAddTransceiver()){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}=this.instance.localDescription;if(-1===e.indexOf("candidate"))return this.logger.debug("No candidate - retry \n"),void this.startNegotiation(!0);this.instance.removeEventListener("icecandidate",this._onIce);try{await this.call.onLocalSDPReady(this)}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:o,googleStartBitrate:n}=this.options;return e.sdp&&t&&(e.sdp=fi(e.sdp)),e.sdp&&r&&o&&n&&(e.sdp=((e,t,r,o)=>{const n=e.split("\r\n");return n.forEach(((e,s)=>{/^a=fmtp:\d*/.test(e)?n[s]+=`;x-google-max-bitrate=${t};x-google-min-bitrate=${r};x-google-start-bitrate=${o}`:/^a=mid:(1|video)/.test(e)&&(n[s]+=`\r\nb=AS:${t}`)})),n.join("\r\n")})(e.sdp,r,o,n)),this.instance.setLocalDescription(e)}_setRemoteDescription(e){e.sdp&&this.options.useStereo&&(e.sdp=fi(e.sdp)),e.sdp&&this.instance.localDescription&&(e.sdp=((e,t)=>{const r="\r\n",o=this.instance.localDescription.sdp.split(r);if(o.findIndex(mi)<o.findIndex(pi))return e;const n=e.split(r),s=n.findIndex(mi),i=n.findIndex(pi),a=n.slice(s,i),c=n.slice(i,n.length-1);return[...n.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(Vs(this.options.localStream))return this.options.localStream;const e=await hi(this.options);return li(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._remoteStream=e.streams[0]})),this.instance.addEventListener("addstream",(e=>{e.stream&&(this._remoteStream=e.stream)}))}}
7
7
  /*! *****************************************************************************
8
8
  Copyright (c) Microsoft Corporation.
9
9
 
@@ -17,5 +17,5 @@
17
17
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
18
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
19
  PERFORMANCE OF THIS SOFTWARE.
20
- ***************************************************************************** */function vi(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}return r}const yi=function*(e){Xt().debug("vertoEventWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n}=t,{rtcPeerId:s}=o;if(!s)throw new Error("Missing rtcPeerId for roomSubscribedWorker");for(;;){const e=yield Oe(n,(e=>{var t;return"webrtc.message"===e.type&&(null===(t=e.payload.params)||void 0===t?void 0:t.callID)===s})),{id:t,method:o,params:i={}}=e.payload,{callID:a,nodeId:c}=i,d=r.getRTCPeerById(a);if(!d){Xt().warn(`RTCPeer '${a}' not found for method: '${o}'`,i);continue}const u=r.peer;switch(o){case"verto.media":case"verto.answer":d.uuid===(null==u?void 0:u.uuid)&&r.setState("verto.media"===o?"early":"active"),(null==i?void 0:i.sdp)&&d.onRemoteSdp(i.sdp),yield xe(Pr.executeAction({method:"video.message",params:{message:Mr(t,o),node_id:c}}));break;case"verto.bye":yield Le(r.onVertoBye,{rtcPeerId:a,byeCause:null==i?void 0:i.cause,byeCauseCode:null==i?void 0:i.causeCode,redirectDestination:null==i?void 0:i.redirectDestination}),yield xe(Pr.executeAction({method:"video.message",params:{message:Mr(t,o),node_id:c}}));break;case"verto.ping":{const{nodeId:e}=i,t=vi(i,["nodeId"]);yield xe(Pr.executeAction({method:"video.message",params:{message:Ir(t),node_id:e}}));break}case"verto.mediaParams":{if(!a||!i.mediaParams){Xt().warn("Invalid mediaParams event",i);break}const{audio:e,video:t}=i.mediaParams;d&&t&&d.applyMediaConstraints("video",t),d&&e&&d.applyMediaConstraints("audio",e);break}default:return Xt().warn(`Unknown Verto method: ${o}`,i)}}Xt().trace("vertoEventWorker ended")},bi=function*(e){Xt().debug("roomSubscribedWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n,pubSubChannel:s}=t,{rtcPeerId:i}=o;if(!i)throw new Error("Missing rtcPeerId for roomSubscribedWorker");const a=yield Oe(n,(e=>"video.room.subscribed"===e.type&&e.payload.call_id===i));r._attachListeners(a.payload.room_session.id),r.applyEmitterTransforms(),r.setActiveRTCPeer(i),yield xe(mo.upsert({id:a.payload.call_id,roomId:a.payload.room_session.room_id,roomSessionId:a.payload.room_session.id,memberId:a.payload.member_id,previewUrl:a.payload.room_session.preview_url})),yield xe(s,{type:"video.room.joined",payload:a.payload}),Xt().debug("roomSubscribedWorker ended",i)},_i=function*(e){Xt().debug("promoteDemoteWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n}=t,{rtcPeerId:s}=o;if(!s)throw new Error("Missing rtcPeerId for promoteDemoteWorker");const i=yield Oe(n,(e=>("video.member.promoted"===e.type||"video.member.demoted"===e.type)&&e.payload.member_id===r.memberId));Xt().debug("promoteDemoteWorker:",i.type,i.payload),yield xe(no.updateAuthState(i.payload.authorization));const a=yield De(Ls.getAuthState);if(!a)throw new Error(`Invalid authState for '${i.type}'`);const{audio_allowed:c,video_allowed:d}=a;switch(i.type){case"video.member.promoted":r.updateMediaOptions({audio:"both"===c,video:"both"===d,negotiateAudio:"none"!==c,negotiateVideo:"none"!==d});break;case"video.member.demoted":r.updateMediaOptions({audio:!1,video:!1,negotiateAudio:"none"!==c,negotiateVideo:"none"!==d})}r._triggerNewRTCPeer(),Xt().debug("promoteDemoteWorker ended",s)},Si={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},wi=Object.assign(Object.assign({},Si),{noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1}),ki={width:{ideal:1280,min:320},height:{ideal:720,min:180},aspectRatio:{ideal:16/9}},Ei={destinationNumber:"room",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:Si,video:ki,useStereo:!1,attach:!1,screenShare:!1,additionalDevice:!1,userVariables:{},requestTimeout:1e4,autoApplyMediaParams:!0,iceGatheringTimeout:2e3};class Ci extends Yo{constructor(e){super(e),this.gotEarly=!1,this.doReinvite=!1,this._eventsPrefix="video",this.state="new",this.prevState="new",this.rtcPeerMap=new Map,this.onVertoBye=e=>{const{rtcPeerId:t,byeCause:r="NORMAL_CLEARING",byeCauseCode:o="16",redirectDestination:n}=e;this.cause=String(r),this.causeCode=String(o);const s=this.getRTCPeerById(t);return s?n&&s.localSdp?(this.logger.debug("Redirect Destination to:",n,"for RTCPeer:",s.uuid),void this.executeInvite(s.localSdp,s.uuid,n)):(s.onRemoteBye({code:this.causeCode,message:this.cause}),void(this.activeRTCPeerId===(null==s?void 0:s.uuid)&&this.setState("hangup"))):this.logger.warn("Invalid RTCPeer to hangup",e)},this.options=Object.assign(Object.assign({},Ei),e),this._checkDefaultMediaConstraints(),this.setState("new"),this.logger.debug("New Call with Options:",this.options),this.applyEmitterTransforms({local:!0})}get id(){return this.__uuid}get active(){return"active"===this.state}get trying(){return"trying"===this.state}get memberId(){return this.component.memberId}get previewUrl(){return this.component.previewUrl}get roomId(){return this.component.roomId}get roomSessionId(){return this.component.roomSessionId}get callId(){var e;return(null===(e=this.peer)||void 0===e?void 0:e.uuid)||""}get localStream(){var e;return null===(e=this.peer)||void 0===e?void 0:e.localStream}set localStream(e){this.peer&&(this.peer.localStream=e)}get remoteStream(){var e;return null===(e=this.peer)||void 0===e?void 0:e.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(Ls.getIceServers)}get component(){return this.select((e=>qo.getComponent(e,this.callId)))||{}}dialogParams(e){const{destinationNumber:t,attach:r,callerName:o,callerNumber:n,remoteCallerName:s,remoteCallerNumber:i,userVariables:a,screenShare:c,additionalDevice:d,pingSupported:u=!0}=this.options;return{dialogParams:{id:e,destinationNumber:t,attach:r,callerName:o,callerNumber:n,remoteCallerName:s,remoteCallerNumber:i,userVariables:a,screenShare:c,additionalDevice:d,pingSupported:u}}}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(){var e;return Boolean(null===(e=this.peer)||void 0===e?void 0:e.hasAudioReceiver)}get withVideo(){var e;return Boolean(null===(e=this.peer)||void 0===e?void 0:e.hasVideoReceiver)}get localVideoTrack(){return this.peer?this.peer.localVideoTrack:null}get localAudioTrack(){return this.peer?this.peer.localAudioTrack:null}get peer(){return this.getRTCPeerById(this.activeRTCPeerId)}set peer(e){if(e){if(this.logger.debug("Set RTCPeer",e.uuid,e),this.rtcPeerMap.set(e.uuid,e),this.peer&&this.callId!==e.uuid){const e=this.peer.uuid;this.logger.info(">>> Stop old RTCPeer",e),this.hangup(e).then(console.warn).catch(console.error),this.peer.detachAndStop()}this.logger.info(">>> Replace RTCPeer with",e.uuid),this.activeRTCPeerId=e.uuid}else this.logger.warn("Invalid RTCPeer",e)}getRTCPeerById(e){return this.rtcPeerMap.get(e)}appendRTCPeer(e){return this.rtcPeerMap.set(e.uuid,e)}setActiveRTCPeer(e){this.peer=this.rtcPeerMap.get(e)}vertoExecute(e){return this.execute({method:"video.message",params:e})}async _triggerNewRTCPeer(){this.logger.debug("_triggerNewRTCPeer Start");try{this.logger.debug("Build a new RTCPeer");const e=new gi(this,"offer");this.appendRTCPeer(e),this.logger.debug("Run workers for the new RTCPeer",e.uuid),this.runRTCPeerWorkers(e.uuid),this.logger.debug("Trigger start for the new RTCPeer!"),await e.start()}catch(e){this.logger.error("Error building new RTCPeer to promote/demote",e)}}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,o)=>{var n;try{if(!this.peer)return o(new Error("Invalid RTCPeerConnection."));if(!Object.keys(e).length)return o(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 Ys(e)}catch(s){if(s instanceof DOMException&&"Concurrent mic process limit."===s.message){let o={};null===(n=this.localStream)||void 0===n||n.getTracks().forEach((t=>{var r;o[t.kind]=t.getConstraints(),void 0!==e[t.kind]&&(this.logger.debug("updateConstraints stop old tracks to retrieve new ones"),Fs(t),null===(r=this.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(o,{attempt:t+1}))}}return this.logger.error("updateConstraints",s),o(s)}this.logger.debug("updateConstraints got stream",s),this.localStream||(this.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:o})=>r.track&&r.track.kind===t.kind?(this.logger.debug("Found transceiver by sender"),!0):o.track&&o.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.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 - "),Fs(e),null===(r=this.localStream)||void 0===r||r.removeTrack(e))})),this.localStream.addTrack(t)):(this.logger.debug("updateConstraints no transceiver found. addTrack and start dancing!"),this.peer.type="offer",this.doReinvite=!0,this.localStream.addTrack(t),i.addTrack(t,this.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),o(e)}}))}runRTCPeerWorkers(e){this.runWorker("vertoEventWorker",{worker:yi,initialState:{rtcPeerId:e}}),!this.options.additionalDevice&&!this.options.screenShare&&(this.runWorker("roomSubscribedWorker",{worker:bi,initialState:{rtcPeerId:e}}),this.runWorker("promoteDemoteWorker",{worker:_i,initialState:{rtcPeerId:e}}))}invite(){return new Promise((async(e,t)=>{this.direction="outbound",this.peer=new gi(this,"offer");try{this.runRTCPeerWorkers(this.peer.uuid),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 gi(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){if(!e.instance.localDescription)throw this.logger.error("Missing localDescription",e),new Error("Invalid RTCPeerConnection localDescription");const{type:t,sdp:r}=e.instance.localDescription,o=this._mungeSDP(r);switch(this.logger.debug("LOCAL SDP \n",`Type: ${t}`,"\n\n",o),t){case"offer":return e.instance.remoteDescription?this.executeUpdateMedia(o,e.uuid):this.executeInvite(o,e.uuid);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${t}' on call ${this.id}`)}}async executeInvite(e,t,r){const o=this.getRTCPeerById(t);if(!o||o.instance.remoteDescription)throw new Error(`RTCPeer '${t}' already has a remoteDescription. Invalid invite.`);"new"===this.state&&this.setState("requesting");try{const o=this.options.screenShare?{layout:this.options.layout,positions:this.options.positions}:{},n=kr(Object.assign(Object.assign(Object.assign({},this.dialogParams(t)),o),{sdp:e}));let s=[];s=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions();const i=await this.vertoExecute({message:n,node_id:r,subscribe:s});this.logger.debug("Invite response",i)}catch(e){throw this.setState("hangup"),e.jsonrpc}}async executeUpdateMedia(e,t){try{const r=Cr(Object.assign(Object.assign({},this.dialogParams(t)),{sdp:e,action:"updateMedia"})),o=await this.vertoExecute({message:r});if(o.sdp||this.logger.error("UpdateMedia invalid SDP answer",o),this.logger.debug("UpdateMedia response",o),!this.peer)return this.logger.error("Invalid RTCPeer to updateMedia");await this.peer.onRemoteSdp(o.sdp)}catch(e){throw this.logger.error("UpdateMedia error",e),e.jsonrpc}}async hangup(e){const t=null!=e?e:this.callId;if(!t)throw new Error("Invalid RTCPeer ID to hangup");try{const e=Er(this.dialogParams(t));await this.vertoExecute({message:e})}catch(e){this.logger.error("Hangup error:",e)}finally{if(t!==this.callId)return this.logger.warn("Prevent setState hangup",t,this.callId);this.setState("hangup")}}dtmf(e){const t=this.callId;if(!t)throw new Error("Invalid RTCPeer ID to send DTMF");const r=Tr(Object.assign(Object.assign({},this.dialogParams(t)),{dtmf:e}));this.vertoExecute({message:r})}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()}}updateMediaOptions(e){this.logger.debug("updateMediaOptions",Object.assign({},e)),this.options=Object.assign(Object.assign({},this.options),e),this._checkDefaultMediaConstraints()}_mungeSDP(e){return e}_checkDefaultMediaConstraints(){!0===this.options.video&&(this.options.video=ki),!0===this.options.audio&&(this.options.audio=this.options.screenShare?wi:Si)}_finalize(){this.rtcPeerMap.forEach((e=>{e.stop()})),this.rtcPeerMap.clear(),this.destroy()}}const Ti=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e.addEventListener("pause",(()=>{e.play().catch((t=>{Xt().error("Video Element Paused",e,t)}))})),e},Ii=({x:e,y:t,width:r,height:o})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${o}%`}),Mi=Pr.createAction("swJs/audioSetSpeakerAction"),Pi=({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:o}){try{const n=new Map,s=Ti(),i={status:"hidden",get id(){return`sw-sdk-${r.id}`},get domElement(){return n.get(this.id)},set domElement(e){e?(Xt().debug("Set localOverlay",e),n.set(this.id,e)):(Xt().debug("Remove localOverlay"),n.delete(this.id))},hide(){if(!this.domElement)return Xt().warn("Missing localOverlay to hide");this.domElement.style.opacity="0"},show(){return this.domElement?"hidden"===this.status?Xt().info("localOverlay not visible"):void(this.domElement.style.opacity="1"):Xt().warn("Missing localOverlay to show")},setLocalOverlayMediaStream(e){if(!this.domElement)return Xt().warn("Missing localOverlay to set the local overlay stream");const t=this.domElement.querySelector("video");t&&(t.srcObject=e)}},a=(({localOverlay:e,rootElement:t})=>async({layout:r,myMemberId:o,localStream:n})=>{Xt().debug("Process layout.changed");try{const{layers:s=[]}=r,i=s.find((({member_id:e})=>e===o));let a=e.domElement;if(e.status=i?"visible":"hidden",!i)return Xt().debug("Location not found"),void(a&&(Xt().debug("Current layer not visible"),e.hide()));if(!a){Xt().debug("Build myLayer"),a=(({location:e})=>{const{top:t,left:r,width:o,height:n}=Ii(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=o,s.style.height=n,s})({location:i}),a.id=e.id;const r=Ti();r.srcObject=n,r.disablePictureInPicture=!0,r.style.width="100%",r.style.height="100%",r.style.pointerEvents="none",a.appendChild(r);const o=t.querySelector(".mcuLayers"),s=o?.querySelector(`#${a.id}`);return void(o&&!s&&(o.appendChild(a),e.domElement=a))}const{top:c,left:d,width:u,height:l}=Ii(i);Xt().debug("Update myLayer:",c,d,u,l);const h=n.getVideoTracks().length>0;a.style.opacity=h?"1":"0",a.style.top=c,a.style.left=d,a.style.width=u,a.style.height=l}catch(e){Xt().error("Layout Changed Error",e)}})({rootElement:e,localOverlay:i});let c;r.on("layout.changed",(e=>{Xt().debug("Received layout.changed"),r.peer?.hasVideoSender&&r.localStream?a({layout:e.layout,localStream:r.localStream,myMemberId:r.memberId}):i.hide()})),r.once("room.subscribed",(e=>{const t=e.room_session.members?.find((e=>e.id===r.memberId));if(t?.audio_muted)try{r.stopOutboundAudio()}catch(e){Xt().error("Error handling audio_muted",e)}if(t?.video_muted)try{r.stopOutboundVideo()}catch(e){Xt().error("Error handling video_muted",e)}r.localStream&&i.setLocalOverlayMediaStream(r.localStream)})),r.on("member.updated.video_muted",(e=>{try{const{member:t}=e;t.id===r.memberId&&"video_muted"in t&&(t.video_muted?i.hide():i.show())}catch(e){Xt().error("Error handling video_muted",e)}})),r.on("track",(function(r){switch(r.track.kind){case"video":c=o(Oi,{applyLocalVideoOverlay:t,rootElement:e,track:r.track,element:s})}})),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),n.clear(),c?.cancel()}))}catch(e){Xt().error("videoElementSaga",e)}};function*Ri({element:e,room:t}){const r=Pr.getCustomSagaActionType(t.__uuid,Mi);for(;;){const o=yield Oe([r]);try{switch(o.type){case r:const n=yield Le($s,e,o.payload);t.settleCustomSagaTrigger({dispatchId:o.dispatchId,payload:n,kind:"resolve"})}}catch(e){t.settleCustomSagaTrigger({dispatchId:o.dispatchId,payload:e,kind:"reject"}),Xt().error(e)}}}function*Ai({track:e,element:t,speakerId:r,room:o}){(({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&&$s(t,r).catch((()=>{})),yield Ne(Ri,{element:t,room:o})}function*Oi({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:o}){(async r=>{if((({track:e,element:t})=>{t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({element:o,track:r}),o.style.width="100%",o.style.maxHeight="100%",!t)return void e.appendChild(o);if(e.querySelector(".mcuContent"))return void Xt().debug("MCU Content already there");const n=document.createElement("div");n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.right="0",n.style.bottom="0",n.appendChild(o);const s=document.createElement("div");s.classList.add("paddingWrapper"),s.style.paddingBottom="56.25%",s.style.position="relative",s.style.width="100%",s.appendChild(n);const i=document.createElement("div");i.classList.add("mcuLayers"),i.style.display="none",s.appendChild(i);const a=document.createElement("div");a.classList.add("mcuContent"),a.style.position="relative",a.style.width="100%",a.style.margin="0 auto",a.style.display="flex",a.style.alignItems="center",a.style.justifyContent="center",a.appendChild(s),e.appendChild(a),o.readyState===HTMLMediaElement.HAVE_NOTHING&&(Xt().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:o})),i.style.display="block"})(r).catch((e=>{Xt().error("Handle video track error",e)}))}const xi={errors:"onError",responses:"onSuccess"},ji={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},Li=sr(class extends Ci{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:on.audioMuteMember,audioUnmute:on.audioUnmuteMember,videoMute:on.videoMuteMember,videoUnmute:on.videoUnmuteMember,setMicrophoneVolume:on.setInputVolumeMember,setInputVolume:on.setInputVolumeMember,setInputSensitivity:on.setInputSensitivityMember}),Ni=sr(class extends Ci{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:on.audioMuteMember,audioUnmute:on.audioUnmuteMember,videoMute:on.videoMuteMember,videoUnmute:on.videoUnmuteMember,setInputVolume:on.setInputVolumeMember,setMicrophoneVolume:on.setInputVolumeMember,setInputSensitivity:on.setInputSensitivityMember}),Di=()=>{},Wi="video.memberList.updated",Vi=or({event:Wi}),Ui=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Bt),e)),[]).join(".")})(Vi),$i=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*Bi({pubSubChannel:e}){const t=new Map;function*r(r){const o={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 xe(e,{type:Ui,payload:o})}for(;;){const t=yield Oe(e,(({type:e})=>$i.includes(e)));yield Ne(r,t)}}const Fi=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(Vi))))(r))return;const{cleanup:o}=((e,t)=>{(e=>mr($i).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,Di)}));const r=({members:t})=>{e.emit(Wi,{members:t})};return e.on(Ui,r),{cleanup:()=>{e.off(Ui,r)}}})(t,r);yield Ne(Bi,{pubSubChannel:e}),t.once("destroy",(()=>{o()}))},qi=function*(e){if(!e.initialState)throw new Error("[memberPositionWorker] Missing initialState");yield Ne(bs.memberPositionWorker,e)},zi=function*(e){Xt().trace("childMemberJoinedWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n}=t,{parentId:s}=o;if(!s)throw new Error("Missing parentId for childMemberJoinedWorker");const i=yield Oe(n,(e=>"video.member.joined"===e.type&&e.payload.member.parent_id===s)),{member:a}=i.payload;a?.parent_id&&(r._attachListeners(a.id),r.applyEmitterTransforms(),(yield De(qo.getComponent,a.parent_id))&&(yield xe(mo.upsert({id:r.callId,roomId:i.payload.room_id,roomSessionId:i.payload.room_session_id,memberId:a.id})))),Xt().trace("childMemberJoinedWorker ended")},Hi=sr(class extends Ci{_screenShareList=new Set;_deviceList=new Set;get screenShareList(){return Array.from(this._screenShareList)}get deviceList(){return Array.from(this._deviceList)}getEmitterTransforms(){return new Map([[["video.room.joined"],{type:"roomSession",instanceFactory:()=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{recordings:{eventTransformType:"roomSessionRecording",processInstancePayload:e=>({recording:e})},playbacks:{eventTransformType:"roomSessionPlayback",processInstancePayload:e=>({playback:e})},streams:{eventTransformType:"roomSessionStream",processInstancePayload:e=>({stream:e})}}}],[[fr("video.recording.list")],{type:"roomSessionRecordingList",instanceFactory:e=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{recordings:{eventTransformType:"roomSessionRecording",processInstancePayload:e=>({recording:e})}}}],[[fr("video.playback.list")],{type:"roomSessionPlaybackList",instanceFactory:e=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{playbacks:{eventTransformType:"roomSessionPlayback",processInstancePayload:e=>({playback:e})}}}],[[fr("video.recording.start"),"video.recording.started","video.recording.updated","video.recording.ended"],{type:"roomSessionRecording",instanceFactory:e=>on.createRoomSessionRecordingObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>er({...e.recording,room_session_id:this.roomSessionId})}],[[fr("video.playback.start"),"video.playback.started","video.playback.updated","video.playback.ended"],{type:"roomSessionPlayback",instanceFactory:e=>on.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>er({...e.playback,room_session_id:this.roomSessionId})}],[[fr("video.stream.list")],{type:"roomSessionStreamList",instanceFactory:e=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{streams:{eventTransformType:"roomSessionStream",processInstancePayload:e=>({stream:e})}}}],[[fr("video.stream.start"),"video.stream.started","video.stream.ended"],{type:"roomSessionStream",instanceFactory:e=>on.createRoomSessionStreamObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>er({...e.stream,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...bs.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.runWorker("memberListUpdated",{worker:Fi})}attachOnSubscribedWorkers(e){this.runWorker("memberPositionWorker",{worker:qi,initialState:e})}async createScreenShareObject(e={}){return this.startScreenShare(e)}async startScreenShare(e={}){const{autoJoin:t=!0,audio:r=!1,video:o=!0,layout:n,positions:s}=e,i=await Zs({audio:!0===r?ji:r,video:o}),a={...this.options,screenShare:!0,recoverCall:!1,localStream:i,remoteStream:void 0,userVariables:{...this.options?.userVariables||{},memberCallId:this.callId,memberId:this.memberId},layout:n,positions:s},c=Qo({store:this.store,Component:Li,componentListeners:xi})(a);i.getVideoTracks().forEach((e=>{e.addEventListener("ended",(()=>{c&&c.active&&c.leave()}))})),c.once("destroy",(()=>{c.emit("room.left"),this._screenShareList.delete(c)}));try{return c.runWorker("childMemberJoinedWorker",{worker:zi,initialState:{parentId:this.memberId}}),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:o=!1}=e;if(!r&&!o)throw new TypeError("At least one of `audio` or `video` must be requested.");const n={...this.options,localStream:void 0,remoteStream:void 0,audio:r,video:o,additionalDevice:!0,recoverCall:!1,userVariables:{...this.options?.userVariables||{},memberCallId:this.callId,memberId:this.memberId}},s=Qo({store:this.store,Component:Ni,componentListeners:xi})(n);s.once("destroy",(()=>{s.emit("room.left"),this._deviceList.delete(s)}));try{return s.runWorker("childMemberJoinedWorker",{worker:zi,initialState:{parentId:this.memberId}}),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(Mi(e))}async hangup(e){return this._screenShareList.forEach((e=>{e.leave()})),this._deviceList.forEach((e=>{e.leave()})),super.hangup(e)}_finalize(){this._screenShareList.clear(),this._deviceList.clear(),super._finalize()}getLayoutList(){return this.getLayouts()}getMemberList(){return this.getMembers()}},{audioMute:on.audioMuteMember,audioUnmute:on.audioUnmuteMember,videoMute:on.videoMuteMember,videoUnmute:on.videoUnmuteMember,deaf:on.deafMember,undeaf:on.undeafMember,setInputVolume:on.setInputVolumeMember,setOutputVolume:on.setOutputVolumeMember,setMicrophoneVolume:on.setInputVolumeMember,setSpeakerVolume:on.setOutputVolumeMember,setInputSensitivity:on.setInputSensitivityMember,removeMember:on.removeMember,removeAllMembers:on.removeAllMembers,getMembers:on.getMembers,getLayouts:on.getLayouts,setLayout:on.setLayout,setPositions:on.setPositions,setMemberPosition:on.setMemberPosition,hideVideoMuted:on.hideVideoMuted,showVideoMuted:on.showVideoMuted,getRecordings:on.getRecordings,startRecording:on.startRecording,getPlaybacks:on.getPlaybacks,play:on.play,setHideVideoMuted:on.setHideVideoMuted,getMeta:on.getMeta,setMeta:on.setMeta,updateMeta:on.updateMeta,deleteMeta:on.deleteMeta,getMemberMeta:on.getMemberMeta,setMemberMeta:on.setMemberMeta,updateMemberMeta:on.updateMemberMeta,deleteMemberMeta:on.deleteMemberMeta,promote:on.promote,demote:on.demote,getStreams:on.getStreams,startStream:on.startStream}),Ji=function*(e){Xt().trace("videoManagerWorker started");const{channels:t}=e,{swEventChannel:r,pubSubChannel:o}=t;for(;;){const e=yield Oe(r,(e=>e.type.startsWith("video-manager.")));yield xe(o,e)}};class Qi extends en{_eventsPrefix="video-manager";constructor(e){super(e),this.runWorker("videoManagerWorker",{worker:Ji})}getEmitterTransforms(){return new Map([[["video-manager.rooms.subscribed"],{type:"roomSession",instanceFactory:({rooms:e})=>({rooms:e.map((e=>er(e)))}),payloadTransform:({rooms:e})=>({rooms:e.map((e=>er(e)))})}],[["video-manager.room.started","video-manager.room.added","video-manager.room.updated","video-manager.room.ended","video-manager.room.deleted"],{type:"roomSession",instanceFactory:e=>er(e),payloadTransform:e=>er(e)}]])}}class Gi extends Zo{_videoManager;_chat;_pubSub;get rooms(){return{makeRoomObject:e=>{const{rootElement:t,applyLocalVideoOverlay:r=!0,stopCameraWhileMuted:o=!0,stopMicrophoneWhileMuted:n=!0,...s}=e,i=[];i.push((({speakerId:e})=>function*({instance:t,runSaga:r}){if("undefined"!=typeof Audio)try{const o=new Audio;let n;t.on("track",(function(s){switch(s.track.kind){case"audio":n=r(Ai,{track:s.track,element:o,speakerId:e,room:t})}})),t.once("destroy",(()=>{n?.cancel()}))}catch(e){Xt().error("audioElementSaga",e)}else Xt().warn("`Audio` is not supported on this environment.")})({speakerId:s.speakerId})),t&&i.push(Pi({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Qo({store:c.store,customSagas:c.customSagas,Component:Hi,componentListeners:xi})(c));var c;return n&&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)}})),o&&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=Xn.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get pubSub(){return this._pubSub||(this._pubSub=as.createBasePubSubObject({store:this.store,emitter:this.options.emitter})),this._pubSub}get videoManager(){return this._videoManager||(this._videoManager=(e=>{const t=Qo({store:e.store,Component:Qi,componentListeners:{errors:"onError",responses:"onSuccess"}})(e);return new Proxy(t,{get:(e,t,r)=>"_eventsNamespace"===t?"":"eventChannel"===t?"video-manager.rooms":Reflect.get(e,t,r)})})(this.options)),this._videoManager}reauthenticate(e){this.store.dispatch(Pr.reauthAction({token:e}))}}function Ki(e){this.message=e}(Ki.prototype=new Error).name="InvalidCharacterError";var Xi="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new Ki("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,o,n=0,s=0,i="";o=t.charAt(s++);~o&&(r=n%4?64*r+o:o,n++%4)?i+=String.fromCharCode(255&r>>(-2*n&6)):0)o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o);return i};function Yi(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(Xi(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return Xi(t)}}function Zi(e){this.message=e}function ea(e,t){if("string"!=typeof e)throw new Zi("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(Yi(e.split(".")[r]))}catch(e){throw new Zi("Invalid token specified: "+e.message)}}(Zi.prototype=new Error).name="InvalidTokenError";class ta extends co{options;WebSocketConstructor=WebSocket;agent="@signalwire/js/browser/3.16.0";constructor(e){let t;try{t=ea(e.token,{header:!0})}catch(e){}super({...e,host:t?.ch||e.host}),this.options=e}get allowHijack(){return this.options._hijack}async retrieveRelayProtocol(){if(!this.allowHijack)return"";const e=this.getRoomNameFromJWT();return e?(this.logger.info("Hijacking: search protocol for",e),window.sessionStorage.getItem(e)??""):""}async persistRelayProtocol(){if(!this.allowHijack)return;const e=this.getRoomNameFromJWT();e&&(this.logger.info("Hijacking: persist protocol",e,this.relayProtocol),window.sessionStorage.setItem(e,this.relayProtocol))}getRoomNameFromJWT(){try{return ea(this.options.token)?.r}catch(e){return""}}}const ra=e=>{const t={...e,emitter:new Et},r=Go({userOptions:t,SessionConstructor:ta});return Qo({store:r,Component:Gi,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},oa=["subscribe","publish","getMessages","getMembers","getMemberState","getAllowedChannels","setMemberState"];var na=Object.freeze({__proto__:null,ChatMember:Xn.ChatMember,ChatMessage:Xn.ChatMessage,Client:function(e){const t=ra(e),r={_session:t,disconnect:()=>t.disconnect()};return new Proxy(t.chat,{get:(e,o,n)=>o in r?r[o]:oa.includes(o)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(o):Reflect.get(e,o,n)})}});const sa=["getAllowedChannels","subscribe","publish"];var ia=Object.freeze({__proto__:null,PubSubMessage:as.PubSubMessage,Client:function(e){const t=ra(e),r={_session:t,disconnect:()=>t.disconnect()};return new Proxy(t.pubSub,{get:(e,o,n)=>o in r?r[o]:sa.includes(o)?(e=>async(...r)=>(await t.connect(),t.pubSub[e](...r)))(o):Reflect.get(e,o,n)})}});const aa={aspectRatio:{ideal:16/9}},ca=e=>new Promise((async(t,r)=>{const{audio:o=!0,video:n=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:d=!0,stopMicrophoneWhileMuted:u=!0,speakerId:l,...h}=e,m=ra({...h});if(await m.connect(),!m)return;let p;if(i){const e=document.getElementById(i);e?p=e:(p=document.body,Xt().warn(`We couldn't find an element with id: ${i}: using 'document.body' instead.`))}const f=m.rooms.makeRoomObject({audio:o,video:!0===n?aa:n,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:p,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});f.once("destroy",(()=>{f.emit("room.left"),m.disconnect()}));const g=()=>new Promise((async(e,t)=>{try{f.once("room.subscribed",(t=>{e(f)})),await f.join()}catch(e){Xt().error("Join",e),m.disconnect(),t(e)}})),v=new Proxy(f,{get:(e,t,r)=>"join"===t?g:Reflect.get(e,t,r)});if(c)try{await v.join(),t(v)}catch(e){r(e)}else t(v)})),da=["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","getMeta","setMeta","updateMeta","deleteMeta","getMemberMeta","setMemberMeta","updateMemberMeta","deleteMemberMeta","promote","demote"];var ua=Object.freeze({__proto__:null,RoomSession:function(e){const{audio:t=!0,video:r=!0,iceServers:o,rootElement:n,applyLocalVideoOverlay:s=!0,stopCameraWhileMuted:i=!0,stopMicrophoneWhileMuted:a=!0,speakerId:c,...d}=e;["audio","video"].forEach((t=>{t in e&&Xt().warn(`The '${t}' parameter on the RoomSession constructor is deprecated. Set it on the '.join()' function instead.`)}));const u=ra(d),l=u.rooms.makeRoomObject({negotiateAudio:!0,negotiateVideo:!0,iceServers:o,rootElement:n,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{l.emit("room.left"),u.disconnect()}));const h={join:e=>new Promise((async(o,n)=>{try{l.attachPreConnectWorkers(),await u.connect();const s=e?.audio??t,i=e?.video??r,a=u._sessionAuthState,c=(e=>{const{authState:t,audio:r=!0,video:o=!0,sendAudio:n,sendVideo:s,receiveAudio:i,receiveVideo:a}=e;Xt().debug("getJoinMediaParams options",{...e});const{audio_allowed:c,video_allowed:d,join_as:u}=t,l="member"===(u??"member"),h=l&&"both"===c,m=l&&"both"===d,p="none"!==c,f="none"!==d,g=Boolean(n??r),v=Boolean(s??o),y=Boolean(i??r),b=Boolean(a??o);return!h&&g&&Xt().info("Not allowed to send audio on this room. Default values will be used."),!m&&v&&Xt().info("Not allowed to send video on this room. Default values will be used."),!p&&y&&Xt().info("Not allowed to receive video from the room. Default values will be used."),!f&&b&&Xt().info("Not allowed to receive video from the room. Default values will be used."),{mustSendAudio:h&&g,mustSendVideo:m&&v,mustRecvAudio:p&&y,mustRecvVideo:f&&b}})({authState:a,sendAudio:Boolean(t),sendVideo:Boolean(r),...e});if(!Object.values(c).some(Boolean))return u.disconnect(),n(new Error(`Invalid arguments to join the room. The token used has join_as: '${a.join_as}'. \n${JSON.stringify(e,null,2)}\n`));l.updateMediaOptions({audio:!!c.mustSendAudio&&(s||!0),video:!!c.mustSendVideo&&(i||!0),negotiateAudio:c.mustRecvAudio,negotiateVideo:c.mustRecvVideo}),l.once("room.subscribed",(e=>{l.attachOnSubscribedWorkers(e),o(l)})),await l.join()}catch(e){Xt().error("RoomSession Join",e),u.disconnect(),n(e)}}))};return new Proxy(l,{get(e,t,r){if(t in h)return h[t];if(!e.active&&da.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:ca,joinRoom:e=>ca({...e,autoJoin:!0}),createClient:ra}),la=Object.freeze({__proto__:null,getDevices:ri,getCameraDevices:()=>ri("camera"),getMicrophoneDevices:()=>ri("microphone"),getSpeakerDevices:()=>ri("speaker"),getDevicesWithPermissions:ei,getCameraDevicesWithPermissions:()=>ei("camera"),getMicrophoneDevicesWithPermissions:()=>ei("microphone"),getSpeakerDevicesWithPermissions:()=>ei("speaker"),checkPermissions:Qs,checkCameraPermissions:Gs,checkMicrophonePermissions:Ks,checkSpeakerPermissions:Xs,requestPermissions:async e=>{try{const t=await Ys(e);Bs(t)}catch(e){throw e}},createDeviceWatcher:di,createCameraDeviceWatcher:()=>di({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>di({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>di({targets:["speaker"]}),supportsMediaDevices:Ns,supportsGetUserMedia:()=>"function"==typeof Ds().getUserMedia,supportsGetDisplayMedia:()=>"function"==typeof Ds().getDisplayMedia,getUserMedia:Ys,getDisplayMedia:Zs,enumerateDevices:Hs,getSupportedConstraints:Ws,supportsMediaOutput:Us,setMediaElementSinkId:$s,stopStream:Bs,stopTrack:Fs,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(ui(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},Ys(t)})(e);if(!t)throw new Error("Failed to get the audio stream");const r=new Et,o=new(window.AudioContext||window.webkitAudioContext),n=(e=>{const t=e.createAnalyser();return t.fftSize=64,t.minDecibels=-90,t.maxDecibels=-10,t.smoothingTimeConstant=.85,t})(o);let s,i;try{o.createMediaStreamSource(t).connect(n)}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(n.frequencyBinCount);n.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),"closed"!==o.state&&o.close().catch((e=>{Xt().error("Error closing the AudioContext",e)})),ui(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=na,e.PubSub=ia,e.Video=ua,e.WebRTC=la,Object.defineProperty(e,"__esModule",{value:!0})}));
20
+ ***************************************************************************** */function vi(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}return r}const yi=function*(e){Xt().debug("vertoEventWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n}=t,{rtcPeerId:s}=o;if(!s)throw new Error("Missing rtcPeerId for roomSubscribedWorker");for(;;){const e=yield Oe(n,(e=>{var t;return"webrtc.message"===e.type&&(null===(t=e.payload.params)||void 0===t?void 0:t.callID)===s})),{id:t,method:o,params:i={}}=e.payload,{callID:a,nodeId:c}=i,d=r.getRTCPeerById(a);if(!d){Xt().warn(`RTCPeer '${a}' not found for method: '${o}'`,i);continue}const u=r.peer;switch(o){case"verto.media":case"verto.answer":d.uuid===(null==u?void 0:u.uuid)&&r.setState("verto.media"===o?"early":"active"),(null==i?void 0:i.sdp)&&d.onRemoteSdp(i.sdp),yield xe(Pr.executeAction({method:"video.message",params:{message:Mr(t,o),node_id:c}}));break;case"verto.bye":yield Le(r.onVertoBye,{rtcPeerId:a,byeCause:null==i?void 0:i.cause,byeCauseCode:null==i?void 0:i.causeCode,redirectDestination:null==i?void 0:i.redirectDestination}),yield xe(Pr.executeAction({method:"video.message",params:{message:Mr(t,o),node_id:c}}));break;case"verto.ping":{const{nodeId:e}=i,t=vi(i,["nodeId"]);yield xe(Pr.executeAction({method:"video.message",params:{message:Ir(t),node_id:e}}));break}case"verto.mediaParams":{if(!a||!i.mediaParams){Xt().warn("Invalid mediaParams event",i);break}const{audio:e,video:t}=i.mediaParams;d&&t&&d.applyMediaConstraints("video",t),d&&e&&d.applyMediaConstraints("audio",e);break}default:return Xt().warn(`Unknown Verto method: ${o}`,i)}}Xt().trace("vertoEventWorker ended")},bi=function*(e){Xt().debug("roomSubscribedWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n,pubSubChannel:s}=t,{rtcPeerId:i}=o;if(!i)throw new Error("Missing rtcPeerId for roomSubscribedWorker");const a=yield Oe(n,(e=>"video.room.subscribed"===e.type&&e.payload.call_id===i));r._attachListeners(a.payload.room_session.id),r.applyEmitterTransforms(),r.setActiveRTCPeer(i),yield xe(mo.upsert({id:a.payload.call_id,roomId:a.payload.room_session.room_id,roomSessionId:a.payload.room_session.id,memberId:a.payload.member_id,previewUrl:a.payload.room_session.preview_url})),yield xe(s,{type:"video.room.joined",payload:a.payload}),Xt().debug("roomSubscribedWorker ended",i)},_i=function*(e){Xt().debug("promoteDemoteWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n}=t,{rtcPeerId:s}=o;if(!s)throw new Error("Missing rtcPeerId for promoteDemoteWorker");const i=yield Oe(n,(e=>("video.member.promoted"===e.type||"video.member.demoted"===e.type)&&e.payload.member_id===r.memberId));Xt().debug("promoteDemoteWorker:",i.type,i.payload),yield xe(no.updateAuthState(i.payload.authorization));const a=yield De(Ls.getAuthState);if(!a)throw new Error(`Invalid authState for '${i.type}'`);const{audio_allowed:c,video_allowed:d}=a;switch(i.type){case"video.member.promoted":r.updateMediaOptions({audio:"both"===c,video:"both"===d,negotiateAudio:"none"!==c,negotiateVideo:"none"!==d});break;case"video.member.demoted":r.updateMediaOptions({audio:!1,video:!1,negotiateAudio:"none"!==c,negotiateVideo:"none"!==d})}r._triggerNewRTCPeer(),Xt().debug("promoteDemoteWorker ended",s)},Si={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},wi=Object.assign(Object.assign({},Si),{noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1}),ki={width:{ideal:1280,min:320},height:{ideal:720,min:180},aspectRatio:{ideal:16/9}},Ei={destinationNumber:"room",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:Si,video:ki,useStereo:!1,attach:!1,screenShare:!1,additionalDevice:!1,userVariables:{},requestTimeout:1e4,autoApplyMediaParams:!0,iceGatheringTimeout:2e3};class Ci extends Yo{constructor(e){super(e),this.gotEarly=!1,this.doReinvite=!1,this._eventsPrefix="video",this.state="new",this.prevState="new",this.rtcPeerMap=new Map,this.onVertoBye=e=>{const{rtcPeerId:t,byeCause:r="NORMAL_CLEARING",byeCauseCode:o="16",redirectDestination:n}=e;this.cause=String(r),this.causeCode=String(o);const s=this.getRTCPeerById(t);return s?n&&s.localSdp?(this.logger.debug("Redirect Destination to:",n,"for RTCPeer:",s.uuid),void this.executeInvite(s.localSdp,s.uuid,n)):(s.onRemoteBye({code:this.causeCode,message:this.cause}),void(this.activeRTCPeerId===(null==s?void 0:s.uuid)&&this.setState("hangup"))):this.logger.warn("Invalid RTCPeer to hangup",e)},this.options=Object.assign(Object.assign({},Ei),e),this._checkDefaultMediaConstraints(),this.setState("new"),this.logger.debug("New Call with Options:",this.options),this.applyEmitterTransforms({local:!0})}get id(){return this.__uuid}get active(){return"active"===this.state}get trying(){return"trying"===this.state}get memberId(){return this.component.memberId}get previewUrl(){return this.component.previewUrl}get roomId(){return this.component.roomId}get roomSessionId(){return this.component.roomSessionId}get callId(){var e;return(null===(e=this.peer)||void 0===e?void 0:e.uuid)||""}get localStream(){var e;return null===(e=this.peer)||void 0===e?void 0:e.localStream}set localStream(e){this.peer&&(this.peer.localStream=e)}get remoteStream(){var e;return null===(e=this.peer)||void 0===e?void 0:e.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(Ls.getIceServers)}get component(){return this.select((e=>qo.getComponent(e,this.callId)))||{}}dialogParams(e){const{destinationNumber:t,attach:r,callerName:o,callerNumber:n,remoteCallerName:s,remoteCallerNumber:i,userVariables:a,screenShare:c,additionalDevice:d,pingSupported:u=!0}=this.options;return{dialogParams:{id:e,destinationNumber:t,attach:r,callerName:o,callerNumber:n,remoteCallerName:s,remoteCallerNumber:i,userVariables:a,screenShare:c,additionalDevice:d,pingSupported:u,version:1e3}}}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(){var e;return Boolean(null===(e=this.peer)||void 0===e?void 0:e.hasAudioReceiver)}get withVideo(){var e;return Boolean(null===(e=this.peer)||void 0===e?void 0:e.hasVideoReceiver)}get localVideoTrack(){return this.peer?this.peer.localVideoTrack:null}get localAudioTrack(){return this.peer?this.peer.localAudioTrack:null}get peer(){return this.getRTCPeerById(this.activeRTCPeerId)}set peer(e){if(e){if(this.logger.debug("Set RTCPeer",e.uuid,e),this.rtcPeerMap.set(e.uuid,e),this.peer&&this.callId!==e.uuid){const e=this.peer.uuid;this.logger.info(">>> Stop old RTCPeer",e),this.hangup(e).then(console.warn).catch(console.error),this.peer.detachAndStop()}this.logger.info(">>> Replace RTCPeer with",e.uuid),this.activeRTCPeerId=e.uuid}else this.logger.warn("Invalid RTCPeer",e)}getRTCPeerById(e){return this.rtcPeerMap.get(e)}appendRTCPeer(e){return this.rtcPeerMap.set(e.uuid,e)}setActiveRTCPeer(e){this.peer=this.rtcPeerMap.get(e)}vertoExecute(e){return this.execute({method:"video.message",params:e})}async _triggerNewRTCPeer(){this.logger.debug("_triggerNewRTCPeer Start");try{this.logger.debug("Build a new RTCPeer");const e=new gi(this,"offer");this.appendRTCPeer(e),this.logger.debug("Run workers for the new RTCPeer",e.uuid),this.runRTCPeerWorkers(e.uuid),this.logger.debug("Trigger start for the new RTCPeer!"),await e.start()}catch(e){this.logger.error("Error building new RTCPeer to promote/demote",e)}}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,o)=>{var n;try{if(!this.peer)return o(new Error("Invalid RTCPeerConnection."));if(!Object.keys(e).length)return o(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 Ys(e)}catch(s){if(s instanceof DOMException&&"Concurrent mic process limit."===s.message){let o={};null===(n=this.localStream)||void 0===n||n.getTracks().forEach((t=>{var r;o[t.kind]=t.getConstraints(),void 0!==e[t.kind]&&(this.logger.debug("updateConstraints stop old tracks to retrieve new ones"),Fs(t),null===(r=this.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(o,{attempt:t+1}))}}return this.logger.error("updateConstraints",s),o(s)}this.logger.debug("updateConstraints got stream",s),this.localStream||(this.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:o})=>r.track&&r.track.kind===t.kind?(this.logger.debug("Found transceiver by sender"),!0):o.track&&o.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.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 - "),Fs(e),null===(r=this.localStream)||void 0===r||r.removeTrack(e))})),this.localStream.addTrack(t)):(this.logger.debug("updateConstraints no transceiver found. addTrack and start dancing!"),this.peer.type="offer",this.doReinvite=!0,this.localStream.addTrack(t),i.addTrack(t,this.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),o(e)}}))}runRTCPeerWorkers(e){this.runWorker("vertoEventWorker",{worker:yi,initialState:{rtcPeerId:e}}),!this.options.additionalDevice&&!this.options.screenShare&&(this.runWorker("roomSubscribedWorker",{worker:bi,initialState:{rtcPeerId:e}}),this.runWorker("promoteDemoteWorker",{worker:_i,initialState:{rtcPeerId:e}}))}invite(){return new Promise((async(e,t)=>{this.direction="outbound",this.peer=new gi(this,"offer");try{this.runRTCPeerWorkers(this.peer.uuid),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 gi(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){if(!e.instance.localDescription)throw this.logger.error("Missing localDescription",e),new Error("Invalid RTCPeerConnection localDescription");const{type:t,sdp:r}=e.instance.localDescription,o=this._mungeSDP(r);switch(this.logger.debug("LOCAL SDP \n",`Type: ${t}`,"\n\n",o),t){case"offer":return e.instance.remoteDescription?this.executeUpdateMedia(o,e.uuid):this.executeInvite(o,e.uuid);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${t}' on call ${this.id}`)}}async executeInvite(e,t,r){const o=this.getRTCPeerById(t);if(!o||o.instance.remoteDescription)throw new Error(`RTCPeer '${t}' already has a remoteDescription. Invalid invite.`);"new"===this.state&&this.setState("requesting");try{const o=this.options.screenShare?{layout:this.options.layout,positions:this.options.positions}:{},n=kr(Object.assign(Object.assign(Object.assign({},this.dialogParams(t)),o),{sdp:e}));let s=[];s=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions();const i=await this.vertoExecute({message:n,node_id:r,subscribe:s});this.logger.debug("Invite response",i)}catch(e){throw this.setState("hangup"),e.jsonrpc}}async executeUpdateMedia(e,t){try{const r=Cr(Object.assign(Object.assign({},this.dialogParams(t)),{sdp:e,action:"updateMedia"})),o=await this.vertoExecute({message:r});if(o.sdp||this.logger.error("UpdateMedia invalid SDP answer",o),this.logger.debug("UpdateMedia response",o),!this.peer)return this.logger.error("Invalid RTCPeer to updateMedia");await this.peer.onRemoteSdp(o.sdp)}catch(e){throw this.logger.error("UpdateMedia error",e),e.jsonrpc}}async hangup(e){const t=null!=e?e:this.callId;if(!t)throw new Error("Invalid RTCPeer ID to hangup");try{const e=Er(this.dialogParams(t));await this.vertoExecute({message:e})}catch(e){this.logger.error("Hangup error:",e)}finally{if(t!==this.callId)return this.logger.warn("Prevent setState hangup",t,this.callId);this.setState("hangup")}}dtmf(e){const t=this.callId;if(!t)throw new Error("Invalid RTCPeer ID to send DTMF");const r=Tr(Object.assign(Object.assign({},this.dialogParams(t)),{dtmf:e}));this.vertoExecute({message:r})}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()}}updateMediaOptions(e){this.logger.debug("updateMediaOptions",Object.assign({},e)),this.options=Object.assign(Object.assign({},this.options),e),this._checkDefaultMediaConstraints()}_mungeSDP(e){return e}_checkDefaultMediaConstraints(){!0===this.options.video&&(this.options.video=ki),!0===this.options.audio&&(this.options.audio=this.options.screenShare?wi:Si)}_finalize(){this.rtcPeerMap.forEach((e=>{e.stop()})),this.rtcPeerMap.clear(),this.destroy()}}const Ti=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e.addEventListener("pause",(()=>{e.play().catch((t=>{Xt().error("Video Element Paused",e,t)}))})),e},Ii=({x:e,y:t,width:r,height:o})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${o}%`}),Mi=Pr.createAction("swJs/audioSetSpeakerAction"),Pi=({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:o}){try{const n=new Map,s=Ti(),i={status:"hidden",get id(){return`sw-sdk-${r.id}`},get domElement(){return n.get(this.id)},set domElement(e){e?(Xt().debug("Set localOverlay",e),n.set(this.id,e)):(Xt().debug("Remove localOverlay"),n.delete(this.id))},hide(){if(!this.domElement)return Xt().warn("Missing localOverlay to hide");this.domElement.style.opacity="0"},show(){return this.domElement?"hidden"===this.status?Xt().info("localOverlay not visible"):void(this.domElement.style.opacity="1"):Xt().warn("Missing localOverlay to show")},setLocalOverlayMediaStream(e){if(!this.domElement)return Xt().warn("Missing localOverlay to set the local overlay stream");const t=this.domElement.querySelector("video");t&&(t.srcObject=e)}},a=(({localOverlay:e,rootElement:t})=>async({layout:r,myMemberId:o,localStream:n})=>{Xt().debug("Process layout.changed");try{const{layers:s=[]}=r,i=s.find((({member_id:e})=>e===o));let a=e.domElement;if(e.status=i?"visible":"hidden",!i)return Xt().debug("Location not found"),void(a&&(Xt().debug("Current layer not visible"),e.hide()));if(!a){Xt().debug("Build myLayer"),a=(({location:e})=>{const{top:t,left:r,width:o,height:n}=Ii(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=o,s.style.height=n,s})({location:i}),a.id=e.id;const r=Ti();r.srcObject=n,r.disablePictureInPicture=!0,r.style.width="100%",r.style.height="100%",r.style.pointerEvents="none",a.appendChild(r);const o=t.querySelector(".mcuLayers"),s=o?.querySelector(`#${a.id}`);return void(o&&!s&&(o.appendChild(a),e.domElement=a))}const{top:c,left:d,width:u,height:l}=Ii(i);Xt().debug("Update myLayer:",c,d,u,l);const h=n.getVideoTracks().length>0;a.style.opacity=h?"1":"0",a.style.top=c,a.style.left=d,a.style.width=u,a.style.height=l}catch(e){Xt().error("Layout Changed Error",e)}})({rootElement:e,localOverlay:i});let c;r.on("layout.changed",(e=>{Xt().debug("Received layout.changed"),r.peer?.hasVideoSender&&r.localStream?a({layout:e.layout,localStream:r.localStream,myMemberId:r.memberId}):i.hide()})),r.once("room.subscribed",(e=>{const t=e.room_session.members?.find((e=>e.id===r.memberId));if(t?.audio_muted)try{r.stopOutboundAudio()}catch(e){Xt().error("Error handling audio_muted",e)}if(t?.video_muted)try{r.stopOutboundVideo()}catch(e){Xt().error("Error handling video_muted",e)}r.localStream&&i.setLocalOverlayMediaStream(r.localStream)})),r.on("member.updated.video_muted",(e=>{try{const{member:t}=e;t.id===r.memberId&&"video_muted"in t&&(t.video_muted?i.hide():i.show())}catch(e){Xt().error("Error handling video_muted",e)}})),r.on("track",(function(r){switch(r.track.kind){case"video":c=o(Oi,{applyLocalVideoOverlay:t,rootElement:e,track:r.track,element:s})}})),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),n.clear(),c?.cancel()}))}catch(e){Xt().error("videoElementSaga",e)}};function*Ri({element:e,room:t}){const r=Pr.getCustomSagaActionType(t.__uuid,Mi);for(;;){const o=yield Oe([r]);try{switch(o.type){case r:const n=yield Le($s,e,o.payload);t.settleCustomSagaTrigger({dispatchId:o.dispatchId,payload:n,kind:"resolve"})}}catch(e){t.settleCustomSagaTrigger({dispatchId:o.dispatchId,payload:e,kind:"reject"}),Xt().error(e)}}}function*Ai({track:e,element:t,speakerId:r,room:o}){(({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&&$s(t,r).catch((()=>{})),yield Ne(Ri,{element:t,room:o})}function*Oi({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:o}){(async r=>{if((({track:e,element:t})=>{t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({element:o,track:r}),o.style.width="100%",o.style.maxHeight="100%",!t)return void e.appendChild(o);if(e.querySelector(".mcuContent"))return void Xt().debug("MCU Content already there");const n=document.createElement("div");n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.right="0",n.style.bottom="0",n.appendChild(o);const s=document.createElement("div");s.classList.add("paddingWrapper"),s.style.paddingBottom="56.25%",s.style.position="relative",s.style.width="100%",s.appendChild(n);const i=document.createElement("div");i.classList.add("mcuLayers"),i.style.display="none",s.appendChild(i);const a=document.createElement("div");a.classList.add("mcuContent"),a.style.position="relative",a.style.width="100%",a.style.margin="0 auto",a.style.display="flex",a.style.alignItems="center",a.style.justifyContent="center",a.appendChild(s),e.appendChild(a),o.readyState===HTMLMediaElement.HAVE_NOTHING&&(Xt().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:o})),i.style.display="block"})(r).catch((e=>{Xt().error("Handle video track error",e)}))}const xi={errors:"onError",responses:"onSuccess"},ji={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},Li=sr(class extends Ci{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:on.audioMuteMember,audioUnmute:on.audioUnmuteMember,videoMute:on.videoMuteMember,videoUnmute:on.videoUnmuteMember,setMicrophoneVolume:on.setInputVolumeMember,setInputVolume:on.setInputVolumeMember,setInputSensitivity:on.setInputSensitivityMember}),Ni=sr(class extends Ci{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:on.audioMuteMember,audioUnmute:on.audioUnmuteMember,videoMute:on.videoMuteMember,videoUnmute:on.videoUnmuteMember,setInputVolume:on.setInputVolumeMember,setMicrophoneVolume:on.setInputVolumeMember,setInputSensitivity:on.setInputSensitivityMember}),Di=()=>{},Wi="video.memberList.updated",Vi=or({event:Wi}),Ui=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Bt),e)),[]).join(".")})(Vi),$i=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*Bi({pubSubChannel:e}){const t=new Map;function*r(r){const o={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 xe(e,{type:Ui,payload:o})}for(;;){const t=yield Oe(e,(({type:e})=>$i.includes(e)));yield Ne(r,t)}}const Fi=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(Vi))))(r))return;const{cleanup:o}=((e,t)=>{(e=>mr($i).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,Di)}));const r=({members:t})=>{e.emit(Wi,{members:t})};return e.on(Ui,r),{cleanup:()=>{e.off(Ui,r)}}})(t,r);yield Ne(Bi,{pubSubChannel:e}),t.once("destroy",(()=>{o()}))},qi=function*(e){if(!e.initialState)throw new Error("[memberPositionWorker] Missing initialState");yield Ne(bs.memberPositionWorker,e)},zi=function*(e){Xt().trace("childMemberJoinedWorker started");const{channels:t,instance:r,initialState:o}=e,{swEventChannel:n}=t,{parentId:s}=o;if(!s)throw new Error("Missing parentId for childMemberJoinedWorker");const i=yield Oe(n,(e=>"video.member.joined"===e.type&&e.payload.member.parent_id===s)),{member:a}=i.payload;a?.parent_id&&(r._attachListeners(a.id),r.applyEmitterTransforms(),(yield De(qo.getComponent,a.parent_id))&&(yield xe(mo.upsert({id:r.callId,roomId:i.payload.room_id,roomSessionId:i.payload.room_session_id,memberId:a.id})))),Xt().trace("childMemberJoinedWorker ended")},Hi=sr(class extends Ci{_screenShareList=new Set;_deviceList=new Set;get screenShareList(){return Array.from(this._screenShareList)}get deviceList(){return Array.from(this._deviceList)}getEmitterTransforms(){return new Map([[["video.room.joined"],{type:"roomSession",instanceFactory:()=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{recordings:{eventTransformType:"roomSessionRecording",processInstancePayload:e=>({recording:e})},playbacks:{eventTransformType:"roomSessionPlayback",processInstancePayload:e=>({playback:e})},streams:{eventTransformType:"roomSessionStream",processInstancePayload:e=>({stream:e})}}}],[[fr("video.recording.list")],{type:"roomSessionRecordingList",instanceFactory:e=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{recordings:{eventTransformType:"roomSessionRecording",processInstancePayload:e=>({recording:e})}}}],[[fr("video.playback.list")],{type:"roomSessionPlaybackList",instanceFactory:e=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{playbacks:{eventTransformType:"roomSessionPlayback",processInstancePayload:e=>({playback:e})}}}],[[fr("video.recording.start"),"video.recording.started","video.recording.updated","video.recording.ended"],{type:"roomSessionRecording",instanceFactory:e=>on.createRoomSessionRecordingObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>er({...e.recording,room_session_id:this.roomSessionId})}],[[fr("video.playback.start"),"video.playback.started","video.playback.updated","video.playback.ended"],{type:"roomSessionPlayback",instanceFactory:e=>on.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>er({...e.playback,room_session_id:this.roomSessionId})}],[[fr("video.stream.list")],{type:"roomSessionStreamList",instanceFactory:e=>({}),payloadTransform:e=>e,nestedFieldsToProcess:{streams:{eventTransformType:"roomSessionStream",processInstancePayload:e=>({stream:e})}}}],[[fr("video.stream.start"),"video.stream.started","video.stream.ended"],{type:"roomSessionStream",instanceFactory:e=>on.createRoomSessionStreamObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>er({...e.stream,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...bs.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.runWorker("memberListUpdated",{worker:Fi})}attachOnSubscribedWorkers(e){this.runWorker("memberPositionWorker",{worker:qi,initialState:e})}async createScreenShareObject(e={}){return this.startScreenShare(e)}async startScreenShare(e={}){const{autoJoin:t=!0,audio:r=!1,video:o=!0,layout:n,positions:s}=e,i=await Zs({audio:!0===r?ji:r,video:o}),a={...this.options,screenShare:!0,recoverCall:!1,localStream:i,remoteStream:void 0,userVariables:{...this.options?.userVariables||{},memberCallId:this.callId,memberId:this.memberId},layout:n,positions:s},c=Qo({store:this.store,Component:Li,componentListeners:xi})(a);i.getVideoTracks().forEach((e=>{e.addEventListener("ended",(()=>{c&&c.active&&c.leave()}))})),c.once("destroy",(()=>{c.emit("room.left"),this._screenShareList.delete(c)}));try{return c.runWorker("childMemberJoinedWorker",{worker:zi,initialState:{parentId:this.memberId}}),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:o=!1}=e;if(!r&&!o)throw new TypeError("At least one of `audio` or `video` must be requested.");const n={...this.options,localStream:void 0,remoteStream:void 0,audio:r,video:o,additionalDevice:!0,recoverCall:!1,userVariables:{...this.options?.userVariables||{},memberCallId:this.callId,memberId:this.memberId}},s=Qo({store:this.store,Component:Ni,componentListeners:xi})(n);s.once("destroy",(()=>{s.emit("room.left"),this._deviceList.delete(s)}));try{return s.runWorker("childMemberJoinedWorker",{worker:zi,initialState:{parentId:this.memberId}}),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(Mi(e))}async hangup(e){return this._screenShareList.forEach((e=>{e.leave()})),this._deviceList.forEach((e=>{e.leave()})),super.hangup(e)}_finalize(){this._screenShareList.clear(),this._deviceList.clear(),super._finalize()}getLayoutList(){return this.getLayouts()}getMemberList(){return this.getMembers()}},{audioMute:on.audioMuteMember,audioUnmute:on.audioUnmuteMember,videoMute:on.videoMuteMember,videoUnmute:on.videoUnmuteMember,deaf:on.deafMember,undeaf:on.undeafMember,setInputVolume:on.setInputVolumeMember,setOutputVolume:on.setOutputVolumeMember,setMicrophoneVolume:on.setInputVolumeMember,setSpeakerVolume:on.setOutputVolumeMember,setInputSensitivity:on.setInputSensitivityMember,removeMember:on.removeMember,removeAllMembers:on.removeAllMembers,getMembers:on.getMembers,getLayouts:on.getLayouts,setLayout:on.setLayout,setPositions:on.setPositions,setMemberPosition:on.setMemberPosition,hideVideoMuted:on.hideVideoMuted,showVideoMuted:on.showVideoMuted,getRecordings:on.getRecordings,startRecording:on.startRecording,getPlaybacks:on.getPlaybacks,play:on.play,setHideVideoMuted:on.setHideVideoMuted,getMeta:on.getMeta,setMeta:on.setMeta,updateMeta:on.updateMeta,deleteMeta:on.deleteMeta,getMemberMeta:on.getMemberMeta,setMemberMeta:on.setMemberMeta,updateMemberMeta:on.updateMemberMeta,deleteMemberMeta:on.deleteMemberMeta,promote:on.promote,demote:on.demote,getStreams:on.getStreams,startStream:on.startStream}),Ji=function*(e){Xt().trace("videoManagerWorker started");const{channels:t}=e,{swEventChannel:r,pubSubChannel:o}=t;for(;;){const e=yield Oe(r,(e=>e.type.startsWith("video-manager.")));yield xe(o,e)}};class Qi extends en{_eventsPrefix="video-manager";constructor(e){super(e),this.runWorker("videoManagerWorker",{worker:Ji})}getEmitterTransforms(){return new Map([[["video-manager.rooms.subscribed"],{type:"roomSession",instanceFactory:({rooms:e})=>({rooms:e.map((e=>er(e)))}),payloadTransform:({rooms:e})=>({rooms:e.map((e=>er(e)))})}],[["video-manager.room.started","video-manager.room.added","video-manager.room.updated","video-manager.room.ended","video-manager.room.deleted"],{type:"roomSession",instanceFactory:e=>er(e),payloadTransform:e=>er(e)}]])}}class Gi extends Zo{_videoManager;_chat;_pubSub;get rooms(){return{makeRoomObject:e=>{const{rootElement:t,applyLocalVideoOverlay:r=!0,stopCameraWhileMuted:o=!0,stopMicrophoneWhileMuted:n=!0,...s}=e,i=[];i.push((({speakerId:e})=>function*({instance:t,runSaga:r}){if("undefined"!=typeof Audio)try{const o=new Audio;let n;t.on("track",(function(s){switch(s.track.kind){case"audio":n=r(Ai,{track:s.track,element:o,speakerId:e,room:t})}})),t.once("destroy",(()=>{n?.cancel()}))}catch(e){Xt().error("audioElementSaga",e)}else Xt().warn("`Audio` is not supported on this environment.")})({speakerId:s.speakerId})),t&&i.push(Pi({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Qo({store:c.store,customSagas:c.customSagas,Component:Hi,componentListeners:xi})(c));var c;return n&&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)}})),o&&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=Xn.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get pubSub(){return this._pubSub||(this._pubSub=as.createBasePubSubObject({store:this.store,emitter:this.options.emitter})),this._pubSub}get videoManager(){return this._videoManager||(this._videoManager=(e=>{const t=Qo({store:e.store,Component:Qi,componentListeners:{errors:"onError",responses:"onSuccess"}})(e);return new Proxy(t,{get:(e,t,r)=>"_eventsNamespace"===t?"":"eventChannel"===t?"video-manager.rooms":Reflect.get(e,t,r)})})(this.options)),this._videoManager}reauthenticate(e){this.store.dispatch(Pr.reauthAction({token:e}))}}function Ki(e){this.message=e}(Ki.prototype=new Error).name="InvalidCharacterError";var Xi="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new Ki("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,o,n=0,s=0,i="";o=t.charAt(s++);~o&&(r=n%4?64*r+o:o,n++%4)?i+=String.fromCharCode(255&r>>(-2*n&6)):0)o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o);return i};function Yi(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(Xi(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return Xi(t)}}function Zi(e){this.message=e}function ea(e,t){if("string"!=typeof e)throw new Zi("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(Yi(e.split(".")[r]))}catch(e){throw new Zi("Invalid token specified: "+e.message)}}(Zi.prototype=new Error).name="InvalidTokenError";class ta extends co{options;WebSocketConstructor=WebSocket;agent="@signalwire/js/browser/3.17.0-dev.202210101110.a32413d.0";constructor(e){let t;try{t=ea(e.token,{header:!0})}catch(e){}super({...e,host:t?.ch||e.host}),this.options=e}get allowHijack(){return this.options._hijack}async retrieveRelayProtocol(){if(!this.allowHijack)return"";const e=this.getRoomNameFromJWT();return e?(this.logger.info("Hijacking: search protocol for",e),window.sessionStorage.getItem(e)??""):""}async persistRelayProtocol(){if(!this.allowHijack)return;const e=this.getRoomNameFromJWT();e&&(this.logger.info("Hijacking: persist protocol",e,this.relayProtocol),window.sessionStorage.setItem(e,this.relayProtocol))}getRoomNameFromJWT(){try{return ea(this.options.token)?.r}catch(e){return""}}}const ra=e=>{const t={...e,emitter:new Et},r=Go({userOptions:t,SessionConstructor:ta});return Qo({store:r,Component:Gi,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},oa=["subscribe","publish","getMessages","getMembers","getMemberState","getAllowedChannels","setMemberState"];var na=Object.freeze({__proto__:null,ChatMember:Xn.ChatMember,ChatMessage:Xn.ChatMessage,Client:function(e){const t=ra(e),r={_session:t,disconnect:()=>t.disconnect()};return new Proxy(t.chat,{get:(e,o,n)=>o in r?r[o]:oa.includes(o)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(o):Reflect.get(e,o,n)})}});const sa=["getAllowedChannels","subscribe","publish"];var ia=Object.freeze({__proto__:null,PubSubMessage:as.PubSubMessage,Client:function(e){const t=ra(e),r={_session:t,disconnect:()=>t.disconnect()};return new Proxy(t.pubSub,{get:(e,o,n)=>o in r?r[o]:sa.includes(o)?(e=>async(...r)=>(await t.connect(),t.pubSub[e](...r)))(o):Reflect.get(e,o,n)})}});const aa={aspectRatio:{ideal:16/9}},ca=e=>new Promise((async(t,r)=>{const{audio:o=!0,video:n=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:d=!0,stopMicrophoneWhileMuted:u=!0,speakerId:l,...h}=e,m=ra({...h});if(await m.connect(),!m)return;let p;if(i){const e=document.getElementById(i);e?p=e:(p=document.body,Xt().warn(`We couldn't find an element with id: ${i}: using 'document.body' instead.`))}const f=m.rooms.makeRoomObject({audio:o,video:!0===n?aa:n,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:p,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});f.once("destroy",(()=>{f.emit("room.left"),m.disconnect()}));const g=()=>new Promise((async(e,t)=>{try{f.once("room.subscribed",(t=>{e(f)})),await f.join()}catch(e){Xt().error("Join",e),m.disconnect(),t(e)}})),v=new Proxy(f,{get:(e,t,r)=>"join"===t?g:Reflect.get(e,t,r)});if(c)try{await v.join(),t(v)}catch(e){r(e)}else t(v)})),da=["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","getMeta","setMeta","updateMeta","deleteMeta","getMemberMeta","setMemberMeta","updateMemberMeta","deleteMemberMeta","promote","demote"];var ua=Object.freeze({__proto__:null,RoomSession:function(e){const{audio:t=!0,video:r=!0,iceServers:o,rootElement:n,applyLocalVideoOverlay:s=!0,stopCameraWhileMuted:i=!0,stopMicrophoneWhileMuted:a=!0,speakerId:c,...d}=e;["audio","video"].forEach((t=>{t in e&&Xt().warn(`The '${t}' parameter on the RoomSession constructor is deprecated. Set it on the '.join()' function instead.`)}));const u=ra(d),l=u.rooms.makeRoomObject({negotiateAudio:!0,negotiateVideo:!0,iceServers:o,rootElement:n,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{l.emit("room.left"),u.disconnect()}));const h={join:e=>new Promise((async(o,n)=>{try{l.attachPreConnectWorkers(),await u.connect();const s=e?.audio??t,i=e?.video??r,a=u._sessionAuthState,c=(e=>{const{authState:t,audio:r=!0,video:o=!0,sendAudio:n,sendVideo:s,receiveAudio:i,receiveVideo:a}=e;Xt().debug("getJoinMediaParams options",{...e});const{audio_allowed:c,video_allowed:d,join_as:u}=t,l="member"===(u??"member"),h=l&&"both"===c,m=l&&"both"===d,p="none"!==c,f="none"!==d,g=Boolean(n??r),v=Boolean(s??o),y=Boolean(i??r),b=Boolean(a??o);return!h&&g&&Xt().info("Not allowed to send audio on this room. Default values will be used."),!m&&v&&Xt().info("Not allowed to send video on this room. Default values will be used."),!p&&y&&Xt().info("Not allowed to receive video from the room. Default values will be used."),!f&&b&&Xt().info("Not allowed to receive video from the room. Default values will be used."),{mustSendAudio:h&&g,mustSendVideo:m&&v,mustRecvAudio:p&&y,mustRecvVideo:f&&b}})({authState:a,sendAudio:Boolean(t),sendVideo:Boolean(r),...e});if(!Object.values(c).some(Boolean))return u.disconnect(),n(new Error(`Invalid arguments to join the room. The token used has join_as: '${a.join_as}'. \n${JSON.stringify(e,null,2)}\n`));l.updateMediaOptions({audio:!!c.mustSendAudio&&(s||!0),video:!!c.mustSendVideo&&(i||!0),negotiateAudio:c.mustRecvAudio,negotiateVideo:c.mustRecvVideo}),l.once("room.subscribed",(e=>{l.attachOnSubscribedWorkers(e),o(l)})),await l.join()}catch(e){Xt().error("RoomSession Join",e),u.disconnect(),n(e)}}))};return new Proxy(l,{get(e,t,r){if(t in h)return h[t];if(!e.active&&da.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:ca,joinRoom:e=>ca({...e,autoJoin:!0}),createClient:ra}),la=Object.freeze({__proto__:null,getDevices:ri,getCameraDevices:()=>ri("camera"),getMicrophoneDevices:()=>ri("microphone"),getSpeakerDevices:()=>ri("speaker"),getDevicesWithPermissions:ei,getCameraDevicesWithPermissions:()=>ei("camera"),getMicrophoneDevicesWithPermissions:()=>ei("microphone"),getSpeakerDevicesWithPermissions:()=>ei("speaker"),checkPermissions:Qs,checkCameraPermissions:Gs,checkMicrophonePermissions:Ks,checkSpeakerPermissions:Xs,requestPermissions:async e=>{try{const t=await Ys(e);Bs(t)}catch(e){throw e}},createDeviceWatcher:di,createCameraDeviceWatcher:()=>di({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>di({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>di({targets:["speaker"]}),supportsMediaDevices:Ns,supportsGetUserMedia:()=>"function"==typeof Ds().getUserMedia,supportsGetDisplayMedia:()=>"function"==typeof Ds().getDisplayMedia,getUserMedia:Ys,getDisplayMedia:Zs,enumerateDevices:Hs,getSupportedConstraints:Ws,supportsMediaOutput:Us,setMediaElementSinkId:$s,stopStream:Bs,stopTrack:Fs,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(ui(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},Ys(t)})(e);if(!t)throw new Error("Failed to get the audio stream");const r=new Et,o=new(window.AudioContext||window.webkitAudioContext),n=(e=>{const t=e.createAnalyser();return t.fftSize=64,t.minDecibels=-90,t.maxDecibels=-10,t.smoothingTimeConstant=.85,t})(o);let s,i;try{o.createMediaStreamSource(t).connect(n)}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(n.frequencyBinCount);n.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),"closed"!==o.state&&o.close().catch((e=>{Xt().error("Error closing the AudioContext",e)})),ui(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=na,e.PubSub=ia,e.Video=ua,e.WebRTC=la,Object.defineProperty(e,"__esModule",{value:!0})}));
21
21
  //# sourceMappingURL=index.umd.js.map