- {this.getMessage(
- "modals.welcome.sections.privacy.offline_mode_description"
- )}
-
+
- {this.getMessage(
- "modals.welcome.sections.privacy.ddg_proxy_description"
- )}
-
+
- {this.getMessage("modals.welcome.sections.final.changes_description")}
-
+
this.props.switchTab(1)}>
- {this.getMessage("modals.main.settings.sections.language.title")}:{" "}
- {
- languages.find(
- (i) => i.value === localStorage.getItem("language")
- ).name
- }
+ {this.getMessage('modals.main.settings.sections.language.title')}:{' '}
+ {languages.find((i) => i.value === localStorage.getItem('language')).name}
this.props.switchTab(3)}>
- {this.getMessage(
- "modals.main.settings.sections.appearance.theme.title"
- )}
- : {this.getSetting("theme")}
+ {this.getMessage('modals.main.settings.sections.appearance.theme.title')}:{' '}
+ {this.getSetting('theme')}
{this.state.importedSettings.length !== 0 ? (
this.props.switchTab(2)}>
- {this.getMessage("modals.main.settings.sections.final.imported", {
+ {this.getMessage('modals.main.settings.sections.final.imported', {
amount: this.state.importedSettings.length,
- })}{" "}
+ })}{' '}
{this.state.importedSettings.length}
) : null}
diff --git a/src/components/widgets/Widgets.jsx b/src/components/widgets/Widgets.jsx
index d07a4b47..2f609392 100644
--- a/src/components/widgets/Widgets.jsx
+++ b/src/components/widgets/Widgets.jsx
@@ -1,67 +1,64 @@
-import { PureComponent, Fragment, Suspense, lazy } from "react";
+import { PureComponent, Fragment, Suspense, lazy } from 'react';
-import Clock from "./time/Clock";
-import Greeting from "./greeting/Greeting";
-import Quote from "./quote/Quote";
-import Search from "./search/Search";
-import QuickLinks from "./quicklinks/QuickLinks";
-import Date from "./time/Date";
-import Message from "./message/Message";
-import Reminder from "./reminder/Reminder";
+import Clock from './time/Clock';
+import Greeting from './greeting/Greeting';
+import Quote from './quote/Quote';
+import Search from './search/Search';
+import QuickLinks from './quicklinks/QuickLinks';
+import Date from './time/Date';
+import Message from './message/Message';
+import Reminder from './reminder/Reminder';
-import EventBus from "modules/helpers/eventbus";
+import EventBus from 'modules/helpers/eventbus';
-const Weather = lazy(() => import("./weather/Weather"));
+const Weather = lazy(() => import('./weather/Weather'));
const renderLoader = () => <>>;
export default class Widgets extends PureComponent {
- online = localStorage.getItem("offlineMode") === "false";
+ online = localStorage.getItem('offlineMode') === 'false';
constructor() {
super();
this.state = {
- order: JSON.parse(localStorage.getItem("order")),
- welcome: localStorage.getItem("showWelcome"),
+ order: JSON.parse(localStorage.getItem('order')),
+ welcome: localStorage.getItem('showWelcome'),
};
// widgets we can re-order
this.widgets = {
- time: this.enabled("time") ?
: null,
- greeting: this.enabled("greeting") ?
: null,
- quote: this.enabled("quote") ?
: null,
- date: this.enabled("date") ?
: null,
- quicklinks:
- this.enabled("quicklinksenabled") && this.online ? (
-
- ) : null,
- message: this.enabled("message") ?
: null,
- reminder: this.enabled("reminder") ?
: null,
+ time: this.enabled('time') ?
: null,
+ greeting: this.enabled('greeting') ?
: null,
+ quote: this.enabled('quote') ?
: null,
+ date: this.enabled('date') ?
: null,
+ quicklinks: this.enabled('quicklinksenabled') && this.online ?
: null,
+ message: this.enabled('message') ?
: null,
+ reminder: this.enabled('reminder') ?
: null,
};
}
enabled(key) {
- return localStorage.getItem(key) === "true";
+ return localStorage.getItem(key) === 'true';
}
componentDidMount() {
- EventBus.on("refresh", (data) => {
- if (data === "widgets") {
+ EventBus.on('refresh', (data) => {
+ if (data === 'widgets') {
this.setState({
- order: JSON.parse(localStorage.getItem("order")),
+ order: JSON.parse(localStorage.getItem('order')),
});
}
- if (data === "widgetsWelcome") {
+ if (data === 'widgetsWelcome') {
this.setState({
- welcome: localStorage.getItem("showWelcome"),
+ welcome: localStorage.getItem('showWelcome'),
});
- localStorage.setItem("showWelcome", true);
+ localStorage.setItem('showWelcome', true);
window.onbeforeunload = () => {
localStorage.clear();
};
}
- if (data === "widgetsWelcomeDone") {
+ if (data === 'widgetsWelcomeDone') {
this.setState({
- welcome: localStorage.getItem("showWelcome"),
+ welcome: localStorage.getItem('showWelcome'),
});
window.onbeforeunload = null;
}
@@ -70,7 +67,7 @@ export default class Widgets extends PureComponent {
render() {
// don't show when welcome is there
- if (this.state.welcome !== "false") {
+ if (this.state.welcome !== 'false') {
return
;
}
@@ -79,9 +76,7 @@ export default class Widgets extends PureComponent {
if (this.state.order) {
this.state.order.forEach((element) => {
- elements.push(
-
{this.widgets[element]}
- );
+ elements.push(
{this.widgets[element]} );
});
} else {
// prevent error
@@ -99,9 +94,9 @@ export default class Widgets extends PureComponent {
return (
- {this.enabled("searchBar") ? : null}
+ {this.enabled('searchBar') ? : null}
{elements}
- {this.enabled("weatherEnabled") && this.online ? : null}
+ {this.enabled('weatherEnabled') && this.online ? : null}
);
diff --git a/src/components/widgets/background/scss/_photoinformation.scss b/src/components/widgets/background/scss/_photoinformation.scss
index 47322a40..d2232ba4 100644
--- a/src/components/widgets/background/scss/_photoinformation.scss
+++ b/src/components/widgets/background/scss/_photoinformation.scss
@@ -50,6 +50,7 @@
}
}
.photoInformation-content {
+ padding: 20px;
padding-left: 0;
}
.map-concept {
@@ -183,13 +184,14 @@
font-size: 0.8em;
font-weight: 300;
z-index: 99;
- padding: 20px;
display: flex;
flex-flow: row;
align-items: center;
transition: 0.8s cubic-bezier(0.075, 0.82, 0.165, 1);
- width: 380px;
+ width: 300px;
+ padding: 10px;
&:hover {
+ padding: 20px;
height: auto;
align-items: flex-start;
flex-flow: column;
@@ -240,15 +242,15 @@
}
.map-concept {
@extend %basic;
- height: 80px;
- width: 80px;
+ height: 50px;
+ width: 50px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
border: none !important;
svg {
- font-size: 25px;
+ font-size: 24px;
}
img {
width: 100%;
@@ -281,7 +283,7 @@
.photoInformation-content {
display: flex;
flex-flow: column;
- padding: 20px;
+ padding-left: 20px;
a {
color: #5352ed;
text-decoration: none;
diff --git a/src/components/widgets/navbar/Navbar.jsx b/src/components/widgets/navbar/Navbar.jsx
index 1a9336a6..5733e8de 100644
--- a/src/components/widgets/navbar/Navbar.jsx
+++ b/src/components/widgets/navbar/Navbar.jsx
@@ -89,14 +89,16 @@ export default class Navbar extends PureComponent {
linkText={'Learn more'}
>
*/}
-
this.props.openModal('mainModal')}>
-
-
+
+ this.props.openModal('mainModal')}>
+
+
+
{/*
New Update
diff --git a/src/components/widgets/navbar/scss/_notes.scss b/src/components/widgets/navbar/scss/_notes.scss
index 2ea2c8ee..85033f64 100644
--- a/src/components/widgets/navbar/scss/_notes.scss
+++ b/src/components/widgets/navbar/scss/_notes.scss
@@ -57,7 +57,6 @@
}
}
-
.flexNotes {
display: flex;
flex-flow: column;
diff --git a/src/components/widgets/navbar/scss/_todo.scss b/src/components/widgets/navbar/scss/_todo.scss
index dcafb50c..37094054 100644
--- a/src/components/widgets/navbar/scss/_todo.scss
+++ b/src/components/widgets/navbar/scss/_todo.scss
@@ -61,4 +61,3 @@
cursor: not-allowed;
}
}
-
diff --git a/src/components/widgets/quicklinks/quicklinks.scss b/src/components/widgets/quicklinks/quicklinks.scss
index e2f6fc05..df311c02 100644
--- a/src/components/widgets/quicklinks/quicklinks.scss
+++ b/src/components/widgets/quicklinks/quicklinks.scss
@@ -30,7 +30,6 @@
border-radius: 12px;
}
-
::placeholder {
color: #636e72;
opacity: 1;
diff --git a/src/components/widgets/quote/Quote.jsx b/src/components/widgets/quote/Quote.jsx
index faf803a3..33efd74f 100644
--- a/src/components/widgets/quote/Quote.jsx
+++ b/src/components/widgets/quote/Quote.jsx
@@ -63,7 +63,7 @@ export default class Quote extends PureComponent {
copy: localStorage.getItem('copyButton') === 'false' ? null : this.buttons.copy,
quoteLanguage: '',
type: localStorage.getItem('quoteType') || 'api',
- shareModal: false
+ shareModal: false,
};
this.quote = createRef();
this.quotediv = createRef();
@@ -398,7 +398,7 @@ export default class Quote extends PureComponent {
{this.state.quote}
- {localStorage.getItem('widgetStyle') === 'legacy' ? (
+ {(localStorage.getItem('widgetStyle') === 'legacy') ? (
<>
@@ -417,38 +417,42 @@ export default class Quote extends PureComponent {
>
) : (
-
-
-
- {this.state.authorimg === undefined || this.state.authorimg ? '' :
}
+ <>
+ {this.state.author !== '' ? (
+
+
+
+ {this.state.authorimg === undefined || this.state.authorimg ? '' : }
+
+
+ {this.state.author}
+ {this.state.authorOccupation !== 'Unknown' ? (
+ {this.state.authorOccupation}
+ ) : null}
+ {this.state.authorimglicense}
+
+
+ {this.state.authorOccupation !== 'Unknown' ? (
+
+
+
+ {' '}
+
+ ) : null}
+ {this.state.copy} {this.state.share} {this.state.favourited}
+
+
-
- {this.state.author}
- {this.state.authorOccupation !== 'Unknown' ? (
- {this.state.authorOccupation}
- ) : null}
- {this.state.authorimglicense}
-
-
- {this.state.authorOccupation !== 'Unknown' ? (
-
-
-
- {' '}
-
- ) : null}
- {this.state.copy} {this.state.share} {this.state.favourited}
-
-
-
+ ) :
}
+ >
)}
{/*variables.keybinds.favouriteQuote && variables.keybinds.favouriteQuote !== '' ?
this.favourite()} /> : null*/}
{/*variables.keybinds.tweetQuote && variables.keybinds.tweetQuote !== '' ? this.tweetQuote()} /> : null*/}
diff --git a/src/components/widgets/quote/quote.scss b/src/components/widgets/quote/quote.scss
index b0df0142..05e79cb3 100644
--- a/src/components/widgets/quote/quote.scss
+++ b/src/components/widgets/quote/quote.scss
@@ -93,6 +93,16 @@ h1.quoteauthor {
align-items: center;
justify-content: center;
flex-flow: column;
+ animation: fadeIn 1s;
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
}
.quote-buttons {
@@ -110,6 +120,7 @@ h1.quoteauthor {
}
.quotediv {
+ animation: fadeIn 1s;
width: 40vw;
display: flex;
flex-direction: column;
diff --git a/src/components/widgets/reminder/Reminder.jsx b/src/components/widgets/reminder/Reminder.jsx
index 13b2be25..52285d89 100644
--- a/src/components/widgets/reminder/Reminder.jsx
+++ b/src/components/widgets/reminder/Reminder.jsx
@@ -5,21 +5,26 @@ import './reminder.scss';
import { MdClose, MdSnooze, MdWork } from 'react-icons/md';
export default class Reminder extends React.PureComponent {
- render() {
- return (
-
-
-
-
-
- Reminder
- Time
-
-
-
-
-
-
- )
- }
-}
\ No newline at end of file
+ render() {
+ return (
+
+
+
+
+
+ Reminder
+ Time
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/src/components/widgets/search/autocomplete_providers.json b/src/components/widgets/search/autocomplete_providers.json
index 292d5521..209850a2 100644
--- a/src/components/widgets/search/autocomplete_providers.json
+++ b/src/components/widgets/search/autocomplete_providers.json
@@ -14,4 +14,3 @@
"query": "&query="
}
]
-
\ No newline at end of file
diff --git a/src/components/widgets/time/Clock.jsx b/src/components/widgets/time/Clock.jsx
index 182fb002..158d14ef 100644
--- a/src/components/widgets/time/Clock.jsx
+++ b/src/components/widgets/time/Clock.jsx
@@ -1,11 +1,11 @@
-import { PureComponent, Suspense, lazy } from "react";
+import { PureComponent, Suspense, lazy } from 'react';
-import { convertTimezone } from "modules/helpers/date";
-import EventBus from "modules/helpers/eventbus";
+import { convertTimezone } from 'modules/helpers/date';
+import EventBus from 'modules/helpers/eventbus';
-import "./clock.scss";
+import './clock.scss';
-const Analog = lazy(() => import("react-clock"));
+const Analog = lazy(() => import('react-clock'));
const renderLoader = () => <>>;
export default class Clock extends PureComponent {
@@ -14,34 +14,34 @@ export default class Clock extends PureComponent {
this.timer = undefined;
this.state = {
- time: "",
- ampm: "",
+ time: '',
+ ampm: '',
};
}
startTime(
- time = localStorage.getItem("seconds") === "true" ||
- localStorage.getItem("timeType") === "analogue"
+ time = localStorage.getItem('seconds') === 'true' ||
+ localStorage.getItem('timeType') === 'analogue'
? 1000 - (Date.now() % 1000)
- : 60000 - (Date.now() % 60000)
+ : 60000 - (Date.now() % 60000),
) {
this.timer = setTimeout(() => {
let now = new Date();
- const timezone = localStorage.getItem("timezone");
- if (timezone && timezone !== "auto") {
+ const timezone = localStorage.getItem('timezone');
+ if (timezone && timezone !== 'auto') {
now = convertTimezone(now, timezone);
}
- switch (localStorage.getItem("timeType")) {
- case "percentageComplete":
+ switch (localStorage.getItem('timeType')) {
+ case 'percentageComplete':
this.setState({
- time: (now.getHours() / 24).toFixed(2).replace("0.", "") + "%",
- ampm: "",
+ time: (now.getHours() / 24).toFixed(2).replace('0.', '') + '%',
+ ampm: '',
});
break;
- case "analogue":
+ case 'analogue':
// load analog clock css
- require("react-clock/dist/Clock.css");
+ require('react-clock/dist/Clock.css');
this.setState({
time: now,
@@ -50,27 +50,25 @@ export default class Clock extends PureComponent {
default:
// Default clock
let time,
- sec = "";
- const zero = localStorage.getItem("zero");
+ sec = '';
+ const zero = localStorage.getItem('zero');
- if (localStorage.getItem("seconds") === "true") {
- sec = `:${("00" + now.getSeconds()).slice(-2)}`;
+ if (localStorage.getItem('seconds') === 'true') {
+ sec = `:${('00' + now.getSeconds()).slice(-2)}`;
}
- if (localStorage.getItem("timeformat") === "twentyfourhour") {
- if (zero === "false") {
- time = `${now.getHours()}:${("00" + now.getMinutes()).slice(
- -2
- )}${sec}`;
+ if (localStorage.getItem('timeformat') === 'twentyfourhour') {
+ if (zero === 'false') {
+ time = `${now.getHours()}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
} else {
- time = `${("00" + now.getHours()).slice(-2)}:${(
- "00" + now.getMinutes()
- ).slice(-2)}${sec}`;
+ time = `${('00' + now.getHours()).slice(-2)}:${('00' + now.getMinutes()).slice(
+ -2,
+ )}${sec}`;
}
this.setState({
time,
- ampm: "",
+ ampm: '',
});
} else {
// 12 hour
@@ -82,17 +80,15 @@ export default class Clock extends PureComponent {
hours = 12;
}
- if (zero === "false") {
- time = `${hours}:${("00" + now.getMinutes()).slice(-2)}${sec}`;
+ if (zero === 'false') {
+ time = `${hours}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
} else {
- time = `${("00" + hours).slice(-2)}:${(
- "00" + now.getMinutes()
- ).slice(-2)}${sec}`;
+ time = `${('00' + hours).slice(-2)}:${('00' + now.getMinutes()).slice(-2)}${sec}`;
}
this.setState({
time,
- ampm: now.getHours() > 11 ? "PM" : "AM",
+ ampm: now.getHours() > 11 ? 'PM' : 'AM',
});
}
break;
@@ -103,27 +99,27 @@ export default class Clock extends PureComponent {
}
componentDidMount() {
- EventBus.on("refresh", (data) => {
- if (data === "clock" || data === "timezone") {
- const element = document.querySelector(".clock-container");
+ EventBus.on('refresh', (data) => {
+ if (data === 'clock' || data === 'timezone') {
+ const element = document.querySelector('.clock-container');
- if (localStorage.getItem("time") === "false") {
- return (element.style.display = "none");
+ if (localStorage.getItem('time') === 'false') {
+ return (element.style.display = 'none');
}
this.timer = null;
this.startTime(0);
- element.style.display = "block";
+ element.style.display = 'block';
element.style.fontSize = `${
- 4 * Number((localStorage.getItem("zoomClock") || 100) / 100)
+ 4 * Number((localStorage.getItem('zoomClock') || 100) / 100)
}em`;
}
});
- if (localStorage.getItem("timeType") !== "analogue") {
- document.querySelector(".clock-container").style.fontSize = `${
- 4 * Number((localStorage.getItem("zoomClock") || 100) / 100)
+ if (localStorage.getItem('timeType') !== 'analogue') {
+ document.querySelector('.clock-container').style.fontSize = `${
+ 4 * Number((localStorage.getItem('zoomClock') || 100) / 100)
}em`;
}
@@ -131,7 +127,7 @@ export default class Clock extends PureComponent {
}
componentWillUnmount() {
- EventBus.off("refresh");
+ EventBus.off('refresh');
}
render() {
@@ -143,21 +139,21 @@ export default class Clock extends PureComponent {
);
const enabled = (setting) => {
- return localStorage.getItem(setting) === "true";
+ return localStorage.getItem(setting) === 'true';
};
- if (localStorage.getItem("timeType") === "analogue") {
+ if (localStorage.getItem('timeType') === 'analogue') {
clockHTML = (
diff --git a/src/components/widgets/time/Date.jsx b/src/components/widgets/time/Date.jsx
index 9a88b041..ded539b4 100644
--- a/src/components/widgets/time/Date.jsx
+++ b/src/components/widgets/time/Date.jsx
@@ -1,16 +1,16 @@
-import variables from "modules/variables";
-import { PureComponent, createRef } from "react";
+import variables from 'modules/variables';
+import { PureComponent, createRef } from 'react';
-import { nth, convertTimezone } from "modules/helpers/date";
-import EventBus from "modules/helpers/eventbus";
+import { nth, convertTimezone } from 'modules/helpers/date';
+import EventBus from 'modules/helpers/eventbus';
-import "./date.scss";
+import './date.scss';
export default class DateWidget extends PureComponent {
constructor() {
super();
this.state = {
- date: "",
+ date: '',
weekNumber: null,
};
this.date = createRef();
@@ -29,21 +29,20 @@ export default class DateWidget extends PureComponent {
}
this.setState({
- weekNumber: `${variables.language.getMessage(
- variables.languagecode,
- "widgets.date.week"
- )} ${1 + Math.ceil((firstThursday - dateToday) / 604800000)}`,
+ weekNumber: `${variables.language.getMessage(variables.languagecode, 'widgets.date.week')} ${
+ 1 + Math.ceil((firstThursday - dateToday) / 604800000)
+ }`,
});
}
getDate() {
let date = new Date();
- const timezone = localStorage.getItem("timezone");
- if (timezone && timezone !== "auto") {
+ const timezone = localStorage.getItem('timezone');
+ if (timezone && timezone !== 'auto') {
date = convertTimezone(date, timezone);
}
- if (localStorage.getItem("weeknumber") === "true") {
+ if (localStorage.getItem('weeknumber') === 'true') {
this.getWeekNumber(date);
} else if (this.state.weekNumber !== null) {
this.setState({
@@ -51,23 +50,23 @@ export default class DateWidget extends PureComponent {
});
}
- if (localStorage.getItem("dateType") === "short") {
+ if (localStorage.getItem('dateType') === 'short') {
const dateDay = date.getDate();
const dateMonth = date.getMonth() + 1;
const dateYear = date.getFullYear();
- const zero = localStorage.getItem("datezero") === "true";
+ const zero = localStorage.getItem('datezero') === 'true';
- let day = zero ? ("00" + dateDay).slice(-2) : dateDay;
- let month = zero ? ("00" + dateMonth).slice(-2) : dateMonth;
+ let day = zero ? ('00' + dateDay).slice(-2) : dateDay;
+ let month = zero ? ('00' + dateMonth).slice(-2) : dateMonth;
let year = dateYear;
- switch (localStorage.getItem("dateFormat")) {
- case "MDY":
+ switch (localStorage.getItem('dateFormat')) {
+ case 'MDY':
day = dateMonth;
month = dateDay;
break;
- case "YMD":
+ case 'YMD':
day = dateYear;
year = dateDay;
break;
@@ -77,17 +76,17 @@ export default class DateWidget extends PureComponent {
}
let format;
- switch (localStorage.getItem("shortFormat")) {
- case "dots":
+ switch (localStorage.getItem('shortFormat')) {
+ case 'dots':
format = `${day}.${month}.${year}`;
break;
- case "dash":
+ case 'dash':
format = `${day}-${month}-${year}`;
break;
- case "gaps":
+ case 'gaps':
format = `${day} - ${month} - ${year}`;
break;
- case "slashes":
+ case 'slashes':
format = `${day}/${month}/${year}`;
break;
default:
@@ -99,31 +98,29 @@ export default class DateWidget extends PureComponent {
});
} else {
// Long date
- const lang = variables.languagecode.split("_")[0];
+ const lang = variables.languagecode.split('_')[0];
const datenth =
- localStorage.getItem("datenth") === "true"
- ? nth(date.getDate())
- : date.getDate();
+ localStorage.getItem('datenth') === 'true' ? nth(date.getDate()) : date.getDate();
const dateDay =
- localStorage.getItem("dayofweek") === "true"
- ? date.toLocaleDateString(lang, { weekday: "long" })
- : "";
- const dateMonth = date.toLocaleDateString(lang, { month: "long" });
+ localStorage.getItem('dayofweek') === 'true'
+ ? date.toLocaleDateString(lang, { weekday: 'long' })
+ : '';
+ const dateMonth = date.toLocaleDateString(lang, { month: 'long' });
const dateYear = date.getFullYear();
- let day = dateDay + " " + datenth;
+ let day = dateDay + ' ' + datenth;
let month = dateMonth;
let year = dateYear;
- switch (localStorage.getItem("longFormat")) {
- case "MDY":
+ switch (localStorage.getItem('longFormat')) {
+ case 'MDY':
day = dateMonth;
- month = dateDay + " " + datenth;;
+ month = dateDay + ' ' + datenth;
break;
- case "YMD":
+ case 'YMD':
day = dateYear;
- year = dateDay + " " + datenth;;
+ year = dateDay + ' ' + datenth;
break;
// DMY
default:
@@ -137,28 +134,28 @@ export default class DateWidget extends PureComponent {
}
componentDidMount() {
- EventBus.on("refresh", (data) => {
- if (data === "date" || data === "timezone") {
- if (localStorage.getItem("date") === "false") {
- return (this.date.current.style.display = "none");
+ EventBus.on('refresh', (data) => {
+ if (data === 'date' || data === 'timezone') {
+ if (localStorage.getItem('date') === 'false') {
+ return (this.date.current.style.display = 'none');
}
- this.date.current.style.display = "block";
+ this.date.current.style.display = 'block';
this.date.current.style.fontSize = `${Number(
- (localStorage.getItem("zoomDate") || 100) / 100
+ (localStorage.getItem('zoomDate') || 100) / 100,
)}em`;
this.getDate();
}
});
this.date.current.style.fontSize = `${Number(
- (localStorage.getItem("zoomDate") || 100) / 100
+ (localStorage.getItem('zoomDate') || 100) / 100,
)}em`;
this.getDate();
}
componentWillUnmount() {
- EventBus.off("refresh");
+ EventBus.off('refresh');
}
render() {
diff --git a/src/components/widgets/weather/Weather.jsx b/src/components/widgets/weather/Weather.jsx
index dca279ac..e9799216 100644
--- a/src/components/widgets/weather/Weather.jsx
+++ b/src/components/widgets/weather/Weather.jsx
@@ -1,43 +1,41 @@
-import variables from "modules/variables";
-import { PureComponent } from "react";
-import { WiHumidity, WiWindy, WiBarometer, WiCloud } from "react-icons/wi";
-import { MdDisabledVisible } from "react-icons/md";
+import variables from 'modules/variables';
+import { PureComponent } from 'react';
+import { WiHumidity, WiWindy, WiBarometer, WiCloud } from 'react-icons/wi';
+import { MdDisabledVisible } from 'react-icons/md';
-import WeatherIcon from "./WeatherIcon";
-import WindDirectionIcon from "./WindDirectionIcon";
+import WeatherIcon from './WeatherIcon';
+import WindDirectionIcon from './WindDirectionIcon';
-import EventBus from "modules/helpers/eventbus";
+import EventBus from 'modules/helpers/eventbus';
-import "./weather.scss";
+import './weather.scss';
export default class Weather extends PureComponent {
constructor() {
super();
this.state = {
- location: localStorage.getItem("location") || "London",
- icon: "",
- temp_text: "",
+ location: localStorage.getItem('location') || 'London',
+ icon: '',
+ temp_text: '',
weather: {
- temp: "",
- description: "",
- temp_min: "",
- temp_max: "",
- temp_feels_like: "",
- humidity: "",
- wind_speed: "",
- wind_degrees: "",
- cloudiness: "",
- visibility: "",
- pressure: "",
+ temp: '',
+ description: '',
+ temp_min: '',
+ temp_max: '',
+ temp_feels_like: '',
+ humidity: '',
+ wind_speed: '',
+ wind_degrees: '',
+ cloudiness: '',
+ visibility: '',
+ pressure: '',
},
};
}
async getWeather() {
- const zoomWeather = `${Number(
- (localStorage.getItem("zoomWeather") || 100) / 100
- )}em`;
- document.querySelector(".weather").style.fontSize = zoomWeather;
+ const zoomWeather = `${Number((localStorage.getItem('zoomWeather') || 100) / 100)}em`;
+ document.querySelector('.weather').style.fontSize = zoomWeather;
let data = {
weather: [
@@ -68,16 +66,16 @@ export default class Weather extends PureComponent {
data = await (
await fetch(
variables.constants.PROXY_URL +
- `/weather/current?city=${this.state.location}&lang=${variables.languagecode}`
+ `/weather/current?city=${this.state.location}&lang=${variables.languagecode}`,
)
).json();
}
- if (data.cod === "404") {
+ if (data.cod === '404') {
return this.setState({
location: variables.language.getMessage(
variables.languagecode,
- "widgets.weather.not_found"
+ 'widgets.weather.not_found',
),
});
}
@@ -86,22 +84,22 @@ export default class Weather extends PureComponent {
let temp_min = data.main.temp_min;
let temp_max = data.main.temp_max;
let temp_feels_like = data.main.temp_feels_like;
- let temp_text = "K";
+ let temp_text = 'K';
- switch (localStorage.getItem("tempformat")) {
- case "celsius":
+ switch (localStorage.getItem('tempformat')) {
+ case 'celsius':
temp -= 273.15;
temp_min -= 273.15;
temp_max -= 273.15;
temp_feels_like -= 273.15;
- temp_text = "°C";
+ temp_text = '°C';
break;
- case "fahrenheit":
+ case 'fahrenheit':
temp = (temp - 273.15) * 1.8 + 32;
temp_min = (temp_min - 273.15) * 1.8 + 32;
temp_max = (temp_max - 273.15) * 1.8 + 32;
temp_feels_like = (temp_feels_like - 273.15) * 1.8 + 32;
- temp_text = "°F";
+ temp_text = '°F';
break;
// kelvin
default:
@@ -130,12 +128,12 @@ export default class Weather extends PureComponent {
},
});
- document.querySelector(".weather svg").style.fontSize = zoomWeather;
+ document.querySelector('.weather svg').style.fontSize = zoomWeather;
}
componentDidMount() {
- EventBus.on("refresh", (data) => {
- if (data === "weather") {
+ EventBus.on('refresh', (data) => {
+ if (data === 'weather') {
this.getWeather();
}
});
@@ -144,17 +142,17 @@ export default class Weather extends PureComponent {
}
componentWillUnmount() {
- EventBus.off("refresh");
+ EventBus.off('refresh');
}
render() {
const enabled = (setting) => {
- return localStorage.getItem(setting) === "true";
+ return localStorage.getItem(setting) === 'true';
};
if (
this.state.location ===
- variables.language.getMessage(variables.languagecode, "weather.not_found")
+ variables.language.getMessage(variables.languagecode, 'weather.not_found')
) {
return (
@@ -164,33 +162,24 @@ export default class Weather extends PureComponent {
}
const minmax = () => {
- const mintemp = enabled("mintemp");
- const maxtemp = enabled("maxtemp");
+ const mintemp = enabled('mintemp');
+ const maxtemp = enabled('maxtemp');
if (!mintemp && !maxtemp) {
return null;
} else if (mintemp && !maxtemp) {
return (
-
- {this.state.weather.temp_min + this.state.temp_text}
-
+ {this.state.weather.temp_min + this.state.temp_text}
);
} else if (maxtemp && !mintemp) {
return (
-
- {this.state.weather.temp_max + this.state.temp_text}
-
+ {this.state.weather.temp_max + this.state.temp_text}
);
} else {
return (
<>
-
- {this.state.weather.temp_min + this.state.temp_text}
- {" "}
-
- {" "}
- {this.state.weather.temp_max + this.state.temp_text}
-
+ {this.state.weather.temp_min + this.state.temp_text} {' '}
+ {this.state.weather.temp_max + this.state.temp_text}
>
);
}
@@ -208,15 +197,10 @@ export default class Weather extends PureComponent {
{/*{enabled('humidity') ? {this.state.weather.humidity}% : null}*/}
- {enabled("feelsliketemp") ? (
-
- Feels like{" "}
- {this.state.weather.temp_feels_like + this.state.temp_text}
-
- ) : null}
- {enabled("showlocation") ? (
- {this.state.location}
+ {enabled('feelsliketemp') ? (
+ Feels like {this.state.weather.temp_feels_like + this.state.temp_text}
) : null}
+ {enabled('showlocation') ? {this.state.location} : null}
Upcoming Forecast
@@ -238,18 +222,18 @@ export default class Weather extends PureComponent {
Extra Information
- {enabled("cloudiness") ? (
+ {enabled('cloudiness') ? (
{this.state.weather.cloudiness}%
) : null}
- {enabled("windspeed") ? (
+ {enabled('windspeed') ? (
{this.state.weather.wind_speed}
- m/s {" "}
- {enabled("windDirection") ? (
+ m/s {' '}
+ {enabled('windDirection') ? (
) : null}
- {enabled("atmosphericpressure") ? (
+ {enabled('atmosphericpressure') ? (
{this.state.weather.pressure}
hPa
) : null}
- {enabled("weatherdescription") ? (
+ {enabled('weatherdescription') ? (
@@ -274,16 +258,12 @@ export default class Weather extends PureComponent {
{this.state.weather.description}
) : null}
- {enabled("visibility") ? (
+ {enabled('visibility') ? (
-
- {variables.language.getMessage(
- variables.languagecode,
- "widgets.weather.meters",
- {
- amount: this.state.weather.visibility,
- }
- )}
+
+ {variables.language.getMessage(variables.languagecode, 'widgets.weather.meters', {
+ amount: this.state.weather.visibility,
+ })}
) : null}
diff --git a/src/components/widgets/weather/WeatherIcon.jsx b/src/components/widgets/weather/WeatherIcon.jsx
index 7c0a60fe..84c32087 100644
--- a/src/components/widgets/weather/WeatherIcon.jsx
+++ b/src/components/widgets/weather/WeatherIcon.jsx
@@ -11,53 +11,53 @@ import {
WiThunderstorm,
WiSnow,
WiFog,
-} from "react-icons/wi";
+} from 'react-icons/wi';
export default function WeatherIcon({ name }) {
let icon;
// name is the openweathermap icon name, see https://openweathermap.org/weather-conditions
switch (name) {
- case "01d":
+ case '01d':
icon = ;
break;
- case "01n":
+ case '01n':
icon = ;
break;
- case "02d":
+ case '02d':
icon = ;
break;
- case "02n":
+ case '02n':
icon = ;
break;
- case "03d":
- case "03n":
+ case '03d':
+ case '03n':
icon = ;
break;
- case "04d":
- case "04n":
+ case '04d':
+ case '04n':
icon = ;
break;
- case "09d":
+ case '09d':
icon = ;
break;
- case "09n":
+ case '09n':
icon = ;
break;
- case "10d":
- case "10n":
+ case '10d':
+ case '10n':
icon = ;
break;
- case "11d":
- case "11n":
+ case '11d':
+ case '11n':
icon = ;
break;
- case "13d":
- case "13n":
+ case '13d':
+ case '13n':
icon = ;
break;
- case "50d":
- case "50n":
+ case '50d':
+ case '50n':
icon = ;
break;
default:
diff --git a/src/components/widgets/weather/WindDirectionIcon.jsx b/src/components/widgets/weather/WindDirectionIcon.jsx
index 6edfd432..941a4a3b 100644
--- a/src/components/widgets/weather/WindDirectionIcon.jsx
+++ b/src/components/widgets/weather/WindDirectionIcon.jsx
@@ -7,7 +7,7 @@ import {
WiDirectionUpLeft,
WiDirectionUpRight,
WiDirectionUp,
-} from "react-icons/wi";
+} from 'react-icons/wi';
// degrees are imported because of a potential bug, IDK what causes it, but now it is fixed
export default function WindDirectionIcon({ degrees }) {
@@ -15,43 +15,41 @@ export default function WindDirectionIcon({ degrees }) {
// convert the number OpenWeatherMap gives us to the closest direction or something
const directions = [
- "North",
- "North-West",
- "West",
- "South-West",
- "South",
- "South-East",
- "East",
- "North-East",
+ 'North',
+ 'North-West',
+ 'West',
+ 'South-West',
+ 'South',
+ 'South-East',
+ 'East',
+ 'North-East',
];
const direction =
- directions[
- Math.round(((degrees %= 360) < 0 ? degrees + 360 : degrees) / 45) % 8
- ];
+ directions[Math.round(((degrees %= 360) < 0 ? degrees + 360 : degrees) / 45) % 8];
switch (direction) {
- case "North":
+ case 'North':
icon = ;
break;
- case "North-West":
+ case 'North-West':
icon = ;
break;
- case "West":
+ case 'West':
icon = ;
break;
- case "South-West":
+ case 'South-West':
icon = ;
break;
- case "South":
+ case 'South':
icon = ;
break;
- case "South-East":
+ case 'South-East':
icon = ;
break;
- case "East":
+ case 'East':
icon = ;
break;
- case "North-East":
+ case 'North-East':
icon = ;
break;
default:
diff --git a/src/index.js b/src/index.js
index 8f1f67dc..36be0891 100644
--- a/src/index.js
+++ b/src/index.js
@@ -31,7 +31,7 @@ variables.language = new I18n(variables.languagecode, {
no: require('./translations/no.json'),
ru: require('./translations/ru.json'),
zh_CN: require('./translations/zh_CN.json'),
- id_ID: require('./translations/id_ID.json')
+ id_ID: require('./translations/id_ID.json'),
});
// set html language tag
@@ -50,4 +50,4 @@ if (localStorage.getItem('stats') === 'true') {
const container = document.getElementById('root');
const root = createRoot(container);
-root.render( );
+root.render( );
diff --git a/src/modules/constants.js b/src/modules/constants.js
index c73cabc9..5933aa09 100644
--- a/src/modules/constants.js
+++ b/src/modules/constants.js
@@ -13,8 +13,10 @@ export const WEBSITE_URL = 'https://muetab.com';
export const PRIVACY_URL = 'https://muetab.com/privacy';
export const BLOG_POST = 'https://blog.muetab.com/posts/version-6-0';
export const TRANSLATIONS_URL = 'https://docs.muetab.com/translations/';
-export const REPORT_ITEM = 'https://github.com/mue/marketplace/issues/new?assignees=&labels=item+report&template=item-report.md&title=%5BItem+Report%5D+';
-export const BUG_REPORT = 'https://github.com/mue/mue/issues/new?assignees=&labels=issue+report&template=bug-report.md&title=%5BBug%5D+';
+export const REPORT_ITEM =
+ 'https://github.com/mue/marketplace/issues/new?assignees=&labels=item+report&template=item-report.md&title=%5BItem+Report%5D+';
+export const BUG_REPORT =
+ 'https://github.com/mue/mue/issues/new?assignees=&labels=issue+report&template=bug-report.md&title=%5BBug%5D+';
export const DONATE_LINK = 'https://muetab.com/donate';
// Mue Info
diff --git a/src/modules/helpers/background/rgbToHsv.js b/src/modules/helpers/background/rgbToHsv.js
index b85e8a30..0bc0febb 100644
--- a/src/modules/helpers/background/rgbToHsv.js
+++ b/src/modules/helpers/background/rgbToHsv.js
@@ -21,9 +21,9 @@ export default function rgbToHSv({ red, green, blue }) {
if (rabs === v) {
h = bb - gg;
} else if (gabs === v) {
- h = (1 / 3) + rr - bb;
+ h = 1 / 3 + rr - bb;
} else if (babs === v) {
- h = (2 / 3) + gg - rr;
+ h = 2 / 3 + gg - rr;
}
if (h < 0) {
diff --git a/src/modules/helpers/background/setRgba.js b/src/modules/helpers/background/setRgba.js
index 34e9b47f..2a2b73b3 100644
--- a/src/modules/helpers/background/setRgba.js
+++ b/src/modules/helpers/background/setRgba.js
@@ -1,5 +1,5 @@
const isValidRGBValue = (value) => {
- return (typeof (value) === 'number' && Number.isNaN(value) === false && value >= 0 && value <= 255);
+ return typeof value === 'number' && Number.isNaN(value) === false && value >= 0 && value <= 255;
};
export default function setRGBA(red, green, blue, alpha) {
diff --git a/src/modules/helpers/background/widget.js b/src/modules/helpers/background/widget.js
index 610c0f9a..095319cf 100644
--- a/src/modules/helpers/background/widget.js
+++ b/src/modules/helpers/background/widget.js
@@ -1,6 +1,11 @@
// since there is so much code in the component, we have moved it to a separate file
export function videoCheck(url) {
- return url.startsWith('data:video/') || url.endsWith('.mp4') || url.endsWith('.webm') || url.endsWith('.ogg');
+ return (
+ url.startsWith('data:video/') ||
+ url.endsWith('.mp4') ||
+ url.endsWith('.webm') ||
+ url.endsWith('.ogg')
+ );
}
export function offlineBackground() {
@@ -10,16 +15,17 @@ export function offlineBackground() {
const photographers = Object.keys(offlineImages);
const photographer = photographers[Math.floor(Math.random() * photographers.length)];
- const randomImage = offlineImages[photographer].photo[
- Math.floor(Math.random() * offlineImages[photographer].photo.length)
- ];
+ const randomImage =
+ offlineImages[photographer].photo[
+ Math.floor(Math.random() * offlineImages[photographer].photo.length)
+ ];
const object = {
url: `./offline-images/${randomImage}.webp`,
photoInfo: {
offline: true,
- credit: photographer
- }
+ credit: photographer,
+ },
};
localStorage.setItem('currentBackground', JSON.stringify(object));
@@ -33,12 +39,16 @@ function gradientStyleBuilder({ type, angle, gradient }) {
return {
type: 'colour',
- style: `background:${gradient[0]?.colour};${grad}`
+ style: `background:${gradient[0]?.colour};${grad}`,
};
}
export function getGradient() {
- const customBackgroundColour = localStorage.getItem('customBackgroundColour') || {'angle':'180','gradient':[{'colour':'#ffb032','stop':0}],'type':'linear'};
+ const customBackgroundColour = localStorage.getItem('customBackgroundColour') || {
+ angle: '180',
+ gradient: [{ colour: '#ffb032', stop: 0 }],
+ type: 'linear',
+ };
let gradientSettings = '';
try {
@@ -47,7 +57,11 @@ export function getGradient() {
const hexColorRegex = /#[0-9a-fA-F]{6}/s;
if (hexColorRegex.exec(customBackgroundColour)) {
// Colour used to be simply a hex colour or a NULL value before it was a JSON object. This automatically upgrades the hex colour value to the new standard. (NULL would not trigger an exception)
- gradientSettings = { 'type': 'linear', 'angle': '180', 'gradient': [{ 'colour': customBackgroundColour, 'stop': 0 }] };
+ gradientSettings = {
+ type: 'linear',
+ angle: '180',
+ gradient: [{ colour: customBackgroundColour, stop: 0 }],
+ };
localStorage.setItem('customBackgroundColour', JSON.stringify(gradientSettings));
}
}
@@ -59,16 +73,30 @@ export function getGradient() {
export function randomColourStyleBuilder(type) {
// randomColour based on https://stackoverflow.com/a/5092872
- const randomColour = () => '#000000'.replace(/0/g, () => { return (~~(Math.random()*16)).toString(16) });
+ const randomColour = () =>
+ '#000000'.replace(/0/g, () => {
+ return (~~(Math.random() * 16)).toString(16);
+ });
let style = `background:${randomColour()};`;
if (type === 'random_gradient') {
- const directions = ['to right', 'to left', 'to bottom', 'to top', 'to bottom right', 'to bottom left', 'to top right', 'to top left'];
- style = `background:linear-gradient(${directions[Math.floor(Math.random() * directions.length)]}, ${randomColour()}, ${randomColour()});`;
+ const directions = [
+ 'to right',
+ 'to left',
+ 'to bottom',
+ 'to top',
+ 'to bottom right',
+ 'to bottom left',
+ 'to top right',
+ 'to top left',
+ ];
+ style = `background:linear-gradient(${
+ directions[Math.floor(Math.random() * directions.length)]
+ }, ${randomColour()}, ${randomColour()});`;
}
return {
type: 'colour',
- style
- }
+ style,
+ };
}
diff --git a/src/modules/helpers/date.js b/src/modules/helpers/date.js
index 62e7ee65..30b97381 100644
--- a/src/modules/helpers/date.js
+++ b/src/modules/helpers/date.js
@@ -16,5 +16,9 @@ export function nth(d) {
}
export function convertTimezone(date, tz) {
- return new Date((typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', { timeZone: tz }));
+ return new Date(
+ (typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', {
+ timeZone: tz,
+ }),
+ );
}
diff --git a/src/modules/helpers/eventbus.js b/src/modules/helpers/eventbus.js
index 49e25b0f..affb3ca6 100644
--- a/src/modules/helpers/eventbus.js
+++ b/src/modules/helpers/eventbus.js
@@ -6,9 +6,11 @@ export default class EventBus {
}
static dispatch(event, data) {
- document.dispatchEvent(new CustomEvent(event, {
- detail: data
- }));
+ document.dispatchEvent(
+ new CustomEvent(event, {
+ detail: data,
+ }),
+ );
}
static off(event, callback) {
diff --git a/src/modules/helpers/experimental.js b/src/modules/helpers/experimental.js
index 38195aa3..2cf8ca1c 100644
--- a/src/modules/helpers/experimental.js
+++ b/src/modules/helpers/experimental.js
@@ -22,7 +22,8 @@ export default function ExperimentalInit() {
debugger;
}
break;
- default: break;
+ default:
+ break;
}
};
}
diff --git a/src/modules/helpers/marketplace.js b/src/modules/helpers/marketplace.js
index d06b065b..3dedf402 100644
--- a/src/modules/helpers/marketplace.js
+++ b/src/modules/helpers/marketplace.js
@@ -7,7 +7,8 @@ function showReminder() {
// based on https://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links
export function urlParser(input) {
- const urlPattern = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_+.~#?&//=]*)/;
+ const urlPattern =
+ /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_+.~#?&//=]*)/;
return input.replace(urlPattern, '$& ');
}
@@ -20,7 +21,7 @@ export function install(type, input, sideload) {
Object.keys(localStorage).forEach((key) => {
oldSettings.push({
name: key,
- value: localStorage.getItem(key)
+ value: localStorage.getItem(key),
});
});
@@ -33,7 +34,7 @@ export function install(type, input, sideload) {
case 'photos':
const currentPhotos = JSON.parse(localStorage.getItem('photo_packs')) || [];
- input.photos.forEach(photo => {
+ input.photos.forEach((photo) => {
currentPhotos.push(photo);
});
localStorage.setItem('photo_packs', JSON.stringify(currentPhotos));
@@ -63,8 +64,8 @@ export function install(type, input, sideload) {
installed.push({
content: {
updated: 'Unpublished',
- data: input
- }
+ data: input,
+ },
});
} else {
installed.push(input);
@@ -94,9 +95,11 @@ export function uninstall(type, name) {
case 'photos':
const installedContents = JSON.parse(localStorage.getItem('photo_packs'));
- const packContents = JSON.parse(localStorage.getItem('installed')).find(content => content.name === name);
+ const packContents = JSON.parse(localStorage.getItem('installed')).find(
+ (content) => content.name === name,
+ );
// todo: make it find in photo_packs all the ones in installed for that pack and remove
- console.log(packContents)
+ console.log(packContents);
installedContents.forEach((item, index) => {
if (packContents.photos.includes(item)) {
installedContents.splice(index, 1);
@@ -121,4 +124,4 @@ export function uninstall(type, name) {
}
localStorage.setItem('installed', JSON.stringify(installed));
-};
+}
diff --git a/src/modules/helpers/settings/index.js b/src/modules/helpers/settings/index.js
index d725032d..90e32296 100644
--- a/src/modules/helpers/settings/index.js
+++ b/src/modules/helpers/settings/index.js
@@ -12,7 +12,10 @@ export function setDefaultSettings(reset) {
// Languages
const languageCodes = languages.map(({ value }) => value);
- const browserLanguage = (navigator.languages && navigator.languages.find((lang) => lang.replace('-', '_') && languageCodes.includes(lang))) || navigator.language.replace('-', '_');
+ const browserLanguage =
+ (navigator.languages &&
+ navigator.languages.find((lang) => lang.replace('-', '_') && languageCodes.includes(lang))) ||
+ navigator.language.replace('-', '_');
if (languageCodes.includes(browserLanguage)) {
localStorage.setItem('language', browserLanguage);
@@ -63,7 +66,7 @@ export function loadSettings(hotreload) {
});
}
- if (localStorage.getItem('animations') === 'false') {
+ if (localStorage.getItem('animations') === 'false') {
document.body.classList.add('no-animations');
} else {
document.body.classList.remove('no-animations');
@@ -79,7 +82,7 @@ export function loadSettings(hotreload) {
try {
document.querySelector('.' + element).classList.add('textBorder');
} catch (e) {
- // Disregard exception
+ // Disregard exception
}
});
} else {
@@ -88,7 +91,7 @@ export function loadSettings(hotreload) {
try {
document.querySelector('.' + element).classList.remove('textBorder');
} catch (e) {
- // Disregard exception
+ // Disregard exception
}
});
}
@@ -112,7 +115,9 @@ export function loadSettings(hotreload) {
url = `@import url('https://fonts.googleapis.com/css2?family=${font}&display=swap');`;
}
- document.head.insertAdjacentHTML('beforeend', `
+ document.head.insertAdjacentHTML(
+ 'beforeend',
+ `
- `);
+ `,
+ );
}
// everything below this shouldn't run on a hot reload event
@@ -153,7 +159,7 @@ export function loadSettings(hotreload) {
`);
}
-// in a nutshell, this function saves all of the current settings, resets them, sets the defaults and then overrides
+// in a nutshell, this function saves all of the current settings, resets them, sets the defaults and then overrides
// the new settings with the old saved messages where they exist
export function moveSettings() {
const currentSettings = Object.keys(localStorage);
diff --git a/src/modules/helpers/settings/modals.js b/src/modules/helpers/settings/modals.js
index 7cfe89cb..442d50ea 100644
--- a/src/modules/helpers/settings/modals.js
+++ b/src/modules/helpers/settings/modals.js
@@ -7,17 +7,33 @@ export function saveFile(data, filename = 'file', type = 'text/json') {
if (typeof data === 'object') {
data = JSON.stringify(data, undefined, 4);
}
-
+
const blob = new Blob([data], { type });
const event = document.createEvent('MouseEvents');
const a = document.createElement('a');
-
+
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.dataset.downloadurl = [type, a.download, a.href].join(':');
-
- event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+
+ event.initMouseEvent(
+ 'click',
+ true,
+ false,
+ window,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ false,
+ false,
+ false,
+ false,
+ 0,
+ null,
+ );
a.dispatchEvent(event);
}
@@ -44,39 +60,39 @@ export function importSettings(e) {
export function values(type) {
const marks = {
zoom: [
- { value: 10, label: '0.1x' },
- { value: 100, label: '1x' },
- { value: 200, label: '2x' },
- { value: 400, label: '4x' }
+ { value: 10, label: '0.1x' },
+ { value: 100, label: '1x' },
+ { value: 200, label: '2x' },
+ { value: 400, label: '4x' },
],
toast: [
- { value: 500, label: '0.5s' },
- { value: 1000, label: '1s' },
- { value: 1500, label: '1.5s' },
- { value: 2000, label: '2s' },
- { value: 2500, label: '2.5s' },
- { value: 3000, label: '3s' },
- { value: 4000, label: '4s' },
- { value: 5000, label: '5s'}
+ { value: 500, label: '0.5s' },
+ { value: 1000, label: '1s' },
+ { value: 1500, label: '1.5s' },
+ { value: 2000, label: '2s' },
+ { value: 2500, label: '2.5s' },
+ { value: 3000, label: '3s' },
+ { value: 4000, label: '4s' },
+ { value: 5000, label: '5s' },
],
background: [
- { value: 0, label: '0%'},
- { value: 25, label: '25%' },
- { value: 50, label: '50%' },
- { value: 75, label: '75%' },
- { value: 100, label: '100%' }
+ { value: 0, label: '0%' },
+ { value: 25, label: '25%' },
+ { value: 50, label: '50%' },
+ { value: 75, label: '75%' },
+ { value: 100, label: '100%' },
],
experimental: [
{ value: 0, label: '0s' },
- { value: 500, label: '0.5s' },
- { value: 1000, label: '1s' },
- { value: 1500, label: '1.5s' },
- { value: 2000, label: '2s' },
- { value: 2500, label: '2.5s' },
- { value: 3000, label: '3s' },
- { value: 4000, label: '4s' },
- { value: 5000, label: '5s'}
- ]
+ { value: 500, label: '0.5s' },
+ { value: 1000, label: '1s' },
+ { value: 1500, label: '1.5s' },
+ { value: 2000, label: '2s' },
+ { value: 2500, label: '2.5s' },
+ { value: 3000, label: '3s' },
+ { value: 4000, label: '4s' },
+ { value: 5000, label: '5s' },
+ ],
};
return marks[type];
diff --git a/src/modules/helpers/stats.js b/src/modules/helpers/stats.js
index f402de4a..813ef567 100644
--- a/src/modules/helpers/stats.js
+++ b/src/modules/helpers/stats.js
@@ -21,7 +21,7 @@ export default class Stats {
static async tabLoad() {
const data = JSON.parse(localStorage.getItem('statsData'));
- data['tabs-opened'] = data['tabs-opened'] + 1 || 1;
+ data['tabs-opened'] = data['tabs-opened'] + 1 || 1;
localStorage.setItem('statsData', JSON.stringify(data));
}
}
diff --git a/src/modules/variables.js b/src/modules/variables.js
index e6fe6ca0..0fea0e8f 100644
--- a/src/modules/variables.js
+++ b/src/modules/variables.js
@@ -5,10 +5,10 @@ const variables = {
languagecode: '',
stats: {
tabLoad: () => '',
- postEvent: () => ''
+ postEvent: () => '',
},
//keybinds: {},
- constants: Constants
+ constants: Constants,
};
export default variables;
diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss
index 893b8951..6204cf37 100644
--- a/src/scss/_variables.scss
+++ b/src/scss/_variables.scss
@@ -61,7 +61,7 @@ $themes: (
'color': rgb(0, 0, 0),
'subColor': #333333,
'borderRadius': 12px,
- 'boxShadow': 0 0 0 1px #E7E3E9,
+ 'boxShadow': 0 0 0 1px #e7e3e9,
'btn-background': #fff,
'btn-backgroundHover': rgba(247, 250, 252, 0.9),
'modal-background': #fff,
diff --git a/src/translations/id_ID.json b/src/translations/id_ID.json
index 395d8a6c..40b05616 100644
--- a/src/translations/id_ID.json
+++ b/src/translations/id_ID.json
@@ -1,555 +1,554 @@
{
- "tabname": "Tab Baru",
- "widgets": {
- "greeting": {
- "morning": "Selamat Pagi",
- "afternoon": "Selamat Siang",
- "evening": "Selamat Malam",
- "christmas": "Selamat Natal",
- "newyear": "Selamat Tahun Baru",
- "halloween": "Selamat Hari Halloween",
- "birthday": "Selamat Ulang Tahun"
- },
- "background": {
- "credit": "Foto oleh",
- "unsplash": "di Unsplash",
- "pexels": "di Pexels",
- "information": "Informasi",
- "download": "Unduh"
- },
- "search": "Cari",
- "quicklinks": {
- "new": "Pranala Baru",
- "name": "Nama",
- "url": "URL",
- "icon": "Ikon (opsional)",
- "add": "Tambah",
- "name_error": "Harap cantumkan nama",
- "url_error": "Harap cantumkan URL"
- },
- "date": {
- "week": "Pekan"
- },
- "weather": {
- "not_found": "Tidak Ditemukan",
- "meters": "{amount} meter"
- },
- "navbar": {
- "tooltips": {
- "refresh": "Muat Ulang"
- },
- "notes": {
- "title": "Catatan",
- "placeholder": "Ketik di sini"
- }
- }
+ "tabname": "Tab Baru",
+ "widgets": {
+ "greeting": {
+ "morning": "Selamat Pagi",
+ "afternoon": "Selamat Siang",
+ "evening": "Selamat Malam",
+ "christmas": "Selamat Natal",
+ "newyear": "Selamat Tahun Baru",
+ "halloween": "Selamat Hari Halloween",
+ "birthday": "Selamat Ulang Tahun"
},
- "modals": {
- "main": {
- "title": "Setelan",
- "loading": "Sedang memuat...",
- "file_upload_error": "Ukuran berkas lebih dari 2MB",
- "navbar": {
- "settings": "Pengaturan",
- "addons": "Add-ons",
- "marketplace": "Marketplace"
+ "background": {
+ "credit": "Foto oleh",
+ "unsplash": "di Unsplash",
+ "pexels": "di Pexels",
+ "information": "Informasi",
+ "download": "Unduh"
+ },
+ "search": "Cari",
+ "quicklinks": {
+ "new": "Pranala Baru",
+ "name": "Nama",
+ "url": "URL",
+ "icon": "Ikon (opsional)",
+ "add": "Tambah",
+ "name_error": "Harap cantumkan nama",
+ "url_error": "Harap cantumkan URL"
+ },
+ "date": {
+ "week": "Pekan"
+ },
+ "weather": {
+ "not_found": "Tidak Ditemukan",
+ "meters": "{amount} meter"
+ },
+ "navbar": {
+ "tooltips": {
+ "refresh": "Muat Ulang"
+ },
+ "notes": {
+ "title": "Catatan",
+ "placeholder": "Ketik di sini"
+ }
+ }
+ },
+ "modals": {
+ "main": {
+ "title": "Setelan",
+ "loading": "Sedang memuat...",
+ "file_upload_error": "Ukuran berkas lebih dari 2MB",
+ "navbar": {
+ "settings": "Pengaturan",
+ "addons": "Add-ons",
+ "marketplace": "Marketplace"
+ },
+ "error_boundary": {
+ "title": "Galat",
+ "message": "Gagal memuat komponen Mue",
+ "refresh": "Muat Ulang"
+ },
+ "settings": {
+ "enabled": "Aktif",
+ "reminder": {
+ "title": "PERHATIAN",
+ "message": "Agar semua perubahan dapat diterapkan, harap muat ulang halaman ini"
},
- "error_boundary": {
- "title": "Galat",
- "message": "Gagal memuat komponen Mue",
- "refresh": "Muat Ulang"
- },
- "settings": {
- "enabled": "Aktif",
- "reminder": {
- "title": "PERHATIAN",
- "message": "Agar semua perubahan dapat diterapkan, harap muat ulang halaman ini"
- },
- "sections": {
- "time": {
- "title": "Waktu",
- "format": "Format",
- "type": "Tipe",
- "digital": {
- "title": "Digital",
- "seconds": "Detik",
- "twentyfourhour": "24",
- "twelvehour": "12 (AM/PM)",
- "zero": "Zero-padded"
- },
- "analogue": {
- "title": "Analog",
- "second_hand": "Jarum Detik",
- "minute_hand": "Jarum Menit",
- "hour_hand": "Jarum Jam",
- "hour_marks": "Penanda Jam",
- "minute_marks": "Penanda Menit"
- },
- "percentage_complete": "Persentase"
+ "sections": {
+ "time": {
+ "title": "Waktu",
+ "format": "Format",
+ "type": "Tipe",
+ "digital": {
+ "title": "Digital",
+ "seconds": "Detik",
+ "twentyfourhour": "24",
+ "twelvehour": "12 (AM/PM)",
+ "zero": "Zero-padded"
},
- "date": {
- "title": "Tanggal",
- "week_number": "Nomor Urut Pekan",
- "day_of_week": "Hari",
- "datenth": "Imbuhan nth",
- "type": {
- "short": "Ringkas",
- "long": "Lengkap"
- },
- "short_date": "Tanggal Ringkas",
- "short_format": "Format Ringkas",
- "short_separator": {
- "title": "Pemisah",
- "dots": "Titik",
- "dash": "Setrip",
- "gaps": "Spasi",
- "slashes": "Garis Miring"
+ "analogue": {
+ "title": "Analog",
+ "second_hand": "Jarum Detik",
+ "minute_hand": "Jarum Menit",
+ "hour_hand": "Jarum Jam",
+ "hour_marks": "Penanda Jam",
+ "minute_marks": "Penanda Menit"
+ },
+ "percentage_complete": "Persentase"
+ },
+ "date": {
+ "title": "Tanggal",
+ "week_number": "Nomor Urut Pekan",
+ "day_of_week": "Hari",
+ "datenth": "Imbuhan nth",
+ "type": {
+ "short": "Ringkas",
+ "long": "Lengkap"
+ },
+ "short_date": "Tanggal Ringkas",
+ "short_format": "Format Ringkas",
+ "short_separator": {
+ "title": "Pemisah",
+ "dots": "Titik",
+ "dash": "Setrip",
+ "gaps": "Spasi",
+ "slashes": "Garis Miring"
+ }
+ },
+ "quote": {
+ "title": "Kutipan",
+ "author_link": "Pranala penulis",
+ "custom": "Kutipan kustom",
+ "custom_author": "Penulis kustom",
+ "add": "Tambahkan kutipan",
+ "buttons": {
+ "title": "Aksi",
+ "copy": "Salin",
+ "tweet": "Tweet",
+ "favourite": "Favorit"
+ }
+ },
+ "greeting": {
+ "title": "Sapaan",
+ "events": "Hari Besar",
+ "default": "Sapaan bawaan",
+ "name": "Nama",
+ "birthday": "Hari Ulang Tahun",
+ "birthday_age": "Usia",
+ "birthday_date": "Tanggal Ulang Tahun"
+ },
+ "background": {
+ "title": "Background",
+ "ddg_image_proxy": "Gunakan proksi gambar DuckDuckGo",
+ "transition": "Transisi Fade-in",
+ "photo_information": "Tampilkan informasi foto",
+ "show_map": "Tampilkan informasi lokasi foto jika ada",
+ "category": "Kategori",
+ "buttons": {
+ "title": "Aksi",
+ "view": "Layar Penuh",
+ "favourite": "Favorit",
+ "download": "Unduh"
+ },
+ "effects": {
+ "title": "Efek",
+ "blur": "Sesuaikan blur",
+ "brightness": "Sesuaikan kecerahan",
+ "filters": {
+ "title": "Filter background",
+ "amount": "Sesuaikan filter",
+ "grayscale": "Grayscale",
+ "sepia": "Sepia",
+ "invert": "Invert",
+ "saturate": "Saturate",
+ "contrast": "Contrast"
}
},
+ "type": {
+ "title": "Tipe",
+ "api": "API",
+ "custom_image": "Gambar kustom",
+ "custom_colour": "Warna/gradasi kustom",
+ "random_colour": "Warna acak",
+ "random_gradient": "Gradasi acak"
+ },
+ "source": {
+ "title": "Sumber",
+ "api": "Background API",
+ "custom_background": "Background kustom",
+ "custom_colour": "Background warna kustom",
+ "upload": "Unggah",
+ "add_colour": "Tambah warna",
+ "add_background": "Tambah background",
+ "add_url": "Tambah URL",
+ "disabled": "Nonaktif",
+ "loop_video": "Ulang video",
+ "mute_video": "Bisukan video",
+ "quality": {
+ "title": "Kualitas",
+ "original": "Original",
+ "high": "High Quality",
+ "normal": "Normal Quality",
+ "datasaver": "Data Saver"
+ }
+ },
+ "interval": {
+ "title": "Ubah setiap",
+ "minute": "Menit",
+ "half_hour": "Setengah jam",
+ "hour": "Jam",
+ "day": "Hari",
+ "month": "Bulan"
+ }
+ },
+ "search": {
+ "title": "Cari",
+ "search_engine": "Mesin pencari",
+ "custom": "URL kustom",
+ "autocomplete": "Autocomplete",
+ "autocomplete_provider": "Provider Autocomplete",
+ "voice_search": "Pencarian suara",
+ "dropdown": "Dropdown pencarian"
+ },
+ "weather": {
+ "title": "Cuaca",
+ "location": "Lokasi",
+ "auto": "Otomatis",
+ "temp_format": {
+ "title": "Format suhu",
+ "celsius": "Celsius",
+ "fahrenheit": "Fahrenheit",
+ "kelvin": "Kelvin"
+ },
+ "extra_info": {
+ "title": "Informasi Tambahan",
+ "show_location": "Tampilkan lokasi",
+ "show_description": "Tampilkan deskripsi",
+ "cloudiness": "Kondisi awan",
+ "humidity": "Kelembapan",
+ "visibility": "Jarak pandang",
+ "wind_speed": "Kecepatan angin",
+ "wind_direction": "Arah angin",
+ "min_temp": "Temperatur minimal",
+ "max_temp": "Temperatur maksimal",
+ "atmospheric_pressure": "Tekanan atmosfer"
+ }
+ },
+ "quicklinks": {
+ "title": "Pranala cepat",
+ "open_new": "Buka di tab baru",
+ "tooltip": "Tooltip",
+ "text_only": "Hanya teks"
+ },
+ "message": {
+ "title": "Pesan",
+ "add": "Tambahkan pesan",
+ "text": "Teks"
+ },
+ "appearance": {
+ "title": "Antarmuka",
+ "theme": {
+ "title": "Tema",
+ "auto": "Otomatis",
+ "light": "Light",
+ "dark": "Dark"
+ },
+ "navbar": {
+ "title": "Navbar",
+ "notes": "Catatan",
+ "refresh": "Muat ulang",
+ "hover": "Tampilkan ketika hover",
+ "refresh_options": {
+ "none": "Nonaktif",
+ "page": "Halaman"
+ }
+ },
+ "font": {
+ "title": "Font",
+ "custom": "Font kustom",
+ "google": "Impor dari Google Fonts",
+ "weight": {
+ "title": "Font weight",
+ "thin": "Thin",
+ "extra_light": "Extra Light",
+ "light": "Light",
+ "normal": "Normal",
+ "medium": "Medium",
+ "semi_bold": "Semi-Bold",
+ "bold": "Bold",
+ "extra_bold": "Extra-Bold"
+ },
+ "style": {
+ "title": "Font style",
+ "normal": "Normal",
+ "italic": "Italic",
+ "oblique": "Oblique"
+ }
+ },
+ "accessibility": {
+ "title": "Aksesibilitas",
+ "animations": "Animasi",
+ "text_shadow": "Widget text shadow",
+ "widget_zoom": "Widget zoom",
+ "toast_duration": "Durasi toast",
+ "milliseconds": "milliseconds"
+ }
+ },
+ "order": {
+ "title": "Urutan Widget"
+ },
+ "advanced": {
+ "title": "Lanjutan",
+ "offline_mode": "Mode Luring",
+ "data": "Data",
+ "reset_modal": {
+ "title": "PERINGATAN",
+ "question": "Apakah Anda ingin me-reset Mue?",
+ "information": "Aksi ini akan menghapus semua data Anda. Harap ekspor pengaturan Anda sebelum melakukan reset.",
+ "cancel": "Batal"
+ },
+ "customisation": "Kustomisasi",
+ "custom_css": "CSS Kustom",
+ "custom_js": "JS Kustom",
+ "tab_name": "Nama tab",
+ "timezone": {
+ "title": "Zona Waktu",
+ "automatic": "Otomatis"
+ },
+ "experimental_warning": "Harap diperhatikan bahwa tim Mue tidak menyediakan dukungan jika Anda mengaktifkan mode experimental. Harap nonaktifkan terlebih dahulu dan lihat apabila kendala Anda masih terjadi sebelum menghubungi kami."
+ },
+ "stats": {
+ "title": "Statistik",
+ "warning": "Anda harus mengizinkan penggunaan data untuk menggunakan fitur ini. Data hanya akan disimpan di perangkat Anda saja.",
+ "sections": {
+ "tabs_opened": "Riwayat tab terbuka",
+ "backgrounds_favourited": "Backgrounds favorit",
+ "backgrounds_downloaded": "Backgrounds terunduh",
+ "quotes_favourited": "Kutipan favorit",
+ "quicklinks_added": "Pranala cepat ditambahkan",
+ "settings_changed": "Perubahan pengaturan",
+ "addons_installed": "Add-ons ditambahkan"
+ },
+ "usage": "Statistik Penggunaan"
+ },
+ "keybinds": {
+ "title": "Keybinds",
+ "recording": "Recording...",
+ "click_to_record": "Click to record",
+ "background": {
+ "favourite": "Favourite background",
+ "maximise": "Maximise background",
+ "download": "Download background",
+ "show_info": "Show background information"
+ },
"quote": {
- "title": "Kutipan",
- "author_link": "Pranala penulis",
- "custom": "Kutipan kustom",
- "custom_author": "Penulis kustom",
- "add": "Tambahkan kutipan",
- "buttons": {
- "title": "Aksi",
- "copy": "Salin",
- "tweet": "Tweet",
- "favourite": "Favorit"
- }
+ "favourite": "Favourite quote",
+ "copy": "Copy quote",
+ "tweet": "Tweet quote"
},
- "greeting": {
- "title": "Sapaan",
- "events": "Hari Besar",
- "default": "Sapaan bawaan",
- "name": "Nama",
- "birthday": "Hari Ulang Tahun",
- "birthday_age": "Usia",
- "birthday_date": "Tanggal Ulang Tahun"
+ "notes": {
+ "pin": "Pin notes",
+ "copy": "Copy notes"
},
- "background": {
- "title": "Background",
- "ddg_image_proxy": "Gunakan proksi gambar DuckDuckGo",
- "transition": "Transisi Fade-in",
- "photo_information": "Tampilkan informasi foto",
- "show_map": "Tampilkan informasi lokasi foto jika ada",
- "category": "Kategori",
- "buttons": {
- "title": "Aksi",
- "view": "Layar Penuh",
- "favourite": "Favorit",
- "download": "Unduh"
- },
- "effects": {
- "title": "Efek",
- "blur": "Sesuaikan blur",
- "brightness": "Sesuaikan kecerahan",
- "filters": {
- "title": "Filter background",
- "amount": "Sesuaikan filter",
- "grayscale": "Grayscale",
- "sepia": "Sepia",
- "invert": "Invert",
- "saturate": "Saturate",
- "contrast": "Contrast"
- }
- },
- "type": {
- "title": "Tipe",
- "api": "API",
- "custom_image": "Gambar kustom",
- "custom_colour": "Warna/gradasi kustom",
- "random_colour": "Warna acak",
- "random_gradient": "Gradasi acak"
- },
- "source": {
- "title": "Sumber",
- "api": "Background API",
- "custom_background": "Background kustom",
- "custom_colour": "Background warna kustom",
- "upload": "Unggah",
- "add_colour": "Tambah warna",
- "add_background": "Tambah background",
- "add_url": "Tambah URL",
- "disabled": "Nonaktif",
- "loop_video": "Ulang video",
- "mute_video": "Bisukan video",
- "quality": {
- "title": "Kualitas",
- "original": "Original",
- "high": "High Quality",
- "normal": "Normal Quality",
- "datasaver": "Data Saver"
- }
- },
- "interval": {
- "title": "Ubah setiap",
- "minute": "Menit",
- "half_hour": "Setengah jam",
- "hour": "Jam",
- "day": "Hari",
- "month": "Bulan"
- }
- },
- "search": {
- "title": "Cari",
- "search_engine": "Mesin pencari",
- "custom": "URL kustom",
- "autocomplete": "Autocomplete",
- "autocomplete_provider": "Provider Autocomplete",
- "voice_search": "Pencarian suara",
- "dropdown": "Dropdown pencarian"
- },
- "weather": {
- "title": "Cuaca",
- "location": "Lokasi",
- "auto": "Otomatis",
- "temp_format": {
- "title": "Format suhu",
- "celsius": "Celsius",
- "fahrenheit": "Fahrenheit",
- "kelvin": "Kelvin"
- },
- "extra_info": {
- "title": "Informasi Tambahan",
- "show_location": "Tampilkan lokasi",
- "show_description": "Tampilkan deskripsi",
- "cloudiness": "Kondisi awan",
- "humidity": "Kelembapan",
- "visibility": "Jarak pandang",
- "wind_speed": "Kecepatan angin",
- "wind_direction": "Arah angin",
- "min_temp": "Temperatur minimal",
- "max_temp": "Temperatur maksimal",
- "atmospheric_pressure": "Tekanan atmosfer"
- }
- },
- "quicklinks": {
- "title": "Pranala cepat",
- "open_new": "Buka di tab baru",
- "tooltip": "Tooltip",
- "text_only": "Hanya teks"
- },
- "message": {
- "title": "Pesan",
- "add": "Tambahkan pesan",
- "text": "Teks"
- },
- "appearance": {
- "title": "Antarmuka",
- "theme": {
- "title": "Tema",
- "auto": "Otomatis",
- "light": "Light",
- "dark": "Dark"
- },
- "navbar": {
- "title": "Navbar",
- "notes": "Catatan",
- "refresh": "Muat ulang",
- "hover": "Tampilkan ketika hover",
- "refresh_options": {
- "none": "Nonaktif",
- "page": "Halaman"
- }
- },
- "font": {
- "title": "Font",
- "custom": "Font kustom",
- "google": "Impor dari Google Fonts",
- "weight": {
- "title": "Font weight",
- "thin": "Thin",
- "extra_light": "Extra Light",
- "light": "Light",
- "normal": "Normal",
- "medium": "Medium",
- "semi_bold": "Semi-Bold",
- "bold": "Bold",
- "extra_bold": "Extra-Bold"
- },
- "style": {
- "title": "Font style",
- "normal": "Normal",
- "italic": "Italic",
- "oblique": "Oblique"
- }
- },
- "accessibility": {
- "title": "Aksesibilitas",
- "animations": "Animasi",
- "text_shadow": "Widget text shadow",
- "widget_zoom": "Widget zoom",
- "toast_duration": "Durasi toast",
- "milliseconds": "milliseconds"
- }
- },
- "order": {
- "title": "Urutan Widget"
- },
- "advanced": {
- "title": "Lanjutan",
- "offline_mode": "Mode Luring",
- "data": "Data",
- "reset_modal": {
- "title": "PERINGATAN",
- "question": "Apakah Anda ingin me-reset Mue?",
- "information": "Aksi ini akan menghapus semua data Anda. Harap ekspor pengaturan Anda sebelum melakukan reset.",
- "cancel": "Batal"
- },
- "customisation": "Kustomisasi",
- "custom_css": "CSS Kustom",
- "custom_js": "JS Kustom",
- "tab_name": "Nama tab",
- "timezone": {
- "title": "Zona Waktu",
- "automatic": "Otomatis"
- },
- "experimental_warning": "Harap diperhatikan bahwa tim Mue tidak menyediakan dukungan jika Anda mengaktifkan mode experimental. Harap nonaktifkan terlebih dahulu dan lihat apabila kendala Anda masih terjadi sebelum menghubungi kami."
- },
- "stats": {
- "title": "Statistik",
- "warning": "Anda harus mengizinkan penggunaan data untuk menggunakan fitur ini. Data hanya akan disimpan di perangkat Anda saja.",
- "sections": {
- "tabs_opened": "Riwayat tab terbuka",
- "backgrounds_favourited": "Backgrounds favorit",
- "backgrounds_downloaded": "Backgrounds terunduh",
- "quotes_favourited": "Kutipan favorit",
- "quicklinks_added": "Pranala cepat ditambahkan",
- "settings_changed": "Perubahan pengaturan",
- "addons_installed": "Add-ons ditambahkan"
- },
- "usage": "Statistik Penggunaan"
- },
- "keybinds": {
- "title": "Keybinds",
- "recording": "Recording...",
- "click_to_record": "Click to record",
- "background": {
- "favourite": "Favourite background",
- "maximise": "Maximise background",
- "download": "Download background",
- "show_info": "Show background information"
- },
- "quote": {
- "favourite": "Favourite quote",
- "copy": "Copy quote",
- "tweet": "Tweet quote"
- },
- "notes": {
- "pin": "Pin notes",
- "copy": "Copy notes"
- },
- "search": "Focus search",
- "quicklinks": "Toggle add quick link",
- "modal": "Toggle modal"
- },
- "experimental": {
- "title": "Experimental",
- "warning": "These settings have not been fully tested/implemented and may not work correctly!",
- "developer": "Developer"
- },
- "language": {
- "title": "Bahasa",
- "quote": "Bahasa untuk kutipan"
- },
- "changelog": {
- "title": "Changelog",
- "by": "Oleh {author}"
- },
- "about": {
- "title": "Tentang Mue",
- "copyright": "Hak Cipta",
- "version": {
- "title": "Versi",
- "checking_update": "Periksa pembaruan",
- "update_available": "Pembaruan tersedia",
- "no_update": "Tidak ada pembaruan",
- "offline_mode": "Periksa pembaruan tidak dapat dilakukan pada mode luring",
- "error": {
- "title": "Gagal mendapatkan informasi pembaruan",
- "description": "Muncul galat saat mencoba mendapatkan informasi pembaruan. Harap coba lagi nanti."
- }
- },
- "contact_us": "Hubungi Kami",
- "support_mue": "Dukung Mue",
- "resources_used": {
- "title": "Resources yang kami gunakan",
- "bg_images": "Offline background images"
- },
- "contributors": "Kontributor",
- "supporters": "Suporter",
- "no_supporters": "Mue belum punya suporter saat ini.",
- "photographers": "Fotografer"
- }
+ "search": "Focus search",
+ "quicklinks": "Toggle add quick link",
+ "modal": "Toggle modal"
},
- "buttons": {
- "reset": "Reset",
- "import": "Impor",
- "export": "Ekspor"
- }
- },
- "marketplace": {
- "photo_packs": "Photo Packs",
- "quote_packs": "Quote Packs",
- "preset_settings": "Preset Settings",
- "no_items": "Tidak ada item pada kategori ini",
- "product": {
- "overview": "Ikhtisar",
- "information": "Informasi",
- "last_updated": "Pembaruan Terakhir",
- "version": "Versi",
- "author": "Kreator",
- "buttons": {
- "addtomue": "Tambahkan ke Mue",
- "remove": "Hapus",
- "update_addon": "Perbarui Add-on"
- },
- "quote_warning": {
- "title": "Peringatan",
- "description": "Quote pack ini membutuhkan peladen eksternal yang mungkin melacak Anda!"
- }
- },
- "offline": {
- "title": "Sepertinya Anda sedang dalam mode luring",
- "description": "Harap periksa kembali koneksi Anda dan coba lagi nanti"
- }
- },
- "addons": {
- "added": "Terinstal",
- "check_updates": "Periksa pembaruan",
- "no_updates": "Tidak ada pembaruan",
- "updates_available": "Terdapat {amount} pembaruan",
- "empty": {
- "title": "Kosong",
- "description": "Belum ada addons yang terinstal"
- },
- "sideload": {
- "title": "Sideload",
- "failed": "Failed to sideload addon",
- "errors": {
- "no_name": "No name provided",
- "no_author": "No author provided",
- "no_type": "No type provided",
- "invalid_photos": "Invalid photos object",
- "invalid_quotes": "Invalid quotes object"
- }
- },
- "sort": {
- "title": "Urutkan",
- "newest": "Terinstal (Terbaru)",
- "oldest": "Terinstal (Terlama)",
- "a_z": "Abjad (A-Z)",
- "z_a": "Abjad (Z-A)"
- },
- "create": {
- "title": "Buat",
- "other_title": "Buat Add-on",
- "metadata": {
- "name": "Nama",
- "icon_url": "URL Ikon",
- "screenshot_url": "URL Screenshot",
- "description": "Deskripsi"
- },
- "finish": {
- "title": "Selesai",
- "download": "Unduh Add-on"
- },
- "settings": {
- "current": "Impor",
- "json": "Unggah JSON"
- },
- "photos": {
- "title": "Tambahkan foto"
- },
- "quotes": {
- "title": "Tambahkan Kutipan",
- "api": {
- "title": "API",
- "url": "URL Kutipan",
- "name": "Nama Kutipan",
- "author": "Penulis kutipan"
- },
- "local": {
- "title": "Lokal"
- }
- }
- }
- }
- },
- "update": {
- "title": "Pembaruan",
- "offline": {
- "title": "Anda dalam mode luring",
- "description": "Tidak dapat memeriksa pembaruan. Harap periksa kembali koneksi Anda dan coba lagi nanti."
- },
- "error": {
- "title": "Galat",
- "description": "Tidak dapat terhubung ke peladen"
- }
- },
- "welcome": {
- "tip": "Tip",
- "sections": {
- "intro": {
- "title": "Selamat datang di Mue Tab",
- "description": "Terima kasih sudah menginstal Mue, kami harap Anda dapat menikmati pengalaman bersama Mue"
+ "experimental": {
+ "title": "Experimental",
+ "warning": "These settings have not been fully tested/implemented and may not work correctly!",
+ "developer": "Developer"
},
"language": {
- "title": "Pilih bahasa",
- "description": "Antarmuka Mue dapat ditampilkan dalam ragam bahasa berikut. Kamu juga bisa menambahkan terjemahan baru untuk Mue pada"
+ "title": "Bahasa",
+ "quote": "Bahasa untuk kutipan"
},
- "theme": {
- "title": "Pilih tema",
- "description": "Mue tersedia dalam tema terang dan gelap, atau kami juga bisa mengaturnya secara otomatis sesuai dengan preferensi sistem Anda.",
- "tip": "Pengaturan otomatis akan menyesuaikan dengan tema komputer Anda. Pengaturan ini akan mengubah tampilan modal dan beberapa widget, seperti Cuaca dan Catatan."
+ "changelog": {
+ "title": "Changelog",
+ "by": "Oleh {author}"
},
- "settings": {
- "title": "Impor Pengaturan",
- "description": "Sudah pernah menginstal Mue? Yuk coba impor pengaturan lama kamu tanpa perlu mengatur ulang dari awal!",
- "tip": "Kamu bisa mengekspor pengaturan lama kamu melalui tab lanjutan pada Pengaturan. Klik tombol ekspor untuk mengunduh berkas JSON. Unggah berkas tersebut di sini sehingga kamu dapat menikmati preferensi yang sama pada perangkat yang berbeda!"
- },
- "privacy": {
- "title": "Opsi Privasi",
- "description": "Aktifkan pegaturan sehingga Mue dapat melindungi privasi Anda.",
- "offline_mode_description": "Mengaktifkan mode luring akan menghalangi request ke semua layanan, termasuk Background Online, Kutipan Daring, Marketplace, Cuaca, Pranala Cepat, Change Log, dan beberapa informasi tentang tab.",
- "ddg_proxy_description": "Anda dapat membuat permintaan gambar melalui DuckDuckGo jika Anda mau. Secara bawaan, permintaan API dilakukan melalui peladen terbuka kami sedangkan permintaan gambar melalui peladen original. Menonaktifkan pengaturan ini untuk Pranala Cepat akan mendapatkan ikon dari Google, bukan DuckDuckGo. Proksi DuckDuckGo selalu diaktifkan untuk Marketplace.",
- "links": {
- "title": "Pranala",
- "privacy_policy": "Kebijakan Privasi",
- "source_code": "Source Code"
- }
- },
- "final": {
- "title": "Langkah terakhir",
- "description": "Pengalaman Mue Tab Anda akan segera dimulai!",
- "changes": "Perubahan",
- "changes_description": "Untuk mengubah pengaturan lainnya, klik pada ikon pengaturan di pojok kanan atas tab Anda.",
- "imported": "Berhasil mengimpor {amount} pengaturan"
+ "about": {
+ "title": "Tentang Mue",
+ "copyright": "Hak Cipta",
+ "version": {
+ "title": "Versi",
+ "checking_update": "Periksa pembaruan",
+ "update_available": "Pembaruan tersedia",
+ "no_update": "Tidak ada pembaruan",
+ "offline_mode": "Periksa pembaruan tidak dapat dilakukan pada mode luring",
+ "error": {
+ "title": "Gagal mendapatkan informasi pembaruan",
+ "description": "Muncul galat saat mencoba mendapatkan informasi pembaruan. Harap coba lagi nanti."
+ }
+ },
+ "contact_us": "Hubungi Kami",
+ "support_mue": "Dukung Mue",
+ "resources_used": {
+ "title": "Resources yang kami gunakan",
+ "bg_images": "Offline background images"
+ },
+ "contributors": "Kontributor",
+ "supporters": "Suporter",
+ "no_supporters": "Mue belum punya suporter saat ini.",
+ "photographers": "Fotografer"
}
},
"buttons": {
- "next": "Selanjutnya",
- "preview": "Pratinjau",
- "previous": "Kembali",
- "close": "Tutup"
+ "reset": "Reset",
+ "import": "Impor",
+ "export": "Ekspor"
+ }
+ },
+ "marketplace": {
+ "photo_packs": "Photo Packs",
+ "quote_packs": "Quote Packs",
+ "preset_settings": "Preset Settings",
+ "no_items": "Tidak ada item pada kategori ini",
+ "product": {
+ "overview": "Ikhtisar",
+ "information": "Informasi",
+ "last_updated": "Pembaruan Terakhir",
+ "version": "Versi",
+ "author": "Kreator",
+ "buttons": {
+ "addtomue": "Tambahkan ke Mue",
+ "remove": "Hapus",
+ "update_addon": "Perbarui Add-on"
+ },
+ "quote_warning": {
+ "title": "Peringatan",
+ "description": "Quote pack ini membutuhkan peladen eksternal yang mungkin melacak Anda!"
+ }
},
- "preview": {
- "description": "Kamu dalam mode Pratinjau. Pengaturan akan direset ketika tab ini ditutup.",
- "continue": "Lanjutkan setup"
+ "offline": {
+ "title": "Sepertinya Anda sedang dalam mode luring",
+ "description": "Harap periksa kembali koneksi Anda dan coba lagi nanti"
+ }
+ },
+ "addons": {
+ "added": "Terinstal",
+ "check_updates": "Periksa pembaruan",
+ "no_updates": "Tidak ada pembaruan",
+ "updates_available": "Terdapat {amount} pembaruan",
+ "empty": {
+ "title": "Kosong",
+ "description": "Belum ada addons yang terinstal"
+ },
+ "sideload": {
+ "title": "Sideload",
+ "failed": "Failed to sideload addon",
+ "errors": {
+ "no_name": "No name provided",
+ "no_author": "No author provided",
+ "no_type": "No type provided",
+ "invalid_photos": "Invalid photos object",
+ "invalid_quotes": "Invalid quotes object"
+ }
+ },
+ "sort": {
+ "title": "Urutkan",
+ "newest": "Terinstal (Terbaru)",
+ "oldest": "Terinstal (Terlama)",
+ "a_z": "Abjad (A-Z)",
+ "z_a": "Abjad (Z-A)"
+ },
+ "create": {
+ "title": "Buat",
+ "other_title": "Buat Add-on",
+ "metadata": {
+ "name": "Nama",
+ "icon_url": "URL Ikon",
+ "screenshot_url": "URL Screenshot",
+ "description": "Deskripsi"
+ },
+ "finish": {
+ "title": "Selesai",
+ "download": "Unduh Add-on"
+ },
+ "settings": {
+ "current": "Impor",
+ "json": "Unggah JSON"
+ },
+ "photos": {
+ "title": "Tambahkan foto"
+ },
+ "quotes": {
+ "title": "Tambahkan Kutipan",
+ "api": {
+ "title": "API",
+ "url": "URL Kutipan",
+ "name": "Nama Kutipan",
+ "author": "Penulis kutipan"
+ },
+ "local": {
+ "title": "Lokal"
+ }
+ }
}
}
},
- "toasts": {
- "quote": "Berhasil menyalin kutipan",
- "notes": "Berhasil menyalin catatan",
- "reset": "Reset berhasil",
- "installed": "Berhasil menginstal",
- "uninstalled": "Berhasil menghapus",
- "updated": "Berhasil diperbarui",
- "error": "Terdapat kesalahan",
- "imported": "Berhasil mengimpor"
+ "update": {
+ "title": "Pembaruan",
+ "offline": {
+ "title": "Anda dalam mode luring",
+ "description": "Tidak dapat memeriksa pembaruan. Harap periksa kembali koneksi Anda dan coba lagi nanti."
+ },
+ "error": {
+ "title": "Galat",
+ "description": "Tidak dapat terhubung ke peladen"
+ }
+ },
+ "welcome": {
+ "tip": "Tip",
+ "sections": {
+ "intro": {
+ "title": "Selamat datang di Mue Tab",
+ "description": "Terima kasih sudah menginstal Mue, kami harap Anda dapat menikmati pengalaman bersama Mue"
+ },
+ "language": {
+ "title": "Pilih bahasa",
+ "description": "Antarmuka Mue dapat ditampilkan dalam ragam bahasa berikut. Kamu juga bisa menambahkan terjemahan baru untuk Mue pada"
+ },
+ "theme": {
+ "title": "Pilih tema",
+ "description": "Mue tersedia dalam tema terang dan gelap, atau kami juga bisa mengaturnya secara otomatis sesuai dengan preferensi sistem Anda.",
+ "tip": "Pengaturan otomatis akan menyesuaikan dengan tema komputer Anda. Pengaturan ini akan mengubah tampilan modal dan beberapa widget, seperti Cuaca dan Catatan."
+ },
+ "settings": {
+ "title": "Impor Pengaturan",
+ "description": "Sudah pernah menginstal Mue? Yuk coba impor pengaturan lama kamu tanpa perlu mengatur ulang dari awal!",
+ "tip": "Kamu bisa mengekspor pengaturan lama kamu melalui tab lanjutan pada Pengaturan. Klik tombol ekspor untuk mengunduh berkas JSON. Unggah berkas tersebut di sini sehingga kamu dapat menikmati preferensi yang sama pada perangkat yang berbeda!"
+ },
+ "privacy": {
+ "title": "Opsi Privasi",
+ "description": "Aktifkan pegaturan sehingga Mue dapat melindungi privasi Anda.",
+ "offline_mode_description": "Mengaktifkan mode luring akan menghalangi request ke semua layanan, termasuk Background Online, Kutipan Daring, Marketplace, Cuaca, Pranala Cepat, Change Log, dan beberapa informasi tentang tab.",
+ "ddg_proxy_description": "Anda dapat membuat permintaan gambar melalui DuckDuckGo jika Anda mau. Secara bawaan, permintaan API dilakukan melalui peladen terbuka kami sedangkan permintaan gambar melalui peladen original. Menonaktifkan pengaturan ini untuk Pranala Cepat akan mendapatkan ikon dari Google, bukan DuckDuckGo. Proksi DuckDuckGo selalu diaktifkan untuk Marketplace.",
+ "links": {
+ "title": "Pranala",
+ "privacy_policy": "Kebijakan Privasi",
+ "source_code": "Source Code"
+ }
+ },
+ "final": {
+ "title": "Langkah terakhir",
+ "description": "Pengalaman Mue Tab Anda akan segera dimulai!",
+ "changes": "Perubahan",
+ "changes_description": "Untuk mengubah pengaturan lainnya, klik pada ikon pengaturan di pojok kanan atas tab Anda.",
+ "imported": "Berhasil mengimpor {amount} pengaturan"
+ }
+ },
+ "buttons": {
+ "next": "Selanjutnya",
+ "preview": "Pratinjau",
+ "previous": "Kembali",
+ "close": "Tutup"
+ },
+ "preview": {
+ "description": "Kamu dalam mode Pratinjau. Pengaturan akan direset ketika tab ini ditutup.",
+ "continue": "Lanjutkan setup"
+ }
}
+ },
+ "toasts": {
+ "quote": "Berhasil menyalin kutipan",
+ "notes": "Berhasil menyalin catatan",
+ "reset": "Reset berhasil",
+ "installed": "Berhasil menginstal",
+ "uninstalled": "Berhasil menghapus",
+ "updated": "Berhasil diperbarui",
+ "error": "Terdapat kesalahan",
+ "imported": "Berhasil mengimpor"
}
-
\ No newline at end of file
+}
diff --git a/webpack.config.js b/webpack.config.js
index 24c45831..c40527e3 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -7,36 +7,38 @@ module.exports = {
entry: path.resolve(__dirname, './src/index.js'),
mode: 'development',
performance: {
- hints: false
+ hints: false,
},
module: {
- rules: [{
- test: /\.(js|jsx)$/,
- exclude: /node_modules/,
- use: ['babel-loader']
- },
- {
- test: /\.(|sc|c)ss$/,
- use: [
- {
- loader: MiniCssExtractPlugin.loader,
- options: {
- publicPath: ''
+ rules: [
+ {
+ test: /\.(js|jsx)$/,
+ exclude: /node_modules/,
+ use: ['babel-loader'],
+ },
+ {
+ test: /\.(|sc|c)ss$/,
+ use: [
+ {
+ loader: MiniCssExtractPlugin.loader,
+ options: {
+ publicPath: '',
+ },
},
- },
- 'css-loader',
- 'sass-loader'
- ],
- },
- {
- test: /\.(woff|woff2|svg)$/,
- type: 'asset/resource'
- },
- {
- test: /\.js$/,
- enforce: 'pre',
- use: ['source-map-loader']
- }]
+ 'css-loader',
+ 'sass-loader',
+ ],
+ },
+ {
+ test: /\.(woff|woff2|svg)$/,
+ type: 'asset/resource',
+ },
+ {
+ test: /\.js$/,
+ enforce: 'pre',
+ use: ['source-map-loader'],
+ },
+ ],
},
resolve: {
extensions: ['.js', '.jsx'],
@@ -44,42 +46,43 @@ module.exports = {
components: path.resolve(__dirname, './src/components'),
modules: path.resolve(__dirname, './src/modules'),
translations: path.resolve(__dirname, './src/translations'),
- scss: path.resolve(__dirname, './src/scss')
- }
+ scss: path.resolve(__dirname, './src/scss'),
+ },
},
output: {
path: path.resolve(__dirname, './build'),
filename: '[name].[chunkhash].js',
chunkFilename: '[id].[chunkhash].chunk.js',
- clean: true
+ clean: true,
},
devServer: {
static: path.resolve(__dirname, './build'),
open: true,
- port: 3000
+ port: 3000,
},
plugins: [
new HtmlWebpackPlugin({
- template: path.resolve(__dirname, './public/index.html')
+ template: path.resolve(__dirname, './public/index.html'),
}),
new CopyPlugin({
- patterns: [{
+ patterns: [
+ {
from: 'public/icons',
- to: 'icons'
+ to: 'icons',
},
{
from: 'public/offline-images',
- to: 'offline-images'
+ to: 'offline-images',
},
{
from: 'public/welcome-images',
- to: 'welcome-images'
- }
- ]
+ to: 'welcome-images',
+ },
+ ],
}),
new MiniCssExtractPlugin({
filename: '[name].[chunkhash].css',
- chunkFilename: '[id].[chunkhash].chunk.css'
+ chunkFilename: '[id].[chunkhash].chunk.css',
}),
- ]
+ ],
};