Add: support inclusions (#1359)

* Add: support inclusions

* Fix: refresh settings page after configuring in popup
This commit is contained in:
eight 2021-12-08 18:30:16 +08:00 committed by GitHub
parent 9ab5369393
commit e23077a7ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 4 deletions

View File

@ -193,6 +193,7 @@ const styleMan = (() => {
for (const style of styles) {
let excluded = false;
let excludedScheme = false;
let included = false;
let sloppy = false;
let sectionMatched = false;
const match = urlMatchStyle(query, style);
@ -200,6 +201,9 @@ const styleMan = (() => {
// if (match === false) {
// continue;
// }
if (match === 'included') {
included = true;
}
if (match === 'excluded') {
excluded = true;
}
@ -219,8 +223,9 @@ const styleMan = (() => {
break;
}
}
if (sectionMatched) {
result.push(/** @namespace StylesByUrlResult */ {style, excluded, sloppy, excludedScheme});
if (sectionMatched || included) {
result.push(/** @namespace StylesByUrlResult */ {
style, excluded, sloppy, excludedScheme, sectionMatched, included});
}
}
return result;
@ -472,7 +477,12 @@ const styleMan = (() => {
// get styles matching a URL, including sloppy regexps and excluded items.
function getAppliedCode(query, data) {
if (urlMatchStyle(query, data) !== true) {
const result = urlMatchStyle(query, data);
if (result === 'included') {
// return all sections
return data.sections.map(s => s.code);
}
if (result !== true) {
return;
}
const code = [];
@ -568,6 +578,12 @@ const styleMan = (() => {
if (!colorScheme.shouldIncludeStyle(style)) {
return 'excludedScheme';
}
if (
style.inclusions &&
style.inclusions.some(r => compileExclusion(r).test(query.urlWithoutParams))
) {
return 'included';
}
return true;
}

View File

@ -28,7 +28,7 @@ function StyleSettings(editor) {
function update(newStyle, reason) {
if (!newStyle.id) return;
if (reason === 'editSave' || reason === 'config') return;
if (reason === 'editSave') return;
style = newStyle;
$('.style-settings').disabled = false;
inputs.forEach(i => i.update());

View File

@ -380,6 +380,7 @@ function createStyleElement(style) {
'';
});
entry.classList.toggle('force-applied', style.included);
entry.classList.toggle('not-applied', style.excluded || style.sloppy || style.excludedScheme);
entry.classList.toggle('regexp-partial', style.sloppy);