chore: 整理 third-party Dark Reader 目录并移除本地说明文件跟踪

This commit is contained in:
2026-08-08 17:38:08 +08:00
parent 202ab537d1
commit 0bb552b026
1004 changed files with 115066 additions and 20081 deletions
@@ -0,0 +1,85 @@
import '../support/polyfills';
import {DEFAULT_THEME} from '../../../src/defaults';
import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme';
import {multiline, timeout} from '../support/test-utils';
const theme = {
...DEFAULT_THEME,
darkSchemeBackgroundColor: 'black',
darkSchemeTextColor: 'white',
};
let container: HTMLElement;
beforeEach(() => {
container = document.body;
container.innerHTML = '';
});
afterEach(() => {
removeDynamicTheme();
container.innerHTML = '';
});
describe('INLINE STYLES', () => {
it('should override inline style', () => {
container.innerHTML = '<span style="color: red;">Inline style override</span>';
createOrUpdateDynamicTheme(theme, null, false);
expect(getComputedStyle(document.querySelector('span')!).color).toBe('rgb(255, 26, 26)');
});
it('should watch for inline style change', async () => {
container.innerHTML = '<span style="color: red;">Watch inline style</span>';
createOrUpdateDynamicTheme(theme, null, false);
const span = document.querySelector('span')!;
expect(getComputedStyle(span).color).toBe('rgb(255, 26, 26)');
span.style.color = 'green';
await timeout(0);
expect(getComputedStyle(span).color).toBe('rgb(140, 255, 140)');
});
it('should override only a single inline style property', async () => {
container.innerHTML = multiline(
'<style>.bg-gray { background: gray; }</style>',
'<span class="bg-gray" style="color: red;">Inline style override</span>',
);
createOrUpdateDynamicTheme(theme, null, false);
const span = container.querySelector('span')!;
expect(getComputedStyle(span).backgroundColor).toBe('rgb(102, 102, 102)');
expect(getComputedStyle(span).color).toBe('rgb(255, 26, 26)');
span.style.color = 'green';
await timeout(0);
expect(getComputedStyle(span).color).toBe('rgb(140, 255, 140)');
expect(getComputedStyle(span).backgroundColor).toBe('rgb(102, 102, 102)');
});
it('should clean up the customProp after originial is gone', async () => {
container.innerHTML = '<span style="color: red;">Watch inline style</span>';
createOrUpdateDynamicTheme(theme, null, false);
const span = document.querySelector('span')!;
expect(span.getAttribute('style')!.startsWith('color: red; --darkreader-inline-color:')).toBeTrue();
expect(span.getAttribute('style')!.includes('--darkreader-inline-color: var(--darkreader-text-ff0000, #ff1a1a);')).toBe(true);
span.style.color = '';
await timeout(0);
expect(span.getAttribute('style')).toBe('');
});
it(`shouldn't touch rel="mask-icon"`, async () => {
container.innerHTML = '<link rel="mask-icon" color="red">';
createOrUpdateDynamicTheme(theme, null, false);
const maskIcon = document.querySelector('link[rel="mask-icon"]')!;
expect(maskIcon.getAttribute('style')).toBe(null);
});
it(`shouldn't touch a "none" value for fill`, async () => {
container.innerHTML = `<svg> <rect width="100" height="100" fill="none" /></svg>`;
container.innerHTML += `<style> rect[width][height] { fill: red }</style>`;
createOrUpdateDynamicTheme(theme, null, false);
const rect = container.querySelector('rect')!;
expect(getComputedStyle(rect).fill).toBe('rgb(255, 26, 26)');
});
});