diff --git a/src/about.html b/src/about.html index 4a9a057d9..081ddfc75 100644 --- a/src/about.html +++ b/src/about.html @@ -29,7 +29,6 @@
  • diff --git a/src/css/fa-icons.css b/src/css/fa-icons.css index eeea6eebb..e8680416e 100644 --- a/src/css/fa-icons.css +++ b/src/css/fa-icons.css @@ -38,63 +38,51 @@ height: 1em; width: 1em; } -.fa-icon > .fa-icon_cloud-download-alt, -.fa-icon > .fa-icon_cloud-upload-alt, -.fa-icon > .fa-icon_code { - width: calc(1em * 640 / 512); - } -.fa-icon > .fa-icon_exclamation-triangle, -.fa-icon > .fa-icon_eye, -.fa-icon > .fa-icon_eye-slash, -.fa-icon > .fa-icon_home, -.fa-icon > .fa-icon_puzzle-piece, -.fa-icon > .fa-icon_reply-all { - width: calc(1em * 576 / 512); - } -.fa-icon > .fa-icon_clock, -.fa-icon > .fa-icon_cog, -.fa-icon > .fa-icon_download, + .fa-icon > .fa-icon_eraser, -.fa-icon > .fa-icon_eye-dropper, -.fa-icon > .fa-icon_film, -.fa-icon > .fa-icon_filter, -.fa-icon > .fa-icon_info-circle, -.fa-icon > .fa-icon_list-alt, -.fa-icon > .fa-icon_pause-circle, -.fa-icon > .fa-icon_play-circle, -.fa-icon > .fa-icon_power-off, -.fa-icon > .fa-icon_question-circle, -.fa-icon > .fa-icon_reply, -.fa-icon > .fa-icon_search-minus, -.fa-icon > .fa-icon_search-plus, -.fa-icon > .fa-icon_sliders-h, -.fa-icon > .fa-icon_spinner, -.fa-icon > .fa-icon_sync-alt, -.fa-icon > .fa-icon_th, -.fa-icon > .fa-icon_th-list, -.fa-icon > .fa-icon_unlink { - width: calc(1em * 512 / 512); +.fa-icon > .fa-icon_film { + width: calc(1em * 1920 / 1792); } -.fa-icon > .fa-icon_angle-double-left, -.fa-icon > .fa-icon_arrow-left, -.fa-icon > .fa-icon_arrow-right, -.fa-icon > .fa-icon_copy, -.fa-icon > .fa-icon_font, -.fa-icon > .fa-icon_lock, -.fa-icon > .fa-icon_plus, -.fa-icon > .fa-icon_save, -.fa-icon > .fa-icon_unlock, -.fa-icon > .fa-icon_trash-alt { - width: calc(1em * 448 / 512); +.fa-icon > .fa-icon_code { + width: calc(1em * 1830 / 1792); + } +.fa-icon > .fa-icon_eye-dropper, +.fa-icon > .fa-icon_eye-slash, +.fa-icon > .fa-icon_files-o, +.fa-icon > .fa-icon_list-alt { + width: calc(1em * 1792 / 1792); + } +.fa-icon > .fa-icon_font { + width: calc(1em * 1664 / 1792); + } +.fa-icon > .fa-icon_home { + width: calc(1em * 1612 / 1792); + } +.fa-icon > .fa-icon_floppy-o, +.fa-icon > .fa-icon_info-circle, +.fa-icon > .fa-icon_pause-circle-o, +.fa-icon > .fa-icon_play-circle-o, +.fa-icon > .fa-icon_power-off, +.fa-icon > .fa-icon_refresh, +.fa-icon > .fa-icon_sliders { + width: calc(1em * 1536 / 1792); + } +.fa-icon > .fa-icon_filter { + width: calc(1em * 1410 / 1792); } .fa-icon > .fa-icon_times { - width: calc(1em * 352 / 512); + width: calc(1em * 1188 / 1792); + } +.fa-icon > .fa-icon_lock { + width: calc(1em * 1152 / 1792); } .fa-icon > .fa-icon_angle-up, -.fa-icon > .fa-icon_angle-double-up, +.fa-icon > .fa-icon_double-angle-up { + width: calc(1em * 998 / 1792); + } +.fa-icon > .fa-icon_double-angle-left { + width: calc(1em * 966 / 1792); + } .fa-icon > .fa-icon_bolt { - width: calc(1em * 320 / 512); - } -.fa-icon > .fa-icon_ellipsis-v { - width: calc(1em * 192 / 512); + width: calc(1em * 896 / 1792); } diff --git a/src/css/logger-ui.css b/src/css/logger-ui.css index 71dc4ba18..a830c1e13 100644 --- a/src/css/logger-ui.css +++ b/src/css/logger-ui.css @@ -77,7 +77,6 @@ textarea { #inspectors { flex-grow: 1; font-family: "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; - font-size: 13px; } .inspector { border-top: 1px solid #ccc; @@ -86,6 +85,7 @@ textarea { } .vscrollable { flex-grow: 1; + font-size: small; overflow-x: hidden; overflow-y: auto; } @@ -157,9 +157,6 @@ textarea { top: 100%; z-index: 100; } -#netInspector #filterExprButton.on { - fill: #5F9EA0; - } #netInspector #filterExprButton.expanded ~ #filterExprPicker { display: flex; } @@ -684,7 +681,7 @@ body.colorBlind #netFilteringDialog .dialog > div.containers > div.dynamic tr.e font-size: larger; } #filterFinderDialog .filterFinderListEntry { - align-items: center; + align-items: flex-end; display: flex; } #filterFinderDialog .filterFinderListEntry a { diff --git a/src/css/popup.css b/src/css/popup.css index 44d3c0c44..fa6a94d9e 100644 --- a/src/css/popup.css +++ b/src/css/popup.css @@ -98,7 +98,7 @@ p { #switch .fa-icon { fill: #0046ff; cursor: pointer; - font-size: 650%; + font-size: 700%; margin: 0; padding: 0; } @@ -161,25 +161,21 @@ body.off #switch .fa-icon { #extraTools > span:first-of-type { margin-left: 0.9em; } -#extraTools > span > span:last-of-type { - color: #e00; +#extraTools > span > .nope { left: 50%; position: absolute; - top: 0; - transform: translateX(-50%); - visibility: hidden; - } -#extraTools > span > span:last-of-type > svg { stroke: red; stroke-width: 2; + transform: translateX(-50%); + visibility: hidden; width: 1em; } -#extraTools > span.on > span:last-of-type { +#extraTools > span.on > .nope { visibility: visible; } #extraTools > span:hover { - color: #333; - fill: #333; + color: #222; + fill: #222; } #refresh { @@ -498,11 +494,11 @@ body.advancedUser #firewallContainer > div > span.noopRule.ownRule { border-radius: 4px; cursor: pointer; display: inline-block; - font-size: 1.5em; + font-size: 1.8em; line-height: 1.0; margin: 0; margin-right: 0.1em; - padding: 0.3em 0.5em; + padding: 0.2em 0.4em; text-align: center; width: 1em; } diff --git a/src/img/fontawesome/LICENSE.txt b/src/img/fontawesome/LICENSE.txt index 0abfaa6e2..2784b8cfa 100644 --- a/src/img/fontawesome/LICENSE.txt +++ b/src/img/fontawesome/LICENSE.txt @@ -1,34 +1,25 @@ -Font Awesome Free License -------------------------- +# [Font Awesome v4.7.0](http://fontawesome.io) +### The iconic font and CSS framework -Font Awesome Free is free, open source, and GPL friendly. You can use it for -commercial projects, open source projects, or really almost whatever you want. -Full Font Awesome Free license: https://fontawesome.com/license/free. +Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites, +created and maintained by [Dave Gandy](https://twitter.com/davegandy). +Stay up to date with the latest release and announcements on Twitter: +[@fontawesome](http://twitter.com/fontawesome). -# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) -In the Font Awesome Free download, the CC BY 4.0 license applies to all icons -packaged as SVG and JS file types. +Get started at http://fontawesome.io! -# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) -In the Font Awesome Free download, the SIL OLF license applies to all icons -packaged as web and desktop font files. +## License +- The Font Awesome font is licensed under the SIL OFL 1.1: + - http://scripts.sil.org/OFL +- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: + - https://opensource.org/licenses/mit-license.html +- The Font Awesome documentation is licensed under the CC BY 3.0 License: + - http://creativecommons.org/licenses/by/3.0/ +- Attribution is no longer required as of Font Awesome 3.0, but much appreciated: + - `Font Awesome by Dave Gandy - http://fontawesome.io` +- Full details: http://fontawesome.io/license/ -# Code: MIT License (https://opensource.org/licenses/MIT) -In the Font Awesome Free download, the MIT license applies to all non-font and -non-icon files. - -# Attribution -Attribution is required by MIT, SIL OLF, and CC BY licenses. Downloaded Font -Awesome Free files already contain embedded comments with sufficient -attribution, so you shouldn't need to do anything additional when using these -files normally. - -We've kept attribution comments terse, so we ask that you do not actively work -to remove them from files, especially code. They're a great way for folks to -learn about Font Awesome. - -# Brand Icons -All brand icons are trademarks of their respective owners. The use of these -trademarks does not indicate endorsement of the trademark holder by Font -Awesome, nor vice versa. **Please do not use brand logos for any purpose except -to represent the company, product, or service to which they refer.** +## Author +- Email: dave@fontawesome.io +- Twitter: http://twitter.com/davegandy +- GitHub: https://github.com/davegandy diff --git a/src/img/fontawesome/fontawesome-defs.svg b/src/img/fontawesome/fontawesome-defs.svg index 6d17633d5..efe8476ef 100644 --- a/src/img/fontawesome/fontawesome-defs.svg +++ b/src/img/fontawesome/fontawesome-defs.svg @@ -1,59 +1,53 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/ublock-icon.svg b/src/img/ublock-icon.svg new file mode 100644 index 000000000..b297a5436 --- /dev/null +++ b/src/img/ublock-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/js/logger-ui.js b/src/js/logger-ui.js index e0de4c7c8..0d9e25ad0 100644 --- a/src/js/logger-ui.js +++ b/src/js/logger-ui.js @@ -1464,6 +1464,7 @@ const rowFilterer = (function() { reStr += '(?:\\||\\s|$)'; } } + if ( reStr === '' ) { continue; } reStrs.push(reStr); if ( i < (n - 1) && rawParts[i + 1] === '||' ) { i += 1; @@ -1513,8 +1514,13 @@ const rowFilterer = (function() { }; const filterAll = function() { + const filterCount = filters.length; + uDom.nodeFromId('filterButton').classList.toggle( + 'active', + filterCount !== 0 + ); // Special case: no filter - if ( filters.length === 0 ) { + if ( filterCount === 0 ) { uDom('#netInspector tr').removeClass('f'); return; } @@ -1575,11 +1581,11 @@ const rowFilterer = (function() { r: !not }); } + filters = builtinFilters.concat(userFilters); uDom.nodeFromId('filterExprButton').classList.toggle( - 'on', + 'active', builtinFilters.length !== 0 ); - filters = builtinFilters.concat(userFilters); filterAll(); }; diff --git a/src/js/popup.js b/src/js/popup.js index 61f6918bf..24807c1bf 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -320,7 +320,7 @@ var updateAllFirewallCells = function() { /******************************************************************************/ -var buildAllFirewallRows = function() { +const buildAllFirewallRows = function() { // Do this before removing the rows if ( dfHotspots === null ) { dfHotspots = uDom('#actionSelector') @@ -331,11 +331,11 @@ var buildAllFirewallRows = function() { // Remove and reuse all rows: the order may have changed, we can't just // reuse them in-place. - rowsToRecycle = uDom('#firewallContainer > div:nth-of-type(7) ~ div').detach(); + rowsToRecycle = + uDom('#firewallContainer > div:nth-of-type(7) ~ div').detach(); - var n = allHostnameRows.length; - for ( var i = 0; i < n; i++ ) { - addFirewallRow(allHostnameRows[i]); + for ( const row of allHostnameRows ) { + addFirewallRow(row); } if ( dfPaneBuilt !== true && popupData.advancedUserEnabled ) { @@ -351,25 +351,21 @@ var buildAllFirewallRows = function() { /******************************************************************************/ -var renderPrivacyExposure = function() { +const renderPrivacyExposure = function() { allDomains = {}; allDomainCount = touchedDomainCount = 0; allHostnameRows = []; // Sort hostnames. First-party hostnames must always appear at the top // of the list. - var desHostnameDone = {}; - var keys = Object.keys(popupData.firewallRules) + const desHostnameDone = {}; + const keys = Object.keys(popupData.firewallRules) .sort(rulekeyCompare); - var key, des, hnDetails; - for ( var i = 0; i < keys.length; i++ ) { - key = keys[i]; - des = key.slice(2, key.indexOf(' ', 2)); + for ( const key of keys ) { + const des = key.slice(2, key.indexOf(' ', 2)); // Specific-type rules -- these are built-in - if ( des === '*' || desHostnameDone.hasOwnProperty(des) ) { - continue; - } - hnDetails = popupData.hostnameDict[des] || {}; + if ( des === '*' || desHostnameDone.hasOwnProperty(des) ) { continue; } + const hnDetails = popupData.hostnameDict[des] || {}; if ( allDomains.hasOwnProperty(hnDetails.domain) === false ) { allDomains[hnDetails.domain] = false; allDomainCount += 1; @@ -384,14 +380,15 @@ var renderPrivacyExposure = function() { desHostnameDone[des] = true; } - var summary = domainsHitStr.replace('{{count}}', touchedDomainCount.toLocaleString()) - .replace('{{total}}', allDomainCount.toLocaleString()); + const summary = domainsHitStr + .replace('{{count}}', touchedDomainCount.toLocaleString()) + .replace('{{total}}', allDomainCount.toLocaleString()); uDom.nodeFromId('popupHitDomainCount').textContent = summary; }; /******************************************************************************/ -let updateHnSwitches = function() { +const updateHnSwitches = function() { uDom.nodeFromId('no-popups').classList.toggle( 'on', popupData.noPopups === true @@ -417,7 +414,7 @@ let updateHnSwitches = function() { // Assume everything has to be done incrementally. -var renderPopup = function() { +const renderPopup = function() { if ( popupData.tabTitle ) { document.title = popupData.appName + ' - ' + popupData.tabTitle; } @@ -481,7 +478,7 @@ var renderPopup = function() { // https://github.com/chrisaljoudi/uBlock/issues/470 // This must be done here, to be sure the popup is resized properly - let dfPaneVisible = popupData.dfEnabled; + const dfPaneVisible = popupData.dfEnabled; // https://github.com/chrisaljoudi/uBlock/issues/1068 // Remember the last state of the firewall pane. This allows to diff --git a/src/logger-ui.html b/src/logger-ui.html index 5b13351b5..072ecad4e 100644 --- a/src/logger-ui.html +++ b/src/logger-ui.html @@ -19,9 +19,9 @@