mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-17 00:28:33 +00:00
v20.6
bug fixes; couple minor features. testing out PWA support
This commit is contained in:
parent
981841583a
commit
94a6f5ff89
66
index.html
66
index.html
@ -14,6 +14,13 @@
|
||||
}
|
||||
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
color: #e5e5e5;
|
||||
background-color: #141926;
|
||||
transition: opacity .1s linear;
|
||||
}
|
||||
</style>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta content="utf-8" http-equiv="encoding" />
|
||||
@ -47,16 +54,21 @@
|
||||
<meta property="twitter:image" content="./media/vdoNinja_logo_full.png" />
|
||||
<meta name="msapplication-TileColor" content="#da532c" />
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<style>
|
||||
body {
|
||||
color: #e5e5e5;
|
||||
background-color: #141926;
|
||||
transition: opacity .1s linear;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="./main.css?ver=152" />
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter.min.js"></script>
|
||||
<style id="lightbox-animations" type="text/css"></style>
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
<!-- ios support
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-72x72.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-96x96.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-128x128.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-144x144.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-152x152.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-192x192.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-384x384.png" />
|
||||
<link rel="apple-touch-icon" href="images/icons/icon-512x512.png" />
|
||||
<meta name="apple-mobile-web-app-status-bar" content="#db4938" />
|
||||
-->
|
||||
</head>
|
||||
<body id="main" class="hidden">
|
||||
<span itemprop="image" itemscope itemtype="image/png">
|
||||
@ -66,8 +78,8 @@
|
||||
<span itemprop="thumbnail" itemscope itemtype="http://schema.org/ImageObject">
|
||||
<link itemprop="url" href="./media/vdoNinja_logo_full.png" />
|
||||
</span>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=36"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=346"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=37"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=348"></script>
|
||||
<input id="zoomSlider" type="range" style="display: none;" />
|
||||
<div id="header">
|
||||
|
||||
@ -191,7 +203,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span
|
||||
id="reportbutton"
|
||||
title="Submit any error logs"
|
||||
@ -216,6 +227,7 @@
|
||||
<i style="float: right; bottom: 0px; cursor: pointer; position: fixed; right: 33px; color: #d9e4eb; padding: 2px; margin: 2px 2px 0 0; font-size: 140%;" class="las la-calendar" aria-hidden="true"></i>
|
||||
</span>
|
||||
<div id="mainmenu" class="row" style="opacity: 0; align: center;">
|
||||
|
||||
<div id="container-1" title="Add Group Chat to OBS" alt="Add Group Chat to OBS" tabindex="2" role="button" aria-pressed="false" onkeyup="enterPressedClick(event,this);" class="column columnfade pointer rounded card" style=" overflow-y: auto;">
|
||||
|
||||
<h2>
|
||||
@ -1666,7 +1678,13 @@
|
||||
<li class="context-menu__item">
|
||||
<a href="#" class="context-menu__link" data-action="Controls">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="toggle-control-video">Toggle control bar</span>
|
||||
<span data-translate="show-controls-video">Show control bar</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item advanced">
|
||||
<a href="#" class="context-menu__link" data-action="HideControls">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="hide-controls-video">Hide control bar</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item">
|
||||
@ -1676,23 +1694,41 @@
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item">
|
||||
<a href="#" class="context-menu__link" data-action="fullWindow">
|
||||
<a href="#" class="context-menu__link" data-action="FullWindow">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="full-window">Full-window</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item advanced">
|
||||
<a href="#" class="context-menu__link" data-action="ShrinkWindow">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="shrink-window">Shrink-window</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item">
|
||||
<a href="#" class="context-menu__link" data-action="Pause">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="pause-stream">Pause stream</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item advanced">
|
||||
<a href="#" class="context-menu__link" data-action="UnPause">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="resume-stream">Resume stream</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item">
|
||||
<a href="#" class="context-menu__link" data-action="Record">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="record-to-disk">Record to disk</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="context-menu__item advanced">
|
||||
<a href="#" class="context-menu__link" data-action="StopRecording">
|
||||
<i class="las la-external-link"></i>
|
||||
<span data-translate="stop-record-to-disk">Stop Recording</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
@ -1896,7 +1932,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 = "20.4";
|
||||
session.version = "20.6";
|
||||
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
|
||||
@ -1961,11 +1997,11 @@
|
||||
// session.introOnClean = true; // this will load the page with the webcam selection screen if &push or &room is in the URL; no need to use &webcam.
|
||||
</script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/aes.js"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=257"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=260"></script>
|
||||
<!--
|
||||
// If you wish to change branding, blank offers a good clean start.
|
||||
<script type="text/javascript" id="main-js" src="./main.js" data-translation="blank"></script>
|
||||
-->
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=293"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=297"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
96
main.js
96
main.js
@ -98,6 +98,10 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
if (urlParams.has('cleanviewer') || urlParams.has('cv')) {
|
||||
session.cleanViewer = true;
|
||||
}
|
||||
|
||||
if (urlParams.has('controls') || urlParams.has('videocontrols')) {
|
||||
session.showControls = true; // show the video control bar
|
||||
}
|
||||
|
||||
if (!isIFrame){
|
||||
if (ChromeVersion===65){
|
||||
@ -141,7 +145,20 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (urlParams.has('pwa')){
|
||||
getById("enterInvite").classList.remove("advanced");
|
||||
}
|
||||
if ("serviceWorker" in navigator) {
|
||||
window.addEventListener("load", function() {
|
||||
navigator.serviceWorker
|
||||
.register("./serviceWorker.js")
|
||||
.then(res => log("service worker registered"))
|
||||
.catch(err => warnlog("service worker not registered"))
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (navigator.userAgent.toLowerCase().indexOf(' electron/') > -1) {
|
||||
try {
|
||||
getById("electronDragZone").style.cursor="grab";
|
||||
@ -154,10 +171,11 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
} catch(e){}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (urlParams.has('retrytimeout')) {
|
||||
session.retryTimeout = parseInt(urlParams.get('retrytimeout'));
|
||||
session.retryTimeout = parseInt(urlParams.get('retrytimeout')) || 5000;
|
||||
if (session.retryTimeout<5000){
|
||||
session.retryTimeout = 5000;
|
||||
}
|
||||
}
|
||||
|
||||
if (urlParams.has('ptz')){
|
||||
@ -369,6 +387,14 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
session.showDirector = parseInt(urlParams.get('showdirector')) || parseInt(urlParams.get('sd')) || true; // if 2, video only allowed. True or 1 will be video + audio allowed.
|
||||
}
|
||||
|
||||
if (urlParams.has('bitratecutoff') || urlParams.has('bitcut')) {
|
||||
session.lowBitrateCutoff = parseInt(urlParams.get('bitratecutoff')) || parseInt(urlParams.get('bitcut')) || 300; // low bitrate cut off.
|
||||
}
|
||||
|
||||
if (urlParams.has("statsinterval")){
|
||||
session.statsInterval = parseInt(urlParams.get("statsinterval")) || 3000; // milliseconds. interval of requesting stats of remote guests
|
||||
}
|
||||
|
||||
if (urlParams.has('rotate') ) {
|
||||
session.rotate = urlParams.get('rotate') || 90;
|
||||
session.rotate = parseInt(session.rotate);
|
||||
@ -749,7 +775,6 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
session.forceMediaSettings = true;
|
||||
}
|
||||
|
||||
|
||||
if (urlParams.has('transcript') || urlParams.has('transcribe') || urlParams.has('trans')) {
|
||||
session.transcript = urlParams.get('transcript') || urlParams.get('transcribe') || urlParams.get('trans') || "en-US";
|
||||
}
|
||||
@ -1487,9 +1512,9 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
if (urlParams.has('chroma')) {
|
||||
log("Chroma ENABLED");
|
||||
getById("main").style.backgroundColor = "#" + (urlParams.get('chroma') || "0F0");
|
||||
} else if (window.obsstudio || (navigator.userAgent.toLowerCase().indexOf(' electron/') > -1)){
|
||||
getById("main").style.backgroundColor = "rgba(0,0,0,0)";
|
||||
}
|
||||
} // else if (window.obsstudio || (navigator.userAgent.toLowerCase().indexOf(' electron/') > -1)){
|
||||
// getById("main").style.backgroundColor = "rgba(0,0,0,0)";
|
||||
//}
|
||||
|
||||
if (urlParams.has('margin')) {
|
||||
try {
|
||||
@ -1774,7 +1799,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
}
|
||||
|
||||
if (urlParams.has('chunked')) {
|
||||
session.chunked = parseInt(urlParams.get('chunked')) || 1;
|
||||
session.chunked = parseInt(urlParams.get('chunked')) || 3000;
|
||||
session.alpha = true;
|
||||
}
|
||||
|
||||
@ -1888,6 +1913,14 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
getById("testtone").parentNode.insertBefore(addtone, getById("testtone").nextSibling)
|
||||
}
|
||||
if (urlParams.has('r2d2')) {
|
||||
/* var addtone = createAudioElement();
|
||||
addtone.id = "jointone";
|
||||
addtone.src = "./media/join.mp3";
|
||||
getById("testtone").parentNode.insertBefore(addtone, getById("testtone").nextSibling)
|
||||
var addtone = createAudioElement();
|
||||
addtone.id = "leavetone";
|
||||
addtone.src = "./media/leave.mp3";
|
||||
getById("testtone").parentNode.insertBefore(addtone, getById("testtone").nextSibling) */
|
||||
getById("testtone").innerHTML = "";
|
||||
getById("testtone").src = "./media/robot.mp3";
|
||||
session.beepToNotify = true;
|
||||
@ -3551,38 +3584,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
}
|
||||
|
||||
if ("getDetailedState" in e.data) {
|
||||
var detailedState = {};
|
||||
for (var UUID in session.rpcs){
|
||||
if (!session.rpcs[UUID].streamID){continue;}
|
||||
detailedState[session.rpcs[UUID].streamID] = {};
|
||||
var scenes = getById("container_" + UUID).querySelectorAll('[data-action-type="addToScene"][data-scene][data--u-u-i-d="'+UUID+'"]');
|
||||
var sceneState = {};
|
||||
for (var i=0;i<scenes.length;i++){
|
||||
if (parseInt(scenes[i].dataset.value)){
|
||||
sceneState[scenes[i].dataset.scene] = true;
|
||||
} else {
|
||||
sceneState[scenes[i].dataset.scene] = false;
|
||||
}
|
||||
}
|
||||
detailedState[session.rpcs[UUID].streamID].scenes = sceneState;
|
||||
}
|
||||
|
||||
if (session.showDirector){
|
||||
if (document.getElementById("container_director")){
|
||||
detailedState[session.streamID] = {};
|
||||
var scenes = getById("container_director").querySelectorAll('[data-action-type="addToScene"][data-scene]');
|
||||
var sceneState = {};
|
||||
for (var i=0;i<scenes.length;i++){
|
||||
if (parseInt(scenes[i].dataset.value)){
|
||||
sceneState[scenes[i].dataset.scene] = true;
|
||||
} else {
|
||||
sceneState[scenes[i].dataset.scene] = false;
|
||||
}
|
||||
}
|
||||
detailedState[session.streamID].scenes = sceneState;
|
||||
}
|
||||
}
|
||||
|
||||
var detailedState = getDetailedState();
|
||||
parent.postMessage({
|
||||
"detailedState": detailedState
|
||||
}, "*");
|
||||
@ -3607,7 +3609,11 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
|
||||
|
||||
if (("action" in e.data) && (e.data.action!="null")) { /////////////// reuse the Companion API
|
||||
processMessage(e.data); // reuse the companion API
|
||||
var resp = processMessage(e.data); // reuse the companion API
|
||||
if (resp!==null){
|
||||
log(resp);
|
||||
parent.postMessage(resp, "*");
|
||||
}
|
||||
} else if ("target" in e.data) {
|
||||
log(e.data);
|
||||
for (var i in session.rpcs) {
|
||||
@ -3829,11 +3835,17 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
|
||||
function updateConnectionStatus() {
|
||||
try{
|
||||
if (!session.stats){
|
||||
return;
|
||||
}
|
||||
|
||||
warnlog("Connection type changed from " + session.stats.network_type + " to " + Connection.effectiveType);
|
||||
session.stats.network_type = Connection.effectiveType + " / " + Connection.type;
|
||||
session.ping();
|
||||
|
||||
} catch(e){warnlog(e);};
|
||||
}
|
||||
|
||||
try {
|
||||
var Connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
|
||||
if (Connection){
|
||||
|
||||
22
manifest.json
Normal file
22
manifest.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"short_name": "VDO.Ninja",
|
||||
"name": "VDO.Ninja: Progressive Web App Version",
|
||||
"icons": [
|
||||
{
|
||||
"src": "./media/icon.svg",
|
||||
"type": "image/svg+xml",
|
||||
"sizes": "512x512"
|
||||
},
|
||||
{
|
||||
"src": "./media/icon.svg",
|
||||
"type": "image/svg+xml",
|
||||
"sizes": "192x192"
|
||||
}
|
||||
],
|
||||
"start_url": "./?pwa",
|
||||
"background_color": "#3367D6",
|
||||
"display": "standalone",
|
||||
"scope": "./",
|
||||
"theme_color": "#3367D6",
|
||||
"description": "Weather forecast information"
|
||||
}
|
||||
150
media/icon.svg
Normal file
150
media/icon.svg
Normal file
@ -0,0 +1,150 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="144.36862mm"
|
||||
height="146.00368mm"
|
||||
viewBox="0 0 144.36862 146.00368"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
sodipodi:docname="icon.svg"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.90509668"
|
||||
inkscape:cx="259.08834"
|
||||
inkscape:cy="14.915534"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1351"
|
||||
inkscape:window-x="4791"
|
||||
inkscape:window-y="706"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g73"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8675">
|
||||
<stop
|
||||
style="stop-color:#1a1a1a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8671" />
|
||||
<stop
|
||||
style="stop-color:#1a1a1a;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8673" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8675"
|
||||
id="linearGradient8677"
|
||||
x1="12147.551"
|
||||
y1="13839.459"
|
||||
x2="18804.379"
|
||||
y2="6122.8374"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8675"
|
||||
id="linearGradient9462"
|
||||
x1="9100.0771"
|
||||
y1="8035"
|
||||
x2="17871.928"
|
||||
y2="12174.818"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB"
|
||||
inkscape:label="Lightness-Contrast"
|
||||
id="filter12232"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1"
|
||||
height="1">
|
||||
<feColorMatrix
|
||||
values="1.22222 0 0 -0.948854 -0.111111 0 1.22222 0 -0.948854 -0.111111 0 0 1.22222 -0.948854 -0.111111 0 0 0 1 0"
|
||||
id="feColorMatrix12230" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB"
|
||||
inkscape:label="Lightness-Contrast"
|
||||
id="filter12236"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1"
|
||||
height="1">
|
||||
<feColorMatrix
|
||||
values="1.22222 0 0 -0.948854 -0.111111 0 1.22222 0 -0.948854 -0.111111 0 0 1.22222 -0.948854 -0.111111 0 0 0 1 0"
|
||||
id="feColorMatrix12234" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB"
|
||||
inkscape:label="Lightness-Contrast"
|
||||
id="filter12240"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1"
|
||||
height="1">
|
||||
<feColorMatrix
|
||||
values="1.22222 0 0 -0.948854 -0.111111 0 1.22222 0 -0.948854 -0.111111 0 0 1.22222 -0.948854 -0.111111 0 0 0 1 0"
|
||||
id="feColorMatrix12238" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB"
|
||||
inkscape:label="Lightness-Contrast"
|
||||
id="filter12244"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1"
|
||||
height="1">
|
||||
<feColorMatrix
|
||||
values="1.22222 0 0 -0.948854 -0.111111 0 1.22222 0 -0.948854 -0.111111 0 0 1.22222 -0.948854 -0.111111 0 0 0 1 0"
|
||||
id="feColorMatrix12242" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-93.574286,105.46376)">
|
||||
<g
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,-230.98129,296.30382)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g73">
|
||||
<path
|
||||
d="m 11006,11379 c -772,-89 -1436,-598 -1716,-1316 -30,-77 -90,-269 -90,-290 0,-2 925,-3 2055,-3 1130,0 2036.356,-5.2148 2036.356,-3.2148 10.002,72.6878 -56.701,311.3268 -184.636,554.2048 -145.623,238.944 -256.72,343.826 -389.72,485.01 -324,313 -735,510 -1185,568 -131,17 -403,20 -526,5 z"
|
||||
id="path11"
|
||||
style="opacity:1;fill:url(#linearGradient8677);fill-opacity:1;filter:url(#filter12232)"
|
||||
sodipodi:nodetypes="ccssccccc" />
|
||||
<path
|
||||
d="m 9480,9492 v -168 l 233,-28 c 127,-15 248,-30 267,-33 l 35,-5 2,-58 c 4,-132 99,-224 233,-224 112,0 205,70 230,173 14,59 3,56 150,36 58,-8 115,-15 128,-15 77,-1 -33,45 -621,258 -353,128 -645,232 -649,232 -5,0 -8,-76 -8,-168 z"
|
||||
id="path21"
|
||||
style="filter:url(#filter12236)" />
|
||||
<path
|
||||
d="m 12380,9432 c -344,-125 -634,-231 -644,-235 -14,-6 -16,-11 -8,-19 8,-8 46,-6 140,6 71,9 134,16 140,16 5,0 13,-17 17,-37 35,-189 287,-257 410,-111 40,47 55,89 55,151 v 54 l 38,6 c 20,3 142,18 270,33 l 232,28 v 168 c 0,128 -3,168 -12,167 -7,0 -294,-102 -638,-227 z"
|
||||
id="path23"
|
||||
style="filter:url(#filter12240)" />
|
||||
<path
|
||||
d="m 9231,8748 c 11,-40 38,-118 60,-173 224,-574 702,-1027 1289,-1219 233,-76 423,-106 675,-106 252,0 442,30 674,106 617,202 1116,696 1321,1309 22,65 40,127 40,137 0,17 -84,18 -2039,18 H 9211 Z"
|
||||
id="path25"
|
||||
style="opacity:1;fill:url(#linearGradient9462);fill-opacity:1;filter:url(#filter12244)" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
100
media/vdoninja.svg
Normal file
100
media/vdoninja.svg
Normal file
@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="452.3317mm"
|
||||
height="234.08347mm"
|
||||
viewBox="0 0 452.3317 234.08347"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
sodipodi:docname="vdoninja.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="0.22645918"
|
||||
inkscape:cx="-1026.6751"
|
||||
inkscape:cy="-390.79891"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1361"
|
||||
inkscape:window-x="4791"
|
||||
inkscape:window-y="891"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g73" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(180.53406,105.46376)">
|
||||
<g
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,-230.98129,296.30382)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g73">
|
||||
<path
|
||||
d="m 11006,11379 c -772,-89 -1436,-598 -1716,-1316 -30,-77 -90,-269 -90,-290 0,-2 925,-3 2055,-3 1130,0 2055,1 2055,3 0,2 -7,27 -16,56 -8,29 -13,55 -11,58 3,2 27,-7 54,-20 72,-36 227,-92 323,-117 154,-39 243,-52 419,-57 l 173,-6 -6,24 c -17,61 -100,210 -149,270 -63,76 -118,123 -201,173 -50,30 -85,44 -204,82 -9,2 8,23 42,55 112,102 251,289 326,438 25,50 29,66 18,72 -25,16 -124,24 -273,23 -119,-1 -166,-6 -229,-23 -215,-58 -377,-189 -468,-379 l -30,-64 -50,79 c -80,124 -178,241 -311,369 -324,313 -735,510 -1185,568 -131,17 -403,20 -526,5 z"
|
||||
id="path11" />
|
||||
<path
|
||||
d="m 1430,11147 c 0,-12 69,-369 71,-371 32,-29 1744,-894 1752,-886 3,3 -12,271 -34,595 -21,325 -38,607 -39,628 v 37 h -875 c -481,0 -875,-1 -875,-3 z"
|
||||
id="path13" />
|
||||
<path
|
||||
d="m 3526,11138 c -9,-31 -76,-1342 -69,-1348 19,-16 830,-389 1162,-534 84,-37 157,-64 161,-59 7,7 351,1912 350,1941 0,9 -167,12 -800,12 -632,0 -801,-3 -804,-12 z"
|
||||
id="path15" />
|
||||
<path
|
||||
d="m 5342,10048 3,-1102 195,-78 c 1100,-443 2084,-742 2760,-840 l 162,-23 78,82 c 280,295 420,729 420,1303 0,606 -132,1023 -415,1305 -221,222 -527,363 -915,420 -183,28 -452,34 -1383,35 h -907 z m 1936,-422 c 18,-9 42,-31 52,-49 19,-30 20,-52 20,-370 0,-379 0,-376 -70,-416 -30,-17 -55,-21 -124,-21 h -86 v 441 441 l 88,-4 c 56,-3 99,-11 120,-22 z"
|
||||
id="path17" />
|
||||
<path
|
||||
d="m 1680,10553 c 0,-5 123,-669 273,-1478 l 273,-1470 1206,-3 1206,-2 15,82 c 78,423 200,1118 196,1121 -2,2 -191,96 -419,210 -228,113 -513,258 -634,322 -120,64 -220,115 -222,113 -4,-5 -24,-283 -24,-340 v -38 h -50 c -33,0 -50,4 -50,13 0,6 -7,109 -15,227 -8,118 -15,218 -15,222 0,3 -39,28 -87,54 -322,175 -987,566 -1417,833 -125,78 -229,141 -231,141 -3,0 -5,-3 -5,-7 z"
|
||||
id="path19" />
|
||||
<path
|
||||
d="m 9480,9492 v -168 l 233,-28 c 127,-15 248,-30 267,-33 l 35,-5 2,-58 c 4,-132 99,-224 233,-224 112,0 205,70 230,173 14,59 3,56 150,36 58,-8 115,-15 128,-15 77,-1 -33,45 -621,258 -353,128 -645,232 -649,232 -5,0 -8,-76 -8,-168 z"
|
||||
id="path21" />
|
||||
<path
|
||||
d="m 12380,9432 c -344,-125 -634,-231 -644,-235 -14,-6 -16,-11 -8,-19 8,-8 46,-6 140,6 71,9 134,16 140,16 5,0 13,-17 17,-37 35,-189 287,-257 410,-111 40,47 55,89 55,151 v 54 l 38,6 c 20,3 142,18 270,33 l 232,28 v 168 c 0,128 -3,168 -12,167 -7,0 -294,-102 -638,-227 z"
|
||||
id="path23" />
|
||||
<path
|
||||
d="m 9231,8748 c 11,-40 38,-118 60,-173 224,-574 702,-1027 1289,-1219 233,-76 423,-106 675,-106 252,0 442,30 674,106 617,202 1116,696 1321,1309 22,65 40,127 40,137 0,17 -84,18 -2039,18 H 9211 Z"
|
||||
id="path25" />
|
||||
<path
|
||||
d="m 5480,8060 v -461 l 1058,4 c 890,4 1071,7 1147,20 163,27 225,40 225,47 0,3 -24,12 -52,19 -694,175 -1479,448 -2340,815 l -38,16 z"
|
||||
id="path27" />
|
||||
<path
|
||||
d="m 2416,6875 c -15,-15 -16,-106 -16,-1040 0,-1002 0,-1025 19,-1035 12,-6 107,-10 238,-10 174,0 223,3 239,14 18,14 19,36 22,821 l 2,807 228,-4 c 265,-5 304,-14 395,-98 64,-58 100,-122 129,-227 21,-75 22,-100 28,-681 5,-583 6,-604 24,-618 16,-11 66,-14 241,-14 202,0 223,2 238,18 15,17 17,72 17,593 0,355 -4,608 -11,664 -47,387 -227,652 -514,760 -151,57 -158,58 -731,62 -482,4 -533,3 -548,-12 z"
|
||||
id="path29"
|
||||
style="fill:#fe003b;fill-opacity:1" />
|
||||
<path
|
||||
d="m 5131,6874 c -14,-14 -16,-121 -16,-1033 0,-973 1,-1019 18,-1034 16,-15 48,-17 244,-17 205,0 226,2 241,18 16,17 17,103 17,1035 0,910 -2,1017 -16,1031 -13,14 -50,16 -244,16 -194,0 -231,-2 -244,-16 z"
|
||||
id="path31"
|
||||
style="fill:#fe003b;fill-opacity:1" />
|
||||
<path
|
||||
d="m 6511,6868 c -14,-20 -16,-123 -16,-1030 0,-995 0,-1008 20,-1028 19,-19 33,-20 243,-20 204,0 225,2 240,18 16,17 17,88 17,820 v 802 h 193 c 285,0 355,-17 449,-111 57,-57 92,-124 120,-231 21,-80 22,-108 25,-673 4,-521 6,-592 20,-607 14,-16 39,-18 240,-18 212,0 224,1 244,21 20,20 20,24 16,627 -5,630 -6,658 -51,828 -51,195 -169,377 -308,472 -75,51 -168,93 -267,120 l -96,26 -536,4 -537,3 z"
|
||||
id="path33"
|
||||
style="fill:#fe003b;fill-opacity:1" />
|
||||
<path
|
||||
d="m 9993,6879 c -17,-9 -18,-51 -18,-657 0,-394 -4,-672 -10,-712 -21,-131 -87,-218 -199,-262 -46,-18 -76,-22 -171,-22 -129,0 -180,15 -280,79 -30,19 -62,35 -72,35 -18,0 -220,-164 -315,-256 -29,-27 -53,-59 -53,-69 0,-59 209,-186 370,-225 203,-49 503,-49 695,0 276,70 452,247 527,533 21,80 22,100 25,801 4,640 2,721 -12,742 l -15,24 h -228 c -135,0 -234,-5 -244,-11 z"
|
||||
id="path35"
|
||||
style="fill:#fe003b;fill-opacity:1" />
|
||||
<path
|
||||
d="m 12020,6875 c -375,-59 -614,-251 -726,-580 -76,-224 -89,-370 -89,-980 0,-435 2,-495 16,-509 13,-14 49,-16 240,-16 211,0 225,1 244,20 18,18 20,33 20,190 v 170 h 389 390 l 3,-176 c 3,-160 5,-177 22,-190 30,-22 442,-20 474,2 l 22,15 v 1019 c 0,913 -2,1020 -16,1034 -14,14 -69,16 -462,15 -309,-1 -472,-5 -527,-14 z m 485,-840 v -395 h -390 -390 v 73 c 0,95 18,234 41,325 47,183 142,300 290,356 67,26 135,33 302,35 l 147,1 z"
|
||||
id="path37"
|
||||
style="fill:#fe003b;fill-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.4 KiB |
@ -1,5 +1,6 @@
|
||||
body{
|
||||
zoom: 75%;
|
||||
background-color: #1F1E1F;
|
||||
}
|
||||
.hidden{
|
||||
display:unset!important;
|
||||
@ -71,9 +72,6 @@ span[data-action-type='sceneCluster1']{
|
||||
#header{
|
||||
display:none!important;
|
||||
}
|
||||
body {
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
button[class="pull-right"]{
|
||||
display:none! important;
|
||||
|
||||
7
serviceWorker.js
Normal file
7
serviceWorker.js
Normal file
@ -0,0 +1,7 @@
|
||||
self.addEventListener("fetch", fetchEvent => {
|
||||
fetchEvent.respondWith(
|
||||
caches.match(fetchEvent.request).then(res => {
|
||||
return res || fetch(fetchEvent.request)
|
||||
})
|
||||
)
|
||||
})
|
||||
@ -182,7 +182,7 @@
|
||||
streamID = urlParams.get("sid");
|
||||
}
|
||||
|
||||
document.getElementById("remote").innerHTML = "<a style='color:#CCC' href='./monitor?sid="+streamID+"'>Remote Monitoring Link</a><br />";
|
||||
document.getElementById("remote").innerHTML = "<a style='color:#CCC' target='_blank' href='./monitor?sid="+streamID+"'>Remote Monitoring Link</a><br />";
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("span");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user