@signalwire/js 3.12.0 → 3.12.1

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.
Files changed (61) hide show
  1. package/dist/core/src/BaseComponent.d.ts +3 -1
  2. package/dist/core/src/BaseComponent.d.ts.map +1 -1
  3. package/dist/core/src/RPCMessages/VertoMessages.d.ts +8 -0
  4. package/dist/core/src/RPCMessages/VertoMessages.d.ts.map +1 -1
  5. package/dist/core/src/index.d.ts +1 -0
  6. package/dist/core/src/index.d.ts.map +1 -1
  7. package/dist/core/src/redux/features/session/sessionSaga.d.ts.map +1 -1
  8. package/dist/core/src/redux/features/session/sessionSelectors.d.ts +1 -0
  9. package/dist/core/src/redux/features/session/sessionSelectors.d.ts.map +1 -1
  10. package/dist/core/src/redux/features/session/sessionSlice.d.ts +65 -0
  11. package/dist/core/src/redux/features/session/sessionSlice.d.ts.map +1 -1
  12. package/dist/core/src/redux/interfaces.d.ts +2 -1
  13. package/dist/core/src/redux/interfaces.d.ts.map +1 -1
  14. package/dist/core/src/redux/rootReducer.d.ts +16 -0
  15. package/dist/core/src/redux/rootReducer.d.ts.map +1 -1
  16. package/dist/core/src/rooms/RoomSessionPlayback.d.ts +3 -0
  17. package/dist/core/src/rooms/RoomSessionPlayback.d.ts.map +1 -1
  18. package/dist/core/src/rooms/methods.d.ts +3 -0
  19. package/dist/core/src/rooms/methods.d.ts.map +1 -1
  20. package/dist/core/src/testUtils.d.ts.map +1 -1
  21. package/dist/core/src/types/common.d.ts +11 -0
  22. package/dist/core/src/types/common.d.ts.map +1 -1
  23. package/dist/core/src/types/videoPlayback.d.ts +5 -0
  24. package/dist/core/src/types/videoPlayback.d.ts.map +1 -1
  25. package/dist/core/src/types/videoRoomSession.d.ts +1 -0
  26. package/dist/core/src/types/videoRoomSession.d.ts.map +1 -1
  27. package/dist/core/src/utils/interfaces.d.ts +7 -5
  28. package/dist/core/src/utils/interfaces.d.ts.map +1 -1
  29. package/dist/index.esm.js +82 -3
  30. package/dist/index.esm.js.map +3 -3
  31. package/dist/index.js +80 -3
  32. package/dist/index.js.map +3 -3
  33. package/dist/index.umd.js +2 -2
  34. package/dist/index.umd.js.map +1 -1
  35. package/dist/js/src/BaseRoomSession.d.ts +5 -0
  36. package/dist/js/src/BaseRoomSession.d.ts.map +1 -1
  37. package/dist/js/src/RoomSession.d.ts +2 -2
  38. package/dist/js/src/RoomSession.d.ts.map +1 -1
  39. package/dist/js/src/RoomSession.docs.d.ts +21 -0
  40. package/dist/js/src/RoomSession.docs.d.ts.map +1 -1
  41. package/dist/js/src/features/mediaElements/mediaElementsSagas.d.ts.map +1 -1
  42. package/dist/js/src/utils/interfaces.d.ts +4 -0
  43. package/dist/js/src/utils/interfaces.d.ts.map +1 -1
  44. package/dist/js/src/utils/roomSession.d.ts +13 -0
  45. package/dist/js/src/utils/roomSession.d.ts.map +1 -0
  46. package/dist/js/src/utils/videoElement.d.ts +1 -0
  47. package/dist/js/src/utils/videoElement.d.ts.map +1 -1
  48. package/dist/js/tsconfig.build.tsbuildinfo +1 -1
  49. package/dist/webrtc/src/BaseConnection.d.ts +8 -0
  50. package/dist/webrtc/src/BaseConnection.d.ts.map +1 -1
  51. package/dist/webrtc/src/utils/interfaces.d.ts +2 -0
  52. package/dist/webrtc/src/utils/interfaces.d.ts.map +1 -1
  53. package/dist/webrtc/src/utils/webrtcHelpers.native.d.ts.map +1 -1
  54. package/package.json +3 -3
  55. package/src/BaseRoomSession.ts +4 -1
  56. package/src/RoomSession.docs.ts +20 -0
  57. package/src/RoomSession.ts +60 -3
  58. package/src/features/mediaElements/mediaElementsSagas.ts +10 -0
  59. package/src/utils/interfaces.ts +5 -0
  60. package/src/utils/roomSession.ts +54 -0
  61. package/src/utils/videoElement.ts +3 -0
package/dist/index.umd.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * SignalWire JS SDK v3.12.0 (https://signalwire.com)
2
+ * SignalWire JS SDK v3.12.1 (https://signalwire.com)
3
3
  * Copyright 2018-2022 SignalWire
4
4
  * Licensed under MIT(https://github.com/signalwire/signalwire-js/blob/main/LICENSE)
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SignalWire={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r={exports:{}};!function(e){var r,n;r=t,n=function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function o(e,t){var r=e[t];if("function"==typeof r.bind)return r.bind(e);try{return Function.prototype.bind.call(r,e)}catch(t){return function(){return Function.prototype.apply.apply(r,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(n){return"debug"===n&&(n="log"),typeof console!==t&&("trace"===n&&r?s:void 0!==console[n]?o(console,n):void 0!==console.log?o(console,"log"):e)}function a(t,r){for(var o=0;o<n.length;o++){var s=n[o];this[s]=o<t?e:this.methodFactory(s,t,r)}this.log=this.debug}function c(e,r,n){return function(){typeof console!==t&&(a.call(this,r,n),this[e].apply(this,arguments))}}function u(e,t,r){return i(e)||c.apply(this,arguments)}function d(e,r,o){var s,i=this;r=null==r?"WARN":r;var c="loglevel";function d(){var e;if(typeof window!==t&&c){try{e=window.localStorage[c]}catch(e){}if(typeof e===t)try{var r=window.document.cookie,n=r.indexOf(encodeURIComponent(c)+"=");-1!==n&&(e=/^([^;]+)/.exec(r.slice(n))[1])}catch(e){}return void 0===i.levels[e]&&(e=void 0),e}}"string"==typeof e?c+=":"+e:"symbol"==typeof e&&(c=void 0),i.name=e,i.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},i.methodFactory=o||u,i.getLevel=function(){return s},i.setLevel=function(r,o){if("string"==typeof r&&void 0!==i.levels[r.toUpperCase()]&&(r=i.levels[r.toUpperCase()]),!("number"==typeof r&&r>=0&&r<=i.levels.SILENT))throw"log.setLevel() called with invalid level: "+r;if(s=r,!1!==o&&function(e){var r=(n[e]||"silent").toUpperCase();if(typeof window!==t&&c){try{return void(window.localStorage[c]=r)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"="+r+";"}catch(e){}}}(r),a.call(i,r,e),typeof console===t&&r<i.levels.SILENT)return"No console available for logging"},i.setDefaultLevel=function(e){r=e,d()||i.setLevel(e,!1)},i.resetLevel=function(){i.setLevel(r,!1),function(){if(typeof window!==t&&c){try{return void window.localStorage.removeItem(c)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},i.enableAll=function(e){i.setLevel(i.levels.TRACE,e)},i.disableAll=function(e){i.setLevel(i.levels.SILENT,e)};var l=d();null==l&&(l=r),i.setLevel(l,!1)}var l=new d,h={};l.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=h[e];return t||(t=h[e]=new d(e,l.getLevel(),l.methodFactory)),t};var p=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=p),l},l.getLoggers=function(){return h},l.default=l,l},e.exports?e.exports=n():r.log=n()}(r);var n,o=r.exports,s=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(s)}var a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function c(e){return"string"==typeof e&&a.test(e)}for(var u=[],d=0;d<256;++d)u.push((d+256).toString(16).substr(1));function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(u[e[t+0]]+u[e[t+1]]+u[e[t+2]]+u[e[t+3]]+"-"+u[e[t+4]]+u[e[t+5]]+"-"+u[e[t+6]]+u[e[t+7]]+"-"+u[e[t+8]]+u[e[t+9]]+"-"+u[e[t+10]]+u[e[t+11]]+u[e[t+12]]+u[e[t+13]]+u[e[t+14]]+u[e[t+15]]).toLowerCase();if(!c(r))throw TypeError("Stringified UUID is invalid");return r}function h(e,t,r){function n(e,n,o,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 n&&(n=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}(n)),16!==n.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var i=new Uint8Array(16+e.length);if(i.set(n),i.set(e,n.length),(i=r(i))[6]=15&i[6]|t,i[8]=63&i[8]|128,o){s=s||0;for(var a=0;a<16;++a)o[s+a]=i[a];return o}return l(i)}try{n.name=e}catch(e){}return n.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",n.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",n}function p(e){return 14+(e+64>>>9<<4)+1}function m(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(e,t,r,n,o,s){return m((i=m(m(t,e),m(n,s)))<<(a=o)|i>>>32-a,r);var i,a}function g(e,t,r,n,o,s,i){return f(t&r|~t&n,e,t,o,s,i)}function v(e,t,r,n,o,s,i){return f(t&n|r&~n,e,t,o,s,i)}function y(e,t,r,n,o,s,i){return f(t^r^n,e,t,o,s,i)}function b(e,t,r,n,o,s,i){return f(r^(t|~n),e,t,o,s,i)}function _(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return l(n)}function w(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:return t^r^n;case 2:return t&r^t&n^r&n;case 3:return t^r^n}}function S(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 n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}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,n="0123456789abcdef",o=0;o<r;o+=8){var s=e[o>>5]>>>o%32&255,i=parseInt(n.charAt(s>>>4&15)+n.charAt(15&s),16);t.push(i)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[p(t)-1]=t;for(var r=1732584193,n=-271733879,o=-1732584194,s=271733878,i=0;i<e.length;i+=16){var a=r,c=n,u=o,d=s;r=g(r,n,o,s,e[i],7,-680876936),s=g(s,r,n,o,e[i+1],12,-389564586),o=g(o,s,r,n,e[i+2],17,606105819),n=g(n,o,s,r,e[i+3],22,-1044525330),r=g(r,n,o,s,e[i+4],7,-176418897),s=g(s,r,n,o,e[i+5],12,1200080426),o=g(o,s,r,n,e[i+6],17,-1473231341),n=g(n,o,s,r,e[i+7],22,-45705983),r=g(r,n,o,s,e[i+8],7,1770035416),s=g(s,r,n,o,e[i+9],12,-1958414417),o=g(o,s,r,n,e[i+10],17,-42063),n=g(n,o,s,r,e[i+11],22,-1990404162),r=g(r,n,o,s,e[i+12],7,1804603682),s=g(s,r,n,o,e[i+13],12,-40341101),o=g(o,s,r,n,e[i+14],17,-1502002290),r=v(r,n=g(n,o,s,r,e[i+15],22,1236535329),o,s,e[i+1],5,-165796510),s=v(s,r,n,o,e[i+6],9,-1069501632),o=v(o,s,r,n,e[i+11],14,643717713),n=v(n,o,s,r,e[i],20,-373897302),r=v(r,n,o,s,e[i+5],5,-701558691),s=v(s,r,n,o,e[i+10],9,38016083),o=v(o,s,r,n,e[i+15],14,-660478335),n=v(n,o,s,r,e[i+4],20,-405537848),r=v(r,n,o,s,e[i+9],5,568446438),s=v(s,r,n,o,e[i+14],9,-1019803690),o=v(o,s,r,n,e[i+3],14,-187363961),n=v(n,o,s,r,e[i+8],20,1163531501),r=v(r,n,o,s,e[i+13],5,-1444681467),s=v(s,r,n,o,e[i+2],9,-51403784),o=v(o,s,r,n,e[i+7],14,1735328473),r=y(r,n=v(n,o,s,r,e[i+12],20,-1926607734),o,s,e[i+5],4,-378558),s=y(s,r,n,o,e[i+8],11,-2022574463),o=y(o,s,r,n,e[i+11],16,1839030562),n=y(n,o,s,r,e[i+14],23,-35309556),r=y(r,n,o,s,e[i+1],4,-1530992060),s=y(s,r,n,o,e[i+4],11,1272893353),o=y(o,s,r,n,e[i+7],16,-155497632),n=y(n,o,s,r,e[i+10],23,-1094730640),r=y(r,n,o,s,e[i+13],4,681279174),s=y(s,r,n,o,e[i],11,-358537222),o=y(o,s,r,n,e[i+3],16,-722521979),n=y(n,o,s,r,e[i+6],23,76029189),r=y(r,n,o,s,e[i+9],4,-640364487),s=y(s,r,n,o,e[i+12],11,-421815835),o=y(o,s,r,n,e[i+15],16,530742520),r=b(r,n=y(n,o,s,r,e[i+2],23,-995338651),o,s,e[i],6,-198630844),s=b(s,r,n,o,e[i+7],10,1126891415),o=b(o,s,r,n,e[i+14],15,-1416354905),n=b(n,o,s,r,e[i+5],21,-57434055),r=b(r,n,o,s,e[i+12],6,1700485571),s=b(s,r,n,o,e[i+3],10,-1894986606),o=b(o,s,r,n,e[i+10],15,-1051523),n=b(n,o,s,r,e[i+1],21,-2054922799),r=b(r,n,o,s,e[i+8],6,1873313359),s=b(s,r,n,o,e[i+15],10,-30611744),o=b(o,s,r,n,e[i+6],15,-1560198380),n=b(n,o,s,r,e[i+13],21,1309151649),r=b(r,n,o,s,e[i+4],6,-145523070),s=b(s,r,n,o,e[i+11],10,-1120210379),o=b(o,s,r,n,e[i+2],15,718787259),n=b(n,o,s,r,e[i+9],21,-343485551),r=m(r,a),n=m(n,c),o=m(o,u),s=m(s,d)}return[r,n,o,s]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(p(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%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 n=unescape(encodeURIComponent(e));e=[];for(var o=0;o<n.length;++o)e.push(n.charCodeAt(o))}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),u=0;u<16;++u)c[u]=e[64*a+4*u]<<24|e[64*a+4*u+1]<<16|e[64*a+4*u+2]<<8|e[64*a+4*u+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 d=0;d<s;++d){for(var l=new Uint32Array(80),h=0;h<16;++h)l[h]=i[d][h];for(var p=16;p<80;++p)l[p]=S(l[p-3]^l[p-8]^l[p-14]^l[p-16],1);for(var m=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=S(m,5)+w(_,f,g,v)+y+t[_]+l[b]>>>0;y=v,v=g,g=S(f,30)>>>0,f=m,m=k}r[0]=r[0]+m>>>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 O(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 R(e,t,r){var n;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(R)(e,t)}if("function"!=typeof e)throw new Error(T(2));var o=e,s=t,i=[],a=i,c=!1;function u(){a===i&&(a=i.slice())}function d(){if(c)throw new Error(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 u(),a.push(e),function(){if(t){if(c)throw new Error(T(6));t=!1,u();var r=a.indexOf(e);a.splice(r,1),i=null}}}function h(e){if(!O(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=o(s,e)}finally{c=!1}for(var t=i=a,r=0;r<t.length;r++)(0,t[r])();return e}function p(e){if("function"!=typeof e)throw new Error(T(10));o=e,h({type:P.REPLACE})}function m(){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(d())}return r(),{unsubscribe:t(r)}}})[I]=function(){return this},e}return h({type:P.INIT}),(n={dispatch:h,subscribe:l,getState:d,replaceReducer:p})[I]=m,n}function A(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++){var o=t[n];"function"==typeof e[o]&&(r[o]=e[o])}var s,i=Object.keys(r);try{!function(e){Object.keys(e).forEach((function(t){var r=e[t];if(void 0===r(void 0,{type: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 n=!1,o={},a=0;a<i.length;a++){var c=i[a],u=e[c],d=(0,r[c])(u,t);if(void 0===d)throw new Error(T(14));o[c]=d,n=n||d!==u}return(n=n||i.length!==Object.keys(e).length)?o: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),n=function(){throw new Error(T(15))},o={getState:r.getState,dispatch:function(){return n.apply(void 0,arguments)}},s=t.map((function(e){return e(o)}));return n=j.apply(void 0,s)(r.dispatch),C(C({},r),{},{dispatch:n})}}}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 n in e){var o=e[n];"function"==typeof o&&(r[n]=x(o,t))}return r},combineReducers:A,compose:j,createStore:R,legacy_createStore:R}),D=function(e){return"@@redux-saga/"+e},W=D("CANCEL_PROMISE"),V=D("CHANNEL_END"),U=D("IO"),$=D("MATCH"),q=D("MULTICAST"),F=D("SAGA_ACTION"),B=D("SELF_CANCELLATION"),z=D("TASK"),H=D("TASK_CANCEL"),Q=D("TERMINATE"),K=D("LOCATION");function J(){return(J=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var G=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)},ne=function e(t){return t&&(Z(t)||se(t)||Y(t)||ee(t)&&t.every(e))},oe=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 n=new Promise((function(n){r=setTimeout(n,e,t)}));return n[W]=function(){clearTimeout(r)},n}var ae=function(e){return function(){return!0}}(),ce=function(){},ue=function(e){return e},de=function(e,t){J(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 pe=function(e){throw e},me=function(e){return{value:e,done:!0}};function fe(e,t,r){void 0===t&&(t=pe),void 0===r&&(r="iterator");var n={meta:{name:r},next:e,throw:t,return:me,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(n[Symbol.iterator]=function(){return n}),n}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===Q},_e=function(e){return e===H},we=function(e){return be(e)||_e(e)};function Se(e,t){var r,n=Object.keys(e),o=n.length,s=0,i=ee(e)?ve(o):{},a={};return n.forEach((function(e){var n=function(n,a){r||(a||we(n)?(t.cancel(),t(n,a)):(i[e]=n,++s===o&&(r=!0,t(i))))};n.cancel=ce,a[e]=n})),t.cancel=function(){r||(r=!0,n.forEach((function(e){return a[e].cancel()})))},a}function ke(e){return{name:e.name||"anonymous",location:Ee(e)}}function Ee(e){return e[K]}var Ce={isEmpty:ae,put:ce,take:ce},Te="TAKE",Ie="CALL",Me="FORK",Pe="SELECT",Oe=function(e,t){var r;return(r={})[U]=!0,r.combinator=!1,r.type=e,r.payload=t,r},Re=function(e){return Oe(Me,J({},e.payload,{detached:!0}))};function Ae(e,t){return void 0===e&&(e="*"),ne(e)?Oe(Te,{pattern:e}):oe(r=e)&&r[q]&&X(t)&&ne(t)?Oe(Te,{channel:e,pattern:t}):oe(e)?Oe(Te,{channel:e}):void 0;var r}function xe(e,t){return G(t)&&(t=e,e=void 0),Oe("PUT",{channel:e,action:t})}function je(e,t){var r,n=null;return Y(e)?r=e:(ee(e)?(n=e[0],r=e[1]):(n=e.context,r=e.fn),n&&Z(r)&&Y(n[r])&&(r=n[r])),{context:n,fn:r,args:t}}function Le(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return Oe(Ie,je(e,r))}function Ne(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return Oe(Me,je(e,r))}function De(e){void 0===e&&(e=ue);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return Oe(Pe,{selector:e,args:r})}var We=Le.bind(null,ie),Ve=[],Ue=0;function $e(e){try{Be(),e()}finally{ze()}}function qe(e){Ve.push(e),Ue||(Be(),He())}function Fe(e){try{return Be(),e()}finally{He()}}function Be(){Ue++}function ze(){Ue--}function He(){var e;for(ze();!Ue&&void 0!==(e=Ve.shift());)$e(e)}var Qe=function(e){return function(t){return e.some((function(e){return Ye(e)(t)}))}},Ke=function(e){return function(t){return e(t)}},Je=function(e){return function(t){return t.type===String(e)}},Ge=function(e){return function(t){return t.type===e}},Xe=function(){return ae};function Ye(e){var t="*"===e?Xe:Z(e)?Je:ee(e)?Qe:function(e){return Y(e)&&e.hasOwnProperty("toString")}(e)?Je:Y(e)?Ke:se(e)?Ge:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var Ze={type:V},et=function(e){return e&&e.type===V};function tt(e){void 0===e&&(e=function(e,t){void 0===e&&(e=10);var r=new Array(e),n=0,o=0,s=0,i=function(){if(0!=n){var t=r[s];return r[s]=null,n--,s=(s+1)%e,t}},a=function(){for(var e=[];n;)e.push(i());return e};return{isEmpty:function(){return 0==n},put:function(t){var i;n<e||(i=2*e,r=a(),n=r.length,o=r.length,s=0,r.length=i,e=i),function(t){r[o]=t,o=(o+1)%e,n++}(t)},take:i,flush:a}}(void 0));var t=!1,r=[];return{take:function(n){t&&e.isEmpty()?n(Ze):e.isEmpty()?(r.push(n),n.cancel=function(){le(r,n)}):n(e.take())},put:function(n){if(!t){if(0===r.length)return e.put(n);r.shift()(n)}},flush:function(r){t&&e.isEmpty()?r(Ze):r(e.flush())},close:function(){if(!t){t=!0;var e=r;r=[];for(var n=0,o=e.length;n<o;n++)(0,e[n])(Ze)}}}}function rt(){var e,t=!1,r=[],n=r,o=function(){n===r&&(n=r.slice())},s=function(){t=!0;var e=r=n;n=[],e.forEach((function(e){e(Ze)}))};return(e={})[q]=!0,e.put=function(e){if(!t)if(et(e))s();else for(var o=r=n,i=0,a=o.length;i<a;i++){var c=o[i];c[$](e)&&(c.cancel(),c(e))}},e.take=function(e,r){void 0===r&&(r=Xe),t?e(Ze):(e[$]=r,o(),n.push(e),e.cancel=he((function(){o(),le(n,e)})))},e.close=s,e}function nt(){var e=rt(),t=e.put;return e.put=function(e){e[F]?t(e):qe((function(){t(e)}))},e}function ot(e,t){var r=e[W];Y(r)&&(t.cancel=r),e.then(t,(function(e){t(e,!0)}))}var st,it=0,at=function(){return++it};function ct(e){e.isRunning()&&e.cancel()}var ut=((st={}).TAKE=function(e,t,r){var n=t.channel,o=void 0===n?e.channel:n,s=t.pattern,i=t.maybe,a=function(e){e instanceof Error?r(e,!0):!et(e)||i?r(e):r(Q)};try{o.take(a,X(s)?Ye(s):null)}catch(e){return void r(e,!0)}r.cancel=a.cancel},st.PUT=function(e,t,r){var n=t.channel,o=t.action,s=t.resolve;qe((function(){var t;try{t=(n?n.put:e.dispatch)(o)}catch(e){return void r(e,!0)}s&&te(t)?ot(t,r):r(t)}))},st.ALL=function(e,t,r,n){var o=n.digestEffect,s=it,i=Object.keys(t);if(0!==i.length){var a=Se(t,r);i.forEach((function(e){o(t[e],s,a[e],e)}))}else r(ee(t)?[]:{})},st.RACE=function(e,t,r,n){var o=n.digestEffect,s=it,i=Object.keys(t),a=ee(t)?ve(i.length):{},c={},u=!1;i.forEach((function(e){var t=function(t,n){u||(n||we(t)?(r.cancel(),r(t,n)):(r.cancel(),u=!0,a[e]=t,r(a)))};t.cancel=ce,c[e]=t})),r.cancel=function(){u||(u=!0,i.forEach((function(e){return c[e].cancel()})))},i.forEach((function(e){u||o(t[e],s,c[e],e)}))},st.CALL=function(e,t,r,n){var o=t.context,s=t.fn,i=t.args,a=n.task;try{var c=s.apply(o,i);if(te(c))return void ot(c,r);if(re(c))return void yt(e,c,a.context,it,ke(s),!1,r);r(c)}catch(e){r(e,!0)}},st.CPS=function(e,t,r){var n=t.context,o=t.fn,s=t.args;try{var i=function(e,t){G(e)?r(t):r(e,!0)};o.apply(n,s.concat(i)),i.cancel&&(r.cancel=i.cancel)}catch(e){r(e,!0)}},st.FORK=function(e,t,r,n){var o=t.fn,s=t.detached,i=n.task,a=function(e){var t=e.context,r=e.fn,n=e.args;try{var o=r.apply(t,n);if(re(o))return o;var s=!1;return fe((function(e){return s?{value:e,done:!0}:(s=!0,{value:o,done:!te(o)})}))}catch(e){return fe((function(){throw e}))}}({context:t.context,fn:o,args:t.args}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:ke(t)}(a,o);Fe((function(){var t=yt(e,a,i.context,it,c,s,void 0);s?r(t):t.isRunning()?(i.queue.addTask(t),r(t)):t.isAborted()?i.queue.abort(t.error()):r(t)}))},st.JOIN=function(e,t,r,n){var o=n.task,s=function(e,t){if(e.isRunning()){var r={task:o,cb:t};t.cancel=function(){e.isRunning()&&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=Se(t,r);t.forEach((function(e,t){s(e,i[t])}))}else s(t,r)},st.CANCEL=function(e,t,r,n){t===B?ct(n.task):ee(t)?t.forEach(ct):ct(t),r()},st.SELECT=function(e,t,r){var n=t.selector,o=t.args;try{r(n.apply(void 0,[e.getState()].concat(o)))}catch(e){r(e,!0)}},st.ACTION_CHANNEL=function(e,t,r){var n=t.pattern,o=tt(t.buffer),s=Ye(n),i=function t(r){et(r)||e.channel.take(t,s),o.put(r)},a=o.close;o.close=function(){i.cancel(),a()},e.channel.take(i,s),r(o)},st.CANCELLED=function(e,t,r,n){r(n.task.isCancelled())},st.FLUSH=function(e,t,r){t.flush(r)},st.GET_CONTEXT=function(e,t,r,n){r(n.task.context[t])},st.SET_CONTEXT=function(e,t,r,n){de(n.task.context,t),r()},st);function dt(e,t){return e+"?"+t}function lt(e){var t=e.name,r=e.location;return r?t+" "+dt(r.fileName,r.lineNumber):t}function ht(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 pt=null,mt=[],ft=function(e){e.crashedEffect=pt,mt.push(e)},gt=function(){pt=null,mt.length=0},vt=function(){var e,t=mt[0],r=mt.slice(1),n=t.crashedEffect?(e=Ee(t.crashedEffect))?e.code+" "+dt(e.fileName,e.lineNumber):"":null;return["The above error occurred in task "+lt(t.meta)+(n?" \n when executing effect "+n:"")].concat(r.map((function(e){return" created by "+lt(e.meta)})),[ht(mt)]).join("\n")};function yt(e,t,r,n,o,s,i){var a=e.finalizeRunEffect((function(t,r,n){te(t)?ot(t,n):re(t)?yt(e,t,u.context,r,o,!1,n):t&&t[U]?(0,ut[t.type])(e,t.payload,n,d):n(t)}));l.cancel=ce;var c={meta:o,cancel:function(){0===c.status&&(c.status=1,l(H))},status:0},u=function(e,t,r,n,o,s,i){var a;void 0===i&&(i=ce);var c,u,d=0,l=null,h=[],p=Object.create(r),m=function(e,t,r){var n,o=[],s=!1;function i(e){h.push.apply(h,m.getTasks().map((function(e){return e.meta.name}))),c(),r(e,!0)}function a(t){o.push(t),t.cont=function(a,c){s||(le(o,t),t.cont=ce,c?i(a):(t===e&&(n=a),o.length||(s=!0,r(n))))}}function c(){s||(s=!0,o.forEach((function(e){e.cont=ce,e.cancel()})),o=[])}return a(e),{addTask:a,cancelAll:c,abort:i,getTasks:function(){return o}}}(t,0,f);function f(t,r){if(r){if(d=2,ft({meta:o,cancelledTasks:h}),g.isRoot){var n=vt();gt(),e.onError(t,{sagaStack:n})}u=t,l&&l.reject(t)}else t===H?d=1:1!==d&&(d=3),c=t,l&&l.resolve(t);g.cont(t,r),g.joiners.forEach((function(e){e.cb(t,r)})),g.joiners=null}var g=((a={})[z]=!0,a.id=n,a.meta=o,a.isRoot=s,a.context=p,a.joiners=[],a.queue=m,a.cancel=function(){0===d&&(d=1,m.cancelAll(),f(H,!1))},a.cont=i,a.end=f,a.setContext=function(e){de(p,e)},a.toPromise=function(){return l||((e={}).promise=new Promise((function(t,r){e.resolve=t,e.reject=r})),l=e,2===d?l.reject(u):0!==d&&l.resolve(c)),l.promise;var e},a.isRunning=function(){return 0===d},a.isCancelled=function(){return 1===d||0===d&&1===t.status},a.isAborted=function(){return 2===d},a.result=function(){return c},a.error=function(){return u},a);return g}(e,c,r,n,o,s,i),d={task:u,digestEffect:h};return i&&(i.cancel=u.cancel),l(),u;function l(e,r){try{var o;r?(o=t.throw(e),gt()):_e(e)?(c.status=1,l.cancel(),o=Y(t.return)?t.return(H):{done:!0,value:H}):o=be(e)?Y(t.return)?t.return():{done:!0}:t.next(e),o.done?(1!==c.status&&(c.status=3),c.cont(o.value)):h(o.value,n,l)}catch(e){if(1===c.status)throw e;c.status=2,c.cont(e,!0)}}function h(t,r,n,o){void 0===o&&(o="");var s,i=at();function c(r,o){s||(s=!0,n.cancel=ce,e.sagaMonitor&&(o?e.sagaMonitor.effectRejected(i,r):e.sagaMonitor.effectResolved(i,r)),o&&function(e){pt=e}(t),n(r,o))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:i,parentEffectId:r,label:o,effect:t}),c.cancel=ce,n.cancel=function(){s||(s=!0,c.cancel(),c.cancel=ce,e.sagaMonitor&&e.sagaMonitor.effectCancelled(i))},a(t,i,c)}}function bt(e,t){for(var r=e.channel,n=void 0===r?nt():r,o=e.dispatch,s=e.getState,i=e.context,a=void 0===i?{}:i,c=e.sagaMonitor,u=e.effectMiddlewares,d=e.onError,l=void 0===d?ge:d,h=arguments.length,p=new Array(h>2?h-2:0),m=2;m<h;m++)p[m-2]=arguments[m];var f,g=t.apply(void 0,p),v=at();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:p})),u){var y=j.apply(void 0,u);f=function(e){return function(t,r,n){return y((function(t){return e(t,r,n)}))(t)}}}else f=ue;var b={channel:n,dispatch:ye(o),getState:s,sagaMonitor:c,onError:l,finalizeRunEffect:f};return Fe((function(){var e=yt(b,g,a,v,ke(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function _t(e){var t,r=void 0===e?{}:e,n=r.context,o=void 0===n?{}:n,s=r.channel,i=void 0===s?nt():s,a=r.sagaMonitor,c=function(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)t.indexOf(r=s[n])>=0||(o[r]=e[r]);return o}(r,["context","channel","sagaMonitor"]);function u(e){return t=bt.bind(null,J({},c,{context:o,channel:i,dispatch:e.dispatch,getState:e.getState,sagaMonitor:a})),function(e){return function(t){a&&a.actionDispatched&&a.actionDispatched(t);var r=e(t);return i.put(t),r}}}return u.run=function(){return t.apply(void 0,arguments)},u.setContext=function(e){de(o,e)},u}var wt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new o(n,s||e,i),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function i(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,o=[];if(0===this._eventsCount)return o;for(n in e=this._events)t.call(e,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,s=new Array(o);n<o;n++)s[n]=t[n].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[r?r+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,n,o,s,i){var a=r?r+e:e;if(!this._events[a])return!1;var c,u,d=this._events[a],l=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),l){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,n),!0;case 4:return d.fn.call(d.context,t,n,o),!0;case 5:return d.fn.call(d.context,t,n,o,s),!0;case 6:return d.fn.call(d.context,t,n,o,s,i),!0}for(u=1,c=new Array(l-1);u<l;u++)c[u-1]=arguments[u];d.fn.apply(d.context,c)}else{var h,p=d.length;for(u=0;u<p;u++)switch(d[u].once&&this.removeListener(e,d[u].fn,void 0,!0),l){case 1:d[u].fn.call(d[u].context);break;case 2:d[u].fn.call(d[u].context,t);break;case 3:d[u].fn.call(d[u].context,t,n);break;case 4:d[u].fn.call(d[u].context,t,n,o);break;default:if(!c)for(h=1,c=new Array(l-1);h<l;h++)c[h-1]=arguments[h];d[u].fn.apply(d[u].context,c)}}return!0},a.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},a.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},a.prototype.removeListener=function(e,t,n,o){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return i(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||n&&a.context!==n||i(this,s);else{for(var c=0,u=[],d=a.length;c<d;c++)(a[c].fn!==t||o&&!a[c].once||n&&a[c].context!==n)&&u.push(a[c]);u.length?this._events[s]=1===u.length?u[0]:u:i(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=r?r+e:e]&&i(this,t):(this._events=new n,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=r,a.EventEmitter=a,e.exports=a}(wt);var St=wt.exports,kt=Object.defineProperty,Et=Object.defineProperties,Ct=Object.getOwnPropertyDescriptor,Tt=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertyNames,Mt=Object.getOwnPropertySymbols,Pt=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,Rt=(e,t,r)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,At=(e,t)=>{for(var r in t||(t={}))Pt.call(t,r)&&Rt(e,r,t[r]);if(Mt)for(var r of Mt(t))Ot.call(t,r)&&Rt(e,r,t[r]);return e},xt=(e,t)=>Et(e,Tt(t)),jt=(e,t)=>{var r={};for(var n in e)Pt.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&Mt)for(var n of Mt(e))t.indexOf(n)<0&&Ot.call(e,n)&&(r[n]=e[n]);return r},Lt=(e,t)=>{for(var r in t)kt(e,r,{get:t[r],enumerable:!0})},Nt=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of It(t))Pt.call(e,o)||o===r||kt(e,o,{get:()=>t[o],enumerable:!(n=Ct(t,o))||n.enumerable});return e},Dt=(e,t,r)=>(Nt(e,t,"default"),r&&Nt(r,t,"default")),Wt=(e,t,r)=>(Rt(e,"symbol"!=typeof t?t+"":t,r),r),Vt="__local__",Ut="__synthetic__",$t=["room.started","room.ended"].map((e=>`video.${e}`)),qt=()=>(new Date).toISOString().replace("T"," ").replace("Z",""),Ft=o.getLogger("signalwire"),Bt=Ft.methodFactory;Ft.methodFactory=(e,t,r)=>{const n=Bt(e,t,r);return function(){const e=[qt(),"-"];for(let t=0;t<arguments.length;t++)e.push(arguments[t]);n.apply(void 0,e)}};var zt,Ht=Ft.getLevel();Ft.setLevel(Ht);var Qt={},Kt=()=>null!=zt?zt:Ft,Jt=({type:e,payload:t})=>{const r=Kt(),{logWsTraffic:n}=Qt||{};if(!n)return;const o=(e=>!("method"in e)||"signalwire.ping"!==e.method)(t)?JSON.stringify(t,null,2):t;return r.info(`${e.toUpperCase()}: \n`,o,"\n")},Gt=()=>{const e=Kt();return new Proxy(e,{get:(e,t,r)=>"wsTraffic"===t?Jt:Reflect.get(e,t,r)})},Xt=(e,t)=>{const{result:r={},error:n}=e;if(n)return{error:n};const{code:o,node_id:s,result:i=null}=r;return o&&"200"!==o?{error:r}:null===i?(t&&(r.node_id=t),{result:r}):i?i.jsonrpc?Xt(i,s):{result:i}:{result:r}},Yt={propsToUpdateValue:["updated","layers","members","recordings","playbacks"]},Zt=(e,t=Yt)=>(null==e?void 0:e.__sw_symbol)||(null==e?void 0:e.__sw_proxy)?e:Object.entries(e).reduce(((e,[r,n])=>{const o=er(r);return e[o]="object"==typeof n&&n?Array.isArray(n)?t.propsToUpdateValue.includes(r)?n.map((e=>"string"==typeof e?er(e):Zt(e))):n:Zt(n):(e=>e.endsWith("At"))(o)?(e=>{if(void 0===e)return e;const t=new Date(1e3*e);return isNaN(t.getTime())?e:t})(n):n,e}),{}),er=e=>e.includes("_")?e.split("_").reduce(((e,t,r)=>{const n=t.trim().charAt(0),o=t.substr(1).toLowerCase();return`${e}${0===r?n.toLowerCase():n.toUpperCase()}${o}`}),""):e,tr=/[A-Z]/g,rr=({event:e,namespace:t})=>("string"==typeof e&&(e=(e=>e.replace(tr,(e=>`_${e.toLowerCase()}`)))(e=nr({event:e,namespace:t}))),e),nr=({namespace:e,event:t})=>!e||t.startsWith(e)?t:`${e}:${t}`,or=(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),sr=({instance:e,transform:t,payload:r,transformedPayload:n})=>(({instance:e,proxiedObj:t,payload:r,transformedPayload:n,transform:o})=>{const s=At(xt(At({},n),{_eventsNamespace:o.getInstanceEventNamespace?o.getInstanceEventNamespace(r):void 0,eventChannel:o.getInstanceEventChannel?o.getInstanceEventChannel(r):void 0}),(e=>{let t={},r=e,n=!0;for(;n;)Object.getOwnPropertyNames(r).forEach((r=>{"function"!=typeof e[r]||"string"!=typeof r||r in t||(t[r]=e[r])})),r&&r.__sw_symbol?r=Object.getPrototypeOf(r):n=!1;return t})(e));return Object.defineProperties(t,Object.entries(s).reduce(((e,[t,r])=>(void 0===r||(e[t]={value:r,enumerable:!0,configurable:!0,writable:!0}),e)),{}))})({instance:e,proxiedObj:new Proxy(e,{get:(e,o,s)=>"__sw_proxy"===o||("toString"===o?(({property:e,payload:t})=>"function"==typeof e?()=>JSON.stringify(t):e)({property:e[o],payload:n}):"_eventsNamespace"===o&&t.getInstanceEventNamespace?t.getInstanceEventNamespace(r):"eventChannel"===o&&t.getInstanceEventChannel?t.getInstanceEventChannel(r):o in n?n[o]:Reflect.get(e,o,s))}),payload:r,transformedPayload:n,transform:t}),ir=new Map,ar=/^(ws|wss):\/\//,cr=(e,t,r)=>{let n=null;return Promise.race([e,new Promise(((e,o)=>n=setTimeout(o,t,r)))]).finally((()=>clearTimeout(n)))},ur=e=>e.includes("session."),dr=["video.member.updated","video.member.talking"],lr=["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"],hr=e=>{const t=e.map((e=>{if("string"==typeof e){const t=(e=>{const t=e.split(":");return t[t.length-1]})(e);return lr.includes(t)||(e=>e.includes(Ut))(t)||ur(t)?null:dr.find((e=>t.startsWith(e)))||t}return e}));return Array.from(new Set(t)).filter(Boolean)},pr=e=>e.includes(Vt),mr=e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Vt),e)),[]).join(".")},fr=e=>{var t;return At({jsonrpc:"2.0",id:null!=(t=e.id)?t:_()},e)},gr=e=>At({jsonrpc:"2.0"},e),vr={major:3,minor:0,revision:0},yr=e=>fr({method:"signalwire.connect",params:At({version:vr},e)}),br={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},_r=e=>{if(e.hasOwnProperty("dialogParams")){const t=jt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in br)e&&t.hasOwnProperty(e)&&(t[br[e]]=t[e],delete t[e]);e.dialogParams=t}return e},wr=e=>(t={})=>fr({method:e,params:_r(t)}),Sr=wr("verto.invite"),kr=wr("verto.bye"),Er=wr("verto.modify"),Cr=wr("verto.info"),Tr=(e,t)=>gr({id:e,result:{method:t}}),Ir={};Lt(Ir,{authErrorAction:()=>Dr,authExpiringAction:()=>Vr,authSuccessAction:()=>Wr,closeConnectionAction:()=>jr,compoundEventAttachAction:()=>Xr,createAction:()=>Pr,destroyAction:()=>xr,executeAction:()=>Nr,getCustomSagaActionType:()=>Gr,initAction:()=>Ar,makeCustomSagaAction:()=>Jr,reauthAction:()=>Lr,sessionAuthErrorAction:()=>Hr,sessionConnectedAction:()=>Fr,sessionDisconnectedAction:()=>Br,sessionExpiringAction:()=>Qr,sessionReconnectingAction:()=>zr,socketClosedAction:()=>Ur,socketErrorAction:()=>$r,socketMessageAction:()=>qr});var Mr={};function Pr(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error("prepareAction did not return an object");return At(At({type:e,payload:n.payload},"meta"in n&&{meta:n.meta}),"error"in n&&{error:n.error})}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>t.type===e,r}Lt(Mr,{configureStore:()=>Rr,createAction:()=>Pr}),Dt(Mr,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 Rr(e){const t=function(){return[]},{reducer:r,middleware:n=t(),devTools:o=!0,preloadedState:s,enhancers:i}=e||{};let a;if("function"==typeof r)a=r;else{if(!function(e){if("object"!=typeof e||null===e)return!1;let t=Object.getPrototypeOf(e);if(null===t)return!0;let r=t;for(;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return t===r}(r))throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');a=A(r)}let c=n;"function"==typeof c&&(c=c(t));const u=L(...c);let d=j;o&&(d=Or(At({trace:!1},"object"==typeof o&&o)));let l=[u];return Array.isArray(i)?l=[u,...i]:"function"==typeof i&&(l=i(l)),R(a,s,d(...l))}var Ar=Pr("swSdk/init"),xr=Pr("swSdk/destroy"),jr=Pr("swSdk/closeConnection"),Lr=Pr("swSdk/reauth"),Nr=Pr("swSdk/executeRequest"),Dr=Pr("auth/error"),Wr=Pr("auth/success"),Vr=Pr("auth/expiring"),Ur=Pr("socket/closed"),$r=Pr("socket/error"),qr=Pr("socket/message"),Fr=Pr("session.connected"),Br=Pr("session.disconnected"),zr=Pr("session.reconnecting"),Hr=Pr("session.auth_error"),Qr=Pr("session.expiring"),Kr=(e,t)=>`${t.type}/${e}`,Jr=(e,t)=>xt(At({},t),{type:Kr(e,t)}),Gr=(e,t)=>Kr(e,t),Xr=Pr("compound_event:attach");function Yr(e){const t={},r=[];let n;const o={addCase(e,r){const n="string"==typeof e?e:e.type;if(n in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[n]=r,o},addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),o),addDefaultCase:e=>(n=e,o)};return e(o),[t,r,n]}var Zr=({name:e="",initialState:t,reducers:r,extraReducers:n})=>function(e){const{name:t}=e;if(!t)throw new Error("`name` is a required option for createSlice");const r=e.initialState,n=e.reducers||{},o=Object.keys(n),s={},i={},a={};function c(){const[t={},n=[],o]="function"==typeof e.extraReducers?Yr(e.extraReducers):[e.extraReducers],s=At(At({},t),i);return function(e,t,r=[],n){let o,[s,i,a]="function"==typeof t?Yr(t):[t,r,n];function c(e=o(),t){let r=[s[t.type],...i.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===r.filter((e=>!!e)).length&&(r=[a]),r.reduce(((e,r)=>r?r(e,t):e),e)}return o="function"==typeof e?()=>e():()=>e,c.getInitialState=o,c}(r,s,n,o)}let u;return o.forEach((e=>{const r=n[e],o=`${t}/${e}`;let c,u;"reducer"in r?(c=r.reducer,u=r.prepare):c=r,s[e]=c,i[o]=c,a[e]=u?Pr(o,u):Pr(o)})),{name:t,reducer:(e,t)=>(u||(u=c()),u(e,t)),actions:a,caseReducers:s,getInitialState:()=>(u||(u=c()),u.getInitialState())}}({name:e,initialState:t,reducers:r,extraReducers:e=>{e.addCase(xr.type,(()=>t)),"function"==typeof n&&n(e)}}),en=Zr({name:"session",initialState:{protocol:"",iceServers:[],authStatus:"unknown",authError:void 0,authCount:0},reducers:{connected:(e,{payload:t})=>{var r,n;return xt(At({},e),{authStatus:"authorized",authCount:e.authCount+1,protocol:null!=(r=null==t?void 0:t.protocol)?r:"",iceServers:null!=(n=null==t?void 0:t.ice_servers)?n:[]})},authStatus:(e,{payload:t})=>xt(At({},e),{authStatus:t})},extraReducers:e=>{e.addCase(Dr.type,((e,{payload:t})=>xt(At({},e),{authStatus:"unauthorized",authError:t.error})))}}),{actions:tn,reducer:rn}=en,nn=Symbol("BaseSession"),on={};Lt(on,{authErrorAction:()=>Dr,authExpiringAction:()=>Vr,authSuccessAction:()=>Wr,closeConnectionAction:()=>jr,compoundEventAttachAction:()=>Xr,configureStore:()=>Fn,connect:()=>qn,createAction:()=>Pr,createCatchableSaga:()=>vn,createRestartableSaga:()=>fn,destroyAction:()=>xr,executeAction:()=>Nr,getCustomSagaActionType:()=>Gr,initAction:()=>Ar,makeCustomSagaAction:()=>Jr,reauthAction:()=>Lr,sessionAuthErrorAction:()=>Hr,sessionConnectedAction:()=>Fr,sessionDisconnectedAction:()=>Br,sessionExpiringAction:()=>Qr,sessionReconnectingAction:()=>zr,socketClosedAction:()=>Ur,socketErrorAction:()=>$r,socketMessageAction:()=>qr});var sn=({state:e,payload:t,componentId:r,key:n,requestId:o})=>xt(At({},e),r in e.byId?{byId:xt(At({},e.byId),{[r]:xt(At({},e.byId[r]),{[n]:xt(At({},e.byId[r][n]),{[o]:t})})})}:{byId:xt(At({},e.byId),{[r]:{id:r,[n]:{[o]:t}}})}),an=Zr({name:"components",initialState:{byId:{}},reducers:{upsert:(e,{payload:t})=>xt(At({},e),t.id in e.byId?{byId:xt(At({},e.byId),{[t.id]:At(At({},e.byId[t.id]),t)})}:{byId:xt(At({},e.byId),{[t.id]:t})}),executeSuccess:(e,{payload:t})=>{const{componentId:r,requestId:n,response:o}=t;return sn({componentId:r,requestId:n,state:e,key:"responses",payload:o})},executeFailure:(e,{payload:t})=>{const{componentId:r,requestId:n,error:o,action:s}=t;return sn({componentId:r,requestId:n,state:e,key:"errors",payload:{action:s,jsonrpc:o}})},cleanup:(e,{payload:t})=>xt(At({},e),{byId:Object.entries(e.byId).reduce(((e,[r,n])=>(t.ids.includes(r)||(e[r]=n),e)),{})})}}),{actions:cn,reducer:un}=an,dn={queue:[]},ln=Zr({name:"executeQueue",initialState:dn,reducers:{add:(e,{payload:t})=>xt(At({},e),{queue:e.queue.concat(t)}),clean:()=>dn}}),{actions:hn,reducer:pn}=ln,mn=(0,Mr.combineReducers)({components:un,session:rn,executeQueue:pn});Lt({},{createCatchableSaga:()=>vn,createRestartableSaga:()=>fn});var fn=e=>function*(){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];Re(Ne.apply(void 0,[e].concat(r)))}((function*(){for(;;)try{Gt().debug("Run a restartable saga"),yield Le(e),Gt().debug("One of the restartable saga has ended. Restarting..")}catch(e){Gt().error("Restartable Saga Error",e)}}))},gn=e=>Gt().error("Catchable Saga Error",e),vn=(e,t=gn)=>function*(...r){try{yield Le(e,...r)}catch(e){t(e)}},yn={};Lt(yn,{getAuthError:()=>Sn,getAuthStatus:()=>wn,getIceServers:()=>bn,getSession:()=>_n});var bn=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},_n=e=>e.session,wn=({session:e})=>e.authStatus,Sn=({session:e})=>e.authError,kn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},En=e=>{const t=(({components:e})=>e.byId)(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r};function*Cn(e){function*t(t){if("authorized"!==(yield De(wn)))return;const{componentId:r,requestId:n,method:o,params:s}=t.payload;try{const i=(({method:e,params:t})=>fr({method:e,params:t}))({id:n,method:o,params:s}),a=yield Le(e.execute,i);r&&n&&(yield xe(cn.executeSuccess({componentId:r,requestId:n,response:a})))}catch(e){Gt().warn("worker error",r,JSON.stringify(e)),r&&n&&(yield xe(cn.executeFailure({componentId:r,requestId:n,action:t,error:e})))}finally{if((yield Oe("CANCELLED",{}))&&r&&n){const e={jsonrpc:"2.0",id:n,error:{code:-32600,message:"Cancelled task"}};Gt().debug("executeActionWorker cancelled",{requestId:n,componentId:r,error:e}),yield xe(cn.executeFailure({componentId:r,requestId:n,action:t,error:e}))}}}for(;;){const e=yield Ae(Nr.type);yield Ne(t,e)}}function*Tn({session:e,sessionChannel:t,pubSubChannel:r,swEventChannel:n}){function*o({jsonrpc:t,nodeId:r}){var n,o;const{id:s,method:i,params:a={}}=t;switch(i){case"verto.media":{const e={id:a.callID,state:"early",remoteSDP:a.sdp,nodeId:r};yield xe(cn.upsert(e)),yield xe(Nr({method:"video.message",params:{message:Tr(s,i),node_id:r}}));break}case"verto.answer":{const e={id:a.callID,state:"active",nodeId:r};(null==a?void 0:a.sdp)&&(e.remoteSDP=a.sdp),yield xe(cn.upsert(e)),yield xe(Nr({method:"video.message",params:{message:Tr(s,i),node_id:r}}));break}case"verto.bye":{const e={id:a.callID,state:"hangup",nodeId:r,byeCause:null!=(n=null==a?void 0:a.cause)?n:"",byeCauseCode:null!=(o=null==a?void 0:a.causeCode)?o:0,redirectDestination:null==a?void 0:a.redirectDestination};yield xe(cn.upsert(e)),yield xe(Nr({method:"video.message",params:{message:Tr(s,i),node_id:r}}));break}case"verto.ping":yield xe(Nr({method:"video.message",params:{message:Tr(s,i),node_id:r}}));break;case"verto.punt":return e.disconnect();case"verto.mediaParams":{const{callID:e,mediaParams:t={}}=a;if(!e){Gt().debug("Invalid mediaParams event",a);break}const r={id:e};(null==t?void 0:t.video)&&(r.videoConstraints=t.video),(null==t?void 0:t.audio)&&(r.audioConstraints=t.audio),yield xe(cn.upsert(r));break}case"verto.info":return Gt().debug("Verto Info",a);case"verto.clientReady":return Gt().debug("Verto ClientReady",a);case"verto.announce":return Gt().debug("Verto Announce",a);default:return Gt().debug(`Unknown Verto method: ${i}`,a)}}function*s(e){switch(e.event_type){case"video.member.updated":return;case"video.room.subscribed":yield xe(cn.upsert({id:e.params.call_id,roomId:e.params.room_session.room_id,roomSessionId:e.params.room_session.id,memberId:e.params.member_id,previewUrl:e.params.room_session.preview_url})),yield xe(r,{type:"video.room.joined",payload:e.params});break;case"video.member.joined":{const{member:t}=e.params;(null==t?void 0:t.parent_id)&&(yield De(kn,t.parent_id))&&(yield xe(cn.upsert({id:t.id,roomId:e.params.room_id,roomSessionId:e.params.room_session_id,memberId:t.id})));break}case"video.member.talking":{const{member:t}=e.params;if("talking"in t){const n=t.talking?"started":"ended";yield xe(r,{type:`video.member.talking.${n}`,payload:e.params});const o=t.talking?"start":"stop";yield xe(r,{type:`video.member.talking.${o}`,payload:e.params})}break}}yield xe(r,{type:e.event_type,payload:e.params})}function*i(e){yield xe(n,(e=>{const{event_type:t,params:r}=e;return"queuing.relay.tasks"===t?{type:t,payload:e}:{type:t,payload:r}})(e)),(e=>"webrtc.message"===(null==e?void 0:e.event_type))(e)?yield Ne(o,{jsonrpc:e.params,nodeId:e.node_id}):(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("video."))})(e)?yield Ne(s,e):yield xe({type:e.event_type,payload:e})}const a=vn((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(i,r);break;default:return Gt().debug(`Unknown message: ${t}`,e)}}),(e=>{Gt().error("Channel Error",e)}));for(;;)try{for(;;){const e=yield Ae(t);yield Ne(a,e)}}catch(e){Gt().error("sessionChannelWorker error:",e)}finally{Gt().debug("sessionChannelWorker finally")}}function In(e){return function(t,r){void 0===r&&(r=Ce);var n,o,s=!1,i=tt(r),a=function(){s||(s=!0,Y(n)&&n(),i.close())};return n=he((o=function(e){et(e)?a():i.put(e)},e.dispatch=e=>{o(e)},n=()=>{Gt().debug("sessionChannel unsubscribe"),e.disconnect()})),s&&n(),{take:i.take,flush:i.flush,close:a}}()}var Mn=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.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*Pn({pubSubChannel:e,emitter:t}){for(;;){const r=yield Ae(e,"*"),{type:n,payload:o}=r;try{const e=Mn(r);$t.includes(n)&&t.emit(n,o),Gt().trace("Emit:",rr({namespace:e,event:n})),t.emit(rr({namespace:e,event:n}),o)}catch(e){Gt().error(e)}}}var On=({executeQueue:e})=>e;function*Rn(){function*e(e){"authorized"!==(yield De(wn))&&(yield xe(hn.add(e.payload)))}for(;;){const t=yield Ae(Nr.type);yield Ne(e,t)}}function*An(){const{queue:e}=yield De(On);for(const t of e)yield xe(Nr(t));yield xe(hn.clean())}var xn=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Wt(this,"name","AuthError"),Object.setPrototypeOf(this,xn.prototype)}};function*jn(){const e=yield De(En);e.length&&(yield xe(cn.cleanup({ids:e})))}function*Ln(){for(;;)yield We(36e5),yield Ne(jn)}function*Nn({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Le(In,o),i=r.pubSubChannel,a=r.swEventChannel;let c=[];if(null==(n=t.workers)?void 0:n.length)try{const e=t.workers.map((e=>Le(fn(e))));c=yield function(e){var t=Oe("ALL",e);return t.combinator=!0,t}(e)}catch(e){Gt().error("Error running custom workers",e)}yield Ne(Tn,{session:o,sessionChannel:s,pubSubChannel:i,swEventChannel:a}),yield Ne(Vn,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const u=yield Ne(Ln);o.connect(),yield Ae(xr.type),null==u||u.cancel(),i.close(),s.close(),a.close(),c.forEach((e=>e.cancel()))}function*Dn({session:e,sessionChannel:t,pubSubChannel:r}){Gt().debug("socketClosedWorker",e.status),"reconnecting"===e.status?(yield xe(r,zr()),yield We(2e3*Math.random()),yield Le(e.connect)):"disconnected"===e.status?(yield xe(r,Br()),t.close()):Gt().warn("Unhandled Session Status",e.status)}function*Wn({session:e,token:t,pubSubChannel:r}){try{e.reauthenticate&&(e.token=t,yield Le(e.reauthenticate),yield xe(r,Fr()))}catch(e){Gt().error("Reauthenticate Error",e),yield xe(Dr({error:e}))}}function*Vn(e){for(;;){const t=yield Ae([Wr.type,Dr.type,Vr.type,$r.type,Ur.type,Lr.type]);switch(Gt().debug("sessionStatusWatcher",t.type,t.payload),t.type){case Wr.type:yield Ne(Un,e);break;case Dr.type:yield Ne($n,{action:t,userOptions:e.userOptions,pubSubChannel:e.pubSubChannel});break;case Vr.type:yield xe(e.pubSubChannel,Qr());break;case $r.type:break;case Ur.type:yield Ne(Dn,e);break;case Lr.type:yield Ne(Wn,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*Un(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ne(Pn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ne(Cn,t);yield xe(tn.connected(t.rpcConnectResult)),yield xe(r,Fr());const i=yield Ne(An);yield Ae(jr.type),o.cancel(),s.cancel(),i.cancel()}function*$n(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new xn(o.code,o.message):new Error("Unauthorized"),i=yield Ne(Pn,{pubSubChannel:t,emitter:r.emitter});throw yield xe(t,Hr(s)),yield Ae(Br),i.cancel(),s}var qn=e=>{const{componentListeners:t={},sessionListeners:r={},store:n,Component:o,customSagas:s=[]}=e,i=Object.keys(t),a=Object.keys(r);return e=>{const c=new o(xt(At({},e),{store:n})),u=new Map;let d=!0;const l=n.subscribe((()=>{const e=n.getState(),o=kn(e,c.__uuid)||{};for(const e of i){if(!1===d)return;const r=`${c.__uuid}.${e}`,n=u.get(r),s=o[e];if(void 0!==s&&n!==s){u.set(r,s);const n=t[e];"string"==typeof n?c[n](o):n(o)}}const s=_n(e);for(const e of a){if(!1===d)return;const t=`session.${e}`,n=u.get(t),o=s[e];if(void 0!==o&&n!==o){u.set(t,o);const n=r[e];"string"==typeof n?c[n](s):"function"==typeof n&&n(s)}}})),h=null==s?void 0:s.map((e=>n.runSaga(e,{instance:c,runSaga:n.runSaga})));return c.destroyer=()=>{d=!1,l(),u.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Dt(on,Mr);var Fn=e=>{var t;const{userOptions:r,SessionConstructor:n,preloadedState:o={},runSagaMiddleware:s=!0}=e,i=_t(),a={pubSubChannel:rt(),swEventChannel:rt()},c=Rr({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:mn,preloadedState:o,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){t.logger&&(zt=t.logger),t.debug&&(e=>{null!=e?Object.assign(Qt,e):Qt={}})(t.debug),yield Ne(Rn),yield Ae(Ar.type);try{yield Le(Nn,xt(At({},e),{userOptions:t,channels:r}))}catch(e){return void Gt().error("RootSaga Error:",e)}})({SessionConstructor:n});i.run(e,{userOptions:r,channels:a})}return xt(At({},c),{runSaga:(e,t)=>i.run(e,xt(At({},t),{channels:a}))})},Bn=e=>e,zn=Symbol("BaseComponent"),Hn=class{constructor(e){this.options=e,Wt(this,"__sw_symbol",zn),Wt(this,"uuid",_()),Wt(this,"_proxyFactoryCache",new WeakMap),Wt(this,"_eventsPrefix",""),Wt(this,"_eventsRegisterQueue",new Set),Wt(this,"_eventsEmitQueue",new Set),Wt(this,"_eventsNamespace"),Wt(this,"_eventsTransformsCache",new Map),Wt(this,"_requests",new Map),Wt(this,"_customSagaTriggers",new Map),Wt(this,"_destroyer"),Wt(this,"_emitterTransforms",new Map),Wt(this,"_emitterListenersCache",new Map),Wt(this,"_trackedEvents",[]),Wt(this,"_runningWorkers",[]),Wt(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(Xr({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),rr({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 Gt()}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 n=t.instanceFactory(r);return this._eventsTransformsCache.set(e,n),n}return this._eventsTransformsCache.get(e)}cleanupEventHandlerTransformCache({internalEvent:e,force:t}){const r=this._eventsTransformsCache.get(e),n=this.listenerCount(e);return r&&(t||n<=1)?(r.__uuid!==this.__uuid&&"function"==typeof r.destroy&&r.destroy(),this._eventsTransformsCache.delete(e)):(this.logger.trace("[cleanupEventHandlerTransformCache] Key wasn't cached",e),!1)}getEmitterListenersMapByInternalEventName(e){var t;return null!=(t=this._emitterListenersCache.get(e))?t:new Map}getAndRemoveStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);if(t&&r.has(t)){const n=r.get(t);return r.delete(t),this._emitterListenersCache.set(e,r),n}return t}_createStableEventHandler(e,t){return r=>{const n=this._emitterTransforms.get(e);if(this.logger.trace("Got emitterTransform for",e,n),!n)return t(r);const o=this.runAndCacheEventHandlerTransform({internalEvent:e,transform:n,payload:r});let s;if(this._proxyFactoryCache.has(r))s=this._proxyFactoryCache.get(r);else{const e=this._parseNestedFields(r,n);s=sr({instance:o,payload:r,transformedPayload:e,transform:n}),this._proxyFactoryCache.set(r,s)}return t(s)}}_parseNestedFields(e,t,r=(e=>e),n){if(!t.nestedFieldsToProcess)return t.payloadTransform(e);if(e.__sw_proxy)return e;if(!n){const n=t.payloadTransform(e);return this._parseNestedFields(n,t,r,n)}return Array.isArray(e)?n=e.map(((n,o)=>this._parseNestedFields(r(n),t,r,e[o]))):e&&"object"==typeof e&&Object.entries(e).forEach((([e,o])=>{var s;const i=null==(s=t.nestedFieldsToProcess)?void 0:s[e],a=i?this._emitterTransforms.get(i.eventTransformType):void 0;n[e]=o&&"object"==typeof o?this._parseNestedFields(o,t,(e=>i&&a&&e&&"object"==typeof e?(({transform:e,payload:t})=>{const r=(({transform:e,payload:t})=>{if(!ir.has(e.type)){const r=e.instanceFactory(t);return ir.set(e.type,r),r}return ir.get(e.type)})({transform:e,payload:t}),n=e.payloadTransform(t);return sr({transform:e,payload:t,instance:r,transformedPayload:n})})({transform:a,payload:r(i.processInstancePayload(e))}):e),n[e]):r(o)})),n}getOrCreateStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);let n=r.get(t);return n||(n=this._createStableEventHandler(e,t),r.set(t,n),this._emitterListenersCache.set(e,r)),n}_trackEvent(e){this._trackedEvents=Array.from(new Set(this._trackedEvents.concat(e)))}_untrackEvent(e){this._trackedEvents=this._trackedEvents.filter((t=>t!==e))}_addListener(e,t,r){this._handleCompoundEvents(e);const n=this._getInternalEvent(e);this._trackEvent(n);const o=r?"once":"on";if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:o,params:[e,t]}),this.emitter;const s=this.getOrCreateStableEventHandler(n,t);return this.logger.trace("Registering event",n),this.emitter[o](n,s)}on(e,t){return this._addListener(e,t)}once(e,t){return this._addListener(e,t,!0)}off(e,t){if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:"off",params:[e,t]}),this.emitter;const r=this._getInternalEvent(e),n=this.getAndRemoveStableEventHandler(r,t);return this.cleanupEventHandlerTransformCache({internalEvent:r,force:!n}),this.logger.trace("Removing event listener",r),this._untrackEvent(r),this.emitter.off(r,n)}removeAllListeners(e){return this.shouldAddToQueue()?(this.addEventToRegisterQueue({type:"removeAllListeners",params:[e]}),this.emitter):e?this.off(e):(this.eventNames().forEach((e=>{this.off(e)})),this.emitter)}eventNames(){return this._trackedEvents}getSubscriptions(){return hr(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=Bn,transformResolve:n=Bn,transformReject:o=Bn}={transformParams:Bn,transformResolve:Bn,transformReject:Bn}){return new Promise(((s,i)=>{const a=_();this._requests.set(a,{resolve:s,reject:i,transformResolve:n,transformReject:o}),this.store.dispatch(Nr({requestId:a,componentId:this.__uuid,method:e,params:r(t)}))}))}triggerCustomSaga(e){return new Promise(((t,r)=>{const n=_();this._customSagaTriggers.set(n,{resolve:t,reject:r}),this.store.dispatch(At({dispatchId:n},Jr(this.__uuid,e)))}))}settleCustomSagaTrigger({dispatchId:e,payload:t,kind:r}){const n=this._customSagaTriggers.get(e);n&&(n[r](t),this._customSagaTriggers.delete(e))}select(e){return e(this.store.getState())}onError(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.errors[r])&&(t.reject(t.transformReject(e.errors[r])),this._requests.delete(r))}))}onSuccess(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.responses[r])&&(t.resolve(t.transformResolve(e.responses[r])),this._requests.delete(r))}))}getStateProperty(e){return this[e]}flushEventsRegisterQueue(){this._eventsRegisterQueue.forEach((e=>{this[e.type](...e.params),this._eventsRegisterQueue.delete(e)}))}flushEventsEmitQueue(){this._eventsEmitQueue.forEach((e=>{const{event:t,args:r}=e;this.emit(t,...r),this._eventsEmitQueue.delete(e)}))}flushEventsQueue(){this.flushEventsRegisterQueue(),this.flushEventsEmitQueue()}_attachListeners(e){"string"==typeof e&&(this._eventsNamespace=e),this.flushEventsQueue()}getCompoundEvents(){return new Map}getEmitterTransforms(){return new Map}get _sessionAuthStatus(){return wn(this.store.getState())}_waitUntilSessionAuthorized(){switch(wn(this.store.getState())){case"authorized":return Promise.resolve(this);case"unknown":case"authorizing":return new Promise(((e,t)=>{const r=this.store.subscribe((()=>{const n=wn(this.store.getState()),o=Sn(this.store.getState());if("authorized"===n)e(this),r();else if("unauthorized"===n){const e=o?new xn(o.code,o.message):new Error("Unauthorized");t(e),r()}}))}));case"unauthorized":return Promise.reject(new Error("Unauthorized"))}}_setEmitterTransform({event:e,handler:t,local:r}){const n=this._getInternalEvent(e);(r?pr(e):!pr(e)&&this.eventNames().includes(n))&&this._emitterTransforms.set(n,t)}applyEmitterTransforms({local:e=!1}={local:!1}){this.getEmitterTransforms().forEach(((t,r)=>{Array.isArray(r)?r.forEach((r=>{this._setEmitterTransform({event:r,handler:t,local:e})})):this._setEmitterTransform({event:r,handler:t,local:e}),this._emitterTransforms.set(t.type,t)}))}runWorker(e,t){this._workers.has(e)?Gt().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:n}=r,o=jt(r,["worker"]);const s=this.store.runSaga(n,At({instance:this,runSaga:this.store.runSaga},o));this._runningWorkers.push(s),this._workers.delete(e)}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},Qn=class extends Hn{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=wn(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(Ar()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(xr())}},Kn=class extends Hn{constructor(e){super(e),this.options=e,Wt(this,"subscribeMethod","signalwire.subscribe"),Wt(this,"subscribeParams",{}),Wt(this,"_latestExecuteParams"),this.applyEmitterTransforms({local:!0})}shouldExecuteSubscribe(e){return!this._latestExecuteParams||JSON.stringify(e)!==JSON.stringify(this._latestExecuteParams)}async subscribe(){const e=this.getSubscriptions();if(0===e.length)return void this.logger.warn("`subscribe()` was called without any listeners attached.");const t={method:this.subscribeMethod,params:xt(At({},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")}},Jn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(Jn).map((e=>`video.member.updated.${e}`));var Gn=Zt(Jn);Object.keys(Gn).map((e=>`member.updated.${e}`));var Xn={};Lt(Xn,{RoomSessionPlaybackAPI:()=>Po,RoomSessionRecordingAPI:()=>Io,audioMuteMember:()=>mo,audioUnmuteMember:()=>fo,createRoomSessionPlaybackObject:()=>Oo,createRoomSessionRecordingObject:()=>Mo,deafMember:()=>yo,getLayouts:()=>to,getMembers:()=>ro,getPlaybacks:()=>lo,getRecordings:()=>co,hideVideoMuted:()=>so,play:()=>ho,removeMember:()=>Co,setDeaf:()=>_o,setHideVideoMuted:()=>ao,setInputSensitivityMember:()=>ko,setInputVolumeMember:()=>wo,setLayout:()=>no,setMemberMeta:()=>To,setMemberPosition:()=>Eo,setMeta:()=>po,setOutputVolumeMember:()=>So,setPositions:()=>oo,showVideoMuted:()=>io,startRecording:()=>uo,undeafMember:()=>bo,videoMuteMember:()=>go,videoUnmuteMember:()=>vo});var Yn=()=>{},Zn=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:At({room_session_id:this.roomSessionId},r)},t)}}),eo=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=jt(n,["memberId"]);return this.execute({method:e,params:At({room_session_id:this.roomSessionId,member_id:o||this.memberId},s)},t)}}),to=Zn("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),ro=Zn("video.members.get",{transformResolve:e=>({members:e.members})}),no=Zn("video.set_layout",{transformResolve:Yn}),oo=Zn("video.set_position",{transformResolve:Yn}),so=Zn("video.hide_video_muted",{transformResolve:Yn}),io=Zn("video.show_video_muted",{transformResolve:Yn}),ao={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:Yn})}},co=Zn("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Zt(e)))})}),uo={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(mr("video.recording.start"),t);try{const e=await this.execute({method:"video.recording.start",params:{room_session_id:this.roomSessionId}});this.emit(mr("video.recording.start"),xt(At({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(mr("video.recording.start"),t),e}}))}},lo=Zn("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Zt(e)))})}),ho={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(mr("video.playback.start"),r);try{const t=await this.execute({method:"video.playback.start",params:At({room_session_id:this.roomSessionId},e)});this.emit(mr("video.playback.start"),xt(At({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(mr("video.playback.start"),r),e}}))}},po=Zn("video.set_meta",{transformResolve:Yn,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:jt(t,["room_session_id"])}}}),mo=eo("video.member.audio_mute",{transformResolve:Yn}),fo=eo("video.member.audio_unmute",{transformResolve:Yn}),go=eo("video.member.video_mute",{transformResolve:Yn}),vo=eo("video.member.video_unmute",{transformResolve:Yn}),yo=eo("video.member.deaf",{transformResolve:Yn}),bo=eo("video.member.undeaf",{transformResolve:Yn}),_o={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:Yn})}},wo=eo("video.member.set_input_volume",{transformResolve:Yn}),So=eo("video.member.set_output_volume",{transformResolve:Yn}),ko=eo("video.member.set_input_sensitivity",{transformResolve:Yn}),Eo=eo("video.member.set_position",{transformResolve:Yn}),Co={value:function(e){var t=e,{memberId:r}=t,n=jt(t,["memberId"]);if(!r)throw new TypeError('Invalid or missing "memberId" argument');return this.execute({method:"video.member.remove",params:At({room_session_id:this.roomSessionId,member_id:r},n)},{transformResolve:Yn})}},To=eo("video.member.set_meta",{transformResolve:Yn}),Io=class extends Hn{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")}})}},Mo=e=>qn({store:e.store,Component:Io,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Po=class extends Hn{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}})}},Oo=e=>qn({store:e.store,Component:Po,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Ro={};Lt(Ro,{BaseChatAPI:()=>Xo,BaseChatConsumer:()=>Go,ChatMember:()=>Qo,ChatMessage:()=>Ko,createBaseChatObject:()=>Yo,getMemberState:()=>Uo,getMembers:()=>Do,getMessages:()=>No,publish:()=>Lo,setMemberState:()=>Vo});var Ao=()=>{},xo=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),jo=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=jt(n,["memberId"]);return this.execute({method:e,params:At({member_id:o},s)},t)}}),Lo=xo("chat.publish",{transformResolve:Ao}),No=xo("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Zt(e))),cursor:e.cursor})}),Do=xo("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Zt(e)))})}),Wo=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 xt(At({},e),{channels:t})},Vo=jo("chat.member.set_state",{transformResolve:Ao,transformParams:Wo}),Uo=jo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:Wo}),$o={};Lt($o,{BasePubSubConsumer:()=>zo,PubSubMessage:()=>qo,createBasePubSubObject:()=>Ho});var qo=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}},Fo=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Ae((e=>e.type.startsWith("chat.")));switch(Gt().debug("pubSubWorker:",t),t.type){case"chat.channel.message":yield xe(e,{type:"chat.message",payload:t.payload});break;default:Gt().warn("[pubSubWorker] Unrecognized Action",t)}}},Bo=e=>e.map((e=>({name:e}))),zo=class extends Kn{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.runWorker("pubSub",{worker:Fo})}getEmitterTransforms(){return new Map([[["message"],{type:"pubSubMessage",instanceFactory:()=>new qo({}),payloadTransform:e=>{const{channel:t,message:r}=e.params,n=jt(r,["member"]);return Zt(xt(At({},n),{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:Bo(r)}}_setSubscribeParams(e){this.subscribeParams=At(At({},this.subscribeParams),e)}_getSubscribeParams({channels:e}){return At({},this._getChannelsParam(e,"subscribe"))}_getUnsubscribeParams({channels:e}){const t=this._getChannelsParam(e,"unsubscribe");return At({},t)}async subscribe(e){const t=this._getSubscribeParams({channels:e});return this._setSubscribeParams(t),super.subscribe()}async unsubscribe(e){if("unknown"===this._sessionAuthStatus||"unauthorized"===this._sessionAuthStatus)throw new Error("You must be authenticated to unsubscribe from a channel");const t=this._getUnsubscribeParams({channels:e});return new Promise((async(e,r)=>{const n=this.getSubscriptions();if(n.length>0){const e={method:"chat.unsubscribe",params:xt(At({},t),{events:n})};try{await this.execute(e)}catch(e){return r(e)}}else this.logger.warn("`unsubscribe()` was called without any listeners attached.");return e()}))}updateToken(e){return new Promise(((t,r)=>{this.once("session.auth_error",(e=>{r(e)})),this.once("session.connected",(()=>{t()})),this.store.dispatch(Ir.reauthAction({token:e}))}))}publish(e){return this.execute({method:"chat.publish",params:e})}},Ho=e=>qn({store:e.store,Component:zo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Qo=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:{}}},Ko=class extends qo{get member(){return this.payload.member}},Jo=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Ae((e=>e.type.startsWith("chat.")));switch(Gt().debug("chatWorker:",t),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:Gt().warn("[chatWorker] Unrecognized Action",t)}}},Go=class extends zo{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this.runWorker("chat",{worker:Jo})}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:()=>new Ko({}),payloadTransform:e=>{const{channel:t,message:r}=e.params;return Zt(xt(At({},r),{channel:t}))}}],[["member.joined","member.left","member.updated"],{type:"chatMember",instanceFactory:e=>{const{member:t}=e.params;return new Qo(Zt(t))},payloadTransform:e=>{const{member:t}=e.params;return Zt(t)}}]])}},Xo=or(Go,{publish:Lo,getMembers:Do,getMessages:No,setMemberState:Vo,getMemberState:Uo}),Yo=e=>qn({store:e.store,Component:Xo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Zo={};function*es(e){const{action:t,memberList:r,channels:{pubSubChannel:n}}=e,o={};t.payload.layout.layers.forEach((e=>{var t;const n=e.member_id;if(!n)return;const s=r.get(n);e.position!==(null==(t=s.member)?void 0:t.current_position)?(os({memberList:r,memberId:n,currentPosition:e.position}),o[n]=!0):o[n]=!1}));for(const[e,t]of r)if(o[e])yield xe(n,{type:"video.member.updated",payload:t});else if(void 0===o[e]){const t=os({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield xe(n,{type:"video.member.updated",payload:t})}}function*ts({action:e,channels:t,memberList:r}){var n,o;const s=e.payload.member.id,i=os({memberList:r,memberId:s,currentPosition:null==(o=null==(n=r.get(s))?void 0:n.member)?void 0:o.current_position});if(!i)return;const{member:{updated:a=[]}}=e.payload,c=xt(At({},i),{member:At(At({},i.member),e.payload.member)});r.set(s,c);for(const r of a){const n=`${e.type}.${r}`;yield xe(t.pubSubChannel,{type:n,payload:c})}yield xe(t.pubSubChannel,{type:e.type,payload:c})}Lt(Zo,{MEMBER_POSITION_COMPOUND_EVENTS:()=>rs,memberPositionWorker:()=>ns,memberUpdatedWorker:()=>ts});var rs=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),ns=function*({instance:e,channels:t,initialState:r}){if(!r)return;const{swEventChannel:n}=t;let o=ss(r);for(;;){const r=yield Ae(n,(t=>("video.member.updated"===t.type||"video.layout.changed"===t.type||"video.member.joined"===t.type||"video.member.left"===t.type)&&Mn(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":yield Ne(ts,{action:r,channels:t,memberList:o,instance:e});break;case"video.member.joined":o.set(r.payload.member.id,r.payload);break;case"video.member.left":o.delete(r.payload.member.id);break;case"video.layout.changed":yield Ne(es,{action:r,channels:t,memberList:o,instance:e})}}},os=({memberList:e,memberId:t,currentPosition:r})=>{const n=e.get(t);if(!n)return;if(!r)return n;const o=xt(At({},n),{member:xt(At({},null==n?void 0:n.member),{current_position:r})});return e.set(t,o),o},ss=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},is=At({},yn);const as=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,cs=()=>{if(!as())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},us=async(e={audio:!0,video:!0})=>{var t;try{const t=cs().getUserMedia(e),r=new Error("Looks like it's not possible to read from your devices");return await cr(t,5e3,r)}catch(r){switch(r.name){case"Error":Gt().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":Gt().error("No media tracks of the type specified were found that satisfy the given constraints.");break;case"NotReadableError":Gt().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":Gt().error(`The constraint: ${r.constraint} cannot be met by the selected device.`),Gt().info("List of available constraints:",ps());break;case"NotAllowedError":Gt().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?Gt().error('Constraints can\'t be empty nor have "video" and "audio" set to false.'):Gt().error("Please check that you are calling this method from a secure context (using HTTPS rather than HTTP).");break;case"SecurityError":Gt().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}},ds=e=>cs().getDisplayMedia(e),ls=()=>cs().enumerateDevices(),hs=async e=>{let t=await ls().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},ps=()=>cs().getSupportedConstraints(),ms=e=>e&&e instanceof MediaStream,fs=()=>"sinkId"in HTMLMediaElement.prototype,gs=async(e,t)=>{if(null!==e)if("string"==typeof t)if(fs())try{return await e.setSinkId(t)}catch(e){throw"SecurityError"===e.name?Gt().error(`You need to use HTTPS for selecting audio output device: ${e}`):Gt().error(`Error: ${e}`),e}else Gt().warn("Browser does not support output device selection.");else Gt().warn(`Invalid speaker deviceId: '${t}'`);else Gt().warn("No HTMLMediaElement to attach the speakerId")},vs=e=>{var t;ms(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(ys))},ys=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},bs={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},_s=e=>{if(e)return bs[e]},ws=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 hs(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Gt().warn(`No ${e} devices to check for permissions!`),null)})(_s(e))},Ss=()=>ws("camera"),ks=()=>ws("microphone"),Es=()=>ws("speaker"),Cs=async(e,t=!1)=>Is(e,t),Ts=(e,t={})=>{const r=[];return e.filter((({deviceId:e,kind:n,groupId:o})=>{var s;if(!e||t.targets&&!(null===(s=t.targets)||void 0===s?void 0:s.includes(n)))return!1;if(!o)return!0;const i=`${n}-${o}`,a=!(null==t?void 0:t.excludeDefault)||"default"!==e;return!(r.includes(i)||!a||(r.push(i),0))}))},Is=async(e,t=!1)=>{let r;if(!1===await ws(e)){const t={audio:!(n=e)||"all"===n||"microphone"===n||"speaker"===n,video:!n||"all"===n||"camera"===n};r=await us(t)}var n;const o=await hs(_s(e));return r&&vs(r),!0===t?o:Ts(o)},Ms=async(e,t,r)=>{const n=await Is(r,!0);for(let r=0;r<n.length;r++){const{deviceId:o,label:s}=n[r];if(e===o||t===s)return o}return null},Ps=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},Os={camera:Ss,microphone:ks,speaker:Es},Rs=["camera","microphone","speaker"],As=`Allowed targets are: '${Rs.join("', '")}'`,xs={speaker:fs},js=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:Rs).filter((e=>!!Rs.includes(e)||(Gt().warn(`We'll ignore the "${e}" target as it is not allowed. ${As}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${As}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>Os[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in xs)||(null===(o=xs[s])||void 0===o?void 0:o.call(xs))?"supported":"unsupported"].push([s,!!r]),e}),{supported:[],unsupported:[]})})({targets:r});if(n.unsupported.length>0&&r.length===n.unsupported.length)throw new Error(`The platform doesn't support "${r.join(", ")}" as target/s, which means it's not possible to watch for changes on those devices.`);if(n.supported.every((([e,t])=>!t)))throw new Error("You must ask the user for permissions before being able to listen for device changes. Try calling getUserMedia() before calling `createDeviceWatcher()`.");let o=[];const s=n.supported.reduce(((e,[t,r])=>(r?e.push(t):o.push(t),e)),[]);if(s.length!==r.length){const e=n.unsupported.length>0?`The platform doesn't support "${n.unsupported.map((([e])=>e)).join(", ")}" as target/s, which means it's not possible to watch for changes on those devices. `:"",t=o.length>0?`The user hasn't granted permissions for the following targets: ${o.join(", ")}. `:"";Gt().warn(`${e}${t}We'll be watching for the following targets instead: "${s.join(", ")}"`)}return Gt().debug(`Watching these targets: "${s.join(", ")}"`),s})({targets:e.targets}),r=new St,n=await ls(),o=null==t?void 0:t.reduce(((e,t)=>{const r=_s(t);return r&&e.push(r),e}),[]);let s=Ts(n,{excludeDefault:!0,targets:o});return cs().addEventListener("devicechange",(async()=>{const e=await ls(),t=s,n=Ts(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=Ps(e),n=Ps(e),o=[];Gt().debug("[_getDeviceListDiff] <- oldDevices",e),Gt().debug("[_getDeviceListDiff] -> newDevices",t);const s=t.filter((e=>{const t=e.deviceId,s=r.get(t);return s&&(n.delete(t),e.label!==s.label&&o.push(e)),void 0===s}));return{updated:o.map((e=>({type:"updated",payload:e}))),removed:Array.from(n,(([e,t])=>t)).map((e=>({type:"removed",payload:e}))),added:s.map((e=>({type:"added",payload:e})))}})(t,n),a=i.added.length>0,c=i.removed.length>0,u=i.updated.length>0;(a||c||u)&&r.emit("changed",{changes:i,devices:n}),a&&r.emit("added",{changes:i.added,devices:n}),c&&r.emit("removed",{changes:i.removed,devices:n}),u&&r.emit("updated",{changes:i.updated,devices:n})})),r},Ls=e=>"function"==typeof(null==e?void 0:e.getTracks),Ns=e=>{Gt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)return us(e)},Ds=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await Ms(r,n,"microphone").catch((e=>null));e&&("boolean"==typeof t&&(t={}),t.deviceId={exact:e})}let{video:o=!1,camId:s}=e;const{camLabel:i=""}=e;if(s){const e=await Ms(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},Ws=e=>/^m=audio/.test(e),Vs=e=>/^m=video/.test(e),Us=e=>{const t=e.split("\r\n"),r=t.findIndex((e=>/^a=rtpmap/.test(e)&&/opus\/48000/.test(e)));if(r<0)return e;const n=(e=>{const t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),r=e.match(t);return r&&2==r.length?r[1]:null})(t[r]),o=new RegExp(`a=fmtp:${n}`),s=t.findIndex((e=>o.test(e)));return s>=0?/stereo=1;/.test(t[s])||(t[s]+="; stereo=1; sprop-stereo=1"):t[r]+=`\r\na=fmtp:${n} stereo=1; sprop-stereo=1`,t.join("\r\n")};class $s{constructor(e,t){this.call=e,this.type=t,this._negotiating=!1,this.options=e.options,this.logger.debug("New Peer with type:",this.type,"Options:",this.options),this._onIce=this._onIce.bind(this)}get logger(){return Gt()}get isOffer(){return"offer"===this.type}get isAnswer(){return"answer"===this.type}get isSimulcast(){return!0===this.options.simulcast}get isSfu(){return!0===this.options.sfu}get localVideoTrack(){const e=this._getSenderByKind("video");return(null==e?void 0:e.track)||null}get localAudioTrack(){const e=this._getSenderByKind("audio");return(null==e?void 0:e.track)||null}get hasAudioSender(){return!!this._getSenderByKind("audio")}get hasVideoSender(){return!!this._getSenderByKind("video")}get hasAudioReceiver(){return!!this._getReceiverByKind("audio")}get hasVideoReceiver(){return!!this._getReceiverByKind("video")}get config(){const{rtcPeerConfig:e={}}=this.options,t=Object.assign({bundlePolicy:"max-compat",iceServers:this.call.iceServers,sdpSemantics:"unified-plan"},e);return this.logger.debug("RTC config",t),t}get localSdp(){var e,t;return null===(t=null===(e=this.instance)||void 0===e?void 0:e.localDescription)||void 0===t?void 0:t.sdp}stopTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to stop.`);n.track&&(ys(n.track),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.removeTrack(n.track))}catch(t){this.logger.error("RTCPeer stopTrackSender error",e,t)}}async restoreTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to restore.`);if(n.track&&"ended"!==n.track.readyState)return this.logger.info(`There is already an active ${e} track.`);const o=await Ds(this.options),s=await Ns({[e]:o[e]});if(s&&ms(s)){const o=s.getTracks().find((t=>t.kind===e));o&&(await n.replaceTrack(o),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.addTrack(o))}}catch(t){this.logger.error("RTCPeer restoreTrackSender error",e,t)}}getDeviceId(e){try{const t=this._getSenderByKind(e);if(!t||!t.track)return null;const{deviceId:r=null}=t.track.getSettings();return r}catch(t){return this.logger.error("RTCPeer getDeviceId error",e,t),null}}getTrackSettings(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.getSettings():null}catch(t){return this.logger.error("RTCPeer getTrackSettings error",e,t),null}}getDeviceLabel(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.label:null}catch(t){return this.logger.error("RTCPeer getDeviceLabel error",e,t),null}}restartIceWithRelayOnly(){try{const e=this.instance.getConfiguration();if("relay"===e.iceTransportPolicy)return this.logger.warn("RTCPeer already with iceTransportPolicy relay only");const t=Object.assign(Object.assign({},e),{iceTransportPolicy:"relay"});this.instance.setConfiguration(t),this.instance.restartIce()}catch(e){this.logger.error("RTCPeer restartIce error",e)}}async applyMediaConstraints(e,t){try{const r=this._getSenderByKind(e);if(!r||!r.track)return this.logger.info("No sender to apply constraints",e,t);if("live"===r.track.readyState){const n=Object.assign(Object.assign({},r.track.getConstraints()),t),o=this.getDeviceId(e);o&&!this.options.screenShare&&(n.deviceId={exact:o}),this.logger.info(`Apply ${e} constraints`,this.call.id,n),await r.track.applyConstraints(n)}}catch(r){this.logger.error("Error applying constraints",e,t)}}_getSenderByKind(e){return this.instance.getSenders?this.instance.getSenders().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getSenders() not available."),null)}_getReceiverByKind(e){return this.instance.getReceivers?this.instance.getReceivers().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getReceivers() not available."),null)}async startNegotiation(e=!1){var t,r;if(this._negotiating)return this.logger.warn("Skip twice onnegotiationneeded!");this._negotiating=!0;try{if((this.options.additionalDevice||this.options.screenShare)&&(null===(r=(t=this.instance).getTransceivers)||void 0===r||r.call(t).forEach((e=>{e.direction="sendonly"}))),this.instance.removeEventListener("icecandidate",this._onIce),this.instance.addEventListener("icecandidate",this._onIce),this.isOffer){this.logger.debug("Trying to generate offer");const e=await this.instance.createOffer({voiceActivityDetection:!1});await this._setLocalDescription(e)}if(this.isAnswer){this.logger.debug("Trying to generate answer"),await this._setRemoteDescription({sdp:this.options.remoteSdp,type:"offer"});const e=await this.instance.createAnswer({voiceActivityDetection:!1});await this._setLocalDescription(e)}e&&this._sdpReady()}catch(e){this.logger.error(`Error creating ${this.type}:`,e)}}async onRemoteSdp(e){try{const t=this.isOffer?"answer":"offer";await this._setRemoteDescription({sdp:e,type:t}),this.isOffer&&this._resolveStartMethod()}catch(e){this.logger.error(`Error handling remote SDP on call ${this.call.id}:`,e),this.call.hangup(),this._rejectStartMethod(e)}}_setupRTCPeerConnection(){this.instance||(this.instance=new window.RTCPeerConnection(this.config),this._attachListeners())}async start(){return new Promise((async(e,t)=>{this._resolveStartMethod=e,this._rejectStartMethod=t;try{this.options.localStream=await this._retrieveLocalStream()}catch(e){return this._rejectStartMethod(e),this.call.setState("hangup")}this._setupRTCPeerConnection();const{localStream:r=null}=this.options;if(r&&ms(r)){const e=r.getAudioTracks();this.logger.debug("Local audio tracks: ",e);const t=r.getVideoTracks();if(this.logger.debug("Local video tracks: ",t),this.isOffer&&"function"==typeof this.instance.addTransceiver){e.forEach((e=>{this.instance.addTransceiver(e,{direction:"sendrecv",streams:[r]})}));const n={direction:"sendrecv",streams:[r]};if(this.isSimulcast&&(n.sendEncodings=["0","1","2"].map((e=>({active:!0,rid:e,scaleResolutionDownBy:6*Number(e)||1})))),this.logger.debug("Applying video transceiverParams",n),t.forEach((e=>{this.instance.addTransceiver(e,n)})),this.isSfu){const{msStreamsNumber:e=5}=this.options;this.logger.debug("Add ",e,"recvonly MS Streams"),n.direction="recvonly";for(let t=0;t<Number(e);t++)this.instance.addTransceiver("video",n)}}else"function"==typeof this.instance.addTrack?(e.forEach((e=>{this.instance.addTrack(e,r)})),t.forEach((e=>{this.instance.addTrack(e,r)}))):this.instance.addStream(r)}this.isOffer?(this.options.negotiateAudio&&this._checkMediaToNegotiate("audio"),this.options.negotiateVideo&&this._checkMediaToNegotiate("video")):this.startNegotiation()}))}_checkMediaToNegotiate(e){if(!this._getSenderByKind(e)&&this.instance.addTransceiver){const t=this.instance.addTransceiver(e,{direction:"recvonly"});this.logger.debug("Add transceiver",e,t)}}async _sdpReady(){if(clearTimeout(this._iceTimeout),this._iceTimeout=null,!this.instance.localDescription)return;const{sdp:e,type:t}=this.instance.localDescription;if(-1===e.indexOf("candidate"))return this.logger.debug("No candidate - retry \n"),void this.startNegotiation(!0);this.logger.debug("LOCAL SDP \n",`Type: ${t}`,"\n\n",e),this.instance.removeEventListener("icecandidate",this._onIce);try{await this.call.onLocalSDPReady(this.instance.localDescription)}catch(e){this._rejectStartMethod(e)}}_onIce(e){this._iceTimeout||(this._iceTimeout=setTimeout((()=>this._sdpReady()),this.options.iceGatheringTimeout)),e.candidate?(this.logger.debug("IceCandidate:",e.candidate),this.call.emit("icecandidate",e)):this._sdpReady()}_setLocalDescription(e){const{useStereo:t,googleMaxBitrate:r,googleMinBitrate:n,googleStartBitrate:o}=this.options;return e.sdp&&t&&(e.sdp=Us(e.sdp)),e.sdp&&r&&n&&o&&(e.sdp=((e,t,r,n)=>{const o=e.split("\r\n");return o.forEach(((e,s)=>{/^a=fmtp:\d*/.test(e)?o[s]+=`;x-google-max-bitrate=${t};x-google-min-bitrate=${r};x-google-start-bitrate=${n}`:/^a=mid:(1|video)/.test(e)&&(o[s]+=`\r\nb=AS:${t}`)})),o.join("\r\n")})(e.sdp,r,n,o)),this.logger.debug("LOCAL SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setLocalDescription(e)}_setRemoteDescription(e){e.sdp&&this.options.useStereo&&(e.sdp=Us(e.sdp)),e.sdp&&this.instance.localDescription&&(e.sdp=((e,t)=>{const r="\r\n",n=this.instance.localDescription.sdp.split(r);if(n.findIndex(Ws)<n.findIndex(Vs))return e;const o=e.split(r),s=o.findIndex(Ws),i=o.findIndex(Vs),a=o.slice(s,i),c=o.slice(i,o.length-1);return[...o.slice(0,s),...c,...a,""].join(r)})(e.sdp));const t=e;return this.logger.debug("REMOTE SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setRemoteDescription(t)}async _retrieveLocalStream(){if(ms(this.options.localStream))return this.options.localStream;const e=await Ds(this.options);return Ns(e)}_attachListeners(){this.instance.addEventListener("signalingstatechange",(()=>{switch(this.logger.debug("signalingState:",this.instance.signalingState),this.instance.signalingState){case"stable":this._negotiating=!1;break;case"have-local-offer":"complete"===this.instance.iceGatheringState&&this._sdpReady();break;case"closed":delete this.instance;break;default:this._negotiating=!0}})),this.instance.addEventListener("negotiationneeded",(()=>{this.logger.debug("Negotiation needed event"),this.startNegotiation()})),this.instance.addEventListener("iceconnectionstatechange",(()=>{this.logger.debug("iceConnectionState:",this.instance.iceConnectionState)})),this.instance.addEventListener("icegatheringstatechange",(()=>{this.logger.debug("iceGatheringState:",this.instance.iceGatheringState)})),this.instance.addEventListener("track",(e=>{this.call.emit("track",e),this.options.remoteStream=e.streams[0]})),this.instance.addEventListener("addstream",(e=>{e.stream&&(this.options.remoteStream=e.stream)}))}}const qs={destinationNumber:"room",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:!0,video:{aspectRatio:16/9},useStereo:!1,attach:!1,screenShare:!1,additionalDevice:!1,userVariables:{},requestTimeout:1e4,autoApplyMediaParams:!0,iceGatheringTimeout:2e3};class Fs extends Hn{constructor(e){super(e),this.nodeId="",this.gotEarly=!1,this.doReinvite=!1,this._eventsPrefix="video",this.state="new",this.prevState="new",this.options=Object.assign(Object.assign({},qs),e),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._memberId}get previewUrl(){return this._previewUrl}get roomId(){return this._roomId}get roomSessionId(){return this._roomSessionId}get localStream(){return this.options.localStream}get remoteStream(){return this.options.remoteStream}get iceServers(){var e,t;return null!==(t=null===(e=this.options)||void 0===e?void 0:e.iceServers)&&void 0!==t?t:this.select(is.getIceServers)}get messagePayload(){const{destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c}=this.options;return{sessid:this.options.sessionid,dialogParams:{id:this.__uuid,destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c}}}get cameraId(){return this.peer?this.peer.getDeviceId("video"):null}get cameraLabel(){return this.peer?this.peer.getDeviceLabel("video"):null}get microphoneId(){return this.peer?this.peer.getDeviceId("audio"):null}get microphoneLabel(){return this.peer?this.peer.getDeviceLabel("audio"):null}get withAudio(){return!!this.remoteStream&&this.remoteStream.getAudioTracks().length>0}get withVideo(){return!!this.remoteStream&&this.remoteStream.getVideoTracks().length>0}get localVideoTrack(){return this.peer.localVideoTrack}get localAudioTrack(){return this.peer.localAudioTrack}vertoExecute(e){const t={message:e,node_id:this.nodeId};if("verto.invite"===e.method)t.subscribe=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions();else if(!this.nodeId)return void this.logger.warn(`Skip Request. Missing nodeId for '${e.method}'.`);return this.execute({method:"video.message",params:t})}onStateChange(e){switch(this.logger.debug("onStateChange",e),e.state){case"hangup":this._hangup(e);break;default:this.setState(e.state)}}onRemoteSDP(e){this.logger.debug("onRemoteSDP",e),e.remoteSDP&&this.peer.onRemoteSdp(e.remoteSDP)}onRoomSubscribed(e){this.logger.debug("onRoomSubscribed",e),this.nodeId=e.nodeId,this._roomId=e.roomId,this._roomSessionId=e.roomSessionId,this._memberId=e.memberId,this._previewUrl=e.previewUrl,this._attachListeners(this.options.additionalDevice||this.options.screenShare?e.memberId:e.roomSessionId),this.applyEmitterTransforms()}onVideoConstraints(e){this.logger.debug("onVideoConstraints",e),(null==e?void 0:e.videoConstraints)&&this.peer.applyMediaConstraints("video",e.videoConstraints)}onAudioConstraints(e){this.logger.debug("onAudioConstraints",e),(null==e?void 0:e.audioConstraints)&&this.peer.applyMediaConstraints("audio",e.audioConstraints)}updateCamera(e){return this.updateConstraints({video:Object.assign({aspectRatio:16/9},e)})}updateMicrophone(e){return this.updateConstraints({audio:e})}manageSendersWithConstraints(e){return!1===e.audio&&(this.logger.info("Switching off the microphone"),this.stopOutboundAudio()),!1===e.video&&(this.logger.info("Switching off the camera"),this.stopOutboundVideo()),e.audio||e.video}updateConstraints(e,{attempt:t=0}={}){return t>1?Promise.reject(new Error("Failed to update constraints")):new Promise((async(r,n)=>{var o;try{if(!Object.keys(e).length)return n(new Error("Invalid audio/video constraints."));if(this.logger.debug("updateConstraints trying constraints",this.__uuid,e),!this.manageSendersWithConstraints(e))return void this.logger.debug("Either `video` and `audio` (or both) constraints were set to `false` so their corresponding senders (if any) were stopped");let s;try{s=await us(e)}catch(s){if(s instanceof DOMException&&"Concurrent mic process limit."===s.message){let n={};null===(o=this.options.localStream)||void 0===o||o.getTracks().forEach((t=>{var r;n[t.kind]=t.getConstraints(),void 0!==e[t.kind]&&(this.logger.debug("updateConstraints stop old tracks to retrieve new ones"),ys(t),null===(r=this.options.localStream)||void 0===r||r.removeTrack(t))}));try{return r(this.updateConstraints(e,{attempt:t+1}))}catch(e){return this.logger.error("Restoring previous constraints"),r(this.updateConstraints(n,{attempt:t+1}))}}return this.logger.error("updateConstraints",s),n(s)}this.logger.debug("updateConstraints got stream",s),this.options.localStream||(this.options.localStream=new MediaStream);const{instance:i}=this.peer,a=s.getTracks();this.logger.debug(`updateConstraints got ${a.length} tracks`);for(let e=0;e<a.length;e++){const t=a[e];this.logger.debug("updateConstraints apply track: ",t);const r=i.getTransceivers().find((({mid:e,sender:r,receiver:n})=>r.track&&r.track.kind===t.kind?(this.logger.debug("Found transceiver by sender"),!0):n.track&&n.track.kind===t.kind?(this.logger.debug("Found transceiver by receiver"),!0):null===e&&(this.logger.debug("Found disassociated transceiver"),!0)));r&&r.sender?(this.logger.debug("updateConstraints got transceiver",r.currentDirection,r.mid),await r.sender.replaceTrack(t),this.logger.debug("updateConstraints replaceTrack"),r.direction="sendrecv",this.logger.debug("updateConstraints set to sendrecv"),this.options.localStream.getTracks().forEach((e=>{var r;e.kind===t.kind&&e.id!==t.id&&(this.logger.debug("updateConstraints stop old track and apply new one - "),ys(e),null===(r=this.options.localStream)||void 0===r||r.removeTrack(e))})),this.options.localStream.addTrack(t)):(this.logger.debug("updateConstraints no transceiver found. addTrack and start dancing!"),this.peer.type="offer",this.doReinvite=!0,this.options.localStream.addTrack(t),i.addTrack(t,this.options.localStream)),this.logger.debug("updateConstraints simply update mic/cam"),"audio"===t.kind?this.options.micId=t.getSettings().deviceId:"video"===t.kind&&(this.options.camId=t.getSettings().deviceId)}this.logger.debug("updateConstraints done"),r()}catch(e){this.logger.error("updateConstraints",e),n(e)}}))}invite(){return new Promise((async(e,t)=>{this.direction="outbound",this.peer=new $s(this,"offer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Invite error",e),t(e)}}))}answer(){return new Promise((async(e,t)=>{this.direction="inbound",this.peer=new $s(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){var t;const{type:r,sdp:n}=e,o=this._mungeSDP(n);switch(this.logger.debug("MUNGED SDP \n",`Type: ${r}`,"\n\n",o),r){case"offer":return(null===(t=this.peer.instance)||void 0===t?void 0:t.remoteDescription)?this.executeUpdateMedia(o):this.executeInvite(o);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${r}' on call ${this.id}`)}}async executeInvite(e){if(!["new","requesting"].includes(this.state))throw new Error(`Invalid state: '${this.state}' for connection id: ${this.id}`);"new"===this.state&&this.setState("requesting");try{const t=this.options.screenShare?{layout:this.options.layout,positions:this.options.positions}:{},r=Sr(Object.assign(Object.assign(Object.assign({},this.messagePayload),t),{sdp:e})),n=await this.vertoExecute(r);this.logger.debug("Invite response",n)}catch(e){throw this.setState("hangup"),e.jsonrpc}}async executeUpdateMedia(e){try{const t=Er(Object.assign(Object.assign({},this.messagePayload),{sdp:e,action:"updateMedia"})),r=await this.vertoExecute(t);r.sdp||this.logger.error("UpdateMedia invalid SDP answer",r),this.logger.debug("UpdateMedia response",r),await this.peer.onRemoteSdp(r.sdp)}catch(e){throw this.logger.error("UpdateMedia error",e),e.jsonrpc}}async hangup(){try{const e=kr(this.messagePayload);await this.vertoExecute(e)}catch(e){this.logger.error("Hangup error:",e)}finally{this._hangup()}}dtmf(e){const t=Cr(Object.assign(Object.assign({},this.messagePayload),{dtmf:e}));this.vertoExecute(t)}doReinviteWithRelayOnly(){this.peer&&this.active&&this.peer.restartIceWithRelayOnly()}stopOutboundAudio(){this.peer&&this.active&&this.peer.stopTrackSender("audio")}restoreOutboundAudio(){this.peer&&this.active&&this.peer.restoreTrackSender("audio")}stopOutboundVideo(){this.peer&&this.active&&this.peer.stopTrackSender("video")}restoreOutboundVideo(){this.peer&&this.active&&this.peer.restoreTrackSender("video")}setState(e){switch(this.prevState=this.state,this.state=e,this.logger.debug(`Call ${this.id} state change from ${this.prevState} to ${this.state}`),this.emit(this.state,this),e){case"purge":this._finalize();break;case"hangup":this.setState("destroy");break;case"destroy":this._finalize()}}_hangup(e={}){const{byeCause:t="NORMAL_CLEARING",byeCauseCode:r="16",redirectDestination:n}=e;return this.cause=t,this.causeCode=r,n&&this.peer.localSdp?(this.logger.debug("Redirect Destination to:",n),this.nodeId=n,this.executeInvite(this.peer.localSdp)):this.setState("hangup")}_mungeSDP(e){return e}_finalize(){this.peer&&this.peer.instance&&(this.peer.instance.close(),delete this.peer);const{remoteStream:e,localStream:t}=this.options;vs(e),vs(t),this.destroy()}}const Bs=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e.addEventListener("pause",(()=>{e.play().catch((t=>{Gt().error("Video Element Paused",e,t)}))})),e},zs=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),Hs=Ir.createAction("swJs/audioSetSpeakerAction"),Qs=({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:n}){try{const o=new Map,s=Bs(),i={get id(){return`sw-sdk-${r.memberId}`},get domElement(){return o.get(this.id)},set domElement(e){e?(Gt().debug("Set localOverlay",e),o.set(this.id,e)):(Gt().debug("Remove localOverlay"),o.delete(this.id))},hide(){if(!this.domElement)return Gt().warn("Missing localOverlay to hide");this.domElement.style.opacity="0"},show(){if(!this.domElement)return Gt().warn("Missing localOverlay to show");this.domElement.style.opacity="1"}},a=(({localOverlay:e,rootElement:t})=>async({layout:r,myMemberId:n,localStream:o})=>{Gt().debug("Process layout.changed");try{const{layers:s=[]}=r,i=s.find((({member_id:e})=>e===n));let a=e.domElement;if(!i)return Gt().debug("Location not found"),void(a&&(Gt().debug("Current layer not visible"),e.hide()));if(!a){Gt().debug("Build myLayer"),a=(({location:e})=>{const{top:t,left:r,width:n,height:o}=zs(e),s=document.createElement("div");return s.style.position="absolute",s.style.overflow="hidden",s.style.top=t,s.style.left=r,s.style.width=n,s.style.height=o,s})({location:i}),a.id=e.id;const r=Bs();r.srcObject=o,r.style.width="100%",r.style.height="100%",a.appendChild(r);const n=t.querySelector(".mcuLayers"),s=n?.querySelector(`#${a.id}`);return void(n&&!s&&(n.appendChild(a),e.domElement=a))}const{top:c,left:u,width:d,height:l}=zs(i);Gt().debug("Update myLayer:",c,u,d,l);const h=o.getVideoTracks().length>0;a.style.opacity=h?"1":"0",a.style.top=c,a.style.left=u,a.style.width=d,a.style.height=l}catch(e){Gt().error("Layout Changed Error",e)}})({rootElement:e,localOverlay:i});let c;r.on("layout.changed",(e=>{Gt().debug("Received layout.changed"),r.peer.hasVideoSender&&r.localStream&&a({layout:e.layout,localStream:r.localStream,myMemberId:r.memberId})})),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){Gt().error("Error handling audio_muted",e)}if(t?.video_muted)try{r.stopOutboundVideo()}catch(e){Gt().error("Error handling video_muted",e)}})),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){Gt().error("Error handling video_muted",e)}}));const u=function(o){switch(o.track.kind){case"video":c=n(Gs,{applyLocalVideoOverlay:t,rootElement:e,track:o.track,element:s}),r.off("track",u)}};r.on("track",u),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),o.clear(),c?.cancel()}))}catch(e){Gt().error("videoElementSaga",e)}};function*Ks({element:e,room:t}){const r=Ir.getCustomSagaActionType(t.__uuid,Hs);for(;;){const n=yield Ae([r]);try{switch(n.type){case r:const o=yield Le(gs,e,n.payload);t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:o,kind:"resolve"})}}catch(e){t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:e,kind:"reject"}),Gt().error(e)}}}function*Js({track:e,element:t,speakerId:r,room:n}){(({track:e,element:t})=>{t.autoplay=!0,t.playsinline=!0,t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({track:e,element:t}),r&&gs(t,r).catch((()=>{})),yield Ne(Ks,{element:t,room:n})}function*Gs({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:n}){(async r=>{if((({track:e,element:t})=>{t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({element:n,track:r}),n.style.width="100%",!t)return void e.appendChild(n);const o=document.createElement("div");o.style.position="absolute",o.style.top="0",o.style.left="0",o.style.right="0",o.style.bottom="0",o.appendChild(n);const s=document.createElement("div");s.style.paddingBottom="56.25%",s.appendChild(o);const i=document.createElement("div");i.classList.add("mcuLayers"),i.style.display="none",s.appendChild(i);const a=document.createElement("div");a.style.position="relative",a.style.width="100%",a.style.margin="0 auto",a.appendChild(s),e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.appendChild(a),n.readyState===HTMLMediaElement.HAVE_NOTHING&&(Gt().debug("Wait for the MCU to be ready"),await(({element:e})=>new Promise((t=>{e.addEventListener("canplay",(function r(){e.removeEventListener("canplay",r),t()})),e.addEventListener("resize",(function r(){e.removeEventListener("resize",r),t()}))})))({element:n})),i.style.display="block"})(r).catch((e=>{Gt().error("Handle video track error",e)}))}const Xs={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},Ys={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},Zs=or(class extends Fs{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Xn.audioMuteMember,audioUnmute:Xn.audioUnmuteMember,videoMute:Xn.videoMuteMember,videoUnmute:Xn.videoUnmuteMember,setMicrophoneVolume:Xn.setInputVolumeMember,setInputVolume:Xn.setInputVolumeMember,setInputSensitivity:Xn.setInputSensitivityMember}),ei=or(class extends Fs{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Xn.audioMuteMember,audioUnmute:Xn.audioUnmuteMember,videoMute:Xn.videoMuteMember,videoUnmute:Xn.videoUnmuteMember,setInputVolume:Xn.setInputVolumeMember,setMicrophoneVolume:Xn.setInputVolumeMember,setInputSensitivity:Xn.setInputSensitivityMember}),ti=()=>{},ri="video.memberList.updated",ni=rr({event:ri}),oi=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Ut),e)),[]).join(".")})(ni),si=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*ii({pubSubChannel:e}){const t=new Map;function*r(r){const n={room_session_id:"video.room.joined"===r.type?r.payload.room_session.id:r.payload.room_session_id,members:(({action:e,memberList:t})=>{const r=(e=>"video.room.joined"===e.type?e.payload.room_session.members:[e.payload.member])(e);switch(e.type){case"video.member.left":r.forEach((e=>{t.delete(e.id)}));break;default:r.forEach((e=>{t.set(e.id,e)}))}return Array.from(t.values())})({action:r,memberList:t})};yield xe(e,{type:oi,payload:n})}for(;;){const t=yield Ae(e,(({type:e})=>si.includes(e)));yield Ne(r,t)}}const ai=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(ni))))(r))return;const{cleanup:n}=((e,t)=>{(e=>hr(si).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,ti)}));const r=({members:t})=>{e.emit(ri,{members:t})};return e.on(oi,r),{cleanup:()=>{e.off(oi,r)}}})(t,r);yield Ne(ii,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},ci=function*(e){if(!e.initialState)throw new Error("[memberPositionWorker] Missing initialState");yield Ne(Zo.memberPositionWorker,e)},ui=or(class extends Fs{_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=>({member:e})}}}],[[mr("video.recording.start"),"video.recording.started","video.recording.updated","video.recording.ended"],{type:"roomSessionRecording",instanceFactory:e=>Xn.createRoomSessionRecordingObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Zt({...e.recording,room_session_id:this.roomSessionId})}],[[mr("video.playback.start"),"video.playback.started","video.playback.updated","video.playback.ended"],{type:"roomSessionPlayback",instanceFactory:e=>Xn.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Zt({...e.playback,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...Zo.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.runWorker("memberListUpdated",{worker:ai})}attachOnSubscribedWorkers(e){this.runWorker("memberPositionWorker",{worker:ci,initialState:e})}async createScreenShareObject(e={}){return this.startScreenShare(e)}async startScreenShare(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!0,layout:o,positions:s}=e,i=await ds({audio:!0===r?Ys:r,video:n}),a={...this.options,screenShare:!0,recoverCall:!1,localStream:i,remoteStream:void 0,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId},layout:o,positions:s},c=qn({store:this.store,Component:Zs,componentListeners:Xs})(a);i.getVideoTracks().forEach((e=>{e.addEventListener("ended",(()=>{c&&c.active&&c.leave()}))})),c.on("destroy",(()=>{this._screenShareList.delete(c)}));try{return this._screenShareList.add(c),t&&await c.join(),c}catch(e){throw this.logger.error("ScreenShare Error",e),e}}addCamera(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,video:r})}addMicrophone(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,audio:r})}async addDevice(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!1}=e;if(!r&&!n)throw new TypeError("At least one of `audio` or `video` must be requested.");const o={...this.options,localStream:void 0,remoteStream:void 0,audio:r,video:n,additionalDevice:!0,recoverCall:!1,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId}},s=qn({store:this.store,Component:ei,componentListeners:Xs})(o);s.on("destroy",(()=>{this._deviceList.delete(s)}));try{return this._deviceList.add(s),t&&await s.join(),s}catch(e){throw this.logger.error("RoomDevice Error",e),e}}join(){return super.invite()}leave(){return this.hangup()}updateSpeaker({deviceId:e}){return this.triggerCustomSaga(Hs(e))}async hangup(){return this._screenShareList.forEach((e=>{e.leave()})),this._deviceList.forEach((e=>{e.leave()})),super.hangup()}_finalize(){this._screenShareList.clear(),this._deviceList.clear(),super._finalize()}getLayoutList(){return this.getLayouts()}getMemberList(){return this.getMembers()}},{audioMute:Xn.audioMuteMember,audioUnmute:Xn.audioUnmuteMember,videoMute:Xn.videoMuteMember,videoUnmute:Xn.videoUnmuteMember,deaf:Xn.deafMember,undeaf:Xn.undeafMember,setInputVolume:Xn.setInputVolumeMember,setOutputVolume:Xn.setOutputVolumeMember,setMicrophoneVolume:Xn.setInputVolumeMember,setSpeakerVolume:Xn.setOutputVolumeMember,setInputSensitivity:Xn.setInputSensitivityMember,removeMember:Xn.removeMember,getMembers:Xn.getMembers,getLayouts:Xn.getLayouts,setLayout:Xn.setLayout,setPositions:Xn.setPositions,setMemberPosition:Xn.setMemberPosition,hideVideoMuted:Xn.hideVideoMuted,showVideoMuted:Xn.showVideoMuted,getRecordings:Xn.getRecordings,startRecording:Xn.startRecording,getPlaybacks:Xn.getPlaybacks,play:Xn.play,setHideVideoMuted:Xn.setHideVideoMuted,setMeta:Xn.setMeta,setMemberMeta:Xn.setMemberMeta}),di=function*(e){Gt().trace("videoManagerWorker started");const{channels:t}=e,{swEventChannel:r,pubSubChannel:n}=t;for(;;){const e=yield Ae(r,(e=>e.type.startsWith("video-manager.")));yield xe(n,e)}};class li extends Kn{_eventsPrefix="video-manager";constructor(e){super(e),this.runWorker("videoManagerWorker",{worker:di})}getEmitterTransforms(){return new Map([[["video-manager.rooms.subscribed"],{type:"roomSession",instanceFactory:({rooms:e})=>({rooms:e.map((e=>Zt(e)))}),payloadTransform:({rooms:e})=>({rooms:e.map((e=>Zt(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=>Zt(e),payloadTransform:e=>Zt(e)}]])}}class hi extends Qn{_videoManager;_chat;_pubSub;get rooms(){return{makeRoomObject:e=>{const{rootElement:t,applyLocalVideoOverlay:r=!0,stopCameraWhileMuted:n=!0,stopMicrophoneWhileMuted:o=!0,...s}=e,i=[];i.push((({speakerId:e})=>function*({instance:t,runSaga:r}){try{const n=new Audio;let o;const s=function(i){switch(i.track.kind){case"audio":o=r(Js,{track:i.track,element:n,speakerId:e,room:t}),t.off("track",s)}};t.on("track",s),t.once("destroy",(()=>{o?.cancel()}))}catch(e){Gt().error("audioElementSaga",e)}})({speakerId:s.speakerId})),t&&i.push(Qs({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},qn({store:c.store,customSagas:c.customSagas,Component:ui,componentListeners:Xs})(c));var c;return o&&a.on("member.updated.audio_muted",(({member:e})=>{try{e.id===a.memberId&&"audio_muted"in e&&(e.audio_muted?a.stopOutboundAudio():a.restoreOutboundAudio())}catch(e){this.logger.error("Error handling audio_muted",e)}})),n&&a.on("member.updated.video_muted",(({member:e})=>{try{e.id===a.memberId&&"video_muted"in e&&(e.video_muted?a.stopOutboundVideo():a.restoreOutboundVideo())}catch(e){this.logger.error("Error handling video_muted",e)}})),a}}}get chat(){return this._chat||(this._chat=Ro.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get pubSub(){return this._pubSub||(this._pubSub=$o.createBasePubSubObject({store:this.store,emitter:this.options.emitter})),this._pubSub}get videoManager(){return this._videoManager||(this._videoManager=(e=>{const t=qn({store:e.store,Component:li,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(Ir.reauthAction({token:e}))}}function pi(e){this.message=e}(pi.prototype=new Error).name="InvalidCharacterError";var mi="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new pi("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,s=0,i="";n=t.charAt(s++);~n&&(r=o%4?64*r+n:n,o++%4)?i+=String.fromCharCode(255&r>>(-2*o&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return i};function fi(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(mi(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 mi(t)}}function gi(e){this.message=e}function vi(e,t){if("string"!=typeof e)throw new gi("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(fi(e.split(".")[r]))}catch(e){throw new gi("Invalid token specified: "+e.message)}}(gi.prototype=new Error).name="InvalidTokenError";class yi extends class extends class{constructor(e){var t,r;this.options=e,Wt(this,"__sw_symbol",nn),Wt(this,"uuid",_()),Wt(this,"WebSocketConstructor"),Wt(this,"agent"),Wt(this,"connectVersion",vr),Wt(this,"_rpcConnectResult"),Wt(this,"_requests",new Map),Wt(this,"_socket",null),Wt(this,"_host","wss://relay.signalwire.com"),Wt(this,"_executeTimeoutMs",1e4),Wt(this,"_executeTimeoutError",Symbol.for("sw-execute-timeout")),Wt(this,"_checkPingDelay",15e3),Wt(this,"_checkPingTimer",null),Wt(this,"_status","unknown");const{host:n,logLevel:o="info"}=e;n&&(this._host=(e=>`${ar.test(e)?"":"wss://"}${e}`)(n)),o&&(null==(r=(t=this.logger).setLevel)||r.call(t,o)),this._onSocketOpen=this._onSocketOpen.bind(this),this._onSocketError=this._onSocketError.bind(this),this._onSocketClose=this._onSocketClose.bind(this),this._onSocketMessage=this._onSocketMessage.bind(this),this.execute=this.execute.bind(this),this.connect=this.connect.bind(this)}get host(){return this._host}get rpcConnectResult(){return this._rpcConnectResult}get relayProtocol(){var e,t;return null!=(t=null==(e=this._rpcConnectResult)?void 0:e.protocol)?t:""}get signature(){var e,t;return null==(t=null==(e=this._rpcConnectResult)?void 0:e.authorization)?void 0:t.signature}get logger(){return Gt()}get connecting(){var e;return 0===(null==(e=this._socket)?void 0:e.readyState)}get connected(){var e;return 1===(null==(e=this._socket)?void 0:e.readyState)}get closing(){var e;return 2===(null==(e=this._socket)?void 0:e.readyState)}get closed(){return!this._socket||3===this._socket.readyState}get status(){return this._status}set token(e){this.options.token=e}connect(){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.warn("Session not connected or already in closing state.")}execute(e){if("idle"===this._status||!this.connected)return Promise.reject("Can't call `execute` when Session is not authorized.");let t;return t="params"in e?new Promise(((t,r)=>{this._requests.set(e.id,{rpcRequest:e,resolve:t,reject:r})})):Promise.resolve(),this.logger.wsTraffic({type:"send",payload:e}),this._socket.send(this.encode(e)),cr(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(yr(t))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Wr())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Dr({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch($r())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=e.code>=1006&&e.code<=1014?"reconnecting":"disconnected",this.dispatch(Ur()),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:n,reject:o}=e;this._requests.delete(t.id);const{result:s,error:i}=(({response:e,request:t})=>{const{result:r={},error:n}=e;if(n)return{error:n};switch(t.method){case"signalwire.connect":return{result:r};default:return Xt(e)}})({response:t,request:r});return i?o(i):n(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,gr({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,n;clearTimeout(this._checkPingTimer),this._checkPingTimer=setTimeout((()=>{this._closeConnection("reconnecting")}),this._checkPingDelay),await this.execute((r=e.id,n=null==(t=null==e?void 0:e.params)?void 0:t.timestamp,gr({id:r,result:{timestamp:n||Date.now()/1e3}})))}_closeConnection(e){this._status=e,this.dispatch(tn.authStatus("unknown")),this.dispatch(jr()),this._socket&&(this._socket.close(),this._socket=null)}}{constructor(e){super(e),this.options=e,Wt(this,"_expiredDiffSeconds",0),Wt(this,"_refreshTokenNotificationDiff",120),Wt(this,"_checkTokenExpirationDelay",2e4),Wt(this,"_checkTokenExpirationTimer",null),this._checkTokenExpiration=this._checkTokenExpiration.bind(this),this.reauthenticate=this.reauthenticate.bind(this)}get expiresAt(){var e,t,r;const n=null!=(r=null==(t=null==(e=null==this?void 0:this._rpcConnectResult)?void 0:e.authorization)?void 0:t.expires_at)?r:0;if("string"==typeof n){const e=Date.parse(n);if(!isNaN(e))return Math.floor(e/1e3)}return n}get expiresIn(){const e=Math.floor(Date.now()/1e3);return this.expiresAt-e}get expired(){return this.expiresIn<=this._expiredDiffSeconds}async authenticate(){const e={agent:this.agent,version:this.connectVersion,authentication:{jwt_token:this.options.token}};if(this._relayProtocolIsValid())e.protocol=this.relayProtocol;else{const t=await this.retrieveRelayProtocol();t&&(e.protocol=t)}this._rpcConnectResult=await this.execute(yr(e)),await this.persistRelayProtocol(),this._checkTokenExpiration()}async retrieveRelayProtocol(){return""}async persistRelayProtocol(){}async reauthenticate(){if(this.expired)return this.connect();const e={project:this._rpcConnectResult.authorization.project,jwt_token:this.options.token};try{this._rpcConnectResult=await this.execute((t=e,fr({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(Vr()),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)))}}{options;WebSocketConstructor=WebSocket;agent="@signalwire/js/3.12.0";constructor(e){let t;try{t=vi(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 vi(this.options.token)?.r}catch(e){return""}}}const bi=e=>{const t={...e,emitter:new St},r=Fn({userOptions:t,SessionConstructor:yi});return qn({store:r,Component:hi,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},_i=["subscribe","publish","updateToken","getMessages","getMembers","getMemberState","setMemberState"];var wi=Object.freeze({__proto__:null,ChatMember:Ro.ChatMember,ChatMessage:Ro.ChatMessage,Client:function(e){const t=bi(e);return new Proxy(t.chat,{get:(e,r,n)=>_i.includes(r)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(r):Reflect.get(e,r,n)})}});const Si=["subscribe","publish","updateToken"];var ki=Object.freeze({__proto__:null,PubSubMessage:$o.PubSubMessage,Client:function(e){const t=bi(e);return new Proxy(t.pubSub,{get:(e,r,n)=>Si.includes(r)?(e=>async(...r)=>(await t.connect(),t.pubSub[e](...r)))(r):Reflect.get(e,r,n)})}});const Ei={aspectRatio:{ideal:16/9}},Ci=e=>new Promise((async(t,r)=>{const{audio:n=!0,video:o=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:u=!0,stopMicrophoneWhileMuted:d=!0,speakerId:l,...h}=e,p=bi({...h});if(await p.connect(),!p)return;let m;if(i){const e=document.getElementById(i);e?m=e:(m=document.body,Gt().warn(`We couldn't find an element with id: ${i}: using 'document.body' instead.`))}const f=p.rooms.makeRoomObject({audio:n,video:!0===o?Ei:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:u,stopMicrophoneWhileMuted:d,speakerId:l});f.once("destroy",(()=>{p.disconnect()}));const g=()=>new Promise((async(e,t)=>{try{f.once("room.subscribed",(t=>{e(f)})),await f.join()}catch(e){Gt().error("Join",e),p.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)})),Ti={aspectRatio:{ideal:16/9}},Ii=["audioMute","audioUnmute","deaf","getLayouts","getMembers","getRecordings","hideVideoMuted","leave","removerMember","restoreOutboundAudio","restoreOutboundVideo","setInputSensitivity","setInputVolume","setLayout","setPositions","setMemberPosition","setOutputVolume","showVideoMuted","startRecording","stopOutboundAudio","stopOutboundVideo","undeaf","videoMute","videoUnmute","setMicrophoneVolume","setSpeakerVolume","setMeta","setMemberMeta"];var Mi=Object.freeze({__proto__:null,RoomSession:function(e){const{audio:t=!0,video:r=!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s=!0,stopCameraWhileMuted:i=!0,stopMicrophoneWhileMuted:a=!0,speakerId:c,...u}=e,d=bi(u),l=d.rooms.makeRoomObject({audio:t,video:!0===r?Ti:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{d.disconnect()}));const h={join:()=>new Promise((async(e,t)=>{try{l.attachPreConnectWorkers(),await d.connect(),l.once("room.subscribed",(t=>{l.attachOnSubscribedWorkers(t),e(l)})),await l.join()}catch(e){Gt().error("RoomSession Join",e),d.disconnect(),t(e)}}))};return new Proxy(l,{get(e,t,r){if(t in h)return h[t];if(!e.active&&Ii.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:Ci,joinRoom:e=>Ci({...e,autoJoin:!0}),createClient:bi}),Pi=Object.freeze({__proto__:null,getDevices:Is,getCameraDevices:()=>Is("camera"),getMicrophoneDevices:()=>Is("microphone"),getSpeakerDevices:()=>Is("speaker"),getDevicesWithPermissions:Cs,getCameraDevicesWithPermissions:()=>Cs("camera"),getMicrophoneDevicesWithPermissions:()=>Cs("microphone"),getSpeakerDevicesWithPermissions:()=>Cs("speaker"),checkPermissions:ws,checkCameraPermissions:Ss,checkMicrophonePermissions:ks,checkSpeakerPermissions:Es,requestPermissions:async e=>{try{const t=await us(e);vs(t)}catch(e){throw e}},createDeviceWatcher:js,createCameraDeviceWatcher:()=>js({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>js({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>js({targets:["speaker"]}),supportsMediaDevices:as,supportsGetUserMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)},supportsGetDisplayMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getDisplayMedia)},getUserMedia:us,getDisplayMedia:ds,enumerateDevices:ls,getSupportedConstraints:ps,supportsMediaOutput:fs,setMediaElementSinkId:gs,stopStream:vs,stopTrack:ys,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(Ls(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},us(t)})(e);if(!t)throw new Error("Failed to get the audio stream");const r=new St,n=new(window.AudioContext||window.webkitAudioContext),o=(e=>{const t=e.createAnalyser();return t.fftSize=64,t.minDecibels=-90,t.maxDecibels=-10,t.smoothingTimeConstant=.85,t})(n);let s,i;try{n.createMediaStreamSource(t).connect(o)}catch(e){throw new Error("No audio track found")}t.getAudioTracks().forEach((e=>{e.addEventListener("ended",(()=>{r.emit("destroyed","disconnected")}))}));const a=()=>{try{const e=new Uint8Array(o.frequencyBinCount);o.getByteFrequencyData(e);const t=e.reduce(((e,t)=>e+t),0)/20;i!==t&&(i=t,r.emit("volumeChanged",Math.min(i,100))),s=requestAnimationFrame(a)}catch(e){r.emit("destroyed","error")}};s=requestAnimationFrame(a);const c=()=>{s&&cancelAnimationFrame(s),"closed"!==n.state&&n.close().catch((e=>{Gt().error("Error closing the AudioContext",e)})),Ls(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=wi,e.PubSub=ki,e.Video=Mi,e.WebRTC=Pi,Object.defineProperty(e,"__esModule",{value:!0})}));
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SignalWire={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r={exports:{}};!function(e){var r,n;r=t,n=function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function o(e,t){var r=e[t];if("function"==typeof r.bind)return r.bind(e);try{return Function.prototype.bind.call(r,e)}catch(t){return function(){return Function.prototype.apply.apply(r,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(n){return"debug"===n&&(n="log"),typeof console!==t&&("trace"===n&&r?s:void 0!==console[n]?o(console,n):void 0!==console.log?o(console,"log"):e)}function a(t,r){for(var o=0;o<n.length;o++){var s=n[o];this[s]=o<t?e:this.methodFactory(s,t,r)}this.log=this.debug}function c(e,r,n){return function(){typeof console!==t&&(a.call(this,r,n),this[e].apply(this,arguments))}}function d(e,t,r){return i(e)||c.apply(this,arguments)}function u(e,r,o){var s,i=this;r=null==r?"WARN":r;var c="loglevel";function u(){var e;if(typeof window!==t&&c){try{e=window.localStorage[c]}catch(e){}if(typeof e===t)try{var r=window.document.cookie,n=r.indexOf(encodeURIComponent(c)+"=");-1!==n&&(e=/^([^;]+)/.exec(r.slice(n))[1])}catch(e){}return void 0===i.levels[e]&&(e=void 0),e}}"string"==typeof e?c+=":"+e:"symbol"==typeof e&&(c=void 0),i.name=e,i.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},i.methodFactory=o||d,i.getLevel=function(){return s},i.setLevel=function(r,o){if("string"==typeof r&&void 0!==i.levels[r.toUpperCase()]&&(r=i.levels[r.toUpperCase()]),!("number"==typeof r&&r>=0&&r<=i.levels.SILENT))throw"log.setLevel() called with invalid level: "+r;if(s=r,!1!==o&&function(e){var r=(n[e]||"silent").toUpperCase();if(typeof window!==t&&c){try{return void(window.localStorage[c]=r)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"="+r+";"}catch(e){}}}(r),a.call(i,r,e),typeof console===t&&r<i.levels.SILENT)return"No console available for logging"},i.setDefaultLevel=function(e){r=e,u()||i.setLevel(e,!1)},i.resetLevel=function(){i.setLevel(r,!1),function(){if(typeof window!==t&&c){try{return void window.localStorage.removeItem(c)}catch(e){}try{window.document.cookie=encodeURIComponent(c)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},i.enableAll=function(e){i.setLevel(i.levels.TRACE,e)},i.disableAll=function(e){i.setLevel(i.levels.SILENT,e)};var l=u();null==l&&(l=r),i.setLevel(l,!1)}var l=new u,h={};l.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=h[e];return t||(t=h[e]=new u(e,l.getLevel(),l.methodFactory)),t};var p=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=p),l},l.getLoggers=function(){return h},l.default=l,l},e.exports?e.exports=n():r.log=n()}(r);var n,o=r.exports,s=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(s)}var a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function c(e){return"string"==typeof e&&a.test(e)}for(var d=[],u=0;u<256;++u)d.push((u+256).toString(16).substr(1));function l(e){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 n(e,n,o,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 n&&(n=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}(n)),16!==n.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var i=new Uint8Array(16+e.length);if(i.set(n),i.set(e,n.length),(i=r(i))[6]=15&i[6]|t,i[8]=63&i[8]|128,o){s=s||0;for(var a=0;a<16;++a)o[s+a]=i[a];return o}return l(i)}try{n.name=e}catch(e){}return n.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",n.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",n}function p(e){return 14+(e+64>>>9<<4)+1}function m(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(e,t,r,n,o,s){return m((i=m(m(t,e),m(n,s)))<<(a=o)|i>>>32-a,r);var i,a}function g(e,t,r,n,o,s,i){return f(t&r|~t&n,e,t,o,s,i)}function v(e,t,r,n,o,s,i){return f(t&n|r&~n,e,t,o,s,i)}function y(e,t,r,n,o,s,i){return f(t^r^n,e,t,o,s,i)}function b(e,t,r,n,o,s,i){return f(r^(t|~n),e,t,o,s,i)}function _(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return l(n)}function w(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:return t^r^n;case 2:return t&r^t&n^r&n;case 3:return t^r^n}}function S(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 n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}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,n="0123456789abcdef",o=0;o<r;o+=8){var s=e[o>>5]>>>o%32&255,i=parseInt(n.charAt(s>>>4&15)+n.charAt(15&s),16);t.push(i)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[p(t)-1]=t;for(var r=1732584193,n=-271733879,o=-1732584194,s=271733878,i=0;i<e.length;i+=16){var a=r,c=n,d=o,u=s;r=g(r,n,o,s,e[i],7,-680876936),s=g(s,r,n,o,e[i+1],12,-389564586),o=g(o,s,r,n,e[i+2],17,606105819),n=g(n,o,s,r,e[i+3],22,-1044525330),r=g(r,n,o,s,e[i+4],7,-176418897),s=g(s,r,n,o,e[i+5],12,1200080426),o=g(o,s,r,n,e[i+6],17,-1473231341),n=g(n,o,s,r,e[i+7],22,-45705983),r=g(r,n,o,s,e[i+8],7,1770035416),s=g(s,r,n,o,e[i+9],12,-1958414417),o=g(o,s,r,n,e[i+10],17,-42063),n=g(n,o,s,r,e[i+11],22,-1990404162),r=g(r,n,o,s,e[i+12],7,1804603682),s=g(s,r,n,o,e[i+13],12,-40341101),o=g(o,s,r,n,e[i+14],17,-1502002290),r=v(r,n=g(n,o,s,r,e[i+15],22,1236535329),o,s,e[i+1],5,-165796510),s=v(s,r,n,o,e[i+6],9,-1069501632),o=v(o,s,r,n,e[i+11],14,643717713),n=v(n,o,s,r,e[i],20,-373897302),r=v(r,n,o,s,e[i+5],5,-701558691),s=v(s,r,n,o,e[i+10],9,38016083),o=v(o,s,r,n,e[i+15],14,-660478335),n=v(n,o,s,r,e[i+4],20,-405537848),r=v(r,n,o,s,e[i+9],5,568446438),s=v(s,r,n,o,e[i+14],9,-1019803690),o=v(o,s,r,n,e[i+3],14,-187363961),n=v(n,o,s,r,e[i+8],20,1163531501),r=v(r,n,o,s,e[i+13],5,-1444681467),s=v(s,r,n,o,e[i+2],9,-51403784),o=v(o,s,r,n,e[i+7],14,1735328473),r=y(r,n=v(n,o,s,r,e[i+12],20,-1926607734),o,s,e[i+5],4,-378558),s=y(s,r,n,o,e[i+8],11,-2022574463),o=y(o,s,r,n,e[i+11],16,1839030562),n=y(n,o,s,r,e[i+14],23,-35309556),r=y(r,n,o,s,e[i+1],4,-1530992060),s=y(s,r,n,o,e[i+4],11,1272893353),o=y(o,s,r,n,e[i+7],16,-155497632),n=y(n,o,s,r,e[i+10],23,-1094730640),r=y(r,n,o,s,e[i+13],4,681279174),s=y(s,r,n,o,e[i],11,-358537222),o=y(o,s,r,n,e[i+3],16,-722521979),n=y(n,o,s,r,e[i+6],23,76029189),r=y(r,n,o,s,e[i+9],4,-640364487),s=y(s,r,n,o,e[i+12],11,-421815835),o=y(o,s,r,n,e[i+15],16,530742520),r=b(r,n=y(n,o,s,r,e[i+2],23,-995338651),o,s,e[i],6,-198630844),s=b(s,r,n,o,e[i+7],10,1126891415),o=b(o,s,r,n,e[i+14],15,-1416354905),n=b(n,o,s,r,e[i+5],21,-57434055),r=b(r,n,o,s,e[i+12],6,1700485571),s=b(s,r,n,o,e[i+3],10,-1894986606),o=b(o,s,r,n,e[i+10],15,-1051523),n=b(n,o,s,r,e[i+1],21,-2054922799),r=b(r,n,o,s,e[i+8],6,1873313359),s=b(s,r,n,o,e[i+15],10,-30611744),o=b(o,s,r,n,e[i+6],15,-1560198380),n=b(n,o,s,r,e[i+13],21,1309151649),r=b(r,n,o,s,e[i+4],6,-145523070),s=b(s,r,n,o,e[i+11],10,-1120210379),o=b(o,s,r,n,e[i+2],15,718787259),n=b(n,o,s,r,e[i+9],21,-343485551),r=m(r,a),n=m(n,c),o=m(o,d),s=m(s,u)}return[r,n,o,s]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(p(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%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 n=unescape(encodeURIComponent(e));e=[];for(var o=0;o<n.length;++o)e.push(n.charCodeAt(o))}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 p=16;p<80;++p)l[p]=S(l[p-3]^l[p-8]^l[p-14]^l[p-16],1);for(var m=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=S(m,5)+w(_,f,g,v)+y+t[_]+l[b]>>>0;y=v,v=g,g=S(f,30)>>>0,f=m,m=k}r[0]=r[0]+m>>>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 O(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 n;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 o=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(!O(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=o(s,e)}finally{c=!1}for(var t=i=a,r=0;r<t.length;r++)(0,t[r])();return e}function p(e){if("function"!=typeof e)throw new Error(T(10));o=e,h({type:P.REPLACE})}function m(){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}),(n={dispatch:h,subscribe:l,getState:u,replaceReducer:p})[I]=m,n}function R(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++){var o=t[n];"function"==typeof e[o]&&(r[o]=e[o])}var s,i=Object.keys(r);try{!function(e){Object.keys(e).forEach((function(t){var r=e[t];if(void 0===r(void 0,{type: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 n=!1,o={},a=0;a<i.length;a++){var c=i[a],d=e[c],u=(0,r[c])(d,t);if(void 0===u)throw new Error(T(14));o[c]=u,n=n||u!==d}return(n=n||i.length!==Object.keys(e).length)?o: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),n=function(){throw new Error(T(15))},o={getState:r.getState,dispatch:function(){return n.apply(void 0,arguments)}},s=t.map((function(e){return e(o)}));return n=j.apply(void 0,s)(r.dispatch),C(C({},r),{},{dispatch:n})}}}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 n in e){var o=e[n];"function"==typeof o&&(r[n]=x(o,t))}return r},combineReducers:R,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"),q=D("MULTICAST"),F=D("SAGA_ACTION"),B=D("SELF_CANCELLATION"),z=D("TASK"),H=D("TASK_CANCEL"),Q=D("TERMINATE"),J=D("LOCATION");function K(){return(K=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var G=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)},ne=function e(t){return t&&(Z(t)||se(t)||Y(t)||ee(t)&&t.every(e))},oe=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 n=new Promise((function(n){r=setTimeout(n,e,t)}));return n[W]=function(){clearTimeout(r)},n}var ae=function(e){return function(){return!0}}(),ce=function(){},de=function(e){return e},ue=function(e,t){K(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 pe=function(e){throw e},me=function(e){return{value:e,done:!0}};function fe(e,t,r){void 0===t&&(t=pe),void 0===r&&(r="iterator");var n={meta:{name:r},next:e,throw:t,return:me,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(n[Symbol.iterator]=function(){return n}),n}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===Q},_e=function(e){return e===H},we=function(e){return be(e)||_e(e)};function Se(e,t){var r,n=Object.keys(e),o=n.length,s=0,i=ee(e)?ve(o):{},a={};return n.forEach((function(e){var n=function(n,a){r||(a||we(n)?(t.cancel(),t(n,a)):(i[e]=n,++s===o&&(r=!0,t(i))))};n.cancel=ce,a[e]=n})),t.cancel=function(){r||(r=!0,n.forEach((function(e){return a[e].cancel()})))},a}function ke(e){return{name:e.name||"anonymous",location:Ee(e)}}function Ee(e){return e[J]}var Ce={isEmpty:ae,put:ce,take:ce},Te="TAKE",Ie="CALL",Me="FORK",Pe="SELECT",Oe=function(e,t){var r;return(r={})[U]=!0,r.combinator=!1,r.type=e,r.payload=t,r},Ae=function(e){return Oe(Me,K({},e.payload,{detached:!0}))};function Re(e,t){return void 0===e&&(e="*"),ne(e)?Oe(Te,{pattern:e}):oe(r=e)&&r[q]&&X(t)&&ne(t)?Oe(Te,{channel:e,pattern:t}):oe(e)?Oe(Te,{channel:e}):void 0;var r}function xe(e,t){return G(t)&&(t=e,e=void 0),Oe("PUT",{channel:e,action:t})}function je(e,t){var r,n=null;return Y(e)?r=e:(ee(e)?(n=e[0],r=e[1]):(n=e.context,r=e.fn),n&&Z(r)&&Y(n[r])&&(r=n[r])),{context:n,fn:r,args:t}}function Le(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return Oe(Ie,je(e,r))}function Ne(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return Oe(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),n=1;n<t;n++)r[n-1]=arguments[n];return Oe(Pe,{selector:e,args:r})}var We=Le.bind(null,ie),Ve=[],Ue=0;function $e(e){try{Be(),e()}finally{ze()}}function qe(e){Ve.push(e),Ue||(Be(),He())}function Fe(e){try{return Be(),e()}finally{He()}}function Be(){Ue++}function ze(){Ue--}function He(){var e;for(ze();!Ue&&void 0!==(e=Ve.shift());)$e(e)}var Qe=function(e){return function(t){return e.some((function(e){return Ye(e)(t)}))}},Je=function(e){return function(t){return e(t)}},Ke=function(e){return function(t){return t.type===String(e)}},Ge=function(e){return function(t){return t.type===e}},Xe=function(){return ae};function Ye(e){var t="*"===e?Xe:Z(e)?Ke:ee(e)?Qe:function(e){return Y(e)&&e.hasOwnProperty("toString")}(e)?Ke:Y(e)?Je:se(e)?Ge:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var Ze={type:V},et=function(e){return e&&e.type===V};function tt(e){void 0===e&&(e=function(e,t){void 0===e&&(e=10);var r=new Array(e),n=0,o=0,s=0,i=function(){if(0!=n){var t=r[s];return r[s]=null,n--,s=(s+1)%e,t}},a=function(){for(var e=[];n;)e.push(i());return e};return{isEmpty:function(){return 0==n},put:function(t){var i;n<e||(i=2*e,r=a(),n=r.length,o=r.length,s=0,r.length=i,e=i),function(t){r[o]=t,o=(o+1)%e,n++}(t)},take:i,flush:a}}(void 0));var t=!1,r=[];return{take:function(n){t&&e.isEmpty()?n(Ze):e.isEmpty()?(r.push(n),n.cancel=function(){le(r,n)}):n(e.take())},put:function(n){if(!t){if(0===r.length)return e.put(n);r.shift()(n)}},flush:function(r){t&&e.isEmpty()?r(Ze):r(e.flush())},close:function(){if(!t){t=!0;var e=r;r=[];for(var n=0,o=e.length;n<o;n++)(0,e[n])(Ze)}}}}function rt(){var e,t=!1,r=[],n=r,o=function(){n===r&&(n=r.slice())},s=function(){t=!0;var e=r=n;n=[],e.forEach((function(e){e(Ze)}))};return(e={})[q]=!0,e.put=function(e){if(!t)if(et(e))s();else for(var o=r=n,i=0,a=o.length;i<a;i++){var c=o[i];c[$](e)&&(c.cancel(),c(e))}},e.take=function(e,r){void 0===r&&(r=Xe),t?e(Ze):(e[$]=r,o(),n.push(e),e.cancel=he((function(){o(),le(n,e)})))},e.close=s,e}function nt(){var e=rt(),t=e.put;return e.put=function(e){e[F]?t(e):qe((function(){t(e)}))},e}function ot(e,t){var r=e[W];Y(r)&&(t.cancel=r),e.then(t,(function(e){t(e,!0)}))}var st,it=0,at=function(){return++it};function ct(e){e.isRunning()&&e.cancel()}var dt=((st={}).TAKE=function(e,t,r){var n=t.channel,o=void 0===n?e.channel:n,s=t.pattern,i=t.maybe,a=function(e){e instanceof Error?r(e,!0):!et(e)||i?r(e):r(Q)};try{o.take(a,X(s)?Ye(s):null)}catch(e){return void r(e,!0)}r.cancel=a.cancel},st.PUT=function(e,t,r){var n=t.channel,o=t.action,s=t.resolve;qe((function(){var t;try{t=(n?n.put:e.dispatch)(o)}catch(e){return void r(e,!0)}s&&te(t)?ot(t,r):r(t)}))},st.ALL=function(e,t,r,n){var o=n.digestEffect,s=it,i=Object.keys(t);if(0!==i.length){var a=Se(t,r);i.forEach((function(e){o(t[e],s,a[e],e)}))}else r(ee(t)?[]:{})},st.RACE=function(e,t,r,n){var o=n.digestEffect,s=it,i=Object.keys(t),a=ee(t)?ve(i.length):{},c={},d=!1;i.forEach((function(e){var t=function(t,n){d||(n||we(t)?(r.cancel(),r(t,n)):(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||o(t[e],s,c[e],e)}))},st.CALL=function(e,t,r,n){var o=t.context,s=t.fn,i=t.args,a=n.task;try{var c=s.apply(o,i);if(te(c))return void ot(c,r);if(re(c))return void yt(e,c,a.context,it,ke(s),!1,r);r(c)}catch(e){r(e,!0)}},st.CPS=function(e,t,r){var n=t.context,o=t.fn,s=t.args;try{var i=function(e,t){G(e)?r(t):r(e,!0)};o.apply(n,s.concat(i)),i.cancel&&(r.cancel=i.cancel)}catch(e){r(e,!0)}},st.FORK=function(e,t,r,n){var o=t.fn,s=t.detached,i=n.task,a=function(e){var t=e.context,r=e.fn,n=e.args;try{var o=r.apply(t,n);if(re(o))return o;var s=!1;return fe((function(e){return s?{value:e,done:!0}:(s=!0,{value:o,done:!te(o)})}))}catch(e){return fe((function(){throw e}))}}({context:t.context,fn:o,args:t.args}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:ke(t)}(a,o);Fe((function(){var t=yt(e,a,i.context,it,c,s,void 0);s?r(t):t.isRunning()?(i.queue.addTask(t),r(t)):t.isAborted()?i.queue.abort(t.error()):r(t)}))},st.JOIN=function(e,t,r,n){var o=n.task,s=function(e,t){if(e.isRunning()){var r={task:o,cb:t};t.cancel=function(){e.isRunning()&&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=Se(t,r);t.forEach((function(e,t){s(e,i[t])}))}else s(t,r)},st.CANCEL=function(e,t,r,n){t===B?ct(n.task):ee(t)?t.forEach(ct):ct(t),r()},st.SELECT=function(e,t,r){var n=t.selector,o=t.args;try{r(n.apply(void 0,[e.getState()].concat(o)))}catch(e){r(e,!0)}},st.ACTION_CHANNEL=function(e,t,r){var n=t.pattern,o=tt(t.buffer),s=Ye(n),i=function t(r){et(r)||e.channel.take(t,s),o.put(r)},a=o.close;o.close=function(){i.cancel(),a()},e.channel.take(i,s),r(o)},st.CANCELLED=function(e,t,r,n){r(n.task.isCancelled())},st.FLUSH=function(e,t,r){t.flush(r)},st.GET_CONTEXT=function(e,t,r,n){r(n.task.context[t])},st.SET_CONTEXT=function(e,t,r,n){ue(n.task.context,t),r()},st);function ut(e,t){return e+"?"+t}function lt(e){var t=e.name,r=e.location;return r?t+" "+ut(r.fileName,r.lineNumber):t}function ht(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 pt=null,mt=[],ft=function(e){e.crashedEffect=pt,mt.push(e)},gt=function(){pt=null,mt.length=0},vt=function(){var e,t=mt[0],r=mt.slice(1),n=t.crashedEffect?(e=Ee(t.crashedEffect))?e.code+" "+ut(e.fileName,e.lineNumber):"":null;return["The above error occurred in task "+lt(t.meta)+(n?" \n when executing effect "+n:"")].concat(r.map((function(e){return" created by "+lt(e.meta)})),[ht(mt)]).join("\n")};function yt(e,t,r,n,o,s,i){var a=e.finalizeRunEffect((function(t,r,n){te(t)?ot(t,n):re(t)?yt(e,t,d.context,r,o,!1,n):t&&t[U]?(0,dt[t.type])(e,t.payload,n,u):n(t)}));l.cancel=ce;var c={meta:o,cancel:function(){0===c.status&&(c.status=1,l(H))},status:0},d=function(e,t,r,n,o,s,i){var a;void 0===i&&(i=ce);var c,d,u=0,l=null,h=[],p=Object.create(r),m=function(e,t,r){var n,o=[],s=!1;function i(e){h.push.apply(h,m.getTasks().map((function(e){return e.meta.name}))),c(),r(e,!0)}function a(t){o.push(t),t.cont=function(a,c){s||(le(o,t),t.cont=ce,c?i(a):(t===e&&(n=a),o.length||(s=!0,r(n))))}}function c(){s||(s=!0,o.forEach((function(e){e.cont=ce,e.cancel()})),o=[])}return a(e),{addTask:a,cancelAll:c,abort:i,getTasks:function(){return o}}}(t,0,f);function f(t,r){if(r){if(u=2,ft({meta:o,cancelledTasks:h}),g.isRoot){var n=vt();gt(),e.onError(t,{sagaStack:n})}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=n,a.meta=o,a.isRoot=s,a.context=p,a.joiners=[],a.queue=m,a.cancel=function(){0===u&&(u=1,m.cancelAll(),f(H,!1))},a.cont=i,a.end=f,a.setContext=function(e){ue(p,e)},a.toPromise=function(){return l||((e={}).promise=new Promise((function(t,r){e.resolve=t,e.reject=r})),l=e,2===u?l.reject(d):0!==u&&l.resolve(c)),l.promise;var e},a.isRunning=function(){return 0===u},a.isCancelled=function(){return 1===u||0===u&&1===t.status},a.isAborted=function(){return 2===u},a.result=function(){return c},a.error=function(){return d},a);return g}(e,c,r,n,o,s,i),u={task:d,digestEffect:h};return i&&(i.cancel=d.cancel),l(),d;function l(e,r){try{var o;r?(o=t.throw(e),gt()):_e(e)?(c.status=1,l.cancel(),o=Y(t.return)?t.return(H):{done:!0,value:H}):o=be(e)?Y(t.return)?t.return():{done:!0}:t.next(e),o.done?(1!==c.status&&(c.status=3),c.cont(o.value)):h(o.value,n,l)}catch(e){if(1===c.status)throw e;c.status=2,c.cont(e,!0)}}function h(t,r,n,o){void 0===o&&(o="");var s,i=at();function c(r,o){s||(s=!0,n.cancel=ce,e.sagaMonitor&&(o?e.sagaMonitor.effectRejected(i,r):e.sagaMonitor.effectResolved(i,r)),o&&function(e){pt=e}(t),n(r,o))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:i,parentEffectId:r,label:o,effect:t}),c.cancel=ce,n.cancel=function(){s||(s=!0,c.cancel(),c.cancel=ce,e.sagaMonitor&&e.sagaMonitor.effectCancelled(i))},a(t,i,c)}}function bt(e,t){for(var r=e.channel,n=void 0===r?nt():r,o=e.dispatch,s=e.getState,i=e.context,a=void 0===i?{}:i,c=e.sagaMonitor,d=e.effectMiddlewares,u=e.onError,l=void 0===u?ge:u,h=arguments.length,p=new Array(h>2?h-2:0),m=2;m<h;m++)p[m-2]=arguments[m];var f,g=t.apply(void 0,p),v=at();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:p})),d){var y=j.apply(void 0,d);f=function(e){return function(t,r,n){return y((function(t){return e(t,r,n)}))(t)}}}else f=de;var b={channel:n,dispatch:ye(o),getState:s,sagaMonitor:c,onError:l,finalizeRunEffect:f};return Fe((function(){var e=yt(b,g,a,v,ke(t),!0,void 0);return c&&c.effectResolved(v,e),e}))}function _t(e){var t,r=void 0===e?{}:e,n=r.context,o=void 0===n?{}:n,s=r.channel,i=void 0===s?nt():s,a=r.sagaMonitor,c=function(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)t.indexOf(r=s[n])>=0||(o[r]=e[r]);return o}(r,["context","channel","sagaMonitor"]);function d(e){return t=bt.bind(null,K({},c,{context:o,channel:i,dispatch:e.dispatch,getState:e.getState,sagaMonitor:a})),function(e){return function(t){a&&a.actionDispatched&&a.actionDispatched(t);var r=e(t);return i.put(t),r}}}return d.run=function(){return t.apply(void 0,arguments)},d.setContext=function(e){ue(o,e)},d}var wt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new o(n,s||e,i),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function i(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,o=[];if(0===this._eventsCount)return o;for(n in e=this._events)t.call(e,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,s=new Array(o);n<o;n++)s[n]=t[n].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[r?r+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,n,o,s,i){var a=r?r+e:e;if(!this._events[a])return!1;var c,d,u=this._events[a],l=arguments.length;if(u.fn){switch(u.once&&this.removeListener(e,u.fn,void 0,!0),l){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,t),!0;case 3:return u.fn.call(u.context,t,n),!0;case 4:return u.fn.call(u.context,t,n,o),!0;case 5:return u.fn.call(u.context,t,n,o,s),!0;case 6:return u.fn.call(u.context,t,n,o,s,i),!0}for(d=1,c=new Array(l-1);d<l;d++)c[d-1]=arguments[d];u.fn.apply(u.context,c)}else{var h,p=u.length;for(d=0;d<p;d++)switch(u[d].once&&this.removeListener(e,u[d].fn,void 0,!0),l){case 1:u[d].fn.call(u[d].context);break;case 2:u[d].fn.call(u[d].context,t);break;case 3:u[d].fn.call(u[d].context,t,n);break;case 4:u[d].fn.call(u[d].context,t,n,o);break;default:if(!c)for(h=1,c=new Array(l-1);h<l;h++)c[h-1]=arguments[h];u[d].fn.apply(u[d].context,c)}}return!0},a.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},a.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},a.prototype.removeListener=function(e,t,n,o){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return i(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||n&&a.context!==n||i(this,s);else{for(var c=0,d=[],u=a.length;c<u;c++)(a[c].fn!==t||o&&!a[c].once||n&&a[c].context!==n)&&d.push(a[c]);d.length?this._events[s]=1===d.length?d[0]:d:i(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=r?r+e:e]&&i(this,t):(this._events=new n,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=r,a.EventEmitter=a,e.exports=a}(wt);var St=wt.exports,kt=Object.defineProperty,Et=Object.defineProperties,Ct=Object.getOwnPropertyDescriptor,Tt=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertyNames,Mt=Object.getOwnPropertySymbols,Pt=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,At=(e,t,r)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Rt=(e,t)=>{for(var r in t||(t={}))Pt.call(t,r)&&At(e,r,t[r]);if(Mt)for(var r of Mt(t))Ot.call(t,r)&&At(e,r,t[r]);return e},xt=(e,t)=>Et(e,Tt(t)),jt=(e,t)=>{var r={};for(var n in e)Pt.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&Mt)for(var n of Mt(e))t.indexOf(n)<0&&Ot.call(e,n)&&(r[n]=e[n]);return r},Lt=(e,t)=>{for(var r in t)kt(e,r,{get:t[r],enumerable:!0})},Nt=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of It(t))Pt.call(e,o)||o===r||kt(e,o,{get:()=>t[o],enumerable:!(n=Ct(t,o))||n.enumerable});return e},Dt=(e,t,r)=>(Nt(e,t,"default"),r&&Nt(r,t,"default")),Wt=(e,t,r)=>(At(e,"symbol"!=typeof t?t+"":t,r),r),Vt="__local__",Ut="__synthetic__",$t=["room.started","room.ended"].map((e=>`video.${e}`)),qt=()=>(new Date).toISOString().replace("T"," ").replace("Z",""),Ft=o.getLogger("signalwire"),Bt=Ft.methodFactory;Ft.methodFactory=(e,t,r)=>{const n=Bt(e,t,r);return function(){const e=[qt(),"-"];for(let t=0;t<arguments.length;t++)e.push(arguments[t]);n.apply(void 0,e)}};var zt,Ht=Ft.getLevel();Ft.setLevel(Ht);var Qt={},Jt=()=>null!=zt?zt:Ft,Kt=({type:e,payload:t})=>{const r=Jt(),{logWsTraffic:n}=Qt||{};if(!n)return;const o=(e=>!("method"in e)||"signalwire.ping"!==e.method)(t)?JSON.stringify(t,null,2):t;return r.info(`${e.toUpperCase()}: \n`,o,"\n")},Gt=()=>{const e=Jt();return new Proxy(e,{get:(e,t,r)=>"wsTraffic"===t?Kt:Reflect.get(e,t,r)})},Xt=(e,t)=>{const{result:r={},error:n}=e;if(n)return{error:n};const{code:o,node_id:s,result:i=null}=r;return o&&"200"!==o?{error:r}:null===i?(t&&(r.node_id=t),{result:r}):i?i.jsonrpc?Xt(i,s):{result:i}:{result:r}},Yt={propsToUpdateValue:["updated","layers","members","recordings","playbacks"]},Zt=(e,t=Yt)=>(null==e?void 0:e.__sw_symbol)||(null==e?void 0:e.__sw_proxy)?e:Object.entries(e).reduce(((e,[r,n])=>{const o=er(r);return e[o]="object"==typeof n&&n?Array.isArray(n)?t.propsToUpdateValue.includes(r)?n.map((e=>"string"==typeof e?er(e):Zt(e))):n:Zt(n):(e=>e.endsWith("At"))(o)?(e=>{if(void 0===e)return e;const t=new Date(1e3*e);return isNaN(t.getTime())?e:t})(n):n,e}),{}),er=e=>e.includes("_")?e.split("_").reduce(((e,t,r)=>{const n=t.trim().charAt(0),o=t.substr(1).toLowerCase();return`${e}${0===r?n.toLowerCase():n.toUpperCase()}${o}`}),""):e,tr=/[A-Z]/g,rr=({event:e,namespace:t})=>("string"==typeof e&&(e=(e=>e.replace(tr,(e=>`_${e.toLowerCase()}`)))(e=nr({event:e,namespace:t}))),e),nr=({namespace:e,event:t})=>!e||t.startsWith(e)?t:`${e}:${t}`,or=(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),sr=({instance:e,transform:t,payload:r,transformedPayload:n})=>(({instance:e,proxiedObj:t,payload:r,transformedPayload:n,transform:o})=>{const s=Rt(xt(Rt({},n),{_eventsNamespace:o.getInstanceEventNamespace?o.getInstanceEventNamespace(r):void 0,eventChannel:o.getInstanceEventChannel?o.getInstanceEventChannel(r):void 0}),(e=>{let t={},r=e,n=!0;for(;n;)Object.getOwnPropertyNames(r).forEach((r=>{"function"!=typeof e[r]||"string"!=typeof r||r in t||(t[r]=e[r])})),r&&r.__sw_symbol?r=Object.getPrototypeOf(r):n=!1;return t})(e));return Object.defineProperties(t,Object.entries(s).reduce(((e,[t,r])=>(void 0===r||(e[t]={value:r,enumerable:!0,configurable:!0,writable:!0}),e)),{}))})({instance:e,proxiedObj:new Proxy(e,{get:(e,o,s)=>"__sw_proxy"===o||("toString"===o?(({property:e,payload:t})=>"function"==typeof e?()=>JSON.stringify(t):e)({property:e[o],payload:n}):"_eventsNamespace"===o&&t.getInstanceEventNamespace?t.getInstanceEventNamespace(r):"eventChannel"===o&&t.getInstanceEventChannel?t.getInstanceEventChannel(r):o in n?n[o]:Reflect.get(e,o,s))}),payload:r,transformedPayload:n,transform:t}),ir=new Map,ar=/^(ws|wss):\/\//,cr=(e,t,r)=>{let n=null;return Promise.race([e,new Promise(((e,o)=>n=setTimeout(o,t,r)))]).finally((()=>clearTimeout(n)))},dr=e=>e.includes("session."),ur=["video.member.updated","video.member.talking"],lr=["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"],hr=e=>{const t=e.map((e=>{if("string"==typeof e){const t=(e=>{const t=e.split(":");return t[t.length-1]})(e);return lr.includes(t)||(e=>e.includes(Ut))(t)||dr(t)?null:ur.find((e=>t.startsWith(e)))||t}return e}));return Array.from(new Set(t)).filter(Boolean)},pr=e=>e.includes(Vt),mr=e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Vt),e)),[]).join(".")},fr=e=>{var t;return Rt({jsonrpc:"2.0",id:null!=(t=e.id)?t:_()},e)},gr=e=>Rt({jsonrpc:"2.0"},e),vr={major:3,minor:0,revision:0},yr=e=>fr({method:"signalwire.connect",params:Rt({version:vr},e)}),br={id:"callID",destinationNumber:"destination_number",remoteCallerName:"remote_caller_id_name",remoteCallerNumber:"remote_caller_id_number",callerName:"caller_id_name",callerNumber:"caller_id_number"},_r=e=>{if(e.hasOwnProperty("dialogParams")){const t=jt(e.dialogParams,["remoteSdp","localStream","remoteStream"]);for(const e in br)e&&t.hasOwnProperty(e)&&(t[br[e]]=t[e],delete t[e]);e.dialogParams=t}return e},wr=e=>(t={})=>fr({method:e,params:_r(t)}),Sr=wr("verto.invite"),kr=wr("verto.bye"),Er=wr("verto.modify"),Cr=wr("verto.info"),Tr=wr("verto.pong"),Ir=(e,t)=>gr({id:e,result:{method:t}}),Mr={};Lt(Mr,{authErrorAction:()=>Wr,authExpiringAction:()=>Ur,authSuccessAction:()=>Vr,closeConnectionAction:()=>Lr,compoundEventAttachAction:()=>Yr,createAction:()=>Or,destroyAction:()=>jr,executeAction:()=>Dr,getCustomSagaActionType:()=>Xr,initAction:()=>xr,makeCustomSagaAction:()=>Gr,reauthAction:()=>Nr,sessionAuthErrorAction:()=>Qr,sessionConnectedAction:()=>Br,sessionDisconnectedAction:()=>zr,sessionExpiringAction:()=>Jr,sessionReconnectingAction:()=>Hr,socketClosedAction:()=>$r,socketErrorAction:()=>qr,socketMessageAction:()=>Fr});var Pr={};function Or(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error("prepareAction did not return an object");return Rt(Rt({type:e,payload:n.payload},"meta"in n&&{meta:n.meta}),"error"in n&&{error:n.error})}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>t.type===e,r}Lt(Pr,{configureStore:()=>Rr,createAction:()=>Or}),Dt(Pr,N);var Ar="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 Rr(e){const t=function(){return[]},{reducer:r,middleware:n=t(),devTools:o=!0,preloadedState:s,enhancers:i}=e||{};let a;if("function"==typeof r)a=r;else{if(!function(e){if("object"!=typeof e||null===e)return!1;let t=Object.getPrototypeOf(e);if(null===t)return!0;let r=t;for(;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return t===r}(r))throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');a=R(r)}let c=n;"function"==typeof c&&(c=c(t));const d=L(...c);let u=j;o&&(u=Ar(Rt({trace:!1},"object"==typeof o&&o)));let l=[d];return Array.isArray(i)?l=[d,...i]:"function"==typeof i&&(l=i(l)),A(a,s,u(...l))}var xr=Or("swSdk/init"),jr=Or("swSdk/destroy"),Lr=Or("swSdk/closeConnection"),Nr=Or("swSdk/reauth"),Dr=Or("swSdk/executeRequest"),Wr=Or("auth/error"),Vr=Or("auth/success"),Ur=Or("auth/expiring"),$r=Or("socket/closed"),qr=Or("socket/error"),Fr=Or("socket/message"),Br=Or("session.connected"),zr=Or("session.disconnected"),Hr=Or("session.reconnecting"),Qr=Or("session.auth_error"),Jr=Or("session.expiring"),Kr=(e,t)=>`${t.type}/${e}`,Gr=(e,t)=>xt(Rt({},t),{type:Kr(e,t)}),Xr=(e,t)=>Kr(e,t),Yr=Or("compound_event:attach");function Zr(e){const t={},r=[];let n;const o={addCase(e,r){const n="string"==typeof e?e:e.type;if(n in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[n]=r,o},addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),o),addDefaultCase:e=>(n=e,o)};return e(o),[t,r,n]}var en=({name:e="",initialState:t,reducers:r,extraReducers:n})=>function(e){const{name:t}=e;if(!t)throw new Error("`name` is a required option for createSlice");const r=e.initialState,n=e.reducers||{},o=Object.keys(n),s={},i={},a={};function c(){const[t={},n=[],o]="function"==typeof e.extraReducers?Zr(e.extraReducers):[e.extraReducers],s=Rt(Rt({},t),i);return function(e,t,r=[],n){let o,[s,i,a]="function"==typeof t?Zr(t):[t,r,n];function c(e=o(),t){let r=[s[t.type],...i.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===r.filter((e=>!!e)).length&&(r=[a]),r.reduce(((e,r)=>r?r(e,t):e),e)}return o="function"==typeof e?()=>e():()=>e,c.getInitialState=o,c}(r,s,n,o)}let d;return o.forEach((e=>{const r=n[e],o=`${t}/${e}`;let c,d;"reducer"in r?(c=r.reducer,d=r.prepare):c=r,s[e]=c,i[o]=c,a[e]=d?Or(o,d):Or(o)})),{name:t,reducer:(e,t)=>(d||(d=c()),d(e,t)),actions:a,caseReducers:s,getInitialState:()=>(d||(d=c()),d.getInitialState())}}({name:e,initialState:t,reducers:r,extraReducers:e=>{e.addCase(jr.type,(()=>t)),"function"==typeof n&&n(e)}}),tn=en({name:"session",initialState:{protocol:"",iceServers:[],authStatus:"unknown",authState:void 0,authError:void 0,authCount:0},reducers:{connected:(e,{payload:t})=>{var r,n;return xt(Rt({},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!=(n=null==t?void 0:t.ice_servers)?n:[]})},authStatus:(e,{payload:t})=>xt(Rt({},e),{authStatus:t})},extraReducers:e=>{e.addCase(Wr.type,((e,{payload:t})=>xt(Rt({},e),{authStatus:"unauthorized",authError:t.error})))}}),{actions:rn,reducer:nn}=tn,on=Symbol("BaseSession"),sn={};Lt(sn,{authErrorAction:()=>Wr,authExpiringAction:()=>Ur,authSuccessAction:()=>Vr,closeConnectionAction:()=>Lr,compoundEventAttachAction:()=>Yr,configureStore:()=>zn,connect:()=>Bn,createAction:()=>Or,createCatchableSaga:()=>yn,createRestartableSaga:()=>gn,destroyAction:()=>jr,executeAction:()=>Dr,getCustomSagaActionType:()=>Xr,initAction:()=>xr,makeCustomSagaAction:()=>Gr,reauthAction:()=>Nr,sessionAuthErrorAction:()=>Qr,sessionConnectedAction:()=>Br,sessionDisconnectedAction:()=>zr,sessionExpiringAction:()=>Jr,sessionReconnectingAction:()=>Hr,socketClosedAction:()=>$r,socketErrorAction:()=>qr,socketMessageAction:()=>Fr});var an=({state:e,payload:t,componentId:r,key:n,requestId:o})=>xt(Rt({},e),r in e.byId?{byId:xt(Rt({},e.byId),{[r]:xt(Rt({},e.byId[r]),{[n]:xt(Rt({},e.byId[r][n]),{[o]:t})})})}:{byId:xt(Rt({},e.byId),{[r]:{id:r,[n]:{[o]:t}}})}),cn=en({name:"components",initialState:{byId:{}},reducers:{upsert:(e,{payload:t})=>xt(Rt({},e),t.id in e.byId?{byId:xt(Rt({},e.byId),{[t.id]:Rt(Rt({},e.byId[t.id]),t)})}:{byId:xt(Rt({},e.byId),{[t.id]:t})}),executeSuccess:(e,{payload:t})=>{const{componentId:r,requestId:n,response:o}=t;return an({componentId:r,requestId:n,state:e,key:"responses",payload:o})},executeFailure:(e,{payload:t})=>{const{componentId:r,requestId:n,error:o,action:s}=t;return an({componentId:r,requestId:n,state:e,key:"errors",payload:{action:s,jsonrpc:o}})},cleanup:(e,{payload:t})=>xt(Rt({},e),{byId:Object.entries(e.byId).reduce(((e,[r,n])=>(t.ids.includes(r)||(e[r]=n),e)),{})})}}),{actions:dn,reducer:un}=cn,ln={queue:[]},hn=en({name:"executeQueue",initialState:ln,reducers:{add:(e,{payload:t})=>xt(Rt({},e),{queue:e.queue.concat(t)}),clean:()=>ln}}),{actions:pn,reducer:mn}=hn,fn=(0,Pr.combineReducers)({components:un,session:nn,executeQueue:mn});Lt({},{createCatchableSaga:()=>yn,createRestartableSaga:()=>gn});var gn=e=>function*(){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];Ae(Ne.apply(void 0,[e].concat(r)))}((function*(){for(;;)try{Gt().debug("Run a restartable saga"),yield Le(e),Gt().debug("One of the restartable saga has ended. Restarting..")}catch(e){Gt().error("Restartable Saga Error",e)}}))},vn=e=>Gt().error("Catchable Saga Error",e),yn=(e,t=vn)=>function*(...r){try{yield Le(e,...r)}catch(e){t(e)}},bn={};Lt(bn,{getAuthError:()=>kn,getAuthState:()=>En,getAuthStatus:()=>Sn,getIceServers:()=>_n,getSession:()=>wn});var _n=({session:e})=>{var t;return null!=(t=null==e?void 0:e.iceServers)?t:[]},wn=e=>e.session,Sn=({session:e})=>e.authStatus,kn=({session:e})=>e.authError,En=({session:e})=>e.authState,Cn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},Tn=e=>{const t=(({components:e})=>e.byId)(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r};function*In(e){function*t(t){if("authorized"!==(yield De(Sn)))return;const{componentId:r,requestId:n,method:o,params:s}=t.payload;try{const i=(({method:e,params:t})=>fr({method:e,params:t}))({id:n,method:o,params:s}),a=yield Le(e.execute,i);r&&n&&(yield xe(dn.executeSuccess({componentId:r,requestId:n,response:a})))}catch(e){Gt().warn("worker error",r,JSON.stringify(e)),r&&n&&(yield xe(dn.executeFailure({componentId:r,requestId:n,action:t,error:e})))}finally{if((yield Oe("CANCELLED",{}))&&r&&n){const e={jsonrpc:"2.0",id:n,error:{code:-32600,message:"Cancelled task"}};Gt().debug("executeActionWorker cancelled",{requestId:n,componentId:r,error:e}),yield xe(dn.executeFailure({componentId:r,requestId:n,action:t,error:e}))}}}for(;;){const e=yield Re(Dr.type);yield Ne(t,e)}}function*Mn({session:e,sessionChannel:t,pubSubChannel:r,swEventChannel:n}){function*o({jsonrpc:t,nodeId:r}){var n,o;const{id:s,method:i,params:a={}}=t;switch(i){case"verto.media":{const e={id:a.callID,state:"early",remoteSDP:a.sdp,nodeId:r};yield xe(dn.upsert(e)),yield xe(Dr({method:"video.message",params:{message:Ir(s,i),node_id:r}}));break}case"verto.answer":{const e={id:a.callID,state:"active",nodeId:r};(null==a?void 0:a.sdp)&&(e.remoteSDP=a.sdp),yield xe(dn.upsert(e)),yield xe(Dr({method:"video.message",params:{message:Ir(s,i),node_id:r}}));break}case"verto.bye":{const e={id:a.callID,state:"hangup",nodeId:r,byeCause:null!=(n=null==a?void 0:a.cause)?n:"",byeCauseCode:null!=(o=null==a?void 0:a.causeCode)?o:0,redirectDestination:null==a?void 0:a.redirectDestination};yield xe(dn.upsert(e)),yield xe(Dr({method:"video.message",params:{message:Ir(s,i),node_id:r}}));break}case"verto.ping":yield xe(Dr({method:"video.message",params:{message:Tr(a),node_id:r}}));break;case"verto.punt":return e.disconnect();case"verto.mediaParams":{const{callID:e,mediaParams:t={}}=a;if(!e){Gt().debug("Invalid mediaParams event",a);break}const r={id:e};(null==t?void 0:t.video)&&(r.videoConstraints=t.video),(null==t?void 0:t.audio)&&(r.audioConstraints=t.audio),yield xe(dn.upsert(r));break}case"verto.info":return Gt().debug("Verto Info",a);case"verto.clientReady":return Gt().debug("Verto ClientReady",a);case"verto.announce":return Gt().debug("Verto Announce",a);default:return Gt().debug(`Unknown Verto method: ${i}`,a)}}function*s(e){switch(e.event_type){case"video.member.updated":return;case"video.room.subscribed":yield xe(dn.upsert({id:e.params.call_id,roomId:e.params.room_session.room_id,roomSessionId:e.params.room_session.id,memberId:e.params.member_id,previewUrl:e.params.room_session.preview_url})),yield xe(r,{type:"video.room.joined",payload:e.params});break;case"video.member.joined":{const{member:t}=e.params;(null==t?void 0:t.parent_id)&&(yield De(Cn,t.parent_id))&&(yield xe(dn.upsert({id:t.id,roomId:e.params.room_id,roomSessionId:e.params.room_session_id,memberId:t.id})));break}case"video.member.talking":{const{member:t}=e.params;if("talking"in t){const n=t.talking?"started":"ended";yield xe(r,{type:`video.member.talking.${n}`,payload:e.params});const o=t.talking?"start":"stop";yield xe(r,{type:`video.member.talking.${o}`,payload:e.params})}break}}yield xe(r,{type:e.event_type,payload:e.params})}function*i(e){yield xe(n,(e=>{const{event_type:t,params:r}=e;return"queuing.relay.tasks"===t?{type:t,payload:e}:{type:t,payload:r}})(e)),(e=>"webrtc.message"===(null==e?void 0:e.event_type))(e)?yield Ne(o,{jsonrpc:e.params,nodeId:e.node_id}):(e=>{var t;return!!(null==(t=null==e?void 0:e.event_type)?void 0:t.startsWith("video."))})(e)?yield Ne(s,e):yield xe({type:e.event_type,payload:e})}const a=yn((function*(e){if(e.type!==Fr.type)return void(yield xe(e));const{method:t,params:r}=e.payload;switch(t){case"signalwire.event":yield Ne(i,r);break;default:return Gt().debug(`Unknown message: ${t}`,e)}}),(e=>{Gt().error("Channel Error",e)}));for(;;)try{for(;;){const e=yield Re(t);yield Ne(a,e)}}catch(e){Gt().error("sessionChannelWorker error:",e)}finally{Gt().debug("sessionChannelWorker finally")}}function Pn(e){return function(t,r){void 0===r&&(r=Ce);var n,o,s=!1,i=tt(r),a=function(){s||(s=!0,Y(n)&&n(),i.close())};return n=he((o=function(e){et(e)?a():i.put(e)},e.dispatch=e=>{o(e)},n=()=>{Gt().debug("sessionChannel unsubscribe"),e.disconnect()})),s&&n(),{take:i.take,flush:i.flush,close:a}}()}var On=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.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*An({pubSubChannel:e,emitter:t}){for(;;){const r=yield Re(e,"*"),{type:n,payload:o}=r;try{const e=On(r);$t.includes(n)&&t.emit(n,o),Gt().trace("Emit:",rr({namespace:e,event:n})),t.emit(rr({namespace:e,event:n}),o)}catch(e){Gt().error(e)}}}var Rn=({executeQueue:e})=>e;function*xn(){function*e(e){"authorized"!==(yield De(Sn))&&(yield xe(pn.add(e.payload)))}for(;;){const t=yield Re(Dr.type);yield Ne(e,t)}}function*jn(){const{queue:e}=yield De(Rn);for(const t of e)yield xe(Dr(t));yield xe(pn.clean())}var Ln=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Wt(this,"name","AuthError"),Object.setPrototypeOf(this,Ln.prototype)}};function*Nn(){const e=yield De(Tn);e.length&&(yield xe(dn.cleanup({ids:e})))}function*Dn(){for(;;)yield We(36e5),yield Ne(Nn)}function*Wn({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Le(Pn,o),i=r.pubSubChannel,a=r.swEventChannel;let c=[];if(null==(n=t.workers)?void 0:n.length)try{const e=t.workers.map((e=>Le(gn(e))));c=yield function(e){var t=Oe("ALL",e);return t.combinator=!0,t}(e)}catch(e){Gt().error("Error running custom workers",e)}yield Ne(Mn,{session:o,sessionChannel:s,pubSubChannel:i,swEventChannel:a}),yield Ne($n,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const d=yield Ne(Dn);o.connect(),yield Re(jr.type),null==d||d.cancel(),i.close(),s.close(),a.close(),c.forEach((e=>e.cancel()))}function*Vn({session:e,sessionChannel:t,pubSubChannel:r}){Gt().debug("socketClosedWorker",e.status),"reconnecting"===e.status?(yield xe(r,Hr()),yield We(2e3*Math.random()),yield Le(e.connect)):"disconnected"===e.status?(yield xe(r,zr()),t.close()):Gt().warn("Unhandled Session Status",e.status)}function*Un({session:e,token:t,pubSubChannel:r}){try{e.reauthenticate&&(e.token=t,yield Le(e.reauthenticate),yield xe(r,Br()))}catch(e){Gt().error("Reauthenticate Error",e),yield xe(Wr({error:e}))}}function*$n(e){for(;;){const t=yield Re([Vr.type,Wr.type,Ur.type,qr.type,$r.type,Nr.type]);switch(Gt().debug("sessionStatusWatcher",t.type,t.payload),t.type){case Vr.type:yield Ne(qn,e);break;case Wr.type:yield Ne(Fn,{action:t,userOptions:e.userOptions,pubSubChannel:e.pubSubChannel});break;case Ur.type:yield xe(e.pubSubChannel,Jr());break;case qr.type:break;case $r.type:yield Ne(Vn,e);break;case Nr.type:yield Ne(Un,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*qn(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ne(An,{pubSubChannel:r,emitter:n.emitter}),s=yield Ne(In,t);yield xe(rn.connected(t.rpcConnectResult)),yield xe(r,Br());const i=yield Ne(jn);yield Re(Lr.type),o.cancel(),s.cancel(),i.cancel()}function*Fn(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new Ln(o.code,o.message):new Error("Unauthorized"),i=yield Ne(An,{pubSubChannel:t,emitter:r.emitter});throw yield xe(t,Qr(s)),yield Re(zr),i.cancel(),s}var Bn=e=>{const{componentListeners:t={},sessionListeners:r={},store:n,Component:o,customSagas:s=[]}=e,i=Object.keys(t),a=Object.keys(r);return e=>{const c=new o(xt(Rt({},e),{store:n})),d=new Map;let u=!0;const l=n.subscribe((()=>{const e=n.getState(),o=Cn(e,c.__uuid)||{};for(const e of i){if(!1===u)return;const r=`${c.__uuid}.${e}`,n=d.get(r),s=o[e];if(void 0!==s&&n!==s){d.set(r,s);const n=t[e];"string"==typeof n?c[n](o):n(o)}}const s=wn(e);for(const e of a){if(!1===u)return;const t=`session.${e}`,n=d.get(t),o=s[e];if(void 0!==o&&n!==o){d.set(t,o);const n=r[e];"string"==typeof n?c[n](s):"function"==typeof n&&n(s)}}})),h=null==s?void 0:s.map((e=>n.runSaga(e,{instance:c,runSaga:n.runSaga})));return c.destroyer=()=>{u=!1,l(),d.clear(),(null==h?void 0:h.length)&&h.forEach((e=>e.cancel()))},c}};Dt(sn,Pr);var zn=e=>{var t;const{userOptions:r,SessionConstructor:n,preloadedState:o={},runSagaMiddleware:s=!0}=e,i=_t(),a={pubSubChannel:rt(),swEventChannel:rt()},c=Rr({devTools:null==(t=null==r?void 0:r.devTools)||t,reducer:fn,preloadedState:o,middleware:e=>e().concat(i)});if(s){const e=(e=>function*({userOptions:t,channels:r}){t.logger&&(zt=t.logger),t.debug&&(e=>{null!=e?Object.assign(Qt,e):Qt={}})(t.debug),yield Ne(xn),yield Re(xr.type);try{yield Le(Wn,xt(Rt({},e),{userOptions:t,channels:r}))}catch(e){return void Gt().error("RootSaga Error:",e)}})({SessionConstructor:n});i.run(e,{userOptions:r,channels:a})}return xt(Rt({},c),{runSaga:(e,t)=>i.run(e,xt(Rt({},t),{channels:a}))})},Hn=e=>e,Qn=Symbol("BaseComponent"),Jn=class{constructor(e){this.options=e,Wt(this,"__sw_symbol",Qn),Wt(this,"uuid",_()),Wt(this,"_proxyFactoryCache",new WeakMap),Wt(this,"_eventsPrefix",""),Wt(this,"_eventsRegisterQueue",new Set),Wt(this,"_eventsEmitQueue",new Set),Wt(this,"_eventsNamespace"),Wt(this,"_eventsTransformsCache",new Map),Wt(this,"_requests",new Map),Wt(this,"_customSagaTriggers",new Map),Wt(this,"_destroyer"),Wt(this,"_emitterTransforms",new Map),Wt(this,"_emitterListenersCache",new Map),Wt(this,"_trackedEvents",[]),Wt(this,"_runningWorkers",[]),Wt(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(Yr({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),rr({event:e,namespace:t})}_getPrefixedEvent(e){return!this._eventsPrefix||"string"!=typeof e||e.includes(`${this._eventsPrefix}.`)||dr(e)?e:`${this._eventsPrefix}.${e}`}_getInternalEvent(e){return this._getNamespacedEvent(this._getPrefixedEvent(e))}get logger(){return Gt()}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 n=t.instanceFactory(r);return this._eventsTransformsCache.set(e,n),n}return this._eventsTransformsCache.get(e)}cleanupEventHandlerTransformCache({internalEvent:e,force:t}){const r=this._eventsTransformsCache.get(e),n=this.listenerCount(e);return r&&(t||n<=1)?(r.__uuid!==this.__uuid&&"function"==typeof r.destroy&&r.destroy(),this._eventsTransformsCache.delete(e)):(this.logger.trace("[cleanupEventHandlerTransformCache] Key wasn't cached",e),!1)}getEmitterListenersMapByInternalEventName(e){var t;return null!=(t=this._emitterListenersCache.get(e))?t:new Map}getAndRemoveStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);if(t&&r.has(t)){const n=r.get(t);return r.delete(t),this._emitterListenersCache.set(e,r),n}return t}_createStableEventHandler(e,t){return r=>{const n=this._emitterTransforms.get(e);if(this.logger.trace("Got emitterTransform for",e,n),!n)return t(r);const o=this.runAndCacheEventHandlerTransform({internalEvent:e,transform:n,payload:r});let s;if(this._proxyFactoryCache.has(r))s=this._proxyFactoryCache.get(r);else{const e=this._parseNestedFields(r,n);s=sr({instance:o,payload:r,transformedPayload:e,transform:n}),this._proxyFactoryCache.set(r,s)}return t(s)}}_parseNestedFields(e,t,r=(e=>e),n){if(!t.nestedFieldsToProcess)return t.payloadTransform(e);if(e.__sw_proxy)return e;if(!n){const n=t.payloadTransform(e);return this._parseNestedFields(n,t,r,n)}return Array.isArray(e)?n=e.map(((n,o)=>this._parseNestedFields(r(n),t,r,e[o]))):e&&"object"==typeof e&&Object.entries(e).forEach((([e,o])=>{var s;const i=null==(s=t.nestedFieldsToProcess)?void 0:s[e],a=i?this._emitterTransforms.get(i.eventTransformType):void 0;n[e]=o&&"object"==typeof o?this._parseNestedFields(o,t,(e=>i&&a&&e&&"object"==typeof e?(({transform:e,payload:t})=>{const r=(({transform:e,payload:t})=>{if(!ir.has(e.type)){const r=e.instanceFactory(t);return ir.set(e.type,r),r}return ir.get(e.type)})({transform:e,payload:t}),n=e.payloadTransform(t);return sr({transform:e,payload:t,instance:r,transformedPayload:n})})({transform:a,payload:r(i.processInstancePayload(e))}):e),n[e]):r(o)})),n}getOrCreateStableEventHandler(e,t){const r=this.getEmitterListenersMapByInternalEventName(e);let n=r.get(t);return n||(n=this._createStableEventHandler(e,t),r.set(t,n),this._emitterListenersCache.set(e,r)),n}_trackEvent(e){this._trackedEvents=Array.from(new Set(this._trackedEvents.concat(e)))}_untrackEvent(e){this._trackedEvents=this._trackedEvents.filter((t=>t!==e))}_addListener(e,t,r){this._handleCompoundEvents(e);const n=this._getInternalEvent(e);this._trackEvent(n);const o=r?"once":"on";if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:o,params:[e,t]}),this.emitter;const s=this.getOrCreateStableEventHandler(n,t);return this.logger.trace("Registering event",n),this.emitter[o](n,s)}on(e,t){return this._addListener(e,t)}once(e,t){return this._addListener(e,t,!0)}off(e,t){if(this.shouldAddToQueue())return this.addEventToRegisterQueue({type:"off",params:[e,t]}),this.emitter;const r=this._getInternalEvent(e),n=this.getAndRemoveStableEventHandler(r,t);return this.cleanupEventHandlerTransformCache({internalEvent:r,force:!n}),this.logger.trace("Removing event listener",r),this._untrackEvent(r),this.emitter.off(r,n)}removeAllListeners(e){return this.shouldAddToQueue()?(this.addEventToRegisterQueue({type:"removeAllListeners",params:[e]}),this.emitter):e?this.off(e):(this.eventNames().forEach((e=>{this.off(e)})),this.emitter)}eventNames(){return this._trackedEvents}getSubscriptions(){return hr(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=Hn,transformResolve:n=Hn,transformReject:o=Hn}={transformParams:Hn,transformResolve:Hn,transformReject:Hn}){return new Promise(((s,i)=>{const a=_();this._requests.set(a,{resolve:s,reject:i,transformResolve:n,transformReject:o}),this.store.dispatch(Dr({requestId:a,componentId:this.__uuid,method:e,params:r(t)}))}))}triggerCustomSaga(e){return new Promise(((t,r)=>{const n=_();this._customSagaTriggers.set(n,{resolve:t,reject:r}),this.store.dispatch(Rt({dispatchId:n},Gr(this.__uuid,e)))}))}settleCustomSagaTrigger({dispatchId:e,payload:t,kind:r}){const n=this._customSagaTriggers.get(e);n&&(n[r](t),this._customSagaTriggers.delete(e))}select(e){return e(this.store.getState())}onError(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.errors[r])&&(t.reject(t.transformReject(e.errors[r])),this._requests.delete(r))}))}onSuccess(e){this._requests.forEach(((t,r)=>{void 0!==(null==e?void 0:e.responses[r])&&(t.resolve(t.transformResolve(e.responses[r])),this._requests.delete(r))}))}getStateProperty(e){return this[e]}flushEventsRegisterQueue(){this._eventsRegisterQueue.forEach((e=>{this[e.type](...e.params),this._eventsRegisterQueue.delete(e)}))}flushEventsEmitQueue(){this._eventsEmitQueue.forEach((e=>{const{event:t,args:r}=e;this.emit(t,...r),this._eventsEmitQueue.delete(e)}))}flushEventsQueue(){this.flushEventsRegisterQueue(),this.flushEventsEmitQueue()}_attachListeners(e){"string"==typeof e&&(this._eventsNamespace=e),this.flushEventsQueue()}getCompoundEvents(){return new Map}getEmitterTransforms(){return new Map}get _sessionAuthStatus(){return Sn(this.store.getState())}get _sessionAuthState(){return En(this.store.getState())}_waitUntilSessionAuthorized(){switch(Sn(this.store.getState())){case"authorized":return Promise.resolve(this);case"unknown":case"authorizing":return new Promise(((e,t)=>{const r=this.store.subscribe((()=>{const n=Sn(this.store.getState()),o=kn(this.store.getState());if("authorized"===n)e(this),r();else if("unauthorized"===n){const e=o?new Ln(o.code,o.message):new Error("Unauthorized");t(e),r()}}))}));case"unauthorized":return Promise.reject(new Error("Unauthorized"))}}_setEmitterTransform({event:e,handler:t,local:r}){const n=this._getInternalEvent(e);(r?pr(e):!pr(e)&&this.eventNames().includes(n))&&this._emitterTransforms.set(n,t)}applyEmitterTransforms({local:e=!1}={local:!1}){this.getEmitterTransforms().forEach(((t,r)=>{Array.isArray(r)?r.forEach((r=>{this._setEmitterTransform({event:r,handler:t,local:e})})):this._setEmitterTransform({event:r,handler:t,local:e}),this._emitterTransforms.set(t.type,t)}))}runWorker(e,t){this._workers.has(e)?Gt().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:n}=r,o=jt(r,["worker"]);const s=this.store.runSaga(n,Rt({instance:this,runSaga:this.store.runSaga},o));this._runningWorkers.push(s),this._workers.delete(e)}detachWorkers(){this._runningWorkers.forEach((e=>{e.cancel()})),this._runningWorkers=[]}},Kn=class extends Jn{constructor(e){super(e),this.options=e,this._attachListeners("")}connect(){const e=Sn(this.store.getState());return"unknown"!==e&&"unauthorized"!==e||this.store.dispatch(xr()),this._waitUntilSessionAuthorized()}disconnect(){this.store.dispatch(jr())}},Gn=class extends Jn{constructor(e){super(e),this.options=e,Wt(this,"subscribeMethod","signalwire.subscribe"),Wt(this,"subscribeParams",{}),Wt(this,"_latestExecuteParams"),this.applyEmitterTransforms({local:!0})}shouldExecuteSubscribe(e){return!this._latestExecuteParams||JSON.stringify(e)!==JSON.stringify(this._latestExecuteParams)}async subscribe(){const e=this.getSubscriptions();if(0===e.length)return void this.logger.warn("`subscribe()` was called without any listeners attached.");const t={method:this.subscribeMethod,params:xt(Rt({},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")}},Xn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(Xn).map((e=>`video.member.updated.${e}`));var Yn=Zt(Xn);Object.keys(Yn).map((e=>`member.updated.${e}`));var Zn={};Lt(Zn,{RoomSessionPlaybackAPI:()=>Ro,RoomSessionRecordingAPI:()=>Oo,audioMuteMember:()=>go,audioUnmuteMember:()=>vo,createRoomSessionPlaybackObject:()=>xo,createRoomSessionRecordingObject:()=>Ao,deafMember:()=>_o,getLayouts:()=>no,getMembers:()=>oo,getPlaybacks:()=>po,getRecordings:()=>lo,hideVideoMuted:()=>ao,play:()=>mo,removeAllMembers:()=>Mo,removeMember:()=>Io,setDeaf:()=>So,setHideVideoMuted:()=>uo,setInputSensitivityMember:()=>Co,setInputVolumeMember:()=>ko,setLayout:()=>so,setMemberMeta:()=>Po,setMemberPosition:()=>To,setMeta:()=>fo,setOutputVolumeMember:()=>Eo,setPositions:()=>io,showVideoMuted:()=>co,startRecording:()=>ho,undeafMember:()=>wo,videoMuteMember:()=>yo,videoUnmuteMember:()=>bo});var eo=()=>{},to=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:Rt({room_session_id:this.roomSessionId},r)},t)}}),ro=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=jt(n,["memberId"]);return this.execute({method:e,params:Rt({room_session_id:this.roomSessionId,member_id:o||this.memberId},s)},t)}}),no=to("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),oo=to("video.members.get",{transformResolve:e=>({members:e.members})}),so=to("video.set_layout",{transformResolve:eo}),io=to("video.set_position",{transformResolve:eo}),ao=to("video.hide_video_muted",{transformResolve:eo}),co=to("video.show_video_muted",{transformResolve:eo}),uo={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:eo})}},lo=to("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Zt(e)))})}),ho={value:function(){return new Promise((async e=>{const t=t=>{e(t)};this.on(mr("video.recording.start"),t);try{const e=await this.execute({method:"video.recording.start",params:{room_session_id:this.roomSessionId}});this.emit(mr("video.recording.start"),xt(Rt({},e),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(mr("video.recording.start"),t),e}}))}},po=to("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Zt(e)))})}),mo={value:function(e){return new Promise((async t=>{const r=e=>{t(e)};this.on(mr("video.playback.start"),r);try{const t=await this.execute({method:"video.playback.start",params:Rt({room_session_id:this.roomSessionId},e)});this.emit(mr("video.playback.start"),xt(Rt({},t),{room_session_id:this.roomSessionId}))}catch(e){throw this.off(mr("video.playback.start"),r),e}}))}},fo=to("video.set_meta",{transformResolve:eo,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:jt(t,["room_session_id"])}}}),go=ro("video.member.audio_mute",{transformResolve:eo}),vo=ro("video.member.audio_unmute",{transformResolve:eo}),yo=ro("video.member.video_mute",{transformResolve:eo}),bo=ro("video.member.video_unmute",{transformResolve:eo}),_o=ro("video.member.deaf",{transformResolve:eo}),wo=ro("video.member.undeaf",{transformResolve:eo}),So={value:function(e){return this.execute({method:e?"video.member.deaf":"video.member.undeaf",params:{room_session_id:this.roomSessionId,member_id:this.memberId}},{transformResolve:eo})}},ko=ro("video.member.set_input_volume",{transformResolve:eo}),Eo=ro("video.member.set_output_volume",{transformResolve:eo}),Co=ro("video.member.set_input_sensitivity",{transformResolve:eo}),To=ro("video.member.set_position",{transformResolve:eo}),Io={value:function(e){var t=e,{memberId:r}=t,n=jt(t,["memberId"]);if(!r)throw new TypeError('Invalid or missing "memberId" argument');return this.execute({method:"video.member.remove",params:Rt({room_session_id:this.roomSessionId,member_id:r},n)},{transformResolve:eo})}},Mo={value:function(){return this.execute({method:"video.member.remove",params:{room_session_id:this.roomSessionId,member_id:"all"}},{transformResolve:eo})}},Po=ro("video.member.set_meta",{transformResolve:eo}),Oo=class extends Jn{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")}})}},Ao=e=>Bn({store:e.store,Component:Oo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Ro=class extends Jn{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)}})}},xo=e=>Bn({store:e.store,Component:Ro,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),jo={};Lt(jo,{BaseChatAPI:()=>es,BaseChatConsumer:()=>Zo,ChatMember:()=>Go,ChatMessage:()=>Xo,createBaseChatObject:()=>ts,getMemberState:()=>Fo,getMembers:()=>Uo,getMessages:()=>Vo,publish:()=>Wo,setMemberState:()=>qo});var Lo=()=>{},No=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),Do=(e,t={})=>({value:function(r={}){var n=r,{memberId:o}=n,s=jt(n,["memberId"]);return this.execute({method:e,params:Rt({member_id:o},s)},t)}}),Wo=No("chat.publish",{transformResolve:Lo}),Vo=No("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Zt(e))),cursor:e.cursor})}),Uo=No("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Zt(e)))})}),$o=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 xt(Rt({},e),{channels:t})},qo=Do("chat.member.set_state",{transformResolve:Lo,transformParams:$o}),Fo=Do("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:$o}),Bo={};Lt(Bo,{BasePubSubConsumer:()=>Jo,PubSubMessage:()=>zo,createBasePubSubObject:()=>Ko});var zo=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}},Ho=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Re((e=>e.type.startsWith("chat.")));switch(Gt().debug("pubSubWorker:",t),t.type){case"chat.channel.message":yield xe(e,{type:"chat.message",payload:t.payload});break;default:Gt().warn("[pubSubWorker] Unrecognized Action",t)}}},Qo=e=>e.map((e=>({name:e}))),Jo=class extends Gn{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.runWorker("pubSub",{worker:Ho})}getEmitterTransforms(){return new Map([[["message"],{type:"pubSubMessage",instanceFactory:()=>new zo({}),payloadTransform:e=>{const{channel:t,message:r}=e.params,n=jt(r,["member"]);return Zt(xt(Rt({},n),{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:Qo(r)}}_setSubscribeParams(e){this.subscribeParams=Rt(Rt({},this.subscribeParams),e)}_getSubscribeParams({channels:e}){return Rt({},this._getChannelsParam(e,"subscribe"))}_getUnsubscribeParams({channels:e}){const t=this._getChannelsParam(e,"unsubscribe");return Rt({},t)}async subscribe(e){const t=this._getSubscribeParams({channels:e});return this._setSubscribeParams(t),super.subscribe()}async unsubscribe(e){if("unknown"===this._sessionAuthStatus||"unauthorized"===this._sessionAuthStatus)throw new Error("You must be authenticated to unsubscribe from a channel");const t=this._getUnsubscribeParams({channels:e});return new Promise((async(e,r)=>{const n=this.getSubscriptions();if(n.length>0){const e={method:"chat.unsubscribe",params:xt(Rt({},t),{events:n})};try{await this.execute(e)}catch(e){return r(e)}}else this.logger.warn("`unsubscribe()` was called without any listeners attached.");return e()}))}updateToken(e){return new Promise(((t,r)=>{this.once("session.auth_error",(e=>{r(e)})),this.once("session.connected",(()=>{t()})),this.store.dispatch(Mr.reauthAction({token:e}))}))}publish(e){return this.execute({method:"chat.publish",params:e})}},Ko=e=>Bn({store:e.store,Component:Jo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Go=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:{}}},Xo=class extends zo{get member(){return this.payload.member}},Yo=function*({channels:{pubSubChannel:e}}){for(;;){const t=yield Re((e=>e.type.startsWith("chat.")));switch(Gt().debug("chatWorker:",t),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:Gt().warn("[chatWorker] Unrecognized Action",t)}}},Zo=class extends Jo{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this.runWorker("chat",{worker:Yo})}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:()=>new Xo({}),payloadTransform:e=>{const{channel:t,message:r}=e.params;return Zt(xt(Rt({},r),{channel:t}))}}],[["member.joined","member.left","member.updated"],{type:"chatMember",instanceFactory:e=>{const{member:t}=e.params;return new Go(Zt(t))},payloadTransform:e=>{const{member:t}=e.params;return Zt(t)}}]])}},es=or(Zo,{publish:Wo,getMembers:Uo,getMessages:Vo,setMemberState:qo,getMemberState:Fo}),ts=e=>Bn({store:e.store,Component:es,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),rs={};function*ns(e){const{action:t,memberList:r,channels:{pubSubChannel:n}}=e,o={};t.payload.layout.layers.forEach((e=>{var t;const n=e.member_id;if(!n)return;const s=r.get(n);e.position!==(null==(t=s.member)?void 0:t.current_position)?(as({memberList:r,memberId:n,currentPosition:e.position}),o[n]=!0):o[n]=!1}));for(const[e,t]of r)if(o[e])yield xe(n,{type:"video.member.updated",payload:t});else if(void 0===o[e]){const t=as({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield xe(n,{type:"video.member.updated",payload:t})}}function*os({action:e,channels:t,memberList:r}){var n,o;const s=e.payload.member.id,i=as({memberList:r,memberId:s,currentPosition:null==(o=null==(n=r.get(s))?void 0:n.member)?void 0:o.current_position});if(!i)return;const{member:{updated:a=[]}}=e.payload,c=xt(Rt({},i),{member:Rt(Rt({},i.member),e.payload.member)});r.set(s,c);for(const r of a){const n=`${e.type}.${r}`;yield xe(t.pubSubChannel,{type:n,payload:c})}yield xe(t.pubSubChannel,{type:e.type,payload:c})}Lt(rs,{MEMBER_POSITION_COMPOUND_EVENTS:()=>ss,memberPositionWorker:()=>is,memberUpdatedWorker:()=>os});var ss=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),is=function*({instance:e,channels:t,initialState:r}){if(!r)return;const{swEventChannel:n}=t;let o=cs(r);for(;;){const r=yield Re(n,(t=>("video.member.updated"===t.type||"video.layout.changed"===t.type||"video.member.joined"===t.type||"video.member.left"===t.type)&&On(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":yield Ne(os,{action:r,channels:t,memberList:o,instance:e});break;case"video.member.joined":o.set(r.payload.member.id,r.payload);break;case"video.member.left":o.delete(r.payload.member.id);break;case"video.layout.changed":yield Ne(ns,{action:r,channels:t,memberList:o,instance:e})}}},as=({memberList:e,memberId:t,currentPosition:r})=>{const n=e.get(t);if(!n)return;if(!r)return n;const o=xt(Rt({},n),{member:xt(Rt({},null==n?void 0:n.member),{current_position:r})});return e.set(t,o),o},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},ds=Rt({},bn);const us=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,ls=()=>{if(!us())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},hs=async(e={audio:!0,video:!0})=>{var t;try{const t=ls().getUserMedia(e),r=new Error("Looks like it's not possible to read from your devices");return await cr(t,5e3,r)}catch(r){switch(r.name){case"Error":Gt().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":Gt().error("No media tracks of the type specified were found that satisfy the given constraints.");break;case"NotReadableError":Gt().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":Gt().error(`The constraint: ${r.constraint} cannot be met by the selected device.`),Gt().info("List of available constraints:",gs());break;case"NotAllowedError":Gt().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?Gt().error('Constraints can\'t be empty nor have "video" and "audio" set to false.'):Gt().error("Please check that you are calling this method from a secure context (using HTTPS rather than HTTP).");break;case"SecurityError":Gt().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}},ps=e=>ls().getDisplayMedia(e),ms=()=>ls().enumerateDevices(),fs=async e=>{let t=await ms().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},gs=()=>ls().getSupportedConstraints(),vs=e=>e&&e instanceof MediaStream,ys=()=>"sinkId"in HTMLMediaElement.prototype,bs=async(e,t)=>{if(null!==e)if("string"==typeof t)if(ys())try{return await e.setSinkId(t)}catch(e){throw"SecurityError"===e.name?Gt().error(`You need to use HTTPS for selecting audio output device: ${e}`):Gt().error(`Error: ${e}`),e}else Gt().warn("Browser does not support output device selection.");else Gt().warn(`Invalid speaker deviceId: '${t}'`);else Gt().warn("No HTMLMediaElement to attach the speakerId")},_s=e=>{var t;vs(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(ws))},ws=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},Ss={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},ks=e=>{if(e)return Ss[e]},Es=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 fs(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Gt().warn(`No ${e} devices to check for permissions!`),null)})(ks(e))},Cs=()=>Es("camera"),Ts=()=>Es("microphone"),Is=()=>Es("speaker"),Ms=async(e,t=!1)=>Os(e,t),Ps=(e,t={})=>{const r=[];return e.filter((({deviceId:e,kind:n,groupId:o})=>{var s;if(!e||t.targets&&!(null===(s=t.targets)||void 0===s?void 0:s.includes(n)))return!1;if(!o)return!0;const i=`${n}-${o}`,a=!(null==t?void 0:t.excludeDefault)||"default"!==e;return!(r.includes(i)||!a||(r.push(i),0))}))},Os=async(e,t=!1)=>{let r;if(!1===await Es(e)){const t={audio:!(n=e)||"all"===n||"microphone"===n||"speaker"===n,video:!n||"all"===n||"camera"===n};r=await hs(t)}var n;const o=await fs(ks(e));return r&&_s(r),!0===t?o:Ps(o)},As=async(e,t,r)=>{const n=await Os(r,!0);for(let r=0;r<n.length;r++){const{deviceId:o,label:s}=n[r];if(e===o||t===s)return o}return null},Rs=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},xs={camera:Cs,microphone:Ts,speaker:Is},js=["camera","microphone","speaker"],Ls=`Allowed targets are: '${js.join("', '")}'`,Ns={speaker:ys},Ds=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:js).filter((e=>!!js.includes(e)||(Gt().warn(`We'll ignore the "${e}" target as it is not allowed. ${Ls}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${Ls}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>xs[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in Ns)||(null===(o=Ns[s])||void 0===o?void 0:o.call(Ns))?"supported":"unsupported"].push([s,!!r]),e}),{supported:[],unsupported:[]})})({targets:r});if(n.unsupported.length>0&&r.length===n.unsupported.length)throw new Error(`The platform doesn't support "${r.join(", ")}" as target/s, which means it's not possible to watch for changes on those devices.`);if(n.supported.every((([e,t])=>!t)))throw new Error("You must ask the user for permissions before being able to listen for device changes. Try calling getUserMedia() before calling `createDeviceWatcher()`.");let o=[];const s=n.supported.reduce(((e,[t,r])=>(r?e.push(t):o.push(t),e)),[]);if(s.length!==r.length){const e=n.unsupported.length>0?`The platform doesn't support "${n.unsupported.map((([e])=>e)).join(", ")}" as target/s, which means it's not possible to watch for changes on those devices. `:"",t=o.length>0?`The user hasn't granted permissions for the following targets: ${o.join(", ")}. `:"";Gt().warn(`${e}${t}We'll be watching for the following targets instead: "${s.join(", ")}"`)}return Gt().debug(`Watching these targets: "${s.join(", ")}"`),s})({targets:e.targets}),r=new St,n=await ms(),o=null==t?void 0:t.reduce(((e,t)=>{const r=ks(t);return r&&e.push(r),e}),[]);let s=Ps(n,{excludeDefault:!0,targets:o});return ls().addEventListener("devicechange",(async()=>{const e=await ms(),t=s,n=Ps(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=Rs(e),n=Rs(e),o=[];Gt().debug("[_getDeviceListDiff] <- oldDevices",e),Gt().debug("[_getDeviceListDiff] -> newDevices",t);const s=t.filter((e=>{const t=e.deviceId,s=r.get(t);return s&&(n.delete(t),e.label!==s.label&&o.push(e)),void 0===s}));return{updated:o.map((e=>({type:"updated",payload:e}))),removed:Array.from(n,(([e,t])=>t)).map((e=>({type:"removed",payload:e}))),added:s.map((e=>({type:"added",payload:e})))}})(t,n),a=i.added.length>0,c=i.removed.length>0,d=i.updated.length>0;(a||c||d)&&r.emit("changed",{changes:i,devices:n}),a&&r.emit("added",{changes:i.added,devices:n}),c&&r.emit("removed",{changes:i.removed,devices:n}),d&&r.emit("updated",{changes:i.updated,devices:n})})),r},Ws=e=>"function"==typeof(null==e?void 0:e.getTracks),Vs=e=>{Gt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)return hs(e)},Us=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await As(r,n,"microphone").catch((e=>null));e&&("boolean"==typeof t&&(t={}),t.deviceId={exact:e})}let{video:o=!1,camId:s}=e;const{camLabel:i=""}=e;if(s){const e=await As(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},$s=e=>/^m=audio/.test(e),qs=e=>/^m=video/.test(e),Fs=e=>{const t=e.split("\r\n"),r=t.findIndex((e=>/^a=rtpmap/.test(e)&&/opus\/48000/.test(e)));if(r<0)return e;const n=(e=>{const t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),r=e.match(t);return r&&2==r.length?r[1]:null})(t[r]),o=new RegExp(`a=fmtp:${n}`),s=t.findIndex((e=>o.test(e)));return s>=0?/stereo=1;/.test(t[s])||(t[s]+="; stereo=1; sprop-stereo=1"):t[r]+=`\r\na=fmtp:${n} stereo=1; sprop-stereo=1`,t.join("\r\n")};class Bs{constructor(e,t){this.call=e,this.type=t,this._negotiating=!1,this.options=e.options,this.logger.debug("New Peer with type:",this.type,"Options:",this.options),this._onIce=this._onIce.bind(this)}get logger(){return Gt()}get isOffer(){return"offer"===this.type}get isAnswer(){return"answer"===this.type}get isSimulcast(){return!0===this.options.simulcast}get isSfu(){return!0===this.options.sfu}get localVideoTrack(){const e=this._getSenderByKind("video");return(null==e?void 0:e.track)||null}get localAudioTrack(){const e=this._getSenderByKind("audio");return(null==e?void 0:e.track)||null}get hasAudioSender(){return!!this._getSenderByKind("audio")}get hasVideoSender(){return!!this._getSenderByKind("video")}get hasAudioReceiver(){return!!this._getReceiverByKind("audio")}get hasVideoReceiver(){return!!this._getReceiverByKind("video")}get config(){const{rtcPeerConfig:e={}}=this.options,t=Object.assign({bundlePolicy:"max-compat",iceServers:this.call.iceServers,sdpSemantics:"unified-plan"},e);return this.logger.debug("RTC config",t),t}get localSdp(){var e,t;return null===(t=null===(e=this.instance)||void 0===e?void 0:e.localDescription)||void 0===t?void 0:t.sdp}stopTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to stop.`);n.track&&(ws(n.track),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.removeTrack(n.track))}catch(t){this.logger.error("RTCPeer stopTrackSender error",e,t)}}async restoreTrackSender(e){var t,r;try{const n=this._getSenderByKind(e);if(!n)return this.logger.info(`There is not a '${e}' sender to restore.`);if(n.track&&"ended"!==n.track.readyState)return this.logger.info(`There is already an active ${e} track.`);const o=await Us(this.options),s=await Vs({[e]:o[e]});if(s&&vs(s)){const o=s.getTracks().find((t=>t.kind===e));o&&(await n.replaceTrack(o),null===(r=null===(t=this.options)||void 0===t?void 0:t.localStream)||void 0===r||r.addTrack(o))}}catch(t){this.logger.error("RTCPeer restoreTrackSender error",e,t)}}getDeviceId(e){try{const t=this._getSenderByKind(e);if(!t||!t.track)return null;const{deviceId:r=null}=t.track.getSettings();return r}catch(t){return this.logger.error("RTCPeer getDeviceId error",e,t),null}}getTrackSettings(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.getSettings():null}catch(t){return this.logger.error("RTCPeer getTrackSettings error",e,t),null}}getDeviceLabel(e){try{const t=this._getSenderByKind(e);return t&&t.track?t.track.label:null}catch(t){return this.logger.error("RTCPeer getDeviceLabel error",e,t),null}}restartIceWithRelayOnly(){try{const e=this.instance.getConfiguration();if("relay"===e.iceTransportPolicy)return this.logger.warn("RTCPeer already with iceTransportPolicy relay only");const t=Object.assign(Object.assign({},e),{iceTransportPolicy:"relay"});this.instance.setConfiguration(t),this.instance.restartIce()}catch(e){this.logger.error("RTCPeer restartIce error",e)}}async applyMediaConstraints(e,t){try{const r=this._getSenderByKind(e);if(!r||!r.track)return this.logger.info("No sender to apply constraints",e,t);if("live"===r.track.readyState){const n=Object.assign(Object.assign({},r.track.getConstraints()),t),o=this.getDeviceId(e);o&&!this.options.screenShare&&(n.deviceId={exact:o}),this.logger.info(`Apply ${e} constraints`,this.call.id,n),await r.track.applyConstraints(n)}}catch(r){this.logger.error("Error applying constraints",e,t)}}_getSenderByKind(e){return this.instance.getSenders?this.instance.getSenders().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getSenders() not available."),null)}_getReceiverByKind(e){return this.instance.getReceivers?this.instance.getReceivers().find((({track:t})=>t&&t.kind===e)):(this.logger.warn("RTCPeerConnection.getReceivers() not available."),null)}async startNegotiation(e=!1){var t,r;if(this._negotiating)return this.logger.warn("Skip twice onnegotiationneeded!");this._negotiating=!0;try{if((this.options.additionalDevice||this.options.screenShare)&&(null===(r=(t=this.instance).getTransceivers)||void 0===r||r.call(t).forEach((e=>{e.direction="sendonly"}))),this.instance.removeEventListener("icecandidate",this._onIce),this.instance.addEventListener("icecandidate",this._onIce),this.isOffer){this.logger.debug("Trying to generate offer");const e=await this.instance.createOffer({voiceActivityDetection:!1});await this._setLocalDescription(e)}if(this.isAnswer){this.logger.debug("Trying to generate answer"),await this._setRemoteDescription({sdp:this.options.remoteSdp,type:"offer"});const e=await this.instance.createAnswer({voiceActivityDetection:!1});await this._setLocalDescription(e)}e&&this._sdpReady()}catch(e){this.logger.error(`Error creating ${this.type}:`,e)}}async onRemoteSdp(e){try{const t=this.isOffer?"answer":"offer";await this._setRemoteDescription({sdp:e,type:t}),this.isOffer&&this._resolveStartMethod()}catch(e){this.logger.error(`Error handling remote SDP on call ${this.call.id}:`,e),this.call.hangup(),this._rejectStartMethod(e)}}_setupRTCPeerConnection(){this.instance||(this.instance=new window.RTCPeerConnection(this.config),this._attachListeners())}async start(){return new Promise((async(e,t)=>{this._resolveStartMethod=e,this._rejectStartMethod=t;try{this.options.localStream=await this._retrieveLocalStream()}catch(e){return this._rejectStartMethod(e),this.call.setState("hangup")}this._setupRTCPeerConnection();const{localStream:r=null}=this.options;if(r&&vs(r)){const e=r.getAudioTracks();this.logger.debug("Local audio tracks: ",e);const t=r.getVideoTracks();if(this.logger.debug("Local video tracks: ",t),this.isOffer&&"function"==typeof this.instance.addTransceiver){e.forEach((e=>{this.instance.addTransceiver(e,{direction:"sendrecv",streams:[r]})}));const n={direction:"sendrecv",streams:[r]};if(this.isSimulcast&&(n.sendEncodings=["0","1","2"].map((e=>({active:!0,rid:e,scaleResolutionDownBy:6*Number(e)||1})))),this.logger.debug("Applying video transceiverParams",n),t.forEach((e=>{this.instance.addTransceiver(e,n)})),this.isSfu){const{msStreamsNumber:e=5}=this.options;this.logger.debug("Add ",e,"recvonly MS Streams"),n.direction="recvonly";for(let t=0;t<Number(e);t++)this.instance.addTransceiver("video",n)}}else"function"==typeof this.instance.addTrack?(e.forEach((e=>{this.instance.addTrack(e,r)})),t.forEach((e=>{this.instance.addTrack(e,r)}))):this.instance.addStream(r)}this.isOffer?(this.options.negotiateAudio&&this._checkMediaToNegotiate("audio"),this.options.negotiateVideo&&this._checkMediaToNegotiate("video")):this.startNegotiation()}))}_checkMediaToNegotiate(e){if(!this._getSenderByKind(e)&&this.instance.addTransceiver){const t=this.instance.addTransceiver(e,{direction:"recvonly"});this.logger.debug("Add transceiver",e,t)}}async _sdpReady(){if(clearTimeout(this._iceTimeout),this._iceTimeout=null,!this.instance.localDescription)return;const{sdp:e,type:t}=this.instance.localDescription;if(-1===e.indexOf("candidate"))return this.logger.debug("No candidate - retry \n"),void this.startNegotiation(!0);this.logger.debug("LOCAL SDP \n",`Type: ${t}`,"\n\n",e),this.instance.removeEventListener("icecandidate",this._onIce);try{await this.call.onLocalSDPReady(this.instance.localDescription)}catch(e){this._rejectStartMethod(e)}}_onIce(e){this._iceTimeout||(this._iceTimeout=setTimeout((()=>this._sdpReady()),this.options.iceGatheringTimeout)),e.candidate?(this.logger.debug("IceCandidate:",e.candidate),this.call.emit("icecandidate",e)):this._sdpReady()}_setLocalDescription(e){const{useStereo:t,googleMaxBitrate:r,googleMinBitrate:n,googleStartBitrate:o}=this.options;return e.sdp&&t&&(e.sdp=Fs(e.sdp)),e.sdp&&r&&n&&o&&(e.sdp=((e,t,r,n)=>{const o=e.split("\r\n");return o.forEach(((e,s)=>{/^a=fmtp:\d*/.test(e)?o[s]+=`;x-google-max-bitrate=${t};x-google-min-bitrate=${r};x-google-start-bitrate=${n}`:/^a=mid:(1|video)/.test(e)&&(o[s]+=`\r\nb=AS:${t}`)})),o.join("\r\n")})(e.sdp,r,n,o)),this.logger.debug("LOCAL SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setLocalDescription(e)}_setRemoteDescription(e){e.sdp&&this.options.useStereo&&(e.sdp=Fs(e.sdp)),e.sdp&&this.instance.localDescription&&(e.sdp=((e,t)=>{const r="\r\n",n=this.instance.localDescription.sdp.split(r);if(n.findIndex($s)<n.findIndex(qs))return e;const o=e.split(r),s=o.findIndex($s),i=o.findIndex(qs),a=o.slice(s,i),c=o.slice(i,o.length-1);return[...o.slice(0,s),...c,...a,""].join(r)})(e.sdp));const t=e;return this.logger.debug("REMOTE SDP \n",`Type: ${e.type}`,"\n\n",e.sdp),this.instance.setRemoteDescription(t)}async _retrieveLocalStream(){if(vs(this.options.localStream))return this.options.localStream;const e=await Us(this.options);return Vs(e)}_attachListeners(){this.instance.addEventListener("signalingstatechange",(()=>{switch(this.logger.debug("signalingState:",this.instance.signalingState),this.instance.signalingState){case"stable":this._negotiating=!1;break;case"have-local-offer":"complete"===this.instance.iceGatheringState&&this._sdpReady();break;case"closed":delete this.instance;break;default:this._negotiating=!0}})),this.instance.addEventListener("negotiationneeded",(()=>{this.logger.debug("Negotiation needed event"),this.startNegotiation()})),this.instance.addEventListener("iceconnectionstatechange",(()=>{this.logger.debug("iceConnectionState:",this.instance.iceConnectionState)})),this.instance.addEventListener("icegatheringstatechange",(()=>{this.logger.debug("iceGatheringState:",this.instance.iceGatheringState)})),this.instance.addEventListener("track",(e=>{this.call.emit("track",e),this.options.remoteStream=e.streams[0]})),this.instance.addEventListener("addstream",(e=>{e.stream&&(this.options.remoteStream=e.stream)}))}}const zs={destinationNumber:"room",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:!0,video:{aspectRatio:16/9},useStereo:!1,attach:!1,screenShare:!1,additionalDevice:!1,userVariables:{},requestTimeout:1e4,autoApplyMediaParams:!0,iceGatheringTimeout:2e3};class Hs extends Jn{constructor(e){super(e),this.nodeId="",this.gotEarly=!1,this.doReinvite=!1,this._eventsPrefix="video",this.state="new",this.prevState="new",this.options=Object.assign(Object.assign({},zs),e),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._memberId}get previewUrl(){return this._previewUrl}get roomId(){return this._roomId}get roomSessionId(){return this._roomSessionId}get localStream(){return this.options.localStream}get remoteStream(){return this.options.remoteStream}get iceServers(){var e,t;return null!==(t=null===(e=this.options)||void 0===e?void 0:e.iceServers)&&void 0!==t?t:this.select(ds.getIceServers)}get messagePayload(){const{destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c,pingSupported:d}=this.options;return{sessid:this.options.sessionid,dialogParams:{id:this.__uuid,destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c,pingSupported:d}}}get cameraId(){return this.peer?this.peer.getDeviceId("video"):null}get cameraLabel(){return this.peer?this.peer.getDeviceLabel("video"):null}get microphoneId(){return this.peer?this.peer.getDeviceId("audio"):null}get microphoneLabel(){return this.peer?this.peer.getDeviceLabel("audio"):null}get withAudio(){return!!this.remoteStream&&this.remoteStream.getAudioTracks().length>0}get withVideo(){return!!this.remoteStream&&this.remoteStream.getVideoTracks().length>0}get localVideoTrack(){return this.peer.localVideoTrack}get localAudioTrack(){return this.peer.localAudioTrack}vertoExecute(e){const t={message:e,node_id:this.nodeId};if("verto.invite"===e.method)t.subscribe=this.options.screenShare?["video.room.screenshare"]:this.options.additionalDevice?["video.room.additionaldevice"]:this.getSubscriptions();else if(!this.nodeId)return void this.logger.warn(`Skip Request. Missing nodeId for '${e.method}'.`);return this.execute({method:"video.message",params:t})}onStateChange(e){switch(this.logger.debug("onStateChange",e),e.state){case"hangup":this._hangup(e);break;default:this.setState(e.state)}}onRemoteSDP(e){this.logger.debug("onRemoteSDP",e),e.remoteSDP&&this.peer.onRemoteSdp(e.remoteSDP)}onRoomSubscribed(e){this.logger.debug("onRoomSubscribed",e),this.nodeId=e.nodeId,this._roomId=e.roomId,this._roomSessionId=e.roomSessionId,this._memberId=e.memberId,this._previewUrl=e.previewUrl,this._attachListeners(this.options.additionalDevice||this.options.screenShare?e.memberId:e.roomSessionId),this.applyEmitterTransforms()}onVideoConstraints(e){this.logger.debug("onVideoConstraints",e),(null==e?void 0:e.videoConstraints)&&this.peer.applyMediaConstraints("video",e.videoConstraints)}onAudioConstraints(e){this.logger.debug("onAudioConstraints",e),(null==e?void 0:e.audioConstraints)&&this.peer.applyMediaConstraints("audio",e.audioConstraints)}updateCamera(e){return this.updateConstraints({video:Object.assign({aspectRatio:16/9},e)})}updateMicrophone(e){return this.updateConstraints({audio:e})}manageSendersWithConstraints(e){return!1===e.audio&&(this.logger.info("Switching off the microphone"),this.stopOutboundAudio()),!1===e.video&&(this.logger.info("Switching off the camera"),this.stopOutboundVideo()),e.audio||e.video}updateConstraints(e,{attempt:t=0}={}){return t>1?Promise.reject(new Error("Failed to update constraints")):new Promise((async(r,n)=>{var o;try{if(!Object.keys(e).length)return n(new Error("Invalid audio/video constraints."));if(this.logger.debug("updateConstraints trying constraints",this.__uuid,e),!this.manageSendersWithConstraints(e))return void this.logger.debug("Either `video` and `audio` (or both) constraints were set to `false` so their corresponding senders (if any) were stopped");let s;try{s=await hs(e)}catch(s){if(s instanceof DOMException&&"Concurrent mic process limit."===s.message){let n={};null===(o=this.options.localStream)||void 0===o||o.getTracks().forEach((t=>{var r;n[t.kind]=t.getConstraints(),void 0!==e[t.kind]&&(this.logger.debug("updateConstraints stop old tracks to retrieve new ones"),ws(t),null===(r=this.options.localStream)||void 0===r||r.removeTrack(t))}));try{return r(this.updateConstraints(e,{attempt:t+1}))}catch(e){return this.logger.error("Restoring previous constraints"),r(this.updateConstraints(n,{attempt:t+1}))}}return this.logger.error("updateConstraints",s),n(s)}this.logger.debug("updateConstraints got stream",s),this.options.localStream||(this.options.localStream=new MediaStream);const{instance:i}=this.peer,a=s.getTracks();this.logger.debug(`updateConstraints got ${a.length} tracks`);for(let e=0;e<a.length;e++){const t=a[e];this.logger.debug("updateConstraints apply track: ",t);const r=i.getTransceivers().find((({mid:e,sender:r,receiver:n})=>r.track&&r.track.kind===t.kind?(this.logger.debug("Found transceiver by sender"),!0):n.track&&n.track.kind===t.kind?(this.logger.debug("Found transceiver by receiver"),!0):null===e&&(this.logger.debug("Found disassociated transceiver"),!0)));r&&r.sender?(this.logger.debug("updateConstraints got transceiver",r.currentDirection,r.mid),await r.sender.replaceTrack(t),this.logger.debug("updateConstraints replaceTrack"),r.direction="sendrecv",this.logger.debug("updateConstraints set to sendrecv"),this.options.localStream.getTracks().forEach((e=>{var r;e.kind===t.kind&&e.id!==t.id&&(this.logger.debug("updateConstraints stop old track and apply new one - "),ws(e),null===(r=this.options.localStream)||void 0===r||r.removeTrack(e))})),this.options.localStream.addTrack(t)):(this.logger.debug("updateConstraints no transceiver found. addTrack and start dancing!"),this.peer.type="offer",this.doReinvite=!0,this.options.localStream.addTrack(t),i.addTrack(t,this.options.localStream)),this.logger.debug("updateConstraints simply update mic/cam"),"audio"===t.kind?this.options.micId=t.getSettings().deviceId:"video"===t.kind&&(this.options.camId=t.getSettings().deviceId)}this.logger.debug("updateConstraints done"),r()}catch(e){this.logger.error("updateConstraints",e),n(e)}}))}invite(){return new Promise((async(e,t)=>{this.direction="outbound",this.peer=new Bs(this,"offer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Invite error",e),t(e)}}))}answer(){return new Promise((async(e,t)=>{this.direction="inbound",this.peer=new Bs(this,"answer");try{await this.peer.start(),e(this)}catch(e){this.logger.error("Answer error",e),t(e)}}))}onLocalSDPReady(e){var t;const{type:r,sdp:n}=e,o=this._mungeSDP(n);switch(this.logger.debug("MUNGED SDP \n",`Type: ${r}`,"\n\n",o),r){case"offer":return(null===(t=this.peer.instance)||void 0===t?void 0:t.remoteDescription)?this.executeUpdateMedia(o):this.executeInvite(o);case"answer":this.logger.warn("Unhandled verto.answer");break;default:return this.logger.error(`Unknown SDP type: '${r}' on call ${this.id}`)}}async executeInvite(e){if(!["new","requesting"].includes(this.state))throw new Error(`Invalid state: '${this.state}' for connection id: ${this.id}`);"new"===this.state&&this.setState("requesting");try{const t=this.options.screenShare?{layout:this.options.layout,positions:this.options.positions}:{},r=Sr(Object.assign(Object.assign(Object.assign({},this.messagePayload),t),{sdp:e})),n=await this.vertoExecute(r);this.logger.debug("Invite response",n)}catch(e){throw this.setState("hangup"),e.jsonrpc}}async executeUpdateMedia(e){try{const t=Er(Object.assign(Object.assign({},this.messagePayload),{sdp:e,action:"updateMedia"})),r=await this.vertoExecute(t);r.sdp||this.logger.error("UpdateMedia invalid SDP answer",r),this.logger.debug("UpdateMedia response",r),await this.peer.onRemoteSdp(r.sdp)}catch(e){throw this.logger.error("UpdateMedia error",e),e.jsonrpc}}async hangup(){try{const e=kr(this.messagePayload);await this.vertoExecute(e)}catch(e){this.logger.error("Hangup error:",e)}finally{this._hangup()}}dtmf(e){const t=Cr(Object.assign(Object.assign({},this.messagePayload),{dtmf:e}));this.vertoExecute(t)}doReinviteWithRelayOnly(){this.peer&&this.active&&this.peer.restartIceWithRelayOnly()}stopOutboundAudio(){this.peer&&this.active&&this.peer.stopTrackSender("audio")}restoreOutboundAudio(){this.peer&&this.active&&this.peer.restoreTrackSender("audio")}stopOutboundVideo(){this.peer&&this.active&&this.peer.stopTrackSender("video")}restoreOutboundVideo(){this.peer&&this.active&&this.peer.restoreTrackSender("video")}setState(e){switch(this.prevState=this.state,this.state=e,this.logger.debug(`Call ${this.id} state change from ${this.prevState} to ${this.state}`),this.emit(this.state,this),e){case"purge":this._finalize();break;case"hangup":this.setState("destroy");break;case"destroy":this._finalize()}}updateMediaOptions(e){this.options=Object.assign(Object.assign({},this.options),e)}_hangup(e={}){const{byeCause:t="NORMAL_CLEARING",byeCauseCode:r="16",redirectDestination:n}=e;return this.cause=t,this.causeCode=r,n&&this.peer.localSdp?(this.logger.debug("Redirect Destination to:",n),this.nodeId=n,this.executeInvite(this.peer.localSdp)):this.setState("hangup")}_mungeSDP(e){return e}_finalize(){this.peer&&this.peer.instance&&(this.peer.instance.close(),delete this.peer);const{remoteStream:e,localStream:t}=this.options;_s(e),_s(t),this.destroy()}}const Qs=()=>{const e=document.createElement("video");return e.muted=!0,e.autoplay=!0,e.playsInline=!0,e.addEventListener("pause",(()=>{e.play().catch((t=>{Gt().error("Video Element Paused",e,t)}))})),e},Js=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),Ks=Mr.createAction("swJs/audioSetSpeakerAction"),Gs=({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:n}){try{const o=new Map,s=Qs(),i={status:"hidden",get id(){return`sw-sdk-${r.memberId}`},get domElement(){return o.get(this.id)},set domElement(e){e?(Gt().debug("Set localOverlay",e),o.set(this.id,e)):(Gt().debug("Remove localOverlay"),o.delete(this.id))},hide(){if(!this.domElement)return Gt().warn("Missing localOverlay to hide");this.domElement.style.opacity="0"},show(){return this.domElement?"hidden"===this.status?Gt().info("localOverlay not visible"):void(this.domElement.style.opacity="1"):Gt().warn("Missing localOverlay to show")}},a=(({localOverlay:e,rootElement:t})=>async({layout:r,myMemberId:n,localStream:o})=>{Gt().debug("Process layout.changed");try{const{layers:s=[]}=r,i=s.find((({member_id:e})=>e===n));let a=e.domElement;if(e.status=i?"visible":"hidden",!i)return Gt().debug("Location not found"),void(a&&(Gt().debug("Current layer not visible"),e.hide()));if(!a){Gt().debug("Build myLayer"),a=(({location:e})=>{const{top:t,left:r,width:n,height:o}=Js(e),s=document.createElement("div");return s.style.position="absolute",s.style.overflow="hidden",s.style.top=t,s.style.left=r,s.style.width=n,s.style.height=o,s})({location:i}),a.id=e.id;const r=Qs();r.srcObject=o,r.style.width="100%",r.style.height="100%",a.appendChild(r);const n=t.querySelector(".mcuLayers"),s=n?.querySelector(`#${a.id}`);return void(n&&!s&&(n.appendChild(a),e.domElement=a))}const{top:c,left:d,width:u,height:l}=Js(i);Gt().debug("Update myLayer:",c,d,u,l);const h=o.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){Gt().error("Layout Changed Error",e)}})({rootElement:e,localOverlay:i});let c;r.on("layout.changed",(e=>{Gt().debug("Received layout.changed"),r.peer.hasVideoSender&&r.localStream&&a({layout:e.layout,localStream:r.localStream,myMemberId:r.memberId})})),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){Gt().error("Error handling audio_muted",e)}if(t?.video_muted)try{r.stopOutboundVideo()}catch(e){Gt().error("Error handling video_muted",e)}})),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){Gt().error("Error handling video_muted",e)}}));const d=function(o){switch(o.track.kind){case"video":c=n(Zs,{applyLocalVideoOverlay:t,rootElement:e,track:o.track,element:s}),r.off("track",d)}};r.on("track",d),r.once("destroy",(()=>{(e=>{for(;e.firstChild;)e.removeChild(e.firstChild)})(e),o.clear(),c?.cancel()}))}catch(e){Gt().error("videoElementSaga",e)}};function*Xs({element:e,room:t}){const r=Mr.getCustomSagaActionType(t.__uuid,Ks);for(;;){const n=yield Re([r]);try{switch(n.type){case r:const o=yield Le(bs,e,n.payload);t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:o,kind:"resolve"})}}catch(e){t.settleCustomSagaTrigger({dispatchId:n.dispatchId,payload:e,kind:"reject"}),Gt().error(e)}}}function*Ys({track:e,element:t,speakerId:r,room:n}){(({track:e,element:t})=>{t.autoplay=!0,t.playsinline=!0,t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({track:e,element:t}),r&&bs(t,r).catch((()=>{})),yield Ne(Xs,{element:t,room:n})}function*Zs({rootElement:e,applyLocalVideoOverlay:t=!0,track:r,element:n}){(async r=>{if((({track:e,element:t})=>{t.srcObject=new MediaStream([e]),e.addEventListener("ended",(()=>{t.srcObject=null,t.remove()}))})({element:n,track:r}),n.style.width="100%",!t)return void e.appendChild(n);const o=document.createElement("div");o.style.position="absolute",o.style.top="0",o.style.left="0",o.style.right="0",o.style.bottom="0",o.appendChild(n);const s=document.createElement("div");s.style.paddingBottom="56.25%",s.appendChild(o);const i=document.createElement("div");i.classList.add("mcuLayers"),i.style.display="none",s.appendChild(i);const a=document.createElement("div");a.style.position="relative",a.style.width="100%",a.style.margin="0 auto",a.appendChild(s),e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.appendChild(a),n.readyState===HTMLMediaElement.HAVE_NOTHING&&(Gt().debug("Wait for the MCU to be ready"),await(({element:e})=>new Promise((t=>{e.addEventListener("canplay",(function r(){e.removeEventListener("canplay",r),t()})),e.addEventListener("resize",(function r(){e.removeEventListener("resize",r),t()}))})))({element:n})),i.style.display="block"})(r).catch((e=>{Gt().error("Handle video track error",e)}))}const ei={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},ti={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},ri=or(class extends Hs{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Zn.audioMuteMember,audioUnmute:Zn.audioUnmuteMember,videoMute:Zn.videoMuteMember,videoUnmute:Zn.videoUnmuteMember,setMicrophoneVolume:Zn.setInputVolumeMember,setInputVolume:Zn.setInputVolumeMember,setInputSensitivity:Zn.setInputSensitivityMember}),ni=or(class extends Hs{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:Zn.audioMuteMember,audioUnmute:Zn.audioUnmuteMember,videoMute:Zn.videoMuteMember,videoUnmute:Zn.videoUnmuteMember,setInputVolume:Zn.setInputVolumeMember,setMicrophoneVolume:Zn.setInputVolumeMember,setInputSensitivity:Zn.setInputSensitivityMember}),oi=()=>{},si="video.memberList.updated",ii=rr({event:si}),ai=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Ut),e)),[]).join(".")})(ii),ci=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*di({pubSubChannel:e}){const t=new Map;function*r(r){const n={room_session_id:"video.room.joined"===r.type?r.payload.room_session.id:r.payload.room_session_id,members:(({action:e,memberList:t})=>{const r=(e=>"video.room.joined"===e.type?e.payload.room_session.members:[e.payload.member])(e);switch(e.type){case"video.member.left":r.forEach((e=>{t.delete(e.id)}));break;default:r.forEach((e=>{t.set(e.id,e)}))}return Array.from(t.values())})({action:r,memberList:t})};yield xe(e,{type:ai,payload:n})}for(;;){const t=yield Re(e,(({type:e})=>ci.includes(e)));yield Ne(r,t)}}const ui=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(ii))))(r))return;const{cleanup:n}=((e,t)=>{(e=>hr(ci).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,oi)}));const r=({members:t})=>{e.emit(si,{members:t})};return e.on(ai,r),{cleanup:()=>{e.off(ai,r)}}})(t,r);yield Ne(di,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},li=function*(e){if(!e.initialState)throw new Error("[memberPositionWorker] Missing initialState");yield Ne(rs.memberPositionWorker,e)},hi=or(class extends Hs{_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=>({member:e})}}}],[[mr("video.recording.start"),"video.recording.started","video.recording.updated","video.recording.ended"],{type:"roomSessionRecording",instanceFactory:e=>Zn.createRoomSessionRecordingObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Zt({...e.recording,room_session_id:this.roomSessionId})}],[[mr("video.playback.start"),"video.playback.started","video.playback.updated","video.playback.ended"],{type:"roomSessionPlayback",instanceFactory:e=>Zn.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Zt({...e.playback,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...rs.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.runWorker("memberListUpdated",{worker:ui})}attachOnSubscribedWorkers(e){this.runWorker("memberPositionWorker",{worker:li,initialState:e})}async createScreenShareObject(e={}){return this.startScreenShare(e)}async startScreenShare(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!0,layout:o,positions:s}=e,i=await ps({audio:!0===r?ti:r,video:n}),a={...this.options,screenShare:!0,recoverCall:!1,localStream:i,remoteStream:void 0,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId},layout:o,positions:s},c=Bn({store:this.store,Component:ri,componentListeners:ei})(a);i.getVideoTracks().forEach((e=>{e.addEventListener("ended",(()=>{c&&c.active&&c.leave()}))})),c.on("destroy",(()=>{this._screenShareList.delete(c)}));try{return this._screenShareList.add(c),t&&await c.join(),c}catch(e){throw this.logger.error("ScreenShare Error",e),e}}addCamera(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,video:r})}addMicrophone(e={}){const{autoJoin:t=!0,...r}=e;return this.addDevice({autoJoin:t,audio:r})}async addDevice(e={}){const{autoJoin:t=!0,audio:r=!1,video:n=!1}=e;if(!r&&!n)throw new TypeError("At least one of `audio` or `video` must be requested.");const o={...this.options,localStream:void 0,remoteStream:void 0,audio:r,video:n,additionalDevice:!0,recoverCall:!1,userVariables:{...this.options?.userVariables||{},memberCallId:this.__uuid,memberId:this.memberId}},s=Bn({store:this.store,Component:ni,componentListeners:ei})(o);s.on("destroy",(()=>{this._deviceList.delete(s)}));try{return this._deviceList.add(s),t&&await s.join(),s}catch(e){throw this.logger.error("RoomDevice Error",e),e}}join(){return super.invite()}leave(){return this.hangup()}updateSpeaker({deviceId:e}){return this.triggerCustomSaga(Ks(e))}async hangup(){return this._screenShareList.forEach((e=>{e.leave()})),this._deviceList.forEach((e=>{e.leave()})),super.hangup()}_finalize(){this._screenShareList.clear(),this._deviceList.clear(),super._finalize()}getLayoutList(){return this.getLayouts()}getMemberList(){return this.getMembers()}},{audioMute:Zn.audioMuteMember,audioUnmute:Zn.audioUnmuteMember,videoMute:Zn.videoMuteMember,videoUnmute:Zn.videoUnmuteMember,deaf:Zn.deafMember,undeaf:Zn.undeafMember,setInputVolume:Zn.setInputVolumeMember,setOutputVolume:Zn.setOutputVolumeMember,setMicrophoneVolume:Zn.setInputVolumeMember,setSpeakerVolume:Zn.setOutputVolumeMember,setInputSensitivity:Zn.setInputSensitivityMember,removeMember:Zn.removeMember,removeAllMembers:Zn.removeAllMembers,getMembers:Zn.getMembers,getLayouts:Zn.getLayouts,setLayout:Zn.setLayout,setPositions:Zn.setPositions,setMemberPosition:Zn.setMemberPosition,hideVideoMuted:Zn.hideVideoMuted,showVideoMuted:Zn.showVideoMuted,getRecordings:Zn.getRecordings,startRecording:Zn.startRecording,getPlaybacks:Zn.getPlaybacks,play:Zn.play,setHideVideoMuted:Zn.setHideVideoMuted,setMeta:Zn.setMeta,setMemberMeta:Zn.setMemberMeta}),pi=function*(e){Gt().trace("videoManagerWorker started");const{channels:t}=e,{swEventChannel:r,pubSubChannel:n}=t;for(;;){const e=yield Re(r,(e=>e.type.startsWith("video-manager.")));yield xe(n,e)}};class mi extends Gn{_eventsPrefix="video-manager";constructor(e){super(e),this.runWorker("videoManagerWorker",{worker:pi})}getEmitterTransforms(){return new Map([[["video-manager.rooms.subscribed"],{type:"roomSession",instanceFactory:({rooms:e})=>({rooms:e.map((e=>Zt(e)))}),payloadTransform:({rooms:e})=>({rooms:e.map((e=>Zt(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=>Zt(e),payloadTransform:e=>Zt(e)}]])}}class fi extends Kn{_videoManager;_chat;_pubSub;get rooms(){return{makeRoomObject:e=>{const{rootElement:t,applyLocalVideoOverlay:r=!0,stopCameraWhileMuted:n=!0,stopMicrophoneWhileMuted:o=!0,...s}=e,i=[];i.push((({speakerId:e})=>function*({instance:t,runSaga:r}){if("undefined"!=typeof Audio)try{const n=new Audio;let o;const s=function(i){switch(i.track.kind){case"audio":o=r(Ys,{track:i.track,element:n,speakerId:e,room:t}),t.off("track",s)}};t.on("track",s),t.once("destroy",(()=>{o?.cancel()}))}catch(e){Gt().error("audioElementSaga",e)}else Gt().warn("`Audio` is not supported on this environment.")})({speakerId:s.speakerId})),t&&i.push(Gs({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Bn({store:c.store,customSagas:c.customSagas,Component:hi,componentListeners:ei})(c));var c;return o&&a.on("member.updated.audio_muted",(({member:e})=>{try{e.id===a.memberId&&"audio_muted"in e&&(e.audio_muted?a.stopOutboundAudio():a.restoreOutboundAudio())}catch(e){this.logger.error("Error handling audio_muted",e)}})),n&&a.on("member.updated.video_muted",(({member:e})=>{try{e.id===a.memberId&&"video_muted"in e&&(e.video_muted?a.stopOutboundVideo():a.restoreOutboundVideo())}catch(e){this.logger.error("Error handling video_muted",e)}})),a}}}get chat(){return this._chat||(this._chat=jo.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get pubSub(){return this._pubSub||(this._pubSub=Bo.createBasePubSubObject({store:this.store,emitter:this.options.emitter})),this._pubSub}get videoManager(){return this._videoManager||(this._videoManager=(e=>{const t=Bn({store:e.store,Component:mi,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(Mr.reauthAction({token:e}))}}function gi(e){this.message=e}(gi.prototype=new Error).name="InvalidCharacterError";var vi="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new gi("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,s=0,i="";n=t.charAt(s++);~n&&(r=o%4?64*r+n:n,o++%4)?i+=String.fromCharCode(255&r>>(-2*o&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);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(vi(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 vi(t)}}function bi(e){this.message=e}function _i(e,t){if("string"!=typeof e)throw new bi("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(yi(e.split(".")[r]))}catch(e){throw new bi("Invalid token specified: "+e.message)}}(bi.prototype=new Error).name="InvalidTokenError";class wi extends class extends class{constructor(e){var t,r;this.options=e,Wt(this,"__sw_symbol",on),Wt(this,"uuid",_()),Wt(this,"WebSocketConstructor"),Wt(this,"agent"),Wt(this,"connectVersion",vr),Wt(this,"_rpcConnectResult"),Wt(this,"_requests",new Map),Wt(this,"_socket",null),Wt(this,"_host","wss://relay.signalwire.com"),Wt(this,"_executeTimeoutMs",1e4),Wt(this,"_executeTimeoutError",Symbol.for("sw-execute-timeout")),Wt(this,"_checkPingDelay",15e3),Wt(this,"_checkPingTimer",null),Wt(this,"_status","unknown");const{host:n,logLevel:o="info"}=e;n&&(this._host=(e=>`${ar.test(e)?"":"wss://"}${e}`)(n)),o&&(null==(r=(t=this.logger).setLevel)||r.call(t,o)),this._onSocketOpen=this._onSocketOpen.bind(this),this._onSocketError=this._onSocketError.bind(this),this._onSocketClose=this._onSocketClose.bind(this),this._onSocketMessage=this._onSocketMessage.bind(this),this.execute=this.execute.bind(this),this.connect=this.connect.bind(this)}get host(){return this._host}get rpcConnectResult(){return this._rpcConnectResult}get relayProtocol(){var e,t;return null!=(t=null==(e=this._rpcConnectResult)?void 0:e.protocol)?t:""}get signature(){var e,t;return null==(t=null==(e=this._rpcConnectResult)?void 0:e.authorization)?void 0:t.signature}get logger(){return Gt()}get connecting(){var e;return 0===(null==(e=this._socket)?void 0:e.readyState)}get connected(){var e;return 1===(null==(e=this._socket)?void 0:e.readyState)}get closing(){var e;return 2===(null==(e=this._socket)?void 0:e.readyState)}get closed(){return!this._socket||3===this._socket.readyState}get status(){return this._status}set token(e){this.options.token=e}connect(){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.warn("Session not connected or already in closing state.")}execute(e){if("idle"===this._status||!this.connected)return Promise.reject("Can't call `execute` when Session is not authorized.");let t;return t="params"in e?new Promise(((t,r)=>{this._requests.set(e.id,{rpcRequest:e,resolve:t,reject:r})})):Promise.resolve(),this.logger.wsTraffic({type:"send",payload:e}),this._socket.send(this.encode(e)),cr(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(yr(t))}async _onSocketOpen(e){this.logger.debug("_onSocketOpen",e.type);try{await this.authenticate(),this._status="connected",this.dispatch(Vr())}catch(e){this.logger.error("Auth Error",e),this.dispatch(Wr({error:e}))}}_onSocketError(e){this.logger.debug("_onSocketError",e),this.dispatch(qr())}_onSocketClose(e){this.logger.debug("_onSocketClose",e.type,e.code,e.reason),this._status=e.code>=1006&&e.code<=1014?"reconnecting":"disconnected",this.dispatch($r()),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:n,reject:o}=e;this._requests.delete(t.id);const{result:s,error:i}=(({response:e,request:t})=>{const{result:r={},error:n}=e;if(n)return{error:n};switch(t.method){case"signalwire.connect":return{result:r};default:return Xt(e)}})({response:t,request:r});return i?o(i):n(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,gr({id:r,result:{}}))).catch((e=>{this.logger.error("SwDisconnect Error",e)})).finally((()=>{this._status="idle"}));break;default:this.dispatch(Fr(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,n;clearTimeout(this._checkPingTimer),this._checkPingTimer=setTimeout((()=>{this._closeConnection("reconnecting")}),this._checkPingDelay),await this.execute((r=e.id,n=null==(t=null==e?void 0:e.params)?void 0:t.timestamp,gr({id:r,result:{timestamp:n||Date.now()/1e3}})))}_closeConnection(e){this._status=e,this.dispatch(rn.authStatus("unknown")),this.dispatch(Lr()),this._socket&&(this._socket.close(),this._socket=null)}}{constructor(e){super(e),this.options=e,Wt(this,"_expiredDiffSeconds",0),Wt(this,"_refreshTokenNotificationDiff",120),Wt(this,"_checkTokenExpirationDelay",2e4),Wt(this,"_checkTokenExpirationTimer",null),this._checkTokenExpiration=this._checkTokenExpiration.bind(this),this.reauthenticate=this.reauthenticate.bind(this)}get expiresAt(){var e,t,r;const n=null!=(r=null==(t=null==(e=null==this?void 0:this._rpcConnectResult)?void 0:e.authorization)?void 0:t.expires_at)?r:0;if("string"==typeof n){const e=Date.parse(n);if(!isNaN(e))return Math.floor(e/1e3)}return n}get expiresIn(){const e=Math.floor(Date.now()/1e3);return this.expiresAt-e}get expired(){return this.expiresIn<=this._expiredDiffSeconds}async authenticate(){const e={agent:this.agent,version:this.connectVersion,authentication:{jwt_token:this.options.token}};if(this._relayProtocolIsValid())e.protocol=this.relayProtocol;else{const t=await this.retrieveRelayProtocol();t&&(e.protocol=t)}this._rpcConnectResult=await this.execute(yr(e)),await this.persistRelayProtocol(),this._checkTokenExpiration()}async retrieveRelayProtocol(){return""}async persistRelayProtocol(){}async reauthenticate(){if(this.expired)return this.connect();const e={project:this._rpcConnectResult.authorization.project,jwt_token:this.options.token};try{this._rpcConnectResult=await this.execute((t=e,fr({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(Ur()),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)))}}{options;WebSocketConstructor=WebSocket;agent="@signalwire/js/3.12.1";constructor(e){let t;try{t=_i(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 _i(this.options.token)?.r}catch(e){return""}}}const Si=e=>{const t={...e,emitter:new St},r=zn({userOptions:t,SessionConstructor:wi});return Bn({store:r,Component:fi,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},ki=["subscribe","publish","updateToken","getMessages","getMembers","getMemberState","setMemberState"];var Ei=Object.freeze({__proto__:null,ChatMember:jo.ChatMember,ChatMessage:jo.ChatMessage,Client:function(e){const t=Si(e);return new Proxy(t.chat,{get:(e,r,n)=>ki.includes(r)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(r):Reflect.get(e,r,n)})}});const Ci=["subscribe","publish","updateToken"];var Ti=Object.freeze({__proto__:null,PubSubMessage:Bo.PubSubMessage,Client:function(e){const t=Si(e);return new Proxy(t.pubSub,{get:(e,r,n)=>Ci.includes(r)?(e=>async(...r)=>(await t.connect(),t.pubSub[e](...r)))(r):Reflect.get(e,r,n)})}});const Ii={aspectRatio:{ideal:16/9}},Mi=e=>new Promise((async(t,r)=>{const{audio:n=!0,video:o=!0,iceServers:s,rootElementId:i,applyLocalVideoOverlay:a=!0,autoJoin:c=!1,stopCameraWhileMuted:d=!0,stopMicrophoneWhileMuted:u=!0,speakerId:l,...h}=e,p=Si({...h});if(await p.connect(),!p)return;let m;if(i){const e=document.getElementById(i);e?m=e:(m=document.body,Gt().warn(`We couldn't find an element with id: ${i}: using 'document.body' instead.`))}const f=p.rooms.makeRoomObject({audio:n,video:!0===o?Ii:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});f.once("destroy",(()=>{p.disconnect()}));const g=()=>new Promise((async(e,t)=>{try{f.once("room.subscribed",(t=>{e(f)})),await f.join()}catch(e){Gt().error("Join",e),p.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)})),Pi={width:{ideal:1280,min:320},height:{ideal:720,min:180},aspectRatio:{ideal:16/9}},Oi=["audioMute","audioUnmute","deaf","getLayouts","getMembers","getRecordings","hideVideoMuted","leave","removerMember","restoreOutboundAudio","restoreOutboundVideo","setInputSensitivity","setInputVolume","setLayout","setPositions","setMemberPosition","setOutputVolume","showVideoMuted","startRecording","stopOutboundAudio","stopOutboundVideo","undeaf","videoMute","videoUnmute","setMicrophoneVolume","setSpeakerVolume","setMeta","setMemberMeta"];var Ai=Object.freeze({__proto__:null,RoomSession:function(e){const{audio:t=!0,video:r=!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s=!0,stopCameraWhileMuted:i=!0,stopMicrophoneWhileMuted:a=!0,speakerId:c,...d}=e,u=Si(d),l=u.rooms.makeRoomObject({audio:t,video:!0===r?Pi:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{u.disconnect()}));const h={join:()=>new Promise((async(e,t)=>{try{l.attachPreConnectWorkers(),await u.connect(),l.once("room.subscribed",(t=>{l.attachOnSubscribedWorkers(t),e(l)})),await l.join()}catch(e){Gt().error("RoomSession Join",e),u.disconnect(),t(e)}})),joinAudience:e=>new Promise((async(t,r)=>{try{l.attachPreConnectWorkers();const n=await u.connect(),o=(({authState:e,audio:t=!0,video:r=!0})=>{const n=({remote:e,local:t,kind:r})=>(!e&&t&&Gt().warn(`[joinAudience] ${r} is currently not allowed on this room.`),!(!e||!t));return{audio:!1,video:!1,negotiateAudio:n({remote:e.audio_allowed,local:t,kind:"audio"}),negotiateVideo:n({remote:e.video_allowed,local:r,kind:"video"})}})({authState:n._sessionAuthState,...e});if(!Object.values(o).some(Boolean))return await n.disconnect(),r(new Error("[joinAudience] Either (or both) `audio` and `video` must be `true` when calling this method."));l.updateMediaOptions(o),l.once("room.subscribed",(e=>{l.attachOnSubscribedWorkers(e),t(l)})),await l.join()}catch(e){Gt().error("RoomSession JoinAudience",e),u.disconnect(),r(e)}}))};return new Proxy(l,{get(e,t,r){if(t in h)return h[t];if(!e.active&&Oi.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:Mi,joinRoom:e=>Mi({...e,autoJoin:!0}),createClient:Si}),Ri=Object.freeze({__proto__:null,getDevices:Os,getCameraDevices:()=>Os("camera"),getMicrophoneDevices:()=>Os("microphone"),getSpeakerDevices:()=>Os("speaker"),getDevicesWithPermissions:Ms,getCameraDevicesWithPermissions:()=>Ms("camera"),getMicrophoneDevicesWithPermissions:()=>Ms("microphone"),getSpeakerDevicesWithPermissions:()=>Ms("speaker"),checkPermissions:Es,checkCameraPermissions:Cs,checkMicrophonePermissions:Ts,checkSpeakerPermissions:Is,requestPermissions:async e=>{try{const t=await hs(e);_s(t)}catch(e){throw e}},createDeviceWatcher:Ds,createCameraDeviceWatcher:()=>Ds({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>Ds({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>Ds({targets:["speaker"]}),supportsMediaDevices:us,supportsGetUserMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)},supportsGetDisplayMedia:()=>{var e;return"function"==typeof(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getDisplayMedia)},getUserMedia:hs,getDisplayMedia:ps,enumerateDevices:ms,getSupportedConstraints:gs,supportsMediaOutput:ys,setMediaElementSinkId:bs,stopStream:_s,stopTrack:ws,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(Ws(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},hs(t)})(e);if(!t)throw new Error("Failed to get the audio stream");const r=new St,n=new(window.AudioContext||window.webkitAudioContext),o=(e=>{const t=e.createAnalyser();return t.fftSize=64,t.minDecibels=-90,t.maxDecibels=-10,t.smoothingTimeConstant=.85,t})(n);let s,i;try{n.createMediaStreamSource(t).connect(o)}catch(e){throw new Error("No audio track found")}t.getAudioTracks().forEach((e=>{e.addEventListener("ended",(()=>{r.emit("destroyed","disconnected")}))}));const a=()=>{try{const e=new Uint8Array(o.frequencyBinCount);o.getByteFrequencyData(e);const t=e.reduce(((e,t)=>e+t),0)/20;i!==t&&(i=t,r.emit("volumeChanged",Math.min(i,100))),s=requestAnimationFrame(a)}catch(e){r.emit("destroyed","error")}};s=requestAnimationFrame(a);const c=()=>{s&&cancelAnimationFrame(s),"closed"!==n.state&&n.close().catch((e=>{Gt().error("Error closing the AudioContext",e)})),Ws(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=Ei,e.PubSub=Ti,e.Video=Ai,e.WebRTC=Ri,Object.defineProperty(e,"__esModule",{value:!0})}));
7
7
  //# sourceMappingURL=index.umd.js.map