diff --git a/inject.js b/inject.js index 386042f..010010b 100644 --- a/inject.js +++ b/inject.js @@ -969,8 +969,8 @@ function ensureController(node, parent) { } // href selects site rules; re-run on every new/usable media so margins/opacity match current URL. - var siteDisabled = applySiteRuleOverrides(); - if (!tc.settings.enabled || siteDisabled) { + applySiteRuleOverrides(); + if (!siteRuleUtils.isSpeederActiveForSite(tc.settings.enabled, tc.activeSiteRule)) { return null; } refreshAllControllerGeometry(); @@ -2016,6 +2016,7 @@ function defineVideoController() { function applySiteRuleOverrides() { resetSettingsFromSiteRuleBase(); + tc.activeSiteRule = null; if (!Array.isArray(tc.settings.siteRules) || tc.settings.siteRules.length === 0) { return false; @@ -2024,7 +2025,9 @@ function applySiteRuleOverrides() { var currentUrl = location.href; var matchedRule = siteRuleUtils.matchSiteRule(currentUrl, tc.settings.siteRules); - if (!matchedRule) return false; + if (!matchedRule) { + return false; + } tc.activeSiteRule = matchedRule; log(`Matched site rule: ${matchedRule.pattern}`, 4); @@ -2104,8 +2107,10 @@ function refreshAllControllerGeometry() { /** Re-match site rules for current URL and refresh controller position/opacity on every video. */ function reapplySiteRulesAndControllerGeometry() { - var siteDisabled = applySiteRuleOverrides(); - if (!tc.settings.enabled || siteDisabled) return; + applySiteRuleOverrides(); + if (!siteRuleUtils.isSpeederActiveForSite(tc.settings.enabled, tc.activeSiteRule)) { + return; + } refreshAllControllerGeometry(); } @@ -2453,8 +2458,10 @@ function attachNavigationListeners() { function initializeNow(doc, forceReinit = false) { if ((!forceReinit && vscInitializedDocuments.has(doc)) || !doc.body) return; - var siteDisabled = applySiteRuleOverrides(); - if (!tc.settings.enabled || siteDisabled) return; + applySiteRuleOverrides(); + if (!siteRuleUtils.isSpeederActiveForSite(tc.settings.enabled, tc.activeSiteRule)) { + return; + } if (!doc.body.classList.contains("vsc-initialized")) { doc.body.classList.add("vsc-initialized"); diff --git a/options.css b/options.css index 871ad93..b2c0808 100644 --- a/options.css +++ b/options.css @@ -348,6 +348,27 @@ label em { text-align: center; } +/* Chevron: native menu indicator is often missing with themed controls */ +#addShortcutSelector, +.site-add-shortcut-selector { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + background-color: var(--panel); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%234b5563' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 12px center; + background-size: 16px 16px; + padding-right: 38px; + cursor: pointer; +} + +#addShortcutSelector:disabled, +.site-add-shortcut-selector:disabled { + cursor: not-allowed; + opacity: 0.72; +} + #addShortcutSelector { width: min(220px, 100%); margin-top: 12px; @@ -489,7 +510,7 @@ label em { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; - align-items: center; + align-items: start; font-weight: 600; margin-bottom: 8px; cursor: pointer; @@ -502,6 +523,11 @@ label em { .site-override-lead span { margin: 0; + font-weight: 600; +} + +.site-override-lead span em { + font-weight: 400; } .site-rule-override-section .site-override-fields, @@ -935,6 +961,10 @@ button.lucide-result-tile.lucide-picked { color: var(--text); } +.site-rule-split-label span em { + font-weight: 400; +} + .site-rule-split-label input[type="checkbox"] { justify-self: end; margin-top: 0; @@ -969,16 +999,22 @@ button.lucide-result-tile.lucide-picked { } .site-shortcuts-container .shortcut-row { - grid-template-columns: minmax(0, 1fr) 110px 110px minmax(0, 1fr); + grid-template-columns: minmax(0, 1fr) 110px 110px minmax(0, 1fr) 38px; padding: 8px 0; border-top: 1px solid var(--border); } -.site-shortcuts-container .shortcut-row:first-child { +.site-shortcuts-rows .shortcut-row:first-child { padding-top: 0; border-top: 0; } +.site-add-shortcut-selector { + width: min(220px, 100%); + align-self: flex-start; + margin-top: 0; +} + .force-label { display: flex; align-items: center; @@ -1120,7 +1156,8 @@ button.lucide-result-tile.lucide-picked { } .action-row button, - #addShortcutSelector { + #addShortcutSelector, + .site-add-shortcut-selector { width: 100%; } @@ -1204,6 +1241,12 @@ button.lucide-result-tile.lucide-picked { background: rgba(255, 255, 255, 0.04); } + #addShortcutSelector, + .site-add-shortcut-selector { + background-color: var(--panel); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); + } + input[type="text"]:focus, select:focus, textarea:focus { diff --git a/options.html b/options.html index c3863af..0596edb 100644 --- a/options.html +++ b/options.html @@ -253,11 +253,22 @@