@signalwire/js 3.13.0 → 3.13.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 (37) hide show
  1. package/dist/core/src/BaseConsumer.d.ts.map +1 -1
  2. package/dist/core/src/pubSub/BasePubSub.d.ts +1 -0
  3. package/dist/core/src/pubSub/BasePubSub.d.ts.map +1 -1
  4. package/dist/core/src/testUtils.d.ts +36 -0
  5. package/dist/core/src/testUtils.d.ts.map +1 -1
  6. package/dist/core/src/utils/index.d.ts.map +1 -1
  7. package/dist/index.esm.js +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.umd.js +2 -2
  10. package/dist/index.umd.js.map +1 -1
  11. package/dist/js/tsconfig.build.tsbuildinfo +1 -1
  12. package/dist/webrtc/src/index.d.ts +2 -2
  13. package/dist/webrtc/src/index.d.ts.map +1 -1
  14. package/dist/webrtc/src/utils/deviceHelpers.d.ts +1 -72
  15. package/dist/webrtc/src/utils/deviceHelpers.d.ts.map +1 -1
  16. package/dist/webrtc/src/utils/enumerateDevices.d.ts +25 -0
  17. package/dist/webrtc/src/utils/enumerateDevices.d.ts.map +1 -0
  18. package/dist/webrtc/src/utils/getDisplayMedia.d.ts +17 -0
  19. package/dist/webrtc/src/utils/getDisplayMedia.d.ts.map +1 -0
  20. package/dist/webrtc/src/utils/getUserMedia.d.ts +35 -0
  21. package/dist/webrtc/src/utils/getUserMedia.d.ts.map +1 -0
  22. package/dist/webrtc/src/utils/helpers.d.ts.map +1 -1
  23. package/dist/webrtc/src/utils/index.d.ts +7 -0
  24. package/dist/webrtc/src/utils/index.d.ts.map +1 -0
  25. package/dist/webrtc/src/utils/permissions.d.ts +48 -0
  26. package/dist/webrtc/src/utils/permissions.d.ts.map +1 -0
  27. package/dist/webrtc/src/utils/primitives.d.ts +54 -0
  28. package/dist/webrtc/src/utils/primitives.d.ts.map +1 -0
  29. package/dist/webrtc/src/utils/primitives.native.d.ts +35 -0
  30. package/dist/webrtc/src/utils/primitives.native.d.ts.map +1 -0
  31. package/dist/webrtc/src/utils/requestPermissions.d.ts +27 -0
  32. package/dist/webrtc/src/utils/requestPermissions.d.ts.map +1 -0
  33. package/package.json +3 -3
  34. package/dist/webrtc/src/utils/webrtcHelpers.d.ts +0 -136
  35. package/dist/webrtc/src/utils/webrtcHelpers.d.ts.map +0 -1
  36. package/dist/webrtc/src/utils/webrtcHelpers.native.d.ts +0 -14
  37. package/dist/webrtc/src/utils/webrtcHelpers.native.d.ts.map +0 -1
package/dist/index.umd.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * SignalWire JS SDK v3.13.0 (https://signalwire.com)
2
+ * SignalWire JS SDK v3.13.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 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:()=>Qn,connect:()=>Hn,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={};Lt(Cn,{getComponent:()=>Tn,getComponentsById:()=>In,getComponentsToCleanup:()=>Mn});var Tn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},In=({components:e})=>e.byId,Mn=e=>{const t=In(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r};function*Pn(e){function*t(t){if("authorized"!==(yield 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*On({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(Tn,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 An(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 Rn=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*xn({pubSubChannel:e,emitter:t}){for(;;){const r=yield Re(e,"*"),{type:n,payload:o}=r;try{const e=Rn(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 jn=({executeQueue:e})=>e;function*Ln(){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*Nn(){const{queue:e}=yield De(jn);for(const t of e)yield xe(Dr(t));yield xe(pn.clean())}var Dn=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Wt(this,"name","AuthError"),Object.setPrototypeOf(this,Dn.prototype)}};function*Wn(){const e=yield De(Mn);e.length&&(yield xe(dn.cleanup({ids:e})))}function*Vn(){for(;;)yield We(36e5),yield Ne(Wn)}function*Un({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Le(An,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(On,{session:o,sessionChannel:s,pubSubChannel:i,swEventChannel:a}),yield Ne(Fn,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const d=yield Ne(Vn);o.connect(),yield Re(jr.type),null==d||d.cancel(),i.close(),s.close(),a.close(),c.forEach((e=>e.cancel()))}function*$n({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*qn({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*Fn(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(Bn,e);break;case Wr.type:yield Ne(zn,{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($n,e);break;case Nr.type:yield Ne(qn,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*Bn(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ne(xn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ne(Pn,t);yield xe(rn.connected(t.rpcConnectResult)),yield xe(r,Br());const i=yield Ne(Nn);yield Re(Lr.type),o.cancel(),s.cancel(),i.cancel()}function*zn(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new Dn(o.code,o.message):new Error("Unauthorized"),i=yield Ne(xn,{pubSubChannel:t,emitter:r.emitter});throw yield xe(t,Qr(s)),yield Re(zr),i.cancel(),s}var Hn=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=Tn(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 Qn=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(Ln),yield Re(xr.type);try{yield Le(Un,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}))})},Jn=e=>e,Kn=Symbol("BaseComponent"),Gn=class{constructor(e){this.options=e,Wt(this,"__sw_symbol",Kn),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=Jn,transformResolve:n=Jn,transformReject:o=Jn}={transformParams:Jn,transformResolve:Jn,transformReject:Jn}){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 Dn(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=[]}},Xn=class extends Gn{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())}},Yn=class extends Gn{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")}},Zn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(Zn).map((e=>`video.member.updated.${e}`));var eo=Zt(Zn);Object.keys(eo).map((e=>`member.updated.${e}`));var to={};Lt(to,{RoomSessionPlaybackAPI:()=>jo,RoomSessionRecordingAPI:()=>Ro,audioMuteMember:()=>yo,audioUnmuteMember:()=>bo,createRoomSessionPlaybackObject:()=>Lo,createRoomSessionRecordingObject:()=>xo,deafMember:()=>So,getLayouts:()=>so,getMembers:()=>io,getPlaybacks:()=>fo,getRecordings:()=>po,hideVideoMuted:()=>uo,play:()=>go,removeAllMembers:()=>Oo,removeMember:()=>Po,setDeaf:()=>Eo,setHideVideoMuted:()=>ho,setInputSensitivityMember:()=>Io,setInputVolumeMember:()=>Co,setLayout:()=>ao,setMemberMeta:()=>Ao,setMemberPosition:()=>Mo,setMeta:()=>vo,setOutputVolumeMember:()=>To,setPositions:()=>co,showVideoMuted:()=>lo,startRecording:()=>mo,undeafMember:()=>ko,videoMuteMember:()=>_o,videoUnmuteMember:()=>wo});var ro=()=>{},no=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:Rt({room_session_id:this.roomSessionId},r)},t)}}),oo=(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)}}),so=no("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),io=no("video.members.get",{transformResolve:e=>({members:e.members})}),ao=no("video.set_layout",{transformResolve:ro}),co=no("video.set_position",{transformResolve:ro}),uo=no("video.hide_video_muted",{transformResolve:ro}),lo=no("video.show_video_muted",{transformResolve:ro}),ho={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:ro})}},po=no("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Zt(e)))})}),mo={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}}))}},fo=no("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Zt(e)))})}),go={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}}))}},vo=no("video.set_meta",{transformResolve:ro,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:jt(t,["room_session_id"])}}}),yo=oo("video.member.audio_mute",{transformResolve:ro}),bo=oo("video.member.audio_unmute",{transformResolve:ro}),_o=oo("video.member.video_mute",{transformResolve:ro}),wo=oo("video.member.video_unmute",{transformResolve:ro}),So=oo("video.member.deaf",{transformResolve:ro}),ko=oo("video.member.undeaf",{transformResolve:ro}),Eo={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:ro})}},Co=oo("video.member.set_input_volume",{transformResolve:ro}),To=oo("video.member.set_output_volume",{transformResolve:ro}),Io=oo("video.member.set_input_sensitivity",{transformResolve:ro}),Mo=oo("video.member.set_position",{transformResolve:ro}),Po={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:ro})}},Oo={value:function(){return this.execute({method:"video.member.remove",params:{room_session_id:this.roomSessionId,member_id:"all"}},{transformResolve:ro})}},Ao=oo("video.member.set_meta",{transformResolve:ro}),Ro=class extends Gn{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")}})}},xo=e=>Hn({store:e.store,Component:Ro,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),jo=class extends Gn{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)}})}},Lo=e=>Hn({store:e.store,Component:jo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),No={};Lt(No,{BaseChatAPI:()=>rs,BaseChatConsumer:()=>ts,ChatMember:()=>Yo,ChatMessage:()=>Zo,createBaseChatObject:()=>ns,getMemberState:()=>zo,getMembers:()=>qo,getMessages:()=>$o,publish:()=>Uo,setMemberState:()=>Bo});var Do=()=>{},Wo=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),Vo=(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)}}),Uo=Wo("chat.publish",{transformResolve:Do}),$o=Wo("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Zt(e))),cursor:e.cursor})}),qo=Wo("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Zt(e)))})}),Fo=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})},Bo=Vo("chat.member.set_state",{transformResolve:Do,transformParams:Fo}),zo=Vo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:Fo}),Ho={};Lt(Ho,{BasePubSubConsumer:()=>Go,PubSubMessage:()=>Qo,createBasePubSubObject:()=>Xo});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}},Jo=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)}}},Ko=e=>e.map((e=>({name:e}))),Go=class extends Yn{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.runWorker("pubSub",{worker:Jo})}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(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:Ko(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})}},Xo=e=>Hn({store:e.store,Component:Go,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Yo=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:{}}},Zo=class extends Qo{get member(){return this.payload.member}},es=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)}}},ts=class extends Go{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this.runWorker("chat",{worker:es})}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:()=>new Zo({}),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 Yo(Zt(t))},payloadTransform:e=>{const{member:t}=e.params;return Zt(t)}}]])}},rs=or(ts,{publish:Uo,getMembers:qo,getMessages:$o,setMemberState:Bo,getMemberState:zo}),ns=e=>Hn({store:e.store,Component:rs,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),os={};function*ss(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);s&&e.position!==(null==(t=s.member)?void 0:t.current_position)?(ds({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=ds({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield xe(n,{type:"video.member.updated",payload:t})}}function*is({action:e,channels:t,memberList:r}){var n,o;const s=e.payload.member.id,i=ds({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(os,{MEMBER_POSITION_COMPOUND_EVENTS:()=>as,memberPositionWorker:()=>cs,memberUpdatedWorker:()=>is});var as=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),cs=function*({instance:e,channels:t,initialState:r}){if(!r)return;const{swEventChannel:n}=t;let o=us(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)&&Rn(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":yield Ne(is,{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(ss,{action:r,channels:t,memberList:o,instance:e})}}},ds=({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},us=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},ls=Rt({},bn);const hs=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,ps=()=>{if(!hs())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},ms=async(e={audio:!0,video:!0})=>{var t;try{const t=ps().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:",ys());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}},fs=e=>ps().getDisplayMedia(e),gs=()=>ps().enumerateDevices(),vs=async e=>{let t=await gs().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},ys=()=>ps().getSupportedConstraints(),bs=e=>e&&e instanceof MediaStream,_s=()=>"sinkId"in HTMLMediaElement.prototype,ws=async(e,t)=>{if(null!==e)if("string"==typeof t)if(_s())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")},Ss=e=>{var t;bs(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(ks))},ks=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},Es={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},Cs=e=>{if(e)return Es[e]},Ts=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 vs(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Gt().warn(`No ${e} devices to check for permissions!`),null)})(Cs(e))},Is=()=>Ts("camera"),Ms=()=>Ts("microphone"),Ps=()=>Ts("speaker"),Os=async(e,t=!1)=>Rs(e,t),As=(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))}))},Rs=async(e,t=!1)=>{let r;if(!1===await Ts(e)){const t={audio:!(n=e)||"all"===n||"microphone"===n||"speaker"===n,video:!n||"all"===n||"camera"===n};r=await ms(t)}var n;const o=await vs(Cs(e));return r&&Ss(r),!0===t?o:As(o)},xs=async(e,t,r)=>{const n=await Rs(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},js=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},Ls={camera:Is,microphone:Ms,speaker:Ps},Ns=["camera","microphone","speaker"],Ds=`Allowed targets are: '${Ns.join("', '")}'`,Ws={speaker:_s},Vs=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:Ns).filter((e=>!!Ns.includes(e)||(Gt().warn(`We'll ignore the "${e}" target as it is not allowed. ${Ds}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${Ds}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>Ls[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in Ws)||(null===(o=Ws[s])||void 0===o?void 0:o.call(Ws))?"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 gs(),o=null==t?void 0:t.reduce(((e,t)=>{const r=Cs(t);return r&&e.push(r),e}),[]);let s=As(n,{excludeDefault:!0,targets:o});return ps().addEventListener("devicechange",(async()=>{const e=await gs(),t=s,n=As(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=js(e),n=js(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},Us=e=>"function"==typeof(null==e?void 0:e.getTracks),$s=e=>{Gt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)return ms(e)},qs=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await xs(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 xs(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},Fs=e=>/^m=audio/.test(e),Bs=e=>/^m=video/.test(e),zs=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 Hs{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&&(ks(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 qs(this.options),s=await $s({[e]:o[e]});if(s&&bs(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&&bs(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=zs(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=zs(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(Fs)<n.findIndex(Bs))return e;const o=e.split(r),s=o.findIndex(Fs),i=o.findIndex(Bs),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(bs(this.options.localStream))return this.options.localStream;const e=await qs(this.options);return $s(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 Js extends Gn{constructor(e){super(e),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.component.memberId}get previewUrl(){return this.component.previewUrl}get roomId(){return this.component.roomId}get roomSessionId(){return this.component.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(ls.getIceServers)}get component(){return this.select((e=>Cn.getComponent(e,this.id)))||{}}get nodeId(){var e,t;return this._nodeId?this._nodeId:null!==(t=null===(e=this.component)||void 0===e?void 0:e.nodeId)&&void 0!==t?t:""}set nodeId(e){this._nodeId=e}get messagePayload(){const{destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c,pingSupported:d=!0}=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._attachListeners(this.options.additionalDevice||this.options.screenShare?this.memberId:this.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 ms(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"),ks(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 - "),ks(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 Hs(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 Hs(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;Ss(e),Ss(t),this.destroy()}}const Ks=()=>{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},Gs=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),Xs=Mr.createAction("swJs/audioSetSpeakerAction"),Ys=({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:n}){try{const o=new Map,s=Ks(),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}=Gs(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=Ks();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}=Gs(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(ti,{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*Zs({element:e,room:t}){const r=Mr.getCustomSagaActionType(t.__uuid,Xs);for(;;){const n=yield Re([r]);try{switch(n.type){case r:const o=yield Le(ws,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*ei({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&&ws(t,r).catch((()=>{})),yield Ne(Zs,{element:t,room:n})}function*ti({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 ri={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},ni={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},oi=or(class extends Js{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:to.audioMuteMember,audioUnmute:to.audioUnmuteMember,videoMute:to.videoMuteMember,videoUnmute:to.videoUnmuteMember,setMicrophoneVolume:to.setInputVolumeMember,setInputVolume:to.setInputVolumeMember,setInputSensitivity:to.setInputSensitivityMember}),si=or(class extends Js{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:to.audioMuteMember,audioUnmute:to.audioUnmuteMember,videoMute:to.videoMuteMember,videoUnmute:to.videoUnmuteMember,setInputVolume:to.setInputVolumeMember,setMicrophoneVolume:to.setInputVolumeMember,setInputSensitivity:to.setInputSensitivityMember}),ii=()=>{},ai="video.memberList.updated",ci=rr({event:ai}),di=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Ut),e)),[]).join(".")})(ci),ui=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*li({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:di,payload:n})}for(;;){const t=yield Re(e,(({type:e})=>ui.includes(e)));yield Ne(r,t)}}const hi=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(ci))))(r))return;const{cleanup:n}=((e,t)=>{(e=>hr(ui).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,ii)}));const r=({members:t})=>{e.emit(ai,{members:t})};return e.on(di,r),{cleanup:()=>{e.off(di,r)}}})(t,r);yield Ne(li,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},pi=function*(e){if(!e.initialState)throw new Error("[memberPositionWorker] Missing initialState");yield Ne(os.memberPositionWorker,e)},mi=or(class extends Js{_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=>to.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=>to.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Zt({...e.playback,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...os.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.runWorker("memberListUpdated",{worker:hi})}attachOnSubscribedWorkers(e){this.runWorker("memberPositionWorker",{worker:pi,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 fs({audio:!0===r?ni: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=Hn({store:this.store,Component:oi,componentListeners:ri})(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=Hn({store:this.store,Component:si,componentListeners:ri})(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(Xs(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:to.audioMuteMember,audioUnmute:to.audioUnmuteMember,videoMute:to.videoMuteMember,videoUnmute:to.videoUnmuteMember,deaf:to.deafMember,undeaf:to.undeafMember,setInputVolume:to.setInputVolumeMember,setOutputVolume:to.setOutputVolumeMember,setMicrophoneVolume:to.setInputVolumeMember,setSpeakerVolume:to.setOutputVolumeMember,setInputSensitivity:to.setInputSensitivityMember,removeMember:to.removeMember,removeAllMembers:to.removeAllMembers,getMembers:to.getMembers,getLayouts:to.getLayouts,setLayout:to.setLayout,setPositions:to.setPositions,setMemberPosition:to.setMemberPosition,hideVideoMuted:to.hideVideoMuted,showVideoMuted:to.showVideoMuted,getRecordings:to.getRecordings,startRecording:to.startRecording,getPlaybacks:to.getPlaybacks,play:to.play,setHideVideoMuted:to.setHideVideoMuted,setMeta:to.setMeta,setMemberMeta:to.setMemberMeta}),fi=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 gi extends Yn{_eventsPrefix="video-manager";constructor(e){super(e),this.runWorker("videoManagerWorker",{worker:fi})}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 vi extends Xn{_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(ei,{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(Ys({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Hn({store:c.store,customSagas:c.customSagas,Component:mi,componentListeners:ri})(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=No.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get pubSub(){return this._pubSub||(this._pubSub=Ho.createBasePubSubObject({store:this.store,emitter:this.options.emitter})),this._pubSub}get videoManager(){return this._videoManager||(this._videoManager=(e=>{const t=Hn({store:e.store,Component:gi,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 yi(e){this.message=e}(yi.prototype=new Error).name="InvalidCharacterError";var bi="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new yi("'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 _i(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(bi(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 bi(t)}}function wi(e){this.message=e}function Si(e,t){if("string"!=typeof e)throw new wi("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(_i(e.split(".")[r]))}catch(e){throw new wi("Invalid token specified: "+e.message)}}(wi.prototype=new Error).name="InvalidTokenError";class ki 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.13.0";constructor(e){let t;try{t=Si(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 Si(this.options.token)?.r}catch(e){return""}}}const Ei=e=>{const t={...e,emitter:new St},r=Qn({userOptions:t,SessionConstructor:ki});return Hn({store:r,Component:vi,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},Ci=["subscribe","publish","updateToken","getMessages","getMembers","getMemberState","setMemberState"];var Ti=Object.freeze({__proto__:null,ChatMember:No.ChatMember,ChatMessage:No.ChatMessage,Client:function(e){const t=Ei(e);return new Proxy(t.chat,{get:(e,r,n)=>Ci.includes(r)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(r):Reflect.get(e,r,n)})}});const Ii=["subscribe","publish","updateToken"];var Mi=Object.freeze({__proto__:null,PubSubMessage:Ho.PubSubMessage,Client:function(e){const t=Ei(e);return new Proxy(t.pubSub,{get:(e,r,n)=>Ii.includes(r)?(e=>async(...r)=>(await t.connect(),t.pubSub[e](...r)))(r):Reflect.get(e,r,n)})}});const Pi={aspectRatio:{ideal:16/9}},Oi=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=Ei({...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?Pi:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});f.once("destroy",(()=>{f.emit("room.left"),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)})),Ai={width:{ideal:1280,min:320},height:{ideal:720,min:180},aspectRatio:{ideal:16/9}},Ri=["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 xi=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=Ei(d),l=u.rooms.makeRoomObject({audio:t,video:!0===r?Ai:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{l.emit("room.left"),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,receiveAudio:t=!0,receiveVideo:r=!0})=>{const n=({remote:e,local:t,kind:r})=>{const n="none"!==e;return!n&&t&&Gt().warn(`[joinAudience] ${r} is currently not allowed on this room.`),!(!n||!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&&Ri.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:Oi,joinRoom:e=>Oi({...e,autoJoin:!0}),createClient:Ei}),ji=Object.freeze({__proto__:null,getDevices:Rs,getCameraDevices:()=>Rs("camera"),getMicrophoneDevices:()=>Rs("microphone"),getSpeakerDevices:()=>Rs("speaker"),getDevicesWithPermissions:Os,getCameraDevicesWithPermissions:()=>Os("camera"),getMicrophoneDevicesWithPermissions:()=>Os("microphone"),getSpeakerDevicesWithPermissions:()=>Os("speaker"),checkPermissions:Ts,checkCameraPermissions:Is,checkMicrophonePermissions:Ms,checkSpeakerPermissions:Ps,requestPermissions:async e=>{try{const t=await ms(e);Ss(t)}catch(e){throw e}},createDeviceWatcher:Vs,createCameraDeviceWatcher:()=>Vs({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>Vs({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>Vs({targets:["speaker"]}),supportsMediaDevices:hs,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:ms,getDisplayMedia:fs,enumerateDevices:gs,getSupportedConstraints:ys,supportsMediaOutput:_s,setMediaElementSinkId:ws,stopStream:Ss,stopTrack:ks,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(Us(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},ms(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)})),Us(e)||t.getTracks().forEach((e=>e.stop())),r.emit("destroyed",null),r.removeAllListeners()};return new Proxy(r,{get:(e,t,r)=>"destroy"===t?c:Reflect.get(e,t,r)})}});e.Chat=Ti,e.PubSub=Mi,e.Video=xi,e.WebRTC=ji,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)||pr(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:()=>Qn,connect:()=>Hn,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={};Lt(Cn,{getComponent:()=>Tn,getComponentsById:()=>In,getComponentsToCleanup:()=>Mn});var Tn=({components:e},t)=>{var r;return null==(r=e.byId)?void 0:r[t]},In=({components:e})=>e.byId,Mn=e=>{const t=In(e);let r=[];return Object.keys(t).forEach((e=>{(t[e].responses||t[e].errors)&&r.push(e)})),r};function*Pn(e){function*t(t){if("authorized"!==(yield 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*On({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(Tn,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 An(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 Rn=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*xn({pubSubChannel:e,emitter:t}){for(;;){const r=yield Re(e,"*"),{type:n,payload:o}=r;try{const e=Rn(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 jn=({executeQueue:e})=>e;function*Ln(){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*Nn(){const{queue:e}=yield De(jn);for(const t of e)yield xe(Dr(t));yield xe(pn.clean())}var Dn=class extends Error{constructor(e,t){super(t),this.code=e,this.message=t,Wt(this,"name","AuthError"),Object.setPrototypeOf(this,Dn.prototype)}};function*Wn(){const e=yield De(Mn);e.length&&(yield xe(dn.cleanup({ids:e})))}function*Vn(){for(;;)yield We(36e5),yield Ne(Wn)}function*Un({SessionConstructor:e,userOptions:t,channels:r}){var n;const o=new e(t),s=yield Le(An,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(On,{session:o,sessionChannel:s,pubSubChannel:i,swEventChannel:a}),yield Ne(Fn,{session:o,sessionChannel:s,pubSubChannel:i,userOptions:t});const d=yield Ne(Vn);o.connect(),yield Re(jr.type),null==d||d.cancel(),i.close(),s.close(),a.close(),c.forEach((e=>e.cancel()))}function*$n({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*qn({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*Fn(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(Bn,e);break;case Wr.type:yield Ne(zn,{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($n,e);break;case Nr.type:yield Ne(qn,{session:e.session,token:t.payload.token,pubSubChannel:e.pubSubChannel})}}}function*Bn(e){const{session:t,pubSubChannel:r,userOptions:n}=e,o=yield Ne(xn,{pubSubChannel:r,emitter:n.emitter}),s=yield Ne(Pn,t);yield xe(rn.connected(t.rpcConnectResult)),yield xe(r,Br());const i=yield Ne(Nn);yield Re(Lr.type),o.cancel(),s.cancel(),i.cancel()}function*zn(e){const{pubSubChannel:t,userOptions:r,action:n}=e,{error:o}=n.payload,s=o?new Dn(o.code,o.message):new Error("Unauthorized"),i=yield Ne(xn,{pubSubChannel:t,emitter:r.emitter});throw yield xe(t,Qr(s)),yield Re(zr),i.cancel(),s}var Hn=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=Tn(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 Qn=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(Ln),yield Re(xr.type);try{yield Le(Un,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}))})},Jn=e=>e,Kn=Symbol("BaseComponent"),Gn=class{constructor(e){this.options=e,Wt(this,"__sw_symbol",Kn),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=Jn,transformResolve:n=Jn,transformReject:o=Jn}={transformParams:Jn,transformResolve:Jn,transformReject:Jn}){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 Dn(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=[]}},Xn=class extends Gn{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())}},Yn=class extends Gn{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(){await this._waitUntilSessionAuthorized();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")}},Zn={audio_muted:!0,video_muted:!0,deaf:!0,on_hold:!0,visible:!0,input_volume:1,output_volume:1,input_sensitivity:1};Object.keys(Zn).map((e=>`video.member.updated.${e}`));var eo=Zt(Zn);Object.keys(eo).map((e=>`member.updated.${e}`));var to={};Lt(to,{RoomSessionPlaybackAPI:()=>jo,RoomSessionRecordingAPI:()=>Ro,audioMuteMember:()=>yo,audioUnmuteMember:()=>bo,createRoomSessionPlaybackObject:()=>Lo,createRoomSessionRecordingObject:()=>xo,deafMember:()=>So,getLayouts:()=>so,getMembers:()=>io,getPlaybacks:()=>fo,getRecordings:()=>po,hideVideoMuted:()=>uo,play:()=>go,removeAllMembers:()=>Oo,removeMember:()=>Po,setDeaf:()=>Eo,setHideVideoMuted:()=>ho,setInputSensitivityMember:()=>Io,setInputVolumeMember:()=>Co,setLayout:()=>ao,setMemberMeta:()=>Ao,setMemberPosition:()=>Mo,setMeta:()=>vo,setOutputVolumeMember:()=>To,setPositions:()=>co,showVideoMuted:()=>lo,startRecording:()=>mo,undeafMember:()=>ko,videoMuteMember:()=>_o,videoUnmuteMember:()=>wo});var ro=()=>{},no=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:Rt({room_session_id:this.roomSessionId},r)},t)}}),oo=(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)}}),so=no("video.list_available_layouts",{transformResolve:e=>({layouts:e.layouts})}),io=no("video.members.get",{transformResolve:e=>({members:e.members})}),ao=no("video.set_layout",{transformResolve:ro}),co=no("video.set_position",{transformResolve:ro}),uo=no("video.hide_video_muted",{transformResolve:ro}),lo=no("video.show_video_muted",{transformResolve:ro}),ho={value:function(e){return this.execute({method:e?"video.hide_video_muted":"video.show_video_muted",params:{room_session_id:this.roomSessionId}},{transformResolve:ro})}},po=no("video.recording.list",{transformResolve:e=>({recordings:e.recordings.map((e=>Zt(e)))})}),mo={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}}))}},fo=no("video.playback.list",{transformResolve:e=>({playbacks:e.playbacks.map((e=>Zt(e)))})}),go={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}}))}},vo=no("video.set_meta",{transformResolve:ro,transformParams:e=>{const t=e,{room_session_id:r}=t;return{room_session_id:r,meta:jt(t,["room_session_id"])}}}),yo=oo("video.member.audio_mute",{transformResolve:ro}),bo=oo("video.member.audio_unmute",{transformResolve:ro}),_o=oo("video.member.video_mute",{transformResolve:ro}),wo=oo("video.member.video_unmute",{transformResolve:ro}),So=oo("video.member.deaf",{transformResolve:ro}),ko=oo("video.member.undeaf",{transformResolve:ro}),Eo={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:ro})}},Co=oo("video.member.set_input_volume",{transformResolve:ro}),To=oo("video.member.set_output_volume",{transformResolve:ro}),Io=oo("video.member.set_input_sensitivity",{transformResolve:ro}),Mo=oo("video.member.set_position",{transformResolve:ro}),Po={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:ro})}},Oo={value:function(){return this.execute({method:"video.member.remove",params:{room_session_id:this.roomSessionId,member_id:"all"}},{transformResolve:ro})}},Ao=oo("video.member.set_meta",{transformResolve:ro}),Ro=class extends Gn{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")}})}},xo=e=>Hn({store:e.store,Component:Ro,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),jo=class extends Gn{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)}})}},Lo=e=>Hn({store:e.store,Component:jo,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),No={};Lt(No,{BaseChatAPI:()=>rs,BaseChatConsumer:()=>ts,ChatMember:()=>Yo,ChatMessage:()=>Zo,createBaseChatObject:()=>ns,getMemberState:()=>zo,getMembers:()=>qo,getMessages:()=>$o,publish:()=>Uo,setMemberState:()=>Bo});var Do=()=>{},Wo=(e,t={})=>({value:function(r={}){return this.execute({method:e,params:r},t)}}),Vo=(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)}}),Uo=Wo("chat.publish",{transformResolve:Do}),$o=Wo("chat.messages.get",{transformResolve:e=>({messages:e.messages.map((e=>Zt(e))),cursor:e.cursor})}),qo=Wo("chat.members.get",{transformResolve:e=>({members:e.members.map((e=>Zt(e)))})}),Fo=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})},Bo=Vo("chat.member.set_state",{transformResolve:Do,transformParams:Fo}),zo=Vo("chat.member.get_state",{transformResolve:e=>({channels:e.channels}),transformParams:Fo}),Ho={};Lt(Ho,{BasePubSubConsumer:()=>Go,PubSubMessage:()=>Qo,createBasePubSubObject:()=>Xo});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}},Jo=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)}}},Ko=e=>e.map((e=>({name:e}))),Go=class extends Yn{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this._attachListeners(""),this.runWorker("pubSub",{worker:Jo})}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(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:Ko(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)}_checkMissingSubscriptions(){0===this.getSubscriptions().length&&(this.logger.info("Subscribe was called before any listeners were attached. Move `.subscribe()` right after your event listeners to suppress this message."),this.once("message",(()=>{})))}async subscribe(e){this._checkMissingSubscriptions();const t=this._getSubscribeParams({channels:e});return this._setSubscribeParams(t),super.subscribe()}async unsubscribe(e){if("unknown"===this._sessionAuthStatus||"unauthorized"===this._sessionAuthStatus)throw new Error("You must be authenticated to unsubscribe from a channel");const t=this._getUnsubscribeParams({channels:e});return new Promise((async(e,r)=>{const 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})}},Xo=e=>Hn({store:e.store,Component:Go,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),Yo=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:{}}},Zo=class extends Qo{get member(){return this.payload.member}},es=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)}}},ts=class extends Go{constructor(e){super(e),Wt(this,"_eventsPrefix","chat"),Wt(this,"subscribeMethod","chat.subscribe"),this.runWorker("chat",{worker:es})}getEmitterTransforms(){return new Map([[["message"],{type:"chatMessage",instanceFactory:()=>new Zo({}),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 Yo(Zt(t))},payloadTransform:e=>{const{member:t}=e.params;return Zt(t)}}]])}},rs=or(ts,{publish:Uo,getMembers:qo,getMessages:$o,setMemberState:Bo,getMemberState:zo}),ns=e=>Hn({store:e.store,Component:rs,componentListeners:{errors:"onError",responses:"onSuccess"}})(e),os={};function*ss(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);s&&e.position!==(null==(t=s.member)?void 0:t.current_position)?(ds({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=ds({memberList:r,memberId:e,currentPosition:"off-canvas"});if(!t)return;yield xe(n,{type:"video.member.updated",payload:t})}}function*is({action:e,channels:t,memberList:r}){var n,o;const s=e.payload.member.id,i=ds({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(os,{MEMBER_POSITION_COMPOUND_EVENTS:()=>as,memberPositionWorker:()=>cs,memberUpdatedWorker:()=>is});var as=new Map([["video.member.updated",["video.layout.changed","video.member.joined","video.member.left"]]]),cs=function*({instance:e,channels:t,initialState:r}){if(!r)return;const{swEventChannel:n}=t;let o=us(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)&&Rn(t)===e._eventsNamespace));switch(r.type){case"video.member.updated":yield Ne(is,{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(ss,{action:r,channels:t,memberList:o,instance:e})}}},ds=({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},us=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},ls=Rt({},bn);const hs=()=>"undefined"!=typeof navigator&&!!navigator.mediaDevices,ps=()=>{if(!hs())throw new Error("The media devices API isn't supported in this environment");return navigator.mediaDevices},ms=()=>ps().getSupportedConstraints(),fs=e=>e&&e instanceof MediaStream,gs=()=>"sinkId"in HTMLMediaElement.prototype,vs=async(e,t)=>{if(null!==e)if("string"==typeof t)if(gs())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")},ys=e=>{var t;fs(e)&&(null===(t=null==e?void 0:e.getTracks())||void 0===t||t.forEach(bs))},bs=e=>{e&&"live"===e.readyState&&(e.stop(),e.dispatchEvent(new Event("ended")))},_s={camera:"videoinput",microphone:"audioinput",speaker:"audiooutput"},ws=e=>{if(e)return _s[e]},Ss=()=>ps().enumerateDevices(),ks=async e=>{let t=await Ss().catch((e=>[]));return e&&(t=t.filter((({kind:t})=>t===e))),t},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 ks(e);return t.length?t.every((({deviceId:e,label:t})=>Boolean(e&&t))):(Gt().warn(`No ${e} devices to check for permissions!`),null)})(ws(e))},Cs=()=>Es("camera"),Ts=()=>Es("microphone"),Is=()=>Es("speaker"),Ms=async(e={audio:!0,video:!0})=>{var t;try{const t=ps().getUserMedia(e);if(await(async e=>{const t=[];return(null==e?void 0:e.audio)&&t.push(Ts()),(null==e?void 0:e.video)&&t.push(Cs()),!!t.length&&(await Promise.all(t)).every(Boolean)})(e)){const e=new Error("Timeout reading from your devices");return await cr(t,5e3,e)}return await t}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:",ms());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=>ps().getDisplayMedia(e),Os=async(e,t=!1)=>Rs(e,t),As=(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))}))},Rs=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 Ms(t)}var n;const o=await ks(ws(e));return r&&ys(r),!0===t?o:As(o)},xs=async(e,t,r)=>{const n=await Rs(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},js=e=>{const t=new Map;return e.forEach((e=>{e.deviceId&&t.set(e.deviceId,e)})),t},Ls={camera:Cs,microphone:Ts,speaker:Is},Ns=["camera","microphone","speaker"],Ds=`Allowed targets are: '${Ns.join("', '")}'`,Ws={speaker:gs},Vs=async(e={})=>{const t=await(async e=>{var t;const r=(null!==(t=e.targets)&&void 0!==t?t:Ns).filter((e=>!!Ns.includes(e)||(Gt().warn(`We'll ignore the "${e}" target as it is not allowed. ${Ds}.`),!1)));if(!r.length)throw new Error(`At least one "target" is required for createDeviceWatcher(). ${Ds}.`);const n=await(async e=>{const t=e.targets;return(await Promise.all(t.map((e=>Ls[e]())))).reduce(((e,r,n)=>{var o;const s=t[n];return e[!(s in Ws)||(null===(o=Ws[s])||void 0===o?void 0:o.call(Ws))?"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 Ss(),o=null==t?void 0:t.reduce(((e,t)=>{const r=ws(t);return r&&e.push(r),e}),[]);let s=As(n,{excludeDefault:!0,targets:o});return ps().addEventListener("devicechange",(async()=>{const e=await Ss(),t=s,n=As(e,{excludeDefault:!0,targets:o});s=n;const i=((e,t)=>{const r=js(e),n=js(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},Us=e=>"function"==typeof(null==e?void 0:e.getTracks),$s=e=>{Gt().info("RTCService.getUserMedia",e);const{audio:t,video:r}=e;if(t||r)return Ms(e)},qs=async e=>{let{audio:t=!0,micId:r}=e;const{micLabel:n=""}=e;if(r){const e=await xs(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 xs(s,i,"camera").catch((e=>null));e&&("boolean"==typeof o&&(o={}),o.deviceId={exact:e})}return{audio:t,video:o}},Fs=e=>/^m=audio/.test(e),Bs=e=>/^m=video/.test(e),zs=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 Hs{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&&(bs(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 qs(this.options),s=await $s({[e]:o[e]});if(s&&fs(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&&fs(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=zs(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=zs(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(Fs)<n.findIndex(Bs))return e;const o=e.split(r),s=o.findIndex(Fs),i=o.findIndex(Bs),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(fs(this.options.localStream))return this.options.localStream;const e=await qs(this.options);return $s(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 Js extends Gn{constructor(e){super(e),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.component.memberId}get previewUrl(){return this.component.previewUrl}get roomId(){return this.component.roomId}get roomSessionId(){return this.component.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(ls.getIceServers)}get component(){return this.select((e=>Cn.getComponent(e,this.id)))||{}}get nodeId(){var e,t;return this._nodeId?this._nodeId:null!==(t=null===(e=this.component)||void 0===e?void 0:e.nodeId)&&void 0!==t?t:""}set nodeId(e){this._nodeId=e}get messagePayload(){const{destinationNumber:e,attach:t,callerName:r,callerNumber:n,remoteCallerName:o,remoteCallerNumber:s,userVariables:i,screenShare:a,additionalDevice:c,pingSupported:d=!0}=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._attachListeners(this.options.additionalDevice||this.options.screenShare?this.memberId:this.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 Ms(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"),bs(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 - "),bs(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 Hs(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 Hs(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;ys(e),ys(t),this.destroy()}}const Ks=()=>{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},Gs=({x:e,y:t,width:r,height:n})=>({top:`${t}%`,left:`${e}%`,width:`${r}%`,height:`${n}%`}),Xs=Mr.createAction("swJs/audioSetSpeakerAction"),Ys=({rootElement:e,applyLocalVideoOverlay:t})=>function*({instance:r,runSaga:n}){try{const o=new Map,s=Ks(),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}=Gs(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=Ks();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}=Gs(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(ti,{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*Zs({element:e,room:t}){const r=Mr.getCustomSagaActionType(t.__uuid,Xs);for(;;){const n=yield Re([r]);try{switch(n.type){case r:const o=yield Le(vs,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*ei({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&&vs(t,r).catch((()=>{})),yield Ne(Zs,{element:t,room:n})}function*ti({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 ri={state:"onStateChange",remoteSDP:"onRemoteSDP",roomId:"onRoomSubscribed",videoConstraints:"onVideoConstraints",audioConstraints:"onAudioConstraints",errors:"onError",responses:"onSuccess"},ni={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,googAutoGainControl:!1},oi=or(class extends Js{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:to.audioMuteMember,audioUnmute:to.audioUnmuteMember,videoMute:to.videoMuteMember,videoUnmute:to.videoUnmuteMember,setMicrophoneVolume:to.setInputVolumeMember,setInputVolume:to.setInputVolumeMember,setInputSensitivity:to.setInputSensitivityMember}),si=or(class extends Js{join(){return super.invite()}leave(){return super.hangup()}},{audioMute:to.audioMuteMember,audioUnmute:to.audioUnmuteMember,videoMute:to.videoMuteMember,videoUnmute:to.videoUnmuteMember,setInputVolume:to.setInputVolumeMember,setMicrophoneVolume:to.setInputVolumeMember,setInputSensitivity:to.setInputSensitivityMember}),ii=()=>{},ai="video.memberList.updated",ci=rr({event:ai}),di=(e=>{const t=e.split(".")[0];return e.split(".").reduce(((e,r)=>(e.push(r),r===t&&e.push(Ut),e)),[]).join(".")})(ci),ui=["video.room.joined","video.member.joined","video.member.left","video.member.updated"];function*li({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:di,payload:n})}for(;;){const t=yield Re(e,(({type:e})=>ui.includes(e)));yield Ne(r,t)}}const hi=function*({channels:{pubSubChannel:e},instance:t}){const r=t.getSubscriptions();if(!(e=>e.some((e=>e.includes(ci))))(r))return;const{cleanup:n}=((e,t)=>{(e=>hr(ui).filter((t=>!e.includes(t))))(t).forEach((t=>{e.once(t,ii)}));const r=({members:t})=>{e.emit(ai,{members:t})};return e.on(di,r),{cleanup:()=>{e.off(di,r)}}})(t,r);yield Ne(li,{pubSubChannel:e}),t.once("destroy",(()=>{n()}))},pi=function*(e){if(!e.initialState)throw new Error("[memberPositionWorker] Missing initialState");yield Ne(os.memberPositionWorker,e)},mi=or(class extends Js{_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=>to.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=>to.createRoomSessionPlaybackObject({store:this.store,emitter:this.emitter}),payloadTransform:e=>Zt({...e.playback,room_session_id:this.roomSessionId})}]])}getCompoundEvents(){return new Map([...os.MEMBER_POSITION_COMPOUND_EVENTS])}attachPreConnectWorkers(){this.runWorker("memberListUpdated",{worker:hi})}attachOnSubscribedWorkers(e){this.runWorker("memberPositionWorker",{worker:pi,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?ni: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=Hn({store:this.store,Component:oi,componentListeners:ri})(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=Hn({store:this.store,Component:si,componentListeners:ri})(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(Xs(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:to.audioMuteMember,audioUnmute:to.audioUnmuteMember,videoMute:to.videoMuteMember,videoUnmute:to.videoUnmuteMember,deaf:to.deafMember,undeaf:to.undeafMember,setInputVolume:to.setInputVolumeMember,setOutputVolume:to.setOutputVolumeMember,setMicrophoneVolume:to.setInputVolumeMember,setSpeakerVolume:to.setOutputVolumeMember,setInputSensitivity:to.setInputSensitivityMember,removeMember:to.removeMember,removeAllMembers:to.removeAllMembers,getMembers:to.getMembers,getLayouts:to.getLayouts,setLayout:to.setLayout,setPositions:to.setPositions,setMemberPosition:to.setMemberPosition,hideVideoMuted:to.hideVideoMuted,showVideoMuted:to.showVideoMuted,getRecordings:to.getRecordings,startRecording:to.startRecording,getPlaybacks:to.getPlaybacks,play:to.play,setHideVideoMuted:to.setHideVideoMuted,setMeta:to.setMeta,setMemberMeta:to.setMemberMeta}),fi=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 gi extends Yn{_eventsPrefix="video-manager";constructor(e){super(e),this.runWorker("videoManagerWorker",{worker:fi})}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 vi extends Xn{_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(ei,{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(Ys({rootElement:t,applyLocalVideoOverlay:r}));const a=(c={...s,store:this.store,emitter:this.emitter,customSagas:i},Hn({store:c.store,customSagas:c.customSagas,Component:mi,componentListeners:ri})(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=No.createBaseChatObject({store:this.store,emitter:this.options.emitter})),this._chat}get pubSub(){return this._pubSub||(this._pubSub=Ho.createBasePubSubObject({store:this.store,emitter:this.options.emitter})),this._pubSub}get videoManager(){return this._videoManager||(this._videoManager=(e=>{const t=Hn({store:e.store,Component:gi,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 yi(e){this.message=e}(yi.prototype=new Error).name="InvalidCharacterError";var bi="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new yi("'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 _i(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(bi(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 bi(t)}}function wi(e){this.message=e}function Si(e,t){if("string"!=typeof e)throw new wi("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(_i(e.split(".")[r]))}catch(e){throw new wi("Invalid token specified: "+e.message)}}(wi.prototype=new Error).name="InvalidTokenError";class ki 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.13.1";constructor(e){let t;try{t=Si(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 Si(this.options.token)?.r}catch(e){return""}}}const Ei=e=>{const t={...e,emitter:new St},r=Qn({userOptions:t,SessionConstructor:ki});return Hn({store:r,Component:vi,componentListeners:{errors:"onError",responses:"onSuccess"}})(t)},Ci=["subscribe","publish","updateToken","getMessages","getMembers","getMemberState","setMemberState"];var Ti=Object.freeze({__proto__:null,ChatMember:No.ChatMember,ChatMessage:No.ChatMessage,Client:function(e){const t=Ei(e);return new Proxy(t.chat,{get:(e,r,n)=>Ci.includes(r)?(e=>async(...r)=>(await t.connect(),t.chat[e](...r)))(r):Reflect.get(e,r,n)})}});const Ii=["subscribe","publish","updateToken"];var Mi=Object.freeze({__proto__:null,PubSubMessage:Ho.PubSubMessage,Client:function(e){const t=Ei(e);return new Proxy(t.pubSub,{get:(e,r,n)=>Ii.includes(r)?(e=>async(...r)=>(await t.connect(),t.pubSub[e](...r)))(r):Reflect.get(e,r,n)})}});const Pi={aspectRatio:{ideal:16/9}},Oi=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=Ei({...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?Pi:o,negotiateAudio:!0,negotiateVideo:!0,iceServers:s,rootElement:m,applyLocalVideoOverlay:a,stopCameraWhileMuted:d,stopMicrophoneWhileMuted:u,speakerId:l});f.once("destroy",(()=>{f.emit("room.left"),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)})),Ai={width:{ideal:1280,min:320},height:{ideal:720,min:180},aspectRatio:{ideal:16/9}},Ri=["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 xi=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=Ei(d),l=u.rooms.makeRoomObject({audio:t,video:!0===r?Ai:r,negotiateAudio:!0,negotiateVideo:!0,iceServers:n,rootElement:o,applyLocalVideoOverlay:s,stopCameraWhileMuted:i,stopMicrophoneWhileMuted:a,speakerId:c});l.once("destroy",(()=>{l.emit("room.left"),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,receiveAudio:t=!0,receiveVideo:r=!0})=>{const n=({remote:e,local:t,kind:r})=>{const n="none"!==e;return!n&&t&&Gt().warn(`[joinAudience] ${r} is currently not allowed on this room.`),!(!n||!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&&Ri.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:Oi,joinRoom:e=>Oi({...e,autoJoin:!0}),createClient:Ei}),ji=Object.freeze({__proto__:null,getDevices:Rs,getCameraDevices:()=>Rs("camera"),getMicrophoneDevices:()=>Rs("microphone"),getSpeakerDevices:()=>Rs("speaker"),getDevicesWithPermissions:Os,getCameraDevicesWithPermissions:()=>Os("camera"),getMicrophoneDevicesWithPermissions:()=>Os("microphone"),getSpeakerDevicesWithPermissions:()=>Os("speaker"),checkPermissions:Es,checkCameraPermissions:Cs,checkMicrophonePermissions:Ts,checkSpeakerPermissions:Is,requestPermissions:async e=>{try{const t=await Ms(e);ys(t)}catch(e){throw e}},createDeviceWatcher:Vs,createCameraDeviceWatcher:()=>Vs({targets:["camera"]}),createMicrophoneDeviceWatcher:()=>Vs({targets:["microphone"]}),createSpeakerDeviceWatcher:()=>Vs({targets:["speaker"]}),supportsMediaDevices:hs,supportsGetUserMedia:()=>"function"==typeof ps().getUserMedia,supportsGetDisplayMedia:()=>"function"==typeof ps().getDisplayMedia,getUserMedia:Ms,getDisplayMedia:Ps,enumerateDevices:Ss,getSupportedConstraints:ms,supportsMediaOutput:gs,setMediaElementSinkId:vs,stopStream:ys,stopTrack:bs,createMicrophoneAnalyzer:async e=>{const t=await(async e=>{if(Us(e))return e;let t;return t="string"==typeof e?{audio:{deviceId:e}}:{audio:e},Ms(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)})),Us(e)||t.getTracks().forEach((e=>e.stop())),r.emit("destroyed",null),r.removeAllListeners()};return new Proxy(r,{get:(e,t,r)=>"destroy"===t?c:Reflect.get(e,t,r)})}});e.Chat=Ti,e.PubSub=Mi,e.Video=xi,e.WebRTC=ji,Object.defineProperty(e,"__esModule",{value:!0})}));
7
7
  //# sourceMappingURL=index.umd.js.map