EVOLUTION-MANAGER
Edit File: room.min.js
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,g,z){a!=Array.prototype&&a!=Object.prototype&&(a[g]=z.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; $jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++}; $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var g=0;return $jscomp.iteratorPrototype(function(){return g<a.length?{done:!1,value:a[g++]}:{done:!0}})}; $jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.makeIterator=function(a){$jscomp.initSymbolIterator();var g=a[Symbol.iterator];return g?g.call(a):$jscomp.arrayIterator(a)};$jscomp.arrayFromIterator=function(a){for(var g,z=[];!(g=a.next()).done;)z.push(g.value);return z};$jscomp.arrayFromIterable=function(a){return a instanceof Array?a:$jscomp.arrayFromIterator($jscomp.makeIterator(a))}; var Video=function(){function a(b){b!==n&&(n=b,OmUtil.sendMessage({type:"mic",id:"activity",active:b}))}function g(b,d){var e=kurentoUtils.WebRtcPeer.browser;if(VideoUtil.isEdge(e)&&16<e.major){var r={video:!0};var f=navigator.getDisplayMedia(r)}else"Firefox"===e.name?(r=Sharer.baseConstraints(c),r.video.mediaSource=c.shareType,f=navigator.mediaDevices.getUserMedia(r)):VideoUtil.isChrome(e)?(r={video:!0},f=navigator.mediaDevices.getDisplayMedia(r)):f=new Promise(function(){Sharer.close();throw"Screen-sharing is not supported in "+ e.name+"["+e.major+"]";});f.then(function(c){q();d(b,r,c)}).catch(function(b){VideoManager.sendMessage({id:"errorSharing"});Sharer.setShareState(SHARE_STOPED);Sharer.setRecState(SHARE_STOPED);OmUtil.error(b)})}function z(b,d){VideoSettings.constraints(c,function(e){(VideoUtil.hasCam(c)&&!e.video||VideoUtil.hasMic(c)&&!e.audio)&&VideoManager.sendMessage({id:"devicesAltered",uid:c.uid,audio:!!e.audio,video:!!e.video});e.audio||e.video?navigator.mediaDevices.getUserMedia(e).then(function(c){var r=c, a={};0!==c.getAudioTracks().length&&(l=x.find(".level-meter"),l.show(),a.aCtx=new f,a.gainNode=a.aCtx.createGain(),a.analyser=a.aCtx.createAnalyser(),a.aSrc=a.aCtx.createMediaStreamSource(c),a.aSrc.connect(a.gainNode),a.gainNode.connect(a.analyser),VideoUtil.isEdge()?a.analyser.connect(a.aCtx.destination):(a.aDest=a.aCtx.createMediaStreamDestination(),a.analyser.connect(a.aDest),a.aSrc.origStream=c,r=a.aDest.stream,c.getVideoTracks().forEach(function(b){r.addTrack(b)})));q(a);d(b,e,r)}).catch(function(b){VideoManager.sendMessage({id:"devicesAltered", uid:c.uid,audio:!1,video:!1});VideoManager.close(c.uid);"NotReadableError"===b.name?OmUtil.error("Camera/Microphone is busy and can't be used"):OmUtil.error(b)}):(OmUtil.error("Requested devices are not available"),VideoManager.close(c.uid))})}function A(b){if(b){var d=b.peerConnection;d.onconnectionstatechange=function(b){console.warn("!!RTCPeerConnection state changed: "+d.connectionState+", user: "+c.user.displayName+", uid: "+c.uid);switch(d.connectionState){case "connected":c.self&&OmUtil.alert("info", "Connection to Media server has been established",3E3);break;case "disconnected":case "failed":OmUtil.alert("warning","Media server connection for user "+c.user.displayName+" is "+d.connectionState+", will try to re-connect",3E3),k()}}}}function F(b,d,f){d={videoStream:f,mediaConstraints:d,onicecandidate:e.onIceCandidate};VideoUtil.isSharing(c)||(d.localVideo=h[0]);var r=h.data();r.rtcPeer=new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(VideoUtil.addIceServers(d,b),function(b){if(b)return!0===this.cleaned? void 0:OmUtil.error(b);r.analyser&&(G=MicLevel(),G.meter(r.analyser,l,a,OmUtil.error));this.generateOffer(function(b,d){if(b)return!0===this.cleaned?void 0:OmUtil.error("Sender sdp offer error "+b);OmUtil.log("Invoking Sender SDP offer callback function");VideoManager.sendMessage({id:"broadcastStarted",uid:c.uid,sdpOffer:d});VideoUtil.isSharing(c)&&Sharer.setShareState(SHARE_STARTED);VideoUtil.isRecording(c)&&Sharer.setRecState(SHARE_STARTED)})});A(r.rtcPeer)}function v(b){q();b=VideoUtil.addIceServers({remoteVideo:h[0], onicecandidate:e.onIceCandidate},b);var d=h.data();d.rtcPeer=new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(b,function(b){if(b)return!0===this.cleaned?void 0:OmUtil.error(b);this.generateOffer(function(b,d){if(b)return!0===this.cleaned?void 0:OmUtil.error("Receiver sdp offer error "+b);OmUtil.log("Invoking Receiver SDP offer callback function");VideoManager.sendMessage({id:"addListener",sender:c.uid,sdpOffer:d})})});A(d.rtcPeer)}function m(b){y&&y.is(":visible")&&(b?(y.text(y.data("on")),y.addClass("mic-on"), J.addClass("mic-on")):(y.text(y.data("off")),y.removeClass("mic-on"),J.removeClass("mic-on")))}function C(b,d){if(d.interview)b.dialog("option","draggable",!1),b.dialog("option","resizable",!1),$(".pod-area").sortable("refresh");else if(b.dialog("option","draggable",!0),b.dialog("option","resizable",!0),VideoUtil.isSharing(c))b.on("dialogclose",function(){VideoManager.close(c.uid,!0)});u(d)}function u(b){function d(b){b.dblclick(function(b){b.stopImmediatePropagation();return!1})}p.parent().find(".ui-dialog-titlebar-close").remove(); p.parent().find(".ui-dialog-titlebar").append(OmUtil.tmpl("#video-button-bar"));var e=p.parent().find(".btn-refresh"),a=p.parent().find(".btn-toggle"),f=p.parent().find(".btn-wclose");VideoUtil.isSharing(c)?(f.click(function(b){p.dialog("close");return!1}),d(f),e.remove()):(f.remove(),e.click(function(b){b.stopImmediatePropagation();k();return!1}));b.interview?a.remove():(a.click(function(b){b.stopImmediatePropagation();$(this).toggleClass("minimized");p.toggle();return!1}),d(a))}function D(b){c= b.stream;E||(E=Volume());I=b.iceServers;c.activities=c.activities.sort();H={width:c.width,height:c.height};var a=VideoUtil.getVid(c.uid),f=c.user.displayName,h=c.width,l=c.height,g=VideoUtil.isSharing(c),m=VideoUtil.isRecording(c),n=Room.getOptions();c.self=c.cuid===n.uid;var q="#user"+c.cuid;if(d=VideoUtil.hasVideo(c)||1>$(q).length)if(n.interview){var v=$(".pod-area"),u=uuidv4(),q="#"+u;v.append($('\x3cdiv class\x3d"pod"\x3e\x3c/div\x3e').attr("id",u));WbArea.updateAreaClass()}else q=".room-block .room-container"; $(q).append(OmUtil.tmpl("#user-video",a).attr("title",f).attr("data-client-uid",c.cuid).attr("data-client-type",c.type).data(e));p=$("#"+a);x=p.find(".video");w=x.find(".mute-others");t();a=q;y=p.find(".footer");n.showMicStatus||y.hide();!c.self&&g&&Sharer.close();c.self&&(g||m)?p.hide():d&&(p.dialog({classes:{"ui-dialog":"video user-video"+(n.showMicStatus?" mic-status":""),"ui-dialog-titlebar":""+(n.showMicStatus?" ui-state-highlight":"")},width:h,minWidth:40,minHeight:50,autoOpen:!0,modal:!1,appendTo:a}), C(p,n));J=p.parent().find(".ui-dialog-titlebar").attr("title",f);p.on("remove",B);d&&x.width(h).height(l);k(b);g||m||VideoUtil.setPos(p,VideoUtil.getPos(VideoUtil.getRects(VIDWIN_SEL),c.width,c.height+25));return p}function q(b){var a=VideoUtil.getVid(c.uid),f=d?H.width:120,g=d?H.height:90;Room.getOptions().interview?VideoUtil.setPos(p,VideoUtil.getPos()):p.dialog("instance")&&p.dialog("option","width",f).dialog("option","height",g);h=$(d?"\x3cvideo\x3e":"\x3caudio\x3e").attr("id","vid"+a).width(x.width()).height(x.height()).prop("autoplay", !0).prop("controls",!1);b&&h.data(b);d?(x.removeClass("audio-only").css("background-image",""),x.parents(".ui-dialog").removeClass("audio-only"),h.attr("poster",c.user.pictureUri)):x.addClass("audio-only");x.append(h);VideoUtil.hasMic(c)?(b=E.create(e),d?p.parent().find(".buttonpane").append(b):(b.addClass("ulist-small"),b.insertAfter("#user"+c.cuid+" .typing-activity"))):E.destroy()}function k(b){b=b||{iceServers:I};B();var d=VideoUtil.hasMic(c);c.self?(VideoUtil.isSharing(c)||VideoUtil.isRecording(c)? g(b,F):z(b,F),m(d)):v(b)}function t(){Room.hasRight(["MUTE_OTHERS"])&&VideoUtil.hasMic(c)?w.addClass("enabled").click(function(){VideoManager.clickMuteOthers(c.uid)}):w.removeClass("enabled").off()}function B(){OmUtil.log("Disposing participant "+c.uid);if(h&&0<h.length){var b=h.data();b.analyser&&(VideoUtil.disconnect(b.analyser),b.analyser=null);b.gainNode&&(VideoUtil.disconnect(b.gainNode),b.gainNode=null);b.aSrc&&(VideoUtil.cleanStream(b.aSrc.mediaStream),VideoUtil.cleanStream(b.aSrc.origStream), VideoUtil.disconnect(b.aSrc),b.aSrc=null);b.aDest&&(VideoUtil.disconnect(b.aDest),b.aDest=null);b.aCtx&&(b.aCtx.destination&&VideoUtil.disconnect(b.aCtx.destination),b.aCtx.close(),b.aCtx=null);h.attr("id","dummy");var d=h[0];VideoUtil.cleanStream(d.srcObject);d.srcObject=null;d.parentNode.removeChild(d);VideoUtil.cleanPeer(b.rtcPeer);h=null}l&&0<l.length&&(a(!1),l.hide(),w.removeClass("enabled").off());G&&(G.dispose(),G=null);x.find("audio,video").remove();E.destroy()}var e={},f=window.AudioContext|| window.webkitAudioContext,c,p,x,J,y,H,E,h,I,l,G,n=!1,w,d;e.update=function(b){var e=c.activities;c.activities=b.activities.sort();c.level=b.level;c.user.firstName=b.user.firstName;c.user.lastName=b.user.lastName;c.user.displayName=b.user.displayName;b=c.user.displayName;d&&p.dialog("option","title",b).parent().find(".ui-dialog-titlebar").attr("title",b);e=e.length===c.activities.length&&e.every(function(b,d){return b===c.activities[d]});c.self&&!e&&(B(),p.remove(),D({stream:c,iceServers:I}))};e.refresh= k;e.mute=function(b){E.mute(b)};e.isMuted=function(){return E.muted()};e.init=D;e.stream=function(){return c};e.setRights=t;e.getPeer=function(){return h?h.data().rtcPeer:null};e.onIceCandidate=function(b){var d=Room.getOptions();OmUtil.log("Local candidate "+JSON.stringify(b));VideoManager.sendMessage({id:"onIceCandidate",candidate:b,uid:c.uid,luid:c.self?c.uid:d.uid})};e.reattachStream=function(){if(h&&0<h.length){var b=h.data();b.rtcPeer&&(h[0].srcObject=c.self?b.rtcPeer.getLocalStream():b.rtcPeer.getRemoteStream())}}; e.video=function(){return h};e.handleMicStatus=m;return e},VideoManager=function(){function a(e){var a=$("#"+VideoUtil.getVid(e.uid)),c=a.data().getPeer();c&&c.processAnswer(e.sdpAnswer,function(c){if(c)return!0===this.cleaned?void 0:OmUtil.error(c);c=a.find("audio, video");var e=1===c.length?c[0]:null;e&&e.paused&&e.play().catch(function(c){"NotAllowedError"===c.name&&VideoUtil.askPermission(function(){e.play()})})})}function g(e){var a=e.stream.uid;Array.isArray(e.cleanup)&&e.cleanup.forEach(function(c){D(c)}); $("#"+VideoUtil.getVid(a)).remove();Video().init(e);OmUtil.log(a+" registered in room")}function z(e){e=e.stream;var a=e.uid,c=$("#"+VideoUtil.getVid(a)).data();VideoUtil.isSharing(e)||VideoUtil.isRecording(e)?c.stream().activities=e.activities:VideoManager.close(a,!1);Sharer.setShareState(VideoUtil.isSharing(e)?SHARE_STARTED:SHARE_STOPED);Sharer.setRecState(VideoUtil.isRecording(e)?SHARE_STARTED:SHARE_STOPED)}function A(e){var a=e.stream.uid;$("#"+VideoUtil.getVid(a)).remove();Video().init(e);OmUtil.log(a+ " receiving video")}function F(e){switch(e.id){case "clientLeave":$(VID_SEL+'[data-client-uid\x3d"'+e.uid+'"]').each(function(){m($(this))});t.data("cuid")===e.uid&&t.off().hide();break;case "broadcastStopped":D(e.uid,!1);break;case "broadcast":g(e);break;case "videoResponse":a(e);break;case "iceCandidate":var f=$("#"+VideoUtil.getVid(e.uid)).data().getPeer();f&&f.addIceCandidate(e.candidate,function(c){c&&!0!==this.cleaned&&OmUtil.error("Error adding candidate: "+c)});break;case "newStream":u([e.stream], e.iceServers);break;case "shareUpdated":z(e);break;case "error":OmUtil.error(e.message)}}function v(e,a){try{if(!(a instanceof Blob)){var c=JSON.parse(a);if(c)if("kurento"===c.type&&"test"!==c.mode)OmUtil.info("Received message: "+a),F(c);else if("mic"===c.type)switch(c.id){case "activity":var f=c.uid,g=c.active,k=$("#user"+f+" .audio-activity"),m=q(f).parent();g?(k.addClass("speaking"),m.addClass("user-speaks")):(k.removeClass("speaking"),m.removeClass("user-speaks"))}}}catch(H){OmUtil.error(H)}} function m(e){void 0!==e.dialog("instance")&&e.dialog("destroy");e.parents(".pod").remove();e.remove();WbArea.updateAreaClass()}function C(e,a){a={stream:e,iceServers:a};e=$("#"+VideoUtil.getVid(e.uid));1===e.length&&e.remove();e=Video().init(a);VideoUtil.setPos(e,{left:0,top:35})}function u(e,a){B&&e.forEach(function(c){var e={stream:c,iceServers:a};VideoUtil.isSharing(c)?(VideoUtil.highlight(t.attr("title",t.data("user")+" "+c.user.firstName+" "+c.user.lastName+" "+t.data("text")).data("uid",c.uid).data("cuid", c.cuid).show(),"btn-outline-warning",10),t.tooltip().off().click(function(){C(c,a)}),!0===Room.getOptions().autoOpenSharing&&C(c,a)):VideoUtil.isRecording(c)||A(e)})}function D(a,f){var c=$("#"+VideoUtil.getVid(a));1===c.length&&m(c);f||a!==t.data("uid")||t.off().hide()}function q(a){return $(VID_SEL+'[data-client-uid\x3d"'+a+'"][data-client-type\x3d"WEBCAM"]')}var k={},t,B=!1;k.init=function(){Wicket.Event.subscribe("/websocket/message",v);VideoSettings.init(Room.getOptions());t=$(".room-block .room-container").find(".btn.shared"); B=!0};k.update=function(a){if(B){var e={};a.streams.forEach(function(c){e[c.uid]=c.uid;c.self=a.self;if(!VideoUtil.isSharing(c)&&!VideoUtil.isRecording(c)){var f=VideoUtil.getVid(c.uid),g=VideoUtil.hasMic(c)||VideoUtil.hasCam(c),f=$("#"+f);g&&1===f.length?f.data().update(c):g||1!==f.length||m(f)}});a.uid===Room.getOptions().uid&&$(VID_SEL).each(function(){$(this).data().setRights(a.rights)});$('[data-client-uid\x3d"'+a.cuid+'"]').each(function(){var a=$(this).data().stream();e[a.uid]||m($(this))})}}; k.play=u;k.close=D;k.refresh=function(a,f){a=q(a);0<a.length&&a.data().refresh(f)};k.mute=function(a,f){a=q(a);0<a.length&&a.data().mute(f)};k.clickMuteOthers=function(a){var e=VideoSettings.load();if(!1!==e.video.confirmMuteOthers){var c=$("#muteothers-confirm");c.dialog({buttons:[{text:c.data("btn-ok"),click:function(){e.video.confirmMuteOthers=!$("#muteothers-confirm-dont-show").prop("checked");VideoSettings.save();OmUtil.roomAction({action:"muteOthers",uid:a});$(this).dialog("close")}},{text:c.data("btn-cancel"), click:function(){$(this).dialog("close")}}]})}};k.muteOthers=function(a){$(VID_SEL).each(function(){var e=$(this);e.data().mute("room"+a!==e.data("client-uid"))})};k.toggleActivity=function(a){k.sendMessage({id:"toggleActivity",activity:a})};k.sendMessage=function(a){OmUtil.sendMessage(a,{type:"kurento"})};k.destroy=function(){Wicket.Event.unsubscribe("/websocket/message",v)};return k}(),SHARE_STARTING="starting",SHARE_STARTED="started",SHARE_STOPED="stoped",Sharer=function(){function a(a,c){a.prop("disabled", c);c?a.addClass("disabled"):a.removeClass("disabled")}function g(e,c){var f=SHARE_STOPED!==c,g=kurentoUtils.WebRtcPeer.browser,g=VideoUtil.isEdge(g)||VideoUtil.isChrome(g);a(C,f);a(u,f||g);a(k,f);a(t,f);e.find("span").text(e.data(f?"stop":"start"));f?e.addClass("stop"):e.removeClass("stop");a(e,c===SHARE_STARTING);a(e,c===SHARE_STARTING)}function z(a){B=a;g(D,a)}function A(a){e=a;g(q,a)}function F(){var a=$('div[data-client-uid\x3d"'+Room.getOptions().uid+'"][data-client-type\x3d"SCREEN"]');return a&& a.data()&&a.data().stream()?a.data().stream().uid:""}var v={},m,C,u,D,q,k,t,B=SHARE_STOPED,e=SHARE_STOPED;v.init=function(){m=$("#sharer").dialog({classes:{"ui-dialog":"sharer","ui-dialog-titlebar":""},width:450,autoOpen:!1,resizable:!1});if(VideoUtil.sharingSupported()){C=m.find("select.type");var f=kurentoUtils.WebRtcPeer.browser;u=m.find("select.fps");a(u,VideoUtil.isEdge(f));D=m.find(".share-start-stop").off().click(function(){B===SHARE_STOPED?(z(SHARE_STARTING),VideoManager.sendMessage({id:"wannaShare", shareType:C.val(),fps:u.val(),width:k.val(),height:t.val()})):VideoManager.sendMessage({id:"pauseSharing",uid:F()})});k=m.find(".width");t=m.find(".height");q=m.find(".record-start-stop").off();Room.getOptions().allowRecording?q.show().click(function(){e===SHARE_STOPED?(A(SHARE_STARTING),VideoManager.sendMessage({id:"wannaRecord",shareType:C.val(),fps:u.val(),width:k.val(),height:t.val()})):VideoManager.sendMessage({id:"stopRecord",uid:F()})}):q.hide()}else m.find(".container").remove(),m.find(".alert").show()}; v.open=function(){m&&m.dialog("instance")&&m.dialog("open")};v.close=function(){m&&m.dialog("instance")&&m.dialog("close")};v.setShareState=z;v.setRecState=A;v.baseConstraints=function(a){return{video:{frameRate:{ideal:a.fps}},audio:!1}};return v}(),Room=function(){function a(d){var b=w.find("i").removeClass("icon-dock icon-undock");d?(b.addClass("icon-undock"),w.attr("title",w.data("ttl-undock")).find(".sr-only").text(w.data("ttl-undock")),D()):(b.addClass("icon-dock"),w.attr("title",w.data("ttl-dock")).find(".sr-only").text(w.data("ttl-dock")), n.addClass("closed").resizable("destroy"))}function g(){var d=$(".video-container[data-client-type\x3dWEBCAM][data-client-uid\x3d"+Room.getOptions().uid+"]");return 0<d.length&&(d=d.first().data(),VideoUtil.hasMic(d.stream()))?d:null}function z(d){var b=$(d.target);if(!0!==d.target.isContentEditable&&!b.is("textarea, input:not([readonly]):not([type\x3dradio]):not([type\x3dcheckbox])")&&8===d.which)return d.preventDefault(),d.stopImmediatePropagation(),!1}function A(d,b){var a=OmUtil.getKeyCode(b); return d.alt===b.altKey&&d.ctrl===b.ctrlKey&&d.shift===b.shiftKey&&d.code.toUpperCase()===(a?a.toUpperCase():"")}function F(d){if(A(l.keycode.arrange,d))VideoUtil.arrange();else if(A(l.keycode.arrangeresize,d))VideoUtil.arrangeResize();else if(A(l.keycode.muteothers,d))null!==g()&&VideoManager.clickMuteOthers(Room.getOptions().uid);else if(A(l.keycode.mute,d)){var b=g();null!==b&&b.mute(!b.isMuted())}else A(l.keycode.quickpoll,d)&&quickPollAction("open");27===d.which&&$("#wb-rename-menu").hide()} function v(d){1===d.which&&$("#wb-rename-menu").hide()}function m(){void 0===n&&(n=$(".room-block .sidebar"));var d=void 0===n?0:n.width()+parseInt(n.css(I)),b=$(".room-block");$(".main.room")[0].style.setProperty("--room-sidebar-width",d+"px");285<d?b.addClass("big").removeClass("narrow"):b.removeClass("big").addClass("narrow")}function C(){l&&l.reloadUrl?window.location.href=l.reloadUrl:window.location.reload()}function u(){q();$(".room-block").remove();$("#chatPanel").remove();$("#disconnected-dlg").modal("show").off("hide.bs.modal").on("hide.bs.modal", C)}function D(){n.resizable({handles:Settings.isRtl?"w":"e",stop:function(){m()}})}function q(){$("body").removeClass("no-header");Wicket.Event.unsubscribe("/websocket/closed",u);Wicket.Event.unsubscribe("/websocket/error",u);"object"===typeof WbArea&&(WbArea.destroy(),window.WbArea=void 0);"object"===typeof VideoSettings&&VideoSettings.close();"object"===typeof VideoManager&&VideoManager.destroy();$(".ui-dialog.user-video").remove();$(window).off("keyup.openmeetings");$(window).off("keydown.openmeetings"); $(document).off("click",v);n=void 0;Sharer.close()}function k(d,b){b=b||l.rights;if(!Array.isArray(d)){if("SUPER_MODERATOR"===d)return b.includes(d);d=[d]}d=[].concat(["SUPER_MODERATOR","MODERATOR"],$jscomp.arrayFromIterable(d));for(var a=0;a<d.length;++a)if(b.includes(d[a]))return!0;return!1}function t(){var a=$("#quick-vote .close-btn");1===a.length&&(k(["PRESENTER"])?(a.show(),"object"!==typeof a.data("bs.confirmation")&&a.confirmation({confirmationEvent:"bla",onConfirm:function(){quickPollAction("close")}})): a.hide())}function B(a,b,c,e,f){a=a.find(b);c()?(a.show(),c=e(),f()?a.addClass("disabled"):(a.removeClass("disabled"),c?a.addClass("enabled"):a.removeClass("enabled")),a.attr("title",a.data(c?"on":"off"))):a.hide()}function e(a,b,c,e){var d=a.find(b);c()?(0===d.length&&(d=OmUtil.tmpl("#user-actions-stub "+b),a.append(d)),d.off().click(e)):d.hide()}function f(a,b,c,e,f){var d=a.uid===l.uid,r=k(c,a.rights),g=b.find(e);f()&&!k("SUPER_MODERATOR",a.rights)&&(d&&l.questions&&!r||!d&&k("MODERATOR"))?(0=== g.length&&(g=OmUtil.tmpl("#user-actions-stub "+e),b.append(g)),r?g.addClass("granted"):g.removeClass("granted"),g.attr("title",g.data(d?"request":r?"revoke":"grant")),g.off().click(function(){OmUtil.roomAction({action:"toggleRight",right:c[0],uid:a.uid})})):g.remove()}function c(a,b){f(a,b,["AUDIO"],".right.audio",function(){return!0})}function p(a,b){f(a,b,["VIDEO"],".right.camera",function(){return!l.audioOnly})}function x(a,b){f(a,b,["PRESENTER"],".right.presenter",function(){return!l.interview&& $(".wb-area").is(":visible")});f(a,b,["WHITEBOARD","PRESENTER"],".right.wb",function(){return!l.interview&&$(".wb-area").is(":visible")});f(a,b,["SHARE"],".right.screen-share",function(){return!0});f(a,b,["REMOTE_CONTROL"],".right.remote-control",function(){return!0});f(a,b,["MODERATOR"],".right.moderator",function(){return!0})}function J(a,b){var d=b.find(".user-status"),c=5==a.level?"mod":3==a.level?"wb":"user";d.removeClass("mod wb user");d.attr("title",d.data(c)).addClass(c);b.data("level",a.level)} function y(){$("#room-sidebar-users-tab .user-count").text($("#room-sidebar-tab-users .user-list .users .user.entry").length)}function H(){var a=$("#room-sidebar-tab-users .user-list .users");a.find(".user.entry").sort(function(a,d){a=$(a);d=$(d);return d.data("level")-a.data("level")||a.attr("title").localeCompare(d.attr("title"))}).appendTo(a)}function E(a){var b=a.uid===l.uid,d=Room.getClient(a.uid),f=VideoUtil.hasMic(a),g=VideoUtil.hasCam(a),h=d.find(".audio-activity");0!==d.length&&(J(a,d),g|| f?0===d.find(".restart").length&&d.prepend(OmUtil.tmpl("#user-av-restart").click(function(){VideoManager.refresh(a.uid)})):d.find(".restart").remove(),h.hide().removeClass("clickable").attr("title",h.data("speaks")).off(),f&&(h.show(),k("MUTE_OTHERS")&&h.addClass("clickable").click(function(){VideoManager.clickMuteOthers(a.uid)}).attr("title",h.attr("title")+h.data("mute"))),d.attr("title",a.user.displayName).css("background-image","url("+a.user.pictureUri+")").find(".user.name").text(a.user.displayName), d=d.find(".user.actions"),p(a,d),c(a,d),x(a,d),e(d,".kick",function(){return!b&&k("MODERATOR")&&!k("SUPER_MODERATOR",a.rights)},function(){OmUtil.roomAction({action:"kick",uid:a.uid})}),e(d,".private-chat",function(){return l.userId!==a.user.id&&$("#chatPanel").is(":visible")},function(){Chat.addTab("chatTab-u"+a.user.id,a.user.displayName);Chat.open();$("#chatMessage .wysiwyg-editor").click()}),b&&(l.rights=a.rights,t(),l.activities=a.activities,d=$("#room-sidebar-tab-users .header"),p(a,d),B(d, ".activity.cam",function(){return!l.audioOnly&&k("VIDEO")},function(){return g},function(){return 0>Settings.load().video.cam}),c(a,d),B(d,".activity.mic",function(){return k("AUDIO")},function(){return f},function(){return 0>Settings.load().video.mic}),x(a,d)),VideoManager.update(a))}var h={},I=Settings.isRtl?"right":"left",l,G,n,w;h.init=function(d){l=d;window.WbArea=l.interview?InterviewWbArea():DrawWbArea();d=$(".room-block .room-container .menu");$("#activities");n=$(".room-block .sidebar"); n.width(n.width());w=n.find(".btn-dock").click(function(){var b=parseInt(n.css(I));0>b&&n.removeClass("closed");w.prop("disabled",!0);var d={};d[I]=0>b?"0px":-n.width()+45+"px";n.animate(d,1500,function(){w.prop("disabled",!1);a(0>b);m()})});a(!0);var b=$("#room-sidebar-tab-users .header");b.find(".om-icon.settings").off().click(VideoSettings.open);b.find(".om-icon.activity.cam").off().click(function(){VideoManager.toggleActivity("VIDEO")});b.find(".om-icon.activity.mic").off().click(function(){VideoManager.toggleActivity("AUDIO")}); G=0===d.length?0:d.height();VideoManager.init();"undefined"!==typeof Activities&&Activities.init();Sharer.init();m()};h.getMenuHeight=function(){return G};h.getOptions=function(){return"object"===typeof l?JSON.parse(JSON.stringify(l)):{}};h.load=function(){$("body").addClass("no-header");Wicket.Event.subscribe("/websocket/closed",u);Wicket.Event.subscribe("/websocket/error",u);$(window).on("keydown.openmeetings",z);$(window).on("keyup.openmeetings",F);$(document).click(v)};h.unload=q;h.showClipboard= function(a){var b=$("#clipboard-dialog");b.find("p .text").text(a);b.dialog({resizable:!1,height:"auto",width:400,modal:!0,buttons:[{text:b.data("btn-ok"),click:function(){$(this).dialog("close")}}]})};h.quickPoll=function(a){if(a.started){var b=$("#quick-vote");if(0===b.length){var c=$(".room-block .wb-block"),b=OmUtil.tmpl("#quick-vote-template","quick-vote");c.append(b)}c=b.find(".control.pro");b=b.find(".control.con");a.voted?(c.removeClass("clickable").off(),b.removeClass("clickable").off()): (c.addClass("clickable").off().click(function(){quickPollAction("vote",!0)}),b.addClass("clickable").off().click(function(){quickPollAction("vote",!1)}));c.find(".badge").text(a.pros);b.find(".badge").text(a.cons);t()}else a=$("#quick-vote"),1===a.length&&a.remove();OmUtil.tmpl("#quick-vote-template","quick-vote")};h.hasRight=k;h.setCssVar=function(a,b){$(".main.room")[0].style.setProperty(a,b)};h.addClient=function(a){(Array.isArray(a)?a:[a]).forEach(function(a){var b=a.uid===l.uid,c=Room.getClient(a.uid); 0===c.length&&(c=OmUtil.tmpl("#user-entry-stub","user"+a.uid),c.attr("id","user"+a.uid).attr("data-userid",a.user.id).attr("data-uid",a.uid),b&&c.addClass("current"),$("#room-sidebar-tab-users .user-list .users").append(c));E(a)});y();H()};h.updateClient=function(a){E(a);H()};h.removeClient=function(a){Room.getClient(a).remove();y()};h.removeOthers=function(){var a=Room.getOptions().uid;$(".user-list .user.entry").each(function(){var b=$(this);b.data("uid")!==a&&b.remove()});y()};h.getClient=function(a){return $("#user"+ a)};return h}();function sipBtnClick(){var a=$(".sip-number");a.val(a.val()+$(this).data("value"))}function sipBtnEraseClick(){var a=$(".sip-number"),g=a.val();g&&a.val(g.substring(0,g.length-1))}function sipGetKey(a){var g=-1;47<a.keyCode&&58>a.keyCode&&(g=a.keyCode-48);95<a.keyCode&&106>a.keyCode&&(g=a.keyCode-96);return g}function sipKeyDown(a){a=sipGetKey(a);0<a&&$("#sip-dialer-btn-"+a).addClass("ui-state-active")} function sipKeyUp(a){a=sipGetKey(a);0<a&&$("#sip-dialer-btn-"+a).removeClass("ui-state-active")}function typingActivity(a,g){a=Room.getClient(a).find(".typing-activity");g?a.addClass("typing"):a.removeClass("typing")}$(function(){$(".sip").on("keydown",sipKeyDown).on("keyup",sipKeyUp);$(".sip .button-row button").button().click(sipBtnClick);$("#sip-dialer-btn-erase").button().click(sipBtnEraseClick)});