apply 10.8 css changes

- No use optimizing conditionally
- Add animation on skipButton entry and exit
This commit is contained in:
Kilian von Pflugk 2024-05-12 23:59:41 +02:00
parent a98b9c7a37
commit 196dd4c30c

View File

@ -6,15 +6,15 @@ let introSkipper = {
}; };
introSkipper.d = function (msg) { introSkipper.d = function (msg) {
console.debug("[intro skipper] ", msg); console.debug("[intro skipper] ", msg);
} }
/** Setup event listeners */ /** Setup event listeners */
introSkipper.setup = function () { introSkipper.setup = function () {
document.addEventListener("viewshow", introSkipper.viewShow); document.addEventListener("viewshow", introSkipper.viewShow);
window.fetch = introSkipper.fetchWrapper; window.fetch = introSkipper.fetchWrapper;
introSkipper.d("Registered hooks"); introSkipper.d("Registered hooks");
} }
/** Wrapper around fetch() that retrieves skip segments for the currently playing item. */ /** Wrapper around fetch() that retrieves skip segments for the currently playing item. */
introSkipper.fetchWrapper = async function (...args) { introSkipper.fetchWrapper = async function (...args) {
// Based on JellyScrub's trickplay.js // Based on JellyScrub's trickplay.js
let [resource, options] = args; let [resource, options] = args;
let response = await introSkipper.originalFetch(resource, options); let response = await introSkipper.originalFetch(resource, options);
@ -33,15 +33,15 @@ introSkipper.fetchWrapper = async function (...args) {
console.error("Unable to get skip segments from", resource, e); console.error("Unable to get skip segments from", resource, e);
} }
return response; return response;
} }
/** /**
* Event handler that runs whenever the current view changes. * Event handler that runs whenever the current view changes.
* Used to detect the start of video playback. * Used to detect the start of video playback.
*/ */
introSkipper.viewShow = function () { introSkipper.viewShow = function () {
const location = window.location.hash; const location = window.location.hash;
introSkipper.d("Location changed to " + location); introSkipper.d("Location changed to " + location);
if (location !== "#/video") { if (location !== "#!/video") {
introSkipper.d("Ignoring location change"); introSkipper.d("Ignoring location change");
return; return;
} }
@ -52,12 +52,12 @@ introSkipper.viewShow = function () {
introSkipper.d("Hooking video timeupdate"); introSkipper.d("Hooking video timeupdate");
introSkipper.videoPlayer.addEventListener("timeupdate", introSkipper.videoPositionChanged); introSkipper.videoPlayer.addEventListener("timeupdate", introSkipper.videoPositionChanged);
} }
} }
/** /**
* Injects the CSS used by the skip intro button. * Injects the CSS used by the skip intro button.
* Calling this function is a no-op if the CSS has already been injected. * Calling this function is a no-op if the CSS has already been injected.
*/ */
introSkipper.injectCss = function () { introSkipper.injectCss = function () {
if (introSkipper.testElement("style#introSkipperCss")) { if (introSkipper.testElement("style#introSkipperCss")) {
introSkipper.d("CSS already added"); introSkipper.d("CSS already added");
return; return;
@ -66,6 +66,18 @@ introSkipper.injectCss = function () {
let styleElement = document.createElement("style"); let styleElement = document.createElement("style");
styleElement.id = "introSkipperCss"; styleElement.id = "introSkipperCss";
styleElement.innerText = ` styleElement.innerText = `
@media (hover:hover) and (pointer:fine) {
#skipIntro .paper-icon-button-light:hover:not(:disabled) {
color: black !important;
background-color: rgba(47, 93, 98, 0) !important;
}
}
#skipIntro .paper-icon-button-light.show-focus:focus {
transform: scale(1.04) !important;
}
#skipIntro.upNextContainer {
width: unset;
}
#skipIntro { #skipIntro {
padding: 0 1px; padding: 0 1px;
position: absolute; position: absolute;
@ -81,32 +93,22 @@ introSkipper.injectCss = function () {
-webkit-transition: ease-out 0.4s; -webkit-transition: ease-out 0.4s;
-moz-transition: ease-out 0.4s; -moz-transition: ease-out 0.4s;
transition: ease-out 0.4s; transition: ease-out 0.4s;
}
#skipIntro #btnSkipSegmentText {
padding-right: 3px;
padding-bottom: 2px;
}
@media (max-width: 1080px) { @media (max-width: 1080px) {
#skipIntro {
right: 10%; right: 10%;
} }
&:hover { }
#skipIntro:hover {
box-shadow: inset 400px 0 0 0 #f9f9f9; box-shadow: inset 400px 0 0 0 #f9f9f9;
-webkit-transition: ease-in 1s; -webkit-transition: ease-in 1s;
-moz-transition: ease-in 1s; -moz-transition: ease-in 1s;
transition: ease-in 1s; transition: ease-in 1s;
} }
&.upNextContainer {
width: unset;
}
@media (hover:hover) and (pointer:fine) {
.paper-icon-button-light:hover:not(:disabled) {
color: black !important;
background-color: rgba(47, 93, 98, 0) !important;
}
}
.paper-icon-button-light.show-focus:focus {
transform: scale(1.04) !important;
}
#btnSkipSegmentText {
padding-right: 3px;
padding-bottom: 2px;
}
}
`; `;
document.querySelector("head").appendChild(styleElement); document.querySelector("head").appendChild(styleElement);
} }