add devl0rd base electron UI

This commit is contained in:
devl0rd 2020-04-15 18:15:44 -06:00
parent 32d9285081
commit 6d62e2f871
25 changed files with 1495 additions and 0 deletions

1
SkyNX-Streamer/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
node_modules

View file

@ -0,0 +1,21 @@
//Authour: Dustin Harris
//GitHub: https://github.com/DevL0rd
var fs = require('fs');
var getDirName = require('path').dirname;
function load(path) {
var contents = fs.readFileSync(path).toString('utf-8');
return JSON.parse(contents)
}
function save(path, obj) {
var contents = JSON.stringify(obj, null, "\t")
fs.mkdir(getDirName(path), { recursive: true }, function (err) {
if (err) throw err;
fs.writeFileSync(path, contents, function (err) {
if (err) throw err;
});
});
}
exports.load = load;
exports.save = save;

View file

@ -0,0 +1,37 @@
//Authour: Dustin Harris
//GitHub: https://github.com/DevL0rd
var reset = "\x1b[0m";
var style = {
bright: "\x1b[1m",
dim: "\x1b[2m",
underscore: "\x1b[4m",
blink: "\x1b[5m",
reverse: "\x1b[7m",
hidden: "\x1b[8m"
}
var fg = {
black: "\x1b[30m",
red: "\x1b[31m",
green: "\x1b[32m",
yellow: "\x1b[33m",
blue: "\x1b[34m",
magenta: "\x1b[35m",
cyan: "\x1b[36m",
white: "\x1b[37m"
}
var bg = {
black: "\x1b[40m",
red: "\x1b[41m",
green: "\x1b[42m",
yellow: "\x1b[43m",
blue: "\x1b[44m",
magenta: "\x1b[45m",
cyan: "\x1b[46m",
white: "\x1b[47m"
}
exports.bg = bg;
exports.fg = fg;
exports.style = style;
exports.reset = reset;

View file

@ -0,0 +1,13 @@
//Authour: Dustin Harris
//GitHub: https://github.com/DevL0rd
var cc = require('./conColors.js');
console.log(cc.style.bright + cc.fg.blue)
console.log(" ____ ___ __ ");
console.log("/\\ _`\\ /\\_ \\ /\\ \\ ");
console.log("\\ \\ \\/\\ \\ __ __ __\\//\\ \\ ___ _ __ \\_\\ \\ ");
console.log(" \\ \\ \\ \\ \\ /'__`\\/\\ \\/\\ \\ \\ \\ \\ / __`\\/\\`'__\\/'_` \\ ");
console.log(" \\ \\ \\_\\ \\/\\ __/\\ \\ \\_/ | \\_\\ \\_/\\ \\_\\ \\ \\ \\//\\ \\_\\ \\ ");
console.log(" \\ \\____/\\ \\____\\\\ \\___/ /\\____\\ \\____/\\ \\_\\\\ \\___,_\\ ");
console.log(" \\/___/ \\/____/ \\/__/ \\/____/\\/___/ \\/_/ \\/__,_ / ");
console.log(" ");
console.log(cc.reset)

View file

@ -0,0 +1,2 @@
npm install
pause

View file

@ -0,0 +1,4 @@
@echo off
cls
electron-packager . Base-Electron-App --platform=win32 --arch=x64
pause

4
SkyNX-Streamer/Start.bat Normal file
View file

@ -0,0 +1,4 @@
@echo off
cls
npm start
pause

View file

@ -0,0 +1,227 @@
/* Authour: Dustin Harris */
/* GitHub: https://github.com/DevL0rd */
.is-hidden {
visibility: hidden;
}
@-webkit-keyframes bounceLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-100px);
transform: translateX(-100px);
}
60% {
opacity: 1;
-webkit-transform: translateX(20px);
transform: translateX(20px);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes bounceLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-100px);
transform: translateX(-100px);
}
60% {
opacity: 1;
-webkit-transform: translateX(20px);
transform: translateX(20px);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes growInFromCenter {
0% {
opacity: 0;
-ms-transform: scale(0.95, 0.95); /* IE 9 */
-webkit-transform: scale(0.95, 0.95); /* Safari */
transform: scale(0.95, 0.95);
}
60% {
opacity: 1;
-ms-transform: scale(1.01, 1.01);
-webkit-transform: scale(1.01, 1.01);
transform: scale(1.01, 1.01);
}
100% {
-ms-transform: scale(1, 1);
-webkit-transform: scale(1, 1);
transform: scale(1, 1);
}
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes slideOutRight {
0% {
-webkit-transform: translateX(0px);
transform: translateX(0px);
}
100% {
opacity: 0;
-webkit-transform: translateX(100px);
transform: translateX(100px);
}
}
.slideOutRight {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: slideOutRight 0.6s; /* Safari, Chrome and Opera > 12.1 */
-moz-animation: slideOutRight 0.6s; /* Firefox < 16 */
-ms-animation: slideOutRight 0.6s; /* Internet Explorer */
-o-animation: slideOutRight 0.6s; /* Opera < 12.1 */
animation: slideOutRight 0.6s;
}
.fadeIn {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: fadeIn 1s; /* Safari, Chrome and Opera > 12.1 */
-moz-animation: fadeIn 1s; /* Firefox < 16 */
-ms-animation: fadeIn 1s; /* Internet Explorer */
-o-animation: fadeIn 1s; /* Opera < 12.1 */
animation: fadeIn 1s;
}
.growInFromCenter {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: growInFromCenter 0.7s; /* Safari, Chrome and Opera > 12.1 */
-moz-animation: growInFromCenter 0.7s; /* Firefox < 16 */
-ms-animation: growInFromCenter 0.7s; /* Internet Explorer */
-o-animation: growInFromCenter 0.7s; /* Opera < 12.1 */
animation: growInFromCenter 0.7s;
}
.growInFromCenterOnShow_anim {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: growInFromCenter 0.7s; /* Safari, Chrome and Opera > 12.1 */
-moz-animation: growInFromCenter 0.7s; /* Firefox < 16 */
-ms-animation: growInFromCenter 0.7s; /* Internet Explorer */
-o-animation: growInFromCenter 0.7s; /* Opera < 12.1 */
animation: growInFromCenter 0.7s;
}
.fadeInOnShow_anim {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: fadeIn 1s; /* Safari, Chrome and Opera > 12.1 */
-moz-animation: fadeIn 1s; /* Firefox < 16 */
-ms-animation: fadeIn 1s; /* Internet Explorer */
-o-animation: fadeIn 1s; /* Opera < 12.1 */
animation: fadeIn 1s;
}
.bounceLeft_anim {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
visibility: visible;
-webkit-animation: bounceLeft 0.6s;
animation: bounceLeft 0.6s;
}
.rainbowFontColor {
color : red;
}
.rainbowBackgroundColor {
background : linear-gradient(to right, rgba(255,00,00,0.7) 0%,rgba(255,00,00,0.7) 100%);
}
.rainbowBackgroundColor2 {
background : linear-gradient(to right, rgba(255,00,00,0.7) 0%,rgba(255,00,00,0.7) 100%);
}
/* The switch - the box around the slider */
.switch {
position: relative;
display: inline-block;
width: 35px;
height: 24px;
margin-top: 7px;
}
/* Hide default HTML checkbox */
.switch input {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 14px;
width: 14px;
left: 5px;
bottom: 5px;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: linear-gradient(to right, rgba(255,00,00,0.7) 0%,rgba(255,00,00,0.7) 100%);
}
input:checked + .slider:before {
-webkit-transform: translateX(12px);
-ms-transform: translateX(12px);
transform: translateX(12px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}

7
SkyNX-Streamer/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,345 @@
/*!
* Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.fa-1x {
font-size: 1em; }
.fa-2x {
font-size: 2em; }
.fa-3x {
font-size: 3em; }
.fa-4x {
font-size: 4em; }
.fa-5x {
font-size: 5em; }
.fa-6x {
font-size: 6em; }
.fa-7x {
font-size: 7em; }
.fa-8x {
font-size: 8em; }
.fa-9x {
font-size: 9em; }
.fa-10x {
font-size: 10em; }
.fa-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }

View file

@ -0,0 +1,244 @@
/* Authour: Dustin Harris */
/* GitHub: https://github.com/DevL0rd */
html {
background: transparent;
height: 100%;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
overflow: hidden;
}
body {
background: transparent;
height: 100%;
padding: 0px;
margin: 0px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
overflow: hidden;
}
textarea:focus, input:focus{
outline: none;
}
#content {
background: linear-gradient(to bottom, rgba(30,30,30,0.9) 0%,rgba(51,51,51,0.8) 67%,rgba(51,51,51,0.8) 100%);
height: calc(100% - 57px);
overflow: auto;
width: 100%;
}
#title-bar {
-webkit-app-region: drag;
height: 32px;
background-color: rgba(255, 0, 0, 0.8);
padding: 0px;
margin: 0px;
box-shadow: 0px 4px 14px 0px rgba(0,0,0,0.9);
}
#title {
position: fixed;
top: 7px;
left: 6px;
color: white;
font-size: 12px;
font-weight:bold;
}
#title-bar-btns {
-webkit-app-region: no-drag;
position: fixed;
top: 0px;
right: 0px;
height: 32px;
}
.title-bar-btns:focus {
outline: none;
}
.title-bar-btns:hover {
background-color: rgba(255, 255, 255, 0.1);
transition: 0.3s;
}
#close-btn:hover{
background-color: rgba(221, 34, 50, 0.9);
transition: 0.3s;
}
.title-bar-btns{
background: transparent;
font-size: 12px;
font-weight:bold;
width: 46px;
height: 32px;
border: none;
margin: 0px;
color: white;
}
.title-bar-tools:focus {
outline: none;
}
.title-bar-tools:hover {
background-color: rgba(255, 255, 255, 0.1);
transition: 0.3s;
}
.title-bar-tools{
background: transparent;
font-size: 12px;
font-weight:bold;
width: 26px;
height: 32px;
border: none;
margin: 0px;
color: white;
}
#statusbar {
height: 25px;
background: rgba(26, 26, 26, 0.8)
}
#statusbartext{
position: absolute;
left: 6px;
bottom: 5px;
font-size: 10px;
color: white;
font-weight:bold;
margin: 0px;
}
.collapsed {
display: none;
}
#loadingCover {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
text-align: center;
background: rgb(25, 25, 25);
background: -moz-linear-gradient(top, rgba(25, 25, 25, 1) 1%, rgba(35, 35, 35, 1) 31%, rgba(35, 35, 35, 1) 70%, rgba(25, 25, 25, 1) 100%);
background: -webkit-linear-gradient(top, rgba(25, 25, 25, 1) 1%, rgba(35, 35, 35, 1) 31%, rgba(35, 35, 35, 1) 70%, rgba(25, 25, 25, 1) 100%);
background: linear-gradient(to bottom, rgba(25, 25, 25, 1) 1%, rgba(35, 35, 35, 1) 31%, rgba(35, 35, 35, 1) 70%, rgba(25, 25, 25, 1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#191919', endColorstr='#191919', GradientType=0);
display: flex;
justify-content: center;
}
.centerHorz {
display: flex;
justify-content: center;
}
.centerVert {
display: flex;
flex-direction: column;
justify-content: center;
}
.loadingGif {
margin: 0 auto;
width: 200px;
height: 150px;
}
/* scroll */
.customScroll::-webkit-scrollbar {
width: 12px;
background-color: rgba(0, 0, 0, 0.8);
}
.customScroll::-webkit-scrollbar-thumb {
width: 8px;
background-color: rgb(58, 58, 58);
border-radius: 50px;
}
/* bootstrap fix */
.row {
margin-right: 0px;
margin-left: 0px;
}
.dropdown {
-webkit-app-region: no-drag;
}
.dropdown-toggle {
font-size: 10px;
}
#navBar{
position: absolute;
top: 32px;
left: 0px;
height: calc(100% - 57px);
width: 50px;
background: rgba(39, 39, 39, 0.8);
overflow-y:auto;
font-size: 10px;
box-shadow: 4px 0px 14px 0px rgba(0,0,0,0.7);
}
.navBar-btns{
background: transparent;
font-size: 25px;
font-weight:bold;
height: 50px;
width: 100%;
border: none;
margin: 0px;
color: white;
}
.navBar-btns:focus {
outline: none;
}
.navBar-btns:hover {
background-color: rgba(255, 255, 255, 0.1);
transition: 0.3s;
}
.contentArea{
position: absolute;
top: 32px;
left: 50px;
height: calc(100% - 57px);
width: calc(100% - 50px);
background: rgba(0,0,0,0.5);
overflow: none;
}
#settingsSearch {
background: black;
border: none;
border-radius: 25px;
color: white;
padding-left: 8px;
height: 40px;
width: calc(100% - 20px);
margin-top: 10px;
margin-left: 10px;
margin-bottom: 10px;
};
.dark-group-text {
background-color: rgba(40,40,0.75);
color: white;
}
.validInput {
border: 3px solid green;
}
.invalidInput {
border: 3px solid tomato;
}
.selected{
background: rgba(255, 255, 255, 0.1);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

106
SkyNX-Streamer/index.html Normal file
View file

@ -0,0 +1,106 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DevL0rd's Base Electron App</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/animations.css">
<link rel="stylesheet" href="css/fa-svg-with-js.css">
<link rel="stylesheet" href="css/windowStyle.css">
</head>
<body>
<nav id="title-bar" class="rainbowBackgroundColor">
<div id="title">DevL0rd's Base Electron App</div>
<div id="title-bar-btns">
<button id="rld-btn" class="title-bar-tools" style="display: none;"><i class="fas fa-sync-alt"></i></button>
<button id="dev-btn" class="title-bar-tools" style="display: none;"><i class="fab fa-dev"></i></button>
<button id="min-btn" class="title-bar-btns"><i class="fas fa-window-minimize"></i></button>
<button id="max-btn" class="title-bar-btns"><i class="fas fa-window-maximize"></i></button>
<button id="close-btn" class="title-bar-btns"><i class="fas fa-window-close"></i></button>
</div>
</nav>
<div id="content" class="customScroll rainbowScrollColor">
<div id="navBar" class="customScroll rainbowScrollColor">
<button id="main-btn" class="navBar-btns" data-toggle="tooltip" data-placement="right" data-html="true"
title="Plugins"><i class="fas fa-desktop"></i></button>
<button id="settings-btn" class="navBar-btns" data-toggle="tooltip" data-placement="right" data-html="true"
title="Settings"><i class="fas fa-cogs"></i></button>
</div>
<div id="main" class="contentArea">
</div>
<div id="settings" class="contentArea" style="display: none;">
<input id="settingsSearch" type="text" placeholder="Search settings">
<h2>Settings</h2>
<div class="row">
<div class="col-md-4 settingCol">
<div class="input-group centerHorz flex-nowrap">
<div class="input-group-prepend">
<span class="input-group-text">Debug</span>
</div>
<span class="input-group-append input-group-text">
<label class="switch">
<input id="debugEnabled" type="checkbox">
<span class="slider round"></span>
</label>
</span>
</div>
</div>
<div class="col-md-4 settingCol">
<div class="input-group centerHorz flex-nowrap">
<div class="input-group-prepend">
<span class="input-group-text">Dev Tools On Start</span>
</div>
<span class="input-group-append input-group-text">
<label class="switch">
<input id="devToolsOnStartup" type="checkbox">
<span class="slider round"></span>
</label>
</span>
</div>
</div>
<div class="col-md-4 settingCol">
<div class="input-group centerHorz flex-nowrap">
<div class="input-group-prepend">
<span class="input-group-text dark-group-text">Rainbow Accents</span>
</div>
<span class="input-group-append input-group-text dark-group-text">
<label class="switch">
<input id="rainbowEnabled" type="checkbox">
<span class="slider round"></span>
</label>
</span>
</div>
</div>
</div>
</div>
</div>
<div id="statusbar" class="rainbowBackgroundColor2">
<span id="statusbartext">Ready!</span>
</div>
<div id="loadingCover">
<div class="centerVert">
<img src="img/loading.gif" class="loadingGif">
<h1 style="color:rgb(206, 206, 206); font-size: 16px;">
Application loading...
</h1>
</div>
</div>
<script src="js/fontawesome-all.min.js"></script>
<script>
let $ = require('jquery');
require('popper.js');
require('bootstrap');
$(function () {
$('[data-toggle="tooltip"]').tooltip({ boundary: 'window' })
})
</script>
<script src="./js/animations.js"></script>
<script src="./js/window.js"></script>
<script src="./js/main.js"></script>
<script src="./js/settings.js"></script>
</body>
</html>

View file

@ -0,0 +1,207 @@
//Authour: Dustin Harris
//GitHub: https://github.com/DevL0rd
var offset = 0;
//IE support
if (!String.prototype.includes) {
String.prototype.includes = function (search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}
function getAnimations(styleSheetName) {
var anims = [];
for (i in document.styleSheets) {
var styleSheet = document.styleSheets[i];
var filePath = styleSheet.href;
if (!filePath) continue;
var filePathSplit = filePath.split("/");
var fileName = filePathSplit[filePathSplit.length - 1].split(".")[0];
if (fileName != styleSheetName) continue;
var rules = styleSheet.rules || styleSheet.cssRules;
for (rI in rules) {
var rule = rules[rI];
if (!rule.selectorText) continue;
if (!rule.selectorText.includes("_anim")) continue;
var animStr = rule.selectorText.split(".").pop().split("_anim").shift();
anims.push(animStr);
}
}
return anims;
}
var animations = getAnimations("animations");
function htmlCollectionToArray(HTMLCollectionObj) {
return Array.prototype.slice.call(HTMLCollectionObj);
}
var animatedElements = [];
function getAnimatedElements() {
var animatedElementsList = [];
animations.forEach(function (anim) {
var els = document.getElementsByClassName(anim);
animatedElementsList = animatedElementsList.concat(htmlCollectionToArray(els));
});
return animatedElementsList;
}
function refreshAnimatedElements() {
animatedElements = [];
animatedElements = getAnimatedElements();
for (i in animatedElements) {
animatedElements[i].parentElement.addEventListener("scroll", function (event) {
if (!viewChanged) {
viewChanged = true;
(!window.requestAnimationFrame) ? setTimeout(updateElements, 250) : window.requestAnimationFrame(updateElements);
}
}, { passive: true });
}
}
function hideElement(el) {
el.classList.add("is-hidden");
for (i in animations) {
var anim = animations[i];
if (el.classList.contains(anim)) {
el.classList.remove(anim + "_anim");
break;
}
}
}
function showElement(el) {
for (i in animations) {
var anim = animations[i];
if (el.classList.contains(anim)) {
el.classList.add(anim + "_anim");
el.classList.remove("is-hidden");
break;
}
}
}
function hideElements() {
var currentParent
var parentBounds
animatedElements.forEach(function (el) {
var bounds = el.getBoundingClientRect();
if (el.parentElement != currentParent) {
currentParent = el.parentElement;
parentBounds = el.parentElement.getBoundingClientRect();
}
if (bounds.top > parentBounds.bottom || bounds.bottom < parentBounds.top) {
hideElement(el);
}
});
}
hideElements();
var viewChanged = false;
window.addEventListener("resize", function (event) {
if (!viewChanged) {
viewChanged = true;
(!window.requestAnimationFrame) ? setTimeout(updateElements, 250) : window.requestAnimationFrame(updateElements);
}
}, { passive: true });
function updateElements() {
var currentParent
var parentBounds
animatedElements.forEach(function (el) {
try {
var bounds = el.getBoundingClientRect();
if (el.parentElement != currentParent) {
currentParent = el.parentElement;
parentBounds = el.parentElement.getBoundingClientRect();
}
if (el.classList.contains("is-hidden") && bounds.top <= parentBounds.bottom - offset && bounds.bottom >= parentBounds.top + offset) {
showElement(el);
} else if (bounds.top > parentBounds.bottom || bounds.bottom < parentBounds.top) {
hideElement(el);
}
} catch (err) {
}
});
viewChanged = false;
};
var r = 255, g = 0, b = 0;
var r2 = 225, g2 = 30, b2 = 0;
var r3 = 205, g3 = 50, b3 = 0;
var r4 = 175, g4 = 80, b4 = 0;
var rainbowAccentInterval
function rainbowAccent(delay = 40) {
clearInterval(rainbowAccentInterval);
r = 255, g = 0, b = 0;
r2 = 225, g2 = 30, b2 = 0;
r3 = 205, g3 = 50, b3 = 0;
r4 = 175, g4 = 80, b4 = 0;
rainbowAccentInterval = setInterval(function () {
if (r > 0 && b == 0) {
r--;
g++;
}
if (g > 0 && r == 0) {
g--;
b++;
}
if (b > 0 && g == 0) {
r++;
b--;
}
if (r2 > 0 && b2 == 0) {
r2--;
g2++;
}
if (g2 > 0 && r2 == 0) {
g2--;
b2++;
}
if (b2 > 0 && g2 == 0) {
r2++;
b2--;
}
if (r3 > 0 && b3 == 0) {
r3--;
g3++;
}
if (g3 > 0 && r3 == 0) {
g3--;
b3++;
}
if (b3 > 0 && g3 == 0) {
r3++;
b3--;
}
if (r4 > 0 && b4 == 0) {
r4--;
g4++;
}
if (g4 > 0 && r4 == 0) {
g4--;
b4++;
}
if (b4 > 0 && g4 == 0) {
r4++;
b4--;
}
$(".rainbowFontColor").css("color", "rgb(" + r + "," + g + "," + b + ")");
$(".rainbowBackgroundColor").css("background", "linear-gradient(to right, rgba(" + r + "," + g + "," + b + ", 0.8) 0%, rgba(" + r2 + "," + g2 + "," + b2 + ", 0.8) 100%)");
$(".rainbowBackgroundColor2").css("background", "linear-gradient(to right, rgba(" + r3 + "," + g3 + "," + b3 + ", 0.8) 0%, rgba(" + r4 + "," + g4 + "," + b4 + ", 0.8) 100%)");
// $(".customScroll::-webkit-scrollbar-thumb").css("background", "rgba(" + r + "," + g + "," + b + ", 0.8)");
$("input:checked + .slider").css("background", "linear-gradient(to right, rgba(" + r + "," + g + "," + b + ", 0.7) 0%, rgba(" + r2 + "," + g2 + "," + b2 + ", 0.7) 100%)");
$(":not(input:checked) + .slider").css("background", "rgba(0,0,0, 0.7)");
}, delay);
}
function setAccentColor(r, g, b, a) {
clearInterval(rainbowAccentInterval);
$(".rainbowFontColor").css("color", "rgb(" + r + "," + g + "," + b + ")");
$(".rainbowBackgroundColor").css("background", "rgba(" + r + "," + g + "," + b + ", " + a + ")");
$(".rainbowBackgroundColor2").css("background", "rgba(" + r + "," + g + "," + b + ", " + a + ")");
// $(".customScroll::-webkit-scrollbar-thumb").css("background", "rgba(" + r + "," + g + "," + b + ", 0.8)");
$("input:checked + .slider").css("background", "rgba(" + r + "," + g + "," + b + ", " + a + ")");
$(":not(input:checked) + .slider").css("background", "rgba(0,0,0, 0.7)");
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
SkyNX-Streamer/js/jquery-3.3.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,71 @@
var debug = true;
var clientSettings = {
"debug": true,
"accentColor": {
"r": 50,
"g": 50,
"b": 50,
"a": 0.9
},
"rainbowEnabled": false,
"devToolsOnStartup": false
};
var clientSettingsPath = "./settings.json";
if (fs.existsSync(clientSettingsPath)) {
loadClientSettings();
} else {
DB.save(clientSettingsPath, clientSettings)
}
var saveSettingsTO
function saveClientSettingsTimeout() {
clearTimeout(saveSettingsTO);
saveSettingsTO = setTimeout(saveClientSettings, 500);
}
function saveClientSettings() {
verifySettings();
DB.save(clientSettingsPath, clientSettings);
}
function verifySettings() {
}
function loadClientSettings() {
clientSettings = DB.load(clientSettingsPath)
$("#debugEnabled").prop("checked", clientSettings.debug);
$("#rainbowEnabled").prop("checked", clientSettings.rainbowEnabled);
$("#devToolsOnStartup").prop("checked", clientSettings.devToolsOnStartup);
applyClientSettings();
if (clientSettings.devToolsOnStartup) {
openDevTools();
}
}
function applyClientSettings() {
if (clientSettings.debug) {
$("#dev-btn").fadeIn(400);
$("#rld-btn").fadeIn(400);
} else {
$("#dev-btn").fadeOut(400);
$("#rld-btn").fadeOut(400);
}
if (clientSettings.rainbowEnabled) {
rainbowAccent();
} else {
setAccentColor(clientSettings.accentColor.r, clientSettings.accentColor.g, clientSettings.accentColor.b, clientSettings.accentColor.a);
}
}
$("#rainbowEnabled").on('change', function () {
clientSettings.rainbowEnabled = $("#rainbowEnabled").prop("checked");
saveClientSettings();
applyClientSettings();
});
$("#debugEnabled").on('change', function () {
clientSettings.debug = $("#debugEnabled").prop("checked");
saveClientSettings();
applyClientSettings();
});
$("#devToolsOnStartup").on('change', function () {
clientSettings.devToolsOnStartup = $("#devToolsOnStartup").prop("checked");
saveClientSettings();
applyClientSettings();
});

View file

@ -0,0 +1,62 @@
//Authour: Dustin Harris
//GitHub: https://github.com/DevL0rd
const remote = require('electron').remote;
const dialog = remote.dialog;
const fs = require('fs')
var DB = require('./Devlord_modules/DB.js');
document.getElementById("min-btn").addEventListener("click", function (e) {
var window = remote.getCurrentWindow();
window.minimize();
});
var isMaximized = false;
document.getElementById("max-btn").addEventListener("click", function (e) {
var window = remote.getCurrentWindow();
// !window.isMaximized()
if (!isMaximized) {
isMaximized = true;
window.maximize();
} else {
isMaximized = false;
window.unmaximize();
}
});
document.getElementById("close-btn").addEventListener("click", function (e) {
var window = remote.getCurrentWindow();
window.close();
});
document.getElementById("dev-btn").addEventListener("click", function (e) {
openDevTools();
});
function openDevTools() {
var window = remote.getCurrentWindow();
window.webContents.openDevTools();
}
document.getElementById("rld-btn").addEventListener("click", function (e) {
location.reload();
});
window.addEventListener('load', function () {
$("#loadingCover").fadeOut(1000);
})
//PROJECT CODE STARTS HERE
var ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.on('exampleMessage', function (event, data) {
});
$("#main-btn").click(function () {
$(".contentArea").hide();
$("#plugins").fadeIn(400);
$('#main-btn').tooltip('hide');
});
$("#settings-btn").click(function () {
$(".contentArea").hide();
$("#settings").fadeIn(400);
$('#settings-btn').tooltip('hide');
});

92
SkyNX-Streamer/main.js Normal file
View file

@ -0,0 +1,92 @@
const DB = require('./Devlord_modules/DB.js');
const windowStateKeeper = require('electron-window-state');
const fs = require('fs');
// Modules to control application life and create native browser window
const { app, BrowserWindow, ipcMain } = require('electron')
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow
var args = process.argv.slice(5);
var usingUI = true;
var mainServerIp = false;
if (args.length > 1) {
var workerParams = {};
if (args.includes("worker")) {
mainServerIp = args[args.indexOf("worker") + 1];
if (mainServerIp) {
workerParams = { mainServerIp: mainServerIp, password: args[args.indexOf("worker") + 2], isWorker: true };
}
}
if (args.includes("noui") || args.includes("worker")) {
if (mws.init(args[0], workerParams)) {
usingUI = false;
}
}
}
function createWindow() {
// Load the previous state with fallback to defaults
let mainWindowState = windowStateKeeper({
defaultWidth: 720,
defaultHeight: 500
});
// Create the browser window.
mainWindow = new BrowserWindow({
x: mainWindowState.x,
y: mainWindowState.y,
width: mainWindowState.width,
height: mainWindowState.height,
minWidth: 720,
minHeight: 500,
webPreferences: {
nodeIntegration: true
},
transparent: true,
resizable: true,
frame: false
})
mainWindowState.manage(mainWindow);
mainWindow.setMenu(null);
// and load the index.html of the app.
mainWindow.loadFile('index.html');
//fix transparency bug in windows 10
mainWindow.reload();
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
});
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', function () { if (usingUI) setTimeout(createWindow, 300); });
// Quit when all windows are closed.
app.on('window-all-closed', function () {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') app.quit()
})
app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) createWindow()
})
app.on('browser-window-created', function (e, window) {
window.setMenu(null);
});
var htmlLoggingSender
ipcMain.on('exampleMessage', (event, arg) => {
})

View file

@ -0,0 +1,22 @@
{
"name": "Base-Electron-App",
"version": "1.0.0",
"description": "The bestest Electron window.",
"main": "main.js",
"scripts": {
"start": "electron --enable-transparent-visuals --no-sandbox --disable-web-security ."
},
"repository": "https://github.com/delv0rd/modular-web-server",
"keywords": [],
"author": "Dustin Harris",
"license": "",
"dependencies": {
"electron": "latest",
"electron-window-state": "latest",
"formidable": "latest",
"readdirp": "latest",
"bootstrap": "latest",
"jquery": "latest",
"popper.js": "latest"
}
}

View file

@ -0,0 +1,11 @@
{
"debug": true,
"accentColor": {
"r": 50,
"g": 50,
"b": 50,
"a": 0.9
},
"rainbowEnabled": false,
"devToolsOnStartup": false
}