import{j as e,bh as a,ao as t,r,ab as o}from"./index.BFRcEQe4.js";import{I as n}from"./other-vendor.j8sIU4n3.js";import{u as s,a8 as l,az as i,a0 as u,a2 as c,a4 as d,l as m,V as v,S as h,g,R as w,j as p,an as f}from"./vue-vendor.CbU-cCHr.js";const y=async(e,a)=>{try{const o=e.startsWith("http://")||e.startsWith("https://");let s=e;if(o)try{s=await(t=e,new Promise((e,a)=>{const r=new Image;r.crossOrigin="anonymous",r.onload=()=>{try{const t=document.createElement("canvas");t.width=r.width,t.height=r.height;const o=t.getContext("2d");if(!o)return void a(new Error("æ— æ³•èŽ·å– canvas 上下文"));o.drawImage(r,0,0);const n=t.toDataURL("image/png");e(n)}catch(t){a(t)}},r.onerror=()=>{a(new Error("å›¾ç‰‡åŠ è½½å¤±è´¥"))},r.src=t.includes("?")?`${t}&t=${Date.now()}`:`${t}?t=${Date.now()}`}))}catch(r){const a=await(async e=>{try{const a=await fetch(e,{mode:"cors"});return a.ok,await a.blob()}catch(r){throw r}})(e);s=await(e=>new Promise((a,t)=>{const r=new FileReader;r.onloadend=()=>{"string"==typeof r.result&&a(r.result)},r.onerror=t,r.readAsDataURL(e)}))(a)}const l=document.createElement("img");l.style.position="absolute",l.style.left="-9999px",l.style.top="-9999px",document.body.appendChild(l),await new Promise((e,a)=>{l.onload=()=>e(),l.onerror=()=>a(new Error),l.src=s});const i=new n({contentType:"image",image:a.watermarkImage,imageWidth:a.imageWidth||200,width:l.width,height:l.height,dom:l,globalAlpha:1,rotate:a.rotate||0,translatePlacement:"middle"});await i.create();const u=l.src;return document.body.removeChild(l),u}catch(r){throw r}var t},b=["src","alt"],k=r(s({__name:"index",props:{id:{},src:{default:""},alt:{default:""},width:{default:"100%"},height:{default:"100%"},fit:{default:"cover"},imageClass:{default:""},lazy:{type:Boolean,default:!1},watermark:{type:Boolean,default:!1},watermarkConfig:{},imageType:{default:e.ALBUM},useThumbnail:{type:Boolean,default:!0},raw:{type:Boolean,default:!1}},emits:["load","error","watermarkSuccess","watermarkError"],setup(e,{emit:r}){const o=e,n=r,s=a(),p=g(()=>s.appConfig.defaultPhoto),f=g(()=>s.appConfig.watermarkIconSrc),k=g(()=>({image:f.value,imageWidth:566,rotate:0,placement:"middle"})),E=l(null),C=l(p.value),x=l(!0),I=l(!1),W=l(!1);let j=null;const z=l(""),_=g(()=>{const e={};return o.width&&(e.width="number"==typeof o.width?`${o.width}px`:o.width),o.height&&(e.height="number"==typeof o.height?`${o.height}px`:o.height),o.fit&&(e.objectFit=o.fit),e}),M=e=>{if(!e||!o.useThumbnail)return e;const a=(()=>{if(E.value)return E.value.clientWidth||void 0})();return t(e,o.imageType,a,o.raw)},B=async()=>{if(!o.src)return C.value=p.value,void(x.value=!1);if(W.value)return;W.value=!0,x.value=!0,I.value=!1;const e=M(o.src),a=new Image;a.onload=async()=>{try{if(o.watermark&&e){const a={...k.value,...o.watermarkConfig||{}},t=await y(e,{watermarkImage:a.image,imageWidth:a.imageWidth,rotate:a.rotate,translatePlacement:a.placement});C.value=t,n("watermarkSuccess",{id:o.id,src:t})}else C.value=e||p.value;x.value=!1,I.value=!1,w(()=>{n("load",new Event("load"))})}catch(a){C.value=e||p.value,x.value=!1,I.value=!1,n("watermarkError",a),w(()=>{n("load",new Event("load"))})}},a.onerror=()=>{C.value=p.value,x.value=!1,I.value=!0,w(()=>{n("error",new Event("error"))})},a.src=e},P=e=>{C.value=p.value,I.value=!0,n("error",e)};return i(()=>o.src,()=>{W.value=!1,o.lazy?E.value&&j&&j.observe(E.value):B()}),u(()=>{z.value=Math.random().toString(36).substring(2,15),o.lazy?E.value&&(j=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&!W.value&&(B(),j&&E.value&&j.unobserve(E.value))})},{rootMargin:"100px",threshold:.01}),j.observe(E.value)):o.src&&B()}),c(()=>{j&&(j.disconnect(),j=null)}),(a,t)=>(d(),m("img",{ref_key:"imageRef",ref:E,src:C.value,alt:e.alt,class:h(["common-image",e.imageClass,z.value]),style:v(_.value),onError:P},null,46,b))}}),[["__scopeId","data-v-b0df6fb6"]]),E=s({__name:"index",props:{src:{},bodyMedias:{},alt:{},lazy:{type:Boolean,default:!0}},emits:["load","error"],setup(a,{emit:t}){const r=a,n=t,s=e=>{n("load",e)},l=e=>{n("error",e)},i=g(()=>r.src?r.src:r.bodyMedias&&r.bodyMedias.length>0?o(r.bodyMedias[0]):"");return(t,r)=>{const o=k;return d(),p(o,{src:f(i),lazy:a.lazy,"image-type":f(e).COVER,onLoad:s,onError:l},null,8,["src","lazy","image-type"])}}});function C(e){return"image"===function(e){if(!e)return"unknown";const a=e.split("?")[0].split("#")[0].toLowerCase();return[".webp",".jpg",".jpeg",".png",".gif",".bmp",".svg",".ico"].some(e=>a.endsWith(e))?"image":[".mp4",".webm",".mov",".avi",".m4v",".ogg",".flv",".mkv",".m3u8"].some(e=>a.endsWith(e))?"video":"unknown"}(e)}export{k as _,E as a,C as i};