mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-11 13:56:15 -08:00
8 lines
1.6 KiB
JavaScript
8 lines
1.6 KiB
JavaScript
/*!
|
|
* artplayer-plugin-ambilight.js v1.0.1
|
|
* Github: https://github.com/zhw2590582/ArtPlayer
|
|
* (c) 2017-2026 Harvey Zhao
|
|
* Released under the MIT License.
|
|
*/
|
|
function t(t={}){return e=>{const{$video:n}=e.template,{createElement:r,addClass:i,setStyles:o}=e.constructor.utils,{blur:a="50px",opacity:l=.5,frequency:d=10,duration:u=.3}=t,s=r("div"),c=((f=s).innerHTML=Array.from({length:9}).fill("<div></div>").join(""),Array.from(f.children));var f,m,g,p;!function(t,e){i(t,"artplayer-plugin-ambilight"),e.parentNode.insertBefore(t,e),o(t,{position:"absolute",top:0,left:0,zIndex:9,inset:0,display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridTemplateRows:"1fr 1fr 1fr"})}(s,n),m=a,g=l,p=u,c.forEach(t=>{o(t,{opacity:g,filter:`blur(${m})`,transition:`background-color ${p}s ease`})});const y=function(t,n,i){const o=r("canvas"),a=o.getContext("2d");o.width=3,o.height=3;let l=0;return function r(){const o=performance.now();if(o-l<1e3/i||!e.playing)return void(h=requestAnimationFrame(r));l=o;const d=t.videoWidth/3,u=t.videoHeight/3,s=[[0,0],[d,0],[2*d,0],[0,u],[d,u],[2*d,u],[0,2*u],[d,2*u],[2*d,2*u]].map(([e,n])=>function(e,n,r,i){a.drawImage(t,e,n,r,i,0,0,1,1);const[o,l,d]=a.getImageData(0,0,1,1).data;return`rgb(${o}, ${l}, ${d})`}(e,n,d,u));n.forEach((t,e)=>{t.style.backgroundColor=s[e]}),h=requestAnimationFrame(r)}}(n,c,d);let h=null;function b(){h||y()}function v(){h&&(cancelAnimationFrame(h),h=null)}return e.on("ready",b),e.on("destroy",v),{name:"artplayerPluginAmbilight",start:b,stop:v}}}"undefined"!==typeof window&&(window.artplayerPluginAmbilight=t);export{t as default};
|