(props)
| 6774 | triangle fades in, the leading one runs out of the viewBox. End state equals |
| 6775 | start state, which is why dropping the class again is invisible. */ |
| 6776 | .${SKIPPING} .${ICON}__row { animation: glowifySkipFlow 0.52s cubic-bezier(0.3, 1.75, 0.44, 1) both; } |
| 6777 | .${SKIPPING} .${ICON}__in { animation: glowifySkipIn 0.52s cubic-bezier(0.32, 0.72, 0.22, 1) both; } |
| 6778 | .${SKIPPING} .${ICON}__out { animation: glowifySkipOut 0.52s cubic-bezier(0.32, 0.72, 0.22, 1) both; } |
| 6779 | |
| 6780 | @keyframes glowifySkipFlow { from { transform: translateX(0); } to { transform: translateX(9.6px); } } |
| 6781 | @keyframes glowifySkipIn { 0% { opacity: 0; } 45%, 100% { opacity: 1; } } |
| 6782 | @keyframes glowifySkipOut { 0% { opacity: 1; } 55%, 100% { opacity: 0; } } |
| 6783 | |
| 6784 | ${tintedControls("#fff")} |
| 6785 | |
| 6786 | /* Both are role=switch, so aria-checked carries the engaged state \u2014 repeat |
| 6787 | reports "mixed" for repeat-one, hence the negated match rather than ="true". |
| 6788 | The descendants come along for the same reason as above. */ |
| 6789 | ${SHUFFLE}[aria-checked]:not([aria-checked="false"]), |
| 6790 | ${SHUFFLE}[aria-checked]:not([aria-checked="false"]) *, |
| 6791 | ${REPEAT}[aria-checked]:not([aria-checked="false"]), |
| 6792 | ${REPEAT}[aria-checked]:not([aria-checked="false"]) * { |
| 6793 | color: ${ACCENT_COLOR} !important; |
| 6794 | } |
| 6795 | |
| 6796 | ${SCALE_PLAY_BUTTON} |
| 6797 | |
| 6798 | @media (prefers-reduced-motion: reduce) { |
| 6799 | ${TRANSPORT}, .${ICON}__a, .${ICON}__b { transition: none !important; } |
| 6800 | .${SKIPPING} .${ICON}__row, |
| 6801 | .${SKIPPING} .${ICON}__in, |
| 6802 | .${SKIPPING} .${ICON}__out { animation: none !important; } |
| 6803 | } |
| 6804 | `; |
| 6805 | } |
| 6806 | function getPlayerControlIconsDisabledCss() { |
| 6807 | return ` |
| 6808 | ${SCALE_PLAY_BUTTON} |
| 6809 | |
| 6810 | ${BARE_PLAY_BUTTON} |
| 6811 | |
| 6812 | ${eachTransport("")}, |
| 6813 | ${eachTransport(" *")} { |
| 6814 | color: #fff !important; |
| 6815 | } |
| 6816 | ${eachTransport(" svg")}, ${eachTransport(" path")} { fill: currentColor !important; } |
| 6817 | |
| 6818 | [class*="-legacy-button"]:hover { color: #fff !important; } |
| 6819 | `; |
| 6820 | } |
| 6821 | function isPlayerControlIconsEnabled() { |
| 6822 | return (localStorage.getItem(PLAYER_ICONS_KEY) || "on") === "on"; |
| 6823 | } |
| 6824 | function removeIcons() { |
| 6825 | document.querySelectorAll(`.${ICON}`).forEach((icon) => icon.remove()); |
| 6826 | } |
| 6827 | function ensureIcon(button, markup) { |
| 6828 | let icon = button.querySelector(`.${ICON}`); |
| 6829 | if (!icon) { |
| 6830 | const holder = document.createElement("div"); |
| 6831 | holder.innerHTML = markup; |
| 6832 | icon = holder.firstElementChild; |
| 6833 | button.appendChild(icon); |
nothing calls this directly
no test coverage detected