Bilibili-Evolved/min/theme-colors.min.js
2021-10-26 13:22:15 +08:00

1 line
2.0 KiB
JavaScript

(()=>(e,t)=>{const r={red:"#e57373",pink:"#F06292",purple:"#BA68C8",deepPurple:"#9575CD",indigo:"#7986CB",blue:"#2196F3",lightBlue:"#00A0D8",cyan:"#00ACC1",teal:"#26A69A",green:"#81C784",lightGreen:"#9CCC65",orange:"#FF9800",deepOrange:"#FF7043",brown:"#A1887F",grey:"#757575",blueGrey:"#78909C"};class o{constructor(){this.reloadColor=(()=>{const e=document.querySelector("html");return function(t){const r=new ColorProcessor(t);const o=e=>r.rgbToString(r.hexToRgba(e));e.style.setProperty("--theme-color",t);for(let r=10;r<=90;r+=10){e.style.setProperty(`--theme-color-${r}`,o(t+r))}e.style.setProperty("--foreground-color",r.foreground);e.style.setProperty("--foreground-color-b",o(r.foreground+"b"));e.style.setProperty("--foreground-color-d",o(r.foreground+"d"));e.style.setProperty("--blue-image-filter",r.blueImageFilter);e.style.setProperty("--pink-image-filter",r.pinkImageFilter);e.style.setProperty("--brightness",r.brightness);e.style.setProperty("--invert-filter",r.filterInvert)}})()}setupDom(){const t=document.querySelector(`input[key='customStyleColor']`);addSettingsListener("customStyleColor",(e=>this.reloadColor(e)));addSettingsListener("foregroundColorMode",(()=>this.reloadColor(e.customStyleColor)));const o=document.querySelector(".predefined-colors-grid");for(const e of Object.values(r)){const r=document.createElement("div");o.insertAdjacentElement("beforeend",r);r.classList.add("predefined-colors-grid-block");r.style.background=e;r.setAttribute("data-color",e);r.addEventListener("click",(e=>{const r=e.target.getAttribute("data-color");t.value=r;raiseEvent(t,"input");raiseEvent(t,"change")}))}const n=document.querySelector(".predefined-colors");const s=document.querySelector("div.custom-color-preview");const l=e=>{if(e.target!==s&&!s.contains(e.target)&&e.target!==t){n.classList.remove("opened");document.removeEventListener("click",l)}};s.addEventListener("click",(()=>{if(!n.classList.contains("opened")){document.addEventListener("click",l)}else{document.removeEventListener("click",l)}n.classList.toggle("opened")}))}}return{export:{ThemeColors:o}}})();