@stormstreaming/stormstreamer 0.9.0-beta.1 ā 0.9.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/amd/index.js +600 -232
- package/dist/cjs/index.js +3 -3
- package/dist/esm/index.js +3 -3
- package/dist/iife/index.js +3 -3
- package/dist/types/StormStreamer.d.ts +6 -3
- package/dist/types/events/StormStreamerEvent.d.ts +20 -1
- package/dist/types/playback/PlaybackController.d.ts +16 -6
- package/dist/types/playback/SoundMeter.d.ts +8 -7
- package/dist/types/stage/StageController.d.ts +5 -2
- package/dist/umd/index.js +3 -3
- package/package.json +1 -1
package/dist/umd/index.js
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* contact@stormstreaming.com
|
|
5
5
|
* https://stormstreaming.com
|
|
6
6
|
*
|
|
7
|
-
* Version: 0.9.0-beta.
|
|
8
|
-
* Version:
|
|
7
|
+
* Version: 0.9.0-beta.3
|
|
8
|
+
* Version: 12/5/2024, 2:36:50 PM
|
|
9
9
|
*
|
|
10
10
|
* LEGAL NOTICE:
|
|
11
11
|
* This software is subject to the terms and conditions defined in
|
|
12
12
|
* separate license conditions ('LICENSE.txt')
|
|
13
13
|
*
|
|
14
|
-
*/!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).stormStreamer={})}(this,function(o){"use strict";class r{constructor(e,t,i=443,n=!0){this.host=e,this.application=t,this.port=i,this.isSSL=n,this.hasFaild=!1}getHost(){return this.host}getApplication(){return this.application}getPort(){return this.port}getIfSSL(){return this.isSSL}getIfFaild(){return this.hasFaild}setAsFaild(e){this.hasFaild=e}getData(){return{serverURL:this.getHost(),application:this.getHost(),serverPort:this.getPort(),isSSL:this.getIfSSL()}}toString(){return"host: "+this.host+" | application: "+this.application+" | port: "+this.port+" | isSSL: "+this.isSSL}}class a{constructor(e){this._serverList=new Array,this._sourceList=new Array,this._streamKey=null,this.parse(e)}parse(e){if(this._streamConfig=e,!this._streamConfig)throw new Error("Stream configuration is missing. Please check stream config!");if(void 0===this._streamConfig.serverList||null===this._streamConfig.serverList)throw new Error("StormLibrary: Server list configuration is missing. Please check the config!");if(0===this._streamConfig.serverList.length)throw new Error("StormLibrary: Server list configuration is empty. Please check the config!");for(let i=0;i<this._streamConfig.serverList.length;i++){let e,t;if(null==this._streamConfig.serverList[i].host)throw new Error('Error while parsing server object ("host" field is missing). Please check player config!');if(e=this._streamConfig.serverList[i].host,null==this._streamConfig.serverList[i].application)throw new Error('Error while parsing server object ("application" field is missing). Please check player config!');t=this._streamConfig.serverList[i].application;var n=null!=(n=this._streamConfig.serverList[i].port)?n:a.DEFAULT_CONNECTION_PORT,s=null!=(s=this._streamConfig.serverList[i].ssl)?s:a.IS_SSL_BY_DEFAULT;this._serverList.push(new r(e,t,n,s))}this._streamKey=null!=(e=this._streamConfig.streamKey)?e:this._streamKey}getServerList(){return this._serverList}getSourceList(){return this._sourceList}get streamKey(){return this._streamKey}set streamKey(e){this._streamKey=e}set serverList(e){this._serverList=e}set sourceList(e){this._sourceList=e}clearSourceList(){this._sourceList=new Array}clearServerList(){this._serverList=new Array}print(t,e=!1){if(a.PRINT_ON_STARTUP||e){t.info(this,"Server List:");for(let e=0;e<this._serverList.length;e++)t.info(this,"=> ["+e+"] "+this._serverList[e].toString());t.info(this,"StreamKey: "+this._streamKey)}}}var s,i,n;a.PRINT_ON_STARTUP=!0,a.DEFAULT_CONNECTION_PORT=443,a.IS_SSL_BY_DEFAULT=!0,(p=s=s||{}).FILL="fill",p.LETTER_BOX="letterbox",p.CROP="crop",p.ORIGINAL="original",(p=i=i||{}).CLIENT_DIMENSIONS="clientDimensions",p.BOUNDING_BOX="boundingBox",p.FULL_BOX="fullBox";class t{constructor(e){this._scalingMode=s.LETTER_BOX,this._aspectRatio="none",this._videoWidthValue=100,this._isVideoWidthInPixels=!1,this._wasVideoWidthProvided=!1,this._videoHeightValue=100,this._isVideoHeightInPixels=!1,this._wasVideoHeightProvided=!1,this._resizeDebounce=250,this._parentSizeCalculationMethod=i.CLIENT_DIMENSIONS,this.parse(e)}parse(e){if(this.videoConfig=e,null==this.videoConfig)throw new Error("Missing video configuration. Please check player config!");if(null!=this.videoConfig.aspectRatio){var e=new RegExp("^[0-9]*\\.?[0-9]+:[0-9]*\\.?[0-9]+$"),t=this.videoConfig.aspectRatio;if(!e.test(t))throw new Error('Parameter "aspectRatio" - must match "number:number" pattern ');this._aspectRatio=t,this._aspectRatio=this.videoConfig.aspectRatio}if(null!=this.videoConfig.scalingMode)switch(this.videoConfig.scalingMode.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"crop":this._scalingMode=s.CROP;break;case"original":this._scalingMode=s.ORIGINAL;break;default:throw new Error("Unknown video scaling mode. Please check player config!")}if(void 0!==this.videoConfig.width){if(null===this.videoConfig.width)throw new Error('Parameter "width" cannot be empty');if("number"==typeof this.videoConfig.width)this._videoWidthValue=this.videoConfig.width,this._isVideoWidthInPixels=!0;else{if("string"!=typeof this.videoConfig.width)throw new Error('Unknown type for parameter "width" - it must be a number or a string! ');this.videoConfig.width.toLowerCase().endsWith("px")?(this._videoWidthValue=parseInt(this.videoConfig.width),this._isVideoWidthInPixels=!0):this.videoConfig.width.toLowerCase().endsWith("%")&&(this._videoWidthValue=parseInt(this.videoConfig.width),this._isVideoWidthInPixels=!1)}this._wasVideoWidthProvided=!0}if(void 0!==this.videoConfig.height){if(null===this.videoConfig.height)throw new Error('Parameter "height" cannot be empty');if("number"==typeof this.videoConfig.height)this._videoHeightValue=this.videoConfig.height,this._isVideoHeightInPixels=!0;else{if("string"!=typeof this.videoConfig.height)throw new Error('Unknown type for parameter "height" - it must be a number or a string!');this.videoConfig.height.toLowerCase().endsWith("px")?(this._videoHeightValue=parseInt(this.videoConfig.height),this._isVideoHeightInPixels=!0):this.videoConfig.height.toLowerCase().endsWith("%")&&(this._videoHeightValue=parseInt(this.videoConfig.height),this._isVideoHeightInPixels=!1)}this._wasVideoHeightProvided=!0}if(void 0!==this.videoConfig.sizeCalculationMethod&&null!==this.videoConfig.sizeCalculationMethod)switch(this.videoConfig.sizeCalculationMethod){case"clientDimensions":this._parentSizeCalculationMethod=i.CLIENT_DIMENSIONS;break;case"boundingBox":this._parentSizeCalculationMethod=i.BOUNDING_BOX;break;case"fullBox":this._parentSizeCalculationMethod=i.FULL_BOX}this._containerID=null!=(e=this.videoConfig.containerID)?e:null,this._resizeDebounce=null!=(t=this.videoConfig.resizeDebounce)?t:this._resizeDebounce}get scalingMode(){return this._scalingMode}get containerID(){return this._containerID}get videoWidthValue(){return this._videoWidthValue}get videoWidthInPixels(){return this._isVideoWidthInPixels}get videoWidthProvided(){return this._wasVideoWidthProvided}get videoHeightValue(){return this._videoHeightValue}get videoHeightInPixels(){return this._isVideoHeightInPixels}get videoHeightProvided(){return this._wasVideoHeightProvided}get aspectRatio(){return this._aspectRatio}get resizeDebounce(){return this._resizeDebounce}set resizeDebounce(e){this._resizeDebounce=e}set videoWidthValue(e){this._videoWidthValue=e}set videoWidthInPixels(e){this._isVideoWidthInPixels=e}set videoHeightValue(e){this._videoHeightValue=e}set videoHeightInPixels(e){this._isVideoHeightInPixels=e}set containerID(e){this._containerID=e}set scalingMode(e){switch(e.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"crop":this._scalingMode=s.CROP;break;case"original":this._scalingMode=s.ORIGINAL;break;default:throw new Error("Unknown video scaling mode. Please check player config!")}}get parentSizeCalculationMethod(){return this._parentSizeCalculationMethod}print(e){let t="";switch(this._scalingMode){case s.FILL:t="fill";break;case s.LETTER_BOX:t="letterbox";break;case s.CROP:t="crop";break;case s.ORIGINAL:t="original"}e.info(this,"VideoConfig :: containerID: "+this._containerID),e.info(this,"VideoConfig :: scalingMode: "+t),e.info(this,"VideoConfig :: width: "+this._videoWidthValue+(this._isVideoWidthInPixels?"px":"%")+(this._wasVideoWidthProvided?" (provided)":" (default)")),e.info(this,"VideoConfig :: height: "+this._videoHeightValue+(this._isVideoHeightInPixels?"px":"%")+(this._wasVideoHeightProvided?" (provided)":" (default)")),e.info(this,"VideoConfig :: aspectRatio: "+this._aspectRatio)}}(p=n=n||{})[p.TRACE=0]="TRACE",p[p.INFO=1]="INFO",p[p.SUCCESS=2]="SUCCESS",p[p.WARNING=3]="WARNING",p[p.ERROR=4]="ERROR";class h{constructor(e){this._consoleLogEnabled=!1,this._enabledConsoleTypes=[n.INFO,n.ERROR,n.SUCCESS,n.TRACE,n.WARNING],this._consoleMonoColor=!1,this._containerLogEnabled=!1,this._enabledContainerTypes=[n.INFO,n.ERROR,n.SUCCESS,n.TRACE,n.WARNING],this._containerLogMonoColor=!1,this.parse(e)}parse(e){this._debugConfig=e,this._debugConfig&&(this._consoleLogEnabled=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.enabled)?e:this._consoleLogEnabled,this._consoleMonoColor=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.monoColor)?e:this._consoleMonoColor,this._enabledConsoleTypes=null!=(e=this.parseLogTypes(null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.logTypes))?e:this._enabledConsoleTypes,this._containerLogEnabled=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.enabled)?e:this._containerLogEnabled,this._containerLogMonoColor=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.monoColor)?e:this._containerLogMonoColor,this._enabledContainerTypes=null!=(e=this.parseLogTypes(null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.logTypes))?e:this._enabledContainerTypes,this._containerID=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.containerID)?e:this._containerID)}parseLogTypes(e){return null==e?void 0:e.map(e=>{switch(e.toLowerCase()){case"info":return n.INFO;case"error":return n.ERROR;case"warning":return n.WARNING;case"success":return n.SUCCESS;case"trace":return n.TRACE;default:throw new Error("Unsupported log type: "+e)}})}get consoleLogEnabled(){return this._consoleLogEnabled}set consoleLogEnabled(e){this._consoleLogEnabled=e}get enabledConsoleTypes(){return this._enabledConsoleTypes}set enabledConsoleTypes(t){this._enabledConsoleTypes=new Array;for(let e=0;e<t.length;e++)switch(t[e].toLowerCase()){case"info":this._enabledConsoleTypes.push(n.INFO);break;case"error":this._enabledConsoleTypes.push(n.ERROR);break;case"warning":this._enabledConsoleTypes.push(n.WARNING);break;case"success":this._enabledConsoleTypes.push(n.SUCCESS);break;case"trace":this._enabledConsoleTypes.push(n.TRACE)}}get containerLogEnabled(){return this._containerLogEnabled}set containerLogEnabled(e){this._consoleLogEnabled=e}get consoleLogMonoColor(){return this._consoleMonoColor}set consoleLogMonoColor(e){this._consoleMonoColor=e}get enabledContainerTypes(){return this._enabledContainerTypes}set enabledContainerTypes(t){this._enabledContainerTypes=new Array;for(let e=0;e<t.length;e++)switch(t[e].toLowerCase()){case"info":this._enabledContainerTypes.push(n.INFO);break;case"error":this._enabledContainerTypes.push(n.ERROR);break;case"warning":this._enabledContainerTypes.push(n.WARNING);break;case"success":this._enabledContainerTypes.push(n.SUCCESS);break;case"trace":this._enabledContainerTypes.push(n.TRACE)}}get containerID(){return this._containerID}set containerID(e){this._containerID=e}get containerLogMonoColor(){return this._containerLogMonoColor}set containerLogMonoColor(e){this._containerLogMonoColor=e}print(e,t=!1){if(h.PRINT_ON_STARTUP||t){let t="";for(let e=0;e<this._enabledConsoleTypes.length;e++)switch(this._enabledConsoleTypes[e]){case n.TRACE:t+="TRACE, ";break;case n.SUCCESS:t+="SUCCESS, ";break;case n.WARNING:t+="WARNING, ";break;case n.INFO:t+="INFO, ";break;case n.ERROR:t+="ERROR, "}e.info(this,"Console:: enabled: "+this._consoleLogEnabled),e.info(this,"Console:: logTypes: "+t),e.info(this,"Console:: monoColor: "+this._consoleMonoColor);let i="";for(let e=0;e<this._enabledContainerTypes.length;e++)switch(this._enabledContainerTypes[e]){case n.TRACE:i+="TRACE, ";break;case n.SUCCESS:i+="SUCCESS, ";break;case n.WARNING:i+="WARNING, ";break;case n.INFO:i+="INFO, ";break;case n.ERROR:i+="ERROR, "}e.info(this,"Container:: enabled: "+this._containerLogEnabled),e.info(this,"Container:: logTypes: "+i),e.info(this,"Container:: containerID: "+this._containerID),e.info(this,"Container:: monoColor: "+this._consoleMonoColor)}}}h.PRINT_ON_STARTUP=!0;class l{constructor(e){this._startVolume=100,this._isMuted=!1,this.parse(e)}parse(e){this._audioConfig=e,this._audioConfig&&(this._startVolume=null!=(e=null==(e=this._audioConfig)?void 0:e.startVolume)?e:this._startVolume,this._isMuted=null!=(e=null==(e=this._audioConfig)?void 0:e.muted)?e:this._isMuted)}get startVolume(){return this._startVolume}set startVolume(e){this._startVolume=e}get muted(){return this._isMuted}set muted(e){this._isMuted=e}print(e,t=!1){(l.PRINT_ON_STARTUP||t)&&e.info(this,"Audio :: startVolume: "+this._startVolume+" | isMuted: "+this._isMuted)}}l.PRINT_ON_STARTUP=!0;class c{constructor(e){this._enabled=!0,this._prefix="storm",this.parse(e)}parse(e){this._storageConfig=e,this._enabled=null!=(e=null==(e=this._storageConfig)?void 0:e.enabled)?e:this._enabled,this._prefix=null!=(e=null==(e=this._storageConfig)?void 0:e.prefix)?e:this._prefix}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}print(e,t=!1){(c.PRINT_ON_STARTUP||t)&&e.info(this,"Storage :: startVolume: "+this._enabled+" | prefix: "+this._prefix)}}c.PRINT_ON_STARTUP=!0;class d{constructor(e){this._restartOnError=!0,this._reconnectTime=1,this._autoStart=!1,this._autoConnect=!0,this.startOnDOMReady=!1,this.iOSOnDomReadyFix=!0,this._restartOnFocus=!0,this.parse(e)}parse(e){this._settingsConfig=e,this._autoConnect=null!=(e=this._settingsConfig.autoConnect)?e:this._autoConnect,this._autoStart=null!=(e=this._settingsConfig.autoStart)?e:this._autoStart,this._restartOnFocus=null!=(e=this._settingsConfig.restartOnFocus)?e:this._restartOnFocus,this._restartOnError=null!=(e=this._settingsConfig.restartOnError)?e:this._restartOnError,this._reconnectTime=null!=(e=this._settingsConfig.reconnectTime)?e:this._reconnectTime,this._videoData=new t(null!=(e=this._settingsConfig.video)?e:null),this._audioData=new l(null!=(e=this._settingsConfig.audio)?e:null),this._storageData=new c(null!=(e=this._settingsConfig.storage)?e:null),this._debugData=new h(null!=(e=this._settingsConfig.debug)?e:null)}getAudioData(){return this._audioData}getVideoData(){return this._videoData}getStorageData(){return this._storageData}getIfRestartOnError(){return this._restartOnError}getReconnectTime(){return this._reconnectTime}get autoStart(){return this._autoStart}set autoStart(e){this._autoStart=e}get autoConnect(){return this._autoConnect}get restartOnFocus(){return this._restartOnFocus}getDebugData(){return this._debugData}getIfStartOnDOMReadyEnabled(){return this.startOnDOMReady}getIfIOSOnDomStartFixEnabled(){return this.iOSOnDomReadyFix}print(e,t=!1){(d.PRINT_ON_STARTUP||t)&&(e.info(this,"SettingsConfig :: autoConnect: "+this._autoConnect),e.info(this,"SettingsConfig :: autoStart: "+this._autoStart),e.info(this,"SettingsConfig :: restartOnError: "+this._restartOnError),e.info(this,"SettingsConfig :: reconnectTime: "+this._reconnectTime),e.info(this,"SettingsConfig :: enabledProtocols: "),this._videoData.print(e),this._audioData.print(e),this._debugData.print(e),this._debugData.print(e))}}d.PRINT_ON_STARTUP=!0;class g{constructor(e){this.PRINT_ON_STARTUP=!0,this.demoMode=!1,this.parse(e)}parse(e){if(this.configTemplate=e,null==this.configTemplate.stream)throw new Error("No stream field was provided. Please check your player config!");this.streamData=new a(this.configTemplate.stream),this.settingsData=new d(null!=(e=this.configTemplate.settings)?e:null),this.demoMode=null!=(e=this.configTemplate.demoMode)&&e}getStreamData(){return this.streamData}getSettingsData(){return this.settingsData}getIfDemoMode(){return this.demoMode}print(e,t=!1){(this.PRINT_ON_STARTUP||t)&&(this.streamData.print(e),this.settingsData.print(e))}}class u{static addLeadingZero(e){return e<10?"0"+e:String(e)}static isNear(e,t,i){return Math.abs(e-t)<=i}static generateUniqueString(t){let i="";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",s=n.length;for(let e=0;e<t;e++)i+=n.charAt(Math.floor(Math.random()*s));return i}}u.parseValue=e=>{var t;return"string"==typeof e?(t=e.toLowerCase().endsWith("px"),{value:parseInt(e,10),isPixels:t}):{value:e,isPixels:!0}};class _{constructor(e,t){this.colorOrder=["red","green","blue","orange","black","violet"],this._logMemory=[],this._streamerInstanceID=-1,this._debugConfig=e,this._stormStreamer=t,this._streamerInstanceID=this._stormStreamer.getStreamerID();e=this.colorOrder.length<t.getStreamerID()?this.colorOrder.length-1:t.getStreamerID();this._monoColor=this.colorOrder[e]}info(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.INFO)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.INFO_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.INFO)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.INFO_COLOR,this.writeToContainer(e,t))}warning(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.WARNING)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.WARNING_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.WARNING)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.WARNING_COLOR,this.writeToContainer(e,t))}error(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.ERROR)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.ERROR_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.ERROR)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.ERROR_COLOR,this.writeToContainer(e,t))}success(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.SUCCESS)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.SUCCESS_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.SUCCESS)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.SUCCESS_COLOR,this.writeToContainer(e,t))}trace(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.TRACE)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.TRACE_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.TRACE)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.TRACE_COLOR,this.writeToContainer(e,t))}logData(e,t){var i=new Date,n=u.addLeadingZero(i.getHours()),s=u.addLeadingZero(i.getMinutes()),i=u.addLeadingZero(i.getSeconds());let o=String(this._streamerInstanceID);0<=this._streamerInstanceID&&(o+="|"+this._streamerInstanceID);n="[Storm-ID:"+o+"] ["+n+":"+s+":"+i+"] :: "+t;return this._logMemory.push(n),n}writeToContainer(e,t){var i,n=this._debugConfig.containerID;n&&(n=document.getElementById(n),(i=document.createElement("span")).innerText=e,i.style.color=t,n.appendChild(i))}setPlayerID(e){this._streamerInstanceID=e}getAllLogs(){return this._logMemory}}_.INFO_COLOR="blue",_.WARNING_COLOR="orange",_.ERROR_COLOR="red",_.SUCCESS_COLOR="green",_.TRACE_COLOR="black";class e{constructor(){this.bandwidthCapabilities=0}setBandwidthCapabilities(e){this.bandwidthCapabilities=e}getBandwidthCapabilities(){return this.bandwidthCapabilities}}class m{static hasWebSocketsSupport(){return null!=window.WebSocket}static isMobile(){return new RegExp("Mobile|mini|Fennec|Android|iP(ad|od|hone)").test(navigator.userAgent)}static isCookieEnabled(){let e=!!navigator.cookieEnabled;return"undefined"!=typeof navigator.cookieEnabled||e||(document.cookie="testcookie",e=-1!=document.cookie.indexOf("testcookie")),e}static getOSVersion(){let e="Unknown version",t=m.getOS();if(null!=t){var i;switch(new RegExp("Windows").test(t)&&(i=new RegExp("Windows (.*)"),e=null!=i.exec(t)[1]?i.exec(t)[1]:e,t="Windows"),t){case"Mac OS":case"Mac OS X":case"Android":var n=new RegExp("(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([\\.\\_\\d]+)");e=n.exec(navigator.userAgent)[1];break;case"iOS":n=new RegExp("OS (\\d+)_(\\d+)_?(\\d+)?");e=(e=n.exec(navigator.userAgent))[1]+"."+e[2]+"."+(0|e[3])}}return e}static getBrowserName(){return m.getFullBrowser().name}static getBrowserVersion(){return m.getFullBrowser().version}static getFullBrowser(){var e=navigator.userAgent;let t=navigator.appName,i=""+parseFloat(navigator.appVersion),n=parseInt(navigator.appVersion,10),s,o,r;return-1!=(o=e.indexOf("Opera"))?(t="Opera",i=e.substring(o+6),-1!=(o=e.indexOf("Version"))&&(i=e.substring(o+8))):-1!=(o=e.indexOf("MSIE"))?(t="Microsoft Internet Explorer",i=e.substring(o+5)):"Netscape"==t&&-1!=e.indexOf("Trident/")?(t="Microsoft Internet Explorer",i=e.substring(o+5),-1!=(o=e.indexOf("rv:"))&&(i=e.substring(o+3))):-1!=(o=e.indexOf("Chrome"))?(t="Chrome",(-1<e.indexOf("FBAV")||-1<e.indexOf("FBAN"))&&(t="Facebook"),-1<e.indexOf("OPR")&&(t="Opera"),-1<e.indexOf("SamsungBrowser")&&(t="Samsung"),i=e.substring(o+7)):-1!=(o=e.indexOf("Safari"))?(t="Safari",i=e.substring(o+7),-1!=(o=e.indexOf("Version"))&&(i=e.substring(o+8)),-1!=e.indexOf("CriOS")&&(t="Chrome"),-1!=e.indexOf("FxiOS")&&(t="Firefox")):-1!=(o=e.indexOf("Firefox"))?(t="Firefox",i=e.substring(o+8)):(s=e.lastIndexOf(" ")+1)<(o=e.lastIndexOf("/"))&&(t=e.substring(s,o),i=e.substring(o+1),t.toLowerCase()==t.toUpperCase())&&(t=navigator.appName),-1!=(r=(i=-1!=(r=(i=-1!=(r=i.indexOf(";"))?i.substring(0,r):i).indexOf(" "))?i.substring(0,r):i).indexOf(")"))&&(i=i.substring(0,r)),n=parseInt(""+i,10),isNaN(n)&&(i=""+parseFloat(navigator.appVersion),n=parseInt(navigator.appVersion,10)),{name:t,fullVersion:i,version:n}}static getOS(){let e="Unknown OS";var t,i=[{os:"Windows 10",code:"(Windows 10.0|Windows NT 10.0)"},{os:"Windows 8.1",code:"(Windows 8.1|Windows NT 6.3)"},{os:"Windows 8",code:"(Windows 8|Windows NT 6.2)"},{os:"Windows 7",code:"(Windows 7|Windows NT 6.1)"},{os:"Windows Vista",code:"Windows NT 6.0"},{os:"Windows Server 2003",code:"Windows NT 5.2"},{os:"Windows XP",code:"(Windows NT 5.1|Windows XP)"},{os:"Windows 2000",code:"(Windows NT 5.0|Windows 2000)"},{os:"Windows ME",code:"(Win 9x 4.90|Windows ME)"},{os:"Windows 98",code:"(Windows 98|Win98)"},{os:"Windows 95",code:"(Windows 95|Win95|Windows_95)"},{os:"Windows NT 4.0",code:"(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)"},{os:"Windows CE",code:"Windows CE"},{os:"Windows 3.11",code:"Win16"},{os:"Android",code:"Android"},{os:"Open BSD",code:"OpenBSD"},{os:"Sun OS",code:"SunOS"},{os:"Chrome OS",code:"CrOS"},{os:"Linux",code:"(Linux|X11(?!.*CrOS))"},{os:"iOS",code:"(iPhone|iPad|iPod)"},{os:"Mac OS X",code:"Mac OS X"},{os:"Mac OS",code:"(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)"},{os:"QNX",code:"QNX"},{os:"UNIX",code:"UNIX"},{os:"BeOS",code:"BeOS"},{os:"OS/2",code:"OS\\/2"},{os:"Search Bot",code:"(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\\/Teoma|ia_archiver)"}];for(t in i){var n=i[t];if(new RegExp(n.code).test(navigator.userAgent)){e=n.os;break}}return e}static hasWebRTCSupport(){let t=!1;try{navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||window.RTCPeerConnection;t=!0}catch(e){t=!1}return t}static hasHLSSupport(e){return null!==e&&Boolean(e.canPlayType("application/vnd.apple.mpegURL")||e.canPlayType("audio/mpegurl"))}static hasMSESupport(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource;return window.SourceBuffer=window.SourceBuffer||window.WebKitSourceBuffer,e&&"function"==typeof e.isTypeSupported}static hasMMSSupport(){return window.ManagedMediaSource}static isSSL(){return"https:"===location.protocol}}class C{constructor(e){var t;this.LOG_ACTIVITY=!1,this.isEnabled=!0,this.prefix="",this.logger=e.getLogger(),this.isEnabled=null!=(t=null==(t=null==(t=e.getConfigManager())?void 0:t.getSettingsData())?void 0:t.getStorageData().enabled)?t:this.isEnabled,this.prefix=null!=(t=null==(e=null==(t=e.getConfigManager())?void 0:t.getSettingsData())?void 0:e.getStorageData().prefix)?t:this.prefix,this.LOG_ACTIVITY&&this.logger.info(this,"Creating new StorageManager")}saveField(e,t){1==this.isEnabled&&(this.LOG_ACTIVITY&&this.logger.info(this,"Saving data: "+e+" | "+t),localStorage.setItem(this.prefix+e,t))}getField(e){var t;return 1==this.isEnabled?(t=localStorage.getItem(this.prefix+e),this.LOG_ACTIVITY&&this.logger.info(this,"Grabbing data: "+e+" | "+t),t):null}}var p="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function f(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function v(){return A.Date.now()}var S=NaN,b="[object Symbol]",E=/^\s+|\s+$/g,w=/^[-+]0x[0-9a-f]+$/i,I=/^0b[01]+$/i,x=/^0o[0-7]+$/i,V=parseInt,p="object"==typeof p&&p&&p.Object===Object&&p,M="object"==typeof self&&self&&self.Object===Object&&self,A=p||M||Function("return this")(),F=Object.prototype.toString,U=Math.max,B=Math.min;function L(e){var t=typeof e;return e&&("object"==t||"function"==t)}function T(e){if("number"==typeof e)return e;if("symbol"==typeof(i=e)||!!(t=i)&&"object"==typeof t&&F.call(i)==b)return S;var t;if("string"!=typeof(e=L(e)?L(t="function"==typeof e.valueOf?e.valueOf():e)?t+"":t:e))return 0===e?e:+e;e=e.replace(E,"");var i=I.test(e);return i||x.test(e)?V(e.slice(2),i?2:8):w.test(e)?S:+e}var O,D,H=f(function(n,i,e){var s,o,r,a,h,l,c=0,d=!1,g=!1,t=!0;if("function"!=typeof n)throw new TypeError("Expected a function");function u(e){var t=s,i=o;return s=o=void 0,c=e,a=n.apply(i,t)}function _(e){var t=e-l;return void 0===l||i<=t||t<0||g&&r<=e-c}function m(){var e,t=v();if(_(t))return C(t);h=setTimeout(m,(e=i-((t=t)-l),g?B(e,r-(t-c)):e))}function C(e){return h=void 0,t&&s?u(e):(s=o=void 0,a)}function p(){var e=v(),t=_(e);if(s=arguments,o=this,l=e,t){if(void 0===h)return c=e=l,h=setTimeout(m,i),d?u(e):a;if(g)return h=setTimeout(m,i),u(l)}return void 0===h&&(h=setTimeout(m,i)),a}return i=T(i)||0,L(e)&&(d=!!e.leading,g="maxWait"in e,r=g?U(T(e.maxWait)||0,i):r,t="trailing"in e?!!e.trailing:t),p.cancel=function(){void 0!==h&&clearTimeout(h),s=l=o=h=void(c=0)},p.flush=function(){return void 0===h?a:C(v())},p});class z{constructor(e){this.LOG_ACTIVITY=!0,this._volume=100,this._isMuted=!1,this._isMutedByBrowser=!1,this.onForceMute=()=>{this._isMuted=!0,this._isMutedByBrowser=!0,this.dispatchVolumeEvent()},this._main=e,this._logger=e.getLogger(),this._videoElement=document.createElement("video"),this._main.addEventListener("playbackForceMute",this.onForceMute,!1);let t=null!=(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData().getAudioData().startVolume)?e:100,i=null!=(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData().getAudioData().muted)&&e;null!=(null==(e=this._main.getStorageManager())?void 0:e.getField("volume"))&&(t=Number(this._main.getStorageManager().getField("volume"))),null!=(null==(e=this._main.getStorageManager())?void 0:e.getField("muted"))&&"true"==this._main.getStorageManager().getField("muted")&&(i=!0,this._isMutedByBrowser=!0),this._volume=t,this._isMuted=i,this.LOG_ACTIVITY&&this._logger.info(this,"VideoElement :: Start Volume: "+this._volume+" | Muted: "+this._isMuted),this._videoElement.volume=this._volume/100,this._videoElement.muted=this._isMuted,this._videoElement.setAttribute("playsinline","playsinline"),this._videoElement.setAttribute("webkit-playsinline","webkit-playsinline"),this._main.dispatchEvent("videoElementCreate",{ref:this._main,videoElement:this._videoElement}),this.initialize()}initialize(){this._videoElement.onload=function(e){},this._videoElement.onstalled=e=>{this._logger.info(this,"VideoElement :: onstalled")},this._videoElement.onerror=e=>{this._logger.info(this,"VideoElement :: onerror :: "+JSON.stringify(e))},this._videoElement.onvolumechange=()=>{this.dispatchVolumeEvent()},this._videoElement.onpause=()=>{},this._videoElement.ontimeupdate=function(e){},this._videoElement.onended=e=>{this._logger.info(this,"VideoElement :: onended")},this._videoElement.onplay=()=>{}}setVolume(e){this._isMuted&&0<e&&this.setMuted(!1),this._volume=e,this._videoElement.volume=e/100,this._main.getStorageManager().saveField("volume",String(e)),0==e&&this.setMuted(!0)}getVolume(){return this._volume}setMuted(e){this._isMuted=e,this._videoElement.muted=e,this._isMutedByBrowser=!1,this._main.getStorageManager().saveField("muted",String(e)),0!=this.getVolume()||e||this.setVolume(100)}getIfMuted(){return this._isMuted}dispatchVolumeEvent(){var e=this._isMutedByBrowser?"browser":"user",t={volume:this._volume,isMuted:this._isMuted,type:e};this.LOG_ACTIVITY&&this._logger.info(this,"ScreenElement :: Event: onVolumeChange: "+JSON.stringify(t)),this._main.dispatchEvent("volumeChange",{ref:this._main,volume:this._volume,muted:this._isMuted,invokedBy:e})}getVideoElement(){return this._videoElement}}class R{static calculateDimensionsWithMargins(e){var t=window.getComputedStyle(e),e=e.getBoundingClientRect(),i=parseFloat(t.paddingLeft),n=parseFloat(t.paddingRight),s=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),r=parseFloat(t.borderLeftWidth),a=parseFloat(t.borderRightWidth),h=parseFloat(t.borderTopWidth),t=parseFloat(t.borderBottomWidth);return{width:e.width-i-n-r-a,height:e.height-s-o-h-t}}}class y{constructor(e){this._containerWidth=0,this._tempContainerWidth=0,this._containerHeight=0,this._tempContainerHeight=0,this._videoWidth=0,this._videoHeight=0,this._scalingMode=s.FILL,this.isInFullScreenMode=!1,this._autoResizeEnabled=!0,this.onFullScreenChange=()=>{null==document.fullscreenElement?(this.isInFullScreenMode=!1,this._logger.info(this,"The library has exited FullScreen mode!"),this._main.dispatchEvent("fullScreenExit",{ref:this._main})):(this.isInFullScreenMode=!0,this._logger.info(this,"The library has entered FullScreen mode!"),this._main.dispatchEvent("fullScreenEnter",{ref:this._main}))},this.onResize=()=>{if(null!=this._parentElement){var e=this._main.getConfigManager().getSettingsData().getVideoData().parentSizeCalculationMethod;switch(this._videoContainer.style.display="none",e){case i.CLIENT_DIMENSIONS:this._tempContainerWidth=this._parentElement.clientWidth,this._tempContainerHeight=this._parentElement.clientHeight;break;case i.BOUNDING_BOX:this._tempContainerWidth=this._parentElement.getBoundingClientRect().width,this._tempContainerHeight=this._parentElement.getBoundingClientRect().height;break;case i.FULL_BOX:this._tempContainerWidth=R.calculateDimensionsWithMargins(this._parentElement).width,this._tempContainerHeight=R.calculateDimensionsWithMargins(this._parentElement).height}this._logger.info(this,"onResize called: "+this._tempContainerWidth+"x"+this._tempContainerHeight+" ("+e+")"),this.resizeVideoContainer(),this.scaleVideo(),this._videoContainer.style.display="block",this._main.dispatchEvent("resizeUpdate",{ref:this._main,width:this._tempContainerWidth,height:this._tempContainerHeight})}},this._main=e,this._logger=e.getLogger(),this._logger.info(this,"Creating new StageController"),this.initialize()}initialize(){var e=null!=(e=null==(e=null==(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData())?void 0:e.getVideoData())?void 0:e.containerID)?e:null,t=(this._scalingMode=null!=(t=null==(t=this._main.getConfigManager())?void 0:t.getSettingsData().getVideoData().scalingMode)?t:s.FILL,this._videoContainer=document.createElement("div"),this._videoContainer.setAttribute("id","stormStreamer_"+this._main.getStreamerID()),this._videoContainer.style.overflow="hidden",this._videoContainer.style.position="relative",this._videoContainer.classList.add("stormStreamer"),this._screenElement=new z(this._main),this._videoContainer.appendChild(this._screenElement.getVideoElement()),this._main.getConfigManager().getSettingsData().getVideoData().resizeDebounce);this._resizeObserver=0<t?new ResizeObserver(H(()=>()=>{this._autoResizeEnabled&&this.onResize()},t,{leading:!1,trailing:!0})):new ResizeObserver(()=>{this._autoResizeEnabled&&this.onResize()}),document.addEventListener("fullscreenchange",this.onFullScreenChange,!1),document.addEventListener("webkitfullscreenchange",this.onFullScreenChange,!1),document.addEventListener("mozfullscreenchange",this.onFullScreenChange,!1),document.addEventListener("webkitendfullscreen",this.onFullScreenChange,!1),this._screenElement.getVideoElement().addEventListener("webkitendfullscreen",this.onFullScreenChange,!1),e?this.attachToParent(e):this._logger.warning(this,'Could not create HTMLObject for the library - "containerID" was not provided')}attachToParent(e){let t=!1,i=null;return console.log("xxxxxxxxx",e),"string"==typeof e?(this._logger.info(this,"Attaching container to ID: "+e),i=document.getElementById(e),console.log(">>",document.getElementById(e))):e instanceof HTMLElement&&(this._logger.info(this,"Attaching container to HTMLElement: "+e),i=e),i===this._parentElement?(this._logger.warning(this,"attachToParent :: container is the same"),!1):(i&&this._videoContainer?(this._parentElement=i,this._parentElement.appendChild(this._videoContainer),this._resizeObserver.observe(this._parentElement),this._parentElement.addEventListener("transitionend",()=>{this.onResize()}),this._main.dispatchEvent("containerChange",{ref:this._main,container:this._parentElement}),this.onResize(),t=!0):(console.log("tempParentElement",i),console.log("this._videoContainer",this._videoContainer),this._logger.warning(this,"attachToParent :: container was not found")),t)}detachFromParent(){let e=!1;return null!=this._parentElement&&null!=this._videoContainer?(this._logger.info(this,"Detaching from parent: "+this._videoContainer),this._parentElement.removeChild(this._videoContainer),this._resizeObserver&&(this._resizeObserver.unobserve(this._parentElement),this._resizeObserver.disconnect()),this._autoResizeEnabled&&this._parentElement.removeEventListener("transitionend",this.onResize),this._main.dispatchEvent("containerChange",{ref:this._main,container:null}),e=!0):this._logger.info(this,"Failed detaching from parent!"),this._parentElement=null,e}resizeVideoContainer(){var e=this._main.getConfigManager().getSettingsData().getVideoData().videoWidthInPixels,t=this._main.getConfigManager().getSettingsData().getVideoData().videoHeightInPixels,i=this._main.getConfigManager().getSettingsData().getVideoData().videoWidthValue,n=this._main.getConfigManager().getSettingsData().getVideoData().videoHeightValue,s=this._main.getConfigManager().getSettingsData().getVideoData().aspectRatio;let o=0,r=0;var a=Number(s.split(":")[0]),h=Number(s.split(":")[1]);"none"==s?(e?o=i:null!=this._parentElement&&(o=this._tempContainerWidth*i/100),t?r=n:null!=this._parentElement&&0==(r=this._tempContainerHeight*n/100)&&0!=this._videoHeight&&0!=this._videoWidth&&(r=this._videoHeight*o/this._videoWidth)):(e?o=i:null!=this._parentElement&&(o=this._tempContainerWidth*i/100),r=o*h/a),this._containerWidth=Math.ceil(o),this._containerHeight=Math.ceil(r),this._videoWidth=this._containerWidth,this._videoHeight=this._containerHeight,null!==this._videoContainer&&(this._videoContainer.style.width=this._containerWidth+"px",this._videoContainer.style.height=this._containerHeight+"px")}scaleVideo(){if(null!==this._screenElement){let e=0,t=0,i=0,n=0;switch(this._scalingMode){case s.FILL:i=this._containerWidth,n=this._containerHeight;break;case s.CROP:i=this._containerWidth,(n=this._videoHeight*this._containerWidth/this._videoWidth)>=this._containerHeight?(e=0,t=(n-this._containerHeight)/2*-1):(n=this._containerHeight,i=this._videoWidth*this._containerHeight/this._videoHeight,t=0,e=(i-this._containerWidth)/2*-1);break;case s.LETTER_BOX:i=this._containerWidth,(!((n=this._videoHeight*this._containerWidth/this._videoWidth)<=this._containerHeight)||(e=0,t=(n-this._containerHeight)/2*-1,n>this._containerHeight))&&(n=this._containerHeight,i=this._videoWidth*this._containerHeight/this._videoHeight,t=0,e=(i-this._containerWidth)/2*-1);break;case s.ORIGINAL:i=this._videoWidth,n=this._videoHeight,e=(this._videoWidth-this._containerWidth)/-2,t=(this._videoHeight-this._containerHeight)/-2}this._screenElement.getVideoElement().style.left=Math.floor(e)+"px",this._screenElement.getVideoElement().style.top=Math.floor(t)+"px",this._screenElement.getVideoElement().style.width=Math.ceil(i)+"px",this._screenElement.getVideoElement().style.height=Math.ceil(n)+"px",this._screenElement.getVideoElement().style.position="absolute",this._screenElement.getVideoElement().style.objectFit="fill"}}enterFullScreen(){var e;null!=(e=this._screenElement)&&e.getVideoElement().webkitEnterFullScreen?null!=(e=this._screenElement)&&e.getVideoElement().webkitEnterFullScreen():null!=(e=this._screenElement)&&e.getVideoElement().requestFullscreen()}exitFullScreen(){var e;null!=(e=this._screenElement)&&e.getVideoElement().webkitExitFullscreen?document.webkitExitFullscreen():document.exitFullscreen()}isFullScreenMode(){return this.isInFullScreenMode}setDimension(e,t){var i="width"===e?"videoWidth":"videoHeight";let n,s;if("number"==typeof t)s=t,n=!0;else{if("string"!=typeof t)throw new Error(`Unknown value for parameter "${e}" - it must be a number or a string!`);s=parseInt(t),n=t.toLowerCase().endsWith("px")}this._main.getConfigManager().getSettingsData().getVideoData()[i+"Value"]=s,this._main.getConfigManager().getSettingsData().getVideoData()[i+"InPixels"]=n,this.resizeVideoContainer(),this.scaleVideo()}setSize(e,t){this.setDimension("width",e),this.setDimension("height",t)}setWidth(e){this.setDimension("width",e)}setHeight(e){this.setDimension("height",e)}getParentElement(){return this._parentElement}setScalingMode(e){switch(e.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"crop":this._scalingMode=s.CROP;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"original":this._scalingMode=s.ORIGINAL}this.scaleVideo()}getContainerWidth(){return this._containerWidth}getContainerHeight(){return this._containerHeight}getScalingModeAsString(){let e="";switch(this._scalingMode){case s.FILL:e="fill";break;case s.CROP:e="crop";break;case s.LETTER_BOX:e="letterbox";break;case s.ORIGINAL:e="original"}return e}getScalingMode(){return this._scalingMode}getScreenElement(){return this._screenElement}getContainer(){return this._videoContainer}destroy(){this.detachFromParent()}}y.LOG_ACTIVITY=!0;class N{constructor(){}addAudio(e,t){let i="",n="",s=!1;for(const o of e.split(/\r\n/))o.length<=0||(0===o.indexOf("m=audio")?i="audio":0===o.indexOf("m=video")&&(i="video"),n=n+o+"\r\n","audio"!==i)||0!=="a=rtcp-mux".localeCompare(o)||s||(n+=t,s=!0);return n}addVideo(e,t){e=e.split(/\r\n/);let i="",n=!1,s=!1;for(const r of e)r.length<=0||(r.includes("a=rtcp-rsize")&&(s=!0),r.includes("a=rtcp-mux"));let o=!1;for(const a of e)a.startsWith("m=video")&&(o=!0),i=i+a+"\r\n",o&&(0==="a=rtcp-rsize".localeCompare(a)&&!n&&s&&(i+=t,n=!0),0==="a=rtcp-mux".localeCompare(a)&&n&&!s&&(i+=t,n=!0),0!=="a=rtcp-mux".localeCompare(a)||n||s||(n=!0));return i}deliverCheckLine(e,t){for(const n in N.SDPOutput){var i=N.SDPOutput[n];if(i.includes(e)){if(e.includes("VP9")||e.includes("VP8")){let e="";for(const s of i.split(/\r\n/))e=e+s+"\r\n";return t.includes("audio")&&(N.audioIndex=parseInt(n)),t.includes("video")&&(N.videoIndex=parseInt(n)),e}return t.includes("audio")&&(N.audioIndex=parseInt(n)),t.includes("video")&&(N.videoIndex=parseInt(n)),i}}return""}checkLine(t){if(t.startsWith("a=rtpmap")||t.startsWith("a=rtcp-fb")||t.startsWith("a=fmtp")){var i=t.split(":");if(1<i.length){i=i[1].split(" ");if(!isNaN(parseInt(i[0]))&&!i[1].startsWith("http")&&!i[1].startsWith("ur")){let e=N.SDPOutput[i[0]];return e=e||"",e+=t+"\r\n",N.SDPOutput[i[0]]=e,!1}}}return!0}getrtpMapID(e){var t=new RegExp("a=rtpmap:(\\d+) (\\w+)/(\\d+)"),e=e.match(t);return e&&3<=e.length?e:null}mungeSDPPublish(e,t){N.SDPOutput={},N.videoChoice="42e01f",N.audioChoice="opus",N.videoIndex=-1,N.audioIndex=-1;e=e.split(/\r\n/);let i="header",n=!1,s="";null!=t.videoCodec&&""!==t.videoCodec&&(N.videoChoice=t.videoCodec),null!=t.audioCodec&&""!==t.audioCodec&&(N.audioChoice=t.audioCodec);for(const a of e)a.length<=0||this.checkLine(a)&&(s=s+a+"\r\n");s=this.addAudio(s,this.deliverCheckLine(N.audioChoice,"audio"));var o,r,e=(s=this.addVideo(s,this.deliverCheckLine(N.videoChoice,"video"))).split(/\r\n/);s="";for(const h of e)if(!(h.length<=0)){let e;if(0===h.indexOf("m=audio")&&-1!==N.audioIndex)e=h.split(" "),s+=e[0]+" "+e[1]+" "+e[2]+" "+N.audioIndex+"\r\n",i="audio",n=!1;else if(0===h.indexOf("m=video")&&-1!==N.videoIndex)e=h.split(" "),s+=e[0]+" "+e[1]+" "+e[2]+" "+N.videoIndex+"\r\n",i="video",n=!1;else{if(s+=h,0===h.indexOf("a=rtpmap")&&(i="bandwidth",n=!1),"chrome"!==m.getBrowserName().toLowerCase()&&"safari"!==m.getBrowserName().toLowerCase()||0!==h.indexOf("a=mid:")&&0!==h.indexOf("a=rtpmap")||n||(0==="audio".localeCompare(i)?(void 0!==t.audioBitrate&&""!==t.audioBitrate&&(s=(s+="\r\nb=CT:"+t.audioBitrate)+"\r\nb=AS:"+t.audioBitrate),n=!0):0==="video".localeCompare(i)?(void 0!==t.videoBitrate&&""!==t.videoBitrate&&(s=(s+="\r\nb=CT:"+t.videoBitrate)+"\r\nb=AS:"+t.videoBitrate,void 0!==t.videoFrameRate)&&(s+="\r\na=framerate:"+t.videoFrameRate),n=!0):"chrome"===m.getBrowserName().toLowerCase()&&0==="bandwidth".localeCompare(i)&&null!==(r=this.getrtpMapID(h))&&(o=r[2].toLowerCase(),0!=="vp9".localeCompare(o)&&0!=="vp8".localeCompare(o)&&0!=="h264".localeCompare(o)&&0!=="red".localeCompare(o)&&0!=="ulpfec".localeCompare(o)&&0!=="rtx".localeCompare(o)||void 0!==t.videoBitrate&&(s+="\r\na=fmtp:"+r[1]+" x-google-min-bitrate="+t.videoBitrate+";x-google-max-bitrate="+t.videoBitrate),0!=="opus".localeCompare(o)&&0!=="isac".localeCompare(o)&&0!=="g722".localeCompare(o)&&0!=="pcmu".localeCompare(o)&&0!=="pcma".localeCompare(o)&&0!=="cn".localeCompare(o)||void 0!==t.audioBitrate&&(s+="\r\na=fmtp:"+r[1]+" x-google-min-bitrate="+t.audioBitrate+";x-google-max-bitrate="+t.audioBitrate))),"firefox"===m.getBrowserName().toLowerCase()&&0===h.indexOf("c=IN")){if(0==="audio".localeCompare(i)){""!==t.audioBitrate&&"string"==typeof t.audioBitrate&&(o=parseInt(t.audioBitrate),s=(s+="\r\nb=TIAS:"+(1e3*o*.95-16e3)+"\r\n")+"b=AS:"+o+"\r\nb=CT:"+o+"\r\n");continue}if(0==="video".localeCompare(i)){""!==t.videoBitrate&&"string"==typeof t.videoBitrate&&(r=parseInt(t.videoBitrate),s=(s+="\r\nb=TIAS:"+1e3*(1e3*r*.95-16e3)+"\r\n")+"b=AS:"+r+"\r\nb=CT:"+r+"\r\n");continue}}s+="\r\n"}}return s}mungeSDPPlay(e){let n="";for(const r of e.split(/\r\n/))if(0!==r.length){if(r.includes("profile-level-id")){var s=r.substr(r.indexOf("profile-level-id")+17,6);let e=Number("0x"+s.substr(0,2)),t=Number("0x"+s.substr(2,2)),i=Number("0x"+s.substr(4,2));66<e&&(e=66,t=224,i=31),0===t&&(t=224);var o=("00"+e.toString(16)).slice(-2).toLowerCase()+("00"+t.toString(16)).slice(-2).toLowerCase()+("00"+i.toString(16)).slice(-2).toLowerCase();n+=r.replace(s,o)}else n+=r;n+="\r\n"}return n}}N.SDPOutput={},(p=O=O||{})[p.VIDEO_INPUT=0]="VIDEO_INPUT",p[p.AUDIO_INPUT=1]="AUDIO_INPUT";class k{constructor(e,t){if(this._groupID="",this._isSelected=!1,null==e)throw new Error("no input device");if(void 0===e.deviceId||null===e.deviceId)throw new Error("no deviceID");if(this._id=e.deviceId,void 0===e.kind||null===e.kind)throw new Error("no device kind");switch(e.kind){case"videoinput":this._inputType=O.VIDEO_INPUT;break;case"audioinput":this._inputType=O.AUDIO_INPUT;break;default:throw new Error("incorrect kind")}null!==e.label&&""!==e.label?this._label=this.cleanLabel(e.label):this._label=this._inputType==O.VIDEO_INPUT?"Camera "+t:"Microphone "+t,void 0!==e.groupId&&null!==e.groupId&&(this._groupID=e.groupId)}cleanLabel(e){return e}getLabel(){return this._label}getID(){return this._id}getGroupID(){return this._groupID}getIfSelected(){return this._isSelected}setSelected(e){this._isSelected=e}}class W{constructor(){this._internalList=new Array}push(t){let i=!1;if(0<this._internalList.length){for(let e=0;e<this._internalList.length;e++)""!==this._internalList[e].getGroupID()&&this._internalList[e].getGroupID()==t.getGroupID()&&(i=!0,this._internalList[e]=t);return 0==i?this._internalList.push(t):this._internalList.length}return this._internalList.push(t)}get(e){return this._internalList[e]}getSize(){return this._internalList.length}getArray(){return this._internalList}}o.PublishState=void 0,(M=o.PublishState||(o.PublishState={})).NOT_INITIALIZED="NOT_INITIALIZED",M.INITIALIZED="INITIALIZED",M.CONNECTING="CONNECTING",M.PUBLISHED="PUBLISHED",M.UNPUBLISHED="UNPUBLISHED",M.STOPPED="STOPPED",M.UNKNOWN="UNKNOWN",M.ERROR="ERROR";class G{constructor(e){this._instant=0,this._slow=0,this.clip=0,this._main=e}attach(e){this._stream=e,this.audioContext=new AudioContext,this.microphone=this.audioContext.createMediaStreamSource(e),this.processor=this.audioContext.createScriptProcessor(2048,1,1),this.microphone.connect(this.processor),this.processor.connect(this.audioContext.destination),this.processor.onaudioprocess=e=>{this.onAudioProcess(e)}}detach(){null!==this.microphone&&this.microphone.disconnect(),null!==this.processor&&this.processor.disconnect()}clear(){this._instant=0,this._slow=0,this.clip=0}onAudioProcess(e){var t=e.inputBuffer.getChannelData(0);let i,n=0,s=0;for(i=0;i<t.length;++i)n+=t[i]*t[i],.99<Math.abs(t[i])&&(s+=1);this._instant=Math.sqrt(n/t.length),this._slow=.05*this._instant+.95*this._slow,this.clip=s/t.length,this._main.dispatchEvent("soundMeter",{ref:this._main,high:this._instant,low:this._slow})}}class X{constructor(e){this._isWindowActive=!0,this._peerConnectionConfig={iceServers:[]},this._isMicrophoneMuted=!1,this._constraints={video:{width:{min:"640",ideal:"1024",max:"1024"},height:{min:"360",ideal:"576",max:"576"},frameRate:{min:24,ideal:30,max:30}},audio:!0},this._publishState=o.PublishState.NOT_INITIALIZED,this.onServerDisconnect=()=>{},this.onServerConnect=()=>{this._peerConnection=new RTCPeerConnection(this._peerConnectionConfig),this._peerConnection.onicecandidate=e=>{this.onIceCandidate(e)},this._peerConnection.onconnectionstatechange=e=>{this.onConnectionStateChange(e)},this._peerConnection.onnegotiationneeded=e=>{this._peerConnection.createOffer(e=>{this.onDescriptionSuccess(e)},e=>{this.onDescriptionError(e)}).catch(e=>{console.log(e)})};var e,t=this._stream.getTracks();for(e in t)this._peerConnection.addTrack(t[e],this._stream)},this.onDescriptionSuccess=t=>{var e;console.log("%cāµ š„ onDescriptionSuccess ","background: green; color: white;");const i={applicationName:null==(e=null==(e=this._main.getNetworkController())?void 0:e.getConnection().getCurrentServer())?void 0:e.getApplication(),streamName:null==(e=this._main.getConfigManager())?void 0:e.getStreamData().streamKey,sessionId:"[empty]"};t.sdp=this._mungeSDP.mungeSDPPublish(t.sdp,{audioBitrate:"64",videoBitrate:"1500",videoFrameRate:30,videoCodec:"42e01f",audioCodec:"opus"}),this._peerConnection.setLocalDescription(t).then(()=>{var e;null!=(e=this._main.getNetworkController())&&e.sendMessage('{"direction":"publish", "command":"sendOffer", "streamInfo":'+JSON.stringify(i)+', "sdp":'+JSON.stringify(t)+"}")}).catch(e=>{console.log(e)})},this.visibilityChange=()=>{"hidden"===document.visibilityState?this.onWindowBlur():"visible"===document.visibilityState&&this.onWindowFocus()},this.onWindowBlur=()=>{this._isWindowActive&&this._logger.warning(this,"Player window is no longer in focus!"),this._isWindowActive=!1},this.onWindowFocus=()=>{this._isWindowActive||this._logger.info(this,"Player window is focused again!"),this._isWindowActive=!0},this._main=e,this._logger=e.getLogger(),this._logger.info(this,"Creating new PlaybackController"),this._mungeSDP=new N,this._soundMeter=new G(this._main),this.initialize()}initialize(){var e;this._main.addEventListener("serverConnect",this.onServerConnect,!1),this._main.addEventListener("serverDisconnect",this.onServerDisconnect,!1),document.addEventListener("visibilitychange",this.visibilityChange),window.addEventListener("blur",this.onWindowBlur),window.addEventListener("focus",this.onWindowFocus),null!=(e=this._main.getConfigManager())&&e.getSettingsData().autoConnect?(this._logger.info(this,"Initializing NetworkController (autoConnect is true)"),null!=(e=this._main.getNetworkController())&&e.initialize()):this._logger.warning(this,"Warning - autoConnect is set to false, switching to standby mode!"),null!=(null==(e=this._main.getConfigManager())?void 0:e.getStreamData().streamKey)&&this.startWebRTC()}startWebRTC(){try{navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(this._constraints).then(e=>{this.onUserMediaSuccess(e)}).catch(e=>{this.onUserMediaError(e)}):(this._logger.error(this,"WebRTCStreamer :: Browser does not support WebRTC"),this._main.dispatchEvent("compatibilityError",{ref:this._main,message:"WebRTC is not supported"}))}catch(e){this.onUserMediaError(e)}}publish(e){this._publishState==o.PublishState.PUBLISHED&&this.closeStream(),this._main.getConfigManager().getStreamData().streamKey=e,this.startWebRTC()}unpublish(){this.closeStream()}onUserMediaSuccess(e){console.log("%cāµ š„ onUserMediaSuccess","background: green; color: white;"),this._logger.success(this,"WebRTCStreamer :: WebRTC UserMedia successfully retrieved"),this._stream=e,this._soundMeter.attach(this._stream),this.setPublishState(o.PublishState.INITIALIZED),null!=this._cameraList&&null!=this._microphoneList||this.grabDevices();var t=this._main.getStageController().getScreenElement().getVideoElement();t.muted=!0,t.srcObject=e,t.autoplay=!0,t.playsInline=!0,t.disableRemotePlayback=!0,t.controls=!1,null!=(e=this._main.getNetworkController())&&e.start()}onUserMediaError(e){switch(console.log("%cāµ š„ onUserMediaError: "+JSON.stringify(e),"background: green; color: white;"),e.message){case"Permission denied":case"The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.":case"The request is not allowed by the user agent or the platform in the current context.":this._logger.warning(this,"WebRTCStreamer :: No permission to access camera & microphone"),this._main.dispatchEvent("inputDeviceDenied",{ref:this._main});break;case"The object can not be found here.":case"Requested device not found":this._logger.warning(this,"WebRTCStreamer :: Could not access camera or microphone"),this._main.dispatchEvent("inputDeviceError",{ref:this._main});break;default:this._logger.warning(this,"WebRTCStreamer :: Unsupported onUserMediaError: "+e.message)}}onSocketMessage(e){var t=JSON.parse(e);switch(Number(t.status)){case 200:console.log("%cāµ š„ onSocketMessage: 200","background: green; color: white;");var i=t.sdp,n=(void 0!==i&&this._peerConnection.setRemoteDescription(new RTCSessionDescription(i),()=>{},()=>{}),t.iceCandidates);if(void 0!==n)for(var s in n)this._peerConnection.addIceCandidate(new RTCIceCandidate(n[s]));break;case 503:console.log("%cāµ š„ onSocketMessage: 503","background: green; color: white;"),this._main.dispatchEvent("streamKeyInUse",{ref:this._main,streamKey:this._main.getConfigManager().getStreamData().streamKey}),this.setPublishState(o.PublishState.ERROR)}}onConnectionStateChange(e){if(console.log("%cāµ š„ onConnectionStateChange: "+e.currentTarget.connectionState,"background: green; color: white;"),null!==e)switch(e.currentTarget.connectionState){case"connecting":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerConnecting"),this.setPublishState(o.PublishState.CONNECTING);break;case"connected":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerConnected"),this.setPublishState(o.PublishState.PUBLISHED),1==this._isMicrophoneMuted&&this.muteMicrophone(!1);break;case"disconnected":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerDisconnected"),this.setPublishState(o.PublishState.UNPUBLISHED);break;case"failed":this._logger.info(this,"WebRTCStreamer :: Event: onPlayerFailed"),this.setPublishState(o.PublishState.ERROR);break;default:this._logger.info(this,"WebRTCStreamer :: Unsupported onConnectionStateChange: "+e.currentTarget.connectionState)}}grabDevices(){navigator.mediaDevices.enumerateDevices().then(t=>{this._cameraList=new W,this._microphoneList=new W;for(let e=0;e<t.length;e++)try{var i,n;"videoinput"===t[e].kind?(i=new k(t[e],e),this._cameraList.push(i)):"audioinput"===t[e].kind&&(n=new k(t[e],e),this._microphoneList.push(n))}catch(e){this._logger.error(this,"WebRTCStreamer :: Input Device Error: "+e)}if(0==this._cameraList.getSize())this._main.dispatchEvent("noCameraFound",{ref:this._main});else if(0==this._microphoneList.getSize())this._main.dispatchEvent("noCameraFound",{ref:this._main});else{this._logger.info(this,"Camera list:");for(let e=0;e<this._cameraList.getSize();e++)this._logger.info(this,"=> ["+e+"] InputDevice: "+this._cameraList.get(e).getLabel());this._logger.info(this,"Microphone list:");for(let e=0;e<this._microphoneList.getSize();e++)this._logger.info(this,"=> ["+e+"] InputDevice: "+this._microphoneList.get(e).getLabel());this._selectedCamera=this.pickCamera(),this._selectedMicrophone=this.pickMicrophone()}}).catch(()=>{this._main.dispatchEvent("inputDeviceError",{ref:this._main})})}selectCamera(t){var i;for(let e=0;e<this._cameraList.getSize();e++)if(this._cameraList.get(e).getID()==t){this._selectedCamera=this._cameraList.get(e),null!=(i=this._main.getStorageManager())&&i.saveField("cameraID",this._selectedCamera.getID());break}this.closeStream(),this._constraints.video.deviceId=this._selectedCamera.getID(),this.startWebRTC()}selectMicrophone(t){var i;for(let e=0;e<this._microphoneList.getSize();e++)if(this._microphoneList.get(e).getID()==t){this._selectedMicrophone=this._microphoneList.get(e),null!=(i=this._main.getStorageManager())&&i.saveField("microphoneID",this._selectedMicrophone.getID());break}this.closeStream(),this._constraints.audio={deviceId:this._selectedMicrophone.getID()},this.startWebRTC()}pickCamera(){for(let e=0;e<this._cameraList.getSize();e++)this._cameraList.get(e).setSelected(!1);var e=null!=(e=null==(e=this._main.getStorageManager())?void 0:e.getField("cameraID"))?e:null;return null==this._selectedCamera||null==e?this._selectedCamera=this._cameraList.get(0):this.selectCamera(e),this._selectedCamera.setSelected(!0),this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._selectedCamera}pickMicrophone(){for(let e=0;e<this._microphoneList.getSize();e++)this._microphoneList.get(e).setSelected(!1);var e=null!=(e=null==(e=this._main.getStorageManager())?void 0:e.getField("microphoneID"))?e:null;return null==this._selectedMicrophone||null==e?this._selectedMicrophone=this._microphoneList.get(0):this.selectMicrophone(e),this._selectedMicrophone.setSelected(!0),this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._selectedMicrophone}muteMicrophone(t){if(this._publishState==o.PublishState.PUBLISHED)if(null!==this._stream){t?this._logger.success(this,"WebRTCStreamer :: Unmuting microphone"):this._logger.success(this,"WebRTCStreamer :: Muting microphone");for(let e=0;e<this._stream.getAudioTracks().length;e++)this._stream.getAudioTracks()[e].enabled=t;this._isMicrophoneMuted=!t}else this._logger.warning(this,"WebRTCStreamer :: Stream object not present!");else this._logger.warning(this,"WebRTCStreamer :: Not ready to change microphone")}isMicrophoneMuted(){return this._isMicrophoneMuted}onDescriptionError(e){this._logger.info(this,"WebRTCStreamer :: onDescriptionError: "+JSON.stringify(e))}onIceCandidate(e){e.candidate}closeStream(){this._stream&&this._stream.getTracks().forEach(function(e){e.stop()}),this._soundMeter.detach(),void 0!==this._peerConnection&&null!==this._peerConnection&&this._peerConnection.close(),this.setPublishState(o.PublishState.UNPUBLISHED)}getCurrentCamera(){return this._selectedCamera}getCurrentMicrophone(){return this._selectedMicrophone}setPublishState(e){this._publishState=e,this._main.dispatchEvent("publishStateChange",{ref:this._main,state:this._publishState})}getCameraList(){return this._cameraList.getArray()}getMicrophoneList(){return this._microphoneList.getArray()}getPlayer(){return this._selectedPlayer}destroy(){var e;this.closeStream(),null!=(e=this._selectedPlayer)&&e.clear(),this._selectedPlayer=null,this._main.removeEventListener("serverConnect",this.onServerConnect),document.removeEventListener("visibilitychange",this.visibilityChange),window.removeEventListener("blur",this.onWindowBlur),window.removeEventListener("focus",this.onWindowFocus)}}(p=D=D||{})[p.NOT_INITIALIZED=0]="NOT_INITIALIZED",p[p.STARTED=1]="STARTED",p[p.CONNECTING=2]="CONNECTING",p[p.CONNECTED=3]="CONNECTED",p[p.CLOSED=4]="CLOSED",p[p.FAILED=5]="FAILED";class K extends class{constructor(){this.CONNECTION_TIMEOUT=5,this.isBinary=!0,this._connectionState=D.NOT_INITIALIZED,this._messageCount=0,this._disconnectedByUser=!1,this._isConnected=!1,this._sequenceNumber=-1}startConnection(){this._disconnectedByUser=!1,this._messageCount=0,this._isConnected=!1,this._disconnectedByUser=!1,this._connectionState=D.CONNECTING,this.socket=new WebSocket(this.socketURL),this.isBinary&&(this.socket.binaryType="arraybuffer"),this.socket.onopen=e=>{clearTimeout(this._connectionTimeout),this._sequenceNumber++,this._connectionState=D.CONNECTED,this.onSocketOpen(e)},this.socket.onmessage=e=>{this._messageCount++,this.onSocketMessage(e)},this.socket.onclose=e=>{clearTimeout(this._connectionTimeout),this._connectionState==D.CONNECTED?(this._connectionState=D.CLOSED,this.onSocketClose(e)):this._connectionState=D.FAILED},this.socket.onerror=e=>{if(clearTimeout(this._connectionTimeout),this._connectionState==D.CONNECTING&&this.onSocketError(e),this._connectionState==D.CONNECTED)try{this.socket.close()}catch(e){}},this._connectionTimeout=setTimeout(()=>{try{this.socket.close()}catch(e){}this._connectionState==D.CONNECTING&&(this._connectionState=D.FAILED,this.onSocketError(new ErrorEvent("connectionTimeout")))},1e3*this.CONNECTION_TIMEOUT)}onSocketOpen(e){}onSocketClose(e){}onSocketMessage(e){}onSocketError(e){}onError(e){}sendData(e){if(this._connectionState==D.CONNECTED&&null!==this.socket){if(null!=e)return void this.socket.send(e);this.onError("no data to send")}this.onError("socket not connected")}getConnectionState(){return this._connectionState}disconnect(e=!0){this._isConnected=!1,this._connectionState=D.CLOSED,e&&(this._logger.warning(this,"Disconnected by user"),this._disconnectedByUser=e),null!=this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.close())}destroy(){void 0!==this.socket&&null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.close()),this._connectionState=D.CLOSED}getSocketURL(){return this.socketURL}}{constructor(e,t){super(),this._logger=e.getLogger(),this._main=e,this._networkController=t,this.initialize()}initialize(){this._logger.info(this,"Starting new connection with a storm server"),this.pickServerFromList(this._main.getConfigManager().getStreamData().getServerList()),null!=this._currServer?(this.socketURL=this.createURL(this._currServer),this._logger.info(this,"Starting WebSocket connection with: "+this.socketURL),this._main.dispatchEvent("serverConnectionInitiate",{ref:this._main,serverURL:this.socketURL}),this._main.getConfigManager().getIfDemoMode()?(this._logger.warning(this,"Player is in demo mode, and will not connect with a server!"),this._main.dispatchEvent("authorizationComplete",{ref:this._main})):this.startConnection()):this._logger.error(this,"Connection with the server could not be initialized!")}onSocketOpen(e){this._logger.success(this,"Connection with the server has been established!"),this._main.dispatchEvent("serverConnect",{ref:this._main,serverURL:this.socketURL,sequenceNum:this._sequenceNumber}),this._isConnected=!0}onSocketError(e){this._isConnected=!1,this._disconnectedByUser||(this._logger.error(this,"Connection with the server failed"),this._main.dispatchEvent("serverConnectionError",{ref:this._main,serverURL:this.socketURL,restart:this._main.getConfigManager().getSettingsData().getIfRestartOnError(),sequenceNum:this._sequenceNumber}),0==this._isConnected&&(this._currServer.setAsFaild(!0),this.initiateReconnect()))}onSocketClose(e){this._isConnected=!1,this._disconnectedByUser?this._logger.warning(this,"Force disconnect from server!"):(this._logger.error(this,"Connection with the server has been closed"),this._main.dispatchEvent("serverDisconnect",{ref:this._main,serverURL:this.socketURL,restart:this._main.getConfigManager().getSettingsData().getIfRestartOnError(),sequenceNum:this._sequenceNumber}),this.initiateReconnect())}onSocketMessage(e){this._networkController.onMessage(e)}createURL(e){var t="";return(t+=e.getIfSSL()?"wss://":"ws://")+e.getHost()+(":"+e.getPort())+"/webrtc-session.json"}initiateReconnect(){var e=this._main.getConfigManager().getSettingsData().getIfRestartOnError();const t=this._main.getConfigManager().getSettingsData().getReconnectTime();this._disconnectedByUser||e&&(null!=this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._reconnectTimer=setTimeout(()=>{this.pickServerFromList(this._main.getConfigManager().getStreamData().getServerList()),null!=this._currServer&&(this._logger.info(this,`Will reconnect to the server in ${t} seconds...`),this.socketURL=this.createURL(this._currServer),this._logger.info(this,"Starting WebSocket connection with: "+this.socketURL),this._main.dispatchEvent("serverConnectionInitiate",{ref:this._main,serverURL:this.socketURL}),this.startConnection())},1e3*t))}pickServerFromList(t){let i=null;for(let e=0;e<t.length;e++)if(!t[e].getIfFaild()){i=t[e];break}null==i?(this._logger.error(this,"All connections failed!"),this._main.dispatchEvent("allConnectionsFailed",{ref:this._main,mode:"none"}),this._currServer=null):this._currServer=i}isConnectionActive(){return this._isConnected}getCurrentServer(){return this._currServer}destroy(){super.destroy(),null!=this._reconnectTimer&&clearTimeout(this._reconnectTimer)}}class j{constructor(e){this._currentStreamKey="none",this._lastState="",this.onServerConnect=()=>{},this.onServerDisconnect=()=>{this._lastState="none"},this.onMessage=e=>{var t;null!=(t=this._main.getPlaybackController())&&t.onSocketMessage(e.data)},this._main=e,this._logger=e.getLogger(),this._main.addEventListener("serverConnect",this.onServerConnect,!1),this._main.addEventListener("serverDisconnect",this.onServerDisconnect,!1)}initialize(){null!=this._connection&&(this._connection.getConnectionState()==D.CONNECTING||this._connection.getConnectionState()==D.CONNECTED?this._logger.info(this,"Connection is alive, not doing anything!"):(this._logger.info(this,"Connection is dead, restarting!"),this._connection.startConnection()))}start(){this._connection=new K(this._main,this)}stop(){this._connection.disconnect(!0),this._lastState=""}sendMessage(e){this._connection.isConnectionActive()&&this._connection.sendData(e)}getConnection(){return this._connection}getCurrentStreamKey(){return this._currentStreamKey}}class P extends class{constructor(){this._isRemoved=!1,this._listeners={}}addEventListener(t,i,e=!0){this._listeners[t]||(this._listeners[t]=[]);let n=!1;if(null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++)if(this._listeners[t][e][1]==i){n=!0;break}return this._logger.success(this,"Registering a new event: "+t),!n&&(this._listeners[t].push([t,i,e]),!0)}removeEventListener(t,i){let n=!1;if(null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++){var s=this._listeners[t][e];if(i){if(s[1]==i){if(1!=s[2])break;n=!0,this._listeners[t].splice(e,1);break}}else n=!0,1==s[2]&&this._listeners[t].splice(e,1)}return this._logger.success(this,"Removing listener: "+t),n}removeAllEventListeners(){this._logger.success(this,"Removing all listeners!");for(const i in this._listeners){var e=i,t=this._listeners[e];if(t&&0<t.length)for(let e=t.length-1;0<=e;e--)!0===t[e][2]&&t.splice(e,1)}}dispatchEvent(t,i){if(!this._isRemoved&&null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++)this._listeners[t][e][1].call(this,i)}}{constructor(e,t=!1){super(),this.DEV_MODE=!0,this.STREAMER_VERSION="0.9.0-beta.1",this.COMPILE_DATE="11/29/2024, 1:56:30 PM",this.STREAMER_BRANCH="Experimental",this.STREAMER_PROTOCOL_VERSION=1,this._initialized=!1,"undefined"!=typeof window&&window.document&&window.document.createElement?(!this.DEV_MODE||"StormStreamerArray"in window||(window.StormStreamerArray=[]),window.StormStreamerArray.push(this),this._streamerID=P.NEXT_STREAMER_ID++,null!=e&&(this.setStreamConfig(e),t)&&this.initialize()):console.error('StormLibrary Creation Error - No "window" element in the provided context!')}initialize(){if(!this._isRemoved){if(null==this._configManager)throw Error("Stream Config was not provided for this library! A properly configured object must be provided through the constructor or via the setConfig method before using the initialize() method.");this._storageManager=new C(this),this._stageController=new y(this),this._networkController=new j(this),this._playbackController=new X(this),this._clientUser=new e,this._initialized=!0,this.dispatchEvent("streamerReady",{ref:this})}}setStreamConfig(e){this._isRemoved||(e=JSON.parse(JSON.stringify(e)),null==this._configManager?(this._configManager=new g(e),this._logger=new _(this._configManager.getSettingsData().getDebugData(),this),this._logger.info(this,"StreamerID: "+this._streamerID),this._logger.info(this,"Version: "+this.STREAMER_VERSION+" | Compile Date: "+this.COMPILE_DATE+" | Branch: "+this.STREAMER_BRANCH),this._logger.info(this,"UserCapabilities :: Browser: "+m.getBrowserName()+" "+m.getBrowserVersion()),this._logger.info(this,"UserCapabilities :: Operating System: "+m.getOS()+" "+m.getOSVersion()),this._logger.info(this,"UserCapabilities :: isMobile: "+m.isMobile()),this._logger.info(this,"UserCapabilities :: hasMSESupport: "+m.hasMSESupport()),this._logger.info(this,"UserCapabilities :: hasWebSocketSupport: "+m.hasWebSocketsSupport()),this._logger.info(this,"UserCapabilities :: hasWebRTCSupport: "+m.hasWebRTCSupport()),this._configManager.print(this._logger)):(this._logger.info(this,"StreamConfig has been overwritten, dispatching streamConfigChanged!"),this._configManager=new g(e),this._configManager.print(this._logger),this.dispatchEvent("streamConfigChange",{ref:this,newConfig:this._configManager})))}stop(){}isConnected(){var e;return null!=(e=null==(e=this._networkController)?void 0:e.getConnection().isConnectionActive())&&e}attachToContainer(e){var t;return!!this._initialized&&null!=(t=null==(t=this._stageController)?void 0:t.attachToParent(e))&&t}detachFromContainer(){var e;return!!this._initialized&&null!=(e=null==(e=this._stageController)?void 0:e.detachFromParent())&&e}getContainer(){var e;return null!=(e=null==(e=this._stageController)?void 0:e.getParentElement())?e:null}mute(){null!=this._stageController&&null!=this._stageController.getScreenElement()?this._stageController.getScreenElement().setMuted(!0):this._configManager.getSettingsData().getAudioData().muted=!0}unmute(){null!=this._stageController&&null!=this._stageController.getScreenElement()?this._stageController.getScreenElement().setMuted(!1):this._configManager.getSettingsData().getAudioData().muted=!1}isMute(){var e;return null!=(e=null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getIfMuted())?e:this._configManager.getSettingsData().getAudioData().muted)&&e}toggleMute(){var e=this.isMute();return e?this.unmute():this.mute(),!e}setVolume(e){var t;void 0===(null==(t=null==(t=this._stageController)?void 0:t.getScreenElement())?void 0:t.setVolume(e))&&(this._configManager.getSettingsData().getAudioData().startVolume=e)}getVolume(){var e;return null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getVolume())?e:this._configManager.getSettingsData().getAudioData().startVolume}getCameraList(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getCameraList())?e:null}getMicrophoneList(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getMicrophoneList())?e:null}setCamera(e){var t;null!=(t=this._playbackController)&&t.selectCamera(e)}setMicrophone(e){var t;null!=(t=this._playbackController)&&t.selectMicrophone(e)}getCurrentCamera(){return this._playbackController.getCurrentCamera()}getCurrentMicrophone(){return this._playbackController.getCurrentMicrophone()}muteMicrophone(e){var t;null!=(t=this._playbackController)&&t.muteMicrophone(e)}isMicrophoneMuted(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.isMicrophoneMuted())&&e}publish(e){var t;null!=(t=this._playbackController)&&t.publish(e)}unpublish(){var e;null!=(e=this._playbackController)&&e.unpublish()}setSize(e,t){this._initialized?this._stageController.setSize(e,t):(e=u.parseValue(e),t=u.parseValue(t),this._configManager.getSettingsData().getVideoData().videoWidthValue=e.value,this._configManager.getSettingsData().getVideoData().videoWidthInPixels=e.isPixels,this._configManager.getSettingsData().getVideoData().videoHeightValue=t.value,this._configManager.getSettingsData().getVideoData().videoHeightInPixels=t.isPixels)}setWidth(e){this._initialized?this._stageController.setWidth(e):(e=u.parseValue(e),this._configManager.getSettingsData().getVideoData().videoWidthValue=e.value,this._configManager.getSettingsData().getVideoData().videoWidthInPixels=e.isPixels)}setHeight(e){this._initialized?this._stageController.setHeight(e):(e=u.parseValue(e),this._configManager.getSettingsData().getVideoData().videoHeightValue=e.value,this._configManager.getSettingsData().getVideoData().videoHeightInPixels=e.isPixels)}getWidth(){return this._initialized?this._stageController.getContainerWidth():this._configManager.getSettingsData().getVideoData().videoWidthInPixels?this._configManager.getSettingsData().getVideoData().videoWidthValue:0}getHeight(){return this._initialized?this._stageController.getContainerHeight():this._configManager.getSettingsData().getVideoData().videoHeightInPixels?this._configManager.getSettingsData().getVideoData().videoHeightValue:0}setScalingMode(e){this._stageController?this._stageController.setScalingMode(e):this._configManager.getSettingsData().getVideoData().scalingMode=e}getScalingMode(){return this._stageController?this._stageController.getScalingMode():this._configManager.getSettingsData().getVideoData().scalingMode}updateToSize(){this._initialized&&this._stageController.onResize()}makeScreenshot(){let i=document.createElement("canvas"),n=i.getContext("2d");return new Promise(t=>{var e;null!=this._stageController&&(i.width=this._stageController.getScreenElement().getVideoElement().videoWidth,i.height=this._stageController.getScreenElement().getVideoElement().videoHeight,e=this._stageController.getScreenElement().getVideoElement(),n)?(n.drawImage(e,0,0,i.width,i.height),i.toBlob(e=>{t(e)},"image/png")):t(null)})}enterFullScreen(){this._initialized&&this._stageController&&this._stageController.enterFullScreen()}exitFullScreen(){this._initialized&&this._stageController&&this._stageController.exitFullScreen()}isFullScreenMode(){return!(!this._initialized||!this._stageController)&&this._stageController.isFullScreenMode()}getStreamerID(){return this._streamerID}getLogger(){return this._logger}getConfigManager(){return this._configManager}getNetworkController(){return this._networkController}getPlaybackController(){return this._playbackController}getStageController(){return this._stageController}getVideoElement(){var e;return null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getVideoElement())?e:null}isInitialized(){return this._initialized}getVersion(){return this.STREAMER_VERSION}getBranch(){return this.STREAMER_BRANCH}getStorageManager(){return this._storageManager}dispatchEvent(e,t){super.dispatchEvent(e,t)}destroy(){var e;this._logger.warning(this,"Destroying library instance, bye, bye!"),this._initialized=!1,this._isRemoved=!0,null!=(e=this._networkController)&&e.getConnection().destroy(),null!=(e=this._stageController)&&e.destroy(),null!=(e=this._playbackController)&&e.destroy(),this.removeAllEventListeners()}}P.NEXT_STREAMER_ID=0,o.StormStreamer=P,o.create=function(e){return new P(e)}});
|
|
14
|
+
*/!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).stormStreamer={})}(this,function(o){"use strict";class r{constructor(e,t,i=443,n=!0){this.host=e,this.application=t,this.port=i,this.isSSL=n,this.hasFaild=!1}getHost(){return this.host}getApplication(){return this.application}getPort(){return this.port}getIfSSL(){return this.isSSL}getIfFaild(){return this.hasFaild}setAsFaild(e){this.hasFaild=e}getData(){return{serverURL:this.getHost(),application:this.getHost(),serverPort:this.getPort(),isSSL:this.getIfSSL()}}toString(){return"host: "+this.host+" | application: "+this.application+" | port: "+this.port+" | isSSL: "+this.isSSL}}class a{constructor(e){this._serverList=new Array,this._sourceList=new Array,this._streamKey=null,this.parse(e)}parse(e){if(this._streamConfig=e,!this._streamConfig)throw new Error("Stream configuration is missing. Please check stream config!");if(void 0===this._streamConfig.serverList||null===this._streamConfig.serverList)throw new Error("StormLibrary: Server list configuration is missing. Please check the config!");if(0===this._streamConfig.serverList.length)throw new Error("StormLibrary: Server list configuration is empty. Please check the config!");for(let i=0;i<this._streamConfig.serverList.length;i++){let e,t;if(null==this._streamConfig.serverList[i].host)throw new Error('Error while parsing server object ("host" field is missing). Please check player config!');if(e=this._streamConfig.serverList[i].host,null==this._streamConfig.serverList[i].application)throw new Error('Error while parsing server object ("application" field is missing). Please check player config!');t=this._streamConfig.serverList[i].application;var n=null!=(n=this._streamConfig.serverList[i].port)?n:a.DEFAULT_CONNECTION_PORT,s=null!=(s=this._streamConfig.serverList[i].ssl)?s:a.IS_SSL_BY_DEFAULT;this._serverList.push(new r(e,t,n,s))}this._streamKey=null!=(e=this._streamConfig.streamKey)?e:this._streamKey}getServerList(){return this._serverList}getSourceList(){return this._sourceList}get streamKey(){return this._streamKey}set streamKey(e){this._streamKey=e}set serverList(e){this._serverList=e}set sourceList(e){this._sourceList=e}clearSourceList(){this._sourceList=new Array}clearServerList(){this._serverList=new Array}print(t,e=!1){if(a.PRINT_ON_STARTUP||e){t.info(this,"Server List:");for(let e=0;e<this._serverList.length;e++)t.info(this,"=> ["+e+"] "+this._serverList[e].toString());t.info(this,"StreamKey: "+this._streamKey)}}}var s,i,n;a.PRINT_ON_STARTUP=!0,a.DEFAULT_CONNECTION_PORT=443,a.IS_SSL_BY_DEFAULT=!0,(C=s=s||{}).FILL="fill",C.LETTER_BOX="letterbox",C.CROP="crop",C.ORIGINAL="original",(C=i=i||{}).CLIENT_DIMENSIONS="clientDimensions",C.BOUNDING_BOX="boundingBox",C.FULL_BOX="fullBox";class t{constructor(e){this._scalingMode=s.LETTER_BOX,this._aspectRatio="none",this._videoWidthValue=100,this._isVideoWidthInPixels=!1,this._wasVideoWidthProvided=!1,this._videoHeightValue=100,this._isVideoHeightInPixels=!1,this._wasVideoHeightProvided=!1,this._resizeDebounce=250,this._parentSizeCalculationMethod=i.CLIENT_DIMENSIONS,this.parse(e)}parse(e){if(this.videoConfig=e,null==this.videoConfig)throw new Error("Missing video configuration. Please check player config!");if(null!=this.videoConfig.aspectRatio){var e=new RegExp("^[0-9]*\\.?[0-9]+:[0-9]*\\.?[0-9]+$"),t=this.videoConfig.aspectRatio;if(!e.test(t))throw new Error('Parameter "aspectRatio" - must match "number:number" pattern ');this._aspectRatio=t,this._aspectRatio=this.videoConfig.aspectRatio}if(null!=this.videoConfig.scalingMode)switch(this.videoConfig.scalingMode.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"crop":this._scalingMode=s.CROP;break;case"original":this._scalingMode=s.ORIGINAL;break;default:throw new Error("Unknown video scaling mode. Please check player config!")}if(void 0!==this.videoConfig.width){if(null===this.videoConfig.width)throw new Error('Parameter "width" cannot be empty');if("number"==typeof this.videoConfig.width)this._videoWidthValue=this.videoConfig.width,this._isVideoWidthInPixels=!0;else{if("string"!=typeof this.videoConfig.width)throw new Error('Unknown type for parameter "width" - it must be a number or a string! ');this.videoConfig.width.toLowerCase().endsWith("px")?(this._videoWidthValue=parseInt(this.videoConfig.width),this._isVideoWidthInPixels=!0):this.videoConfig.width.toLowerCase().endsWith("%")&&(this._videoWidthValue=parseInt(this.videoConfig.width),this._isVideoWidthInPixels=!1)}this._wasVideoWidthProvided=!0}if(void 0!==this.videoConfig.height){if(null===this.videoConfig.height)throw new Error('Parameter "height" cannot be empty');if("number"==typeof this.videoConfig.height)this._videoHeightValue=this.videoConfig.height,this._isVideoHeightInPixels=!0;else{if("string"!=typeof this.videoConfig.height)throw new Error('Unknown type for parameter "height" - it must be a number or a string!');this.videoConfig.height.toLowerCase().endsWith("px")?(this._videoHeightValue=parseInt(this.videoConfig.height),this._isVideoHeightInPixels=!0):this.videoConfig.height.toLowerCase().endsWith("%")&&(this._videoHeightValue=parseInt(this.videoConfig.height),this._isVideoHeightInPixels=!1)}this._wasVideoHeightProvided=!0}if(void 0!==this.videoConfig.sizeCalculationMethod&&null!==this.videoConfig.sizeCalculationMethod)switch(this.videoConfig.sizeCalculationMethod){case"clientDimensions":this._parentSizeCalculationMethod=i.CLIENT_DIMENSIONS;break;case"boundingBox":this._parentSizeCalculationMethod=i.BOUNDING_BOX;break;case"fullBox":this._parentSizeCalculationMethod=i.FULL_BOX}this._containerID=null!=(e=this.videoConfig.containerID)?e:null,this._resizeDebounce=null!=(t=this.videoConfig.resizeDebounce)?t:this._resizeDebounce}get scalingMode(){return this._scalingMode}get containerID(){return this._containerID}get videoWidthValue(){return this._videoWidthValue}get videoWidthInPixels(){return this._isVideoWidthInPixels}get videoWidthProvided(){return this._wasVideoWidthProvided}get videoHeightValue(){return this._videoHeightValue}get videoHeightInPixels(){return this._isVideoHeightInPixels}get videoHeightProvided(){return this._wasVideoHeightProvided}get aspectRatio(){return this._aspectRatio}get resizeDebounce(){return this._resizeDebounce}set resizeDebounce(e){this._resizeDebounce=e}set videoWidthValue(e){this._videoWidthValue=e}set videoWidthInPixels(e){this._isVideoWidthInPixels=e}set videoHeightValue(e){this._videoHeightValue=e}set videoHeightInPixels(e){this._isVideoHeightInPixels=e}set containerID(e){this._containerID=e}set scalingMode(e){switch(e.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"crop":this._scalingMode=s.CROP;break;case"original":this._scalingMode=s.ORIGINAL;break;default:throw new Error("Unknown video scaling mode. Please check player config!")}}get parentSizeCalculationMethod(){return this._parentSizeCalculationMethod}print(e){let t="";switch(this._scalingMode){case s.FILL:t="fill";break;case s.LETTER_BOX:t="letterbox";break;case s.CROP:t="crop";break;case s.ORIGINAL:t="original"}e.info(this,"VideoConfig :: containerID: "+this._containerID),e.info(this,"VideoConfig :: scalingMode: "+t),e.info(this,"VideoConfig :: width: "+this._videoWidthValue+(this._isVideoWidthInPixels?"px":"%")+(this._wasVideoWidthProvided?" (provided)":" (default)")),e.info(this,"VideoConfig :: height: "+this._videoHeightValue+(this._isVideoHeightInPixels?"px":"%")+(this._wasVideoHeightProvided?" (provided)":" (default)")),e.info(this,"VideoConfig :: aspectRatio: "+this._aspectRatio)}}(C=n=n||{})[C.TRACE=0]="TRACE",C[C.INFO=1]="INFO",C[C.SUCCESS=2]="SUCCESS",C[C.WARNING=3]="WARNING",C[C.ERROR=4]="ERROR";class h{constructor(e){this._consoleLogEnabled=!1,this._enabledConsoleTypes=[n.INFO,n.ERROR,n.SUCCESS,n.TRACE,n.WARNING],this._consoleMonoColor=!1,this._containerLogEnabled=!1,this._enabledContainerTypes=[n.INFO,n.ERROR,n.SUCCESS,n.TRACE,n.WARNING],this._containerLogMonoColor=!1,this.parse(e)}parse(e){this._debugConfig=e,this._debugConfig&&(this._consoleLogEnabled=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.enabled)?e:this._consoleLogEnabled,this._consoleMonoColor=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.monoColor)?e:this._consoleMonoColor,this._enabledConsoleTypes=null!=(e=this.parseLogTypes(null==(e=null==(e=this._debugConfig)?void 0:e.console)?void 0:e.logTypes))?e:this._enabledConsoleTypes,this._containerLogEnabled=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.enabled)?e:this._containerLogEnabled,this._containerLogMonoColor=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.monoColor)?e:this._containerLogMonoColor,this._enabledContainerTypes=null!=(e=this.parseLogTypes(null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.logTypes))?e:this._enabledContainerTypes,this._containerID=null!=(e=null==(e=null==(e=this._debugConfig)?void 0:e.container)?void 0:e.containerID)?e:this._containerID)}parseLogTypes(e){return null==e?void 0:e.map(e=>{switch(e.toLowerCase()){case"info":return n.INFO;case"error":return n.ERROR;case"warning":return n.WARNING;case"success":return n.SUCCESS;case"trace":return n.TRACE;default:throw new Error("Unsupported log type: "+e)}})}get consoleLogEnabled(){return this._consoleLogEnabled}set consoleLogEnabled(e){this._consoleLogEnabled=e}get enabledConsoleTypes(){return this._enabledConsoleTypes}set enabledConsoleTypes(t){this._enabledConsoleTypes=new Array;for(let e=0;e<t.length;e++)switch(t[e].toLowerCase()){case"info":this._enabledConsoleTypes.push(n.INFO);break;case"error":this._enabledConsoleTypes.push(n.ERROR);break;case"warning":this._enabledConsoleTypes.push(n.WARNING);break;case"success":this._enabledConsoleTypes.push(n.SUCCESS);break;case"trace":this._enabledConsoleTypes.push(n.TRACE)}}get containerLogEnabled(){return this._containerLogEnabled}set containerLogEnabled(e){this._consoleLogEnabled=e}get consoleLogMonoColor(){return this._consoleMonoColor}set consoleLogMonoColor(e){this._consoleMonoColor=e}get enabledContainerTypes(){return this._enabledContainerTypes}set enabledContainerTypes(t){this._enabledContainerTypes=new Array;for(let e=0;e<t.length;e++)switch(t[e].toLowerCase()){case"info":this._enabledContainerTypes.push(n.INFO);break;case"error":this._enabledContainerTypes.push(n.ERROR);break;case"warning":this._enabledContainerTypes.push(n.WARNING);break;case"success":this._enabledContainerTypes.push(n.SUCCESS);break;case"trace":this._enabledContainerTypes.push(n.TRACE)}}get containerID(){return this._containerID}set containerID(e){this._containerID=e}get containerLogMonoColor(){return this._containerLogMonoColor}set containerLogMonoColor(e){this._containerLogMonoColor=e}print(e,t=!1){if(h.PRINT_ON_STARTUP||t){let t="";for(let e=0;e<this._enabledConsoleTypes.length;e++)switch(this._enabledConsoleTypes[e]){case n.TRACE:t+="TRACE, ";break;case n.SUCCESS:t+="SUCCESS, ";break;case n.WARNING:t+="WARNING, ";break;case n.INFO:t+="INFO, ";break;case n.ERROR:t+="ERROR, "}e.info(this,"Console:: enabled: "+this._consoleLogEnabled),e.info(this,"Console:: logTypes: "+t),e.info(this,"Console:: monoColor: "+this._consoleMonoColor);let i="";for(let e=0;e<this._enabledContainerTypes.length;e++)switch(this._enabledContainerTypes[e]){case n.TRACE:i+="TRACE, ";break;case n.SUCCESS:i+="SUCCESS, ";break;case n.WARNING:i+="WARNING, ";break;case n.INFO:i+="INFO, ";break;case n.ERROR:i+="ERROR, "}e.info(this,"Container:: enabled: "+this._containerLogEnabled),e.info(this,"Container:: logTypes: "+i),e.info(this,"Container:: containerID: "+this._containerID),e.info(this,"Container:: monoColor: "+this._consoleMonoColor)}}}h.PRINT_ON_STARTUP=!0;class l{constructor(e){this._startVolume=100,this._isMuted=!1,this.parse(e)}parse(e){this._audioConfig=e,this._audioConfig&&(this._startVolume=null!=(e=null==(e=this._audioConfig)?void 0:e.startVolume)?e:this._startVolume,this._isMuted=null!=(e=null==(e=this._audioConfig)?void 0:e.muted)?e:this._isMuted)}get startVolume(){return this._startVolume}set startVolume(e){this._startVolume=e}get muted(){return this._isMuted}set muted(e){this._isMuted=e}print(e,t=!1){(l.PRINT_ON_STARTUP||t)&&e.info(this,"Audio :: startVolume: "+this._startVolume+" | isMuted: "+this._isMuted)}}l.PRINT_ON_STARTUP=!0;class c{constructor(e){this._enabled=!0,this._prefix="storm",this.parse(e)}parse(e){this._storageConfig=e,this._enabled=null!=(e=null==(e=this._storageConfig)?void 0:e.enabled)?e:this._enabled,this._prefix=null!=(e=null==(e=this._storageConfig)?void 0:e.prefix)?e:this._prefix}get enabled(){return this._enabled}set enabled(e){this._enabled=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}print(e,t=!1){(c.PRINT_ON_STARTUP||t)&&e.info(this,"Storage :: startVolume: "+this._enabled+" | prefix: "+this._prefix)}}c.PRINT_ON_STARTUP=!0;class d{constructor(e){this._restartOnError=!0,this._reconnectTime=1,this._autoStart=!1,this._autoConnect=!0,this.startOnDOMReady=!1,this.iOSOnDomReadyFix=!0,this._restartOnFocus=!0,this.parse(e)}parse(e){this._settingsConfig=e,this._autoConnect=null!=(e=this._settingsConfig.autoConnect)?e:this._autoConnect,this._autoStart=null!=(e=this._settingsConfig.autoStart)?e:this._autoStart,this._restartOnFocus=null!=(e=this._settingsConfig.restartOnFocus)?e:this._restartOnFocus,this._restartOnError=null!=(e=this._settingsConfig.restartOnError)?e:this._restartOnError,this._reconnectTime=null!=(e=this._settingsConfig.reconnectTime)?e:this._reconnectTime,this._videoData=new t(null!=(e=this._settingsConfig.video)?e:null),this._audioData=new l(null!=(e=this._settingsConfig.audio)?e:null),this._storageData=new c(null!=(e=this._settingsConfig.storage)?e:null),this._debugData=new h(null!=(e=this._settingsConfig.debug)?e:null)}getAudioData(){return this._audioData}getVideoData(){return this._videoData}getStorageData(){return this._storageData}getIfRestartOnError(){return this._restartOnError}getReconnectTime(){return this._reconnectTime}get autoStart(){return this._autoStart}set autoStart(e){this._autoStart=e}get autoConnect(){return this._autoConnect}get restartOnFocus(){return this._restartOnFocus}getDebugData(){return this._debugData}getIfStartOnDOMReadyEnabled(){return this.startOnDOMReady}getIfIOSOnDomStartFixEnabled(){return this.iOSOnDomReadyFix}print(e,t=!1){(d.PRINT_ON_STARTUP||t)&&(e.info(this,"SettingsConfig :: autoConnect: "+this._autoConnect),e.info(this,"SettingsConfig :: autoStart: "+this._autoStart),e.info(this,"SettingsConfig :: restartOnError: "+this._restartOnError),e.info(this,"SettingsConfig :: reconnectTime: "+this._reconnectTime),e.info(this,"SettingsConfig :: enabledProtocols: "),this._videoData.print(e),this._audioData.print(e),this._debugData.print(e),this._debugData.print(e))}}d.PRINT_ON_STARTUP=!0;class g{constructor(e){this.PRINT_ON_STARTUP=!0,this.demoMode=!1,this.parse(e)}parse(e){if(this.configTemplate=e,null==this.configTemplate.stream)throw new Error("No stream field was provided. Please check your player config!");this.streamData=new a(this.configTemplate.stream),this.settingsData=new d(null!=(e=this.configTemplate.settings)?e:null),this.demoMode=null!=(e=this.configTemplate.demoMode)&&e}getStreamData(){return this.streamData}getSettingsData(){return this.settingsData}getIfDemoMode(){return this.demoMode}print(e,t=!1){(this.PRINT_ON_STARTUP||t)&&(this.streamData.print(e),this.settingsData.print(e))}}class u{static addLeadingZero(e){return e<10?"0"+e:String(e)}static isNear(e,t,i){return Math.abs(e-t)<=i}static generateUniqueString(t){let i="";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",s=n.length;for(let e=0;e<t;e++)i+=n.charAt(Math.floor(Math.random()*s));return i}}u.parseValue=e=>{var t;return"string"==typeof e?(t=e.toLowerCase().endsWith("px"),{value:parseInt(e,10),isPixels:t}):{value:e,isPixels:!0}};class _{constructor(e,t){this.colorOrder=["red","green","blue","orange","black","violet"],this._logMemory=[],this._streamerInstanceID=-1,this._debugConfig=e,this._stormStreamer=t,this._streamerInstanceID=this._stormStreamer.getStreamerID();e=this.colorOrder.length<t.getStreamerID()?this.colorOrder.length-1:t.getStreamerID();this._monoColor=this.colorOrder[e]}info(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.INFO)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.INFO_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.INFO)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.INFO_COLOR,this.writeToContainer(e,t))}warning(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.WARNING)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.WARNING_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.WARNING)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.WARNING_COLOR,this.writeToContainer(e,t))}error(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.ERROR)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.ERROR_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.ERROR)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.ERROR_COLOR,this.writeToContainer(e,t))}success(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.SUCCESS)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.SUCCESS_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.SUCCESS)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.SUCCESS_COLOR,this.writeToContainer(e,t))}trace(e,t){e=this.logData(e,t);this._debugConfig.consoleLogEnabled&&0<=this._debugConfig.enabledConsoleTypes.indexOf(n.TRACE)&&(t=this._debugConfig.consoleLogMonoColor?this._monoColor:_.TRACE_COLOR,console.log("%c "+e,"color: "+t)),this._debugConfig.containerLogEnabled&&0<=this._debugConfig.enabledContainerTypes.indexOf(n.TRACE)&&(t=this._debugConfig.containerLogMonoColor?this._monoColor:_.TRACE_COLOR,this.writeToContainer(e,t))}logData(e,t){var i=new Date,n=u.addLeadingZero(i.getHours()),s=u.addLeadingZero(i.getMinutes()),i=u.addLeadingZero(i.getSeconds());let o=String(this._streamerInstanceID);0<=this._streamerInstanceID&&(o+="|"+this._streamerInstanceID);n="[Storm-ID:"+o+"] ["+n+":"+s+":"+i+"] :: "+t;return this._logMemory.push(n),n}writeToContainer(e,t){var i,n=this._debugConfig.containerID;n&&(n=document.getElementById(n),(i=document.createElement("span")).innerText=e,i.style.color=t,n.appendChild(i))}setPlayerID(e){this._streamerInstanceID=e}getAllLogs(){return this._logMemory}}_.INFO_COLOR="blue",_.WARNING_COLOR="orange",_.ERROR_COLOR="red",_.SUCCESS_COLOR="green",_.TRACE_COLOR="black";class e{constructor(){this.bandwidthCapabilities=0}setBandwidthCapabilities(e){this.bandwidthCapabilities=e}getBandwidthCapabilities(){return this.bandwidthCapabilities}}class m{static hasWebSocketsSupport(){return null!=window.WebSocket}static isMobile(){return new RegExp("Mobile|mini|Fennec|Android|iP(ad|od|hone)").test(navigator.userAgent)}static isCookieEnabled(){let e=!!navigator.cookieEnabled;return"undefined"!=typeof navigator.cookieEnabled||e||(document.cookie="testcookie",e=-1!=document.cookie.indexOf("testcookie")),e}static getOSVersion(){let e="Unknown version",t=m.getOS();if(null!=t){var i;switch(new RegExp("Windows").test(t)&&(i=new RegExp("Windows (.*)"),e=null!=i.exec(t)[1]?i.exec(t)[1]:e,t="Windows"),t){case"Mac OS":case"Mac OS X":case"Android":var n=new RegExp("(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([\\.\\_\\d]+)");e=n.exec(navigator.userAgent)[1];break;case"iOS":n=new RegExp("OS (\\d+)_(\\d+)_?(\\d+)?");e=(e=n.exec(navigator.userAgent))[1]+"."+e[2]+"."+(0|e[3])}}return e}static getBrowserName(){return m.getFullBrowser().name}static getBrowserVersion(){return m.getFullBrowser().version}static getFullBrowser(){var e=navigator.userAgent;let t=navigator.appName,i=""+parseFloat(navigator.appVersion),n=parseInt(navigator.appVersion,10),s,o,r;return-1!=(o=e.indexOf("Opera"))?(t="Opera",i=e.substring(o+6),-1!=(o=e.indexOf("Version"))&&(i=e.substring(o+8))):-1!=(o=e.indexOf("MSIE"))?(t="Microsoft Internet Explorer",i=e.substring(o+5)):"Netscape"==t&&-1!=e.indexOf("Trident/")?(t="Microsoft Internet Explorer",i=e.substring(o+5),-1!=(o=e.indexOf("rv:"))&&(i=e.substring(o+3))):-1!=(o=e.indexOf("Chrome"))?(t="Chrome",(-1<e.indexOf("FBAV")||-1<e.indexOf("FBAN"))&&(t="Facebook"),-1<e.indexOf("OPR")&&(t="Opera"),-1<e.indexOf("SamsungBrowser")&&(t="Samsung"),i=e.substring(o+7)):-1!=(o=e.indexOf("Safari"))?(t="Safari",i=e.substring(o+7),-1!=(o=e.indexOf("Version"))&&(i=e.substring(o+8)),-1!=e.indexOf("CriOS")&&(t="Chrome"),-1!=e.indexOf("FxiOS")&&(t="Firefox")):-1!=(o=e.indexOf("Firefox"))?(t="Firefox",i=e.substring(o+8)):(s=e.lastIndexOf(" ")+1)<(o=e.lastIndexOf("/"))&&(t=e.substring(s,o),i=e.substring(o+1),t.toLowerCase()==t.toUpperCase())&&(t=navigator.appName),-1!=(r=(i=-1!=(r=(i=-1!=(r=i.indexOf(";"))?i.substring(0,r):i).indexOf(" "))?i.substring(0,r):i).indexOf(")"))&&(i=i.substring(0,r)),n=parseInt(""+i,10),isNaN(n)&&(i=""+parseFloat(navigator.appVersion),n=parseInt(navigator.appVersion,10)),{name:t,fullVersion:i,version:n}}static getOS(){let e="Unknown OS";var t,i=[{os:"Windows 10",code:"(Windows 10.0|Windows NT 10.0)"},{os:"Windows 8.1",code:"(Windows 8.1|Windows NT 6.3)"},{os:"Windows 8",code:"(Windows 8|Windows NT 6.2)"},{os:"Windows 7",code:"(Windows 7|Windows NT 6.1)"},{os:"Windows Vista",code:"Windows NT 6.0"},{os:"Windows Server 2003",code:"Windows NT 5.2"},{os:"Windows XP",code:"(Windows NT 5.1|Windows XP)"},{os:"Windows 2000",code:"(Windows NT 5.0|Windows 2000)"},{os:"Windows ME",code:"(Win 9x 4.90|Windows ME)"},{os:"Windows 98",code:"(Windows 98|Win98)"},{os:"Windows 95",code:"(Windows 95|Win95|Windows_95)"},{os:"Windows NT 4.0",code:"(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)"},{os:"Windows CE",code:"Windows CE"},{os:"Windows 3.11",code:"Win16"},{os:"Android",code:"Android"},{os:"Open BSD",code:"OpenBSD"},{os:"Sun OS",code:"SunOS"},{os:"Chrome OS",code:"CrOS"},{os:"Linux",code:"(Linux|X11(?!.*CrOS))"},{os:"iOS",code:"(iPhone|iPad|iPod)"},{os:"Mac OS X",code:"Mac OS X"},{os:"Mac OS",code:"(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)"},{os:"QNX",code:"QNX"},{os:"UNIX",code:"UNIX"},{os:"BeOS",code:"BeOS"},{os:"OS/2",code:"OS\\/2"},{os:"Search Bot",code:"(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\\/Teoma|ia_archiver)"}];for(t in i){var n=i[t];if(new RegExp(n.code).test(navigator.userAgent)){e=n.os;break}}return e}static hasWebRTCSupport(){let t=!1;try{navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||window.RTCPeerConnection;t=!0}catch(e){t=!1}return t}static hasHLSSupport(e){return null!==e&&Boolean(e.canPlayType("application/vnd.apple.mpegURL")||e.canPlayType("audio/mpegurl"))}static hasMSESupport(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource;return window.SourceBuffer=window.SourceBuffer||window.WebKitSourceBuffer,e&&"function"==typeof e.isTypeSupported}static hasMMSSupport(){return window.ManagedMediaSource}static isSSL(){return"https:"===location.protocol}}class p{constructor(e){var t;this.LOG_ACTIVITY=!1,this.isEnabled=!0,this.prefix="",this.logger=e.getLogger(),this.isEnabled=null!=(t=null==(t=null==(t=e.getConfigManager())?void 0:t.getSettingsData())?void 0:t.getStorageData().enabled)?t:this.isEnabled,this.prefix=null!=(t=null==(e=null==(t=e.getConfigManager())?void 0:t.getSettingsData())?void 0:e.getStorageData().prefix)?t:this.prefix,this.LOG_ACTIVITY&&this.logger.info(this,"Creating new StorageManager")}saveField(e,t){1==this.isEnabled&&(this.LOG_ACTIVITY&&this.logger.info(this,"Saving data: "+e+" | "+t),localStorage.setItem(this.prefix+e,t))}getField(e){var t;return 1==this.isEnabled?(t=localStorage.getItem(this.prefix+e),this.LOG_ACTIVITY&&this.logger.info(this,"Grabbing data: "+e+" | "+t),t):null}}var C="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function v(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function f(){return V.Date.now()}var S=NaN,b="[object Symbol]",E=/^\s+|\s+$/g,w=/^[-+]0x[0-9a-f]+$/i,L=/^0b[01]+$/i,x=/^0o[0-7]+$/i,A=parseInt,C="object"==typeof C&&C&&C.Object===Object&&C,I="object"==typeof self&&self&&self.Object===Object&&self,V=C||I||Function("return this")(),F=Object.prototype.toString,U=Math.max,B=Math.min;function M(e){var t=typeof e;return e&&("object"==t||"function"==t)}function T(e){if("number"==typeof e)return e;if("symbol"==typeof(i=e)||!!(t=i)&&"object"==typeof t&&F.call(i)==b)return S;var t;if("string"!=typeof(e=M(e)?M(t="function"==typeof e.valueOf?e.valueOf():e)?t+"":t:e))return 0===e?e:+e;e=e.replace(E,"");var i=L.test(e);return i||x.test(e)?A(e.slice(2),i?2:8):w.test(e)?S:+e}var D,O,z=v(function(n,i,e){var s,o,r,a,h,l,c=0,d=!1,g=!1,t=!0;if("function"!=typeof n)throw new TypeError("Expected a function");function u(e){var t=s,i=o;return s=o=void 0,c=e,a=n.apply(i,t)}function _(e){var t=e-l;return void 0===l||i<=t||t<0||g&&r<=e-c}function m(){var e,t=f();if(_(t))return p(t);h=setTimeout(m,(e=i-((t=t)-l),g?B(e,r-(t-c)):e))}function p(e){return h=void 0,t&&s?u(e):(s=o=void 0,a)}function C(){var e=f(),t=_(e);if(s=arguments,o=this,l=e,t){if(void 0===h)return c=e=l,h=setTimeout(m,i),d?u(e):a;if(g)return h=setTimeout(m,i),u(l)}return void 0===h&&(h=setTimeout(m,i)),a}return i=T(i)||0,M(e)&&(d=!!e.leading,g="maxWait"in e,r=g?U(T(e.maxWait)||0,i):r,t="trailing"in e?!!e.trailing:t),C.cancel=function(){void 0!==h&&clearTimeout(h),s=l=o=h=void(c=0)},C.flush=function(){return void 0===h?a:p(f())},C});class H{constructor(e){this.LOG_ACTIVITY=!0,this._volume=100,this._isMuted=!1,this._isMutedByBrowser=!1,this.onForceMute=()=>{this._isMuted=!0,this._isMutedByBrowser=!0,this.dispatchVolumeEvent()},this._main=e,this._logger=e.getLogger(),this._videoElement=document.createElement("video"),this._main.addEventListener("playbackForceMute",this.onForceMute,!1);let t=null!=(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData().getAudioData().startVolume)?e:100,i=null!=(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData().getAudioData().muted)&&e;null!=(null==(e=this._main.getStorageManager())?void 0:e.getField("volume"))&&(t=Number(this._main.getStorageManager().getField("volume"))),null!=(null==(e=this._main.getStorageManager())?void 0:e.getField("muted"))&&"true"==this._main.getStorageManager().getField("muted")&&(i=!0,this._isMutedByBrowser=!0),this._volume=t,this._isMuted=i,this.LOG_ACTIVITY&&this._logger.info(this,"VideoElement :: Start Volume: "+this._volume+" | Muted: "+this._isMuted),this._videoElement.volume=this._volume/100,this._videoElement.muted=this._isMuted,this._videoElement.setAttribute("playsinline","playsinline"),this._videoElement.setAttribute("webkit-playsinline","webkit-playsinline"),this._main.dispatchEvent("videoElementCreate",{ref:this._main,videoElement:this._videoElement}),this.initialize()}initialize(){this._videoElement.onload=function(e){},this._videoElement.onstalled=e=>{this._logger.info(this,"VideoElement :: onstalled")},this._videoElement.onerror=e=>{this._logger.info(this,"VideoElement :: onerror :: "+JSON.stringify(e))},this._videoElement.onvolumechange=()=>{this.dispatchVolumeEvent()},this._videoElement.onpause=()=>{},this._videoElement.addEventListener("loadedmetadata",()=>{this._main.dispatchEvent("metadata",{ref:this._main,videoWidth:this._videoElement.videoWidth,videoHeight:this._videoElement.videoHeight})}),this._videoElement.ontimeupdate=function(e){},this._videoElement.onended=e=>{this._logger.info(this,"VideoElement :: onended")},this._videoElement.onplay=()=>{}}setVolume(e){this._isMuted&&0<e&&this.setMuted(!1),this._volume=e,this._videoElement.volume=e/100,this._main.getStorageManager().saveField("volume",String(e)),0==e&&this.setMuted(!0)}getVolume(){return this._volume}setMuted(e){this._isMuted=e,this._videoElement.muted=e,this._isMutedByBrowser=!1,this._main.getStorageManager().saveField("muted",String(e)),0!=this.getVolume()||e||this.setVolume(100)}getIfMuted(){return this._isMuted}dispatchVolumeEvent(){var e=this._isMutedByBrowser?"browser":"user",t={volume:this._volume,isMuted:this._isMuted,type:e};this.LOG_ACTIVITY&&this._logger.info(this,"ScreenElement :: Event: onVolumeChange: "+JSON.stringify(t)),this._main.dispatchEvent("volumeChange",{ref:this._main,volume:this._volume,muted:this._isMuted,invokedBy:e})}getVideoElement(){return this._videoElement}}class y{constructor(e){this._containerWidth=0,this._tempContainerWidth=0,this._containerHeight=0,this._tempContainerHeight=0,this._videoWidth=0,this._videoHeight=0,this._scalingMode=s.FILL,this.isInFullScreenMode=!1,this._isResizing=!1,this._autoResizeEnabled=!0,this._parentOriginalOverflow="",this.onFullScreenChange=()=>{null==document.fullscreenElement?(this.isInFullScreenMode=!1,this._logger.info(this,"The library has exited FullScreen mode!"),this._main.dispatchEvent("fullScreenExit",{ref:this._main})):(this.isInFullScreenMode=!0,this._logger.info(this,"The library has entered FullScreen mode!"),this._main.dispatchEvent("fullScreenEnter",{ref:this._main}))},this._main=e,this._logger=e.getLogger(),this._logger.info(this,"Creating new StageController"),this.initialize()}initialize(){var e=null!=(e=null==(e=null==(e=null==(e=this._main.getConfigManager())?void 0:e.getSettingsData())?void 0:e.getVideoData())?void 0:e.containerID)?e:null,t=(this._scalingMode=null!=(t=null==(t=this._main.getConfigManager())?void 0:t.getSettingsData().getVideoData().scalingMode)?t:s.FILL,this._videoContainer=document.createElement("div"),this._videoContainer.setAttribute("id","stormStreamer_"+this._main.getStreamerID()),this._videoContainer.style.overflow="hidden",this._videoContainer.style.position="relative",this._videoContainer.classList.add("stormStreamer"),this._screenElement=new H(this._main),this._videoContainer.appendChild(this._screenElement.getVideoElement()),this._main.getConfigManager().getSettingsData().getVideoData().resizeDebounce);this._resizeObserver=0<t?new ResizeObserver(z(()=>()=>{this._autoResizeEnabled&&this.handleResize()},t,{leading:!1,trailing:!0})):new ResizeObserver(()=>{this._autoResizeEnabled&&this.handleResize()}),document.addEventListener("fullscreenchange",this.onFullScreenChange,!1),document.addEventListener("webkitfullscreenchange",this.onFullScreenChange,!1),document.addEventListener("mozfullscreenchange",this.onFullScreenChange,!1),document.addEventListener("webkitendfullscreen",this.onFullScreenChange,!1),this._screenElement.getVideoElement().addEventListener("webkitendfullscreen",this.onFullScreenChange,!1),this._main.addEventListener("metadata",e=>{this._videoWidth=e.videoWidth,this._videoHeight=e.videoHeight,this.handleResize()},!1),e?this.attachToParent(e):this._logger.warning(this,'Could not create HTMLObject for the library - "containerID" was not provided')}attachToParent(e){let t=!1,i=null;return"string"==typeof e?(this._logger.info(this,"Attaching container to ID: "+e),i=document.getElementById(e),console.log(">>",document.getElementById(e))):e instanceof HTMLElement&&(this._logger.info(this,"Attaching container to HTMLElement: "+e),i=e),i===this._parentElement?(this._logger.warning(this,"attachToParent :: container is the same"),!1):(i&&this._videoContainer?(this._parentElement=i,this._parentElement.appendChild(this._videoContainer),this._resizeObserver.observe(this._parentElement),this._parentElement.addEventListener("transitionend",()=>{this.handleResize()}),this._main.dispatchEvent("containerChange",{ref:this._main,container:this._parentElement}),this.handleResize(),t=!0):(console.log("tempParentElement",i),console.log("this._videoContainer",this._videoContainer),this._logger.warning(this,"attachToParent :: container was not found")),t)}detachFromParent(){let e=!1;return null!=this._parentElement&&null!=this._videoContainer?(this._logger.info(this,"Detaching from parent: "+this._videoContainer),this._parentElement.removeChild(this._videoContainer),this._resizeObserver&&(this._resizeObserver.unobserve(this._parentElement),this._resizeObserver.disconnect()),this._autoResizeEnabled&&this._parentElement.removeEventListener("transitionend",this.handleResize),this._main.dispatchEvent("containerChange",{ref:this._main,container:null}),e=!0):this._logger.info(this,"Failed detaching from parent!"),this._parentElement=null,e}handleResize(){this._parentElement&&!this._isResizing&&(this._isResizing=!0,this._parentOriginalOverflow=this._parentElement.style.overflow,this._parentElement.style.overflow="hidden",requestAnimationFrame(()=>{this.calculateNewDimensions(),this._parentElement.style.overflow=this._parentOriginalOverflow,this._isResizing=!1,this._tempContainerWidth===this._containerWidth&&this._tempContainerHeight===this._containerHeight||this._main.dispatchEvent("resizeUpdate",{ref:this._main,width:this._tempContainerWidth,height:this._tempContainerHeight})}))}calculateNewDimensions(){var e=this._main.getConfigManager().getSettingsData().getVideoData().parentSizeCalculationMethod;switch(e){case i.CLIENT_DIMENSIONS:this._tempContainerWidth=this._parentElement.clientWidth,this._tempContainerHeight=this._parentElement.clientHeight;break;case i.BOUNDING_BOX:var t=this._parentElement.getBoundingClientRect();this._tempContainerWidth=t.width,this._tempContainerHeight=t.height;break;case i.FULL_BOX:t=class{static calculateDimensionsWithMargins(e){var t=window.getComputedStyle(e),e=e.getBoundingClientRect(),i=parseFloat(t.paddingLeft),n=parseFloat(t.paddingRight),s=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),r=parseFloat(t.borderLeftWidth),a=parseFloat(t.borderRightWidth),h=parseFloat(t.borderTopWidth),t=parseFloat(t.borderBottomWidth);return{width:e.width-i-n-r-a,height:e.height-s-o-h-t}}}.calculateDimensionsWithMargins(this._parentElement);this._tempContainerWidth=t.width,this._tempContainerHeight=t.height}this._logger.info(this,`New dimensions calculated: ${this._tempContainerWidth}x${this._tempContainerHeight} (${e})`),this.resizeVideoContainer(),this.scaleVideo()}resizeVideoContainer(){var e=this._main.getConfigManager().getSettingsData().getVideoData().videoWidthInPixels,t=this._main.getConfigManager().getSettingsData().getVideoData().videoHeightInPixels,i=this._main.getConfigManager().getSettingsData().getVideoData().videoWidthValue,n=this._main.getConfigManager().getSettingsData().getVideoData().videoHeightValue,s=this._main.getConfigManager().getSettingsData().getVideoData().aspectRatio;let o=0,r=0;var a=Number(s.split(":")[0]),h=Number(s.split(":")[1]);"none"==s?(e?o=i:null!=this._parentElement&&(o=this._tempContainerWidth*i/100),t?r=n:null!=this._parentElement&&0==(r=this._tempContainerHeight*n/100)&&0!=this._videoHeight&&0!=this._videoWidth&&(r=this._videoHeight*o/this._videoWidth)):(e?o=i:null!=this._parentElement&&(o=this._tempContainerWidth*i/100),r=o*h/a),this._containerWidth=Math.ceil(o),this._containerHeight=Math.ceil(r),null!==this._videoContainer&&(this._videoContainer.style.width=this._containerWidth+"px",this._videoContainer.style.height=this._containerHeight+"px")}scaleVideo(){if(null!==this._screenElement){let e=0,t=0,i=0,n=0;switch(this._scalingMode){case s.FILL:i=this._containerWidth,n=this._containerHeight;break;case s.CROP:i=this._containerWidth,(n=this._videoHeight*this._containerWidth/this._videoWidth)>=this._containerHeight?(e=0,t=(n-this._containerHeight)/2*-1):(n=this._containerHeight,i=this._videoWidth*this._containerHeight/this._videoHeight,t=0,e=(i-this._containerWidth)/2*-1);break;case s.LETTER_BOX:i=this._containerWidth,(!((n=this._videoHeight*this._containerWidth/this._videoWidth)<=this._containerHeight)||(e=0,t=(n-this._containerHeight)/2*-1,n>this._containerHeight))&&(n=this._containerHeight,i=this._videoWidth*this._containerHeight/this._videoHeight,t=0,e=(i-this._containerWidth)/2*-1);break;case s.ORIGINAL:i=this._videoWidth,n=this._videoHeight,e=(this._videoWidth-this._containerWidth)/-2,t=(this._videoHeight-this._containerHeight)/-2}this._screenElement.getVideoElement().style.left=Math.floor(e)+"px",this._screenElement.getVideoElement().style.top=Math.floor(t)+"px",this._screenElement.getVideoElement().style.width=Math.ceil(i)+"px",this._screenElement.getVideoElement().style.height=Math.ceil(n)+"px",this._screenElement.getVideoElement().style.position="absolute",this._screenElement.getVideoElement().style.objectFit="fill"}}enterFullScreen(){var e;null!=(e=this._screenElement)&&e.getVideoElement().webkitEnterFullScreen?null!=(e=this._screenElement)&&e.getVideoElement().webkitEnterFullScreen():null!=(e=this._screenElement)&&e.getVideoElement().requestFullscreen()}exitFullScreen(){var e;null!=(e=this._screenElement)&&e.getVideoElement().webkitExitFullscreen?document.webkitExitFullscreen():document.exitFullscreen()}isFullScreenMode(){return this.isInFullScreenMode}setDimension(e,t){var i="width"===e?"videoWidth":"videoHeight";let n,s;if("number"==typeof t)s=t,n=!0;else{if("string"!=typeof t)throw new Error(`Unknown value for parameter "${e}" - it must be a number or a string!`);s=parseInt(t),n=t.toLowerCase().endsWith("px")}this._main.getConfigManager().getSettingsData().getVideoData()[i+"Value"]=s,this._main.getConfigManager().getSettingsData().getVideoData()[i+"InPixels"]=n,this.resizeVideoContainer(),this.scaleVideo()}setSize(e,t){this.setDimension("width",e),this.setDimension("height",t)}setWidth(e){this.setDimension("width",e)}setHeight(e){this.setDimension("height",e)}getParentElement(){return this._parentElement}setScalingMode(e){switch(e.toLowerCase()){case"fill":this._scalingMode=s.FILL;break;case"crop":this._scalingMode=s.CROP;break;case"letterbox":this._scalingMode=s.LETTER_BOX;break;case"original":this._scalingMode=s.ORIGINAL}this.scaleVideo()}getContainerWidth(){return this._containerWidth}getContainerHeight(){return this._containerHeight}getScalingModeAsString(){let e="";switch(this._scalingMode){case s.FILL:e="fill";break;case s.CROP:e="crop";break;case s.LETTER_BOX:e="letterbox";break;case s.ORIGINAL:e="original"}return e}getScalingMode(){return this._scalingMode}getScreenElement(){return this._screenElement}getContainer(){return this._videoContainer}destroy(){this.detachFromParent()}}function R(e,r,a,h){return new(a=a||Promise)(function(i,t){function n(e){try{o(h.next(e))}catch(e){t(e)}}function s(e){try{o(h.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?i(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(n,s)}o((h=h.apply(e,r||[])).next())})}y.LOG_ACTIVITY=!0,"function"==typeof SuppressedError&&SuppressedError;class N{constructor(){}addAudio(e,t){let i="",n="",s=!1;for(const o of e.split(/\r\n/))o.length<=0||(0===o.indexOf("m=audio")?i="audio":0===o.indexOf("m=video")&&(i="video"),n=n+o+"\r\n","audio"!==i)||0!=="a=rtcp-mux".localeCompare(o)||s||(n+=t,s=!0);return n}addVideo(e,t){e=e.split(/\r\n/);let i="",n=!1,s=!1;for(const r of e)r.length<=0||(r.includes("a=rtcp-rsize")&&(s=!0),r.includes("a=rtcp-mux"));let o=!1;for(const a of e)a.startsWith("m=video")&&(o=!0),i=i+a+"\r\n",o&&(0==="a=rtcp-rsize".localeCompare(a)&&!n&&s&&(i+=t,n=!0),0==="a=rtcp-mux".localeCompare(a)&&n&&!s&&(i+=t,n=!0),0!=="a=rtcp-mux".localeCompare(a)||n||s||(n=!0));return i}deliverCheckLine(e,t){for(const n in N.SDPOutput){var i=N.SDPOutput[n];if(i.includes(e)){if(e.includes("VP9")||e.includes("VP8")){let e="";for(const s of i.split(/\r\n/))e=e+s+"\r\n";return t.includes("audio")&&(N.audioIndex=parseInt(n)),t.includes("video")&&(N.videoIndex=parseInt(n)),e}return t.includes("audio")&&(N.audioIndex=parseInt(n)),t.includes("video")&&(N.videoIndex=parseInt(n)),i}}return""}checkLine(t){if(t.startsWith("a=rtpmap")||t.startsWith("a=rtcp-fb")||t.startsWith("a=fmtp")){var i=t.split(":");if(1<i.length){i=i[1].split(" ");if(!isNaN(parseInt(i[0]))&&!i[1].startsWith("http")&&!i[1].startsWith("ur")){let e=N.SDPOutput[i[0]];return e=e||"",e+=t+"\r\n",N.SDPOutput[i[0]]=e,!1}}}return!0}getrtpMapID(e){var t=new RegExp("a=rtpmap:(\\d+) (\\w+)/(\\d+)"),e=e.match(t);return e&&3<=e.length?e:null}mungeSDPPublish(e,t){N.SDPOutput={},N.videoChoice="42e01f",N.audioChoice="opus",N.videoIndex=-1,N.audioIndex=-1;e=e.split(/\r\n/);let i="header",n=!1,s="";null!=t.videoCodec&&""!==t.videoCodec&&(N.videoChoice=t.videoCodec),null!=t.audioCodec&&""!==t.audioCodec&&(N.audioChoice=t.audioCodec);for(const a of e)a.length<=0||this.checkLine(a)&&(s=s+a+"\r\n");s=this.addAudio(s,this.deliverCheckLine(N.audioChoice,"audio"));var o,r,e=(s=this.addVideo(s,this.deliverCheckLine(N.videoChoice,"video"))).split(/\r\n/);s="";for(const h of e)if(!(h.length<=0)){let e;if(0===h.indexOf("m=audio")&&-1!==N.audioIndex)e=h.split(" "),s+=e[0]+" "+e[1]+" "+e[2]+" "+N.audioIndex+"\r\n",i="audio",n=!1;else if(0===h.indexOf("m=video")&&-1!==N.videoIndex)e=h.split(" "),s+=e[0]+" "+e[1]+" "+e[2]+" "+N.videoIndex+"\r\n",i="video",n=!1;else{if(s+=h,0===h.indexOf("a=rtpmap")&&(i="bandwidth",n=!1),"chrome"!==m.getBrowserName().toLowerCase()&&"safari"!==m.getBrowserName().toLowerCase()||0!==h.indexOf("a=mid:")&&0!==h.indexOf("a=rtpmap")||n||(0==="audio".localeCompare(i)?(void 0!==t.audioBitrate&&""!==t.audioBitrate&&(s=(s+="\r\nb=CT:"+t.audioBitrate)+"\r\nb=AS:"+t.audioBitrate),n=!0):0==="video".localeCompare(i)?(void 0!==t.videoBitrate&&""!==t.videoBitrate&&(s=(s+="\r\nb=CT:"+t.videoBitrate)+"\r\nb=AS:"+t.videoBitrate,void 0!==t.videoFrameRate)&&(s+="\r\na=framerate:"+t.videoFrameRate),n=!0):"chrome"===m.getBrowserName().toLowerCase()&&0==="bandwidth".localeCompare(i)&&null!==(r=this.getrtpMapID(h))&&(o=r[2].toLowerCase(),0!=="vp9".localeCompare(o)&&0!=="vp8".localeCompare(o)&&0!=="h264".localeCompare(o)&&0!=="red".localeCompare(o)&&0!=="ulpfec".localeCompare(o)&&0!=="rtx".localeCompare(o)||void 0!==t.videoBitrate&&(s+="\r\na=fmtp:"+r[1]+" x-google-min-bitrate="+t.videoBitrate+";x-google-max-bitrate="+t.videoBitrate),0!=="opus".localeCompare(o)&&0!=="isac".localeCompare(o)&&0!=="g722".localeCompare(o)&&0!=="pcmu".localeCompare(o)&&0!=="pcma".localeCompare(o)&&0!=="cn".localeCompare(o)||void 0!==t.audioBitrate&&(s+="\r\na=fmtp:"+r[1]+" x-google-min-bitrate="+t.audioBitrate+";x-google-max-bitrate="+t.audioBitrate))),"firefox"===m.getBrowserName().toLowerCase()&&0===h.indexOf("c=IN")){if(0==="audio".localeCompare(i)){""!==t.audioBitrate&&"string"==typeof t.audioBitrate&&(o=parseInt(t.audioBitrate),s=(s+="\r\nb=TIAS:"+(1e3*o*.95-16e3)+"\r\n")+"b=AS:"+o+"\r\nb=CT:"+o+"\r\n");continue}if(0==="video".localeCompare(i)){""!==t.videoBitrate&&"string"==typeof t.videoBitrate&&(r=parseInt(t.videoBitrate),s=(s+="\r\nb=TIAS:"+1e3*(1e3*r*.95-16e3)+"\r\n")+"b=AS:"+r+"\r\nb=CT:"+r+"\r\n");continue}}s+="\r\n"}}return s}mungeSDPPlay(e){let n="";for(const r of e.split(/\r\n/))if(0!==r.length){if(r.includes("profile-level-id")){var s=r.substr(r.indexOf("profile-level-id")+17,6);let e=Number("0x"+s.substr(0,2)),t=Number("0x"+s.substr(2,2)),i=Number("0x"+s.substr(4,2));66<e&&(e=66,t=224,i=31),0===t&&(t=224);var o=("00"+e.toString(16)).slice(-2).toLowerCase()+("00"+t.toString(16)).slice(-2).toLowerCase()+("00"+i.toString(16)).slice(-2).toLowerCase();n+=r.replace(s,o)}else n+=r;n+="\r\n"}return n}}N.SDPOutput={},(C=D=D||{})[C.VIDEO_INPUT=0]="VIDEO_INPUT",C[C.AUDIO_INPUT=1]="AUDIO_INPUT";class k{constructor(e,t){if(this._groupID="",this._isSelected=!1,null==e)throw new Error("no input device");if(void 0===e.deviceId||null===e.deviceId)throw new Error("no deviceID");if(this._id=e.deviceId,void 0===e.kind||null===e.kind)throw new Error("no device kind");switch(e.kind){case"videoinput":this._inputType=D.VIDEO_INPUT;break;case"audioinput":this._inputType=D.AUDIO_INPUT;break;default:throw new Error("incorrect kind")}null!==e.label&&""!==e.label?this._label=this.cleanLabel(e.label):this._label=this._inputType==D.VIDEO_INPUT?"Camera "+t:"Microphone "+t,void 0!==e.groupId&&null!==e.groupId&&(this._groupID=e.groupId)}cleanLabel(e){return e}getLabel(){return this._label}getID(){return this._id}getGroupID(){return this._groupID}getIfSelected(){return this._isSelected}setSelected(e){this._isSelected=e}}class W{constructor(){this._internalList=new Array}push(t){let i=!1;if(0<this._internalList.length){for(let e=0;e<this._internalList.length;e++)""!==this._internalList[e].getGroupID()&&this._internalList[e].getGroupID()==t.getGroupID()&&(i=!0,this._internalList[e]=t);return 0==i?this._internalList.push(t):this._internalList.length}return this._internalList.push(t)}get(e){return this._internalList[e]}getSize(){return this._internalList.length}getArray(){return this._internalList}}o.PublishState=void 0,(I=o.PublishState||(o.PublishState={})).NOT_INITIALIZED="NOT_INITIALIZED",I.INITIALIZED="INITIALIZED",I.CONNECTING="CONNECTING",I.PUBLISHED="PUBLISHED",I.UNPUBLISHED="UNPUBLISHED",I.STOPPED="STOPPED",I.UNKNOWN="UNKNOWN",I.ERROR="ERROR";class G{constructor(e){this._stream=null,this._audioContext=null,this._analyser=null,this._microphone=null,this._lastEventTime=0,this.THROTTLE_INTERVAL=100,this._instant=0,this._slow=0,this._clip=0,this._main=e}attach(e){this._stream=e,this._audioContext=new AudioContext,this._microphone=this._audioContext.createMediaStreamSource(e),this._analyser=this._audioContext.createAnalyser(),this._analyser.fftSize=2048,this._analyser.smoothingTimeConstant=.3,this._microphone.connect(this._analyser),this.startMonitoring()}detach(){this._microphone&&(this._microphone.disconnect(),this._microphone=null),this._analyser&&(this._analyser.disconnect(),this._analyser=null),this._audioContext&&(this._audioContext.close(),this._audioContext=null),this._stream=null,this.clear()}clear(){this._instant=0,this._slow=0,this._clip=0}startMonitoring(){if(this._analyser){const s=new Float32Array(this._analyser.frequencyBinCount),o=()=>{if(this._analyser){var e=Date.now();this._analyser.getFloatTimeDomainData(s);let t=0,i=0;for(let e=0;e<s.length;++e){var n=s[e];t+=n*n,.99<Math.abs(n)&&(i+=1)}this._instant=Math.sqrt(t/s.length),this._slow=.05*this._instant+.95*this._slow,this._clip=i/s.length,e-this._lastEventTime>=this.THROTTLE_INTERVAL&&(this._lastEventTime=e,this._main.dispatchEvent("soundMeter",{ref:this._main,high:this._instant,low:this._slow})),requestAnimationFrame(o)}};requestAnimationFrame(o)}}}class K{constructor(e){this._isWindowActive=!0,this._peerConnectionConfig={iceServers:[]},this._isMicrophoneMuted=!1,this._pendingMicrophoneState=null,this._constraints={video:{width:{min:"640",ideal:"1024",max:"1024"},height:{min:"360",ideal:"576",max:"576"},frameRate:{min:24,ideal:30,max:30}},audio:!0},this._publishState=o.PublishState.NOT_INITIALIZED,this.onServerDisconnect=()=>{},this.onServerConnect=()=>{if(this._peerConnection&&this.closeWebRTCConnection(),this._peerConnection=new RTCPeerConnection(this._peerConnectionConfig),this._peerConnection.onicecandidate=e=>{this.onIceCandidate(e)},this._peerConnection.onconnectionstatechange=e=>{this.onConnectionStateChange(e)},this._peerConnection.onnegotiationneeded=e=>{this._peerConnection&&this._peerConnection.createOffer(e=>{this.onDescriptionSuccess(e)},e=>{this.onDescriptionError(e)}).catch(e=>{console.log(e)})},this._stream){var e,t=this._stream.getTracks();for(e in t)this._peerConnection.addTrack(t[e],this._stream)}},this.onDescriptionSuccess=t=>{var e;console.log("%cāµ š„ onDescriptionSuccess ","background: green; color: white;");const i={applicationName:null==(e=null==(e=this._main.getNetworkController())?void 0:e.getConnection().getCurrentServer())?void 0:e.getApplication(),streamName:null==(e=this._main.getConfigManager())?void 0:e.getStreamData().streamKey,sessionId:"[empty]"};t.sdp=this._mungeSDP.mungeSDPPublish(t.sdp,{audioBitrate:"64",videoBitrate:"1500",videoFrameRate:30,videoCodec:"42e01f",audioCodec:"opus"}),this._peerConnection&&this._peerConnection.setLocalDescription(t).then(()=>{var e;null!=(e=this._main.getNetworkController())&&e.sendMessage('{"direction":"publish", "command":"sendOffer", "streamInfo":'+JSON.stringify(i)+', "sdp":'+JSON.stringify(t)+"}")}).catch(e=>{console.log(e)})},this.visibilityChange=()=>{"hidden"===document.visibilityState?this.onWindowBlur():"visible"===document.visibilityState&&this.onWindowFocus()},this.onWindowBlur=()=>{this._isWindowActive&&this._logger.warning(this,"Player window is no longer in focus!"),this._isWindowActive=!1},this.onWindowFocus=()=>{this._isWindowActive||this._logger.info(this,"Player window is focused again!"),this._isWindowActive=!0},this._main=e,this._logger=e.getLogger(),this._logger.info(this,"Creating new PlaybackController"),this._mungeSDP=new N,this._soundMeter=new G(this._main),this.initialize()}initialize(){var e;this._main.addEventListener("serverConnect",this.onServerConnect,!1),this._main.addEventListener("serverDisconnect",this.onServerDisconnect,!1),document.addEventListener("visibilitychange",this.visibilityChange),window.addEventListener("blur",this.onWindowBlur),window.addEventListener("focus",this.onWindowFocus),null!=(e=this._main.getConfigManager())&&e.getSettingsData().autoConnect?(this._logger.info(this,"Initializing NetworkController (autoConnect is true)"),null!=(e=this._main.getNetworkController())&&e.initialize()):this._logger.warning(this,"Warning - autoConnect is set to false, switching to standby mode!"),this.startCamera().then(()=>{var e;null!=(null==(e=this._main.getConfigManager())?void 0:e.getStreamData().streamKey)&&this.initializeWebRTC()})}onCameraStreamSuccess(e){this._logger.success(this,"Camera stream successfully retrieved"),this._stream=e,null!==this._pendingMicrophoneState?(this.applyMicrophoneState(this._pendingMicrophoneState),this._pendingMicrophoneState=null):this.applyMicrophoneState(!this._isMicrophoneMuted),0<this._stream.getAudioTracks().length&&this._soundMeter.attach(this._stream),null!=this._cameraList&&null!=this._microphoneList||this.grabDevices();var t=this._main.getStageController().getScreenElement().getVideoElement();t.srcObject=e,t.autoplay=!0,t.playsInline=!0,t.disableRemotePlayback=!0,t.controls=!1,t.muted=!0,this.setPublishState(o.PublishState.INITIALIZED)}initializeWebRTC(){var e;this._stream?this._peerConnection?(this._logger.info(this,"WebRTC connection already exists, updating stream"),this.updateWebRTCStream()):(this._logger.info(this,"Initializing new WebRTC connection"),null!=(e=this._main.getNetworkController())&&e.start()):this._logger.error(this,"Cannot initialize WebRTC - no camera stream available")}publish(e){return this.isStreamReady(!0,!0)?(this.closeWebRTCConnection(),this._main.getConfigManager().getStreamData().streamKey=e,this._main.dispatchEvent("publish",{ref:this._main,streamKey:e}),this.initializeWebRTC(),!0):(this._logger.warning(this,"Cannot publish - stream not ready (missing video or audio track)"),!1)}unpublish(){this._main.getConfigManager().getStreamData().streamKey=null,this._main.dispatchEvent("unpublish",{ref:this._main}),this.closeStream()}onUserMediaError(e){console.log("%cāµ š„ onUserMediaError: "+JSON.stringify(e),"background: green; color: white;");var t=e.name||"",i=e.message||"";e.deviceType?("video"===e.deviceType?this._main.dispatchEvent("cameraAccessDenied",{ref:this._main}):"audio"===e.deviceType&&this._main.dispatchEvent("microphoneAccessDenied",{ref:this._main}),this.grabDevices()):"NotAllowedError"===t||i.includes("Permission denied")||i.includes("not allowed")?this.checkIndividualDeviceAccess().then(e=>{e.camera||e.microphone?(e.camera||this._main.dispatchEvent("cameraAccessDenied",{ref:this._main}),e.microphone||this._main.dispatchEvent("microphoneAccessDenied",{ref:this._main})):(this._main.dispatchEvent("cameraAccessDenied",{ref:this._main}),this._main.dispatchEvent("microphoneAccessDenied",{ref:this._main})),this.grabDevices()}):"NotFoundError"===t||i.includes("Requested device not found")?this.checkDeviceAvailability().then(e=>{e.camera||this._main.dispatchEvent("noCameraFound",{ref:this._main}),e.microphone||this._main.dispatchEvent("noMicrophoneFound",{ref:this._main}),this.grabDevices()}):(this._logger.warning(this,"WebRTCStreamer :: Unsupported onUserMediaError: "+i),this._main.dispatchEvent("inputDeviceError",{ref:this._main}),this.grabDevices())}checkIndividualDeviceAccess(){return R(this,void 0,void 0,function*(){var t={camera:!1,microphone:!1};try{var e=yield navigator.mediaDevices.getUserMedia({video:!0});t.camera=!0,e.getTracks().forEach(e=>e.stop())}catch(e){t.camera=!1}try{var i=yield navigator.mediaDevices.getUserMedia({audio:!0});t.microphone=!0,i.getTracks().forEach(e=>e.stop())}catch(e){t.microphone=!1}return t})}checkDeviceAvailability(){return R(this,void 0,void 0,function*(){var e=yield navigator.mediaDevices.enumerateDevices();return{camera:e.some(e=>"videoinput"===e.kind),microphone:e.some(e=>"audioinput"===e.kind)}})}onSocketMessage(e){var t=JSON.parse(e);switch(Number(t.status)){case 200:console.log("%cāµ š„ onSocketMessage: 200","background: green; color: white;");var i=t.sdp,n=(void 0!==i&&this._peerConnection.setRemoteDescription(new RTCSessionDescription(i),()=>{},()=>{}),t.iceCandidates);if(void 0!==n)for(var s in n)this._peerConnection&&this._peerConnection.addIceCandidate(new RTCIceCandidate(n[s]));break;case 503:console.log("%cāµ š„ onSocketMessage: 503","background: green; color: white;"),this._main.dispatchEvent("streamKeyInUse",{ref:this._main,streamKey:this._main.getConfigManager().getStreamData().streamKey}),this.setPublishState(o.PublishState.ERROR)}}onConnectionStateChange(e){if(console.log("%cāµ š„ onConnectionStateChange: "+e.currentTarget.connectionState,"background: green; color: white;"),null!==e)switch(e.currentTarget.connectionState){case"connecting":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerConnecting"),this.setPublishState(o.PublishState.CONNECTING);break;case"connected":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerConnected"),this.setPublishState(o.PublishState.PUBLISHED),this.muteMicrophone(this._isMicrophoneMuted);break;case"disconnected":this._logger.info(this,"WebRTCStreamer :: Event: onStreamerDisconnected"),this.setPublishState(o.PublishState.UNPUBLISHED);break;case"failed":this._logger.info(this,"WebRTCStreamer :: Event: onPlayerFailed"),this.setPublishState(o.PublishState.ERROR);break;default:this._logger.info(this,"WebRTCStreamer :: Unsupported onConnectionStateChange: "+e.currentTarget.connectionState)}}grabDevices(){return R(this,void 0,void 0,function*(){try{try{yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})}catch(e){}var e,t,i,n=yield navigator.mediaDevices.enumerateDevices();this._cameraList=new W,this._microphoneList=new W;for(e of n)try{e.deviceId&&e.label&&("videoinput"===e.kind?(t=new k(e,this._cameraList.getSize()),this._cameraList.push(t)):"audioinput"===e.kind&&(i=new k(e,this._microphoneList.getSize()),this._microphoneList.push(i)))}catch(e){this._logger.error(this,"WebRTCStreamer :: Input Device Error: "+e)}this._logger.info(this,"Camera list:");for(let e=0;e<this._cameraList.getSize();e++)this._logger.info(this,"=> ["+e+"] InputDevice: "+this._cameraList.get(e).getLabel());this._logger.info(this,"Microphone list:");for(let e=0;e<this._microphoneList.getSize();e++)this._logger.info(this,"=> ["+e+"] InputDevice: "+this._microphoneList.get(e).getLabel());0==this._cameraList.getSize()?this._main.dispatchEvent("noCameraFound",{ref:this._main}):this._selectedCamera=this.pickCamera(),0==this._microphoneList.getSize()?this._main.dispatchEvent("noMicrophoneFound",{ref:this._main}):this._selectedMicrophone=this.pickMicrophone(),this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()})}catch(e){this._cameraList||(this._cameraList=new W),this._microphoneList||(this._microphoneList=new W),this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._main.dispatchEvent("inputDeviceError",{ref:this._main})}})}selectCamera(t){var i;for(let e=0;e<this._cameraList.getSize();e++)if(this._cameraList.get(e).getID()==t){this._selectedCamera=this._cameraList.get(e),null!=(i=this._main.getStorageManager())&&i.saveField("cameraID",this._selectedCamera.getID());break}const n=this._publishState===o.PublishState.PUBLISHED;this.stopCameraStream(),this._constraints.video.deviceId=this._selectedCamera.getID(),this.startCamera().then(()=>{var e;n&&null!=(e=this._main.getConfigManager())&&e.getStreamData().streamKey&&this.updateWebRTCStream()})}selectMicrophone(t){var i;for(let e=0;e<this._microphoneList.getSize();e++)if(this._microphoneList.get(e).getID()==t){this._selectedMicrophone=this._microphoneList.get(e),null!=(i=this._main.getStorageManager())&&i.saveField("microphoneID",this._selectedMicrophone.getID());break}const n=this._publishState===o.PublishState.PUBLISHED;this.stopCameraStream(),this._constraints.audio={deviceId:this._selectedMicrophone.getID()},this.startCamera().then(()=>{var e;n&&null!=(e=this._main.getConfigManager())&&e.getStreamData().streamKey&&this.updateWebRTCStream()})}startCamera(){return R(this,void 0,void 0,function*(){try{var e=yield navigator.mediaDevices.enumerateDevices(),i=e.some(e=>"videoinput"===e.kind),n=e.some(e=>"audioinput"===e.kind),s=[];let t=!1;if(i)try{var o=yield navigator.mediaDevices.getUserMedia({video:this._constraints.video});s.push(...o.getTracks())}catch(e){t=!0,this.onUserMediaError({name:e instanceof Error?e.name:"UnknownError",message:e instanceof Error?e.message:"Unknown error",deviceType:"video"})}if(n)try{var r=yield navigator.mediaDevices.getUserMedia({audio:this._constraints.audio});s.push(...r.getTracks())}catch(e){t=!0,this.onUserMediaError({name:e instanceof Error?e.name:"UnknownError",message:e instanceof Error?e.message:"Unknown error",deviceType:"audio"})}0<s.length?(this._stream=new MediaStream(s),this.onCameraStreamSuccess(this._stream)):t&&(yield this.grabDevices())}catch(e){e instanceof Error&&!("deviceType"in e)&&this.onUserMediaError({name:e.name,message:e.message}),yield this.grabDevices()}})}stopCameraStream(){this._stream&&(this._stream.getTracks().forEach(e=>e.stop()),this._main.getStageController().getScreenElement().getVideoElement().srcObject=null,this._soundMeter.detach(),this._stream=null)}updateWebRTCStream(){this._peerConnection&&this._stream&&(this._peerConnection.getSenders().forEach(e=>{this._peerConnection&&this._peerConnection.removeTrack(e)}),this._stream.getTracks().forEach(e=>{null!=this._stream&&this._peerConnection&&this._peerConnection.addTrack(e,this._stream)}))}closeStream(){void 0!==this._peerConnection&&null!==this._peerConnection&&this._peerConnection.close(),this.setPublishState(o.PublishState.UNPUBLISHED)}pickCamera(){var e;for(let e=0;e<this._cameraList.getSize();e++)this._cameraList.get(e).setSelected(!1);var t=null!=(e=null==(e=this._main.getStorageManager())?void 0:e.getField("cameraID"))?e:null;if(null==this._selectedCamera||null==t)0<this._cameraList.getSize()&&(this._selectedCamera=this._cameraList.get(0),this._selectedCamera.setSelected(!0));else{for(let e=0;e<this._cameraList.getSize();e++)if(this._cameraList.get(e).getID()==t){this._selectedCamera=this._cameraList.get(e),this._selectedCamera.setSelected(!0);break}!this._selectedCamera&&0<this._cameraList.getSize()&&(this._selectedCamera=this._cameraList.get(0),this._selectedCamera.setSelected(!0))}return this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._selectedCamera}pickMicrophone(){var e;for(let e=0;e<this._microphoneList.getSize();e++)this._microphoneList.get(e).setSelected(!1);var t=null!=(e=null==(e=this._main.getStorageManager())?void 0:e.getField("microphoneID"))?e:null;if(null==this._selectedMicrophone||null==t)0<this._microphoneList.getSize()&&(this._selectedMicrophone=this._microphoneList.get(0),this._selectedMicrophone.setSelected(!0));else{for(let e=0;e<this._microphoneList.getSize();e++)if(this._microphoneList.get(e).getID()==t){this._selectedMicrophone=this._microphoneList.get(e),this._selectedMicrophone.setSelected(!0);break}!this._selectedMicrophone&&0<this._microphoneList.getSize()&&(this._selectedMicrophone=this._microphoneList.get(0),this._selectedMicrophone.setSelected(!0))}return this._main.dispatchEvent("deviceListUpdate",{ref:this._main,cameraList:this._cameraList.getArray(),microphoneList:this._microphoneList.getArray()}),this._selectedMicrophone}muteMicrophone(e){this._isMicrophoneMuted!==e&&(this._isMicrophoneMuted=e,this._stream?this.applyMicrophoneState(!e):(this._pendingMicrophoneState=!e,this._logger.info(this,`WebRTCStreamer :: Stream not yet available, storing microphone state (muted: ${e})`)),this._main.dispatchEvent("microphoneStateChange",{ref:this._main,isMuted:this._isMicrophoneMuted}))}applyMicrophoneState(t){var e;this._stream?(e=this._stream.getAudioTracks())&&0<e.length?(this._logger.success(this,`WebRTCStreamer :: ${t?"Unmuting":"Muting"} microphone`),e.forEach(e=>e.enabled=t)):this._logger.warning(this,"WebRTCStreamer :: No audio tracks found in stream"):this._logger.warning(this,"WebRTCStreamer :: Cannot apply microphone state - stream not available")}isMicrophoneMuted(){return this._isMicrophoneMuted}isStreamReady(e=!0,t=!0){var i,n;return!!this._stream&&(n=this._stream.getVideoTracks(),i=this._stream.getAudioTracks(),e=!e||0<n.length&&"live"===n[0].readyState,n=!t||0<i.length&&"live"===i[0].readyState,e)&&n}closeWebRTCConnection(){this._peerConnection&&(this._peerConnection.close(),this._peerConnection=null)}onDescriptionError(e){this._logger.info(this,"WebRTCStreamer :: onDescriptionError: "+JSON.stringify(e))}onIceCandidate(e){e.candidate}getCurrentCamera(){return this._selectedCamera}getCurrentMicrophone(){return this._selectedMicrophone}setPublishState(e){this._publishState=e,this._main.dispatchEvent("publishStateChange",{ref:this._main,state:this._publishState})}getCameraList(){return null!=this._cameraList?this._cameraList.getArray():[]}getMicrophoneList(){return null!=this._microphoneList?this._microphoneList.getArray():[]}getPublishState(){return this._publishState}getPlayer(){return this._selectedPlayer}destroy(){var e;this._pendingMicrophoneState=null,this.closeStream(),null!=(e=this._selectedPlayer)&&e.clear(),this._selectedPlayer=null,this._main.removeEventListener("serverConnect",this.onServerConnect),document.removeEventListener("visibilitychange",this.visibilityChange),window.removeEventListener("blur",this.onWindowBlur),window.removeEventListener("focus",this.onWindowFocus)}}(C=O=O||{})[C.NOT_INITIALIZED=0]="NOT_INITIALIZED",C[C.STARTED=1]="STARTED",C[C.CONNECTING=2]="CONNECTING",C[C.CONNECTED=3]="CONNECTED",C[C.CLOSED=4]="CLOSED",C[C.FAILED=5]="FAILED";class X extends class{constructor(){this.CONNECTION_TIMEOUT=5,this.isBinary=!0,this._connectionState=O.NOT_INITIALIZED,this._messageCount=0,this._disconnectedByUser=!1,this._isConnected=!1,this._sequenceNumber=-1}startConnection(){this._disconnectedByUser=!1,this._messageCount=0,this._isConnected=!1,this._disconnectedByUser=!1,this._connectionState=O.CONNECTING,this.socket=new WebSocket(this.socketURL),this.isBinary&&(this.socket.binaryType="arraybuffer"),this.socket.onopen=e=>{clearTimeout(this._connectionTimeout),this._sequenceNumber++,this._connectionState=O.CONNECTED,this.onSocketOpen(e)},this.socket.onmessage=e=>{this._messageCount++,this.onSocketMessage(e)},this.socket.onclose=e=>{clearTimeout(this._connectionTimeout),this._connectionState==O.CONNECTED?(this._connectionState=O.CLOSED,this.onSocketClose(e)):this._connectionState=O.FAILED},this.socket.onerror=e=>{if(clearTimeout(this._connectionTimeout),this._connectionState==O.CONNECTING&&this.onSocketError(e),this._connectionState==O.CONNECTED)try{this.socket.close()}catch(e){}},this._connectionTimeout=setTimeout(()=>{try{this.socket.close()}catch(e){}this._connectionState==O.CONNECTING&&(this._connectionState=O.FAILED,this.onSocketError(new ErrorEvent("connectionTimeout")))},1e3*this.CONNECTION_TIMEOUT)}onSocketOpen(e){}onSocketClose(e){}onSocketMessage(e){}onSocketError(e){}onError(e){}sendData(e){if(this._connectionState==O.CONNECTED&&null!==this.socket){if(null!=e)return void this.socket.send(e);this.onError("no data to send")}this.onError("socket not connected")}getConnectionState(){return this._connectionState}disconnect(e=!0){this._isConnected=!1,this._connectionState=O.CLOSED,e&&(this._logger.warning(this,"Disconnected by user"),this._disconnectedByUser=e),null!=this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.close())}destroy(){void 0!==this.socket&&null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.close()),this._connectionState=O.CLOSED}getSocketURL(){return this.socketURL}}{constructor(e,t){super(),this._logger=e.getLogger(),this._main=e,this._networkController=t,this.initialize()}initialize(){this._logger.info(this,"Starting new connection with a storm server"),this.pickServerFromList(this._main.getConfigManager().getStreamData().getServerList()),null!=this._currServer?(this.socketURL=this.createURL(this._currServer),this._logger.info(this,"Starting WebSocket connection with: "+this.socketURL),this._main.dispatchEvent("serverConnectionInitiate",{ref:this._main,serverURL:this.socketURL}),this._main.getConfigManager().getIfDemoMode()?(this._logger.warning(this,"Player is in demo mode, and will not connect with a server!"),this._main.dispatchEvent("authorizationComplete",{ref:this._main})):this.startConnection()):this._logger.error(this,"Connection with the server could not be initialized!")}onSocketOpen(e){this._logger.success(this,"Connection with the server has been established!"),this._main.dispatchEvent("serverConnect",{ref:this._main,serverURL:this.socketURL,sequenceNum:this._sequenceNumber}),this._isConnected=!0}onSocketError(e){this._isConnected=!1,this._disconnectedByUser||(this._logger.error(this,"Connection with the server failed"),this._main.dispatchEvent("serverConnectionError",{ref:this._main,serverURL:this.socketURL,restart:this._main.getConfigManager().getSettingsData().getIfRestartOnError(),sequenceNum:this._sequenceNumber}),0==this._isConnected&&(this._currServer.setAsFaild(!0),this.initiateReconnect()))}onSocketClose(e){this._isConnected=!1,this._disconnectedByUser?this._logger.warning(this,"Force disconnect from server!"):(this._logger.error(this,"Connection with the server has been closed"),this._main.dispatchEvent("serverDisconnect",{ref:this._main,serverURL:this.socketURL,restart:this._main.getConfigManager().getSettingsData().getIfRestartOnError(),sequenceNum:this._sequenceNumber}),this.initiateReconnect())}onSocketMessage(e){this._networkController.onMessage(e)}createURL(e){var t="";return(t+=e.getIfSSL()?"wss://":"ws://")+e.getHost()+(":"+e.getPort())+"/webrtc-session.json"}initiateReconnect(){var e=this._main.getConfigManager().getSettingsData().getIfRestartOnError();const t=this._main.getConfigManager().getSettingsData().getReconnectTime();this._disconnectedByUser||e&&(null!=this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._reconnectTimer=setTimeout(()=>{this.pickServerFromList(this._main.getConfigManager().getStreamData().getServerList()),null!=this._currServer&&(this._logger.info(this,`Will reconnect to the server in ${t} seconds...`),this.socketURL=this.createURL(this._currServer),this._logger.info(this,"Starting WebSocket connection with: "+this.socketURL),this._main.dispatchEvent("serverConnectionInitiate",{ref:this._main,serverURL:this.socketURL}),this.startConnection())},1e3*t))}pickServerFromList(t){let i=null;for(let e=0;e<t.length;e++)if(!t[e].getIfFaild()){i=t[e];break}null==i?(this._logger.error(this,"All connections failed!"),this._main.dispatchEvent("allConnectionsFailed",{ref:this._main,mode:"none"}),this._currServer=null):this._currServer=i}isConnectionActive(){return this._isConnected}getCurrentServer(){return this._currServer}destroy(){super.destroy(),null!=this._reconnectTimer&&clearTimeout(this._reconnectTimer)}}class j{constructor(e){this._currentStreamKey="none",this._lastState="",this.onServerConnect=()=>{},this.onServerDisconnect=()=>{this._lastState="none"},this.onMessage=e=>{var t;null!=(t=this._main.getPlaybackController())&&t.onSocketMessage(e.data)},this._main=e,this._logger=e.getLogger(),this._main.addEventListener("serverConnect",this.onServerConnect,!1),this._main.addEventListener("serverDisconnect",this.onServerDisconnect,!1)}initialize(){null!=this._connection&&(this._connection.getConnectionState()==O.CONNECTING||this._connection.getConnectionState()==O.CONNECTED?this._logger.info(this,"Connection is alive, not doing anything!"):(this._logger.info(this,"Connection is dead, restarting!"),this._connection.startConnection()))}start(){this._connection=new X(this._main,this)}stop(){this._connection.disconnect(!0),this._lastState=""}sendMessage(e){this._connection.isConnectionActive()&&this._connection.sendData(e)}getConnection(){return this._connection}getCurrentStreamKey(){return this._currentStreamKey}}class P extends class{constructor(){this._isRemoved=!1,this._listeners={}}addEventListener(t,i,e=!0){this._listeners[t]||(this._listeners[t]=[]);let n=!1;if(null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++)if(this._listeners[t][e][1]==i){n=!0;break}return this._logger.success(this,"Registering a new event: "+t),!n&&(this._listeners[t].push([t,i,e]),!0)}removeEventListener(t,i){let n=!1;if(null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++){var s=this._listeners[t][e];if(i){if(s[1]==i){if(1!=s[2])break;n=!0,this._listeners[t].splice(e,1);break}}else n=!0,1==s[2]&&this._listeners[t].splice(e,1)}return this._logger.success(this,"Removing listener: "+t),n}removeAllEventListeners(){this._logger.success(this,"Removing all listeners!");for(const i in this._listeners){var e=i,t=this._listeners[e];if(t&&0<t.length)for(let e=t.length-1;0<=e;e--)!0===t[e][2]&&t.splice(e,1)}}dispatchEvent(t,i){if(!this._isRemoved&&null!=this._listeners[t]&&0<this._listeners[t].length)for(let e=0;e<this._listeners[t].length;e++)this._listeners[t][e][1].call(this,i)}}{constructor(e,t=!1){super(),this.DEV_MODE=!0,this.STREAMER_VERSION="0.9.0-beta.3",this.COMPILE_DATE="12/5/2024, 2:36:49 PM",this.STREAMER_BRANCH="Experimental",this.STREAMER_PROTOCOL_VERSION=1,this._initialized=!1,"undefined"!=typeof window&&window.document&&window.document.createElement?(!this.DEV_MODE||"StormStreamerArray"in window||(window.StormStreamerArray=[]),window.StormStreamerArray.push(this),this._streamerID=P.NEXT_STREAMER_ID++,null!=e&&(this.setStreamConfig(e),t)&&this.initialize()):console.error('StormLibrary Creation Error - No "window" element in the provided context!')}initialize(){if(!this._isRemoved){if(null==this._configManager)throw Error("Stream Config was not provided for this library! A properly configured object must be provided through the constructor or via the setConfig method before using the initialize() method.");this._storageManager=new p(this),this._stageController=new y(this),this._networkController=new j(this),this._playbackController=new K(this),this._clientUser=new e,this._initialized=!0,this.dispatchEvent("streamerReady",{ref:this})}}setStreamConfig(e){this._isRemoved||(e=JSON.parse(JSON.stringify(e)),null==this._configManager?(this._configManager=new g(e),this._logger=new _(this._configManager.getSettingsData().getDebugData(),this),this._logger.info(this,"StreamerID: "+this._streamerID),this._logger.info(this,"Version: "+this.STREAMER_VERSION+" | Compile Date: "+this.COMPILE_DATE+" | Branch: "+this.STREAMER_BRANCH),this._logger.info(this,"UserCapabilities :: Browser: "+m.getBrowserName()+" "+m.getBrowserVersion()),this._logger.info(this,"UserCapabilities :: Operating System: "+m.getOS()+" "+m.getOSVersion()),this._logger.info(this,"UserCapabilities :: isMobile: "+m.isMobile()),this._logger.info(this,"UserCapabilities :: hasMSESupport: "+m.hasMSESupport()),this._logger.info(this,"UserCapabilities :: hasWebSocketSupport: "+m.hasWebSocketsSupport()),this._logger.info(this,"UserCapabilities :: hasWebRTCSupport: "+m.hasWebRTCSupport()),this._configManager.print(this._logger)):(this._logger.info(this,"StreamConfig has been overwritten, dispatching streamConfigChanged!"),this._configManager=new g(e),this._configManager.print(this._logger),this.dispatchEvent("streamConfigChange",{ref:this,newConfig:this._configManager})))}stop(){}isConnected(){var e;return null!=(e=null==(e=this._networkController)?void 0:e.getConnection().isConnectionActive())&&e}attachToContainer(e){var t;return!!this._initialized&&null!=(t=null==(t=this._stageController)?void 0:t.attachToParent(e))&&t}detachFromContainer(){var e;return!!this._initialized&&null!=(e=null==(e=this._stageController)?void 0:e.detachFromParent())&&e}getContainer(){var e;return null!=(e=null==(e=this._stageController)?void 0:e.getParentElement())?e:null}mute(){null!=this._stageController&&null!=this._stageController.getScreenElement()?this._stageController.getScreenElement().setMuted(!0):this._configManager.getSettingsData().getAudioData().muted=!0}unmute(){null!=this._stageController&&null!=this._stageController.getScreenElement()?this._stageController.getScreenElement().setMuted(!1):this._configManager.getSettingsData().getAudioData().muted=!1}isMute(){var e;return null!=(e=null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getIfMuted())?e:this._configManager.getSettingsData().getAudioData().muted)&&e}toggleMute(){var e=this.isMute();return e?this.unmute():this.mute(),!e}setVolume(e){var t;void 0===(null==(t=null==(t=this._stageController)?void 0:t.getScreenElement())?void 0:t.setVolume(e))&&(this._configManager.getSettingsData().getAudioData().startVolume=e)}getVolume(){var e;return null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getVolume())?e:this._configManager.getSettingsData().getAudioData().startVolume}getCameraList(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getCameraList())?e:[]}getMicrophoneList(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getMicrophoneList())?e:[]}setCamera(e){var t;null!=(t=this._playbackController)&&t.selectCamera(e)}setMicrophone(e){var t;null!=(t=this._playbackController)&&t.selectMicrophone(e)}getCurrentCamera(){return this._playbackController.getCurrentCamera()}getCurrentMicrophone(){return this._playbackController.getCurrentMicrophone()}muteMicrophone(e){var t;null!=(t=this._playbackController)&&t.muteMicrophone(e)}isMicrophoneMuted(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.isMicrophoneMuted())&&e}getPublishState(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.getPublishState())?e:o.PublishState.NOT_INITIALIZED}publish(e){var t;return null!=(t=null==(t=this._playbackController)?void 0:t.publish(e))&&t}isStreamReady(){var e;return null!=(e=null==(e=this._playbackController)?void 0:e.isStreamReady())&&e}unpublish(){var e;null!=(e=this._playbackController)&&e.unpublish()}setSize(e,t){this._initialized?this._stageController.setSize(e,t):(e=u.parseValue(e),t=u.parseValue(t),this._configManager.getSettingsData().getVideoData().videoWidthValue=e.value,this._configManager.getSettingsData().getVideoData().videoWidthInPixels=e.isPixels,this._configManager.getSettingsData().getVideoData().videoHeightValue=t.value,this._configManager.getSettingsData().getVideoData().videoHeightInPixels=t.isPixels)}setWidth(e){this._initialized?this._stageController.setWidth(e):(e=u.parseValue(e),this._configManager.getSettingsData().getVideoData().videoWidthValue=e.value,this._configManager.getSettingsData().getVideoData().videoWidthInPixels=e.isPixels)}setHeight(e){this._initialized?this._stageController.setHeight(e):(e=u.parseValue(e),this._configManager.getSettingsData().getVideoData().videoHeightValue=e.value,this._configManager.getSettingsData().getVideoData().videoHeightInPixels=e.isPixels)}getWidth(){return this._initialized?this._stageController.getContainerWidth():this._configManager.getSettingsData().getVideoData().videoWidthInPixels?this._configManager.getSettingsData().getVideoData().videoWidthValue:0}getHeight(){return this._initialized?this._stageController.getContainerHeight():this._configManager.getSettingsData().getVideoData().videoHeightInPixels?this._configManager.getSettingsData().getVideoData().videoHeightValue:0}setScalingMode(e){this._stageController?this._stageController.setScalingMode(e):this._configManager.getSettingsData().getVideoData().scalingMode=e}getScalingMode(){return this._stageController?this._stageController.getScalingMode():this._configManager.getSettingsData().getVideoData().scalingMode}updateToSize(){this._initialized&&this._stageController.handleResize()}makeScreenshot(){let i=document.createElement("canvas"),n=i.getContext("2d");return new Promise(t=>{var e;null!=this._stageController&&(i.width=this._stageController.getScreenElement().getVideoElement().videoWidth,i.height=this._stageController.getScreenElement().getVideoElement().videoHeight,e=this._stageController.getScreenElement().getVideoElement(),n)?(n.drawImage(e,0,0,i.width,i.height),i.toBlob(e=>{t(e)},"image/png")):t(null)})}enterFullScreen(){this._initialized&&this._stageController&&this._stageController.enterFullScreen()}exitFullScreen(){this._initialized&&this._stageController&&this._stageController.exitFullScreen()}isFullScreenMode(){return!(!this._initialized||!this._stageController)&&this._stageController.isFullScreenMode()}getStreamerID(){return this._streamerID}getLogger(){return this._logger}getConfigManager(){return this._configManager}getNetworkController(){return this._networkController}getPlaybackController(){return this._playbackController}getStageController(){return this._stageController}getVideoElement(){var e;return null!=(e=null==(e=null==(e=this._stageController)?void 0:e.getScreenElement())?void 0:e.getVideoElement())?e:null}isInitialized(){return this._initialized}getVersion(){return this.STREAMER_VERSION}getBranch(){return this.STREAMER_BRANCH}getStorageManager(){return this._storageManager}dispatchEvent(e,t){super.dispatchEvent(e,t)}destroy(){var e;this._logger.warning(this,"Destroying library instance, bye, bye!"),this.DEV_MODE&&"StormStreamerArray"in window&&(window.StormStreamerArray[this._streamerID]=null),this._initialized=!1,this._isRemoved=!0,null!=(e=null==(e=this._networkController)?void 0:e.getConnection())&&e.destroy(),null!=(e=this._stageController)&&e.destroy(),null!=(e=this._playbackController)&&e.destroy(),this.removeAllEventListeners()}}P.NEXT_STREAMER_ID=0,o.StormStreamer=P,o.create=function(e){return new P(e)}});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stormstreaming/stormstreamer",
|
|
3
|
-
"version": "0.9.0-beta.
|
|
3
|
+
"version": "0.9.0-beta.3",
|
|
4
4
|
"description": "A JavaScript library containing core web video streamer functionality for embedding live-video streams on a website. Part of StormStreaming Suite.",
|
|
5
5
|
"author": "Web-Anatomy s.c. <contact@web-anatomy.com>",
|
|
6
6
|
"main": "dist/iife/index.js",
|