Tüm .config dosyaları ilk yedekleme

This commit is contained in:
2026-03-28 03:21:14 +03:00
commit 4f7e8904be
7835 changed files with 1631041 additions and 0 deletions

View File

@@ -0,0 +1,267 @@
(function () {
"use strict";
const isNavigatorDefined = typeof navigator !== "undefined";
const userAgent = isNavigatorDefined
? navigator.userAgentData &&
Array.isArray(navigator.userAgentData.brands)
? navigator.userAgentData.brands
.map(
(brand) => `${brand.brand.toLowerCase()} ${brand.version}`
)
.join(" ")
: navigator.userAgent.toLowerCase()
: "some useragent";
const platform = isNavigatorDefined
? navigator.userAgentData &&
typeof navigator.userAgentData.platform === "string"
? navigator.userAgentData.platform.toLowerCase()
: navigator.platform.toLowerCase()
: "some platform";
userAgent.includes("vivaldi");
userAgent.includes("yabrowser");
userAgent.includes("opr") || userAgent.includes("opera");
userAgent.includes("edg");
platform.startsWith("win");
platform.startsWith("mac");
isNavigatorDefined && navigator.userAgentData
? navigator.userAgentData.mobile
: userAgent.includes("mobile") || false;
(isNavigatorDefined &&
navigator.userAgentData &&
["Linux", "Android"].includes(navigator.userAgentData.platform)) ||
platform.startsWith("linux");
(() => {
const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/);
if (m && m[1]) {
return m[1];
}
return "";
})();
(() => {
const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/);
if (m && m[1]) {
return m[1];
}
return "";
})();
(() => {
try {
document.querySelector(":defined");
return true;
} catch (err) {
return false;
}
})();
let query = null;
const onChange = ({matches}) =>
listeners.forEach((listener) => listener(matches));
const listeners = new Set();
function runColorSchemeChangeDetector(callback) {
listeners.add(callback);
if (query) {
return;
}
query = matchMedia("(prefers-color-scheme: dark)");
{
query.addEventListener("change", onChange);
}
}
function stopColorSchemeChangeDetector() {
if (!query || !onChange) {
return;
}
{
query.removeEventListener("change", onChange);
}
listeners.clear();
query = null;
}
const isSystemDarkModeEnabled = () =>
(query || matchMedia("(prefers-color-scheme: dark)")).matches;
var MessageTypeUItoBG;
(function (MessageTypeUItoBG) {
MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data";
MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data";
MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] =
"ui-bg-subscribe-to-changes";
MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] =
"ui-bg-unsubscribe-from-changes";
MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings";
MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme";
MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab";
MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read";
MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] =
"ui-bg-mark-news-as-displayed";
MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config";
MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] =
"ui-bg-apply-dev-dynamic-theme-fixes";
MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] =
"ui-bg-reset-dev-dynamic-theme-fixes";
MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] =
"ui-bg-apply-dev-inversion-fixes";
MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] =
"ui-bg-reset-dev-inversion-fixes";
MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] =
"ui-bg-apply-dev-static-themes";
MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] =
"ui-bg-reset-dev-static-themes";
MessageTypeUItoBG["START_ACTIVATION"] = "ui-bg-start-activation";
MessageTypeUItoBG["RESET_ACTIVATION"] = "ui-bg-reset-activation";
MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change";
MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights";
})(MessageTypeUItoBG || (MessageTypeUItoBG = {}));
var MessageTypeBGtoUI;
(function (MessageTypeBGtoUI) {
MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes";
})(MessageTypeBGtoUI || (MessageTypeBGtoUI = {}));
var DebugMessageTypeBGtoUI;
(function (DebugMessageTypeBGtoUI) {
DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update";
DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update";
})(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {}));
var MessageTypeBGtoCS;
(function (MessageTypeBGtoCS) {
MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter";
MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme";
MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme";
MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter";
MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up";
MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response";
MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender";
})(MessageTypeBGtoCS || (MessageTypeBGtoCS = {}));
var DebugMessageTypeBGtoCS;
(function (DebugMessageTypeBGtoCS) {
DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload";
})(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {}));
var MessageTypeCStoBG;
(function (MessageTypeCStoBG) {
MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change";
MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected";
MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] =
"cs-bg-dark-theme-not-detected";
MessageTypeCStoBG["FETCH"] = "cs-bg-fetch";
MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect";
MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget";
MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze";
MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume";
})(MessageTypeCStoBG || (MessageTypeCStoBG = {}));
var DebugMessageTypeCStoBG;
(function (DebugMessageTypeCStoBG) {
DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log";
})(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {}));
var MessageTypeCStoUI;
(function (MessageTypeCStoUI) {
MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response";
})(MessageTypeCStoUI || (MessageTypeCStoUI = {}));
var MessageTypeUItoCS;
(function (MessageTypeUItoCS) {
MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css";
})(MessageTypeUItoCS || (MessageTypeUItoCS = {}));
let documentVisibilityListener = null;
let documentIsVisible_ = !document.hidden;
const listenerOptions = {
capture: true,
passive: true
};
function watchForDocumentVisibility() {
document.addEventListener(
"visibilitychange",
documentVisibilityListener,
listenerOptions
);
window.addEventListener(
"pageshow",
documentVisibilityListener,
listenerOptions
);
window.addEventListener(
"focus",
documentVisibilityListener,
listenerOptions
);
}
function stopWatchingForDocumentVisibility() {
document.removeEventListener(
"visibilitychange",
documentVisibilityListener,
listenerOptions
);
window.removeEventListener(
"pageshow",
documentVisibilityListener,
listenerOptions
);
window.removeEventListener(
"focus",
documentVisibilityListener,
listenerOptions
);
}
function setDocumentVisibilityListener(callback) {
const alreadyWatching = Boolean(documentVisibilityListener);
documentVisibilityListener = () => {
if (!document.hidden) {
removeDocumentVisibilityListener();
callback();
documentIsVisible_ = true;
}
};
if (!alreadyWatching) {
watchForDocumentVisibility();
}
}
function removeDocumentVisibilityListener() {
stopWatchingForDocumentVisibility();
documentVisibilityListener = null;
}
function documentIsVisible() {
return documentIsVisible_;
}
function cleanup() {
stopColorSchemeChangeDetector();
removeDocumentVisibilityListener();
}
function sendMessage(message) {
const responseHandler = (response) => {
if (response === "unsupportedSender") {
cleanup();
}
};
try {
const promise = chrome.runtime.sendMessage(message);
promise.then(responseHandler).catch(cleanup);
} catch (error) {
if (error.message === "Extension context invalidated.") {
console.log(
"Dark Reader: instance of old CS detected, cleaning up."
);
cleanup();
} else {
console.log(
"Dark Reader: unexpected error during message passing."
);
}
}
}
function notifyOfColorScheme(isDark) {
sendMessage({
type: MessageTypeCStoBG.COLOR_SCHEME_CHANGE,
data: {isDark}
});
}
function updateEventListeners() {
notifyOfColorScheme(isSystemDarkModeEnabled());
if (documentIsVisible()) {
runColorSchemeChangeDetector(notifyOfColorScheme);
} else {
stopColorSchemeChangeDetector();
}
}
setDocumentVisibilityListener(updateEventListeners);
updateEventListeners();
})();

View File

@@ -0,0 +1,62 @@
(function () {
"use strict";
const STORAGE_KEY_WAS_ENABLED_FOR_HOST = "__darkreader__wasEnabledForHost";
function wasEnabledForHost() {
try {
const value = sessionStorage.getItem(
STORAGE_KEY_WAS_ENABLED_FOR_HOST
);
if (value === "true") {
return true;
}
if (value === "false") {
return false;
}
} catch (err) {}
return null;
}
if (
document.documentElement instanceof HTMLHtmlElement &&
matchMedia("(prefers-color-scheme: dark)").matches &&
wasEnabledForHost() !== false &&
!document.querySelector(".darkreader--fallback") &&
!document.querySelector(".darkreader")
) {
const css = [
"html, body, body :not(iframe) {",
" background-color: #181a1b !important;",
" border-color: #776e62 !important;",
" color: #e8e6e3 !important;",
"}",
"html, body {",
" opacity: 1 !important;",
" transition: none !important;",
"}",
'div[style*="background-color: rgb(135, 135, 135)"] {',
" background-color: #878787 !important;",
"}"
].join("\n");
const fallback = document.createElement("style");
fallback.classList.add("darkreader");
fallback.classList.add("darkreader--fallback");
fallback.media = "screen";
fallback.textContent = css;
if (document.head) {
document.head.append(fallback);
} else {
const root = document.documentElement;
root.append(fallback);
const observer = new MutationObserver(() => {
if (document.head) {
observer.disconnect();
if (fallback.isConnected) {
document.head.append(fallback);
}
}
});
observer.observe(root, {childList: true});
}
}
})();

View File

@@ -0,0 +1,564 @@
(function () {
"use strict";
var MessageTypeUItoBG;
(function (MessageTypeUItoBG) {
MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data";
MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data";
MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] =
"ui-bg-subscribe-to-changes";
MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] =
"ui-bg-unsubscribe-from-changes";
MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings";
MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme";
MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab";
MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read";
MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] =
"ui-bg-mark-news-as-displayed";
MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config";
MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] =
"ui-bg-apply-dev-dynamic-theme-fixes";
MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] =
"ui-bg-reset-dev-dynamic-theme-fixes";
MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] =
"ui-bg-apply-dev-inversion-fixes";
MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] =
"ui-bg-reset-dev-inversion-fixes";
MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] =
"ui-bg-apply-dev-static-themes";
MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] =
"ui-bg-reset-dev-static-themes";
MessageTypeUItoBG["START_ACTIVATION"] = "ui-bg-start-activation";
MessageTypeUItoBG["RESET_ACTIVATION"] = "ui-bg-reset-activation";
MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change";
MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights";
})(MessageTypeUItoBG || (MessageTypeUItoBG = {}));
var MessageTypeBGtoUI;
(function (MessageTypeBGtoUI) {
MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes";
})(MessageTypeBGtoUI || (MessageTypeBGtoUI = {}));
var DebugMessageTypeBGtoUI;
(function (DebugMessageTypeBGtoUI) {
DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update";
DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update";
})(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {}));
var MessageTypeBGtoCS;
(function (MessageTypeBGtoCS) {
MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter";
MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme";
MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme";
MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter";
MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up";
MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response";
MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender";
})(MessageTypeBGtoCS || (MessageTypeBGtoCS = {}));
var DebugMessageTypeBGtoCS;
(function (DebugMessageTypeBGtoCS) {
DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload";
})(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {}));
var MessageTypeCStoBG;
(function (MessageTypeCStoBG) {
MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change";
MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected";
MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] =
"cs-bg-dark-theme-not-detected";
MessageTypeCStoBG["FETCH"] = "cs-bg-fetch";
MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect";
MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget";
MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze";
MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume";
})(MessageTypeCStoBG || (MessageTypeCStoBG = {}));
var DebugMessageTypeCStoBG;
(function (DebugMessageTypeCStoBG) {
DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log";
})(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {}));
var MessageTypeCStoUI;
(function (MessageTypeCStoUI) {
MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response";
})(MessageTypeCStoUI || (MessageTypeCStoUI = {}));
var MessageTypeUItoCS;
(function (MessageTypeUItoCS) {
MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css";
})(MessageTypeUItoCS || (MessageTypeUItoCS = {}));
function logInfo(...args) {}
function injectProxy(
enableStyleSheetsProxy,
enableCustomElementRegistryProxy
) {
document.dispatchEvent(
new CustomEvent("__darkreader__inlineScriptsAllowed")
);
const cleaners = [];
function cleanUp() {
cleaners.forEach((clean) => clean());
cleaners.splice(0);
}
function documentEventListener(type, listener, options) {
document.addEventListener(type, listener, options);
cleaners.push(() => document.removeEventListener(type, listener));
}
function disableConflictingPlugins() {
const disableWPDarkMode = () => {
if (window?.WPDarkMode?.deactivate) {
window.WPDarkMode.deactivate();
}
};
disableWPDarkMode();
}
documentEventListener("__darkreader__cleanUp", cleanUp);
documentEventListener(
"__darkreader__disableConflictingPlugins",
disableConflictingPlugins
);
function overrideProperty(cls, prop, overrides) {
const proto = cls.prototype;
const oldDescriptor = Object.getOwnPropertyDescriptor(proto, prop);
if (!oldDescriptor) {
return;
}
const newDescriptor = {...oldDescriptor};
Object.keys(overrides).forEach((key) => {
const factory = overrides[key];
newDescriptor[key] = factory(oldDescriptor[key]);
});
Object.defineProperty(proto, prop, newDescriptor);
cleaners.push(() =>
Object.defineProperty(proto, prop, oldDescriptor)
);
}
function override(cls, prop, factory) {
overrideProperty(cls, prop, {value: factory});
}
function isDRElement(element) {
return element?.classList?.contains("darkreader");
}
function isDRSheet(sheet) {
return isDRElement(sheet.ownerNode);
}
const updateSheetEvent = new CustomEvent("__darkreader__updateSheet");
const adoptedSheetChangeEvent = new CustomEvent(
"__darkreader__adoptedStyleSheetChange"
);
const shadowDomAttachingEvent = new CustomEvent(
"__darkreader__shadowDomAttaching",
{bubbles: true}
);
const adoptedSheetOwners = new WeakMap();
const adoptedDeclarationSheets = new WeakMap();
function onAdoptedSheetChange(sheet) {
const owners = adoptedSheetOwners.get(sheet);
owners?.forEach((node) => {
if (node.isConnected) {
node.dispatchEvent(adoptedSheetChangeEvent);
} else {
owners.delete(node);
}
});
}
function reportSheetChange(sheet) {
if (sheet.ownerNode && !isDRSheet(sheet)) {
sheet.ownerNode.dispatchEvent(updateSheetEvent);
}
if (adoptedSheetOwners.has(sheet)) {
onAdoptedSheetChange(sheet);
}
}
function reportSheetChangeAsync(sheet, promise) {
const {ownerNode} = sheet;
if (
ownerNode &&
!isDRSheet(sheet) &&
promise &&
promise instanceof Promise
) {
promise.then(() => ownerNode.dispatchEvent(updateSheetEvent));
}
if (adoptedSheetOwners.has(sheet)) {
if (promise && promise instanceof Promise) {
promise.then(() => onAdoptedSheetChange(sheet));
}
}
}
override(
CSSStyleSheet,
"addRule",
(native) =>
function (selector, style, index) {
native.call(this, selector, style, index);
reportSheetChange(this);
return -1;
}
);
override(
CSSStyleSheet,
"insertRule",
(native) =>
function (rule, index) {
const returnValue = native.call(this, rule, index);
reportSheetChange(this);
return returnValue;
}
);
override(
CSSStyleSheet,
"deleteRule",
(native) =>
function (index) {
native.call(this, index);
reportSheetChange(this);
}
);
override(
CSSStyleSheet,
"removeRule",
(native) =>
function (index) {
native.call(this, index);
reportSheetChange(this);
}
);
override(
CSSStyleSheet,
"replace",
(native) =>
function (cssText) {
const returnValue = native.call(this, cssText);
reportSheetChangeAsync(this, returnValue);
return returnValue;
}
);
override(
CSSStyleSheet,
"replaceSync",
(native) =>
function (cssText) {
native.call(this, cssText);
reportSheetChange(this);
}
);
override(
Element,
"attachShadow",
(native) =>
function (options) {
this.dispatchEvent(shadowDomAttachingEvent);
return native.call(this, options);
}
);
const shouldWrapHTMLElement =
location.hostname === "baidu.com" ||
location.hostname.endsWith(".baidu.com");
if (shouldWrapHTMLElement) {
override(
Element,
"getElementsByTagName",
(native) =>
function (tagName) {
if (tagName !== "style") {
return native.call(this, tagName);
}
const getCurrentElementValue = () => {
const elements = native.call(this, tagName);
return Object.setPrototypeOf(
[...elements].filter(
(element) =>
element && !isDRElement(element)
),
NodeList.prototype
);
};
let elements = getCurrentElementValue();
const nodeListBehavior = {
get: function (_, property) {
return getCurrentElementValue()[
Number(property) || property
];
}
};
elements = new Proxy(elements, nodeListBehavior);
return elements;
}
);
}
const shouldProxyChildNodes = ["brilliant.org", "www.vy.no"].includes(
location.hostname
);
if (shouldProxyChildNodes) {
overrideProperty(Node, "childNodes", {
get: (native) =>
function () {
const childNodes = native.call(this);
return Object.setPrototypeOf(
[...childNodes].filter((element) => {
return !isDRElement(element);
}),
NodeList.prototype
);
}
});
}
function resolveCustomElement(tag) {
customElements.whenDefined(tag).then(() => {
document.dispatchEvent(
new CustomEvent("__darkreader__isDefined", {detail: {tag}})
);
});
}
documentEventListener("__darkreader__addUndefinedResolver", (e) =>
resolveCustomElement(e.detail.tag)
);
if (enableCustomElementRegistryProxy) {
override(
CustomElementRegistry,
"define",
(native) =>
function (name, constructor, options) {
resolveCustomElement(name);
native.call(this, name, constructor, options);
}
);
}
let blobURLAllowed = null;
function checkBlobURLSupport() {
if (blobURLAllowed != null) {
document.dispatchEvent(
new CustomEvent("__darkreader__blobURLCheckResponse", {
detail: {blobURLAllowed}
})
);
return;
}
const svg =
'<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"><rect width="1" height="1" fill="transparent"/></svg>';
const bytes = new Uint8Array(svg.length);
for (let i = 0; i < svg.length; i++) {
bytes[i] = svg.charCodeAt(i);
}
const blob = new Blob([bytes], {type: "image/svg+xml"});
const objectURL = URL.createObjectURL(blob);
const image = new Image();
image.onload = () => {
blobURLAllowed = true;
sendBlobURLCheckResponse();
};
image.onerror = () => {
blobURLAllowed = false;
sendBlobURLCheckResponse();
};
image.src = objectURL;
}
function sendBlobURLCheckResponse() {
document.dispatchEvent(
new CustomEvent("__darkreader__blobURLCheckResponse", {
detail: {blobURLAllowed}
})
);
}
documentEventListener(
"__darkreader__blobURLCheckRequest",
checkBlobURLSupport
);
if (enableStyleSheetsProxy) {
overrideProperty(Document, "styleSheets", {
get: (native) =>
function () {
const getCurrentValue = () => {
const docSheets = native.call(this);
const filteredSheets = [...docSheets].filter(
(styleSheet) =>
styleSheet.ownerNode &&
!isDRSheet(styleSheet)
);
filteredSheets.item = (item) =>
filteredSheets[item];
return Object.setPrototypeOf(
filteredSheets,
StyleSheetList.prototype
);
};
let elements = getCurrentValue();
const styleSheetListBehavior = {
get: function (_, property) {
return getCurrentValue()[property];
}
};
elements = new Proxy(elements, styleSheetListBehavior);
return elements;
}
});
}
{
const adoptedSheetsSourceProxies = new WeakMap();
const adoptedSheetsProxySources = new WeakMap();
const adoptedSheetsChangeEvent = new CustomEvent(
"__darkreader__adoptedStyleSheetsChange"
);
const adoptedSheetOverrideCache = new WeakSet();
const adoptedSheetsSnapshots = new WeakMap();
const isDRAdoptedSheetOverride = (sheet) => {
if (!sheet || !sheet.cssRules) {
return false;
}
if (adoptedSheetOverrideCache.has(sheet)) {
return true;
}
if (
sheet.cssRules.length > 0 &&
sheet.cssRules[0].cssText.startsWith(
"#__darkreader__adoptedOverride"
)
) {
adoptedSheetOverrideCache.add(sheet);
return true;
}
return false;
};
const areArraysEqual = (a, b) => {
return a.length === b.length && a.every((x, i) => x === b[i]);
};
const onAdoptedSheetsChange = (node) => {
const prev = adoptedSheetsSnapshots.get(node);
const curr = (node.adoptedStyleSheets || []).filter(
(s) => !isDRAdoptedSheetOverride(s)
);
adoptedSheetsSnapshots.set(node, curr);
if (!prev || !areArraysEqual(prev, curr)) {
curr.forEach((sheet) => {
if (!adoptedSheetOwners.has(sheet)) {
adoptedSheetOwners.set(sheet, new Set());
}
adoptedSheetOwners.get(sheet).add(node);
for (const rule of sheet.cssRules) {
const declaration = rule.style;
if (declaration) {
adoptedDeclarationSheets.set(
declaration,
sheet
);
}
}
});
node.dispatchEvent(adoptedSheetsChangeEvent);
}
};
const proxyAdoptedSheetsArray = (node, source) => {
if (adoptedSheetsProxySources.has(source)) {
return source;
}
if (adoptedSheetsSourceProxies.has(source)) {
return adoptedSheetsSourceProxies.get(source);
}
const proxy = new Proxy(source, {
deleteProperty(target, property) {
delete target[property];
return true;
},
set(target, property, value) {
target[property] = value;
if (property === "length") {
onAdoptedSheetsChange(node);
}
return true;
}
});
adoptedSheetsSourceProxies.set(source, proxy);
adoptedSheetsProxySources.set(proxy, source);
return proxy;
};
[Document, ShadowRoot].forEach((ctor) => {
overrideProperty(ctor, "adoptedStyleSheets", {
get: (native) =>
function () {
const source = native.call(this);
return proxyAdoptedSheetsArray(this, source);
},
set: (native) =>
function (source) {
if (adoptedSheetsProxySources.has(source)) {
source = adoptedSheetsProxySources.get(source);
}
native.call(this, source);
onAdoptedSheetsChange(this);
}
});
});
const adoptedDeclarationChangeEvent = new CustomEvent(
"__darkreader__adoptedStyleDeclarationChange"
);
["setProperty", "removeProperty"].forEach((key) => {
override(CSSStyleDeclaration, key, (native) => {
return function (...args) {
const returnValue = native.apply(this, args);
const sheet = adoptedDeclarationSheets.get(this);
if (sheet) {
const owners = adoptedSheetOwners.get(sheet);
if (owners) {
owners.forEach((node) => {
node.dispatchEvent(
adoptedDeclarationChangeEvent
);
});
}
}
return returnValue;
};
});
});
}
}
document.currentScript && document.currentScript.remove();
const key = "darkreaderProxyInjected";
const EVENT_DONE = "__darkreader__stylesheetProxy__done";
const EVENT_ARG = "__darkreader__stylesheetProxy__arg";
const registeredScriptPath = !document.currentScript;
function injectProxyAndCleanup(args) {
injectProxy(
args.enableStyleSheetsProxy,
args.enableCustomElementRegistryProxy
);
doneReceiver();
document.dispatchEvent(new CustomEvent(EVENT_DONE));
}
function regularPath() {
const argString = document.currentScript.dataset.arg;
if (argString !== undefined) {
document.documentElement.dataset[key] = "true";
const args = JSON.parse(argString);
injectProxyAndCleanup(args);
}
}
function dataReceiver(e) {
document.removeEventListener(EVENT_ARG, dataReceiver);
if (document.documentElement.dataset[key] !== undefined) {
return;
}
document.documentElement.dataset[key] = "true";
logInfo(
`MV3 proxy injector: ${registeredScriptPath ? "registered" : "dedicated"} path runs injectProxy(${e.detail}).`
);
injectProxyAndCleanup(e.detail);
}
function doneReceiver() {
document.removeEventListener(EVENT_ARG, dataReceiver);
document.removeEventListener(EVENT_DONE, doneReceiver);
}
function dedicatedPath() {
const listenerOptions = {
passive: true,
once: true
};
document.addEventListener(EVENT_ARG, dataReceiver, listenerOptions);
document.addEventListener(EVENT_DONE, doneReceiver, listenerOptions);
}
function inject() {
if (document.documentElement.dataset[key] !== undefined) {
return;
}
document.currentScript && regularPath();
dedicatedPath();
}
inject();
})();