diff --git a/examples/main.css b/examples/main.css index 025eefd..04019f9 100644 --- a/examples/main.css +++ b/examples/main.css @@ -1523,10 +1523,6 @@ iframe { .popup .menu { margin: 2px; } -.my-float { - margin-top: 7px; - opacity: 0.9; -} .toggleSize { font-size: 32px; color: white; diff --git a/index.html b/index.html index 870291b..c837f1c 100644 --- a/index.html +++ b/index.html @@ -137,85 +137,85 @@
- +
diff --git a/lib.js b/lib.js index 6565302..2100229 100644 --- a/lib.js +++ b/lib.js @@ -2168,112 +2168,149 @@ function makeMiniDraggableElement(elmnt) { elmnt.ontouchstart = dragMouseDown; } -function makeDraggableElement(elmnt, absolute=false) { +// function makeDraggableElement(elmnt, absolute=false) { - if (session.disableMouseEvents){return;} +// if (session.disableMouseEvents){return;} - try { - elmnt.dragElement = false; - elmnt.style.bottom = "auto"; - elmnt.style.cursor = "grab"; - elmnt.stashonmouseup = null; - elmnt.stashonmousemove = null; - } catch (e) { - errorlog(e); - return; - } - var pos1 = 0; - var pos2 = 0; - var pos3 = 0; - var pos4 = 0; - var timestamp = false; +// try { +// elmnt.dragElement = false; +// elmnt.style.bottom = "auto"; +// elmnt.style.cursor = "grab"; +// elmnt.stashonmouseup = null; +// elmnt.stashonmousemove = null; +// } catch (e) { +// errorlog(e); +// return; +// } +// var pos1 = 0; +// var pos2 = 0; +// var pos3 = 0; +// var pos4 = 0; +// var timestamp = false; - var enterEventCount = 0; - var leaveEventCount = 0; +// var enterEventCount = 0; +// var leaveEventCount = 0; - function dragMouseDown(e) { - timestamp = Date.now(); +// function dragMouseDown(e) { +// timestamp = Date.now(); - e = e || window.event; - e.preventDefault(); +// e = e || window.event; +// e.preventDefault(); - pos3 = e.clientX; - pos4 = e.clientY; - //elmnt.stashonmouseup = document.onmouseup; // I don't want to interfere with other drag events. - //elmnt.stashonmousemove = document.onmousemove; - //elmnt.stashonclick = document.onclick; +// pos3 = e.clientX; +// pos4 = e.clientY; +// //elmnt.stashonmouseup = document.onmouseup; // I don't want to interfere with other drag events. +// //elmnt.stashonmousemove = document.onmousemove; +// //elmnt.stashonclick = document.onclick; - document.onmouseup = function(event){closeDragElement(event, elmnt);}; +// document.onmouseup = function(event){closeDragElement(event, elmnt);}; - document.onmousemove = function(event){elementDrag(elmnt,event);}; +// document.onmousemove = function(event){elementDrag(elmnt,event);}; - if ("stopDragTimeout" in elmnt){clearTimeout(elmnt.stopDragTimeout);} +// if ("stopDragTimeout" in elmnt){clearTimeout(elmnt.stopDragTimeout);} - elmnt.onmouseleave = function(event){ - leaveEventCount+=1; - elmnt.stopDragTimeout = setTimeout(function(ele,evt1){ - closeDragElement(evt1, ele);} - ,100, elmnt, event); - }; - elmnt.onmouseenter = function(event){ - enterEventCount+=1; - if (enterEventCount>=leaveEventCount){ - if ("stopDragTimeout" in elmnt){clearTimeout(elmnt.stopDragTimeout);} - } else { - if (("stopDragTimeout" in elmnt) && (elmnt.stopDragTimeout)){ - clearTimeout(elmnt.stopDragTimeout); - elmnt.stopDragTimeout = setTimeout(function(ele,evt1){ +// elmnt.onmouseleave = function(event){ +// leaveEventCount+=1; +// elmnt.stopDragTimeout = setTimeout(function(ele,evt1){ +// closeDragElement(evt1, ele);} +// ,100, elmnt, event); +// }; +// elmnt.onmouseenter = function(event){ +// enterEventCount+=1; +// if (enterEventCount>=leaveEventCount){ +// if ("stopDragTimeout" in elmnt){clearTimeout(elmnt.stopDragTimeout);} +// } else { +// if (("stopDragTimeout" in elmnt) && (elmnt.stopDragTimeout)){ +// clearTimeout(elmnt.stopDragTimeout); +// elmnt.stopDragTimeout = setTimeout(function(ele,evt1){ - closeDragElement(evt1, ele);} - ,100, elmnt, event); - } - } - }; +// closeDragElement(evt1, ele);} +// ,100, elmnt, event); +// } +// } +// }; - } - function elementDrag(ele,e) { +// } +// function elementDrag(ele,e) { - e = e || window.event; - if (("buttons" in e) && (e.buttons!==1)){return;} +// e = e || window.event; +// if (("buttons" in e) && (e.buttons!==1)){return;} - e.preventDefault(); +// e.preventDefault(); - ele.dragElement = true; - pos1 = pos3 - e.clientX; - pos2 = pos4 - e.clientY; - pos3 = e.clientX; - pos4 = e.clientY; +// ele.dragElement = true; +// pos1 = pos3 - e.clientX; +// pos2 = pos4 - e.clientY; +// pos3 = e.clientX; +// pos4 = e.clientY; - var topDrag = (ele.offsetTop - pos2 ); - if (absolute){ - if (topDrag > (-3 + (window.innerHeight - ele.clientHeight))){ - topDrag = (-3 + (window.innerHeight - ele.clientHeight)); - } - } else { - if (topDrag > -3){ - topDrag = -3; - } - } - ele.style.top = topDrag + "px"; - ele.style.left = (ele.offsetLeft - pos1) + "px"; +// var topDrag = (ele.offsetTop - pos2 ); +// if (absolute){ +// if (topDrag > (-3 + (window.innerHeight - ele.clientHeight))){ +// topDrag = (-3 + (window.innerHeight - ele.clientHeight)); +// } +// } else { +// if (topDrag > -3){ +// topDrag = -3; +// } +// } +// ele.style.top = topDrag + "px"; +// ele.style.left = (ele.offsetLeft - pos1) + "px"; - } - function closeDragElement(event=false, ele=false) { - document.onmouseup = null; - document.onmousemove = null - ele.onmouseleave = null; - ele.onmouseenter = null; - enterEventCount = 0; - leaveEventCount = 0; - updateMixer(); - //document.onclick = elmnt.stashonclick; - } +// } +// function closeDragElement(event=false, ele=false) { +// document.onmouseup = null; +// document.onmousemove = null +// ele.onmouseleave = null; +// ele.onmouseenter = null; +// enterEventCount = 0; +// leaveEventCount = 0; +// updateMixer(); +// //document.onclick = elmnt.stashonclick; +// } - elmnt.onmousedown = dragMouseDown; +// elmnt.onmousedown = dragMouseDown; +// } + +let isDragging = false; +let draggable = document.querySelector('#subControlButtons'); +let initialX; +let currentX; +let xOffset = 0; +let initialY; +let currentY; +let yOffset = 0; + +draggable.addEventListener('mousedown', dragStart); +draggable.addEventListener('mouseup', dragEnd); + +function dragStart(e) { + initialX = e.clientX - xOffset; + initialY = e.clientY - yOffset; + isDragging = true; } +function dragEnd(e) { + initialX = currentX; + initialY = currentY; + isDragging = false; +} + +document.addEventListener('mousemove', drag); + +function drag(e) { + if (isDragging) { + currentX = e.clientX - initialX; + currentY = e.clientY - initialY; + xOffset = currentX; + yOffset = currentY; + draggable.style.transform = `translate(${currentX}px, ${currentY}px)`; + } +} + + function removeStorage(cname){ localStorage.removeItem(cname); } @@ -2389,12 +2426,12 @@ function nextQueue(){ if (!session.queue){return;} if (!session.director){return;} if (session.queueList.length==0){ - getById("queuebutton").classList.add("float2"); + // getById("queuebutton").classList.add("float2"); getById("queuebutton").classList.add("red"); - getById("queuebutton").classList.remove("float"); + // getById("queuebutton").classList.remove("float"); setTimeout(function(){ - getById("queuebutton").classList.add("float"); - getById("queuebutton").classList.remove("float2"); + // getById("queuebutton").classList.add("float"); + // getById("queuebutton").classList.remove("float2"); getById("queuebutton").classList.remove("red"); },50); return; @@ -2402,11 +2439,11 @@ function nextQueue(){ var nextStream = session.queueList.shift(); - getById("queuebutton").classList.add("float2"); - getById("queuebutton").classList.remove("float"); + // getById("queuebutton").classList.add("float2"); + // getById("queuebutton").classList.remove("float"); setTimeout(function(){ - getById("queuebutton").classList.add("float"); - getById("queuebutton").classList.remove("float2"); + // getById("queuebutton").classList.add("float"); + // getById("queuebutton").classList.remove("float2"); },200); updateQueue(); @@ -5650,8 +5687,6 @@ eventer(messageEvent, function(e) { // this listens for child IFRAMES. session.screenShareElement = false; updateMixer(); - getById("screenshare2button").classList.add("float"); - getById("screenshare2button").classList.remove("float2"); } } } else if (e.data.action == "video-loaded") { @@ -10317,12 +10352,9 @@ function toggleMute(apply = false, event=false) { // TODO: I need to have this b if (session.muted == false) { session.muted = true; - getById("mutetoggle").className = "las la-microphone-slash my-float toggleSize"; - if (!(session.cleanOutput)){ - getById("mutebutton").classList.remove("float"); - getById("mutebutton").classList.add("float2"); - getById("mutebutton").classList.add("red"); - getById("mutebutton").classList.add("puslate"); + getById("mutetoggle").className = "las la-microphone-slash toggleSize"; + if (!(session.cleanOutput)){ + getById("mutebutton").classList.add("red", "pulsate"); getById("header").classList.add('red'); if (session.localMuteElement){ @@ -10343,14 +10375,12 @@ function toggleMute(apply = false, event=false) { // TODO: I need to have this b } else { session.muted = false; - getById("mutetoggle").className = "las la-microphone my-float toggleSize"; + getById("mutetoggle").className = "las la-microphone toggleSize"; if (!(session.cleanOutput)){ - getById("mutebutton").classList.add("float"); - getById("mutebutton").classList.remove("float2"); - getById("mutebutton").classList.remove("red"); - getById("mutebutton").classList.remove("puslate"); - + // getById("mutebutton").classList.add("float"); + // getById("mutebutton").classList.remove("float2"); + getById("mutebutton").classList.remove("red", "pulsate"); getById("header").classList.remove('red'); if (session.localMuteElement){ @@ -10410,9 +10440,9 @@ function toggleSpeakerMute(apply = false) { // TODO: I need to have this be MUTE } if (session.speakerMuted == false) { // mute output session.speakerMuted = true; - getById("mutespeakertoggle").className = "las la-volume-mute my-float toggleSize"; + getById("mutespeakertoggle").className = "las la-volume-mute toggleSize"; if (!(session.cleanOutput)){ - getById("mutespeakerbutton").className = "float2 red"; + getById("mutespeakerbutton").className = "float red"; } var sounds = document.getElementsByTagName("video"); @@ -10430,7 +10460,7 @@ function toggleSpeakerMute(apply = false) { // TODO: I need to have this be MUTE } else { session.speakerMuted = false; // unmute output - getById("mutespeakertoggle").className = "las la-volume-up my-float toggleSize"; + getById("mutespeakertoggle").className = "las la-volume-up toggleSize"; if (!(session.cleanOutput)){ getById("mutespeakerbutton").className = "float"; } @@ -10526,13 +10556,13 @@ function toggleChat(event = null) { // TODO: I need to have this be MUTE, toggle return false; }); session.chat = true; - getById("chattoggle").className = "las la-comment-dots my-float toggleSize"; - getById("chatbutton").className = "float2"; + getById("chattoggle").className = "las la-comment-dots toggleSize"; + getById("chatbutton").className = "float"; getById("chatModule").style.display = "block"; getById("chatInput").focus(); // give it keyboard focus } else { session.chat = false; - getById("chattoggle").className = "las la-comment-alt my-float toggleSize"; + getById("chattoggle").className = "las la-comment-alt toggleSize"; getById("chatbutton").className = "float"; getById("chatModule").style.display = "none"; @@ -10675,10 +10705,10 @@ function toggleVideoMute(apply = false) { // TODO: I need to have this be MUTE, if (session.videoMuted == false) { session.videoMuted = true; - getById("mutevideotoggle").className = "las la-video-slash my-float toggleSize"; + getById("mutevideotoggle").className = "las la-video-slash toggleSize"; if (!(session.cleanOutput)){ - getById("mutevideobutton").className = "float2 red"; - getById("header").classList.add("red2"); + getById("mutevideobutton").className = "float red"; + getById("header").classList.add("red"); if (session.remoteVideoMuted){ getById("head8").classList.remove("hidden"); } @@ -10690,10 +10720,10 @@ function toggleVideoMute(apply = false) { // TODO: I need to have this be MUTE, } } else if (session.remoteVideoMuted){ // the director has muted this guest's video feed session.videoMuted = false; // just setting it back to the pre-toggled state - getById("mutevideotoggle").className = "las la-video my-float toggleSize"; + getById("mutevideotoggle").className = "las la-video toggleSize"; if (!(session.cleanOutput)){ getById("head8").classList.remove("hidden"); - getById("header").classList.add("red2"); + getById("header").classList.add("red"); getById("mutevideobutton").className = "float"; } if (session.streamSrc) { @@ -10705,10 +10735,10 @@ function toggleVideoMute(apply = false) { // TODO: I need to have this be MUTE, } else { session.videoMuted = false; - getById("mutevideotoggle").className = "las la-video my-float toggleSize"; + getById("mutevideotoggle").className = "las la-video toggleSize"; if (!(session.cleanOutput)){ getById("mutevideobutton").className = "float"; - getById("header").classList.remove("red2"); + getById("header").classList.remove("red"); } if (session.streamSrc) { session.streamSrc.getVideoTracks().forEach((track) => { @@ -10801,8 +10831,9 @@ async function toggleSettings(forceShow = false) { // TODO: I need to have this } getById("popupSelector").style.display = "inline-block" - getById("settingsbutton").classList.add("float2"); - getById("settingsbutton").classList.remove("float"); + getById("settingsbutton").classList.add("brown"); + // getById("settingsbutton").classList.add("float2"); + // getById("settingsbutton").classList.remove("float"); loadTFLITEImages() // only triggers if effects==5 is true @@ -10819,8 +10850,10 @@ async function toggleSettings(forceShow = false) { // TODO: I need to have this getById("popupSelector").style.right = "-400px"; - getById("settingsbutton").classList.add("float"); - getById("settingsbutton").classList.remove("float2"); + + getById("settingsbutton").classList.remove("brown"); + // getById("settingsbutton").classList.add("float"); + // getById("settingsbutton").classList.remove("float2"); setTimeout(function() { getById("popupSelector").style.display = "none"; }, 200); @@ -10876,14 +10909,13 @@ function hangup2() { getById("mutevideobutton").classList.add("hidden"); getById("screenshare2button").classList.add("hidden"); - getById("screensharebutton").classList.add("float"); - getById("screensharebutton").classList.remove("float2"); + getById("screensharebutton").classList.remove("green"); if (session.showDirector == false) { - getById("miniPerformer").innerHTML = ''; + getById("miniPerformer").innerHTML = ''; miniTranslate(getById("miniPerformer")); } else { - getById("miniPerformer").innerHTML = ''; + getById("miniPerformer").innerHTML = ''; } getById("miniPerformer").className = ""; } @@ -11668,7 +11700,7 @@ async function directTimer(ele, event=false) { // A directing room only is cont log("directTimer"); var msg = {}; ele.classList.remove("blue"); - ele.classList.remove("red2"); + ele.classList.remove("red"); if (!event || (!((event.ctrlKey) || (event.metaKey)))) { if (ele.value == 0 || ele.value == 2) { var getTime = await promptAlt("Time to set count down timer", false, false, parseInt(getById("overlayClockContainer").dataset.initial), true); @@ -11676,7 +11708,7 @@ async function directTimer(ele, event=false) { // A directing room only is cont getById("overlayClockContainer").dataset.initial = parseInt(getTime); ele.value = 1; ele.classList.add("pressed"); - ele.classList.remove("red2"); + ele.classList.remove("red"); msg.setClock = getTime; msg.showClock = true; msg.startClock = true; @@ -11685,7 +11717,7 @@ async function directTimer(ele, event=false) { // A directing room only is cont } else if (ele.value == 3) { ele.value = 1; msg.resumeClock = true; - ele.classList.add("red2"); + ele.classList.add("red"); } else { ele.value = 2; ele.classList.remove("pressed"); @@ -11702,7 +11734,7 @@ async function directTimer(ele, event=false) { // A directing room only is cont } else if (ele.value == 3) { ele.value = 1; msg.resumeClock = true; - ele.classList.add("red2"); + ele.classList.add("red"); } } @@ -11800,7 +11832,7 @@ async function directRoomTimer(ele, event=false) { // A directing room only is log("directGlobalRoomTimer"); var msg = {}; ele.classList.remove("blue"); - ele.classList.remove("red2"); + ele.classList.remove("red"); getById("overlayClockContainer").style.fontSize = "50px"; @@ -11812,7 +11844,7 @@ async function directRoomTimer(ele, event=false) { // A directing room only is getById("overlayClockContainer").dataset.initial = getTime; ele.value = 1; ele.classList.add("pressed"); - ele.classList.remove("red2"); + ele.classList.remove("red"); session.roomTimer = Date.now()/1000 + getTime; @@ -11834,7 +11866,7 @@ async function directRoomTimer(ele, event=false) { // A directing room only is } else { session.roomTimer = Date.now()/1000 - session.roomTimer; } - ele.classList.add("red2"); + ele.classList.add("red"); } else { ele.value = 2; ele.classList.remove("pressed"); @@ -11872,7 +11904,7 @@ async function directRoomTimer(ele, event=false) { // A directing room only is session.roomTimer = Date.now()/1000 - session.roomTimer; } - ele.classList.add("red2"); + ele.classList.add("red"); } } if (ele.dataset.UUID){ @@ -11893,17 +11925,17 @@ function updateRemoteTimerButton(UUID, currentTime) { time = time * -1; var minutes = Math.floor(time / 60); var seconds = time - minutes * 60; - elements[0].classList.add("red2"); + elements[0].classList.add("red"); elements[0].innerHTML = ' -' + (minutes) + "m : " + zpadTime(seconds) + "s"; } else { var minutes = Math.floor(time / 60); var seconds = time - minutes * 60; - elements[0].classList.remove("red2"); + elements[0].classList.remove("red"); elements[0].innerHTML = ' ' + (minutes) + "m : " + zpadTime(seconds) + "s"; } } else { elements[0].classList.remove("pressed"); - elements[0].classList.remove("red2"); + elements[0].classList.remove("red"); elements[0].innerHTML = ' Create Timer'; } } @@ -12047,12 +12079,12 @@ function blindAllGuests(ele, event=false){ ele.value = 0; ele.classList.remove("pressed"); ele.classList.remove("red"); - ele.innerHTML = ''; + ele.innerHTML = ''; } else { ele.value = 1; ele.classList.add("pressed"); ele.classList.add("red"); - ele.innerHTML = ''; + ele.innerHTML = ''; } } @@ -12658,7 +12690,7 @@ async function publishScreen() { getById("recordLocalbutton").className = "float"; } if (session.screensharebutton) { - getById("screensharebutton").className = "float2"; + getById("screensharebutton").className = "float"; } getById("controlButtons").classList.remove("hidden"); getById("helpbutton").style.display = "inherit"; @@ -12689,7 +12721,7 @@ async function publishScreen() { if (session.screensharebutton === true) { getById("controlButtons").classList.remove("hidden"); - getById("screensharebutton").className = "float2"; + getById("screensharebutton").className = "float"; } if (session.hangupbutton === true){ @@ -15383,14 +15415,14 @@ async function createRoomCallback(passAdd, passAdd2) { } if (session.showDirector == false) { - getById("miniPerformer").innerHTML = ''; + getById("miniPerformer").innerHTML = ''; miniTranslate(getById("miniPerformer")); getById("grabDirectorSoloLink").dataset.raw = "https://" + location.host + location.pathname + "?solo&sd&r=" + session.roomid + "&v="+session.streamID + passAdd2 + wss + token; getById("grabDirectorSoloLink").href = "https://" + location.host + location.pathname + "?solo&sd&r=" + session.roomid + "&v="+session.streamID + passAdd2 + wss + token; getById("grabDirectorSoloLink").innerText = "https://" + location.host + location.pathname + "?solo&sd&r=" + session.roomid + "&v="+session.streamID + passAdd2 + wss + token; getById("grabDirectorSoloLinkParent").classList.remove("hidden"); } else { - getById("miniPerformer").innerHTML = ''; + getById("miniPerformer").innerHTML = ''; } getById("miniPerformer").className = ""; @@ -17904,8 +17936,7 @@ function gotDevices2(deviceInfos) { notifyOfScreenShare(); //session.refreshScale(); } - getById("screensharebutton").classList.add("float"); - getById("screensharebutton").classList.remove("float2"); + getById("screensharebutton").classList.remove("green"); } }; @@ -19107,10 +19138,8 @@ async function toggleScreenShare(reload = false) { //////////////////////////// session.screenShareState = true; notifyOfScreenShare(); - - - getById("screensharebutton").classList.add("float2"); - getById("screensharebutton").classList.remove("float"); + + getById("screensharebutton").classList.add("green"); enumerateDevices().then(gotDevices2).then(function() {}); pokeIframeAPI("screen-share-state", true); @@ -19128,8 +19157,7 @@ async function toggleScreenShare(reload = false) { //////////////////////////// //session.refreshScale(); - getById("screensharebutton").classList.add("float2"); - getById("screensharebutton").classList.remove("float"); + getById("screensharebutton").classList.add("green"); enumerateDevices().then(gotDevices2).then(function() {}); //if (session.videoElement.readyState!==4){ @@ -19196,6 +19224,7 @@ async function toggleScreenShare(reload = false) { //////////////////////////// } }); } + if (session.streamSrcClone){ session.streamSrcClone.getVideoTracks().forEach(function(track) { if (beforeScreenShare && (track.id == beforeScreenShare.id)){ @@ -19217,9 +19246,8 @@ async function toggleScreenShare(reload = false) { //////////////////////////// } }); } - - getById("screensharebutton").classList.add("float"); // disable the button after we know the tracks are disabled - getById("screensharebutton").classList.remove("float2"); + + getById("screensharebutton").classList.remove("green"); if (beforeScreenShare){ if (addedAlready==false){ @@ -19815,8 +19843,8 @@ async function grabScreen(quality = 0, audio = true, videoOnEnd = false) { notifyOfScreenShare(); - getById("screensharebutton").classList.add("float"); - getById("screensharebutton").classList.remove("float2"); + + getById("screensharebutton").classList.remove("green"); if (videoOnEnd == true) { if (beforeScreenShare) { @@ -22751,7 +22779,7 @@ function addDownloadLink(fileList, UUID, pc){ } if (session.chat == false) { - getById("chattoggle").className = "las la-comments my-float toggleSize puslate"; + getById("chattoggle").className = "las la-comments toggleSize pulsate"; getById("chatbutton").className = "float"; if (getById("chatNotification").value) { @@ -24465,7 +24493,7 @@ function updateDirectorsAudio(dataN, UUID) { label.id = "label_" + i + "_"+n + "_"+UUID; label.htmlFor = "constraints_" + i + "_"+n + "_"+UUID; label.innerText = capitalizeFirstLetter(i).replace(/([a-z])([A-Z])/g, '$1 $2') + ":"; - label.style = "display:inline-block; padding:0;;"; + label.style = "display:inline-block; padding:0;"; label.dataset.keyname = i; label.dataset.track = n; var input = document.createElement("select"); @@ -27574,8 +27602,8 @@ function createIframePopup() { session.screenShareElement.parentNode.removeChild(session.screenShareElement); session.screenShareElement = false; updateMixer(); - getById("screenshare2button").classList.add("float"); - getById("screenshare2button").classList.remove("float2"); + // getById("screenshare2button").classList.add("float"); + // getById("screenshare2button").classList.remove("float2"); return; } @@ -27609,8 +27637,8 @@ function createIframePopup() { updateMixer(); - getById("screenshare2button").classList.add("float2"); - getById("screenshare2button").classList.remove("float"); + // getById("screenshare2button").classList.add("float2"); + // getById("screenshare2button").classList.remove("float"); return; // ignore the rest. } @@ -29452,7 +29480,7 @@ function getChatMessage(msg, label = false, director = false, overlay = false) { updateMessages(); if (session.chat == false) { - getById("chattoggle").className = "las la-comments my-float toggleSize puslate"; + getById("chattoggle").className = "las la-comments toggleSize pulsate"; getById("chatbutton").className = "float"; if (getById("chatNotification").value) { @@ -30192,7 +30220,7 @@ function recordLocalVideoToggle() { if (ele.dataset.state == "0") { ele.dataset.state = "1"; ele.style.backgroundColor = "red"; - ele.innerHTML = ''; + ele.innerHTML = ''; if ("recording" in session.videoElement) { } else { @@ -30213,7 +30241,7 @@ function recordLocalVideoToggle() { } ele.dataset.state = "0"; ele.style.backgroundColor = ""; - ele.innerHTML = ''; + ele.innerHTML = ''; if (session.director){ var elements = document.querySelectorAll('[data-action-type="recorder-local"][data-sid="' + session.streamID + '"]'); @@ -30358,7 +30386,7 @@ function recordLocalVideo(action = null, videoKbps = 6000, remote=false) { // ev if (remote){ getById("recordLocalbutton").dataset.state = "1"; getById("recordLocalbutton").style.backgroundColor = "red"; - getById("recordLocalbutton").innerHTML = ''; + getById("recordLocalbutton").innerHTML = ''; } return; } else { @@ -30388,7 +30416,7 @@ function recordLocalVideo(action = null, videoKbps = 6000, remote=false) { // ev if (remote){ getById("recordLocalbutton").dataset.state = "1"; getById("recordLocalbutton").style.backgroundColor = "red"; - getById("recordLocalbutton").innerHTML = ''; + getById("recordLocalbutton").innerHTML = ''; } } else if (action == "stop") { return; @@ -30396,7 +30424,7 @@ function recordLocalVideo(action = null, videoKbps = 6000, remote=false) { // ev if (!remote){ getById("recordLocalbutton").dataset.state = "1"; getById("recordLocalbutton").style.backgroundColor = "red"; - getById("recordLocalbutton").innerHTML = ''; + getById("recordLocalbutton").innerHTML = ''; } video.recording = true; } @@ -30438,17 +30466,17 @@ function recordLocalVideo(action = null, videoKbps = 6000, remote=false) { // ev if (getById("recordLocalbutton").dataset.state == 2) { getById("recordLocalbutton").dataset.state = "0"; getById("recordLocalbutton").style.backgroundColor = ""; - getById("recordLocalbutton").innerHTML = ''; + getById("recordLocalbutton").innerHTML = ''; restart = false; warnUser("Media Recording Stopped due to an error."); } else { - getById("recordLocalbutton").innerHTML = ''; + getById("recordLocalbutton").innerHTML = ''; getById("recordLocalbutton").dataset.state = "2"; } } else { getById("recordLocalbutton").dataset.state = "0"; getById("recordLocalbutton").style.backgroundColor = ""; - getById("recordLocalbutton").innerHTML = ''; + getById("recordLocalbutton").innerHTML = ''; if (notify){ if (!session.cleanOutput){ warnUser("A recording has stopped unexpectedly."); @@ -31015,7 +31043,7 @@ function changeGroupDirectorAPI(group, state=null, update=true){ ele.classList.add('float'); ele.style.display = "inline-block"; ele.role = "button"; - ele.innerHTML = '
'+group; + ele.innerHTML = '
'+group; eleGroup.appendChild(ele); ele.onclick = function(){ changeGroupDirectorAPI(this.dataset.group); @@ -34864,16 +34892,13 @@ async function createSecondStream() { //////////////////////////// session.screenShareElement.srcObject = session.screenStream; - getById("screensharebutton").classList.remove("float"); - getById("screensharebutton").classList.add("float2"); + getById("screensharebutton").classList.add("green"); getById("screensharebutton").title = miscTranslations["stop-screen-sharing"]; - getById("screenshare2button").classList.remove("float"); - getById("screenshare2button").classList.add("float2"); + getById("screenshare2button").classList.add("green"); getById("screenshare2button").title = miscTranslations["stop-screen-sharing"]; - getById("screenshare3button").classList.remove("float"); - getById("screenshare3button").classList.add("float2"); + getById("screenshare3button").classList.add("green"); getById("screenshare3button").title = miscTranslations["stop-screen-sharing"]; @@ -34973,16 +34998,13 @@ function stopSecondScreenshare(){ session.screenStream = false; session.screenShareState = false; - getById("screenshare2button").classList.remove("float2"); - getById("screenshare2button").classList.add("float"); + getById("screensharebutton").classList.remove("green"); + getById("screensharebutton").title = miscTranslations["share-a-screen"]; + + getById("screenshare2button").classList.remove("green"); getById("screenshare2button").title = miscTranslations["share-a-screen"]; - getById("screensharebutton").classList.remove("float2"); - getById("screensharebutton").classList.add("float"); - getById("screensharebutton").title = miscTranslations["share-a-screen"]; - - getById("screenshare3button").classList.remove("float2"); - getById("screenshare3button").classList.add("float"); + getById("screenshare3button").classList.remove("green"); getById("screenshare3button").title = miscTranslations["share-a-screen"]; pokeIframeAPI("screen-share-state", false); diff --git a/main.css b/main.css index 3c6304b..072b1ba 100644 --- a/main.css +++ b/main.css @@ -1,5 +1,6 @@ :root { /* Discord Greys - Dark to Lighter */ + --discord-grey-0: #121212; --discord-grey-1: #1e1f22; --discord-grey-2: #232428; --discord-grey-3: #2b2d31; @@ -62,8 +63,12 @@ color: #FFF; } -button:hover,[role="button"]:not(.column):hover{ - filter: brightness(90%); +button:hover,[role="button"] +:not(.column) +:not(.controlsGrid) +:not(#controlButtons) +:hover{ + filter: brightness(120%); } table { @@ -243,17 +248,45 @@ button.hint { visibility: hidden; } + +/* #screenshare3button.green{ + animation: pulse 5s infinite; +} */ + +/* Clicked buttons overwrite */ .red { background-color: #840000 !important; } +.red:hover { + background-color: #b30c0c !important; +} -.red2 { - background-color: #840000 !important; +.green { + background-color: #64c04d !important; } + +.green:hover { + background-color: #76c762 !important; +} + .blue { - background-color: #000084 !important; + background-color: #161699 !important; } +.blue:hover { + background-color: #2727bb !important; +} + +.brown { + background-color: #8d6418 !important; +} + +.brown:hover { + background-color: #a06d10 !important; +} + +/* ///////////////////// */ + .orange { background-color: #673100 !important; } @@ -262,14 +295,14 @@ button.hint { background-color: #5c7785 !important; } -button.red { +/* button.red { -webkit-app-region: no-drag; padding: 10px; margin: 10px 0px; cursor: pointer; border-radius: 2px; color: white; -} +} */ button { -webkit-app-region: no-drag; @@ -810,7 +843,7 @@ hr { font-size: 12px; margin: 10px 0 0 0; } -.puslate { +.pulsate { border-radius: 50%; box-shadow: 0 0 0 0 rgba(14, 19, 26, 1); transform: scale(1); @@ -1154,33 +1187,56 @@ button.glyphicon-button.active.focus { } #controlButtons { - position: fixed; - z-index: 995; - bottom: 0px; - width: 100%; - justify-content: center; - align-items: center; - height: 60px; - border: 0; - pointer-events: none; - display: flex; + display: flex; + position: fixed; + z-index: 995; + bottom: 0px; + border: 0; + pointer-events: none; + width: 100%; + justify-content: center; + align-items: center; + transform-origin: bottom; /* Keeps it at bottom even if scaled */ } #controlButtons:empty { display: none; } #subControlButtons { - display: flex; - border-radius: 38px; - background-color: #030303dd; - padding: 5px 7px; - position: absolute; - pointer-events: auto; + display: flex; + background-color: var(--discord-grey-0); + box-shadow: 0px 0px 10px rgba(0,0,0,1); + margin: 5px; + pointer-events: auto; + border: #cccccc22 1px solid; + border-radius: 10px; + align-items: center; + justify-content: center; + flex-wrap: wrap; + min-width: 0%; } + #subControlButtons:empty{ display:none; } +#subControlButtons div { + display: flex; + align-items: center; + justify-content: center; + background-color: var(--discord-grey-1); + opacity: unset; + border-radius: 8px; + transition: border-radius 200ms ease-in-out; + box-shadow: 1px 1px 3px rgba(0,0,0,0.75); +} + +#subControlButtons div:hover { + background-color: var(--discord-grey-3); + border-radius: 4px; +} + + #container.vidcon { height:100%; } @@ -1205,8 +1261,8 @@ button.glyphicon-button.active.focus { } @media only screen and (max-width: 640px){ - #subControlButtons { - transform: scale(0.9) translateY(10%); + #controlButtons { + transform: scale(0.9); } .labelSmall { @@ -1234,16 +1290,16 @@ button.glyphicon-button.active.focus { } } @media only screen and (max-width: 400px){ - #subControlButtons { - transform: scale(0.8) translateY(20%); - } -} -@media only screen and (max-width: 300px){ - #subControlButtons { - padding: 0px; + #controlButtons { + transform: scale(0.8); } } +@media only screen and (max-width: 300px){ + #controlButtons { + transform: scale(0.7); + } +} .orange{ background-color: #8d5e1a @@ -1288,34 +1344,19 @@ button.btnArmTransferRoom.selected{ } @media only screen and (max-height: 540px){ - #subControlButtons { - transform: scale(0.88); - } #gridlayout>#container.vidcon { height:88% } - #controlButtons { - height:54px; - } #copythisurl { font-size:80%; } } @media only screen and (max-height: 500px){ - #subControlButtons { - transform: scale(0.87); - } #gridlayout>#container.vidcon { height:87% } - #controlButtons { - height:54px; - } } @media only screen and (max-height: 400px){ - #subControlButtons { - transform: scale(0.85); - } #logoname{ display:none; } @@ -1329,7 +1370,7 @@ button.btnArmTransferRoom.selected{ height:85% } #controlButtons { - height:50px; + transform: scale(0.9); } #header{ min-height:0px; @@ -1339,12 +1380,6 @@ button.btnArmTransferRoom.selected{ #gridlayout>#container.vidcon { height:81% } - #subControlButtons { - transform: scale(0.81); - } - #controlButtons { - height:46.2px; - } #head2 { display:none !important; } @@ -1354,45 +1389,27 @@ button.btnArmTransferRoom.selected{ #gridlayout>#container.vidcon { height:78% } - #subControlButtons { - transform: scale(0.77); - } #controlButtons { - height:46.2px; + transform: scale(0.8); } } @media only screen and (max-height: 190px){ #gridlayout>#container.vidcon { height:75% } - #subControlButtons { - transform: scale(0.73); - } - #controlButtons { - height:42px - } } @media only screen and (max-height: 160px){ #gridlayout>#container.vidcon { height:70% } - #subControlButtons { - transform: scale(0.65); - } #controlButtons { - height:38px + transform: scale(0.7); } } @media only screen and (max-height: 120px){ #gridlayout>#container.vidcon { height:70% } - #subControlButtons { - transform: scale(0.52); - } - #controlButtons { - height:30px - } } #header:empty{ @@ -1634,12 +1651,6 @@ select{ background-color:#ddeeff; } -.green { - background-color:#474!important; -} - - - #effectSelector{ display: inline-block; vertical-align: middle; @@ -1931,16 +1942,7 @@ input[type=range]:focus::-ms-fill-upper { .tooltip:hover .tooltiptext { visibility: visible; } -#screensharebutton.float2{ - background-color: #335c3a; -} -#screenshare2button.float2{ - background-color: #335c3a; -} -#screenshare3button.float2{ - background-color: #2bf96e88; - animation: pulse 5s infinite; -} + #previewWebcam.miconly { display:none; } @@ -2288,20 +2290,24 @@ span[data-action-type="stats-graphs-details-container"]>span{ .float { opacity: 0.8; min-width: 45px; - height: 45px; - background-color: #6666; + min-height: 45px; + height: 100%; + box-shadow: 1px 1px 3px rgba(0,0,0,0.75); color: #FFF; - border-radius: 38px; + border-radius: 8px; text-align: center; margin: 5px; pointer-events: auto; outline:none; + padding: 5px 5px; } .float2 { opacity: 0.8; min-width: 45px; - height: 45px; + min-height: 45px; + height: 100%; background-color: #8888; + box-shadow: 1px 1px 3px rgba(0,0,0,0.75); color: #FFF; border-radius: 38px; text-align: center; @@ -2309,6 +2315,7 @@ span[data-action-type="stats-graphs-details-container"]>span{ margin: 5px; pointer-events: auto; outline:none; + padding: 5px 5px; } .rotate225 { @@ -2367,19 +2374,10 @@ iframe { .popup .menu { margin: 2px; } -.my-float { - margin-top: 7px; - opacity: 0.9; -} .toggleSize { font-size: 32px; color: white; } -.controlsGrid-1x1 { - margin-left: auto; - margin-right: 0; - text-align: right; -} img { max-width: 100%; @@ -3571,6 +3569,8 @@ div#roomnotes2 { gap: 2px; } +.controlsGrid + .controlsGrid button i { font-size: 15px; } @@ -3616,7 +3616,6 @@ div#roomnotes2 { max-width: 100%; } - .darktheme .controlsGrid .director-message-box textarea { background-color: var(--discord-grey-4); color: var(--discord-text); diff --git a/main.js b/main.js index d1cfb04..3ebb670 100644 --- a/main.js +++ b/main.js @@ -408,7 +408,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s session.audioMeterGuest = false; } else { log("MAKE DRAGGABLE"); - delayedStartupFuncs.push([makeDraggableElement, document.getElementById("subControlButtons")]); + // delayedStartupFuncs.push([makeDraggableElement, document.getElementById("subControlButtons")]); if (SafariVersion && !ChromeVersion){ // if desktop Safari, so macOS, give a note saying it sucks getById("SafariWarning").classList.remove("hidden"); } @@ -888,7 +888,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s session.speakerMuted_default = session.speakerMuted; if (session.speakerMuted){ - getById("mutespeakertoggle").className = "las la-volume-mute my-float toggleSize"; + getById("mutespeakertoggle").className = "las la-volume-mute toggleSize"; //getById("mutespeakerbutton").className="hidden float2 red"; getById("mutespeakerbutton").classList.add("red"); getById("mutespeakerbutton").classList.add("float2"); @@ -4560,7 +4560,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s ele.classList.add('float'); ele.style.display = "inline-block"; ele.role = "button"; - ele.innerHTML = '
'+group; + ele.innerHTML = '
'+group; eleGroup.appendChild(ele); ele.onclick = function(){ changeGroupDirectorAPI(this.dataset.group);