This commit is contained in:
David Ralph 2019-07-01 19:46:15 +01:00
parent a513a9762a
commit d22f7ceb71
37 changed files with 770 additions and 225 deletions

59
.eslintrc Normal file
View File

@ -0,0 +1,59 @@
{
"env": {
"es6": true,
"amd": true,
"node": true,
"browser": true,
"commonjs": true
},
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
"forOf": true,
"spread": true,
"modules": true,
"classes": true,
"generators": true,
"restParams": true,
"regexUFlag": true,
"regexYFlag": true,
"globalReturn": true,
"destructuring": true,
"impliedStrict": true,
"blockBindings": true,
"defaultParams": true,
"octalLiterals": true,
"arrowFunctions": true,
"binaryLiterals": true,
"templateStrings": true,
"superInFunctions": true,
"unicodeCodePointEscapes": true,
"objectLiteralShorthandMethods": true,
"objectLiteralComputedProperties": true,
"objectLiteralDuplicateProperties": true,
"objectLiteralShorthandProperties": true
}
},
"plugins": [],
"rules": {
"semi": "error",
"indent": [ 0, 2 ],
"strict": "off",
"eqeqeq": "error",
"no-var": "warn",
"no-undef": "warn",
"comma-dangle": "warn",
"no-dupe-args": "warn",
"no-dupe-keys": "warn",
"require-await": "warn",
"no-global-assign": "warn",
"no-duplicate-imports": "error",
"no-dupe-class-members": "error"
},
"globals": {
"_config": false,
"console": false
}
}

2
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,2 @@
patreon: ohlookitsderpy
ko_fi: ohlookitsderpy

View File

@ -1,18 +1,19 @@
<img src='assets/logo/logo_horizontal.png'>
# Mue
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/fba7ad7fc6e14fe0bc2a8d53dbf0bb41)](https://www.codacy.com/app/ohlookitsderpy/Mue?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=ohlookitsderpy/Mue&amp;utm_campaign=Badge_Grade)
[![Discord Badge](https://discordapp.com/api/guilds/336039472250748928/widget.png)](https://discord.gg/HJmmmTB)
<a href='https://ko-fi.com/ohlookitsderpy' target='_blank'><img height='36' style='border:0px;height:36px;' src='assets/kofi.png' border='0' alt='Buy me a Coffee at ko-fi.com' /></a>
<a href='https://patreon.com/ohlookitsderpy' target='_blank'><img height='36' style='border:0px;height:36px;' src='assets/patreon.png' border='0' alt='Become a patron on patreon.com' /></a>
<a href='https://ko-fi.com/ohlookitsderpy' target='_blank'><img height='36' src='assets/kofi.png' alt='Buy me a coffee at ko-fi.com' /></a>
<a href='https://patreon.com/ohlookitsderpy' target='_blank'><img height='36' src='assets/patreon.png' alt='Become a patron on patreon.com' /></a>
Fast, open and free-to-use new tab page for most modern browsers
Fast, open and free-to-use new tab page for most modern browsers.
## Features
* Fast and free
* Supports multiple browsers
* Actively developed and opensource
* Multiple language support
* Settings menu for easy customisation
## Installation
### Chrome
@ -20,15 +21,17 @@ Fast, open and free-to-use new tab page for most modern browsers
Link: [Chrome Web Store](https://chrome.google.com/webstore/detail/mue/bngmbednanpcfochchhgbkookpiaiaid)
Development: Read the [Development](#development) section
Development: Read the [Development](#development) section.
### Firefox
<a href='https://addons.mozilla.org/firefox/addon/mue'><img src='assets/firefox.png' target='_blank'></a>
Link: [Firefox Add-ons](https://addons.mozilla.org/firefox/addon/mue)
Development: Read the [Development](#development) section
Development: Read the [Development](#development) section.
### Opera/Other
Development: Read the [Development](#development) section
Link: [GitHub Releases](https://github.com/ohlookitsderpy/Mue/releases)
Development: Read the [Development](#development) section.
### Development
<h5>Requirements</h5>
@ -41,12 +44,12 @@ Development: Read the [Development](#development) section
<ol>
<li> <code>git clone https://github.com/ohlookitsderpy/Mue</code> (If you don't have Git just go to <b>Clone or
download</b> and click <b>Download ZIP</b>)
<li>Open a terminal and run these commands: (in the Mue directory)
<li> Open a terminal and run these commands: (in the Mue directory)
<li> <code>yarn</code> (or <code>npm install</code>)
<li> <code>yarn run sass-watch</code> (or <code>npm run sass-watch</code>)
<li>Open another terminal and run this command: (in the Mue directory)
<li> Open another terminal and run this command: (in the Mue directory)
<li> <code>yarn run js-watch</code> (or <code>npm run js-watch</code>)
<li>Start developing! (See the sections below for how to set it up with your browser)
<li> Start developing! (See the sections below for how to set it up with your browser)
</ol>
<details>
<summary><b>Chrome</b> (Click to expand)</summary>
@ -92,13 +95,14 @@ Development: Read the [Development](#development) section
<img src='assets/screenshot.jpg'>
## Credits
[Turbomarshmello](https://github.com/TurboMarshmello) - Portions of original code, name idea.
[TurboMarshmello](https://github.com/TurboMarshmello) - Portions of original code, name idea
[Pexels](https://pexels.com) - Stock photos used
[Opera Forum](https://forums.opera.com/topic/25046/how-to-disable-completely-the-speed-dial/14) - Portions of code to add Opera support
[Animate.css](https://daneden.github.io/animate.css) - Portions of code used for animations
[Animate.css](https://daneden.github.io/animate.css) - Portions of code used to add animations
### Translations
[ohlookitsderpy](https://github.com/ohlookitsderpy) - English (Quotes and Messages)

BIN
assets/logo/icon_round.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
assets/logo/icon_square.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
assets/logo/logo_only.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -9,8 +9,9 @@
"js-watch": "webpack --progress --watch"
},
"devDependencies": {
"sass": "1.18.0",
"webpack": "4.29.6",
"webpack-cli": "3.3.0"
"eslint": "6.0.0",
"sass": "1.21.0",
"webpack": "4.35.0",
"webpack-cli": "3.3.4"
}
}

View File

@ -1,7 +1,7 @@
/*!
* animate.css -http://daneden.me/animate
* Version - 3.7.0
* Licensed under the MIT license - https://opensource.org/licenses/MIT
* Licensed under the MIT license - http://opensource.org/licenses/MIT
*
* Copyright (c) 2018 Daniel Eden
* Modified by ohlookitsderpy

View File

@ -1 +1 @@
.mountain{background-image:url("../img/1.jpeg")}.sunrise{background-image:url("../img/2.jpeg")}.butterfly{background-image:url("../img/3.jpeg")}.leaves{background-image:url("../img/4.jpeg")}.river{background-image:url("../img/5.jpeg")}.sea{background-image:url("../img/6.jpeg")}.space{background-image:url("../img/7.jpeg")}.ice{background-image:url("../img/8.jpeg")}.waterfall{background-image:url("../img/9.jpeg")}.lake{background-image:url("../img/10.jpeg")}.sunset{background-image:url("../img/11.jpeg")}.desert{background-image:url("../img/12.jpeg")}.canyon{background-image:url("../img/13.jpeg")}.rose{background-image:url("../img/14.jpeg")}.forest{background-image:url("../img/15.jpeg")}.cherry{background-image:url("../img/16.jpeg")}.clouds{background-image:url("../img/17.jpeg")}.winter{background-image:url("../img/18.jpeg")}.autumn{background-image:url("../img/19.jpeg")}.flowers{background-image:url("../img/20.jpeg")}.sunrise{background-image:url("../img/21.jpeg")}.rocks{background-image:url("../img/22.jpeg")}.trees{background-image:url("../img/23.jpeg")}.mountains{background-image:url("../img/24.jpeg")}.beach{background-image:url("../img/25.jpeg")}html,body{height:100%}body{display:flex;flex-direction:column;justify-content:space-around;align-items:center;margin:0;background-size:cover;background-position:50%;background-color:#000;font-family:"Roboto";color:#fff;overflow:hidden;-moz-user-select:none;user-select:none}@font-face{font-family:"Roboto";font-style:normal;font-weight:400;src:local("Roboto"),local("Roboto-Regular"),url("../font/roboto-v18-latin-regular.woff2") format("woff2")}:root{--shadow-color: #111111CC}.greeting,time,.quote{filter:drop-shadow(var(--shadow-shift) var(--shadow-shift) 0 var(--shadow-color))}.quote{--shadow-shift: 0.125rem;width:37.5%;max-width:37.5rem;font-size:1.5rem;text-align:center}.quote blockquote{margin:0 0 .25rem 0;line-height:1.125}.quote blockquote ::before{content:"“";margin-right:.25ch}.quote blockquote ::after{content:"”";margin-left:.25ch}.quote cite{font-size:83.33%}.greeting{--shadow-shift: 0.2rem;font-size:3.25rem}time{--shadow-shift: 0.4rem;font-size:12rem}.bigText{--shadow-shift: 0.2rem;font-size:3.25rem}/*# sourceMappingURL=base.css.map */
.mountain{background-image:url("../img/1.jpeg")}.sunrise{background-image:url("../img/2.jpeg")}.butterfly{background-image:url("../img/3.jpeg")}.leaves{background-image:url("../img/4.jpeg")}.river{background-image:url("../img/5.jpeg")}.sea{background-image:url("../img/6.jpeg")}.space{background-image:url("../img/7.jpeg")}.ice{background-image:url("../img/8.jpeg")}.waterfall{background-image:url("../img/9.jpeg")}.lake{background-image:url("../img/10.jpeg")}.sunset{background-image:url("../img/11.jpeg")}.desert{background-image:url("../img/12.jpeg")}.canyon{background-image:url("../img/13.jpeg")}.rose{background-image:url("../img/14.jpeg")}.forest{background-image:url("../img/15.jpeg")}.cherry{background-image:url("../img/16.jpeg")}.clouds{background-image:url("../img/17.jpeg")}.winter{background-image:url("../img/18.jpeg")}.autumn{background-image:url("../img/19.jpeg")}.flowers{background-image:url("../img/20.jpeg")}.sunrise{background-image:url("../img/21.jpeg")}.rocks{background-image:url("../img/22.jpeg")}.trees{background-image:url("../img/23.jpeg")}.mountains{background-image:url("../img/24.jpeg")}.beach{background-image:url("../img/25.jpeg")}html,body{height:100%}body{display:flex;flex-direction:column;justify-content:space-around;align-items:center;margin:0;background-size:cover;background-position:50%;background-color:#000;font-family:"Roboto";color:#fff;overflow:hidden;-moz-user-select:none;user-select:none}@font-face{font-family:"Roboto";font-style:normal;font-weight:400;src:local("Roboto"),local("Roboto-Regular"),url("../font/roboto-v18-latin-regular.woff2") format("woff2")}:root{--shadow-color: #111111CC}.greeting,time,.quote{filter:drop-shadow(var(--shadow-shift) var(--shadow-shift) 0 var(--shadow-color))}.quote{--shadow-shift: 0.125rem;width:37.5%;max-width:37.5rem;font-size:1.5rem;text-align:center}.quote blockquote{margin:0 0 .25rem 0;line-height:1.125}.quote blockquote ::before{content:"“";margin-right:.25ch}.quote blockquote ::after{content:"”";margin-left:.25ch}.quote cite{font-size:83.33%}.greeting{--shadow-shift: 0.2rem;font-size:3.25rem}time{--shadow-shift: 0.4rem;font-size:12rem}button.settings{background:transparent;border:none;color:#fff;padding:20px 20px;text-align:center;text-decoration:none;font-size:20px;cursor:pointer;border-radius:5px;display:table-cell}.buttons{position:absolute;right:10px;top:10px}i.material-icons{font-size:30px;display:inline;color:#fff}li.items{list-style:none;margin:0;padding-top:30px}/*# sourceMappingURL=base.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sourceRoot":"","sources":["../scss/modules/_bg.scss","../scss/modules/_misc.scss","../scss/modules/_quote.scss","../scss/modules/_time-greeting.scss","../scss/modules/_settings.scss"],"names":[],"mappings":"CAkBA,gDACA,+CACA,iDACA,8CACA,6CACA,2CACA,6CACA,2CACA,iDACA,6CACA,+CACA,+CACA,+CACA,6CACA,+CACA,+CACA,+CACA,+CACA,+CACA,gDACA,gDACA,8CACA,8CACA,kDACA,8CCzCA,sBACA,KAEC,aACA,sBACA,6BACA,mBAEA,SAEA,sBACA,wBACA,sBAEA,qBACA,WAEA,gBAEG,sBACH,iBAID,WACC,qBACA,kBACA,gBACA,0GAKD,MACC,0BAGD,sBAGC,kFCvBD,OACI,yBAEA,YACA,kBAEA,iBACA,kBAEA,kBACI,oBACA,kBAEA,2BACI,YACA,mBAGJ,0BACI,YACA,kBAIR,YACI,iBCvBR,UACC,uBACA,kBAKD,KACC,uBACA,gBC7BD,gBACI,uBACA,YACA,WACA,kBACA,kBACA,qBACA,eACA,eACA,kBACA,mBAGJ,SACI,kBACA,WACA,SAGJ,iBACI,eACA,eACA,WAGJ,SACI,gBACA,SACA","file":"base.css"}

182
src/assets/css/dark.css Normal file
View File

@ -0,0 +1,182 @@
body {
font-family: 'Noto Sans HK', sans-serif;
background: #2d3436;
font-size: 20px;
}
a {
color: #ffffff;
}
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
font-family: 'Noto Sans HK', sans-serif;
}
img {
max-width: 100%;
margin-top: 20px;
}
h1, h2, h3, p {
color: #ffffff;
}
.modal-content {
background-color: #2d3436;
margin: auto;
padding: 30px;
width: 450px;
max-height: 600px;
overflow-y: auto;
}
.title, .close, .settingsTitle, .close2 {
display: inline;
}
.title {
color: #ffffff;
float: left;
font-size: 20px;
font-weight: bold;
}
.settingsTitle {
color: #ffffff;
float: left;
font-size: 30px;
font-weight: bold;
}
p.subtitle {
color: #ffffff;
float: left;
font-size: 10px;
font-weight: bold;
margin-top: 10px;
}
.close {
color: #ffffff;
float: right;
font-size: 30px;
font-weight: bold;
}
.title {
float: left;
}
label.switch, p.switch {
display: inline;
}
label.switch {
float: right;
}
.close:hover,
.close:focus {
color: #bdc3c7;
text-decoration: none;
cursor: pointer;
}
.close2 {
color: #ffffff;
float: right;
font-size: 30px;
font-weight: bold;
}
.title {
float: left;
}
.close2:hover,
.close2:focus {
color: #bdc3c7;
text-decoration: none;
cursor: pointer;
}
::-webkit-scrollbar {
width: 5px;
}
/* Track */
::-webkit-scrollbar-track {
background: #2d3436;
}
/* Handle */
::-webkit-scrollbar-thumb {
background: #34495e;
}
/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
background: #2c3e50;
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.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: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: #2196F3;
}
input:focus + .slider {
box-shadow: 0 0 1px #2196F3;
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}

182
src/assets/css/light.css Normal file
View File

@ -0,0 +1,182 @@
body {
font-family: 'Noto Sans HK', sans-serif;
background: #ffffff;
font-size: 20px;
}
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
font-family: 'Noto Sans HK', sans-serif;
}
img {
max-width: 100%;
margin-top: 20px;
}
h1, h2, h3, p {
color: #000000;
}
.modal-content {
background-color: #ecf0f1;
margin: auto;
padding: 30px;
width: 450px;
max-height: 600px;
overflow-y: auto;
}
.title, .close {
display: inline;
}
.settingsTitle, .close2 {
display: inline;
}
.title {
color: #000000;
float: left;
font-size: 20px;
font-weight: bold;
}
.settingsTitle {
color: #000000;
float: left;
font-size: 30px;
font-weight: bold;
}
label.switch, p.switch {
display: inline;
}
label.switch {
float: right;
}
p.subtitle {
color: #000000;
float: left;
font-size: 10px;
font-weight: bold;
margin-top: 10px;
}
.close {
color: #aaaaaa;
float: right;
font-size: 30px;
font-weight: bold;
}
.title {
float: left;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
.close2 {
color: #aaaaaa;
float: right;
font-size: 30px;
font-weight: bold;
}
.title {
float: left;
}
.close2:hover,
.close2:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
::-webkit-scrollbar {
width: 5px;
}
/* Track */
::-webkit-scrollbar-track {
background: #f1f1f1;
}
/* Handle */
::-webkit-scrollbar-thumb {
background: #888;
}
/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
background: #555;
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.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: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: #2196F3;
}
input:focus + .slider {
box-shadow: 0 0 1px #2196F3;
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because one or more lines are too long

View File

@ -18,24 +18,44 @@
const func = require('./modules/func.js');
// init() gets executed only when the page is fully loaded
const init = () => {
try {
func.setDaytimeMsg();
func.setRandBg();
func.setRandQuote();
func.setTime();
// set interval to update time every second
setInterval(func.setTime, 1000);
// catch for settings menu
} catch (e) {
func.setSettingDisplay();
}
// init() gets executed only when the page is fully loaded
func.setDaytimeMsg();
func.setRandBg();
func.setRandQuote();
func.setTime();
// set interval to update time every second
setInterval(func.setTime, 1000);
};
// initialize on page load through a listener
document.addEventListener('DOMContentLoaded', init);
// Disable right click
const rightClick = () => { return false; };
document.oncontextmenu=rightClick;
document.oncontextmenu = () => { return false; };
// Copy quote text
/*const copybtn = document.getElementById('copybtn');
copybtn.onclick = () => {
const quote = document.getElementById('quote');
quote.select();
document.execCommand('copy');
};*/
// News Modal
/*const btn = document.getElementById('openModal');
const span = document.getElementsByClassName('close')[0];
const modal = document.getElementById('updateModal');
btn.onclick = () => { modal.style.display = 'block'; }
span.onclick = () => { modal.style.display = 'none'; }
window.onclick = (event) => { if (event.target === modal) modal.style.display = 'none'; }*/
// Settings Modal
const modal2 = document.getElementById('settingsModal');
const btn2 = document.getElementById('openSettingsModal');
const span2 = document.getElementsByClassName('close2')[0];
btn2.onclick = () => { modal2.style.display = 'block'; };
span2.onclick = () => { modal2.style.display = 'none'; };
window.onclick = (event) => { if (event.target === modal2) modal2.style.display = 'none'; };

View File

@ -26,31 +26,50 @@ const nal = navigator.language;
module.exports = class Func {
static setDaytimeMsg() {
if (util.contains.call(codes.itcodes, nal)) msg.itMsgSet(); //Italian
if (util.contains.call(codes.nlcodes, nal)) msg.nlMsgSet(); //Dutch
if (util.contains.call(codes.frcodes, nal)) msg.frMsgSet(); //French
//else if (util.contains.call(codes.ptcodes, nal)) Msg.ptMsgSet(); //Portuguese
if (util.contains.call(codes.spcodes, nal)) msg.spMsgSet(); //Spanish
if (util.contains.call(codes.ficodes, nal)) msg.fiMsgSet(); //Finnish
if (util.contains.call(codes.decodes, nal)) msg.spMsgSet(); //German
if (util.contains.call(codes.hecodes, nal)) msg.heMsgSet(); //Hebrew
if (util.contains.call(codes.rucodes, nal)) msg.ruMsgSet(); //Russian
if (util.contains.call(codes.arcodes, nal)) msg.arMsgSet(); //Arabic
if (util.contains.call(codes.svcodes, nal)) msg.svMsgSet(); //Swedish
else msg.engMsgSet(); //English
if (util.contains.call(codes.itcodes, nal)) msg.itMsgSet(); // Italian
if (util.contains.call(codes.nlcodes, nal)) msg.nlMsgSet(); // Dutch
if (util.contains.call(codes.frcodes, nal)) msg.frMsgSet(); // French
//else if (util.contains.call(codes.ptcodes, nal)) msg.ptMsgSet(); // Portuguese
if (util.contains.call(codes.spcodes, nal)) msg.spMsgSet(); // Spanish
if (util.contains.call(codes.ficodes, nal)) msg.fiMsgSet(); // Finnish
if (util.contains.call(codes.decodes, nal)) msg.spMsgSet(); // German
if (util.contains.call(codes.hecodes, nal)) msg.heMsgSet(); // Hebrew
if (util.contains.call(codes.rucodes, nal)) msg.ruMsgSet(); // Russian
if (util.contains.call(codes.arcodes, nal)) msg.arMsgSet(); // Arabic
if (util.contains.call(codes.svcodes, nal)) msg.svMsgSet(); // Swedish
else msg.engMsgSet(); // English
}
static setRandBg() {
document.body.classList.add(util.pickFromArray(bg));
/*var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
callback(null, xhr.response);
} else {
callback(status, xhr.response);
}
};
xhr.send();
};
getJSON(`https://mueapi.derpyenterprises.org/getImage?category=Outdoors`,
function(err, data) {
document.body.style.background = `url('${data.file}') !important`;
});*/
}
static setRandQuote() {
const id = util.getRandIndex(quotes.authors);
if (util.contains.call(codes.itcodes, nal)) util.setHTMLContent('blockquote', `"${quotes.ita[id]}"`); //Italian
if (util.contains.call(codes.ptcodes, nal)) util.setHTMLContent('blockquote', `"${quotes.pt[id]}"` || `"${quotes.eng[id]}"`); //Portuguese
if (util.contains.call(codes.spcodes, nal)) util.setHTMLContent('blockquote', `"${quotes.spa[id]}"`); //Spanish
else util.setHTMLContent('blockquote', `"${quotes.eng[id]}"`); //English
util.setHTMLContent('cite', quotes.authors[id]);
if (util.contains.call(codes.itcodes, nal)) document.querySelector('blockquote').innerHTML = `"${quotes.it[id]}"`; // Italian
if (util.contains.call(codes.ptcodes, nal)) document.querySelector('blockquote').innerHTML = `"${quotes.pt[id]}"` || `"${quotes.eng[id]}"`; // Portuguese
if (util.contains.call(codes.spcodes, nal)) document.querySelector('blockquote').innerHTML = `"${quotes.sp[id]}"`; // Spanish
else document.querySelector('blockquote').innerHTML = `"${quotes.eng[id]}"`; // English
document.querySelector('cite').innerHTML = quotes.authors[id];
}
static setTime() {
@ -60,8 +79,8 @@ module.exports = class Func {
util.formatTimeUnit(date.getMinutes()),
util.formatTimeUnit(date.getSeconds())
];
// joins all of the array elements into a string using the ':' separator
// example: [16, 32, 03] -> "16:32:03"
util.setHTMLContent('time', time.join(':'));
// Joins all of the array elements into a string using the ':' separator
// Example: [16, 32, 03] -> "16:32:03"
document.querySelector('time').innerHTML = time.join(':');
}
};
};

View File

@ -16,8 +16,7 @@
*/
const hour = new Date().getHours(); // Get the current hour
const { setHTMLContent } = require('./util.js');
const hour = new Date().getHours(); // Get the current hour
module.exports = class Msg {
// English
@ -25,30 +24,30 @@ module.exports = class Msg {
let time = 'Good evening'; // Set the default time string to "Good evening"
if (hour < 12) time = 'Good morning'; //If it's before 12am, set the time string to "Good morning"
else if (hour < 18) time = 'Good afternoon'; //If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
document.querySelector('.greeting').innerHTML = time; // Write the string contents to the HTML
}
// Italian
static itMsgSet() {
let time = 'Buongiorno'; // Set the default time string
if (hour > 18) time = 'Buonasera'; // In Italian there is just Buongiorno or Buonasera
setHTMLContent('.greeting', time); // Write the string contents to the HTML
if (hour > 18) time = 'Buonasera'; // In Italian there is just Buongiorno or Buonasera, if it's before 6pm then set the time string to Buonasera
document.querySelector('.greeting').innerHTML = time; // Write the string contents to the HTML
}
// Dutch
static nlMsgSet() {
let time = 'Goedemiddag'; // Set the default time string to "Good evening"
if (hour < 12) time = 'Goedemorgen'; //If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'Goedenavond'; //If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
static nlMsgSet() { // Everything below is the same as English, check the comments there for information
let time = 'Goedemiddag';
if (hour < 12) time = 'Goedemorgen';
else if (hour > 18) time = 'Goedenavond';
document.querySelector('.greeting').innerHTML = time;
}
// French
static frMsgSet() {
let time = 'Bonsoir'; // Set the default time string to "Good evening"
if (hour < 12) time = 'Bonjour'; //If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'Bonne après-midi'; //If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
let time = 'Bonsoir';
if (hour < 12) time = 'Bonjour';
else if (hour > 18) time = 'Bonne après-midi';
document.querySelector('.greeting').innerHTML = time;
}
// Spanish
@ -56,7 +55,7 @@ module.exports = class Msg {
let time = 'Buenas Tardes'; // Set the default time string to "Good evening"
if (hour < 12) time = 'Buenos Días'; // If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'Buenas Noches'; // If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
document.querySelector('.greeting').innerHTML = time; // Write the string contents to the HTML
}
// Finnish
@ -64,45 +63,45 @@ module.exports = class Msg {
let time = 'Hyvää iltaa'; // Set the default time string to "Good evening"
if (hour < 12) time = 'Hyvää huomenta'; // If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'Hyvää iltapäivää'; // If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
document.querySelector('.greeting').innerHTML = time; // Write the string contents to the HTML
}
// German
static deMsgSet() {
let time = 'Guten Abend'; // Set the default time string to "Good evening"
if (hour < 12) time = 'Guten Morgen'; // If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'Guten Nachmittag'; // If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
let time = 'Guten Abend';
if (hour < 12) time = 'Guten Morgen';
else if (hour > 18) time = 'Guten Nachmittag';
document.querySelector('.greeting').innerHTML = time;
}
// Hebrew
static heMsgSet() {
let time = 'ערב טוב'; // Set the default time string to "Good evening"
if (hour < 12) time = 'בוקר טוב'; // If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'אחר הצהריים טובים'; // If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
let time = 'ערב טוב';
if (hour < 12) time = 'בוקר טוב';
else if (hour > 18) time = 'אחר הצהריים טובים';
document.querySelector('.greeting').innerHTML = time;
}
// Russian
static ruMsgSet() {
let time = 'Добрый Вечер'; // Set the default time string to "Good evening"
if (hour < 12) time = 'добрый утро'; // If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'добрый день'; // If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
let time = 'Добрый Вечер';
if (hour < 12) time = 'добрый утро';
else if (hour > 18) time = 'добрый день';
document.querySelector('.greeting').innerHTML = time;
}
// Arabic
static arMsgSet() {
let time = 'مساء الخير'; // Set the default time string to "Good evening"
if (hour < 12) time = 'صباح الخير'; // If it's before 12am, set the time string to "Good morning"
else if (hour > 18) time = 'مساء الخير'; // If it's before 6pm, set the time string to "Good afternoon"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
let time = 'مساء الخير';
if (hour < 12) time = 'صباح الخير';
else if (hour > 18) time = 'مساء الخير';
document.querySelector('.greeting').innerHTML = time;
}
// Swedish
static svMsgSet() {
let time = 'God kväll'; // Set the default time string to "Good evening"
if (hour < 12) time = 'God morgon'; // If it's before 12am, set the time string to "Good morning"
setHTMLContent('.greeting', time); // Write the string contents to the HTML
let time = 'God kväll';
if (hour < 12) time = 'God morgon';
document.querySelector('.greeting').innerHTML = time;
}
};
};

View File

@ -37,7 +37,7 @@ module.exports = {
'Motivation comes from working on things we care about.',
'With the right kind of coaching and determination you can accomplish anything.',
'Some people look for a beautiful place. Others make a place beautiful.',
'Life is like riding a bicycle. To keep your balance, you must keep moving.',
'Life is like riding a bicycle. To keep your balance, you must keep moving.'
],
ita: [
@ -81,14 +81,14 @@ module.exports = {
'Un campeón se define no por sus victorias, sino por cómo pueden recuperarse cuando caen',
'La motivación viene de trabajar en cosas que nos importan',
'Con el entrenamiento y la determinación adecuados, puedes lograr cualquier cosa',
'Algunas personas buscan un lugar hermoso. Otras, hacen un lugar hermoso.',
'Algunas personas buscan un lugar hermoso. Otras, hacen un lugar hermoso.'
],
pt: [
'O tempo continua. Então o que quer que você vai fazer,faça. Faça agora. Não espere.',
'Todos os sonhos podem virar verdade,se tivermos a coragem de persegui-los.',
'Não importa o quão devagar você for,desde que você não pare.',
'Acredite em si mesmo. Você é mais corajoso que pensa,mais talentoso que sabe,e capaz de mais que imagina.',
'Se você acredita que vai dar certo,você verá oportunidades. Se você acredita que não vai,você vera obstáculos.',
'Se você acredita que vai dar certo,você verá oportunidades. Se você acredita que não vai,você vera obstáculos.'
],
authors: [
'Robert De Niro',

View File

@ -22,11 +22,6 @@ module.exports = class Util {
return unit < 10 ? '0' + unit : unit;
}
// setHTMLContent is the kind of function that is referred to as a 'wrapper'
static setHTMLContent(selector, content) {
return document.querySelector(selector).innerHTML = content;
}
// Get random item
static getRandIndex(array) {
return Math.floor(Math.random() * (array.length - 1));

54
src/assets/js/stuff.js Normal file
View File

@ -0,0 +1,54 @@
const changeCSS = (cssFile, cssLinkIndex) => {
let oldlink = document.getElementsByTagName('link').item(cssLinkIndex);
let newlink = document.createElement('link');
newlink.setAttribute('rel', 'stylesheet');
newlink.setAttribute('type', 'text/css');
newlink.setAttribute('href', cssFile);
document.getElementsByTagName('head').item(0).replaceChild(newlink, oldlink);
};
changeCSS(`./assets/css/${localStorage.getItem('theme')}.css`);
const changeTheme = () => {
let themeBox = document.getElementById('check');
if (themeBox.checked === true) {
changeCSS('./assets/css/light.css');
localStorage.setItem('theme', 'light');
} else {
changeCSS('./assets/css/dark.css');
localStorage.setItem('theme', 'dark');
}
}
const hideQuotes = () => {
let quoteBox = document.getElementById('quoteCheck');
let quoteText = document.getElementById('quoteText');
if (quoteBox.checked === true) quoteText.style.display = 'none';
else quoteText.style.display = 'block';
}
const hideGreeting = () => {
let greetingBox = document.getElementById('greetingCheck');
let greetingText = document.getElementById('greetingText');
if (greetingBox.checked === true) greetingText.style.display = 'none';
else greetingText.style.display = 'block';
}
const hideSeconds = () => {
let secondsBox = document.getElementById('secondsCheck');
let withSecondsText = document.getElementById('withSeconds');
let withoutSecondsText = document.getElementById('withoutSeconds');
if (secondsBox.checked === true) {
withoutSecondsText.style.display = 'block';
withSeconds.style.display = 'none';
} else {
withSeconds.style.display = 'block';
withoutSecondsText.style.display = 'none';
}
}

View File

@ -16,11 +16,8 @@
*/
/* Tab */
@import 'modules/tab/bg';
@import 'modules/tab/misc';
@import 'modules/tab/quote';
@import 'modules/tab/time-greeting';
/* Settings*/
@import 'modules/settings/misc';
@import 'modules/bg';
@import 'modules/misc';
@import 'modules/quote';
@import 'modules/time-greeting';
@import 'modules/settings';

View File

@ -0,0 +1,43 @@
/* Body */
html, body { height: 100%; }
body {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
margin: 0;
background-size: cover;
background-position: 50%;
background-color: black; /* Prevent white flash on page load */
font-family: 'Roboto';
color: white;
overflow: hidden;
-moz-user-select: none; /* Firefox */
user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */
}
/* Font */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'),
url('../font/roboto-v18-latin-regular.woff2') format('woff2');
}
/* Shadow */
:root {
--shadow-color: #111111CC;
}
.greeting,
time,
.quote {
filter: drop-shadow(var(--shadow-shift) var(--shadow-shift) 0 var(--shadow-color));
}

View File

@ -0,0 +1,30 @@
button.settings {
background: transparent;
border: none;
color: white;
padding: 20px 20px;
text-align: center;
text-decoration: none;
font-size: 20px;
cursor: pointer;
border-radius: 5px;
display: table-cell;
}
.buttons {
position: absolute;
right: 10px;
top: 10px;
}
i.material-icons {
font-size: 30px;
display: inline;
color: #ffffff;
}
li.items {
list-style: none;
margin: 0 ;
padding-top: 30px;
}

View File

@ -1,5 +0,0 @@
/* Big Settings Text */
.bigText {
--shadow-shift: 0.2rem;
font-size: 3.25rem;
}

View File

@ -1,61 +0,0 @@
/*
Copyright 2018-2019 David Ralph (ohlookitsderpy)
Licensed under MIT
GitHub: https://github.com/ohlookitsderpy/Mue
Special thanks to contributors! <3
*/
/* Body */
html, body { height: 100%; }
body {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
margin: 0;
background-size: cover;
background-position: 50%;
background-color: black; /* Prevent white flash on page load */
font-family: 'Roboto';
color: white;
overflow: hidden;
-moz-user-select: none; /* Firefox */
user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */
}
/* Font */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'),
url('../font/roboto-v18-latin-regular.woff2') format('woff2');
}
/* Shadow */
:root {
--shadow-color: #111111CC;
}
.greeting,
time,
.quote {
filter: drop-shadow(var(--shadow-shift) var(--shadow-shift) 0 var(--shadow-color));
}

View File

@ -20,33 +20,97 @@
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width'>
<link rel='stylesheet' type='text/css' href='./assets/css/light.css' />
<link rel='stylesheet' href='https://fonts.googleapis.com/icon?family=Material+Icons' />
<title>New Tab</title>
<link href='./assets/css/base.css' rel='stylesheet'>
<link href='./assets/css/animate.css' rel='stylesheet'>
<style>
.modal {
display: none;
}
</style>
</head>
<body>
<div class='greeting animate'></div>
<time class='animate'></time>
<div id='greetingText' class='greeting animate'></div>
<div class='quote animate'>
<time id='withSeconds' class='animate'></time>
<time id='withoutSeconds' style='display: none;' class='animate'></time>
<div id='quoteText' class='quote animate'>
<blockquote></blockquote>
<cite></cite>
</div>
<div id='updateModal' class='modal animate'>
<div class='modal-content'>
<span class='close'>&times;</span>
<span class='title'>UPDATE &#128515;</span>
<br>
<p class='subtitle'>BY TEAM MUE</p>
<img src='https://cdn.discordapp.com/attachments/252071498397777921/593884018840305854/unknown.png' />
<h2>Add some colour!</h2>
<p>VIVA LAS VEGASSSS</p>
</div>
</div>
<div id='settingsModal' class='modal animate'>
<div class='modal-content'>
<span class='close2'>&times;</span>
<span class='settingsTitle'>SETTINGS</span>
<li class='items'>
<br>
<p class='switch'>Theme Switch</p>
<label class='switch'>
<input id='check' onclick='changeTheme()' type='checkbox'>
<span class='slider round'></span>
</label>
</li>
<li class='items'>
<p class='switch'>Hide Quotes</p>
<label class='switch'>
<input id='quoteCheck' type='checkbox' onclick='hideQuotes()'>
<span class='slider round'></span>
</label>
</li>
<li class='items'>
<p class='switch'>Hide Greeting</p>
<label class='switch'>
<input id='greetingCheck' type='checkbox' onclick='hideGreeting()'>
<span class='slider round'></span>
</label>
</li>
<li class='items'>
<p class='switch'>Hide Seconds</p>
<label class='switch'>
<input id='secondsCheck' type='checkbox' onclick='hideSeconds()'>
<span class='slider round'></span>
</label>
</li>
<li class='items'>
<p class='switch'>Custom Background</p>
<label class='yeetus'>
</label>
</div>
</li>
</div>
<div class='buttons'>
<button class='settings' id='openSettingsModal'><i class='material-icons'>settings</i></button>
<button id='openNewsModal' style='display: none;'>Open Update News Module</button>
</div>
</body>
<script src='./assets/js/base.js'></script>
<script src='./assets/js/stuff.js'></script>
</html>

View File

@ -1,15 +1,11 @@
{
"manifest_version": 2,
"name": "Mue",
"version": "0.3",
"version": "0.1",
"browser_action": {
"default_icon": "./assets/img/icon.png"
},
"chrome_url_overrides": {
"newtab": "index.html"
},
"offline_enabled": true,
"permissions": [
"storage"
]
}
}

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Mue",
"version": "0.3",
"version": "0.1",
"browser_action": {
"default_icon": "./assets/img/icon.png"
},

View File

@ -1,12 +1,14 @@
{
"manifest_version": 2,
"name": "Mue",
"version": "0.3",
"version": "0.1",
"browser_action": {
"default_icon": "./assets/img/icon.png"
},
"background": {
"scripts": ["./assets/js/background-opera.js"]
"scripts": [
"./assets/js/background-opera.js"
]
},
"permissions": [
"tabs"

View File

@ -1,39 +0,0 @@
<!--
█████████████████████████████████████████████████████████████
██ ██
██ ███ ███ ██ ██ ███████ ██
██ ████ ████ ██ ██ ██ ██
██ ██ ████ ██ ██ ██ █████ ██
██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██████ ███████ ██
██ ██
██ ██
██ Copyright 2018-2019 David Ralph (ohlookitsderpy) ██
██ Licensed under MIT ██
██ GitHub: https://github.com/ohlookitsderpy/Mue ██
██ ██
██ Special thanks to contributors! <3
█████████████████████████████████████████████████████████████
-->
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width'>
<title>Mue Settings</title>
<link href='./assets/css/base.css' rel='stylesheet'>
</head>
<body>
<div class='bigText'>Settings</div>
</body>
<script src='./assets/js/base.js'></script>
</html>