mirror of
https://github.com/mue/mue.git
synced 2026-07-10 22:14:39 +02:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a170981772 | ||
|
|
14d3589551 | ||
|
|
c736dcf57a | ||
|
|
623b54eca0 | ||
|
|
1dc0389a96 | ||
|
|
3c7be2d64d | ||
|
|
5703abb685 | ||
|
|
8f08b4d09d | ||
|
|
441d440c74 | ||
|
|
fe5f15be24 | ||
|
|
bd941896aa | ||
|
|
d9563ce343 | ||
|
|
af2edeb737 | ||
|
|
f8ee23eb40 | ||
|
|
234d489a29 | ||
|
|
7881e47590 | ||
|
|
40397ac33c |
@@ -4,7 +4,7 @@
|
|||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
"name": "__MSG_name__",
|
"name": "__MSG_name__",
|
||||||
"description": "__MSG_description__",
|
"description": "__MSG_description__",
|
||||||
"version": "6.0.1",
|
"version": "6.0.3",
|
||||||
"homepage_url": "https://muetab.com",
|
"homepage_url": "https://muetab.com",
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
"default_icon": "icons/128x128.png"
|
"default_icon": "icons/128x128.png"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Mue",
|
"name": "Mue",
|
||||||
"description": "Fast, open and free-to-use new tab page for modern browsers.",
|
"description": "Fast, open and free-to-use new tab page for modern browsers.",
|
||||||
"version": "6.0.1",
|
"version": "6.0.3",
|
||||||
"homepage_url": "https://muetab.com",
|
"homepage_url": "https://muetab.com",
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
"default_icon": "icons/128x128.png"
|
"default_icon": "icons/128x128.png"
|
||||||
|
|||||||
@@ -9,15 +9,15 @@
|
|||||||
"homepage": "https://muetab.com",
|
"homepage": "https://muetab.com",
|
||||||
"bugs": "https://github.com/mue/mue/issues/new?assignees=&labels=bug&template=bug-report.md&title=%5BBUG%5D",
|
"bugs": "https://github.com/mue/mue/issues/new?assignees=&labels=bug&template=bug-report.md&title=%5BBUG%5D",
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"version": "6.0.1",
|
"version": "6.0.3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eartharoid/i18n": "^1.0.2",
|
"@eartharoid/i18n": "^1.0.2",
|
||||||
"@emotion/react": "^11.5.0",
|
"@emotion/react": "^11.5.0",
|
||||||
"@emotion/styled": "^11.3.0",
|
"@emotion/styled": "^11.3.0",
|
||||||
"@fontsource/lexend-deca": "4.4.5",
|
"@fontsource/lexend-deca": "4.4.5",
|
||||||
"@fontsource/montserrat": "4.4.5",
|
"@fontsource/montserrat": "4.4.5",
|
||||||
"@mui/icons-material": "5.1.1",
|
"@mui/icons-material": "5.2.0",
|
||||||
"@mui/material": "5.1.1",
|
"@mui/material": "5.2.1",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
"react-clock": "3.0.0",
|
"react-clock": "3.0.0",
|
||||||
"react-color-gradient-picker": "0.1.2",
|
"react-color-gradient-picker": "0.1.2",
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
"@eartharoid/deep-merge": "^0.0.2",
|
"@eartharoid/deep-merge": "^0.0.2",
|
||||||
"babel-loader": "^8.2.3",
|
"babel-loader": "^8.2.3",
|
||||||
"babel-plugin-transform-react-class-to-function": "^1.2.2",
|
"babel-plugin-transform-react-class-to-function": "^1.2.2",
|
||||||
"copy-webpack-plugin": "^9.0.1",
|
"copy-webpack-plugin": "9.1.0",
|
||||||
"css-loader": "^6.5.1",
|
"css-loader": "^6.5.1",
|
||||||
"eslint": "^8.2.0",
|
"eslint": "^8.2.0",
|
||||||
"eslint-config-react-app": "^6.0.0",
|
"eslint-config-react-app": "^6.0.0",
|
||||||
|
|||||||
@@ -35,7 +35,12 @@ export default class Autocomplete extends PureComponent {
|
|||||||
input: e.target.innerText
|
input: e.target.innerText
|
||||||
});
|
});
|
||||||
|
|
||||||
this.props.onClick(e);
|
this.props.onClick({
|
||||||
|
preventDefault: () => e.preventDefault(),
|
||||||
|
target: {
|
||||||
|
value: e.target.innerText
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ export default function Preview(props) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='preview-mode'>
|
<div className='preview-mode'>
|
||||||
<h3>{getMessage('modals.main.settings.reminder.title')}</h3>
|
<h1>{getMessage('modals.main.settings.reminder.title')}</h1>
|
||||||
<h1>{getMessage('modals.welcome.preview.description')}</h1>
|
<p>{getMessage('modals.welcome.preview.description')}</p>
|
||||||
<button className='close' onClick={() => props.setup()}>{getMessage('modals.welcome.preview.continue')}</button>
|
<button className='pinNote' onClick={() => props.setup()}>{getMessage('modals.welcome.preview.continue')}</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
color: var(--modal-text);
|
color: var(--modal-text);
|
||||||
background: var(--background);
|
background: var(--background);
|
||||||
max-width: 300px;
|
max-width: 300px;
|
||||||
border-radius: 0.7em;
|
border-radius: .7em;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
text-align: left;
|
||||||
|
cursor: default;
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ import { PureComponent } from 'react';
|
|||||||
import {
|
import {
|
||||||
SettingsRounded as Settings,
|
SettingsRounded as Settings,
|
||||||
PhotoOutlined as Photos,
|
PhotoOutlined as Photos,
|
||||||
FormatQuoteOutlined as Quotes
|
FormatQuoteOutlined as Quotes,
|
||||||
|
Upload as ImportIcon,
|
||||||
|
Download as ExportIcon,
|
||||||
} from '@mui/icons-material';
|
} from '@mui/icons-material';
|
||||||
import { TextField } from '@mui/material';
|
import { TextField } from '@mui/material';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
@@ -56,7 +58,8 @@ export default class Create extends PureComponent {
|
|||||||
const data = input || localStorage;
|
const data = input || localStorage;
|
||||||
let settings = {};
|
let settings = {};
|
||||||
Object.keys(data).forEach((key) => {
|
Object.keys(data).forEach((key) => {
|
||||||
if (key === 'statsData' || key === 'firstRun' || key === 'showWelcome' || key === 'language' || key === 'installed' || key === 'stats') {
|
if (key === 'statsData' || key === 'firstRun' || key === 'showWelcome' || key === 'language' || key === 'installed' || key === 'stats' || key === 'backup_settings' || key === 'showReminder'
|
||||||
|
|| key === 'experimental' || key === 'debugtimeout' || key === 'quotelanguage') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
settings[key] = localStorage.getItem(key);
|
settings[key] = localStorage.getItem(key);
|
||||||
@@ -65,7 +68,7 @@ export default class Create extends PureComponent {
|
|||||||
this.setState({
|
this.setState({
|
||||||
addonData: settings,
|
addonData: settings,
|
||||||
settingsClasses: {
|
settingsClasses: {
|
||||||
current: input ? 'toggle lightTheme' : 'toggle lightTheme active',
|
current: input ? 'toggle lightTheme active' : 'toggle lightTheme',
|
||||||
json: input ? 'toggle lightTheme active' : 'toggle lightTheme'
|
json: input ? 'toggle lightTheme active' : 'toggle lightTheme'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -119,9 +122,7 @@ export default class Create extends PureComponent {
|
|||||||
|
|
||||||
importQuotes() {
|
importQuotes() {
|
||||||
this.setState({
|
this.setState({
|
||||||
addonData: {
|
addonData: JSON.parse(localStorage.getItem('customQuote')) || []
|
||||||
quotes: JSON.parse(localStorage.getItem('customQuote')) || []
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
toast(variables.language.getMessage(variables.languagecode, 'toasts.imported'));
|
toast(variables.language.getMessage(variables.languagecode, 'toasts.imported'));
|
||||||
@@ -130,7 +131,16 @@ export default class Create extends PureComponent {
|
|||||||
importPhotos() {
|
importPhotos() {
|
||||||
let data = [];
|
let data = [];
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(localStorage.getItem('customBackground'));
|
const current = JSON.parse(localStorage.getItem('customBackground')) || [];
|
||||||
|
data = current.map((item) => {
|
||||||
|
return {
|
||||||
|
photographer: '???',
|
||||||
|
location: '???',
|
||||||
|
url: {
|
||||||
|
default: item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
toast(variables.language.getMessage(variables.languagecode, 'toasts.imported'));
|
toast(variables.language.getMessage(variables.languagecode, 'toasts.imported'));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
@@ -138,9 +148,7 @@ export default class Create extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
addonData: {
|
addonData: data
|
||||||
photos: data
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,21 +232,23 @@ export default class Create extends PureComponent {
|
|||||||
const nextSettingsDisabled = (this.state.addonData === '') ? true : false;
|
const nextSettingsDisabled = (this.state.addonData === '') ? true : false;
|
||||||
const importSettings = (
|
const importSettings = (
|
||||||
<>
|
<>
|
||||||
<h3>{getMessage('modals.mwelcome.sections.title')}</h3>
|
<h3>{getMessage('modals.welcome.sections.settings.title')}</h3>
|
||||||
<div className='themesToggleArea'>
|
<div className='themesToggleArea' >
|
||||||
<div className='options'>
|
<div className='options' style={{ maxWidth: '512px' }}>
|
||||||
<div className={this.state.settingsClasses.current} onClick={() => this.importSettings()}>
|
<div className={this.state.settingsClasses.current} onClick={() => this.importSettings()}>
|
||||||
|
<ExportIcon/>
|
||||||
<span>{getMessage('modals.main.addons.create.settings.current')}</span>
|
<span>{getMessage('modals.main.addons.create.settings.current')}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className={this.state.settingsClasses.json} onClick={() => document.getElementById('file-input').click()}>
|
<div className={this.state.settingsClasses.json} onClick={() => document.getElementById('file-input').click()}>
|
||||||
|
<ImportIcon/>
|
||||||
<span>{getMessage('modals.main.addons.create.settings.json')}</span>
|
<span>{getMessage('modals.main.addons.create.settings.json')}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<FileUpload id='file-input' type='settings' accept='application/json' loadFunction={(e) => this.importSettings(JSON.parse(e.target.result))} />
|
<FileUpload id='file-input' type='settings' accept='application/json' loadFunction={(e) => this.importSettings(JSON.parse(e.target.result))} />
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<button onClick={() => this.changeTab(2)} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.welcome.buttons.previous')}</button>
|
<button onClick={() => this.changeTab(2)} className='uploadbg' style={{ margin: '10px' }}>{getMessage('modals.welcome.buttons.previous')}</button>
|
||||||
<button onClick={() => this.changeTab(3)} className='uploadbg' disabled={nextSettingsDisabled}>{getMessage('modals.welcome.buttons.next')}</button>
|
<button onClick={() => this.changeTab(3)} className='uploadbg' style={{ margin: '10px' }} disabled={nextSettingsDisabled}>{getMessage('modals.welcome.buttons.next')}</button>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -253,18 +263,23 @@ export default class Create extends PureComponent {
|
|||||||
<option value='quote_api'>{getMessage('modals.main.addons.create.quotes.api.title')}</option>
|
<option value='quote_api'>{getMessage('modals.main.addons.create.quotes.api.title')}</option>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
{this.state.addonMetadata.type === 'quote_api' ? <>
|
{this.state.addonMetadata.type === 'quote_api' ? <>
|
||||||
<h3>{getMessage('modals.main.addons.create.quotes.api.title')}</h3>
|
|
||||||
<TextField label={getMessage('modals.main.addons.create.quotes.api.url')} varient='outlined' InputLabelProps={{ shrink: true }} value={this.state.addonData.url} onInput={(e) => this.updateQuotePack(e.target.value, 'url')}/>
|
<TextField label={getMessage('modals.main.addons.create.quotes.api.url')} varient='outlined' InputLabelProps={{ shrink: true }} value={this.state.addonData.url} onInput={(e) => this.updateQuotePack(e.target.value, 'url')}/>
|
||||||
<TextField label={getMessage('modals.main.addons.create.quotes.api.name')} varient='outlined' InputLabelProps={{ shrink: true }} value={this.state.addonData.name} onInput={(e) => this.updateQuotePack(e.target.value, 'name')}/>
|
<TextField label={getMessage('modals.main.addons.create.quotes.api.name')} varient='outlined' InputLabelProps={{ shrink: true }} value={this.state.addonData.name} onInput={(e) => this.updateQuotePack(e.target.value, 'name')}/>
|
||||||
<TextField label={getMessage('modals.main.addons.create.quotes.api.author')} varient='outlined' InputLabelProps={{ shrink: true }} value={this.state.addonData.author} onInput={(e) => this.updateQuotePack(e.target.value, 'author')}/>
|
<TextField label={getMessage('modals.main.addons.create.quotes.api.author')} varient='outlined' InputLabelProps={{ shrink: true }} value={this.state.addonData.author} onInput={(e) => this.updateQuotePack(e.target.value, 'author')}/>
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
</> : <>
|
</> : <>
|
||||||
<h3>{getMessage('modals.main.addons.create.quotes.local.title')}</h3>
|
<div className='themesToggleArea'>
|
||||||
<button onClick={() => this.importQuotes()} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.main.addons.create.settings.current')}</button>
|
<div className='options'>
|
||||||
<br/><br/>
|
<div onClick={() => this.importQuotes()} className='toggle lightTheme' style={{ width: '60%', margin: '10px 0 10px 0' }}>
|
||||||
|
<ExportIcon/>
|
||||||
|
<span>{getMessage('modals.main.addons.create.settings.current')}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
</>}
|
</>}
|
||||||
<button onClick={() => this.changeTab(2)} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.welcome.buttons.previous')}</button>
|
<button onClick={() => this.changeTab(2)} className='uploadbg'>{getMessage('modals.welcome.buttons.previous')}</button>
|
||||||
<button onClick={() => this.changeTab(3)} className='uploadbg' disabled={nextQuotesDisabled}>{getMessage('modals.welcome.buttons.next')}</button>
|
<button onClick={() => this.changeTab(3)} className='uploadbg' style={{ margin: '10px' }} disabled={nextQuotesDisabled}>{getMessage('modals.welcome.buttons.next')}</button>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -273,19 +288,31 @@ export default class Create extends PureComponent {
|
|||||||
const addPhotos = (
|
const addPhotos = (
|
||||||
<>
|
<>
|
||||||
<h3>{getMessage('modals.main.addons.create.photos.title')}</h3>
|
<h3>{getMessage('modals.main.addons.create.photos.title')}</h3>
|
||||||
<h3>{getMessage('modals.main.addons.create.quotes.local.title')}</h3>
|
<div className='themesToggleArea'>
|
||||||
<button onClick={() => this.importPhotos()} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.main.addons.create.settings.current')}</button>
|
<div className='options'>
|
||||||
<br/><br/>
|
<div onClick={() => this.importPhotos()} className='toggle lightTheme' style={{ width: '60%', margin: '10px 0 10px 0' }}>
|
||||||
<button onClick={() => this.changeTab(2)} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.welcome.buttons.previous')}</button>
|
<ExportIcon/>
|
||||||
<button onClick={() => this.changeTab(3)} className='uploadbg' disabled={nextPhotosDisabled}>{getMessage('modals.welcome.buttons.next')}</button>
|
<span>{getMessage('modals.main.addons.create.settings.current')}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
<button onClick={() => this.changeTab(2)} className='uploadbg'>{getMessage('modals.welcome.buttons.previous')}</button>
|
||||||
|
<button onClick={() => this.changeTab(3)} className='uploadbg' style={{ margin: '10px' }} disabled={nextPhotosDisabled}>{getMessage('modals.welcome.buttons.next')}</button>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
const downloadAddon = (
|
const downloadAddon = (
|
||||||
<>
|
<>
|
||||||
<h3>{getMessage('modals.main.addons.create.finish.title')}</h3>
|
<div className='themesToggleArea'>
|
||||||
<button onClick={() => this.downloadAddon()} className='upload'>{getMessage('modals.main.addons.create.finish.download')}</button>
|
<div className='options'>
|
||||||
<br/><br/>
|
<div onClick={() => this.downloadAddon()} className='toggle lightTheme' style={{ width: '60%', margin: '10px 0 10px 0' }}>
|
||||||
|
<ExportIcon/>
|
||||||
|
<span>{getMessage('modals.main.addons.create.finish.download')}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
<button onClick={() => this.changeTab((this.state.addonMetadata.type === 'quote_api') ? 'quotes' : this.state.addonMetadata.type)} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.welcome.buttons.previous')}</button>
|
<button onClick={() => this.changeTab((this.state.addonMetadata.type === 'quote_api') ? 'quotes' : this.state.addonMetadata.type)} className='uploadbg' style={{ marginRight: '10px' }}>{getMessage('modals.welcome.buttons.previous')}</button>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export default class Sideload extends PureComponent {
|
|||||||
failedReason = this.getMessage('modals.main.addons.sideload.errors.no_type');
|
failedReason = this.getMessage('modals.main.addons.sideload.errors.no_type');
|
||||||
} else if (!input.version) {
|
} else if (!input.version) {
|
||||||
failedReason = this.getMessage('modals.main.addons.sideload.errors.no_version');
|
failedReason = this.getMessage('modals.main.addons.sideload.errors.no_version');
|
||||||
} else if (input.type === 'photos' && (!input.photos || !input.photos.length || !input.photos[0].url.default || !input.photos[0].photographer || !input.photos[0].location)) {
|
} else if (input.type === 'photos' && (!input.photos || !input.photos.length || !input.photos[0].url || !input.photos[0].url.default || !input.photos[0].photographer || !input.photos[0].location)) {
|
||||||
failedReason = this.getMessage('modals.main.addons.sideload.errors.invalid_photos');
|
failedReason = this.getMessage('modals.main.addons.sideload.errors.invalid_photos');
|
||||||
} else if (input.type === 'quotes' && (!input.quotes || !input.quotes.length || !input.quotes[0].quote || !input.quotes[0].author)) {
|
} else if (input.type === 'quotes' && (!input.quotes || !input.quotes.length || !input.quotes[0].quote || !input.quotes[0].author)) {
|
||||||
failedReason = this.getMessage('modals.main.addons.sideload.errors.invalid_quotes');
|
failedReason = this.getMessage('modals.main.addons.sideload.errors.invalid_quotes');
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ p.description {
|
|||||||
background: var(--sidebar);
|
background: var(--sidebar);
|
||||||
width: 350px;
|
width: 350px;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
|
min-height: 180px;
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
cursor: initial !important;
|
cursor: initial !important;
|
||||||
@@ -72,6 +73,18 @@ p.description {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 1200px) {
|
||||||
|
.side {
|
||||||
|
margin-top: 222px;
|
||||||
|
float: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.overview {
|
||||||
|
margin-top: -160px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.overview {
|
.overview {
|
||||||
font-size: 30px !important;
|
font-size: 30px !important;
|
||||||
|
margin-top: 33px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,9 @@
|
|||||||
margin-right: 25px;
|
margin-right: 25px;
|
||||||
width: 220px;
|
width: 220px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
border-radius: 24px;
|
||||||
|
border: 3px solid var(--tab-active);
|
||||||
|
font-size: 1rem;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--tab-active);
|
background-color: var(--tab-active);
|
||||||
|
|||||||
@@ -58,6 +58,11 @@ input {
|
|||||||
padding: 15px 20px;
|
padding: 15px 20px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&::-webkit-calendar-picker-indicator {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,3 +25,8 @@
|
|||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
padding-right: 5px;
|
padding-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.contacth3 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 0.8em !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ export default class About extends PureComponent {
|
|||||||
<p>{this.getMessage('modals.main.settings.sections.about.version.title')} {variables.constants.VERSION} ({this.state.update})</p>
|
<p>{this.getMessage('modals.main.settings.sections.about.version.title')} {variables.constants.VERSION} ({this.state.update})</p>
|
||||||
<a href={variables.constants.PRIVACY_URL} className='aboutLink' target='_blank' rel='noopener noreferrer' style={{ fontSize: '1rem' }}>{this.getMessage('modals.welcome.sections.privacy.links.privacy_policy')}</a>
|
<a href={variables.constants.PRIVACY_URL} className='aboutLink' target='_blank' rel='noopener noreferrer' style={{ fontSize: '1rem' }}>{this.getMessage('modals.welcome.sections.privacy.links.privacy_policy')}</a>
|
||||||
|
|
||||||
<h3>{this.getMessage('modals.main.settings.sections.about.contact_us')}</h3>
|
<h3 className='contacth3'>{this.getMessage('modals.main.settings.sections.about.contact_us')}</h3>
|
||||||
<a href={'mailto:' + variables.constants.EMAIL} className='aboutIcon' target='_blank' rel='noopener noreferrer'><Email/></a>
|
<a href={'mailto:' + variables.constants.EMAIL} className='aboutIcon' target='_blank' rel='noopener noreferrer'><Email/></a>
|
||||||
<a href={'https://twitter.com/' + variables.constants.TWITTER_HANDLE} className='aboutIcon' target='_blank' rel='noopener noreferrer'><Twitter/></a>
|
<a href={'https://twitter.com/' + variables.constants.TWITTER_HANDLE} className='aboutIcon' target='_blank' rel='noopener noreferrer'><Twitter/></a>
|
||||||
<a href={'https://instagram.com/' + variables.constants.INSTAGRAM_HANDLE} className='aboutIcon' target='_blank' rel='noopener noreferrer'><Instagram/></a>
|
<a href={'https://instagram.com/' + variables.constants.INSTAGRAM_HANDLE} className='aboutIcon' target='_blank' rel='noopener noreferrer'><Instagram/></a>
|
||||||
|
|||||||
@@ -90,11 +90,19 @@ export default class BackgroundSettings extends PureComponent {
|
|||||||
const APISettings = (
|
const APISettings = (
|
||||||
<>
|
<>
|
||||||
<Radio title={getMessage('modals.main.settings.sections.background.source.api')} options={apiOptions} name='backgroundAPI' category='background' element='#backgroundImage' onChange={(e) => this.setState({ backgroundAPI: e })}/>
|
<Radio title={getMessage('modals.main.settings.sections.background.source.api')} options={apiOptions} name='backgroundAPI' category='background' element='#backgroundImage' onChange={(e) => this.setState({ backgroundAPI: e })}/>
|
||||||
<Dropdown label={getMessage('modals.main.settings.sections.background.category')} name='apiCategory'>
|
{this.state.backgroundCategories[0] === getMessage('modals.main.loading') ?
|
||||||
{this.state.backgroundCategories.map((category) => (
|
<>
|
||||||
<MenuItem value={category} key={category}>{category.charAt(0).toUpperCase() + category.slice(1)}</MenuItem>
|
<Dropdown label={getMessage('modals.main.settings.sections.background.category')} name='apiCategory'>
|
||||||
))}
|
<MenuItem value='loading' key='loading'>{getMessage('modals.main.loading')}</MenuItem>
|
||||||
</Dropdown>
|
<MenuItem value='loading' key='loading'>{getMessage('modals.main.loading')}</MenuItem>
|
||||||
|
</Dropdown>
|
||||||
|
</> :
|
||||||
|
<Dropdown label={getMessage('modals.main.settings.sections.background.category')} name='apiCategory' >
|
||||||
|
{this.state.backgroundCategories.map((category) => (
|
||||||
|
<MenuItem value={category} key={category}>{category.charAt(0).toUpperCase() + category.slice(1)}</MenuItem>
|
||||||
|
))}
|
||||||
|
</Dropdown>
|
||||||
|
}
|
||||||
<Dropdown label={getMessage('modals.main.settings.sections.background.source.quality.title')} name='apiQuality' element='.other'>
|
<Dropdown label={getMessage('modals.main.settings.sections.background.source.quality.title')} name='apiQuality' element='.other'>
|
||||||
<option value='original'>{getMessage('modals.main.settings.sections.background.source.quality.original')}</option>
|
<option value='original'>{getMessage('modals.main.settings.sections.background.source.quality.original')}</option>
|
||||||
<option value='high'>{getMessage('modals.main.settings.sections.background.source.quality.high')}</option>
|
<option value='high'>{getMessage('modals.main.settings.sections.background.source.quality.high')}</option>
|
||||||
@@ -125,7 +133,7 @@ export default class BackgroundSettings extends PureComponent {
|
|||||||
<Checkbox name='ddgProxy' text={getMessage('modals.main.settings.sections.background.ddg_image_proxy')} element='.other' disabled={!usingImage} />
|
<Checkbox name='ddgProxy' text={getMessage('modals.main.settings.sections.background.ddg_image_proxy')} element='.other' disabled={!usingImage} />
|
||||||
<Checkbox name='bgtransition' text={getMessage('modals.main.settings.sections.background.transition')} element='.other' disabled={!usingImage} />
|
<Checkbox name='bgtransition' text={getMessage('modals.main.settings.sections.background.transition')} element='.other' disabled={!usingImage} />
|
||||||
<Checkbox name='photoInformation' text={getMessage('modals.main.settings.sections.background.photo_information')} element='.other' disabled={this.state.backgroundType !== 'api' && this.state.backgroundType !== 'marketplace'} />
|
<Checkbox name='photoInformation' text={getMessage('modals.main.settings.sections.background.photo_information')} element='.other' disabled={this.state.backgroundType !== 'api' && this.state.backgroundType !== 'marketplace'} />
|
||||||
{/*<Checkbox name='photoMap' text={getMessage('modals.main.settings.sections.background.show_map')} element='.other' disabled={this.state.backgroundAPI !== 'unsplash'}/>*/}
|
<Checkbox name='photoMap' text={getMessage('modals.main.settings.sections.background.show_map')} element='.other' disabled={this.state.backgroundAPI !== 'unsplash'}/>
|
||||||
|
|
||||||
<h3>{getMessage('modals.main.settings.sections.background.source.title')}</h3>
|
<h3>{getMessage('modals.main.settings.sections.background.source.title')}</h3>
|
||||||
<Dropdown label={getMessage('modals.main.settings.sections.background.type.title')} name='backgroundType' onChange={(value) => this.setState({ backgroundType: value })} category='background'>
|
<Dropdown label={getMessage('modals.main.settings.sections.background.type.title')} name='backgroundType' onChange={(value) => this.setState({ backgroundType: value })} category='background'>
|
||||||
|
|||||||
@@ -92,6 +92,13 @@ export default class WelcomeSections extends PureComponent {
|
|||||||
this.timeout = setTimeout(this.changeWelcomeImg, 3 * 1000);
|
this.timeout = setTimeout(this.changeWelcomeImg, 3 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
if (this.timeout) {
|
||||||
|
clearTimeout(this.timeout);
|
||||||
|
this.timeout = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// cancel welcome image timer if not on welcome tab
|
// cancel welcome image timer if not on welcome tab
|
||||||
componentDidUpdate() {
|
componentDidUpdate() {
|
||||||
if (this.props.currentTab !== 0) {
|
if (this.props.currentTab !== 0) {
|
||||||
|
|||||||
@@ -79,25 +79,36 @@
|
|||||||
|
|
||||||
.themesToggleArea {
|
.themesToggleArea {
|
||||||
.active {
|
.active {
|
||||||
background: var(--tab-active) !important;
|
background: var(--tab-active);
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle {
|
.toggle {
|
||||||
background: var(--sidebar);
|
background: var(--sidebar);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 40px;
|
border-radius: 20px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border: 3px solid var(--tab-active);
|
border: 3px solid var(--tab-active);
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: var(--tab-active);
|
background: var(--tab-active);
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
font-size: 2.5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.auto {
|
.auto {
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import variables from 'modules/variables';
|
|||||||
import { useState, Fragment } from 'react';
|
import { useState, Fragment } from 'react';
|
||||||
import { Info, LocationOn, PhotoCamera, Crop as Resolution, Person as Photographer, GetApp as Download } from '@mui/icons-material';
|
import { Info, LocationOn, PhotoCamera, Crop as Resolution, Person as Photographer, GetApp as Download } from '@mui/icons-material';
|
||||||
//import Hotkeys from 'react-hot-keys';
|
//import Hotkeys from 'react-hot-keys';
|
||||||
//import { lat2tile, lon2tile } from 'modules/helpers/background/widget';
|
|
||||||
|
|
||||||
const toDataURL = async (url) => {
|
const toDataURL = async (url) => {
|
||||||
const res = await fetch(url);
|
const res = await fetch(url);
|
||||||
@@ -26,6 +25,7 @@ const downloadImage = async (info) => {
|
|||||||
export default function PhotoInformation({ info, url, api }) {
|
export default function PhotoInformation({ info, url, api }) {
|
||||||
const [width, setWidth] = useState(0);
|
const [width, setWidth] = useState(0);
|
||||||
const [height, setHeight] = useState(0);
|
const [height, setHeight] = useState(0);
|
||||||
|
const [usePhotoMap, setPhotoMap] = useState(false);
|
||||||
|
|
||||||
if (info.hidden === true || !info.credit) {
|
if (info.hidden === true || !info.credit) {
|
||||||
return null;
|
return null;
|
||||||
@@ -75,7 +75,7 @@ export default function PhotoInformation({ info, url, api }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const downloadEnabled = (localStorage.getItem('downloadbtn') === 'true') && !info.offline && !info.photographerURL && api;
|
const downloadEnabled = (localStorage.getItem('downloadbtn') === 'true') && !info.offline && !info.photographerURL && api;
|
||||||
/*const downloadBackground = () => {
|
const downloadBackground = () => {
|
||||||
if (downloadEnabled) {
|
if (downloadEnabled) {
|
||||||
downloadImage(info);
|
downloadImage(info);
|
||||||
}
|
}
|
||||||
@@ -90,36 +90,36 @@ export default function PhotoInformation({ info, url, api }) {
|
|||||||
element.style.display = 'none';
|
element.style.display = 'none';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};*/
|
};
|
||||||
|
|
||||||
{/*const photoMap = () => {
|
const photoMap = () => {
|
||||||
if (localStorage.getItem('photoMap') !== 'true' || !info.latitude || !info.longitude) {
|
if (localStorage.getItem('photoMap') !== 'true' || !info.latitude || !info.longitude || usePhotoMap === false) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const zoom = 12;
|
const zoom = 12;
|
||||||
const lat = lat2tile(info.latitude, zoom);
|
const tile = `${variables.constants.MAPBOX_URL}/styles/v1/mapbox/streets-v11/static/pin-s+555555(${info.longitude},${info.latitude})/${info.longitude},${info.latitude},${zoom},0/300x100?access_token=${info.maptoken}`;
|
||||||
const lon = lon2tile(info.longitude, zoom);
|
|
||||||
const tile = `${variables.constants.MAPBOX_URL}/styles/v1/mapbox/streets-v11/tiles/${zoom}/${lon}/${lat}?access_token=${info.maptoken}`;
|
|
||||||
|
|
||||||
let icon = variables.constants.CDN_URL + '/mapbox/mapbox-logo-dark.png';
|
|
||||||
if (document.body.classList.contains('dark')) {
|
|
||||||
icon = variables.constants.CDN_URL + '/mapbox/mapbox-logo-white.png';
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment key='test'>
|
<Fragment key='photomap'>
|
||||||
<a href={`https://www.openstreetmap.org/?mlat=${info.latitude}&mlon=${info.longitude}`} target='_blank' rel='noopener noreferrer'>
|
<a href={`${variables.constants.OPENSTREETMAP_URL}/?mlat=${info.latitude}&mlon=${info.longitude}`} target='_blank' rel='noopener noreferrer'>
|
||||||
<img className='locationMap' src={tile} alt='location' draggable={false}/>
|
<img className='locationMap' src={tile} alt='location' draggable={false}/>
|
||||||
</a>
|
</a>
|
||||||
<br/>
|
<br/>
|
||||||
<img className='mapboxLogo' src={icon} alt='mapbox logo' draggable={false}/>
|
|
||||||
<span className='mapCopyright'>
|
<span className='mapCopyright'>
|
||||||
<a href='https://www.mapbox.com/about/maps/' target='_blank' rel='noopener noreferrer'> © Mapbox</a>, <a href='https://www.openstreetmap.org/about/' target='_blank' rel='noopener noreferrer'>© OpenStreetMap</a>. <a href='https://www.mapbox.com/map-feedback/' target='_blank' rel='noopener noreferrer'>Improve this map</a>.
|
<a href='https://www.mapbox.com/about/maps/' target='_blank' rel='noopener noreferrer'> © Mapbox</a>, <a href='https://www.openstreetmap.org/about/' target='_blank' rel='noopener noreferrer'>© OpenStreetMap</a>. <a href='https://www.mapbox.com/map-feedback/' target='_blank' rel='noopener noreferrer'>Improve this map</a>.
|
||||||
</span>
|
</span>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
}*/}
|
}
|
||||||
|
|
||||||
|
// only request map image if the user looks at the photo information
|
||||||
|
// this is to reduce requests to the api
|
||||||
|
try {
|
||||||
|
document.getElementsByClassName('photoInformation')[0].onmouseover = () => {
|
||||||
|
setPhotoMap(true);
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='photoInformation'>
|
<div className='photoInformation'>
|
||||||
@@ -129,7 +129,7 @@ export default function PhotoInformation({ info, url, api }) {
|
|||||||
<Info className='infoIcon'/>
|
<Info className='infoIcon'/>
|
||||||
<h1>{variables.language.getMessage(variables.languagecode, 'widgets.background.information')}</h1>
|
<h1>{variables.language.getMessage(variables.languagecode, 'widgets.background.information')}</h1>
|
||||||
<hr/>
|
<hr/>
|
||||||
{/*photoMap()*/}
|
{photoMap()}
|
||||||
{/* fix console error by using fragment and key */}
|
{/* fix console error by using fragment and key */}
|
||||||
{info.location && info.location !== 'N/A' ? <Fragment key='location'>
|
{info.location && info.location !== 'N/A' ? <Fragment key='location'>
|
||||||
<LocationOn/>
|
<LocationOn/>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export default class Notes extends PureComponent {
|
|||||||
<NotesRounded/>
|
<NotesRounded/>
|
||||||
<h3>{variables.language.getMessage(variables.languagecode, 'widgets.navbar.notes.title')}</h3>
|
<h3>{variables.language.getMessage(variables.languagecode, 'widgets.navbar.notes.title')}</h3>
|
||||||
</div>
|
</div>
|
||||||
<TextareaAutosize rowsmax={50} placeholder={variables.language.getMessage(variables.languagecode, 'widgets.navbar.notes.placeholder')} value={this.state.notes} onChange={this.setNotes}/>
|
<TextareaAutosize placeholder={variables.language.getMessage(variables.languagecode, 'widgets.navbar.notes.placeholder')} value={this.state.notes} onChange={this.setNotes}/>
|
||||||
<button onClick={() => this.pin()} className='pinNote'><PushPin/></button>
|
<button onClick={() => this.pin()} className='pinNote'><PushPin/></button>
|
||||||
<button onClick={() => this.copy()} className='copyNote'><FileCopyRounded/></button>
|
<button onClick={() => this.copy()} className='copyNote'><FileCopyRounded/></button>
|
||||||
{/*variables.keybinds.pinNotes && variables.keybinds.pinNotes !== '' ? <Hotkeys keyName={variables.keybinds.pinNotes} onKeyDown={() => this.pin()}/> : null*/}
|
{/*variables.keybinds.pinNotes && variables.keybinds.pinNotes !== '' ? <Hotkeys keyName={variables.keybinds.pinNotes} onKeyDown={() => this.pin()}/> : null*/}
|
||||||
|
|||||||
@@ -23,6 +23,13 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
top: 80%;
|
top: 80%;
|
||||||
margin-left: -150px;
|
margin-left: -150px;
|
||||||
|
max-height: 80vh !important;
|
||||||
|
font-size: 1rem !important;
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
max-height: 65vh !important;
|
||||||
|
overflow-y: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
float: left;
|
float: left;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ if (languagecode === 'en') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
variables.language = new I18n(variables.languagecode, {
|
variables.language = new I18n(variables.languagecode, {
|
||||||
de: require('./translations/de_DE.json'),
|
de_DE: require('./translations/de_DE.json'),
|
||||||
en_GB: require('./translations/en_GB.json'),
|
en_GB: require('./translations/en_GB.json'),
|
||||||
en_US: require('./translations/en_US.json'),
|
en_US: require('./translations/en_US.json'),
|
||||||
es: require('./translations/es.json'),
|
es: require('./translations/es.json'),
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ export const MARKETPLACE_URL = 'https://marketplace.muetab.com';
|
|||||||
export const SPONSORS_URL = 'https://sponsors.muetab.com';
|
export const SPONSORS_URL = 'https://sponsors.muetab.com';
|
||||||
export const GITHUB_URL = 'https://api.github.com';
|
export const GITHUB_URL = 'https://api.github.com';
|
||||||
export const DDG_IMAGE_PROXY = 'https://external-content.duckduckgo.com/iu/?u=';
|
export const DDG_IMAGE_PROXY = 'https://external-content.duckduckgo.com/iu/?u=';
|
||||||
//export const MAPBOX_URL = 'https://api.mapbox.com';
|
export const MAPBOX_URL = 'https://api.mapbox.com';
|
||||||
|
export const OPENSTREETMAP_URL = 'https://www.openstreetmap.org';
|
||||||
|
|
||||||
// Mue URLs
|
// Mue URLs
|
||||||
export const WEBSITE_URL = 'https://muetab.com';
|
export const WEBSITE_URL = 'https://muetab.com';
|
||||||
export const PRIVACY_URL = 'https://muetab.com/privacy';
|
export const PRIVACY_URL = 'https://muetab.com/privacy';
|
||||||
export const BLOG_POST = 'https://blog.muetab.com/posts/version-6-0';
|
export const BLOG_POST = 'https://blog.muetab.com/posts/version-6-0';
|
||||||
export const TRANSLATIONS_URL = 'https://docs.muetab.com/translations/';
|
export const TRANSLATIONS_URL = 'https://docs.muetab.com/translations/';
|
||||||
export const CDN_URL = 'https://res.cloudinary.com/mue/image/upload';
|
|
||||||
|
|
||||||
// Mue Info
|
// Mue Info
|
||||||
export const ORG_NAME = 'mue';
|
export const ORG_NAME = 'mue';
|
||||||
@@ -29,4 +29,4 @@ export const DONATE_USERNAME = 'davidcralph'; // this only works if you use the
|
|||||||
|
|
||||||
export const OFFLINE_IMAGES = 20;
|
export const OFFLINE_IMAGES = 20;
|
||||||
|
|
||||||
export const VERSION = '6.0.1';
|
export const VERSION = '6.0.3';
|
||||||
|
|||||||
@@ -72,12 +72,3 @@ export function randomColourStyleBuilder(type) {
|
|||||||
style
|
style
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// source: https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#ECMAScript_.28JavaScript.2FActionScript.2C_etc..29
|
|
||||||
/*export function lon2tile(lon, zoom) {
|
|
||||||
return (Math.floor((lon + 180) / 360 * Math.pow(2, zoom)));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function lat2tile(lat, zoom) {
|
|
||||||
return (Math.floor((1 - Math.log(Math.tan(lat * Math.PI / 180) + 1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, zoom)));
|
|
||||||
}*/
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ export function install(type, input, sideload) {
|
|||||||
localStorage.setItem('quoteType', 'quote_pack');
|
localStorage.setItem('quoteType', 'quote_pack');
|
||||||
EventBus.dispatch('refresh', 'quote');
|
EventBus.dispatch('refresh', 'quote');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -78,6 +79,7 @@ export function uninstall(type, name) {
|
|||||||
});
|
});
|
||||||
showReminder();
|
showReminder();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'quotes':
|
case 'quotes':
|
||||||
localStorage.removeItem('quote_packs');
|
localStorage.removeItem('quote_packs');
|
||||||
localStorage.removeItem('quoteAPI');
|
localStorage.removeItem('quoteAPI');
|
||||||
@@ -85,12 +87,14 @@ export function uninstall(type, name) {
|
|||||||
localStorage.removeItem('oldQuoteType');
|
localStorage.removeItem('oldQuoteType');
|
||||||
EventBus.dispatch('refresh', 'marketplacequoteuninstall');
|
EventBus.dispatch('refresh', 'marketplacequoteuninstall');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'photos':
|
case 'photos':
|
||||||
localStorage.removeItem('photo_packs');
|
localStorage.removeItem('photo_packs');
|
||||||
localStorage.setItem('backgroundType', localStorage.getItem('oldBackgroundType'));
|
localStorage.setItem('backgroundType', localStorage.getItem('oldBackgroundType'));
|
||||||
localStorage.removeItem('oldBackgroundType');
|
localStorage.removeItem('oldBackgroundType');
|
||||||
EventBus.dispatch('refresh', 'marketplacebackgrounduninstall');
|
EventBus.dispatch('refresh', 'marketplacebackgrounduninstall');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -423,7 +423,7 @@
|
|||||||
"added": "Hinzugefügt",
|
"added": "Hinzugefügt",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Hier ist es leer",
|
"title": "Hier ist es leer",
|
||||||
"description": "Gehen Sie zum Marktplatz, um einige hinzuzufügen"
|
"description": "Gehen Sie zum Marktplatz, um einige hinzuzufügen"
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "Added",
|
"added": "Added",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Empty",
|
"title": "Empty",
|
||||||
"description": "No addons are installed"
|
"description": "No addons are installed"
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "Added",
|
"added": "Added",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Empty",
|
"title": "Empty",
|
||||||
"description": "No addons are installed"
|
"description": "No addons are installed"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"new": "Nuevo enlace",
|
"new": "Nuevo enlace",
|
||||||
"name": "Nombre",
|
"name": "Nombre",
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"icon": "Icon (optional)",
|
"icon": "Icono (opcional)",
|
||||||
"add": "Añadir",
|
"add": "Añadir",
|
||||||
"name_error": "Debe indicar el nombre",
|
"name_error": "Debe indicar el nombre",
|
||||||
"url_error": "Debe indicar la URL"
|
"url_error": "Debe indicar la URL"
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
"author_link": "Enlace del autor",
|
"author_link": "Enlace del autor",
|
||||||
"custom": "Cita personalizada",
|
"custom": "Cita personalizada",
|
||||||
"custom_author": "Autor personalizado",
|
"custom_author": "Autor personalizado",
|
||||||
"add": "Add quote",
|
"add": "Añadir cita",
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"title": "Botones",
|
"title": "Botones",
|
||||||
"copy": "Botón de copiar",
|
"copy": "Botón de copiar",
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
"ddg_image_proxy": "Utilizar el proxy de imágenes de DuckDuckGo",
|
"ddg_image_proxy": "Utilizar el proxy de imágenes de DuckDuckGo",
|
||||||
"transition": "Transición fade-in",
|
"transition": "Transición fade-in",
|
||||||
"photo_information": "Ver información de la foto",
|
"photo_information": "Ver información de la foto",
|
||||||
"show_map": "Show location map on photo information if available",
|
"show_map": "Mostrar el mapa de la ubicación en la información de la foto si está disponible",
|
||||||
"category": "Categoría",
|
"category": "Categoría",
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"title": "Botones",
|
"title": "Botones",
|
||||||
@@ -160,8 +160,8 @@
|
|||||||
"api": "API",
|
"api": "API",
|
||||||
"custom_image": "Imagen personalizada",
|
"custom_image": "Imagen personalizada",
|
||||||
"custom_colour": "Color/degradado personalizado",
|
"custom_colour": "Color/degradado personalizado",
|
||||||
"random_colour": "Random colour",
|
"random_colour": "Color aleatorio",
|
||||||
"random_gradient": "Random gradient"
|
"random_gradient": "Degradado aleatorio"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"title": "Fuente",
|
"title": "Fuente",
|
||||||
@@ -170,8 +170,8 @@
|
|||||||
"custom_colour": "Color del fondo personalizado",
|
"custom_colour": "Color del fondo personalizado",
|
||||||
"upload": "Subir",
|
"upload": "Subir",
|
||||||
"add_colour": "Añadir color",
|
"add_colour": "Añadir color",
|
||||||
"add_background": "Add background",
|
"add_background": "Añadir fondo",
|
||||||
"add_url": "Add URL",
|
"add_url": "Añadir URL",
|
||||||
"disabled": "Desactivado",
|
"disabled": "Desactivado",
|
||||||
"loop_video": "Vídeo en bucle",
|
"loop_video": "Vídeo en bucle",
|
||||||
"mute_video": "Silenciar video",
|
"mute_video": "Silenciar video",
|
||||||
@@ -229,12 +229,12 @@
|
|||||||
"title": "Enlaces rápidos",
|
"title": "Enlaces rápidos",
|
||||||
"open_new": "Abrir en una nueva pestaña",
|
"open_new": "Abrir en una nueva pestaña",
|
||||||
"tooltip": "Descripción emergente",
|
"tooltip": "Descripción emergente",
|
||||||
"text_only": "Show text only"
|
"text_only": "Mostrar solo texto"
|
||||||
},
|
},
|
||||||
"message": {
|
"message": {
|
||||||
"title": "Message",
|
"title": "Mensaje",
|
||||||
"add": "Add message",
|
"add": "Añadir mensaje",
|
||||||
"text": "Text"
|
"text": "Texto"
|
||||||
},
|
},
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"title": "Apariencia",
|
"title": "Apariencia",
|
||||||
@@ -248,9 +248,9 @@
|
|||||||
"title": "Barra de búsqueda",
|
"title": "Barra de búsqueda",
|
||||||
"notes": "Notas",
|
"notes": "Notas",
|
||||||
"refresh": "Botón de recargar",
|
"refresh": "Botón de recargar",
|
||||||
"hover": "Only display on hover",
|
"hover": "Solo mostrar al pasar el cursor",
|
||||||
"refresh_options": {
|
"refresh_options": {
|
||||||
"none": "None",
|
"none": "Ninguno",
|
||||||
"page": "Página"
|
"page": "Página"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -279,7 +279,7 @@
|
|||||||
"accessibility": {
|
"accessibility": {
|
||||||
"title": "Accesibilidad",
|
"title": "Accesibilidad",
|
||||||
"animations": "Animaciones",
|
"animations": "Animaciones",
|
||||||
"text_shadow": "Widget text shadow",
|
"text_shadow": "Sombra de texto del widget",
|
||||||
"widget_zoom": "Zoom del widget",
|
"widget_zoom": "Zoom del widget",
|
||||||
"toast_duration": "Duración de la notificación",
|
"toast_duration": "Duración de la notificación",
|
||||||
"milliseconds": "milisegundos"
|
"milliseconds": "milisegundos"
|
||||||
@@ -323,27 +323,27 @@
|
|||||||
"usage": "Estadísticas de uso"
|
"usage": "Estadísticas de uso"
|
||||||
},
|
},
|
||||||
"keybinds": {
|
"keybinds": {
|
||||||
"title": "Keybinds",
|
"title": "Asignación de teclas",
|
||||||
"recording": "Recording...",
|
"recording": "Grabando...",
|
||||||
"click_to_record": "Click to record",
|
"click_to_record": "Click para grabar",
|
||||||
"background": {
|
"background": {
|
||||||
"favourite": "Favourite background",
|
"favourite": "Fondo favorito",
|
||||||
"maximise": "Maximise background",
|
"maximise": "Maximizar fondo",
|
||||||
"download": "Download background",
|
"download": "Descargar fondo",
|
||||||
"show_info": "Show background information"
|
"show_info": "Mostrar información del fondo"
|
||||||
},
|
},
|
||||||
"quote": {
|
"quote": {
|
||||||
"favourite": "Favourite quote",
|
"favourite": "Marcar la cita como favorita",
|
||||||
"copy": "Copy quote",
|
"copy": "Copiar cita",
|
||||||
"tweet": "Tweet quote"
|
"tweet": "Tuitear la cita"
|
||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"pin": "Pin notes",
|
"pin": "Fijar notas",
|
||||||
"copy": "Copy notes"
|
"copy": "Copiar notas"
|
||||||
},
|
},
|
||||||
"search": "Focus search",
|
"search": "Enfocar búsqueda",
|
||||||
"quicklinks": "Toggle add quick link",
|
"quicklinks": "Alternar añadir enlace rápido",
|
||||||
"modal": "Toggle modal"
|
"modal": "Alternal modal"
|
||||||
},
|
},
|
||||||
"experimental": {
|
"experimental": {
|
||||||
"title": "Experimental",
|
"title": "Experimental",
|
||||||
@@ -356,7 +356,7 @@
|
|||||||
},
|
},
|
||||||
"changelog": {
|
"changelog": {
|
||||||
"title": "Registro de cambios",
|
"title": "Registro de cambios",
|
||||||
"by": "By {author}"
|
"by": "Por {author}"
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "Acerca de",
|
"title": "Acerca de",
|
||||||
@@ -382,7 +382,7 @@
|
|||||||
},
|
},
|
||||||
"contributors": "Contribuyentes",
|
"contributors": "Contribuyentes",
|
||||||
"supporters": "Partidarios",
|
"supporters": "Partidarios",
|
||||||
"no_supporters": "There are currently no Mue supporters",
|
"no_supporters": "Actualmente no hay partidarios de Mue",
|
||||||
"photographers": "Fotógrafos"
|
"photographers": "Fotógrafos"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -406,7 +406,7 @@
|
|||||||
"buttons": {
|
"buttons": {
|
||||||
"addtomue": "Añadir a Mue",
|
"addtomue": "Añadir a Mue",
|
||||||
"remove": "Desinstalar",
|
"remove": "Desinstalar",
|
||||||
"update_addon": "Update Add-on"
|
"update_addon": "Actualizar complemento"
|
||||||
},
|
},
|
||||||
"quote_warning": {
|
"quote_warning": {
|
||||||
"title": "Advertencia",
|
"title": "Advertencia",
|
||||||
@@ -420,22 +420,22 @@
|
|||||||
},
|
},
|
||||||
"addons": {
|
"addons": {
|
||||||
"added": "Añadidos",
|
"added": "Añadidos",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Comprobar actualizaciones",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No hay actualizaciones disponibles",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Actualizaciones disponibles {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Vacío",
|
"title": "Vacío",
|
||||||
"description": "Dirígete a la tienda para agregar algunos."
|
"description": "Dirígete a la tienda para agregar algunos."
|
||||||
},
|
},
|
||||||
"sideload": {
|
"sideload": {
|
||||||
"title": "Cargar localmente",
|
"title": "Cargar localmente",
|
||||||
"failed": "Failed to sideload addon",
|
"failed": "Fallo en la carga lateral del complemento",
|
||||||
"errors": {
|
"errors": {
|
||||||
"no_name": "No name provided",
|
"no_name": "No se ha indicado el nombre",
|
||||||
"no_author": "No author provided",
|
"no_author": "No se ha indicado el autor",
|
||||||
"no_type": "No type provided",
|
"no_type": "No se ha indicado el tipo",
|
||||||
"invalid_photos": "Invalid photos object",
|
"invalid_photos": "Objeto de fotos inválido",
|
||||||
"invalid_quotes": "Invalid quotes object"
|
"invalid_quotes": "Objeto de citas inválido"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sort": {
|
"sort": {
|
||||||
@@ -492,7 +492,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"welcome": {
|
"welcome": {
|
||||||
"tip": "Truco",
|
"tip": "Consejo",
|
||||||
"sections": {
|
"sections": {
|
||||||
"intro": {
|
"intro": {
|
||||||
"title": "Bienvenido a Mue Tab",
|
"title": "Bienvenido a Mue Tab",
|
||||||
@@ -533,13 +533,13 @@
|
|||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"next": "Siguiente",
|
"next": "Siguiente",
|
||||||
"preview": "Preview",
|
"preview": "Vista previa",
|
||||||
"previous": "Anterior",
|
"previous": "Anterior",
|
||||||
"close": "Cerrar"
|
"close": "Cerrar"
|
||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"description": "You are currently in preview mode. Settings will be reset on closing this tab.",
|
"description": "Actualmente se encuentra en el modo de vista previa. La configuración se restablecerá al cerrar esta pestaña.",
|
||||||
"continue": "Continue setup"
|
"continue": "Continuar con la configuración"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -549,7 +549,7 @@
|
|||||||
"reset": "Restablecido correctamente",
|
"reset": "Restablecido correctamente",
|
||||||
"installed": "Instalado correctamente",
|
"installed": "Instalado correctamente",
|
||||||
"uninstalled": "Desinstalado correctamente",
|
"uninstalled": "Desinstalado correctamente",
|
||||||
"updated": "Successfully updated",
|
"updated": "Actualizado correctamente",
|
||||||
"error": "Algo salió mal",
|
"error": "Algo salió mal",
|
||||||
"imported": "Importado correctamente"
|
"imported": "Importado correctamente"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "Ajoutées",
|
"added": "Ajoutées",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "C'est vide par ici",
|
"title": "C'est vide par ici",
|
||||||
"description": "Dirigez vous vers le marché pour ajouter des options"
|
"description": "Dirigez vous vers le marché pour ajouter des options"
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "Toegevoegd",
|
"added": "Toegevoegd",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Het is hier erg leeg",
|
"title": "Het is hier erg leeg",
|
||||||
"description": "Ga naar de marktplaats om een paar extensies toe te voegen"
|
"description": "Ga naar de marktplaats om een paar extensies toe te voegen"
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "Lagt til",
|
"added": "Lagt til",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Det er tomt her.",
|
"title": "Det er tomt her.",
|
||||||
"description": "Gå til markedsplassen å legg til noe"
|
"description": "Gå til markedsplassen å legg til noe"
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "Добавлен",
|
"added": "Добавлен",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "Здесь пусто",
|
"title": "Здесь пусто",
|
||||||
"description": "Зайдите в магазин, чтобы найти что-то интересное"
|
"description": "Зайдите в магазин, чтобы найти что-то интересное"
|
||||||
|
|||||||
@@ -422,7 +422,7 @@
|
|||||||
"added": "已添加",
|
"added": "已添加",
|
||||||
"check_updates": "Check for updates",
|
"check_updates": "Check for updates",
|
||||||
"no_updates": "No updates available",
|
"no_updates": "No updates available",
|
||||||
"updates_available": "Updates avaialble {amount}",
|
"updates_available": "Updates available {amount}",
|
||||||
"empty": {
|
"empty": {
|
||||||
"title": "这里空空如也",
|
"title": "这里空空如也",
|
||||||
"description": "请访问插件市场来添加插件。"
|
"description": "请访问插件市场来添加插件。"
|
||||||
|
|||||||
Reference in New Issue
Block a user