A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/gorhill/uBlock/commit/59c9a34d34a737f6bb48c4130c65f4fe0fa73806 below:

Add ability to quickly create exceptions in logger · gorhill/uBlock@59c9a34 · GitHub

@@ -41,6 +41,7 @@ let filteredLoggerEntryVoidedCount = 0;

41 41

let popupLoggerBox;

42 42

let popupLoggerTooltips;

43 43

let activeTabId = 0;

44 +

let filterAuthorMode = false;

44 45

let selectedTabId = 0;

45 46

let netInspectorPaused = false;

46 47

@@ -64,7 +65,7 @@ const tabIdFromAttribute = function(elem) {

64 65 65 66

// Current design allows for only one modal DOM-based dialog at any given time.

66 67

//

67 -

const modalDialog = (function() {

68 +

const modalDialog = (( ) => {

68 69

const overlay = uDom.nodeFromId('modalOverlay');

69 70

const container = overlay.querySelector(

70 71

':scope > div > div:nth-of-type(1)'

@@ -949,6 +950,8 @@ const onLogBufferRead = function(response) {

949 950

allTabIdsToken = response.tabIdsToken;

950 951

}

951 952 953 +

filterAuthorMode = response.filterAuthorMode === true;

954 + 952 955

if ( activeTabIdChanged ) {

953 956

pageSelectorFromURLHash();

954 957

}

@@ -1085,7 +1088,7 @@ const reloadTab = function(ev) {

1085 1088

/******************************************************************************/

1086 1089

/******************************************************************************/

1087 1090 1088 -

(function() {

1091 +

(( ) => {

1089 1092

const reRFC3986 = /^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#]*)(\?[^#]*)?(#.*)?/;

1090 1093

const reSchemeOnly = /^[\w-]+:$/;

1091 1094

const staticFilterTypes = {

@@ -1203,24 +1206,35 @@ const reloadTab = function(ev) {

1203 1206

);

1204 1207

};

1205 1208 1206 -

const onClick = function(ev) {

1209 +

const onClick = async function(ev) {

1207 1210

const target = ev.target;

1208 1211

const tcl = target.classList;

1209 1212 1210 1213

// Select a mode

1211 1214

if ( tcl.contains('header') ) {

1212 -

dialog.setAttribute('data-pane', target.getAttribute('data-pane') );

1213 1215

ev.stopPropagation();

1216 +

dialog.setAttribute('data-pane', target.getAttribute('data-pane') );

1214 1217

return;

1215 1218

}

1216 1219 1220 +

// Toggle temporary exception filter

1221 +

if ( tcl.contains('exceptor') ) {

1222 +

ev.stopPropagation();

1223 +

const status = await messaging.send('loggerUI', {

1224 +

what: 'toggleTemporaryException',

1225 +

filter: filterFromTargetRow(),

1226 +

});

1227 +

const row = target.closest('div');

1228 +

row.classList.toggle('exceptored', status);

1229 +

return;

1230 +

}

1231 + 1217 1232

// Create static filter

1218 1233

if ( target.id === 'createStaticFilter' ) {

1234 +

ev.stopPropagation();

1219 1235

const value = staticFilterNode().value;

1220 1236

// Avoid duplicates

1221 -

if ( createdStaticFilters.hasOwnProperty(value) ) {

1222 -

return;

1223 -

}

1237 +

if ( createdStaticFilters.hasOwnProperty(value) ) { return; }

1224 1238

createdStaticFilters[value] = true;

1225 1239

if ( value !== '' ) {

1226 1240

messaging.send('loggerUI', {

@@ -1232,109 +1246,103 @@ const reloadTab = function(ev) {

1232 1246

});

1233 1247

}

1234 1248

updateWidgets();

1235 -

ev.stopPropagation();

1236 1249

return;

1237 1250

}

1238 1251 1239 1252

// Save url filtering rule(s)

1240 1253

if ( target.id === 'saveRules' ) {

1241 -

messaging.send('loggerUI', {

1254 +

ev.stopPropagation();

1255 +

await messaging.send('loggerUI', {

1242 1256

what: 'saveURLFilteringRules',

1243 1257

context: selectValue('select.dynamic.origin'),

1244 1258

urls: targetURLs,

1245 1259

type: uglyTypeFromSelector('dynamic'),

1246 -

}).then(( ) => {

1247 -

colorize();

1248 1260

});

1249 -

ev.stopPropagation();

1261 +

colorize();

1250 1262

return;

1251 1263

}

1252 1264 1253 1265

const persist = !!ev.ctrlKey || !!ev.metaKey;

1254 1266 1255 1267

// Remove url filtering rule

1256 1268

if ( tcl.contains('action') ) {

1257 -

messaging.send('loggerUI', {

1269 +

ev.stopPropagation();

1270 +

await messaging.send('loggerUI', {

1258 1271

what: 'setURLFilteringRule',

1259 1272

context: selectValue('select.dynamic.origin'),

1260 1273

url: target.getAttribute('data-url'),

1261 1274

type: uglyTypeFromSelector('dynamic'),

1262 1275

action: 0,

1263 1276

persist: persist,

1264 -

}).then(( ) => {

1265 -

colorize();

1266 1277

});

1267 -

ev.stopPropagation();

1278 +

colorize();

1268 1279

return;

1269 1280

}

1270 1281 1271 1282

// add "allow" url filtering rule

1272 1283

if ( tcl.contains('allow') ) {

1273 -

messaging.send('loggerUI', {

1284 +

ev.stopPropagation();

1285 +

await messaging.send('loggerUI', {

1274 1286

what: 'setURLFilteringRule',

1275 1287

context: selectValue('select.dynamic.origin'),

1276 1288

url: target.parentNode.getAttribute('data-url'),

1277 1289

type: uglyTypeFromSelector('dynamic'),

1278 1290

action: 2,

1279 1291

persist: persist,

1280 -

}).then(( ) => {

1281 -

colorize();

1282 1292

});

1283 -

ev.stopPropagation();

1293 +

colorize();

1284 1294

return;

1285 1295

}

1286 1296 1287 1297

// add "block" url filtering rule

1288 1298

if ( tcl.contains('noop') ) {

1289 -

messaging.send('loggerUI', {

1299 +

ev.stopPropagation();

1300 +

await messaging.send('loggerUI', {

1290 1301

what: 'setURLFilteringRule',

1291 1302

context: selectValue('select.dynamic.origin'),

1292 1303

url: target.parentNode.getAttribute('data-url'),

1293 1304

type: uglyTypeFromSelector('dynamic'),

1294 1305

action: 3,

1295 1306

persist: persist,

1296 -

}).then(( ) => {

1297 -

colorize();

1298 1307

});

1299 -

ev.stopPropagation();

1308 +

colorize();

1300 1309

return;

1301 1310

}

1302 1311 1303 1312

// add "block" url filtering rule

1304 1313

if ( tcl.contains('block') ) {

1305 -

messaging.send('loggerUI', {

1314 +

ev.stopPropagation();

1315 +

await messaging.send('loggerUI', {

1306 1316

what: 'setURLFilteringRule',

1307 1317

context: selectValue('select.dynamic.origin'),

1308 1318

url: target.parentNode.getAttribute('data-url'),

1309 1319

type: uglyTypeFromSelector('dynamic'),

1310 1320

action: 1,

1311 1321

persist: persist,

1312 -

}).then(( ) => {

1313 -

colorize();

1314 1322

});

1315 -

ev.stopPropagation();

1323 +

colorize();

1316 1324

return;

1317 1325

}

1318 1326 1319 1327

// Force a reload of the tab

1320 1328

if ( tcl.contains('reload') ) {

1329 +

ev.stopPropagation();

1321 1330

messaging.send('loggerUI', {

1322 1331

what: 'reloadTab',

1323 1332

tabId: targetTabId,

1324 1333

});

1325 -

ev.stopPropagation();

1326 1334

return;

1327 1335

}

1328 1336 1329 1337

// Hightlight corresponding element in target web page

1330 1338

if ( tcl.contains('picker') ) {

1339 +

ev.stopPropagation();

1331 1340

messaging.send('loggerUI', {

1332 1341

what: 'launchElementPicker',

1333 1342

tabId: targetTabId,

1334 1343

targetURL: 'img\t' + targetURLs[0],

1335 1344

select: true,

1336 1345

});

1337 -

ev.stopPropagation();

1338 1346

return;

1339 1347

}

1340 1348

};

@@ -1426,6 +1434,37 @@ const reloadTab = function(ev) {

1426 1434

return urls;

1427 1435

};

1428 1436 1437 +

const filterFromTargetRow = function() {

1438 +

return targetRow.children[1].textContent;

1439 +

};

1440 + 1441 +

const toSummaryPaneFilterNode = async function(receiver, filter) {

1442 +

receiver.children[1].textContent = filter;

1443 +

if ( filterAuthorMode !== true ) { return; }

1444 +

const match = /#@?#/.exec(filter);

1445 +

if ( match === null ) { return; }

1446 +

const fragment = document.createDocumentFragment();

1447 +

fragment.appendChild(document.createTextNode(match[0]));

1448 +

const selector = filter.slice(match.index + match[0].length);

1449 +

const span = document.createElement('span');

1450 +

span.className = 'filter';

1451 +

span.textContent = selector;

1452 +

fragment.appendChild(span);

1453 +

let isTemporaryException = false;

1454 +

if ( match[0] === '#@#' ) {

1455 +

isTemporaryException = await messaging.send('loggerUI', {

1456 +

what: 'hasTemporaryException',

1457 +

filter,

1458 +

});

1459 +

receiver.classList.toggle('exceptored', isTemporaryException);

1460 +

}

1461 +

if ( match[0] === '##' || isTemporaryException ) {

1462 +

receiver.children[2].style.visibility = '';

1463 +

}

1464 +

receiver.children[1].textContent = '';

1465 +

receiver.children[1].appendChild(fragment);

1466 +

};

1467 + 1429 1468

const fillSummaryPaneFilterList = async function(rows) {

1430 1469

const rawFilter = targetRow.children[1].textContent;

1431 1470

const compiledFilter = targetRow.getAttribute('data-filter');

@@ -1468,7 +1507,7 @@ const reloadTab = function(ev) {

1468 1507

bestMatchFilter !== '' &&

1469 1508

Array.isArray(response[bestMatchFilter])

1470 1509

) {

1471 -

rows[0].children[1].textContent = bestMatchFilter;

1510 +

toSummaryPaneFilterNode(rows[0], bestMatchFilter);

1472 1511

rows[1].children[1].appendChild(nodeFromFilter(

1473 1512

bestMatchFilter,

1474 1513

response[bestMatchFilter]

@@ -1499,7 +1538,7 @@ const reloadTab = function(ev) {

1499 1538

});

1500 1539

handleResponse(response);

1501 1540

}

1502 -

};

1541 +

} ;

1503 1542 1504 1543

const fillSummaryPane = function() {

1505 1544

const rows = dialog.querySelectorAll('.pane.details > div');

@@ -1508,12 +1547,12 @@ const reloadTab = function(ev) {

1508 1547

const trch = tr.children;

1509 1548

let text;

1510 1549

// Filter and context

1511 -

text = trch[1].textContent;

1550 +

text = filterFromTargetRow();

1512 1551

if (

1513 1552

(text !== '') &&

1514 1553

(trcl.contains('cosmeticRealm') || trcl.contains('networkRealm'))

1515 1554

) {

1516 -

rows[0].children[1].textContent = text;

1555 +

toSummaryPaneFilterNode(rows[0], text);

1517 1556

} else {

1518 1557

rows[0].style.display = 'none';

1519 1558

}

@@ -1753,7 +1792,7 @@ const reloadTab = function(ev) {

1753 1792

fillSummaryPane();

1754 1793

fillDynamicPane();

1755 1794

fillStaticPane();

1756 -

dialog.addEventListener('click', onClick, true);

1795 +

dialog.addEventListener('click', ev => { onClick(ev); }, true);

1757 1796

dialog.addEventListener('change', onSelectChange, true);

1758 1797

dialog.addEventListener('input', onInputChange, true);

1759 1798

modalDialog.show();


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4