mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-11 21:58:35 +00:00
v18.3 beta
fixed fade-ins and added transitions, plus a group of bug fixes.
This commit is contained in:
parent
d87d04a4d4
commit
4c1151056a
36
index.html
36
index.html
@ -67,7 +67,7 @@
|
||||
<link itemprop="url" href="./media/obsNinja_logo_full.png" />
|
||||
</span>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=33"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=203"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=205"></script>
|
||||
<input id="zoomSlider" type="range" style="display: none;" />
|
||||
<div id="header">
|
||||
|
||||
@ -110,8 +110,7 @@
|
||||
|
||||
</div>
|
||||
<div id="controlButtons" >
|
||||
<div id="obsState" class="advanced" style="border:green solid 2px;padding:10px;margin:10px;color: white; z-index:2; background-color: #222D;display: block;top: 0;position: fixed;">ACTIVE</div>
|
||||
|
||||
<div id="obsState" class="advanced" >ACTIVE</div>
|
||||
<div id="subControlButtons">
|
||||
<div id="queuebutton" title="Load the next guest in queue" alt="Load the next guest in queue" onmousedown="event.preventDefault(); event.stopPropagation();" onclick="session.nextQueue()" tabindex="16" role="button" aria-pressed="false" onkeyup="enterPressedClick(event,this);" class="advanced float" style="cursor: pointer;" >
|
||||
<i id="queuetoggle" class="toggleSize las la-stream my-float"></i>
|
||||
@ -177,7 +176,7 @@
|
||||
<span
|
||||
id="helpbutton"
|
||||
title="Show Help Info"
|
||||
onclick="warnUser('For support, please browse https://reddit.com/r/obsninja or join the live chat on Discord at https://discord.obs.ninja.\n\nThe Docs also contains many help guides and advanced settings, located at https://docs.vdo.ninja.\n\nTo access the video stats menu, hold CTRL (command) and Left-Click on a video. Most video issues can be fixed by using Wired Internet instead of Wi-Fi.')"
|
||||
onclick="warnUser('For support, please browse https://reddit.com/r/obsninja or join the live chat on Discord at https://discord.vdo.ninja.\n\nThe Docs also contains many help guides and advanced settings, located at https://docs.vdo.ninja.\n\nTo access the video stats menu, hold CTRL (command) and Left-Click on a video. Most video issues can be fixed by using Wired Internet instead of Wi-Fi.')"
|
||||
style="cursor: pointer; display:none;"
|
||||
alt="How to Use This with OBS"
|
||||
>
|
||||
@ -281,7 +280,7 @@
|
||||
<li>Disabling video sharing between guests will improve performance</li>
|
||||
<li>Invite only guests to the room that you trust.</li>
|
||||
<li>The "Recording" option is considered experimental.</li>
|
||||
<li><a href="https://params.obs.ninja" style="color:black;"><u>Advanced URL parameters</u></a> are available to customize rooms.</li>
|
||||
<li><a href="https://params.vdo.ninja" style="color:black;"><u>Advanced URL parameters</u></a> are available to customize rooms.</li>
|
||||
</span>
|
||||
</ul>
|
||||
</div>
|
||||
@ -605,7 +604,7 @@
|
||||
</div>
|
||||
<div>See the
|
||||
<a style="text-decoration: none; color: blue;" target="_blank" href="https://docs.vdo.ninja/advanced-settings">documentation</a> for more options and info.<br /><br />
|
||||
Try out the advanced <a style="text-decoration: none; color: blue;" target="_blank" href="https://invite.obs.ninja/">invite generator</a> here also.
|
||||
Try out the advanced <a style="text-decoration: none; color: blue;" target="_blank" href="https://invite.vdo.ninja/">invite generator</a> here also.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -638,10 +637,7 @@
|
||||
</div>
|
||||
<div class='info message-card'>
|
||||
<h1>File Sharing seems to be broken on Chrome v88.</h1>
|
||||
<p>Using The Electron Capture app instead of Chrome should work:
|
||||
<a href="https://github.com/steveseguin/electroncapture/releases/latest">GET IT HERE</a>
|
||||
<br />
|
||||
You can also <a href="https://github.com/aws/amazon-chime-sdk-js/issues/1031">turn off hardware-accleration</a> in Chrome/Edge to fix the issue.</p>
|
||||
<p>Try <a href="https://github.com/aws/amazon-chime-sdk-js/issues/1031">turning off hardware-accleration</a> in Chrome/Edge to fix the issue, or maybe use a different browser.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -687,7 +683,7 @@
|
||||
<i style="margin-top:30px;font-size:600%;overflow:hidden;" class="las la-tachometer-alt"></i>
|
||||
</div>
|
||||
|
||||
<div id="container-8" class="column columnfade pointer card advanced" style="overflow: hidden;" onclick="window.location = 'https://guides.obs.ninja';">
|
||||
<div id="container-8" class="column columnfade pointer card advanced" style="overflow: hidden;" onclick="window.location = 'https://guides.vdo.ninja';">
|
||||
<h2><span data-translate="read-the-guides">Browse the Guides</span></h2>
|
||||
<i style="margin-top:30px;font-size:600%;overflow:hidden;" class="las la-book-open"></i>
|
||||
</div>
|
||||
@ -724,7 +720,7 @@
|
||||
👋 👀 Welcome to our new domain! We've started to rebrand to VDO.Ninja. 📼 Nothing else is changing and we're staying 100% free.
|
||||
</h4>
|
||||
<br />
|
||||
🌻 Site Updated on June 6th. The new <a href="https://docs.vdo.ninja/release-notes/v18">v18 release notes are here</a>. If new issues occur, the previous version can also be <a href="https://obs.ninja/v17/">found here</a>.
|
||||
🌻 Site Updated on June 9th. The <a href="https://docs.vdo.ninja/release-notes/v18">v18 release notes are here</a>. If new issues occur, the previous version can also be <a href="https://obs.ninja/v17/">found here</a>.
|
||||
|
||||
<br />
|
||||
<br />
|
||||
@ -1090,8 +1086,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="https://params.obs.ninja" style="color:#888;" target="_blank" >
|
||||
<div style="display: block;float:right;font-size:70%;z-index:30;bottom:6px;right:10px;position:relative;color:#888;" ><span data-translate="learn-more-about-params">Learn more about URL parameters at </span><font style="text-decoration: underline;">params.obs.ninja</font>
|
||||
<a href="https://params.vdo.ninja" style="color:#888;" target="_blank" >
|
||||
<div style="display: block;float:right;font-size:70%;z-index:30;bottom:6px;right:10px;position:relative;color:#888;" ><span data-translate="learn-more-about-params">Learn more about URL parameters at </span><font style="text-decoration: underline;">params.vdo.ninja</font>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@ -1614,7 +1610,7 @@
|
||||
<li><a onclick="changeLg('pig');toggle(document.getElementById('languages'));" style="cursor: pointer;">Pig Latin</a></li>
|
||||
</ul>
|
||||
<br />
|
||||
<a href="https://github.com/steveseguin/obsninja/tree/master/translations" target="_blank" rel="noopener noreferrer" data-translate='add-more-here'>Add More Here!</a>
|
||||
<a href="https://github.com/steveseguin/vdoninja/tree/master/translations" target="_blank" rel="noopener noreferrer" data-translate='add-more-here'>Add More Here!</a>
|
||||
<br />
|
||||
</div>
|
||||
<div id="calendar" class="popup-message" style="display: none; right: 0; padding-left:5px; bottom: 25px; position: absolute;">
|
||||
@ -1640,7 +1636,7 @@
|
||||
}
|
||||
|
||||
var session = WebRTC.Media; // session is a required global variable if configuring manually. Run before loading main.js but after webrtc.js.
|
||||
session.version = "18.1";
|
||||
session.version = "18.3";
|
||||
session.streamID = session.generateStreamID(); // randomly generates a streamID for this session. You can set your own programmatically if needed
|
||||
|
||||
session.defaultPassword = "someEncryptionKey123"; // Change this password if self-deploying for added security/privacy
|
||||
@ -1721,7 +1717,8 @@
|
||||
<script type="text/javascript" id="main-js" src="./main.js" data-translation="blank"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="mixer-js" src="./mixer.js?ver=2"></script>
|
||||
-->
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=226"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/aes.js"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=230"></script>
|
||||
<script type="text/javascript">
|
||||
setTimeout(function(){ // lazy load
|
||||
var script = document.createElement('script');
|
||||
@ -1732,11 +1729,6 @@
|
||||
script.src = "./thirdparty/StreamSaver.js"; // dynamically load this only if its needed. Keeps loading time down.
|
||||
};
|
||||
script.src = "./thirdparty/polyfill.min.js"; // dynamically load this only if its needed. Keeps loading time down.
|
||||
setTimeout(function(){
|
||||
var script = document.createElement('script');
|
||||
document.head.appendChild(script);
|
||||
script.src = "./thirdparty/aes.js"; // not really needed right away.
|
||||
},500);
|
||||
},0);
|
||||
|
||||
var languages = getById('languagesList').querySelectorAll('li a');
|
||||
|
||||
86
main.css
86
main.css
@ -232,7 +232,6 @@ button.white:active {
|
||||
z-index: 7;
|
||||
vertical-align: top;
|
||||
text-align: center;
|
||||
top: 0;
|
||||
position: fixed;
|
||||
overflow-wrap: anywhere;
|
||||
padding:2% 3%;
|
||||
@ -369,6 +368,9 @@ hr {
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
margin: var(--video-margin);
|
||||
transition-property: all;
|
||||
transition-duration: 1s;
|
||||
transition-timing-function: ease-in;
|
||||
}
|
||||
|
||||
#gridlayout {
|
||||
@ -483,6 +485,7 @@ button.glyphicon-button.active.focus {
|
||||
-webkit-tap-highlight-color: transparent !important;
|
||||
outline: 0px !important;
|
||||
height:100%;
|
||||
animation: fading 0.2s;
|
||||
}
|
||||
|
||||
#controlButtons {
|
||||
@ -526,25 +529,60 @@ button.glyphicon-button.active.focus {
|
||||
}
|
||||
}
|
||||
|
||||
#obsState {
|
||||
border:green solid 2px;
|
||||
padding:2px 5px;
|
||||
color: white;
|
||||
z-index:2;
|
||||
background-color: #222D;
|
||||
display: block;
|
||||
top: 0;
|
||||
position: fixed;
|
||||
opacity: 0.7;
|
||||
transform: scale(0.7);
|
||||
}
|
||||
@media only screen and (max-width: 620px){
|
||||
#obsState {
|
||||
top: 10px !important;
|
||||
transform: scale(0.9);
|
||||
top:20px;
|
||||
transform: scale(0.63);
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 400px){
|
||||
#obsState {
|
||||
top: 20px !important;
|
||||
transform: scale(0.8);
|
||||
top:30px;
|
||||
transform: scale(0.56);
|
||||
display:none!important;
|
||||
opacity:0;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 300px){
|
||||
#obsState {
|
||||
top: 30px !important;
|
||||
transform: scale(0.7);
|
||||
display:none!important;
|
||||
opacity:0;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-height: 400px){
|
||||
#obsState {
|
||||
transform: scale(0.5);
|
||||
display:none!important;
|
||||
opacity:0;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-height: 300px){
|
||||
#obsState {
|
||||
transform: scale(0.4);
|
||||
display:none!important;
|
||||
opacity:0;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-height: 200px){
|
||||
#obsState {
|
||||
transform: scale(0.3);
|
||||
display:none!important;
|
||||
opacity:0;
|
||||
}
|
||||
}
|
||||
obsState
|
||||
|
||||
/* Node selector to prioritise this selector above .float */
|
||||
button.btnArmTransferRoom{
|
||||
@ -1386,6 +1424,7 @@ img {
|
||||
.myVideo {
|
||||
box-shadow: rgb(88, 88, 88) 0px 0px 5px 1px;
|
||||
max-width: 800px !important;
|
||||
max-width: min(800px,100vw) !important;
|
||||
max-height: 100% !important;
|
||||
height: auto !important;
|
||||
display: block !important;
|
||||
@ -1395,16 +1434,29 @@ img {
|
||||
}
|
||||
#calendarButton {
|
||||
cursor: pointer;
|
||||
z-index: 6;
|
||||
z-index: 1;
|
||||
display:none;
|
||||
}
|
||||
#translateButton {
|
||||
cursor: pointer;
|
||||
z-index: 6;
|
||||
z-index: 1;
|
||||
}
|
||||
#helpButton {
|
||||
cursor: pointer;
|
||||
z-index: 6;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
iframe {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 390px) {
|
||||
#translateButton {
|
||||
display:none;
|
||||
}
|
||||
#helpButton {
|
||||
display:none;
|
||||
}
|
||||
}
|
||||
|
||||
.popup .menu { margin: 2px; }
|
||||
@ -1580,10 +1632,9 @@ img {
|
||||
-moz-animation: fadeIn var(--fadein-speed);
|
||||
-o-animation: fadeIn var(--fadein-speed);
|
||||
-ms-animation: fadeIn var(--fadein-speed);
|
||||
animation-iteration-count: 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@keyframes fadeIn {
|
||||
0% {opacity:0;}
|
||||
100% {opacity:1;}
|
||||
@ -1667,6 +1718,14 @@ video.clean::-webkit-media-controls-timeline-container {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
audio.fileshare::-webkit-media-controls-overlay-play-button, video.fileshare::-webkit-media-controls-overlay-play-button {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
audio.fileshare::-webkit-media-controls-play-button, video.fileshare::-webkit-media-controls-play-button {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
.mirrorControl::-webkit-media-controls-enclosure {
|
||||
padding: 0px;
|
||||
height: 30px;
|
||||
@ -2045,6 +2104,7 @@ input[type=checkbox] {
|
||||
align-self: center;
|
||||
width: 400px;
|
||||
max-width: 100%;
|
||||
z-index:3;
|
||||
}
|
||||
#chatInput {
|
||||
color: #000;
|
||||
|
||||
353
main.js
353
main.js
@ -705,7 +705,7 @@ function manageSceneState(data, UUID){
|
||||
}
|
||||
|
||||
function applySceneState(){
|
||||
|
||||
if (session.disableOBS){return;}
|
||||
if (session.cleanOutput===false){
|
||||
if (document.getElementById("videosource")){
|
||||
var visibility = false;
|
||||
@ -713,12 +713,12 @@ function applySceneState(){
|
||||
var recording = false;
|
||||
for (var uid in session.pcs){
|
||||
|
||||
if (session.pcs[uid].obsSourceActive && session.pcs[uid].obsVisibility && (session.pcs[uid].sceneDisplay!==false)){
|
||||
if (session.pcs[uid].obsSourceActive!==false && session.pcs[uid].obsVisibility && (session.pcs[uid].sceneDisplay!==false)){
|
||||
visibility=true;
|
||||
} else if (session.pcs[uid].obsVisibility && (session.pcs[uid].sceneDisplay!==false)){
|
||||
ondeck=true;
|
||||
}
|
||||
if ((session.pcs[uid].obsRecording || session.pcs[uid].obsStreaming) && (session.pcs[uid].obsSourceActive && session.pcs[uid].obsVisibility && (session.pcs[uid].sceneDisplay!==false))){ // the scene that is recording must be visible also.
|
||||
if ((session.pcs[uid].obsRecording || session.pcs[uid].obsStreaming) && (session.pcs[uid].obsSourceActive!==false && session.pcs[uid].obsVisibility && (session.pcs[uid].sceneDisplay!==false))){ // the scene that is recording must be visible also.
|
||||
recording=true;
|
||||
}
|
||||
}
|
||||
@ -737,16 +737,14 @@ function applySceneState(){
|
||||
getById("obsState").innerHTML = "ACTIVE";
|
||||
}
|
||||
|
||||
if (visibility || ondeck){ // BASIC TALLY LIGHT
|
||||
if (visibility){ // BASIC TALLY LIGHT (on deck disabled)
|
||||
getById("obsState").classList.add("onair"); // LIVE
|
||||
} else {
|
||||
getById("obsState").classList.remove("onair");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
window.onload = function winonLoad() { // This just keeps people from killing the live stream accidentally. Also give me a headsup that the stream is ending
|
||||
@ -924,7 +922,7 @@ function makeDraggableElement(elmnt) {
|
||||
}
|
||||
}
|
||||
|
||||
function setStorage(cname, cvalue, exdays=999) { // not actually a cookie
|
||||
function setStorage(cname, cvalue, exdays=999){ // not actually a cookie
|
||||
var now = new Date();
|
||||
var item = {
|
||||
value: cvalue,
|
||||
@ -1262,7 +1260,6 @@ if (urlParams.has('chatbutton') || urlParams.has('chat') || urlParams.has('cb'))
|
||||
} else {
|
||||
session.chatbutton = true;
|
||||
getById("chatbutton").classList.remove("advanced");
|
||||
getById("controlButtons").style.display = "inherit";
|
||||
}
|
||||
}
|
||||
|
||||
@ -1299,7 +1296,7 @@ if (urlParams.has('record')) {
|
||||
} else {
|
||||
session.recordLocal = urlParams.get('record');
|
||||
|
||||
if (session.recordLocal !== parseInt(session.recordLocal)) {
|
||||
if (session.recordLocal != parseInt(session.recordLocal)) {
|
||||
session.recordLocal = 6000;
|
||||
} else {
|
||||
session.recordLocal = parseInt(session.recordLocal);
|
||||
@ -1819,9 +1816,10 @@ if (urlParams.has('keyframeinterval') || urlParams.has('keyframerate') || urlPar
|
||||
session.keyframerate = parseInt(urlParams.get('keyframeinterval') || urlParams.get('keyframerate') || urlParams.get('keyframe') || urlParams.get('fki')) || 0;
|
||||
}
|
||||
|
||||
if (urlParams.has('tallyoff') || urlParams.has('obsoff') || urlParams.has('oo')) {
|
||||
if (urlParams.has('tallyoff') || urlParams.has('obsoff') || urlParams.has('oo') || urlParams.has('disableobs')) {
|
||||
log("OBS feedback disabled");
|
||||
session.disableOBS = true;
|
||||
getById("obsState").style.display = "none !important";
|
||||
}
|
||||
|
||||
|
||||
@ -1842,6 +1840,7 @@ if (urlParams.has('margin')) {
|
||||
}
|
||||
|
||||
if (urlParams.has('fadein')) {
|
||||
session.fadein=true;
|
||||
if (urlParams.get('fadein') || 0){
|
||||
try {
|
||||
var fadeinspeed = parseInt(urlParams.get('fadein') || 0)/1000.0;
|
||||
@ -2705,6 +2704,10 @@ if (urlParams.has('effects') || urlParams.has('effect')) {
|
||||
// image = 5
|
||||
}
|
||||
|
||||
if (urlParams.has('viewereffect') || urlParams.has('viewereffects') || urlParams.has('ve')) {
|
||||
session.viewereffects = parseInt(urlParams.get('viewereffect')) || parseInt(urlParams.get('ve')) || false;
|
||||
}
|
||||
|
||||
if (urlParams.has('activespeaker') || urlParams.has('speakerview') || urlParams.has('sas')){
|
||||
session.activeSpeaker = true;
|
||||
session.audioEffects = true;
|
||||
@ -3496,6 +3499,9 @@ function setupIncomingVideoTracking(v, UUID){ // video element.
|
||||
}
|
||||
|
||||
if (session.fadein){
|
||||
v.addEventListener('animationend', function(e) {
|
||||
v.classList.remove("fadein"); // allows the video to fade in.
|
||||
});
|
||||
v.classList.add("fadein"); // allows the video to fade in.
|
||||
}
|
||||
|
||||
@ -3518,7 +3524,7 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
|
||||
}
|
||||
if (session.director){return;}
|
||||
if (session.manual === true){return;}
|
||||
var playarea = getById("gridlayout");
|
||||
|
||||
var header = getById("header");
|
||||
|
||||
var hi = header.offsetHeight ;
|
||||
@ -3725,7 +3731,6 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
|
||||
}
|
||||
session.requestRateLimit(0, i);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -3885,6 +3890,12 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
|
||||
}
|
||||
if (session.director){return;} // director view says go no further :)
|
||||
|
||||
if (session.broadcastIFrame && session.broadcastIFrame.src){
|
||||
if (!mediaPool.length){
|
||||
mediaPool.push(session.broadcastIFrame);
|
||||
}
|
||||
}
|
||||
|
||||
if (document.fullscreenElement) {
|
||||
log("FULL SCREEN: "+document.fullscreenElement.id);
|
||||
return; // This is FULL SCREEN, so let's not continue.
|
||||
@ -3917,34 +3928,61 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
|
||||
}
|
||||
} else { var rw=1; var rh=1;}
|
||||
|
||||
|
||||
if (playarea.getElementsByTagName("iframe").length){
|
||||
|
||||
var childNodes = playarea.childNodes;
|
||||
|
||||
for (var n=0;n<childNodes.length;n++){
|
||||
|
||||
if (childNodes[n].getElementsByTagName("iframe").length==0){
|
||||
playarea.removeChild(childNodes[n]);
|
||||
n--;
|
||||
} else {
|
||||
|
||||
var iftemp = childNodes[n].getElementsByTagName("iframe")[0];
|
||||
var matched=false;
|
||||
for (var m=0;m<mediaPool.length;m++){
|
||||
if (mediaPool[m]==iftemp){
|
||||
iftemp.alreadyAdded=true;
|
||||
matched=true;
|
||||
var playarea = getById("gridlayout");
|
||||
|
||||
try {
|
||||
if (playarea.querySelector("#guestFeeds")){
|
||||
//errorlog("WIPE MIXER");
|
||||
playarea.innerHTML = "";
|
||||
} else {
|
||||
//errorlog("ALL GOOD");
|
||||
var childNodes = playarea.childNodes;
|
||||
|
||||
for (var n=0;n<childNodes.length;n++){
|
||||
if (childNodes[n].querySelector("video")){
|
||||
var vidtemp = childNodes[n].querySelector("video");
|
||||
var matched = false;
|
||||
for (var m=0;m<mediaPool.length;m++){
|
||||
if (vidtemp.id === mediaPool[m].id){
|
||||
vidtemp.alreadyAdded=true;
|
||||
mediaPool[m] = vidtemp;
|
||||
matched=true;
|
||||
childNodes[n].matched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!matched){
|
||||
if (session.fadein){
|
||||
vidtemp.classList.add("fadein");
|
||||
}
|
||||
}
|
||||
} else if (childNodes[n].querySelector("iframe")){
|
||||
var iftemp = childNodes[n].querySelector("iframe");
|
||||
for (var m=0;m<mediaPool.length;m++){
|
||||
if ((mediaPool[m].tagName.toLowerCase()==="iframe") && (mediaPool[m].src) && (iftemp.src === mediaPool[m].src)){
|
||||
iftemp.alreadyAdded=true;
|
||||
iftemp.id = mediaPool[m].id;
|
||||
if (iftemp.dataset.UUID !== session.directorUUID){
|
||||
iftemp.dataset.UUID = mediaPool[m].dataset.UUID;
|
||||
iftemp.dataset.sid = mediaPool[m].dataset.sid;
|
||||
}
|
||||
mediaPool[m] = iftemp;
|
||||
childNodes[n].matched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!matched){
|
||||
playarea.removeChild(childNodes[n]);
|
||||
n--;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
playarea.innerHTML = "";
|
||||
} catch(e){errorlog(e);}
|
||||
|
||||
for (var n=0;n<childNodes.length;n++){
|
||||
if (!childNodes[n].matched){
|
||||
playarea.removeChild(childNodes[n]);
|
||||
n--;
|
||||
} else {
|
||||
childNodes[n].matched=null;
|
||||
}
|
||||
}
|
||||
|
||||
if (session.videoElement){
|
||||
@ -4000,32 +4038,98 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
|
||||
|
||||
mediaPool.forEach(vid=>{
|
||||
|
||||
var container = document.createElement("div");
|
||||
|
||||
container.style.position = "absolute";
|
||||
container.style.display = "flex";
|
||||
container.style.alignItems = "center";
|
||||
offsetx=0;
|
||||
|
||||
var offsetx=0;
|
||||
|
||||
if (i!==0){
|
||||
if (Math.ceil((i+0.01)/rw)==rh){
|
||||
if (mediaPool.length%rw){
|
||||
offsetx = ((rw - mediaPool.length%rw)*(window.innerWidth/rw))/2;
|
||||
offsetx = Math.max(((rw - mediaPool.length%rw)*(window.innerWidth/rw))/2,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
offsety = (h- Math.ceil(mediaPool.length/rw)*Math.ceil(h/rh))/2;
|
||||
offsety = Math.max((h- Math.ceil(mediaPool.length/rw)*Math.ceil(h/rh))/2,0);
|
||||
|
||||
|
||||
|
||||
if (vid.alreadyAdded && vid.alreadyAdded==true){
|
||||
container = vid.parentNode;
|
||||
var container = vid.parentNode;
|
||||
//container.style = vid.parentNode.style;
|
||||
|
||||
var left = Math.max(offsetx+Math.floor(((i%rw)+0)*w/rw),0);
|
||||
var top = Math.max(offsety+Math.floor((Math.floor(i/rw)+0)*h/rh + hi),0);
|
||||
var width = Math.ceil(w/rw);
|
||||
var height = Math.ceil(h/rh);
|
||||
|
||||
|
||||
if (container.move){
|
||||
clearInterval(container.move);
|
||||
}
|
||||
|
||||
container.tleft = left;
|
||||
container.ttop = top;
|
||||
container.twidth = width;
|
||||
container.theight = height;
|
||||
|
||||
container.move = setInterval(function(CCC){
|
||||
try{
|
||||
if (!CCC){return;}
|
||||
var ww = (parseInt(CCC.style.width) - CCC.twidth);
|
||||
var hh = (parseInt(CCC.style.height) - CCC.theight);
|
||||
var tt = (parseInt(CCC.style.top) - CCC.ttop);
|
||||
var ll = (parseInt(CCC.style.left) - CCC.tleft);
|
||||
|
||||
var skip = true;
|
||||
|
||||
if (ww <=1 && (ww >=-1)){
|
||||
CCC.style.width = CCC.twidth+"px";
|
||||
} else {
|
||||
skip=false;
|
||||
CCC.style.width = parseInt((parseInt(CCC.style.width) - ww/1.5))+"px";
|
||||
}
|
||||
|
||||
if (hh <=1 && (hh >=-1)){
|
||||
CCC.style.height = CCC.theight+"px";
|
||||
} else {
|
||||
skip=false;
|
||||
CCC.style.height = parseInt((parseInt(CCC.style.height) - hh/1.5))+"px";
|
||||
}
|
||||
|
||||
if (tt <=1 && (tt >=-1)){
|
||||
CCC.style.top = CCC.ttop+"px";
|
||||
} else {
|
||||
skip=false;
|
||||
CCC.style.top = parseInt((parseInt(CCC.style.top) - tt/1.5))+"px";
|
||||
}
|
||||
|
||||
if (ll <=1 && (ll >=-1)){
|
||||
CCC.style.left = CCC.tleft+"px";
|
||||
} else {
|
||||
skip=false;
|
||||
CCC.style.left = parseInt((parseInt(CCC.style.left) - ll/1.5))+"px";
|
||||
}
|
||||
|
||||
if (skip){
|
||||
clearInterval(CCC.move);
|
||||
return;
|
||||
}
|
||||
} catch(e){errorlog(e);}
|
||||
}, 30, container);
|
||||
|
||||
} else {
|
||||
var container = document.createElement("div");
|
||||
container.style.position = "absolute";
|
||||
container.style.display = "flex";
|
||||
container.style.alignItems = "center";
|
||||
|
||||
container.style.left = offsetx+Math.floor(((i%rw)+0)*w/rw)+"px";
|
||||
container.style.top = offsety+Math.floor((Math.floor(i/rw)+0)*h/rh + hi)+"px";
|
||||
container.style.width = Math.ceil(w/rw)+"px";
|
||||
container.style.height = Math.ceil(h/rh)+"px";
|
||||
}
|
||||
|
||||
container.style.left = offsetx+Math.floor(((i%rw)+0)*w/rw)+"px";
|
||||
container.style.top = offsety+Math.floor((Math.floor(i/rw)+0)*h/rh + hi)+"px";
|
||||
container.style.width = Math.ceil(w/rw)+"px";
|
||||
container.style.height = Math.ceil(h/rh)+"px";
|
||||
|
||||
|
||||
if (vid.alreadyAdded && vid.alreadyAdded==true){
|
||||
vid.alreadyAdded=false;
|
||||
i+=1;
|
||||
@ -5132,6 +5236,13 @@ if ((session.roomid) || (urlParams.has('roomid')) || (urlParams.has('r')) || (ur
|
||||
});
|
||||
joinRoom(session.roomid); // this is a scene, so we want high resolutions
|
||||
getById("main").style.overflow = "hidden";
|
||||
|
||||
if (session.chatbutton === true) {
|
||||
getById("chatbutton").classList.remove("advanced");
|
||||
getById("controlButtons").style.display = "inherit";
|
||||
} else if (session.chatbutton === false) {
|
||||
getById("chatbutton").classList.add("advanced");
|
||||
}
|
||||
} else {
|
||||
if ((session.permaid === null) && (session.roomid == "")) {
|
||||
if (!(session.cleanOutput)) {
|
||||
@ -5147,6 +5258,12 @@ if ((session.roomid) || (urlParams.has('roomid')) || (urlParams.has('r')) || (ur
|
||||
log("director_room_input:" + director_room_input);
|
||||
createRoom(director_room_input);
|
||||
}
|
||||
if (session.chatbutton === true) {
|
||||
getById("chatbutton").classList.remove("advanced");
|
||||
getById("controlButtons").style.display = "inherit";
|
||||
} else if (session.chatbutton === false) {
|
||||
getById("chatbutton").classList.add("advanced");
|
||||
}
|
||||
} else if ((session.view) && (session.permaid === false)) {
|
||||
//if (!session.activeSpeaker){
|
||||
session.audioMeterGuest = false;
|
||||
@ -5161,6 +5278,13 @@ if ((session.roomid) || (urlParams.has('roomid')) || (urlParams.has('r')) || (ur
|
||||
setTimeout(updateMixer, 200);
|
||||
});
|
||||
getById("main").style.overflow = "hidden";
|
||||
|
||||
if (session.chatbutton === true) {
|
||||
getById("chatbutton").classList.remove("advanced");
|
||||
getById("controlButtons").style.display = "inherit";
|
||||
} else if (session.chatbutton === false) {
|
||||
getById("chatbutton").classList.add("advanced");
|
||||
}
|
||||
}
|
||||
|
||||
if (session.audioEffects === null) {
|
||||
@ -6503,6 +6627,11 @@ function remoteLowerhands(UUID) {
|
||||
msg.lowerhand = true;
|
||||
msg.UUID = UUID;
|
||||
session.sendRequest(msg, UUID);
|
||||
|
||||
try{
|
||||
getById("hands_"+UUID).style.display="none";
|
||||
session.rpcs[UUID].remoteRaisedHandElement.style.display = "none";
|
||||
} catch(e){}
|
||||
}
|
||||
|
||||
|
||||
@ -6630,8 +6759,9 @@ function remoteVolume(ele) { // A directing room only is controlled by the Direc
|
||||
}
|
||||
}
|
||||
|
||||
function clearDirectorSettings(){
|
||||
function clearDirectorSettings(){ // make sure to wipe the director's room settings if creating a new room.
|
||||
setStorage("directorCustomize", {});
|
||||
setStorage("directorWebsiteShare", {});
|
||||
}
|
||||
|
||||
function saveDirectorSettings(){
|
||||
@ -6671,8 +6801,8 @@ function saveDirectorSettings(){
|
||||
|
||||
function loadDirectorSettings(){
|
||||
var settings = getStorage("directorCustomize");
|
||||
console.log("LOAD DIRECTOR SETTING");
|
||||
|
||||
log("LOAD DIRECTOR SETTING");
|
||||
warnlog(settings);
|
||||
if (settings.customizeLinks){
|
||||
try{
|
||||
hideDirectorinvites(getById("directorLinksButton"), false);
|
||||
@ -6682,35 +6812,42 @@ function loadDirectorSettings(){
|
||||
if (settings.customizeLinks1){
|
||||
var customizeLinks1 = getById("customizeLinks1");
|
||||
Object.keys(settings.customizeLinks1).forEach((key, index) => {
|
||||
customizeLinks1.querySelector('[data-param="'+key+'"]').checked = settings.customizeLinks1[key];
|
||||
customizeLinks1.querySelector('[data-param="'+key+'"]').onchange();
|
||||
if (customizeLinks1.querySelector('[data-param="'+key+'"]').checked != settings.customizeLinks1[key]){
|
||||
customizeLinks1.querySelector('[data-param="'+key+'"]').checked = settings.customizeLinks1[key];
|
||||
customizeLinks1.querySelector('[data-param="'+key+'"]').onchange();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (settings.customizeLinks3){
|
||||
var customizeLinks3 = getById("customizeLinks3");
|
||||
Object.keys(settings.customizeLinks3).forEach((key, index) => {
|
||||
customizeLinks3.querySelector('[data-param="'+key+'"]').checked = settings.customizeLinks3[key];
|
||||
customizeLinks3.querySelector('[data-param="'+key+'"]').onchange();
|
||||
if (customizeLinks3.querySelector('[data-param="'+key+'"]').checked == settings.customizeLinks3[key]){
|
||||
customizeLinks3.querySelector('[data-param="'+key+'"]').checked = settings.customizeLinks3[key];
|
||||
customizeLinks3.querySelector('[data-param="'+key+'"]').onchange();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (settings.directorLinks1){
|
||||
var directorLinks1 = getById("directorLinks1");
|
||||
Object.keys(settings.directorLinks1).forEach((key, index) => {
|
||||
directorLinks1.querySelector('[data-param="'+key+'"]').checked = settings.directorLinks1[key];
|
||||
directorLinks1.querySelector('[data-param="'+key+'"]').onchange();
|
||||
if (directorLinks1.querySelector('[data-param="'+key+'"]').checked == settings.directorLinks1[key]){
|
||||
directorLinks1.querySelector('[data-param="'+key+'"]').checked = settings.directorLinks1[key];
|
||||
directorLinks1.querySelector('[data-param="'+key+'"]').onchange();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (settings.directorLinks2){
|
||||
var directorLinks2 = getById("directorLinks2");
|
||||
Object.keys(settings.directorLinks2).forEach((key, index) => {
|
||||
directorLinks2.querySelector('[data-param="'+key+'"]').checked = settings.directorLinks2[key];
|
||||
directorLinks2.querySelector('[data-param="'+key+'"]').onchange();
|
||||
if (directorLinks2.querySelector('[data-param="'+key+'"]').checked == settings.directorLinks2[key]){
|
||||
directorLinks2.querySelector('[data-param="'+key+'"]').checked = settings.directorLinks2[key];
|
||||
directorLinks2.querySelector('[data-param="'+key+'"]').onchange();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -7114,9 +7251,7 @@ session.publishIFrame = function(iframeURL){
|
||||
container.id = "container";
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow="autoplay;camera;microphone;fullscreen;picture-in-picture";
|
||||
iframe.allowtransparency="true";
|
||||
iframe.allowfullscreen ="true";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;transparency;";
|
||||
iframe.src = session.iframeSrc;
|
||||
iframe.id = "iframe_source"
|
||||
session.iframeEle = iframe;
|
||||
@ -7159,6 +7294,9 @@ session.publishIFrame = function(iframeURL){
|
||||
getById("controlButtons").style.display="none";
|
||||
}
|
||||
|
||||
if (session.chatbutton === false) {
|
||||
getById("chatbutton").classList.add("advanced");
|
||||
}
|
||||
|
||||
|
||||
if (session.director){
|
||||
@ -8010,8 +8148,19 @@ function createRoomCallback(passAdd, passAdd2) {
|
||||
clearInterval(session.updateLocalStatsInterval);
|
||||
session.updateLocalStatsInterval = setInterval(function(){updateLocalStats();},3000);
|
||||
|
||||
setTimeout(function(){loadDirectorSettings();},100);
|
||||
var directorWebsiteShare = getStorage("directorWebsiteShare"); // {"website":session.iframeSrc, "roomid":session.roomid}
|
||||
|
||||
if (typeof directorWebsiteShare === 'object' && directorWebsiteShare !== null && "website" in directorWebsiteShare){
|
||||
if (directorWebsiteShare.roomid && (directorWebsiteShare.roomid==session.roomid)){
|
||||
session.iframeSrc = directorWebsiteShare.website;
|
||||
getById("websitesharetoggle").classList.remove("la-window-maximize");
|
||||
getById("websitesharetoggle").classList.add("la-window-close");
|
||||
getById("websitesharebutton").classList.add("float2");
|
||||
getById("websitesharebutton").classList.remove("float");
|
||||
}
|
||||
}
|
||||
setTimeout(function(){loadDirectorSettings();},100);
|
||||
|
||||
joinRoom(session.roomid);
|
||||
|
||||
if (session.autostart){
|
||||
@ -8322,7 +8471,7 @@ function createControlBox(UUID, soloLink, streamID) {
|
||||
value='" + soloLink + "' href='" + soloLink + "'/>" + soloLink + "</a>\
|
||||
<button class='pull-right' style='width:100%;background-color:#ecfaff;' onmousedown='copyFunction(this.previousElementSibling)' onclick='popupMessage(event);copyFunction(this.previousElementSibling)'><i class='las la-user'></i> copy Solo link</button>\
|
||||
</div>\
|
||||
<button data-action-type=\"hand-raised\" id='" + handsID + "' style='margin: auto;margin-bottom:10px;display:none;background-color:yellow;' data-value='0' title=\"This guest raised their hand. Click this to clear notification.\" onclick=\"remoteLowerhands('" + UUID + "');this.style.display='none';\">\
|
||||
<button data-action-type=\"hand-raised\" id='" + handsID + "' style='margin: auto;margin-bottom:10px;display:none;background-color:yellow;' data-value='0' title=\"This guest raised their hand. Click this to clear notification.\" onclick=\"remoteLowerhands('" + UUID + "');\">\
|
||||
<i class=\"las la-hand-paper\"></i>\
|
||||
<span data-translate=\"user-raised-hand\">Lower Raised Hand</span>\
|
||||
</button>\
|
||||
@ -12412,10 +12561,9 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
} else {
|
||||
log("ROOMID EANBLED");
|
||||
log("Update Mixer Event on REsize SET");
|
||||
window.addEventListener("resize", updateMixer);
|
||||
window.addEventListener("orientationchange", updateMixer);
|
||||
//window.addEventListener("resize", updateMixer);// TODO FIX
|
||||
//window.addEventListener("orientationchange", updateMixer);// TODO FIX
|
||||
getById("head3").className = 'advanced';
|
||||
|
||||
joinRoom(session.roomid);
|
||||
}
|
||||
|
||||
@ -12449,8 +12597,6 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
bigPlayButton.parentNode.removeChild(bigPlayButton);
|
||||
}
|
||||
|
||||
|
||||
|
||||
v.autoplay = false;
|
||||
v.controls = true;
|
||||
v.muted = false;
|
||||
@ -12471,7 +12617,7 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
return;
|
||||
}
|
||||
|
||||
v.className = "tile clean";
|
||||
v.className = "tile clean fileshare";
|
||||
v.id = "videosource"; // could be set to UUID in the future
|
||||
v.playlist = files;
|
||||
|
||||
@ -12550,7 +12696,7 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
|
||||
if (session.director){
|
||||
} else if (session.scene!==false){
|
||||
setTimeout(function(){updateMixer();},1);
|
||||
//setTimeout(function(){updateMixer();},1);// TODO FIX
|
||||
} else if (session.roomid!==false){
|
||||
if (session.roomid===""){
|
||||
if (!(session.view) || (session.view==="")){
|
||||
@ -12558,7 +12704,7 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
if (session.fullscreen){
|
||||
session.windowed = false;
|
||||
} else {
|
||||
v.className = "myVideo clean";
|
||||
v.className = "myVideo clean fileshare";
|
||||
session.windowed = true;
|
||||
}
|
||||
getById("mutespeakerbutton").classList.add("advanced");
|
||||
@ -12576,7 +12722,7 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
session.windowed = false;
|
||||
applyMirror(session.mirrorExclude, 'videosource');
|
||||
play();
|
||||
setTimeout(function(){updateMixer();},1);
|
||||
//setTimeout(function(){updateMixer();},1);// TODO FIX
|
||||
}
|
||||
} else {
|
||||
//session.cbr=0; // we're just going to override it
|
||||
@ -12585,7 +12731,7 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
}
|
||||
session.windowed = false;
|
||||
applyMirror(session.mirrorExclude, 'videosource');
|
||||
setTimeout(function(){updateMixer();},1);
|
||||
//setTimeout(function(){updateMixer();},1); // TODO FIX
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -12593,7 +12739,7 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
|
||||
if (session.fullscreen){
|
||||
session.windowed = false;
|
||||
} else {
|
||||
v.className = "myVideo clean";
|
||||
v.className = "myVideo clean fileshare";
|
||||
session.windowed = true;
|
||||
}
|
||||
getById("mutespeakerbutton").classList.add("advanced");
|
||||
@ -12859,9 +13005,7 @@ function dragElement(elmnt) {
|
||||
function previewIframe(iframesrc) { // this is pretty important if you want to avoid camera permission popup problems. You can also call it automatically via: <body onload=>loadIframe();"> , but don't call it before the page loads.
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow = "autoplay;camera;microphone";
|
||||
iframe.allowtransparency = "true";
|
||||
iframe.allowfullscreen = "true";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;transparency;picture-in-picture;";
|
||||
iframe.style.width = "100%";
|
||||
iframe.style.height = "100%";
|
||||
iframe.style.border = "10px dashed rgb(64 65 62)";
|
||||
@ -12911,9 +13055,7 @@ function previewIframe(iframesrc) { // this is pretty important if you want to a
|
||||
function loadIframe(iframesrc) { // this is pretty important if you want to avoid camera permission popup problems. You can also call it automatically via: <body onload=>loadIframe();"> , but don't call it before the page loads.
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow = "autoplay;camera;microphone";
|
||||
iframe.allowtransparency = "true";
|
||||
iframe.allowfullscreen = "true";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;transparency;picture-in-picture;";
|
||||
iframe.style.width = "100%";
|
||||
iframe.style.height = "100%";
|
||||
iframe.style.border = "10px dashed rgb(64 65 62)";
|
||||
@ -14628,10 +14770,12 @@ Promise.prototype.timeout = function(ms) {
|
||||
|
||||
|
||||
function shareWebsite(autostart=false){
|
||||
|
||||
if (session.iframeSrc){
|
||||
session.iframeSrc = false;
|
||||
session.iframeEle = null;
|
||||
|
||||
if (session.director){
|
||||
setStorage("directorWebsiteShare", {"website":session.iframeSrc, "roomid":session.roomid});
|
||||
}
|
||||
getById("websitesharetoggle").classList.add("la-window-maximize");
|
||||
getById("websitesharetoggle").classList.remove("la-window-close");
|
||||
|
||||
@ -14688,18 +14832,10 @@ function shareWebsite(autostart=false){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
session.iframeSrc = iframeURL;
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow="autoplay;camera;microphone;fullscreen;picture-in-picture";
|
||||
iframe.allowtransparency="true";
|
||||
iframe.allowfullscreen ="true";
|
||||
iframe.src = session.iframeSrc;
|
||||
iframe.id = "iframe_source"
|
||||
session.iframeEle = iframe;
|
||||
|
||||
if (session.director){
|
||||
setStorage("directorWebsiteShare", {"website":session.iframeSrc, "roomid":session.roomid});
|
||||
}
|
||||
getById("websitesharetoggle").classList.remove("la-window-maximize");
|
||||
getById("websitesharetoggle").classList.add("la-window-close");
|
||||
|
||||
@ -14750,7 +14886,7 @@ function createIframePopup() {
|
||||
}
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow = "autoplay";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;transparency;";
|
||||
iframe.allowtransparency = "true";
|
||||
|
||||
var extras = "";
|
||||
@ -15039,6 +15175,7 @@ function updateLinkWebP(arg, input) {
|
||||
}
|
||||
|
||||
function updateLink(arg, input) {
|
||||
log("updateLink");
|
||||
log(input.dataset.param);
|
||||
if (input.checked) {
|
||||
|
||||
@ -15046,11 +15183,10 @@ function updateLink(arg, input) {
|
||||
|
||||
var string = getById("director_block_" + arg).dataset.raw;
|
||||
|
||||
if (getById("obfuscate_director_" + arg).checked) {
|
||||
if ((arg==1) && (getById("obfuscate_director_" + arg).checked)) {
|
||||
string = obfuscateURL(string);
|
||||
}
|
||||
|
||||
|
||||
getById("director_block_" + arg).href = string;
|
||||
getById("director_block_" + arg).innerText = string;
|
||||
} else {
|
||||
@ -15059,7 +15195,7 @@ function updateLink(arg, input) {
|
||||
string = string.substring(0, string.length - 1);
|
||||
getById("director_block_" + arg).dataset.raw = string;
|
||||
|
||||
if (getById("obfuscate_director_" + arg).checked) {
|
||||
if ((arg==1) && (getById("obfuscate_director_" + arg).checked)) {
|
||||
string = obfuscateURL(string);
|
||||
}
|
||||
|
||||
@ -15071,6 +15207,7 @@ function updateLink(arg, input) {
|
||||
|
||||
|
||||
function updateLinkInverse(arg, input) {
|
||||
log("updateLinkInverse");
|
||||
log(input.dataset.param);
|
||||
if (!(input.checked)) {
|
||||
|
||||
@ -15078,7 +15215,7 @@ function updateLinkInverse(arg, input) {
|
||||
|
||||
var string = getById("director_block_" + arg).dataset.raw;
|
||||
|
||||
if (getById("obfuscate_director_" + arg).checked) {
|
||||
if ((arg==1) && (getById("obfuscate_director_" + arg).checked)) {
|
||||
string = obfuscateURL(string);
|
||||
}
|
||||
|
||||
@ -15091,7 +15228,7 @@ function updateLinkInverse(arg, input) {
|
||||
string = string.substring(0, string.length - 1);
|
||||
getById("director_block_" + arg).dataset.raw = string;
|
||||
|
||||
if (getById("obfuscate_director_" + arg).checked) {
|
||||
if ((arg==1) && (getById("obfuscate_director_" + arg).checked)) {
|
||||
string = obfuscateURL(string);
|
||||
}
|
||||
|
||||
@ -15101,6 +15238,7 @@ function updateLinkInverse(arg, input) {
|
||||
}
|
||||
|
||||
function updateLinkScene(arg, input) {
|
||||
log("updateLinkScene");
|
||||
var string = getById("director_block_" + arg).dataset.raw;
|
||||
|
||||
if (input.checked) {
|
||||
@ -15110,7 +15248,7 @@ function updateLinkScene(arg, input) {
|
||||
}
|
||||
getById("director_block_" + arg).dataset.raw = string;
|
||||
|
||||
if (getById("obfuscate_director_" + arg).checked) {
|
||||
if ((arg==1) && (getById("obfuscate_director_" + arg).checked)) {
|
||||
string = obfuscateURL(string);
|
||||
}
|
||||
|
||||
@ -16028,13 +16166,14 @@ function updateClosedCaptions(msg, label, UUID) {
|
||||
var spanOverlay = document.createElement("span");
|
||||
spanOverlay.id = UUID + "_" + msg.counter;
|
||||
textOverlay.appendChild(spanOverlay);
|
||||
textOverlay.style.height = "auto";
|
||||
textOverlay.style.height = "unset";
|
||||
textOverlay.style.textAlign = "left";
|
||||
textOverlay.style.display = "block";
|
||||
textOverlay.style.position = "relative";
|
||||
textOverlay.style.position = "fixed";
|
||||
textOverlay.style.bottom = "0";
|
||||
|
||||
}
|
||||
spanOverlay.innerHTML = label + transcript + "<br />";
|
||||
|
||||
spanOverlay.style.fontSize = (parseInt(session.labelsize || 100) / 100.0 * 4.5) + "vh";
|
||||
spanOverlay.style.lineHeight = (parseInt(session.labelsize || 100) / 100 * 6) + "vh";
|
||||
spanOverlay.style.margin = (parseInt(session.labelsize || 100) / 100.0 * 0.75) + "vh";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user