You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
2.9 KiB
2 lines
2.9 KiB
function u(d){return String(d??"").trim()}function L(d){const N=Math.max(8,Number(d?.maxCacheCount??32)),D=d?.enableCanvasWarmup??!0,T=Math.max(1,Number(d?.maxWarmupPerCall??24)),h=d?.disableCanvasPreview??!1,o=new Map,m=new Map,l=new Map,g=new Set,i=document.createElement("div");i.style.width="1px",i.style.height="1px",i.style.position="fixed",i.style.top="-9999px",i.style.left="-9999px",i.style.opacity="0",document.body.appendChild(i);const W=t=>{const r=o.get(t);r?.parentNode&&r.parentNode.removeChild(r),o.delete(t),m.delete(t)},E=t=>{const r=l.get(t);r?.parentNode&&r.parentNode.removeChild(r),l.delete(t)},k=()=>{for(;o.size>N;){const t=o.keys().next().value;if(!t)break;W(t),E(t)}},v=t=>{const r=u(t);if(!r)return null;const a=o.get(r);if(a)return o.delete(r),o.set(r,a),a;const e=new Image;return e.src=r,e.style.width="120px",e.style.height="120px",e.style.objectFit="cover",e.decoding="async",e.loading="eager",o.set(r,e),k(),e},y=t=>{const r=u(t);if(!r)return Promise.resolve();const a=m.get(r);if(a)return a;const e=v(r);if(!e)return Promise.resolve();const n=new Promise(c=>{if(e.complete&&e.naturalWidth>0){c();return}const s=()=>{e.removeEventListener("load",s),e.removeEventListener("error",s),c()};e.addEventListener("load",s,{once:!0}),e.addEventListener("error",s,{once:!0})}).then(async()=>{try{typeof e.decode=="function"&&await e.decode()}catch{}});return m.set(r,n),n},C=t=>{const r=u(t);return!r||l.has(r)?Promise.resolve():y(r).then(()=>{if(l.has(r))return;const a=o.get(r);if(!a||!a.complete||a.naturalWidth<=0||a.naturalHeight<=0)return;const e=document.createElement("canvas"),n=120;e.width=n,e.height=n,e.style.width=`${n}px`,e.style.height=`${n}px`,e.style.position="fixed",e.style.top="-9999px",e.style.left="-9999px";const c=e.getContext("2d");if(!c)return;const s=a.naturalWidth,f=a.naturalHeight,I=s/f,p=1;let P=0,b=0,w=s,x=f;I>p?(w=f*p,P=(s-w)/2):I<p&&(x=s/p,b=(f-x)/2),c.drawImage(a,P,b,w,x,0,0,n,n),document.body.appendChild(e),l.set(r,e)})};return{ensurePreviewImage:v,warmupPreviewImages:t=>{let r=0;t.forEach(a=>{if(r>=T)return;const e=u(a);if(!e||g.has(e))return;g.add(e),r+=1;const n=()=>{y(e),D&&!h&&C(e)};"requestIdleCallback"in window?window.requestIdleCallback(n,{timeout:1200}):setTimeout(n,0)})},startImageDrag:({evt:t,dragUrl:r,previewUrl:a})=>{const e=u(r);if(!e||!t.dataTransfer)return!1;t.dataTransfer.clearData(),t.dataTransfer.setData("text/plain",e),t.dataTransfer.setData("text/uri-list",e),t.dataTransfer.setData("text/html",`<img src="${e}" alt="" />`);const n=u(a??e),c=h?null:l.get(n);c?t.dataTransfer.setDragImage(c,60,60):h||C(n);const s=v(n);return!c&&s&&s.complete&&s.naturalWidth>0?t.dataTransfer.setDragImage(s,60,60):c||t.dataTransfer.setDragImage(i,0,0),!0},dispose:()=>{o.forEach(t=>{t.parentNode&&t.parentNode.removeChild(t)}),l.forEach(t=>{t.parentNode&&t.parentNode.removeChild(t)}),o.clear(),m.clear(),l.clear(),g.clear(),i.parentNode&&i.parentNode.removeChild(i)}}}export{L as c};
|
|
//# sourceMappingURL=imageDragTransfer-DvFDfKg6.js.map
|
|
|