!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/replace-cover"]=t():e["style/replace-cover"]=t()}(globalThis,(()=>(()=>{var e,t,r={91:(e,t,r)=>{var o=r(955)((function(e){return e[1]}));o.push([e.id,'@charset "UTF-8";\n.bili-video-card .bili-video-card__image--wrap {\n position: relative;\n}\n\n.bili-video-card .bili-video-card__image--wrap picture {\n visibility: hidden !important;\n}\n\n.bili-video-card .bili-video-card__image--wrap .custom-preview-img {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: 2;\n opacity: 0;\n transition: opacity 0.3s ease;\n border-radius: inherit;\n /* 继承父元素的圆角 */\n}\n\n.bili-video-card .bili-video-card__image--wrap .custom-preview-img.loaded {\n opacity: 1;\n}\n\n/* 鼠标悬停时隐藏自定义预览图,显示原始图片 */\n.bili-video-card .bili-video-card__image--wrap:hover .custom-preview-img.loaded {\n opacity: 0;\n}\n\n.bili-video-card .bili-video-card__image--wrap:hover picture {\n visibility: visible !important;\n}\n\n/* 可选: 添加占位符背景色或加载动画 */\n.bili-video-card .bili-video-card__image--wrap .custom-preview-img:not(.loaded) {\n background-color: #f0f0f0;\n}',""]),e.exports=o},955:e=>{"use strict"; // eslint-disable-next-line func-names e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=e(t);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")}, // eslint-disable-next-line func-names t.i=function(e,r,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(o)for(var i=0;i{var o=r(453).Symbol;e.exports=o},624:(e,t,r)=>{var o=r(73),n=r(915),i=r(478),a=o?o.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?n(e):i(e)}},480:(e,t,r)=>{var o=r(976),n=/^\s+/;e.exports=function(e){return e?e.slice(0,o(e)+1).replace(n,""):e}},928:(e,t,r)=>{var o="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=o},915:(e,t,r)=>{var o=r(73),n=Object.prototype,i=n.hasOwnProperty,a=n.toString,c=o?o.toStringTag:void 0;e.exports=function(e){var t=i.call(e,c),r=e[c];try{e[c]=void 0;var o=!0}catch(e){}var n=a.call(e);return o&&(t?e[c]=r:delete e[c]),n}},478:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},453:(e,t,r)=>{var o=r(928),n="object"==typeof self&&self&&self.Object===Object&&self,i=o||n||Function("return this")();e.exports=i},976:e=>{var t=/\s/;e.exports=function(e){for(var r=e.length;r--&&t.test(e.charAt(r)););return r}},645:(e,t,r)=>{var o=r(717),n=r(884),i=r(86),a=Math.max,c=Math.min;e.exports=function(e,t,r){var s,l,u,d,f,p,v=0,m=!1,g=!1,y=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var r=s,o=l;return s=l=void 0,v=t,d=e.apply(o,r)}function h(e){var r=e-p;return void 0===p||r>=t||r<0||g&&e-v>=u}function w(){var e=n();if(h(e))return x(e);f=setTimeout(w,function(e){var r=t-(e-p);return g?c(r,u-(e-v)):r}(e))}function x(e){return f=void 0,y&&s?b(e):(s=l=void 0,d)}function _(){var e=n(),r=h(e);if(s=arguments,l=this,p=e,r){if(void 0===f)return function(e){return v=e,f=setTimeout(w,t),m?b(e):d}(p);if(g)return clearTimeout(f),f=setTimeout(w,t),b(p)}return void 0===f&&(f=setTimeout(w,t)),d}return t=i(t)||0,o(r)&&(m=!!r.leading,u=(g="maxWait"in r)?a(i(r.maxWait)||0,t):u,y="trailing"in r?!!r.trailing:y),_.cancel=function(){void 0!==f&&clearTimeout(f),v=0,s=p=l=f=void 0},_.flush=function(){return void 0===f?d:x(n())},_}},717:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},50:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},770:(e,t,r)=>{var o=r(624),n=r(50);e.exports=function(e){return"symbol"==typeof e||n(e)&&"[object Symbol]"==o(e)}},884:(e,t,r)=>{var o=r(453);e.exports=function(){return o.Date.now()}},462:(e,t,r)=>{var o=r(645),n=r(717);e.exports=function(e,t,r){var i=!0,a=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return n(r)&&(i="leading"in r?!!r.leading:i,a="trailing"in r?!!r.trailing:a),o(e,t,{leading:i,maxWait:t,trailing:a})}},86:(e,t,r)=>{var o=r(480),n=r(717),i=r(770),a=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(i(e))return NaN;if(n(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=n(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=o(e);var r=c.test(e);return r||s.test(e)?l(e.slice(2),r?2:8):a.test(e)?NaN:+e}},345:(e,t,r)=>{var o=r(91);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return r[e](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&o&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,n.d(i,a),i},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>f});var e=n(462),t=n.n(e);const r=coreApis.componentApis.define,o=coreApis.componentApis.styledComponent,a=new Map;let c=0;const s=[];async function l(e){const t=e.querySelector("a.bili-video-card__image--link");if(!t)return;const r=t.getAttribute("href"),o=r?.match(/\/video\/(BV[\w]+)/);if(!o)return;const n=o[1],i=t.querySelector(".bili-video-card__image--wrap");if(!i||i.querySelector(".custom-preview-img"))return;const l=i.querySelector("picture img");if(!l)return;const u=document.createElement("img");u.className="custom-preview-img",l.alt&&(u.alt=l.alt),l.style.aspectRatio&&(u.style.aspectRatio=l.style.aspectRatio),i.appendChild(u),await async function(e){if(c>=15)await new Promise((t=>{s.push((async()=>{await e(),t()}))}));else{c+=1;try{await e()}finally{if(c-=1,s.length>0){const e=s.shift();e?.()}}}}((async()=>{try{const e=await async function(e){const t=a.get(e);if(t)return t;try{const t=new URL("https://api.bilibili.com/x/player/videoshot");t.searchParams.set("bvid",e),t.searchParams.set("index","1");let r=await fetch(t.toString());if(412===r.status&&(await new Promise((e=>setTimeout(e,3e4))),r=await fetch(t.toString()),412===r.status))return null;const o=await r.json();if(0!==o.code||!o.data?.image)return null;const{image:n,index:i=[],img_x_len:c,img_y_len:s,img_x_size:l,img_y_size:u}=o.data,d=c*s,f=Array.isArray(i)&&i.length>0?Math.floor((i.length-1)/2):0,p=Math.floor(f/d);if(p>=n.length)return null;const v=f%d,m=v%c,g=Math.floor(v/c),y=m*l,b=g*u,h=l,w=u,x=n[p].startsWith("//")?`https:${n[p]}`:n[p],_=await fetch(x,{mode:"cors"});if(!_.ok)return null;const j=await _.blob();let S;try{S=await createImageBitmap(j,y,b,h,w,{})}catch(t){console.error("[replaceCover] createImageBitmap error:",t);try{const t=await new Promise(((e,t)=>{const r=new Image;r.crossOrigin="anonymous",r.onload=()=>{try{const o=document.createElement("canvas");o.width=h,o.height=w;const n=o.getContext("2d");if(!n)return void t(new Error("Could not get canvas context in fallback."));n.drawImage(r,y,b,h,w,0,0,h,w);const i=o.toDataURL("image/jpeg",.9);e(i)}catch(e){console.error("[replaceCover] canvas error:",e),t(e)}},r.onerror=e=>t(new Error(`Image load error in fallback for ${x}: ${e}`)),r.src=x}));return a.set(e,t),t}catch(e){return console.error("[replaceCover] fallback error:",e),null}}const O=document.createElement("canvas");O.width=l,O.height=u;const E=O.getContext("2d");if(!E)return S.close(),null;E.drawImage(S,0,0),S.close();const T=O.toDataURL("image/jpeg",.9);return a.set(e,T),T}catch(e){return console.error("[replaceCover] Error fetching video preview:",e),null}}(n);if(!e)return void u.remove();await new Promise((t=>{const r=new Image;r.onload=()=>{u.src=e,u.classList.add("loaded"),t()},r.onerror=()=>{u.remove(),t()},r.src=e}))}catch(e){console.error("[replaceCover] Error processing video card:",e),u.remove()}}))}async function u(e){const t=e.filter((e=>e.classList?.contains("bili-video-card")));0!==t.length&&await Promise.allSettled(t.map((e=>l(e))))}function d(e){const t=[];for(const r of e)if("childList"===r.type&&r.addedNodes.length>0)for(const e of Array.from(r.addedNodes))if(e.nodeType===Node.ELEMENT_NODE){const r=e;r.classList?.contains("bili-video-card")&&t.push(r);r.querySelectorAll(".bili-video-card").forEach((e=>t.push(e)))}const r=Array.from(new Set(t));r.length>0&&u(r)}const f=(0,r.defineComponentMetadata)({name:"replaceCover",author:{name:"UcnacDx2",link:"https://github.com/UcnacDx2"},tags:[componentsTags.style],displayName:"替换标题党封面",description:"将视频卡片的封面替换为视频预览帧,杜绝图文不符。致敬DeArrow。",urlInclude:["www.bilibili.com"],entry:(0,o.styledComponentEntry)((()=>Promise.resolve().then(n.t.bind(n,345,23))),(async()=>{const e=["main > .feed2 > .recommended-container_floor-aside > .container","main > .feed2 > .container",".recommended-container_floor-aside > .container",".container.is-adapting",".recommend-page-container .video-card-list","#page-video .tab-list-box .video-card-list","#bili_bangumi_watch .video-card-list",".search-results-video .video-list",".space-video-list"].map((e=>document.querySelector(e))).find((e=>null!==e))??document.body,r=document.querySelectorAll(".bili-video-card");u(Array.from(r));new MutationObserver(d).observe(e,{childList:!0,subtree:!0});const o=t()((()=>{const e=document.querySelectorAll(".bili-video-card");if(0===e.length)return;const t=Array.from(e).filter((e=>{const t=e.querySelector(".bili-video-card__image--wrap");if(!t)return!1;const r=t.querySelector(".custom-preview-img");return!r||!r.src}));t.length>0&&(t.forEach((e=>{const t=e.querySelector(".custom-preview-img");t&&!t.src&&t.remove()})),u(t))}),300);window.addEventListener("resize",o),window.addEventListener("scroll",o)})),commitHash:"7329f077f3f19ae45200c348976c106b35e33103",coreVersion:"2.10.4"})})(),i=i.component})()));