Cleaning code
This commit is contained in:
parent
d4f82a7fc5
commit
2876cb24b3
@ -1,12 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
let exceptions;
|
||||
|
||||
function setExceptions(val) {
|
||||
exceptions = val;
|
||||
browser.storage.sync.set({ exceptions })
|
||||
};
|
||||
|
||||
let theme;
|
||||
function setTheme(val) {
|
||||
theme = val;
|
||||
@ -17,5 +10,4 @@ export default {
|
||||
exceptions,
|
||||
theme,
|
||||
setTheme,
|
||||
setExceptions,
|
||||
}
|
@ -10,11 +10,6 @@ import wikipediaHelper from "./wikipedia.js";
|
||||
import mapsHelper from "./maps.js";
|
||||
import medium from "./medium.js";
|
||||
|
||||
|
||||
function addHttps(instances) {
|
||||
return instances.map((item, i) => "https://" + item)
|
||||
}
|
||||
|
||||
function getRandomInstance(instances) {
|
||||
return instances[~~(instances.length * Math.random())];
|
||||
}
|
||||
@ -51,72 +46,12 @@ function updateInstances() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function debounce(func, wait, immediate) {
|
||||
let timeout;
|
||||
return () => {
|
||||
let context = this,
|
||||
args = arguments;
|
||||
let later = () => {
|
||||
timeout = null;
|
||||
if (!immediate) func.apply(context, args);
|
||||
};
|
||||
let callNow = immediate && !timeout;
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, wait);
|
||||
if (callNow) func.apply(context, args);
|
||||
};
|
||||
}
|
||||
|
||||
function validURL(str) {
|
||||
var pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
|
||||
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
|
||||
'((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
|
||||
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
|
||||
'(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
|
||||
'(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator
|
||||
return !!pattern.test(str);
|
||||
}
|
||||
|
||||
function filterList(oldList) {
|
||||
oldList.filter((x) => x.trim() != "");
|
||||
let newList = [];
|
||||
oldList.forEach((c) => {
|
||||
if (!newList.includes(c.trim()))
|
||||
newList.push(c.trim());
|
||||
});
|
||||
newList = newList.filter(validURL)
|
||||
return newList;
|
||||
}
|
||||
|
||||
function updateListElement(listElement, list) {
|
||||
while (listElement.firstChild)
|
||||
listElement.removeChild(listElement.firstChild);
|
||||
list.forEach(element => {
|
||||
let entry = document.createElement('li');
|
||||
entry.appendChild(document.createTextNode(element));
|
||||
listElement.appendChild(entry);
|
||||
});
|
||||
}
|
||||
|
||||
function isFirefox() {
|
||||
return typeof InstallTrigger !== "undefined";
|
||||
}
|
||||
|
||||
function isException(url, initiator) {
|
||||
return (
|
||||
data.exceptions.some((regex) => regex.test(url.href)) ||
|
||||
(initiator && data.exceptions.some((regex) => regex.test(initiator.href)))
|
||||
);
|
||||
}
|
||||
|
||||
export default {
|
||||
getRandomInstance,
|
||||
updateInstances,
|
||||
addHttps,
|
||||
debounce,
|
||||
validURL,
|
||||
filterList,
|
||||
updateListElement,
|
||||
isFirefox,
|
||||
isException,
|
||||
};
|
||||
|
@ -60,37 +60,23 @@ function setDisableInstagram(val) {
|
||||
browser.storage.sync.set({ disableInstagram })
|
||||
}
|
||||
|
||||
let bibliogramInstance;
|
||||
const getBibliogramInstance = () => bibliogramInstance;
|
||||
function setBibliogramInstance(val) {
|
||||
bibliogramInstance = val;
|
||||
browser.storage.sync.set({ bibliogramInstance })
|
||||
};
|
||||
|
||||
function redirect(url, initiator, type) {
|
||||
if (disableInstagram)
|
||||
return null;
|
||||
|
||||
// Do not redirect Bibliogram view on Instagram links
|
||||
if (
|
||||
initiator &&
|
||||
(initiator.origin === bibliogramInstance || redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
|
||||
)
|
||||
if (initiator && (redirects.normal.includes(initiator.origin) || targets.includes(initiator.host)))
|
||||
return null;
|
||||
|
||||
// Do not redirect /accounts, /embeds.js, or anything other than main_frame
|
||||
if (type !== "main_frame" || url.pathname.match(bypassPaths))
|
||||
return null;
|
||||
return 'CANCEL';
|
||||
|
||||
let link = commonHelper.getRandomInstance(redirects.normal);
|
||||
if (
|
||||
url.pathname === "/" ||
|
||||
instagramReservedPaths.includes(url.pathname.split("/")[1])
|
||||
)
|
||||
if (url.pathname === "/" || instagramReservedPaths.includes(url.pathname.split("/")[1]))
|
||||
return `${link}${url.pathname}${url.search}`;
|
||||
else
|
||||
// Likely a user profile, redirect to '/u/...'
|
||||
return `${link}/u${url.pathname}${url.search}`;
|
||||
return `${link}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
|
||||
}
|
||||
|
||||
function isInstagram(url) {
|
||||
@ -100,11 +86,9 @@ function isInstagram(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableInstagram",
|
||||
"bibliogramInstance",
|
||||
"instagramRedirects"
|
||||
])
|
||||
disableInstagram = result.disableInstagram ?? false;
|
||||
bibliogramInstance = result.bibliogramInstance;
|
||||
if (result.instagramRedirects)
|
||||
redirects = result.instagramRedirects
|
||||
}
|
||||
@ -114,8 +98,6 @@ export default {
|
||||
setRedirects,
|
||||
getDisableInstagram,
|
||||
setDisableInstagram,
|
||||
getBibliogramInstance,
|
||||
setBibliogramInstance,
|
||||
isInstagram,
|
||||
redirect,
|
||||
init,
|
||||
|
@ -54,13 +54,6 @@ function setDisableMaps(val) {
|
||||
browser.storage.sync.set({ disableMaps })
|
||||
}
|
||||
|
||||
let osmInstance;
|
||||
const getOsmInstance = () => osmInstance;
|
||||
function setOsmInstance(val) {
|
||||
osmInstance = val;
|
||||
browser.storage.sync.set({ osmInstance })
|
||||
}
|
||||
|
||||
function redirect(url, initiator) {
|
||||
if (disableMaps) return null;
|
||||
|
||||
@ -82,8 +75,7 @@ function redirect(url, initiator) {
|
||||
params = "&zoom=17";
|
||||
|
||||
// Set map layer
|
||||
params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"]
|
||||
}`;
|
||||
params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"]}`;
|
||||
// Handle Google Maps Embed API
|
||||
if (url.pathname.split("/").includes("embed")) {
|
||||
let query = "";
|
||||
@ -93,8 +85,7 @@ function redirect(url, initiator) {
|
||||
try {
|
||||
query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1];
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
// Unable to find map marker in URL.
|
||||
console.error(error); // Unable to find map marker in URL.
|
||||
}
|
||||
}
|
||||
let marker, bbox;
|
||||
@ -145,18 +136,14 @@ function isMaps(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableMaps",
|
||||
"osmInstance",
|
||||
])
|
||||
disableMaps = result.disableMaps ?? false;
|
||||
osmInstance = result.osmInstance;
|
||||
}
|
||||
|
||||
export default {
|
||||
addressToLatLng,
|
||||
getDisableMaps,
|
||||
setDisableMaps,
|
||||
getOsmInstance,
|
||||
setOsmInstance,
|
||||
redirect,
|
||||
isMaps,
|
||||
init,
|
||||
|
@ -39,12 +39,6 @@ function setDisableMedium(val) {
|
||||
}
|
||||
|
||||
|
||||
let scribeInstance;
|
||||
const getScribeInstance = () => scribeInstance;
|
||||
function setScribeInstance(val) {
|
||||
scribeInstance = val;
|
||||
browser.storage.sync.set({ scribeInstance })
|
||||
};
|
||||
|
||||
function redirect(url, initiator) {
|
||||
if (disableMedium) return null;
|
||||
@ -52,13 +46,8 @@ function redirect(url, initiator) {
|
||||
if (url.pathname == "/") return null;
|
||||
|
||||
if (
|
||||
commonHelper.isFirefox() &&
|
||||
initiator &&
|
||||
(
|
||||
initiator.origin === scribeInstance ||
|
||||
redirects.normal.includes(initiator.origin) ||
|
||||
targets.includes(initiator.host)
|
||||
)
|
||||
commonHelper.isFirefox() && initiator &&
|
||||
(redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
|
||||
) {
|
||||
browser.storage.sync.set({ redirectBypassFlag: true });
|
||||
return null;
|
||||
@ -73,11 +62,9 @@ function isMedium(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableMedium",
|
||||
"scribeInstance",
|
||||
"mediumRedirects"
|
||||
])
|
||||
disableMedium = result.disableMedium ?? false;
|
||||
scribeInstance = result.scribeInstance;
|
||||
if (result.mediumRedirects)
|
||||
redirects = result.mediumRedirects;
|
||||
}
|
||||
@ -91,9 +78,6 @@ export default {
|
||||
getDisableMedium,
|
||||
setDisableMedium,
|
||||
|
||||
getScribeInstance,
|
||||
setScribeInstance,
|
||||
|
||||
redirect,
|
||||
isMedium,
|
||||
init,
|
||||
|
@ -79,12 +79,6 @@ function setDisableReddit(val) {
|
||||
disableReddit = val;
|
||||
browser.storage.sync.set({ disableReddit })
|
||||
}
|
||||
let redditInstance;
|
||||
const getRedditInstance = () => redditInstance;
|
||||
function setRedditInstance(val) {
|
||||
redditInstance = val;
|
||||
browser.storage.sync.set({ redditInstance })
|
||||
};
|
||||
|
||||
let redditFrontend;
|
||||
const getRedditFrontend = () => redditFrontend;
|
||||
@ -99,8 +93,8 @@ function redirect(url, initiator, type) {
|
||||
return null;
|
||||
|
||||
// Do not redirect when already on the selected view
|
||||
if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance)
|
||||
return null;
|
||||
// if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance)
|
||||
// return null;
|
||||
|
||||
|
||||
// Do not redirect exclusions nor anything other than main_frame
|
||||
@ -140,12 +134,10 @@ function isReddit(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableReddit",
|
||||
"redditInstance",
|
||||
"redditFrontend",
|
||||
"redditRedirects"
|
||||
])
|
||||
disableReddit = result.disableReddit ?? false;
|
||||
redditInstance = result.redditInstance;
|
||||
redditFrontend = result.redditFrontend ?? 'libreddit';
|
||||
if (result.redditRedirects)
|
||||
redirects = result.redditRedirects;
|
||||
@ -160,9 +152,6 @@ export default {
|
||||
getDisableReddit,
|
||||
setDisableReddit,
|
||||
|
||||
getRedditInstance,
|
||||
setRedditInstance,
|
||||
|
||||
getRedditFrontend,
|
||||
setRedditFrontend,
|
||||
|
||||
|
@ -6,7 +6,7 @@ const targets = [
|
||||
/https?:\/\/(((www|maps)\.)?(google\.).*(\/search)|search\.(google\.).*)/
|
||||
];
|
||||
let redirects = {
|
||||
"searx": {
|
||||
"searx": {
|
||||
"normal": [
|
||||
"https://a.searx.space",
|
||||
"https://anon.sx",
|
||||
@ -137,7 +137,7 @@ let redirects = {
|
||||
"http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
|
||||
]
|
||||
},
|
||||
"whoogle": {
|
||||
"whoogle": {
|
||||
"normal": [
|
||||
"https://s.alefvanoon.xyz",
|
||||
"https://search.albony.xyz",
|
||||
@ -164,8 +164,6 @@ function setWhoogleRedirects(val) {
|
||||
console.log("whoogleRedirects:", val)
|
||||
}
|
||||
|
||||
|
||||
|
||||
let disableSearch;
|
||||
const getDisableSearch = () => disableSearch;
|
||||
function setDisableSearch(val) {
|
||||
@ -174,13 +172,6 @@ function setDisableSearch(val) {
|
||||
console.log("disableSearch: ", disableSearch)
|
||||
}
|
||||
|
||||
let searchInstance;
|
||||
const getSearchInstance = () => searchInstance;
|
||||
function setSearchInstance(val) {
|
||||
searchInstance = val;
|
||||
browser.storage.sync.set({ searchInstance })
|
||||
};
|
||||
|
||||
let searchFrontend;
|
||||
const getSearchFrontend = () => searchFrontend;
|
||||
function setSearchFrontend(val) {
|
||||
@ -208,7 +199,6 @@ function redirect(url, initiator) {
|
||||
url.search.slice(1).split("&").forEach(function (input) {
|
||||
if (input.startsWith("q=")) searchQuery = input;
|
||||
});
|
||||
console.log("Will return");
|
||||
return `${instance}${path}?${searchQuery}`;
|
||||
}
|
||||
|
||||
@ -219,12 +209,10 @@ function isSearch(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableSearch",
|
||||
"searchInstance",
|
||||
"searchFrontend",
|
||||
"searchRedirects",
|
||||
])
|
||||
disableSearch = result.disableSearch ?? false;
|
||||
searchInstance = result.searchInstance;
|
||||
searchFrontend = result.searchFrontend ?? 'searx';
|
||||
if (result.searchRedirects)
|
||||
redirects = result.searchRedirects;
|
||||
@ -241,9 +229,6 @@ export default {
|
||||
getDisableSearch,
|
||||
setDisableSearch,
|
||||
|
||||
getSearchInstance,
|
||||
setSearchInstance,
|
||||
|
||||
getSearchFrontend,
|
||||
setSearchFrontend,
|
||||
|
||||
|
@ -35,6 +35,7 @@ let redirects = {
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
const getRedirects = () => redirects;
|
||||
|
||||
function setSimplyTranslateRedirects(val) {
|
||||
@ -57,13 +58,6 @@ function setDisableTranslate(val) {
|
||||
console.log("disableTranslate: ", disableTranslate)
|
||||
}
|
||||
|
||||
let simplyTranslateInstance;
|
||||
const getSimplyTranslateInstance = () => simplyTranslateInstance;
|
||||
function setSimplyTranslateInstance(val) {
|
||||
simplyTranslateInstance = val;
|
||||
browser.storage.sync.set({ simplyTranslateInstance })
|
||||
};
|
||||
|
||||
let translateFrontend;
|
||||
const getFrontend = () => translateFrontend;
|
||||
function setFrontend(val) {
|
||||
@ -108,12 +102,10 @@ function isTranslate(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableTranslate",
|
||||
"simplyTranslateInstance",
|
||||
"translateFrontend",
|
||||
"translateRedirects"
|
||||
]);
|
||||
disableTranslate = result.disableTranslate ?? false;
|
||||
simplyTranslateInstance = result.simplyTranslateInstance;
|
||||
translateFrontend = result.translateFrontend ?? "simplyTransalte";
|
||||
if (result.translateRedirects)
|
||||
redirects = result.translateRedirects
|
||||
@ -123,18 +115,15 @@ export default {
|
||||
getRedirects,
|
||||
setSimplyTranslateRedirects,
|
||||
setLingvaRedirects,
|
||||
|
||||
|
||||
isTranslate,
|
||||
|
||||
|
||||
getDisableTranslate,
|
||||
setDisableTranslate,
|
||||
|
||||
getSimplyTranslateInstance,
|
||||
setSimplyTranslateInstance,
|
||||
|
||||
|
||||
getFrontend,
|
||||
setFrontend,
|
||||
|
||||
|
||||
redirect,
|
||||
init,
|
||||
};
|
||||
|
@ -12,11 +12,7 @@ const targets = [
|
||||
"pbs.twimg.com",
|
||||
"video.twimg.com",
|
||||
];
|
||||
/*
|
||||
Please remember to also update the
|
||||
src/assets/javascripts/remove-twitter-sw.js file
|
||||
(const nitterInstances) when updating this list:
|
||||
*/
|
||||
|
||||
let redirects = {
|
||||
"normal": [
|
||||
"https://nitter.net",
|
||||
@ -93,12 +89,6 @@ function setDisableTwitter(val) {
|
||||
browser.storage.sync.set({ disableTwitter })
|
||||
}
|
||||
|
||||
let nitterInstance;
|
||||
const getNitterInstance = () => nitterInstance;
|
||||
function setNitterInstance(val) {
|
||||
nitterInstance = val;
|
||||
browser.storage.sync.set({ nitterInstance })
|
||||
}
|
||||
|
||||
function redirect(url, initiator) {
|
||||
if (disableTwitter)
|
||||
@ -110,11 +100,7 @@ function redirect(url, initiator) {
|
||||
if (
|
||||
commonHelper.isFirefox() &&
|
||||
initiator &&
|
||||
(
|
||||
initiator.origin === nitterInstance ||
|
||||
redirects.normal.includes(initiator.origin) ||
|
||||
targets.includes(initiator.host)
|
||||
)
|
||||
(redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
|
||||
) {
|
||||
browser.storage.sync.set({ redirectBypassFlag: true });
|
||||
return null;
|
||||
@ -138,11 +124,9 @@ function isTwitter(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableTwitter",
|
||||
"nitterInstance",
|
||||
"twitterRedirects"
|
||||
]);
|
||||
disableTwitter = result.disableTwitter ?? false;
|
||||
nitterInstance = result.nitterInstance;
|
||||
if (result.twitterRedirects)
|
||||
redirects = result.twitterRedirects;
|
||||
}
|
||||
@ -154,9 +138,6 @@ export default {
|
||||
getDisableTwitter,
|
||||
setDisableTwitter,
|
||||
|
||||
getNitterInstance,
|
||||
setNitterInstance,
|
||||
|
||||
redirect,
|
||||
isTwitter,
|
||||
init,
|
||||
|
@ -27,13 +27,6 @@ function setDisableWikipedia(val) {
|
||||
browser.storage.sync.set({ disableWikipedia })
|
||||
}
|
||||
|
||||
let wikipediaInstance;
|
||||
const getWikipediaInstance = () => wikipediaInstance;
|
||||
function setWikipediaInstance(val) {
|
||||
wikipediaInstance = val;
|
||||
browser.storage.sync.set({ wikipediaInstance })
|
||||
};
|
||||
|
||||
function redirect(url, initiator) {
|
||||
if (disableWikipedia) return null;
|
||||
|
||||
@ -46,7 +39,7 @@ function redirect(url, initiator) {
|
||||
GETArguments.push([args[0], args[1]]);
|
||||
}
|
||||
}
|
||||
let instance = wikipediaInstance ?? commonHelper.getRandomInstance(redirects.normal)
|
||||
let instance = commonHelper.getRandomInstance(redirects.normal)
|
||||
let link = `${instance}${url.pathname}`;
|
||||
let urlSplit = url.host.split(".");
|
||||
if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
|
||||
@ -55,7 +48,7 @@ function redirect(url, initiator) {
|
||||
else GETArguments.push(["lang", urlSplit[0]]);
|
||||
if (urlSplit[1] == "m")
|
||||
GETArguments.push(["mobileaction", "toggle_view_mobile"]);
|
||||
//wikiless doesn't have mobile view support yet
|
||||
// wikiless doesn't have mobile view support yet
|
||||
}
|
||||
for (let i = 0; i < GETArguments.length; i++)
|
||||
link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
|
||||
@ -76,11 +69,9 @@ function isWikipedia(url) {
|
||||
async function init() {
|
||||
let result = await browser.storage.sync.get([
|
||||
"disableWikipedia",
|
||||
"wikipediaInstance",
|
||||
"wikipediaRedirects"
|
||||
]);
|
||||
disableWikipedia = result.disableWikipedia ?? false;
|
||||
wikipediaInstance = result.wikipediaInstance;
|
||||
if (result.wikipediaRedirects)
|
||||
redirects = result.wikipediaRedirects;
|
||||
}
|
||||
@ -92,9 +83,6 @@ export default {
|
||||
setDisableWikipedia,
|
||||
getDisableWikipedia,
|
||||
|
||||
setWikipediaInstance,
|
||||
getWikipediaInstance,
|
||||
|
||||
redirect,
|
||||
isWikipedia,
|
||||
init,
|
||||
|
@ -91,14 +91,6 @@ function setDisableYoutube(val) {
|
||||
console.log("disableYoutube: ", disableYoutube)
|
||||
}
|
||||
|
||||
let invidiousInstance;
|
||||
const getInvidiousInstance = () => invidiousInstance;
|
||||
function setInvidiousInstance(val) {
|
||||
invidiousInstance = val;
|
||||
browser.storage.sync.set({ invidiousInstance })
|
||||
console.log("invidiousInstance: ", invidiousInstance)
|
||||
}
|
||||
|
||||
let invidiousAlwaysProxy;
|
||||
function setInvidiousAlwaysProxy(val) {
|
||||
invidiousAlwaysProxy = val;
|
||||
@ -208,7 +200,6 @@ async function init() {
|
||||
"invidiousTheme",
|
||||
"persistInvidiousPrefs",
|
||||
"disableYoutube",
|
||||
"invidiousInstance",
|
||||
"invidiousOnlyEmbeddedVideo",
|
||||
"invidiousVolume",
|
||||
"invidiousPlayerStyle",
|
||||
@ -219,7 +210,7 @@ async function init() {
|
||||
"invidiousRedirectsChecks",
|
||||
"invidiousCustomRedirects",
|
||||
]);
|
||||
if (result.youtubeRedirects) redirects = result.youtubeRedirects
|
||||
if (result.youtubeRedirects) redirects = result.youtubeRedirects;
|
||||
|
||||
if (result.invidiousRedirectsChecks) invidiousRedirectsChecks = result.invidiousRedirectsChecks;
|
||||
|
||||
@ -228,8 +219,6 @@ async function init() {
|
||||
frontend = result.youtubeFrontend ?? 'piped';
|
||||
disableYoutube = result.disableYoutube ?? false;
|
||||
|
||||
invidiousInstance = result.invidiousInstance;
|
||||
|
||||
invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? 'DEFAULT';
|
||||
invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false;
|
||||
invidiousVideoQuality = result.invidiousVideoQuality ?? 'DEFAULT';
|
||||
@ -240,8 +229,6 @@ async function init() {
|
||||
invidiousAutoplay = result.invidiousAutoplay ?? 'DEFAULT';
|
||||
|
||||
persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
function invidiousInitCookies(tabId) {
|
||||
@ -259,7 +246,6 @@ function redirect(url, initiator, type) {
|
||||
if (
|
||||
initiator &&
|
||||
(
|
||||
initiator.origin === invidiousInstance ||
|
||||
redirects.invidious.normal.includes(initiator.origin) ||
|
||||
redirects.piped.normal.includes(initiator.origin) ||
|
||||
targets.includes(initiator.host)
|
||||
@ -326,9 +312,6 @@ export default {
|
||||
getDisableYoutube,
|
||||
setDisableYoutube,
|
||||
|
||||
setInvidiousInstance,
|
||||
getInvidiousInstance,
|
||||
|
||||
setInvidiousAlwaysProxy,
|
||||
getInvidiousAlwaysProxy,
|
||||
|
||||
|
@ -38,65 +38,6 @@
|
||||
<span>Update Instances</span>
|
||||
</a>
|
||||
</div>
|
||||
<!-- <hr> -->
|
||||
<!-- <section class="settings-block">
|
||||
<p data-localise="__MSG_exceptionsDescriptionP1__">
|
||||
Enter a URL or Regular Expression to be excluded from redirects.
|
||||
</p>
|
||||
<p data-localise="__MSG_exceptionsDescriptionP2__">
|
||||
All requests for or initiating from a URL that matches your exception
|
||||
will be excluded from redirects.
|
||||
</p>
|
||||
<p data-localise="__MSG_exceptionsDescriptionP3__">
|
||||
Note - Supports JavaScript regular expressions, excluding the
|
||||
enclosing forward slashes.
|
||||
</p>
|
||||
</section>
|
||||
<section class="settings-block">
|
||||
<table class="exceptions option">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<h1 data-localise="__MSG_addException__">Add Exception</h1>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="new-exceptions-item" type="text" placeholder="URL or RegExp" />
|
||||
</td>
|
||||
<td>
|
||||
<input type="radio" id="url" name="type" value="URL" checked />
|
||||
<label class="radio" for="url">URL</label>
|
||||
<input type="radio" id="regExp" name="type" value="RegExp" />
|
||||
<label class="radio" for="regExp">RegExp</label>
|
||||
</td>
|
||||
<td>
|
||||
<button id="add-to-exceptions">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
|
||||
<line x1="256" y1="112" x2="256" y2="400" style="
|
||||
fill: none;
|
||||
stroke: #fff;
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
stroke-width: 32px;
|
||||
" />
|
||||
<line x1="400" y1="256" x2="112" y2="256" style="
|
||||
fill: none;
|
||||
stroke: #fff;
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
stroke-width: 32px;
|
||||
" />
|
||||
</svg>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<ul id="exceptions-items"></ul>
|
||||
</section> -->
|
||||
|
||||
|
||||
<script type="module" src="../init.js"></script>
|
||||
<script type="module" src="./general.js"></script>
|
||||
|
@ -47,31 +47,6 @@ browser.storage.sync.get(
|
||||
}
|
||||
);
|
||||
|
||||
// function addToExceptions() {
|
||||
// const input = document.getElementById("new-exceptions-item");
|
||||
// const type = document.querySelector('input[name="type"]:checked').value;
|
||||
// if (input.value) {
|
||||
// try {
|
||||
// let value = input.value;
|
||||
// new RegExp(input.value);
|
||||
// if (type === "URL")
|
||||
// value = value.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
|
||||
|
||||
// exceptions.push(value);
|
||||
// browser.storage.sync.set({
|
||||
// exceptions: exceptions,
|
||||
// });
|
||||
// prependExceptionsItem(value, exceptions.indexOf(value));
|
||||
// input.value = "";
|
||||
// } catch (error) {
|
||||
// input.setCustomValidity("Invalid RegExp");
|
||||
// }
|
||||
// } else {
|
||||
// input.setCustomValidity("Invalid RegExp");
|
||||
// }
|
||||
// }
|
||||
// document.getElementById("add-to-exceptions").addEventListener("click", addToExceptions);
|
||||
|
||||
themeElement.addEventListener("change", (event) => {
|
||||
const value = event.target.options[theme.selectedIndex].value;
|
||||
switch (value) {
|
||||
|
@ -28,22 +28,6 @@
|
||||
<h4>Enable</h4>
|
||||
<input id="disable-bibliogram" type="checkbox" checked />
|
||||
</div>
|
||||
<!-- <div class="some-block option-block">
|
||||
<h4>Instance</h4>
|
||||
<div class="autocomplete">
|
||||
<input id="bibliogram-instance" type="url" data-localise-placeholder="__MSG_randomInstancePlaceholder__"
|
||||
placeholder="Random instance (none selected)" />
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- <section class="settings-block">
|
||||
<h4>Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="bibliogram-random-pool" name="bibliogram-random-pool" type="text"></textarea>
|
||||
<ul id="bibliogram-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
|
||||
|
||||
</section>
|
||||
<script type="module" src="../init.js"></script>
|
||||
|
@ -28,21 +28,6 @@
|
||||
<h4>Enable</h4>
|
||||
<input id="disable-scribe" type="checkbox" checked />
|
||||
</div>
|
||||
<!-- <div class="some-block option-block">
|
||||
<h4>Instance</h4>
|
||||
<div class="autocomplete">
|
||||
<input id="scribe-instance" type="url" name="scribe-instance"
|
||||
data-localise-placeholder="__MSG_randomInstancePlaceholder__"
|
||||
placeholder="Random instance (none selected)" />
|
||||
</div>
|
||||
</div>
|
||||
<section class="settings-block">
|
||||
<h4>Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="scribe-random-pool" type="text"></textarea>
|
||||
<ul id="scribe-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
</section>
|
||||
|
||||
<script type="module" src="../init.js"></script>
|
||||
|
@ -45,23 +45,6 @@
|
||||
<option value="teddit">Teddit</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- <section class="settings-block">
|
||||
<h4>LibReddit Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="libreddit-random-pool" type="text"></textarea>
|
||||
<ul id="libreddit-random-pool-list"></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="settings-block">
|
||||
<h4>Teddit Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="teddit-random-pool" type="text"></textarea>
|
||||
<ul id="teddit-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
|
||||
</section>
|
||||
|
||||
<script type="module" src="../init.js"></script>
|
||||
|
@ -44,23 +44,6 @@
|
||||
<option value="whoogle">Whoogle</option>
|
||||
</select>
|
||||
</div>
|
||||
<!--
|
||||
<section class="settings-block">
|
||||
<h4>SearX Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="searx-random-pool" type="text"></textarea>
|
||||
<ul id="searx-random-pool-list"></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="settings-block">
|
||||
<h4>Whoogle Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="whoogle-random-pool" type="text"></textarea>
|
||||
<ul id="whoogle-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
@ -30,22 +30,6 @@
|
||||
<h4>Enable</h4>
|
||||
<input id="disable-nitter" type="checkbox" checked />
|
||||
</div>
|
||||
<!-- <div class="some-block option-block">
|
||||
<h4>Instance</h4>
|
||||
<div class="autocomplete">
|
||||
<input id="nitter-instance" type="url" name="nitter-instance"
|
||||
data-localise-placeholder="__MSG_randomInstancePlaceholder__"
|
||||
placeholder="Random instance (none selected)" />
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- <section class="settings-block">
|
||||
<h4>Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="nitter-random-pool" type="text"></textarea>
|
||||
<ul id="nitter-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
<div class="some-block option-block">
|
||||
<h4 data-localise="__MSG_removeTwitterSW__">Proactively remove Twitter service worker</h4>
|
||||
<input id="remove-twitter-sw" type="checkbox" checked />
|
||||
|
@ -28,20 +28,6 @@
|
||||
<h4>Enable</h4>
|
||||
<input id="disable-wikipedia" type="checkbox" checked />
|
||||
</div>
|
||||
<!-- <div class="some-block option-block">
|
||||
<h4>Instance</h4>
|
||||
<div class="autocomplete">
|
||||
<input id="wikipedia-instance" type="url" placeholder="https://wikiless.org" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="settings-block">
|
||||
<h4>Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea id="wikiless-random-pool" type="text"></textarea>
|
||||
<ul id="wikiless-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
</section>
|
||||
|
||||
<script type="module" src="../init.js"></script>
|
||||
|
@ -30,23 +30,6 @@
|
||||
<input id="disable-invidious" type="checkbox" checked />
|
||||
</div>
|
||||
|
||||
<!-- <div class="some-block option-block">
|
||||
<h4>Instance</h4>
|
||||
<div class="autocomplete">
|
||||
<input id="invidious-instance" type="url" data-localise-placeholder="__MSG_randomInstancePlaceholder__"
|
||||
placeholder="Random instance (none selected)" />
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- <section class="settings-block">
|
||||
<h4>Instance List</h4>
|
||||
<div class="random-pool">
|
||||
<textarea type="textarea" id="invidious-random-pool" name="invidious-random-pool"
|
||||
type="text"></textarea>
|
||||
<ul id="invidious-random-pool-list"></ul>
|
||||
</div>
|
||||
</section> -->
|
||||
|
||||
<div class="some-block option-block">
|
||||
<h4>Frontend</h4>
|
||||
<select id="youtube-frontend">
|
||||
@ -59,7 +42,6 @@
|
||||
<hr>
|
||||
|
||||
<div id="invidious-piped">
|
||||
|
||||
<div class="some-block option-block">
|
||||
<h4>Only Redirect Embedded-Video</h4>
|
||||
<input id="only-embed" type="checkbox" checked />
|
||||
@ -108,7 +90,7 @@
|
||||
</div>
|
||||
|
||||
<div class="some-block option-block">
|
||||
<h4 data-localise="__MSG_invidiousAlwaysProxy__">Always proxy videos</h4>
|
||||
<h4>Always proxy videos</h4>
|
||||
<select id="invidious-always-proxy">
|
||||
<option value="DEFAULT">Default</option>
|
||||
<option value="true">True</option>
|
||||
@ -151,7 +133,6 @@
|
||||
<h4>Custom Instances</h4>
|
||||
</div>
|
||||
|
||||
|
||||
<form id="custom-instance-form">
|
||||
<div class="some-block option-block">
|
||||
<input id="invidious-custom-instance" placeholder="https://invidious.com" type="url" />
|
||||
|
@ -69,10 +69,8 @@ invidiousPlayerStyleElement.addEventListener("change",
|
||||
);
|
||||
|
||||
let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
|
||||
invidiousSubtitlesElement.addEventListener("input",
|
||||
commonHelper.debounce(() => {
|
||||
youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
|
||||
}, 500)
|
||||
invidiousSubtitlesElement.addEventListener("change",
|
||||
() => youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
|
||||
);
|
||||
|
||||
let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
|
||||
@ -124,62 +122,51 @@ youtubeHelper.init().then(() => {
|
||||
|
||||
let myMightyList = youtubeHelper.getInvidiousRedirectsChecks();
|
||||
|
||||
function checkToggleAll() {
|
||||
console.log("CheckToggleAll")
|
||||
let isTrue = true;
|
||||
for (const item of youtubeHelper.getRedirects().invidious.normal)
|
||||
if (!myMightyList.includes(item)) {
|
||||
isTrue = false;
|
||||
break;
|
||||
}
|
||||
document.getElementById('invidious-toogle-all').checked = isTrue;
|
||||
}
|
||||
|
||||
|
||||
let checklistList = invidiousCheckListElement.getElementsByTagName('input')
|
||||
for (let element of checklistList) {
|
||||
|
||||
element.checked = myMightyList.includes(element.id);
|
||||
|
||||
if (element.id == 'invidious-toogle-all')
|
||||
document.getElementById('invidious-toogle-all').addEventListener("change",
|
||||
(event) => {
|
||||
if (event.target.checked) {
|
||||
for (let item of checklistList) {
|
||||
myMightyList.push(item.id)
|
||||
item.checked = true;
|
||||
}
|
||||
document.getElementById('invidious-toogle-all').addEventListener("change", (event) => {
|
||||
if (event.target.checked)
|
||||
for (let item of checklistList) {
|
||||
myMightyList.push(item.id);
|
||||
item.checked = true;
|
||||
}
|
||||
else {
|
||||
myMightyList = [];
|
||||
for (let item of checklistList) item.checked = false;
|
||||
}
|
||||
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
|
||||
else {
|
||||
myMightyList = [];
|
||||
for (let item of checklistList) item.checked = false;
|
||||
}
|
||||
);
|
||||
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
|
||||
});
|
||||
else
|
||||
document.getElementById(element.id).addEventListener("change",
|
||||
(event) => {
|
||||
if (event.target.checked)
|
||||
myMightyList.push(element.id)
|
||||
else {
|
||||
let index = myMightyList.indexOf(element.id);
|
||||
if (index > -1) myMightyList.splice(index, 1);
|
||||
}
|
||||
|
||||
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
|
||||
checkToggleAll();
|
||||
document.getElementById(element.id).addEventListener("change", (event) => {
|
||||
if (event.target.checked)
|
||||
myMightyList.push(element.id)
|
||||
else {
|
||||
let index = myMightyList.indexOf(element.id);
|
||||
if (index > -1) myMightyList.splice(index, 1);
|
||||
}
|
||||
);
|
||||
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
|
||||
checkToggleAll();
|
||||
});
|
||||
}
|
||||
checkToggleAll();
|
||||
|
||||
|
||||
mightyInvidiousCustomInstances = youtubeHelper.getInvidiousCustomRedirects();
|
||||
calcCustom();
|
||||
|
||||
});
|
||||
|
||||
function checkToggleAll() {
|
||||
let isTrue = true;
|
||||
for (const item of youtubeHelper.getRedirects().invidious.normal)
|
||||
if (!myMightyList.includes(item)) {
|
||||
isTrue = false;
|
||||
break;
|
||||
}
|
||||
document.getElementById('invidious-toogle-all').checked = isTrue;
|
||||
}
|
||||
|
||||
|
||||
let invidiousCustomInstanceElement = document.getElementById("invidious-custom-instance")
|
||||
let mightyInvidiousCustomInstances = []
|
||||
|
@ -19,7 +19,6 @@ body.light-theme {
|
||||
body {
|
||||
margin: auto;
|
||||
padding: 0;
|
||||
min-height: 572px;
|
||||
font-family: Sans-Serif;
|
||||
background-color: var(--bg-main);
|
||||
color: var(--text);
|
||||
@ -31,23 +30,11 @@ div.some-block input[type="checkbox"] {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
h2 {
|
||||
clear: both;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2 {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
input[type="url"],
|
||||
input[type="text"],
|
||||
select {
|
||||
padding: 5px 10px;
|
||||
width: 400px;
|
||||
width: 350px;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: var(--space);
|
||||
@ -63,37 +50,11 @@ select {
|
||||
padding: 8px;
|
||||
background-color: var(--bg-secondary);
|
||||
border: none;
|
||||
;
|
||||
margin: 0;
|
||||
width: auto;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
input[type="radio"] {
|
||||
appearance: radio;
|
||||
-moz-appearance: radio;
|
||||
-webkit-appearance: radio;
|
||||
}
|
||||
|
||||
input[type="radio"]:checked+label {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
input:checked+label {
|
||||
background: var(--active);
|
||||
}
|
||||
|
||||
input:checked+label:after {
|
||||
left: calc(100% - var(--space));
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
|
||||
.settings-block {
|
||||
display: block;
|
||||
margin: 30px 0;
|
||||
padding: 5px 15px;
|
||||
}
|
||||
|
||||
a.button * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
@ -113,62 +74,6 @@ a.button:active {
|
||||
input:invalid {
|
||||
color: var(--danger);
|
||||
border-color: var(--danger);
|
||||
background-color: var(--danger-light);
|
||||
}
|
||||
|
||||
.margin-bottom {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
div.exceptions {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
div.exceptions>input {
|
||||
width: 240px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#add-to-exceptions {
|
||||
float: right;
|
||||
border: var(--active) solid 1px;
|
||||
background-color: var(--active);
|
||||
color: var(--text);
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
padding: 1px 1px 0px 1px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#add-to-exceptions svg {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
color: var(--text);
|
||||
margin: 20px 20px 0 20px;
|
||||
}
|
||||
|
||||
li {
|
||||
white-space: nowrap;
|
||||
border-bottom: solid 0.5px var(--bg-secondary);
|
||||
padding: 20px 0px 20px 20px;
|
||||
}
|
||||
|
||||
#exceptions-items button {
|
||||
float: right;
|
||||
margin-right: -5px;
|
||||
border: var(--active) solid 1px;
|
||||
background-color: var(--active);
|
||||
color: var(--text);
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.button svg {
|
||||
@ -176,48 +81,6 @@ li {
|
||||
width: 18px;
|
||||
}
|
||||
|
||||
.autocomplete {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.autocomplete input {
|
||||
background: url(../../assets/images/chevron-down.svg) right no-repeat;
|
||||
}
|
||||
|
||||
.autocomplete-items {
|
||||
position: absolute;
|
||||
border: 1px solid var(--bg-main);
|
||||
border-bottom: none;
|
||||
border-top: none;
|
||||
z-index: 99;
|
||||
top: 85%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
overflow-y: auto;
|
||||
max-height: 175px;
|
||||
color: var(--text);
|
||||
overflow-x: hidden;
|
||||
max-width: 380px;
|
||||
}
|
||||
|
||||
.autocomplete-items div {
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
background-color: var(--bg-secondary);
|
||||
border-bottom: 1px solid var(--bg-main);
|
||||
}
|
||||
|
||||
.autocomplete-items div:hover {
|
||||
background-color: var(--active);
|
||||
}
|
||||
|
||||
.autocomplete-active {
|
||||
background-color: var(--active);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
section.option-block {
|
||||
width: 50%;
|
||||
margin: 0 50px;
|
||||
@ -229,10 +92,6 @@ body.option {
|
||||
padding: 40px;
|
||||
}
|
||||
|
||||
section.links {
|
||||
margin: 00px 0;
|
||||
}
|
||||
|
||||
section.links a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -244,20 +103,13 @@ section.links a {
|
||||
transition: 0.1s;
|
||||
}
|
||||
|
||||
section.links a:hover {
|
||||
color: var(--active);
|
||||
}
|
||||
|
||||
section.links a:hover,
|
||||
section.links a.selected {
|
||||
color: var(--active);
|
||||
}
|
||||
|
||||
.option td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
input[type="range"] {
|
||||
width: 50%;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
@ -265,11 +117,6 @@ input[type="range"] {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
input[type="text"]:focus,
|
||||
input[type="url"]:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#volume-value {
|
||||
color: var(--active);
|
||||
}
|
||||
@ -328,7 +175,6 @@ h4 {
|
||||
|
||||
div.some-block h4 {
|
||||
margin: 0;
|
||||
/* width: 70%; */
|
||||
}
|
||||
|
||||
div.option-block h4 {
|
||||
@ -356,10 +202,6 @@ div.some-block input[type="checkbox"]:checked {
|
||||
background-color: var(--active);
|
||||
}
|
||||
|
||||
div.some-block input[type="checkbox"]:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.some-block input[type="checkbox"]::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
@ -372,7 +214,7 @@ div.some-block input[type="checkbox"]::before {
|
||||
height: 20px;
|
||||
background-color: white;
|
||||
border-radius: 50%;
|
||||
transition: .4s;
|
||||
transition: .3s;
|
||||
}
|
||||
|
||||
div.some-block input[type="checkbox"]:checked::before {
|
||||
@ -422,15 +264,6 @@ a.button:active {
|
||||
transform: translateY(1px);
|
||||
}
|
||||
|
||||
textarea {
|
||||
line-height: 21px;
|
||||
background-color: var(--bg-secondary);
|
||||
color: white;
|
||||
border: none;
|
||||
resize: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
button.default {
|
||||
margin-left: 30px;
|
||||
background-color: transparent;
|
||||
@ -455,11 +288,9 @@ div.checklist div {
|
||||
justify-content: space-between;
|
||||
margin: 5px 15px;
|
||||
padding: 10px 0;
|
||||
/* border-bottom: 2px solid rgb(77, 77, 77); */
|
||||
display: flex;
|
||||
}
|
||||
|
||||
|
||||
button.add {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
|
Loading…
x
Reference in New Issue
Block a user