@lazycatcloud/vue-media-preview 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/video/VideoControls.vue.d.ts +3 -0
- package/dist/components/video/VideoQualityMenu.vue.d.ts +17 -0
- package/dist/core/video/captureVideoFrame.d.ts +3 -1
- package/dist/core/video/frameTransition.d.ts +8 -0
- package/dist/core/video/source/types.d.ts +19 -1
- package/dist/index.d.ts +1 -0
- package/dist/vue-media-preview.cjs +2 -2
- package/dist/vue-media-preview.css +1 -1
- package/dist/vue-media-preview.js +1227 -1056
- package/docs/vue-media-preview.md +11 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Bt=Object.defineProperty;var Lt=(n,a,o)=>a in n?Bt(n,a,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[a]=o;var De=(n,a,o)=>Lt(n,typeof a!="symbol"?a+"":a,o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");var Y=typeof document<"u"?document.currentScript:null;function Te(n,a){return Math.hypot(n.x-a.x,n.y-a.y)}function je(n,a){return{x:(n.x+a.x)/2,y:(n.y+a.y)/2}}function it(n,a,o){return Math.hypot(n,a)<9?"pending":o>1.01?"pan":Math.abs(n)>Math.abs(a)*1.1?"page":a>0&&Math.abs(a)>Math.abs(n)*1.1?"dismiss":"pending"}function rt(n,a,o){return n>Math.min(o.width,o.height)*.14||n>16&&a>.35}function ot(){let n={x:0,y:0,time:0},a={x:0,y:0};return{reset(o,t){n={...o,time:t},a={x:0,y:0}},move(o,t){const r=Math.max(8,t-n.time);a={x:(o.x-n.x)/r,y:(o.y-n.y)/r},n={...o,time:t}},read(o){return o-n.time<100?a:{x:0,y:0}}}}function Tt(){const n=new Map;let a=!1;function o(){n.clear(),a=!1}function t(){const i=!a&&n.size===1?{kind:"pointer",...n.values().next().value}:{kind:"empty"};return o(),i}function r(i){if(!n.has(i.pointerId))return;const l=n.get(i.pointerId);l.latest=i,l.velocity.move({x:i.clientX,y:i.clientY},i.timeStamp)}return{clear:o,take:t,move:r,start(i){if(i.pointerType==="mouse"&&i.button!==0)return;const l=i.target;if(l.closest("button, input, a, select"))return;const s=ot();s.reset({x:i.clientX,y:i.clientY},i.timeStamp),n.set(i.pointerId,{down:i,latest:i,target:l,velocity:s}),a||(a=n.size>1)},finish(i,l){if(!n.has(i.pointerId))return!1;if(a)return n.delete(i.pointerId),n.size===0&&o(),!1;const s=t();if(s.kind==="empty")return!1;const u=i.clientX-s.down.clientX,g=i.clientY-s.down.clientY,d=s.velocity.read(i.timeStamp).y;return it(u,g,1)==="dismiss"&&rt(g,d,l)}}}function Se(n){return n instanceof Error?n:new Error(String(n))}function Ft(n){let a=0,o=()=>{};function t(){a+=1;const i=o;o=()=>{},i()}function r(){t(),n.reset()}return{clear:r,dispose:t,start(i,l,s){r();const u=a;o=s(i,l,g=>{u===a&&n.error(g)},g=>{u===a&&n.duration(g)})}}}const Ve=(n,a)=>(n.src=a.videoSrc||a.src,()=>{n.removeAttribute("src"),n.load()});function lt(n,a,o,t,r){const i=e.ref(0),l=Ft(r);let s=()=>{};return e.onMounted(()=>{s=e.watch(()=>[a().id,a().src,a().videoSrc,o(),t(),i.value],()=>{o()?l.start(n(),a(),t()):l.clear()},{immediate:!0,flush:"post"})}),e.onBeforeUnmount(()=>{s(),l.dispose()}),()=>i.value++}function Z(n,a,o){return Math.min(Math.max(n,a),o)}function Ze(n,a=2){return Number(n.toFixed(a))}function Vt(n,a){return n.width<=0||n.height<=0||a.width<=0||a.height<=0?1:Math.min(a.width/n.width,a.height/n.height)}function Ke(n){const a=(n%360+360)%360;return a===90||a===180||a===270?a:0}function $t(n,a){return a===90||a===270?{width:n.height,height:n.width}:n}function zt(n,a,o){return`translate3d(${Ze(n)}px, ${Ze(a)}px, 0) scale3d(${o}, ${o}, 1)`}function It(n){return 1-(1-n)**3}const Dt=16;function Nt(n,a){const o=n<1?1:a;if(n>=1&&n<=a)return n;const t=Math.abs(n-o),r=o*.25;return o+Math.sign(n-o)*(r*t)/(r+t)}function qt(n,a){const o=n<1?1:a;if(n>=1&&n<=a)return n;const t=Math.abs(n-o),r=o*.25;return o+Math.sign(n-o)*(r*t)/Math.max(Number.EPSILON,r-t)}function Ut(n,a){return n.deltaMode===1?2**(-n.deltaY*.05):n.deltaMode===2?2**-n.deltaY:a||Math.abs(n.deltaY)>=40?2**(-n.deltaY*.002):Math.exp(-n.deltaY*.008)}function Ot(n,a,o=650){let t={kind:"idle"};function r(){const l=t;t={kind:"idle"},l.kind==="pending"&&clearTimeout(l.timer),l.kind==="active"&&a()}function i(){r(),t={kind:"pending",timer:setTimeout(()=>{t={kind:"active"},n()},o)}}return{arm:i,cancel:r}}function At(n,a,o){const t=Z(n,-a,a);return{offsetX:t,pageOffset:o?n-t:0}}function st(n={}){const a={motionActive:()=>!1,onTap:()=>{},onDoubleTap:()=>{},onScale:f=>{},onSwipeDownProgress:f=>{},onSwipeDownClose:()=>{},onSwipeLeft:()=>{},onSwipeRight:()=>{},onPageDrag:f=>{},onPageRelease:(f,F)=>{Math.abs(f)<60||(f<0?a.onSwipeLeft():a.onSwipeRight())},interactive:()=>!0,zoomable:()=>!0,doubleTapZoom:()=>2.5,zoomLimit:()=>Dt,holdable:()=>!1,onHoldStart:()=>{},onHoldEnd:()=>{},...n},o=e.ref(),t=e.ref(),r=e.shallowRef(),i=e.ref({width:1,height:1}),l=e.ref({width:1,height:1}),s=e.reactive({level:1,offsetX:0,offsetY:0,rotation:0,zooming:!1,draggingDown:!1,downOffsetX:0,downOffsetY:0,downScale:1}),u=e.computed(()=>$t(l.value,s.rotation)),g=e.computed(()=>Vt(u.value,i.value)),d=e.computed(()=>g.value*s.level),M=e.computed(()=>({width:u.value.width*d.value,height:u.value.height*d.value})),B=e.computed(()=>({transform:zt(s.downOffsetX,s.downOffsetY,s.downScale)})),E=new Set,R=e.ref(!1),w=e.ref(!1),p=e.ref(!1),T=e.computed(()=>R.value||w.value||p.value||a.motionActive());let z,h=0,k=0,m=setTimeout(()=>{},0),y=-1e3,S={x:0,y:0},v=!1,C="idle",L=!0,P=!1,$=0;const I=new Map;let _={x:0,y:0};const W=ot();let de=0,G={left:0,top:0},re=1,ee=1,ge={x:0,y:0},K=le();const V=Ot(()=>{C="hold",clearTimeout(m),y=-1e3,a.onHoldStart()},()=>a.onHoldEnd()),D=new ResizeObserver(f=>{for(const F of f)ae(F.contentRect)}),N=new Set,xe=f=>{(f.key==="Control"||f.key==="Meta")&&N.add(f.key)},$e=f=>N.delete(f.key),Q=()=>{V.cancel(),N.clear()},oe=()=>{document.hidden&&V.cancel()};e.onMounted(()=>{D.observe(o.value),ae(o.value.getBoundingClientRect()),window.addEventListener("keydown",xe),window.addEventListener("keyup",$e),window.addEventListener("blur",Q),document.addEventListener("visibilitychange",oe)}),e.onBeforeUnmount(()=>{v=!0,V.cancel(),window.removeEventListener("keydown",xe),window.removeEventListener("keyup",$e),window.removeEventListener("blur",Q),document.removeEventListener("visibilitychange",oe),D.disconnect(),cancelAnimationFrame(h),cancelAnimationFrame(k),clearTimeout(m),clearTimeout(z)});function ae(f){i.value={width:f.width,height:f.height},Object.assign(s,X(s.offsetX,s.offsetY,s.level)),fe()}function fe(){v||h||(h=requestAnimationFrame(()=>{h=0,E.forEach(f=>f())}))}function le(){return{level:s.level,offsetX:s.offsetX,offsetY:s.offsetY}}function X(f,F,q){const H=Math.max(0,(u.value.width*g.value*q-i.value.width)/2),A=Math.max(0,(u.value.height*g.value*q-i.value.height)/2);return{offsetX:Z(f,-H,H),offsetY:Z(F,-A,A)}}function me(f){Object.assign(s,f),a.onScale(s.level),fe()}function te(f,F=250){cancelAnimationFrame(k),R.value=!0;const q=le(),H=performance.now(),A=matchMedia("(prefers-reduced-motion: reduce)").matches?0:F,j=ue=>{const pe=A===0?1:Z((ue-H)/A,0,1),we=It(pe);me({level:q.level+(f.level-q.level)*we,offsetX:q.offsetX+(f.offsetX-q.offsetX)*we,offsetY:q.offsetY+(f.offsetY-q.offsetY)*we}),pe<1?k=requestAnimationFrame(j):R.value=!1};k=requestAnimationFrame(j)}function ie(){return{x:i.value.width/2,y:i.value.height/2}}function se(f,F=ie(),q=!1){if(!a.zoomable())return;cancelAnimationFrame(k),R.value=!1;const H=Z(f,1,a.zoomLimit()),A=H/s.level,j=ie(),ue=X(F.x-j.x-(F.x-j.x-s.offsetX)*A,F.y-j.y-(F.y-j.y-s.offsetY)*A,H),pe={level:H,...ue};q?te(pe):me(pe)}function he(){s.draggingDown=!1,s.downOffsetX=0,s.downOffsetY=0,s.downScale=1,a.onSwipeDownProgress(0)}function ce(f=!1){f&&(cancelAnimationFrame(k),R.value=!1),V.cancel(),I.clear(),w.value=!1,p.value=!1,clearTimeout(z),C="idle",$=0,s.zooming=!1,f||(he(),a.onPageDrag(0)),clearTimeout(m),y=-1e3}function be(f=0){cancelAnimationFrame(k),R.value=!1,ce();const F={level:1,offsetX:0,offsetY:0};f>0&&(s.level!==1||s.offsetX!==0||s.offsetY!==0)?te(F,f):me(F)}function ve(f,F=G){return{x:f.clientX-F.left,y:f.clientY-F.top}}function ke(){V.cancel(),L=!1,P=!1,$=0;const[f,F]=[...I.values()];re=qt(s.level,a.zoomLimit()),ee=Math.max(1,Te(f,F)),ge=je(f,F),K=le(),C="pinch",s.zooming=!0,he(),a.onPageDrag(0),clearTimeout(m),y=-1e3}function Ee(f,F=o.value.getBoundingClientRect(),q=f.target){if(!a.interactive()||f.pointerType==="mouse"&&f.button!==0||q.closest("button, input, a, select")||q instanceof HTMLVideoElement&&q.controls&&f.clientY>q.getBoundingClientRect().bottom-48)return!1;if(cancelAnimationFrame(k),R.value=!1,w.value=!0,I.size===0&&(G=F),I.set(f.pointerId,ve(f)),o.value.setPointerCapture(f.pointerId),I.size>=2)return ke(),!0;_=ve(f),de=performance.now(),W.reset(_,f.timeStamp),K=le(),C="pending",L=!0,P=!1,$=0;const H=M.value.width/2,A=M.value.height/2,j=ie();return a.holdable()&&Math.abs(_.x-j.x-s.offsetX)<=H&&Math.abs(_.y-j.y-s.offsetY)<=A&&(clearTimeout(m),V.arm()),!0}function Ue(f){if(!I.has(f.pointerId))return;const F=ve(f);if(I.set(f.pointerId,F),C==="pinch"&&I.size>=2){if(!a.zoomable())return;const[A,j]=[...I.values()],ue=ie(),pe=je(A,j);re*=Math.max(1,Te(A,j))/ee;const we=Nt(re,a.zoomLimit()),ze=we/K.level;me({level:we,...X(pe.x-ue.x-(ge.x-ue.x-K.offsetX)*ze,pe.y-ue.y-(ge.y-ue.y-K.offsetY)*ze,we)}),K=le(),ee=Math.max(1,Te(A,j)),ge=pe,f.preventDefault();return}if(C==="idle")return;const q=F.x-_.x,H=F.y-_.y;if(C==="hold"){if(f.preventDefault(),Math.hypot(q,H)<9)return;V.cancel(),C="pending"}if(Math.hypot(q,H)>=9&&V.cancel(),W.move(F,f.timeStamp),C==="pending"&&(C=it(q,H,s.level),P=C==="pan"&&L&&Math.abs(q)>Math.abs(H)*1.1),C!=="pending")if(clearTimeout(m),y=-1e3,f.preventDefault(),C==="pan"){const A=Math.max(0,(M.value.width-i.value.width)/2),j=At(K.offsetX+q,A,P);me({level:s.level,...X(j.offsetX,K.offsetY+H,s.level)}),j.pageOffset!==$&&($=j.pageOffset,a.onPageDrag($))}else C==="page"?a.onPageDrag(q):C==="dismiss"&&(s.draggingDown=!0,s.downOffsetX=q*.65,s.downOffsetY=Math.max(0,H),s.downScale=Z(1-Math.max(0,H)/i.value.height*.6,.65,1),a.onSwipeDownProgress(Z(H/(i.value.height*.55),0,.85)))}function Oe(f){if(!I.has(f.pointerId))return;if(V.cancel(),I.delete(f.pointerId),w.value=I.size>0,C==="pinch"){I.size>0?(_=[...I.values()][0],K=le(),C="pan"):(C="idle",s.zooming=!1,se(Math.max(1,s.level),ie(),!0));return}if(I.size>0)return;const F=ve(f),q=F.x-_.x,H=F.y-_.y,A=W.read(f.timeStamp);C==="page"||C==="pan"&&$!==0?a.onPageRelease(C==="page"?q:$,A.x):C==="dismiss"?rt(H,A.y,i.value)?a.onSwipeDownClose():he():C==="pending"&&performance.now()-de<300&&Te(_,F)<9?_e(F):(s.level<1||s.level>a.zoomLimit())&&se(s.level,ie(),!0),s.zooming=!1,C="idle"}function Ae(f){if(!I.has(f.pointerId))return;const F=C==="page"||C==="pan"&&$!==0;ce(),F&&a.onPageRelease(0,0),(s.level<1||s.level>a.zoomLimit())&&se(s.level,ie(),!0)}function _e(f){const F=performance.now();F-y<280&&Te(f,S)<36?(clearTimeout(m),y=-1e3,a.onDoubleTap(),se(s.level>1.01?1:a.doubleTapZoom(),f,!0)):(y=F,S=f,m=setTimeout(a.onTap,280))}function O(f){if(a.interactive()){if(V.cancel(),p.value=!0,clearTimeout(z),z=setTimeout(()=>{p.value=!1},120),f.ctrlKey||f.metaKey)f.preventDefault(),se(s.level*Ut(f,N.size>0),ve(f,o.value.getBoundingClientRect()));else if(s.level>1){f.preventDefault();const F=f.deltaMode===1?16:1;me({level:s.level,...X(s.offsetX-f.deltaX*F,s.offsetY-f.deltaY*F,s.level)})}}}const Pe={state:s,motionActive:T,containerRef:o,canvasRef:t,mediaRef:r,viewportSize:i,mediaSize:l,visualMediaSize:u,displaySize:M,displayScale:d,downDragStyle:B,requestRender:fe,renderNow:()=>E.forEach(f=>f()),zoomTo:se,resetTransform:be,cancelGesture:ce,setMediaElement(f){r.value=f,f instanceof HTMLVideoElement&&fe()},setMediaSize(f){l.value=f,fe()},clearMedia(){r.value=void 0},registerRenderHandler(f){return E.add(f),()=>E.delete(f)},setRotation(f,F=!0){s.rotation=Ke(f),F&&be(),fe()},rotateBy(f=90){Pe.setRotation(Ke(s.rotation+f))}};return{core:Pe,onPointerDown:Ee,onPointerMove:Ue,onPointerUp:Oe,onPointerCancel:Ae,onWheel:O}}function _t(n){const a=n.rotation*Math.PI/180,o=Math.round(Math.cos(a)),t=Math.round(Math.sin(a)),r=n.size.width/2-o*n.offsetX-t*n.offsetY,i=n.size.height/2+t*n.offsetX-o*n.offsetY,l=(Math.abs(o)*n.viewport.width+Math.abs(t)*n.viewport.height)/2,s=(Math.abs(t)*n.viewport.width+Math.abs(o)*n.viewport.height)/2,u=Z(r-l,0,n.size.width),g=Z(i-s,0,n.size.height);return{x:u,y:g,width:Z(r+l,0,n.size.width)-u,height:Z(i+s,0,n.size.height)-g}}function Yt(n,a,o,t){const r=_t(o);if(r.width<=0||r.height<=0)return;n.imageSmoothingEnabled=!0,n.imageSmoothingQuality=t?"low":"high",n.translate(o.viewport.width/2+o.offsetX,o.viewport.height/2+o.offsetY),n.rotate(o.rotation*Math.PI/180);const{width:i,height:l}=o.size,s="naturalWidth"in a?a.naturalWidth:a.width,u="naturalHeight"in a?a.naturalHeight:a.height;if(r.width===i&&r.height===l){n.drawImage(a,-i/2,-l/2,i,l);return}n.drawImage(a,r.x/i*s,r.y/l*u,r.width/i*s,r.height/l*u,r.x-i/2,r.y-l/2,r.width,r.height)}const Ht={class:"mp-dom-renderer mp-gif-renderer"},Xt=["src","alt"],Wt=e.defineComponent({__name:"AnimatedImageLayer",props:{core:{},src:{},title:{}},setup(n){const a=n,o=e.computed(()=>({transform:`translate(-50%, -50%) translate3d(${a.core.state.offsetX}px, ${a.core.state.offsetY}px, 0)`})),t=e.computed(()=>({width:`${a.core.mediaSize.value.width*a.core.displayScale.value}px`,height:`${a.core.mediaSize.value.height*a.core.displayScale.value}px`,transform:`rotate(${a.core.state.rotation}deg)`,pointerEvents:"none"}));return(r,i)=>(e.openBlock(),e.createElementBlock("div",Ht,[e.createElementVNode("div",{class:"mp-dom-renderer__frame",style:e.normalizeStyle(o.value)},[e.createElementVNode("img",{src:r.src,alt:r.title,draggable:!1,class:"mp-dom-renderer__node",style:e.normalizeStyle(t.value)},null,12,Xt)],4)]))}});function jt(){const n=new Set;let a=[];const o=new Map;let t={kind:"empty"};function r(){for(const i of n)o.has(i)||a.includes(i)||t.kind==="owned"&&t.lease===i||(i.release(),n.delete(i))}return{replace(i){a=i,i.forEach(l=>n.add(l)),r()},display(i){t={kind:"owned",lease:i},r()},retainDisplay(){if(t.kind==="empty")return()=>{};const i=t.lease;o.set(i,o.has(i)?o.get(i)+1:1);let l=!1;return()=>{if(l)return;l=!0;const s=o.get(i)-1;s===0?o.delete(i):o.set(i,s),r()}},clearDisplay(){t={kind:"empty"},r()},dispose(){a=[],t={kind:"empty"},r()}}}const ne={maxDecodedPixels:64e6,maxCanvasPixels:6e6,maxDevicePixelRatio:2.5,maxOriginalBytes:32*1024*1024,maxPreviewBytes:12*1024*1024,cacheBytes:96*1024*1024,cacheEntries:24,concurrency:3};class Fe extends Error{constructor(a){super(a),this.name="ImageLimitError"}}function ct(n,a){if(n.naturalWidth*n.naturalHeight>a)throw new Fe("图片像素超过解码保护限制,请提供较小的适屏资源")}const Ye="原图超过资源限制";function Zt(n){return n instanceof Fe?{status:"blocked",reason:Ye}:{status:"error",reason:n instanceof Error?n.message:"原图加载失败,可重试"}}const ut=`(function(){"use strict";self.onmessage=async({data:a})=>{try{const t=await createImageBitmap(a.blob);let e=t;try{const s=Math.min(1,Math.sqrt(a.maxMotionPixels/(t.width*t.height)));s<1&&(e=await createImageBitmap(t,{resizeWidth:Math.max(1,Math.floor(t.width*s)),resizeHeight:Math.max(1,Math.floor(t.height*s)),resizeQuality:"high"}));const r=e===t?[t]:[t,e];self.postMessage({status:"ready",full:t,motion:e},{transfer:r})}catch(s){throw e!==t&&e.close(),t.close(),s}}catch(t){self.postMessage({status:"error",message:t instanceof Error?t.message:"图片位图准备失败"})}}})();
|
|
2
|
-
`,Ge=typeof self<"u"&&self.Blob&&new Blob([ut],{type:"text/javascript;charset=utf-8"});function Kt(n){let a;try{if(a=Ge&&(self.URL||self.webkitURL).createObjectURL(Ge),!a)throw"";const o=new Worker(a,{name:n==null?void 0:n.name});return o.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(a)}),o}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(ut),{name:n==null?void 0:n.name})}finally{a&&(self.URL||self.webkitURL).revokeObjectURL(a)}}function He({full:n,motion:a}){a!==n&&a.close(),n.close()}function Gt(n,a,o){return o.throwIfAborted(),new Promise((t,r)=>{const i=new Kt,l=()=>{o.removeEventListener("abort",s),i.terminate()},s=()=>{l(),r(o.reason)};i.onmessage=({data:u})=>{if(l(),u.status==="error"){r(new Error(u.message));return}if(o.aborted){He(u),r(o.reason);return}t(u)},i.onerror=u=>{l(),r(new Error(u.message||"图片位图准备失败"))},o.addEventListener("abort",s,{once:!0});try{i.postMessage({blob:n,maxMotionPixels:a})}catch(u){l(),r(u)}})}function Qt(n){return n[0]===71&&n[1]===73&&n[2]===70&&n[3]===56&&(n[4]===55||n[4]===57)&&n[5]===97}async function Jt(n,a,o){await n.decode(),o.throwIfAborted();const t=URL.createObjectURL(a);return{image:n,source:n,motionSource:n,animation:{kind:"gif",url:t},bytes:n.naturalWidth*n.naturalHeight*4+a.size,dispose:()=>URL.revokeObjectURL(t)}}function dt(n){return{image:n,source:n,motionSource:n,bytes:n.naturalWidth*n.naturalHeight*4,dispose:()=>{}}}async function en(n,a,o){const t=new Uint8Array(await a.slice(0,6).arrayBuffer());if(o.throwIfAborted(),Qt(t))return Jt(n,a,o);if(!(t[0]===255&&t[1]===216&&t[2]===255))return await n.decode(),o.throwIfAborted(),dt(n);const r=await Gt(a,ne.maxCanvasPixels,o);try{o.throwIfAborted();const{full:i,motion:l}=r,s=l===i?0:l.width*l.height*4;return{image:n,source:i,motionSource:l,bytes:(n.naturalWidth*n.naturalHeight+i.width*i.height)*4+s,dispose:()=>He(r)}}catch(i){throw He(r),i}}const tn=async(n,a)=>{const o=await fetch(n,{signal:a.signal,credentials:"same-origin"});if(!o.ok)throw new Error(`图片加载失败:HTTP ${o.status}`);if(Number(o.headers.get("content-length"))>a.maxBytes)throw await o.body.cancel(),new Fe("资源超过下载保护限制,请使用适屏图或下载原文件");const r=o.body.getReader(),i=[];let l=0;try{for(;;){const d=await r.read();if(d.done)break;if(l+=d.value.byteLength,l>a.maxBytes)throw new Fe("资源超过下载保护限制,请使用适屏图或下载原文件");i.push(new Uint8Array(d.value))}}catch(d){throw await r.cancel(),d}finally{r.releaseLock()}a.signal.throwIfAborted();const s=new Blob(i,{type:o.headers.get("content-type")}),u=URL.createObjectURL(s),g=new Image;g.decoding="async";try{return await new Promise((d,M)=>{const B=()=>{g.removeAttribute("src"),M(new DOMException("请求已取消","AbortError"))};g.onload=()=>{a.signal.removeEventListener("abort",B),d()},g.onerror=()=>{a.signal.removeEventListener("abort",B),M(new Error("图片解码失败或格式不受支持"))},a.signal.addEventListener("abort",B,{once:!0}),g.src=u}),a.signal.throwIfAborted(),ct(g,a.maxPixels),await en(g,s,a.signal)}finally{URL.revokeObjectURL(u)}};class ft{constructor(a=ne.cacheBytes,o=ne.concurrency,t=tn){De(this,"entries",new Map);De(this,"active",0);De(this,"cancelled",0);this.budget=a,this.concurrency=o,this.loader=t}get stats(){return{active:this.active,queued:[...this.entries.values()].filter(a=>a.state==="queued").length,entries:this.entries.size,bytes:[...this.entries.values()].reduce((a,o)=>a+o.bytes,0),cancelled:this.cancelled}}acquire(a,o={}){const t={priority:0,maxBytes:ne.maxOriginalBytes,maxPixels:ne.maxDecodedPixels,...o};if(this.entries.has(a)&&["error","aborted"].includes(this.entries.get(a).state)&&this.entries.delete(a),!this.entries.has(a)){let u,g;const d=new Promise((M,B)=>{u=M,g=B});d.catch(()=>{}),this.entries.set(a,{promise:d,resolve:u,reject:g,controller:new AbortController,users:0,bytes:0,dispose:()=>{},priority:t.priority,maxBytes:t.maxBytes,maxPixels:t.maxPixels,state:"queued"})}const r=this.entries.get(a);r.users++,r.priority=Math.min(r.priority,t.priority),r.maxBytes=Math.max(r.maxBytes,t.maxBytes),r.maxPixels=Math.max(r.maxPixels,t.maxPixels),this.entries.delete(a),this.entries.set(a,r),this.pump();let i=!1;const l=r.promise.then(u=>(ct(u.image,t.maxPixels),u)),s=l.then(u=>u.image);return l.catch(()=>{}),s.catch(()=>{}),{ready:s,resource:l,release:()=>{i||(i=!0,r.users--,r.users===0&&(r.state==="queued"||r.state==="loading")&&(r.state="aborted",this.cancelled++,r.controller.abort(),r.reject(new DOMException("请求已取消","AbortError")),this.entries.get(a)===r&&this.entries.delete(a)),r.users===0&&r.state==="error"&&this.entries.get(a)===r&&this.entries.delete(a),this.trim(),this.pump())}}}pump(){for(;this.active<this.concurrency;){const a=[...this.entries].filter(([,r])=>r.state==="queued"&&r.users>0).sort((r,i)=>r[1].priority-i[1].priority);if(a.length===0)return;const[o,t]=a[0];t.state="loading",this.active++,this.loader(o,{signal:t.controller.signal,get maxBytes(){return t.maxBytes},get maxPixels(){return t.maxPixels}}).then(r=>{if(t.state==="aborted"){r.dispose();return}t.bytes=r.bytes,t.dispose=r.dispose,t.state="ready",t.resolve(r)}).catch(r=>{t.state!=="aborted"&&(t.state="error",t.reject(Se(r)))}).finally(()=>{this.active--,this.trim(),this.pump()})}}trim(){let a=this.stats.bytes;for(const[o,t]of this.entries)if(!(t.users>0||t.state==="loading"||t.state==="queued")){if(a<=this.budget&&this.entries.size<=ne.cacheEntries)break;a-=t.bytes,t.dispose(),this.entries.delete(o)}}}const mt=new ft,ye={kind:"empty"};function nn(n){return n.kind==="element"&&n.element instanceof HTMLImageElement&&n.element.complete&&n.element.naturalWidth>0?{kind:"image",image:n.element}:ye}function Qe(){const n=document.createElement("canvas");n.width=n.height=1;const a=n.getContext("2d");return a.fillStyle="#f3f4f5",a.fillRect(0,0,1,1),n}const pt=["thumbnail","screen","full"],Ce={maxOriginalPixels:ne.maxDecodedPixels,maxOriginalBytes:ne.maxOriginalBytes,maxPreviewBytes:ne.maxPreviewBytes},Re=(n,a)=>a==="full"?n.src:a==="screen"?n.previewSrc:n.thumbnail;function an(n,a){return n.width*n.height<=a.maxOriginalPixels}function rn(n,a){const o=Math.min(a.width/n.width,a.height/n.height);return Math.min(8,Math.max(2,Math.min(1/o,Math.max(a.width/(n.width*o),a.height/(n.height*o)))))}function on(n,a,o,t,r,i=!0){const l=an(n,o),s={sources:[],originalStatus:i&&a==="full"?l?"loading":"blocked":"idle",originalReason:""};s.originalStatus==="blocked"&&(s.originalReason=Ye);for(const[u,g]of pt.entries()){if(g==="screen"&&a==="thumbnail"||g==="full"&&(!i||a!=="full"||!l))continue;const d=t(n,g,r);if(i&&!l&&d===n.src){s.originalStatus="blocked",s.originalReason=Ye;continue}s.sources.push({url:d,quality:g,rank:u})}return s}const ln=["aria-label"],sn={key:1,class:"mp-resource-state",role:"status","aria-label":"加载中"},cn=e.createElementVNode("span",{class:"mp-spinner","aria-hidden":"true"},null,-1),un=[cn],dn={key:2,class:"mp-resource-state",role:"alert"},fn=e.createElementVNode("span",null,"图片暂时无法加载",-1),mn={key:3,class:"mp-quality-notice"},qe=e.defineComponent({inheritAttrs:!1,__name:"ImageCanvasRenderer",props:{media:{},core:{},active:{type:Boolean,default:!0},quality:{default:"screen"},rendering:{type:Boolean,default:!0},requestVersion:{default:0},loadEnabled:{type:Boolean,default:!0},originalEnabled:{type:Boolean,default:!0},priority:{default:0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},initialImage:{default:()=>ye}},emits:["ready","error","originalState"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(),l=e.shallowRef({status:"empty"}),s=e.computed(()=>{const L={kind:"hidden"};if(!t.active||!t.rendering||!t.loadEnabled||l.value.status!=="ready")return L;const P=l.value.value;return"animation"in P?P.animation:L}),u=e.ref("loading"),g=e.ref(!1),d=e.ref("idle"),M=e.ref("");e.watch([d,M],()=>r("originalState",d.value,M.value));let B=!0,E=0,R=t.media.id;const w=jt();let p=()=>{},T,z=!1,h={kind:"empty"};function k(){if(t.core.motionActive.value&&t.loadEnabled&&R===t.media.id){z=!0;return}z=!1,S()}function m(L,P,$,I){l.value={status:"ready",value:L,rank:$},w.display(P),t.core.setMediaElement(L.image),u.value="ready",g.value=!1,I==="full"&&(d.value="ready"),t.core.requestRender(),r("ready",I)}e.watch(()=>t.core.motionActive.value,L=>{if(t.core.requestRender(),!L){if(h.kind==="ready"){const P=h;h={kind:"empty"},P.token===E&&m(P.value,P.lease,P.rank,P.quality)}z&&k()}}),e.onMounted(()=>{const L=i.value;T=L.getContext("2d"),t.core.canvasRef.value=L,p=t.core.registerRenderHandler(v),y(),e.nextTick(()=>{B&&k()})}),e.onBeforeUnmount(()=>{B=!1,E+=1,p(),w.dispose()}),e.watch([()=>t.media.id,()=>t.media.src,()=>t.media.thumbnail,()=>t.media.previewSrc,()=>t.quality,()=>t.loadEnabled,()=>t.priority,()=>t.resolveSource,()=>t.resourcePolicy,()=>t.originalEnabled,()=>t.requestVersion],()=>{k()}),e.watch(()=>t.initialImage,y),e.watch(()=>t.rendering,L=>{L&&t.core.requestRender()});function y(){t.initialImage.kind!=="image"||l.value.status==="ready"||(l.value={status:"ready",value:dt(t.initialImage.image),rank:0},t.core.setMediaElement(t.initialImage.image),u.value="ready",t.core.requestRender(),r("ready","thumbnail"))}async function S(){const L=++E;if(h={kind:"empty"},g.value=!1,R!==t.media.id&&(R=t.media.id,l.value={status:"empty"},w.clearDisplay(),u.value="loading",t.core.clearMedia(),y()),!t.loadEnabled){w.replace([]);return}const P=Math.ceil(t.core.viewportSize.value.width*Math.min(devicePixelRatio,ne.maxDevicePixelRatio)*t.core.state.level),$=on(t.media,t.quality,t.resourcePolicy,t.resolveSource,P,t.originalEnabled);M.value=$.originalReason,d.value=$.originalStatus;const{sources:I}=$,_=I.map(G=>mt.acquire(G.url,{priority:t.priority,maxPixels:t.resourcePolicy.maxOriginalPixels,maxBytes:G.quality==="full"?t.resourcePolicy.maxOriginalBytes:t.resourcePolicy.maxPreviewBytes}));w.replace(_),I.length===0&&l.value.status==="empty"&&(u.value="error",r("error",new Fe(M.value))),l.value.status==="ready"&&r("ready",pt[l.value.rank]);let W=l.value.status==="ready"?l.value.rank:-1,de=0;await Promise.all(I.map(async(G,re)=>{const ee=G.rank,ge=_[re];try{const K=await ge.resource;if(L!==E||ee<W)return;W=ee,t.core.motionActive.value&&l.value.status==="ready"?h={kind:"ready",token:L,value:K,lease:ge,rank:ee,quality:G.quality}:m(K,ge,ee,G.quality)}catch(K){if(L!==E||K instanceof Error&&K.name==="AbortError")return;if(G.quality==="full"){const V=Zt(K);d.value=V.status,M.value=V.reason}de+=1,ee>W&&l.value.status==="ready"&&(g.value=!0),de===I.length&&l.value.status==="empty"&&(u.value="error"),r("error",Se(K))}}))}function v(){if(!t.rendering||l.value.status!=="ready")return;const L=i.value,P=t.core.viewportSize.value;if(P.width<=0||P.height<=0)return;const $=Math.min(devicePixelRatio,ne.maxDevicePixelRatio,Math.sqrt(ne.maxCanvasPixels/(P.width*P.height))),I=Math.max(1,Math.round(P.width*$)),_=Math.max(1,Math.round(P.height*$));(L.width!==I||L.height!==_)&&(L.width=I,L.height=_),T.setTransform($,0,0,$,0,0),T.clearRect(0,0,P.width,P.height);const{width:W,height:de}=t.core.mediaSize.value,G=t.core.displayScale.value;Yt(T,t.core.motionActive.value?l.value.value.motionSource:l.value.value.source,{viewport:P,size:{width:W*G,height:de*G},offsetX:t.core.state.offsetX,offsetY:t.core.state.offsetY,rotation:t.core.state.rotation},t.core.motionActive.value)}function C(){if(l.value.status!=="ready")throw new Error("图片画面尚未就绪");return{image:l.value.value.motionSource,scale:1}}return a({captureFrame:C,retainFrame:()=>({...C(),release:w.retainDisplay()})}),(L,P)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:i,class:"mp-canvas-renderer","aria-label":L.media.title,style:e.normalizeStyle({visibility:s.value.kind==="gif"?"hidden":"inherit"})},null,12,ln),s.value.kind==="gif"?(e.openBlock(),e.createBlock(Wt,{key:0,core:L.core,src:s.value.url,title:L.media.title},null,8,["core","src","title"])):e.createCommentVNode("",!0),u.value==="loading"?(e.openBlock(),e.createElementBlock("div",sn,un)):e.createCommentVNode("",!0),u.value==="error"?(e.openBlock(),e.createElementBlock("div",dn,[fn,e.createElementVNode("button",{type:"button",onClick:e.withModifiers(S,["stop"])},"重新加载")])):e.createCommentVNode("",!0),g.value&&d.value!=="blocked"?(e.openBlock(),e.createElementBlock("span",mn," 高清图加载失败,当前显示预览图 ")):e.createCommentVNode("",!0)],64))}});function pn(n,a,o){const{buffered:t}=n;if(!Number.isFinite(a)||a<=0)return[];const r=[],i=Math.min(.25,a*.05);for(let l=0;l<t.length;l++){const s=Z(t.start(l),0,a);let u=Z(t.end(l),s,a);l===t.length-1&&(n.ended||o.kind==="retained"&&t.end(l)>=o.end||n.readyState>=4&&a-u<=i)&&(u=a),u>s&&r.push({start:s,end:u})}return r}function Me(n){const a=Math.max(0,Math.floor(Number.isFinite(n)?n:0));return`${String(Math.floor(a/60)).padStart(2,"0")}:${String(a%60).padStart(2,"0")}`}function Je(n){return Number.isFinite(n)&&n>0?n:0}function et(){return{duration:0,time:0,buffered:0,bufferedRanges:[]}}function gn(){let n=0,a={kind:"pending"};return{setDuration(o){n=Je(o)},complete(o){const{buffered:t}=o;a=t.length>0?{kind:"retained",end:t.end(t.length-1)}:{kind:"pending"}},reset(){n=0,a={kind:"pending"}},read(o,t){const r=n>0?n:Je(o.duration),i=pn(o,r,a);return{duration:r,time:t?r:Z(o.currentTime,0,r),buffered:i.length>0?i[i.length-1].end:0,bufferedRanges:i}}}}function gt(n,a){const o=gn(),t=e.reactive({playing:!1,buffering:!1,...et(),muted:!1,ended:!1,scrubbing:!1,scrubTime:0,status:"loading"});let r=!1,i=0,l=!1;const s=e.computed(()=>t.duration>0&&t.status!=="error"),u=e.computed(()=>t.scrubbing?t.scrubTime:t.time),g=e.computed(()=>s.value?u.value/t.duration*100:0),d=e.computed(()=>s.value?t.buffered/t.duration*100:0),M=e.computed(()=>t.bufferedRanges.map(({start:P,end:$})=>({left:P/t.duration*100,width:($-P)/t.duration*100})));function B(){Object.assign(t,o.read(n(),t.ended))}function E(P){l||(o.setDuration(P),B(),t.scrubTime=Z(t.scrubTime,0,t.duration))}function R(){o.reset(),r=!1,i+=1,Object.assign(t,{playing:!1,buffering:!1,...et(),ended:!1,scrubbing:!1,scrubTime:0,status:"loading"})}async function w(){if(l)return;const P=++i;t.ended&&(n().currentTime=0,t.time=0),t.ended=!1,t.buffering=!0;try{await n().play()}catch($){if(P!==i)return;t.buffering=!1,t.playing=!1,$ instanceof Error&&$.name!=="NotAllowedError"&&$.name!=="AbortError"&&a($)}}function p(){i+=1,r=!1,t.scrubbing=!1,t.buffering=!1,n().pause()}function T(){t.playing?p():w()}function z(){!s.value||t.scrubbing||(r=t.playing,t.scrubbing=!0,t.scrubTime=t.time,n().pause())}function h(P){t.scrubTime=Z(P,0,t.duration)}function k(P=!0){if(!t.scrubbing)return;const $=r;r=!1,t.scrubbing=!1,P&&(n().currentTime=t.scrubTime,t.time=t.scrubTime,t.ended=!1),$&&w()}function m(){n().muted=!n().muted,t.muted=n().muted}function y(P){t.status="error",t.playing=!1,t.buffering=!1,a(P)}const v=Object.fromEntries(Object.entries({loadedmetadata:B,durationchange:B,timeupdate:B,progress:B,loadeddata:()=>{B(),t.status="ready",t.buffering=!1},canplay:()=>{B(),t.buffering=!1},canplaythrough:B,play:()=>{t.playing=!0,t.ended=!1},playing:()=>{t.playing=!0,t.buffering=!1},pause:()=>{t.playing=!1,t.buffering=!1},ended:()=>{t.playing=!1,t.ended=!0,t.buffering=!1,o.complete(n()),B()},waiting:()=>{t.buffering=t.playing},seeking:()=>{t.buffering=!0},seeked:()=>{t.buffering=!1,B()},volumechange:()=>{t.muted=n().muted},error:()=>{y(new Error("视频暂时无法播放,请重试或检查资源格式"))}}).map(([P,$])=>[P,()=>{l||$()}]));function C(){l=!0,p()}function L(){R(),t.buffering=!0,n().load()}return{state:t,seekable:s,displayTime:u,progress:g,bufferedProgress:d,bufferedRanges:M,events:v,play:w,pause:p,toggle:T,beginScrub:z,scrub:h,endScrub:k,toggleMuted:m,retry:L,setSourceDuration:E,resetSource:R,sourceObserver:{error:y,duration:E,reset:R},dispose:C}}const hn=["data-live-state"],vn={class:"mp-dom-renderer mp-live-photo__motion"},yn=["preload"],ht=e.defineComponent({__name:"LivePhotoRenderer",props:{media:{},core:{},playing:{type:Boolean,default:!1},active:{type:Boolean,default:!0},enabled:{type:Boolean,default:!0},requestVersion:{default:0},loadEnabled:{type:Boolean,default:!0},priority:{default:0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},rendering:{type:Boolean,default:!0},initialImage:{default:()=>ye},quality:{default:"screen"}},emits:["ready","error","originalState","liveState","liveEnded"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(),l=e.ref(),s=e.ref(),u=e.ref(),g=gt(()=>i.value,m=>r("error",m)),{state:d}=g;lt(()=>i.value,()=>t.media,()=>t.active&&t.loadEnabled,()=>Ve,g.sourceObserver);let M=!1,B=()=>{};const E=e.computed(()=>t.active&&t.enabled&&d.playing&&d.status==="ready"&&!d.buffering),R=e.computed(()=>({transform:`translate(-50%, -50%) translate3d(${t.core.state.offsetX}px, ${t.core.state.offsetY}px, 0)`})),w=e.computed(()=>({width:`${t.core.mediaSize.value.width*t.core.displayScale.value}px`,height:`${t.core.mediaSize.value.height*t.core.displayScale.value}px`,transform:`rotate(${t.core.state.rotation}deg)`}));function p(){g.pause(),i.value.readyState>=HTMLMediaElement.HAVE_METADATA&&(i.value.currentTime=0)}function T(){!t.active||!t.enabled||!t.loadEnabled||!t.playing||d.status!=="ready"||d.buffering?p():g.play().then(()=>{!M&&!d.playing&&t.playing&&r("liveEnded")})}e.watch(()=>[d.status,d.playing,d.buffering],()=>{const m=d.status==="error"?"error":d.buffering||d.status==="loading"?"loading":E.value?"playing":"idle";r("liveState",m)},{immediate:!0});function z(){M||(p(),r("liveEnded"))}function h(){document.hidden&&(p(),r("liveEnded"))}e.onMounted(()=>{B=e.watch(()=>[t.active,t.enabled,t.loadEnabled,t.playing],T,{flush:"post"}),T(),document.addEventListener("visibilitychange",h)}),e.onBeforeUnmount(()=>{B(),M=!0,g.dispose(),document.removeEventListener("visibilitychange",h)});function k(){const m=document.createElement("canvas"),y=Math.min(1,Math.sqrt(ne.maxCanvasPixels/(t.media.width*t.media.height)));m.width=Math.round(t.media.width*y),m.height=Math.round(t.media.height*y);const S=m.getContext("2d"),v=Number(getComputedStyle(s.value).opacity);S.drawImage(u.value.captureFrame().image,0,0,m.width,m.height),v<1&&i.value.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&(S.globalAlpha=1-v,S.drawImage(i.value,0,0,m.width,m.height));const C=new DOMMatrixReadOnly(getComputedStyle(l.value).transform).a;return g.pause(),{image:m,scale:C}}return a({captureFrame:k,retainFrame:()=>({...k(),release:()=>{}})}),(m,y)=>(e.openBlock(),e.createElementBlock("div",{class:"mp-live-photo-renderer","data-live-state":e.unref(d).status==="error"?"error":E.value?"playing":"idle"},[e.createElementVNode("div",{ref_key:"effectsRef",ref:l,class:e.normalizeClass(["mp-live-photo__effects",{"is-playing":E.value}])},[e.createElementVNode("div",vn,[e.createElementVNode("div",{class:"mp-dom-renderer__frame",style:e.normalizeStyle(R.value)},[e.createElementVNode("video",e.mergeProps({ref_key:"videoRef",ref:i,class:"mp-dom-renderer__node",style:w.value,preload:m.active&&m.enabled&&m.loadEnabled?"auto":"none",playsinline:"","webkit-playsinline":"true",crossorigin:"anonymous"},e.toHandlers(e.unref(g).events,!0),{onEnded:z,onError:y[0]||(y[0]=S=>r("liveEnded"))}),null,16,yn)],4)]),e.createElementVNode("div",{ref_key:"stillRef",ref:s,class:e.normalizeClass(["mp-live-photo__still",{"is-playing":E.value}])},[e.createVNode(qe,{ref_key:"imageRendererRef",ref:u,active:m.active,"request-version":m.requestVersion,"load-enabled":m.loadEnabled,priority:m.priority,"resource-policy":m.resourcePolicy,"resolve-source":m.resolveSource,onOriginalState:y[1]||(y[1]=(S,v)=>r("originalState",S,v)),media:m.media,"initial-image":m.initialImage,rendering:m.rendering,core:m.core,quality:m.quality,onReady:y[2]||(y[2]=S=>r("ready",S)),onError:y[3]||(y[3]=S=>r("error",S))},null,8,["active","request-version","load-enabled","priority","resource-policy","resolve-source","media","initial-image","rendering","core","quality"])],2)],2)],8,hn))}});function wn(n,a){const o=document.createElement("canvas"),t=Math.min(1,Math.sqrt(ne.maxCanvasPixels/(a.width*a.height)));o.width=Math.max(1,Math.round(a.width*t)),o.height=Math.max(1,Math.round(a.height*t));const r=Math.min(o.width/n.videoWidth,o.height/n.videoHeight),i=n.videoWidth*r,l=n.videoHeight*r;return o.getContext("2d").drawImage(n,(o.width-i)/2,(o.height-l)/2,i,l),n.pause(),o}const bn={class:"mp-video-icon--generic",width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.7","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},kn=["d","fill"],Mn=["src"],xn=["src"],Ne=e.defineComponent({__name:"VideoIcon",props:{name:{}},setup(n){const a=n,o={play:["mobile-play","pc-play"],replay:["mobile-play","pc-play"],pause:["mobile-pause","pc-pause"],fullscreen:["mobile-fullscreen","pc-fullscreen"],exit:["mobile-fullscreen","pc-exit"]},t={"mobile-play":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='18px'%20height='18px'%20viewBox='0%200%2018%2018'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e三角形%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2时间轴-查看视频'%20transform='translate(-18.000000,%20-687.000000)'%20fill='%23333333'%3e%3cg%20id='编组-5'%20transform='translate(0.000000,%20672.000000)'%3e%3cg%20id='编组-4'%20transform='translate(18.000000,%2012.913043)'%3e%3cpath%20d='M13.5185936,7.08213339%20L18.1443888,14.1750193%20C19.2003225,15.7941177%2018.7437874,17.9626598%2017.1246889,19.0185936%20C16.5559936,19.3894818%2015.8917011,19.5869565%2015.2127517,19.5869565%20L5.96116137,19.5869565%20C4.02816475,19.5869565%202.46116137,18.0199531%202.46116137,16.0869565%20C2.46116137,15.4080071%202.65863607,14.7437145%203.02952428,14.1750193%20L7.65531943,7.08213339%20C8.71125321,5.46303494%2010.8797953,5.00649976%2012.4988938,6.06243353%20C12.9058908,6.3278664%2013.2531607,6.67513633%2013.5185936,7.08213339%20Z'%20id='三角形'%20transform='translate(10.586957,%2011.086957)%20rotate(90.000000)%20translate(-10.586957,%20-11.086957)%20'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"mobile-pause":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='18px'%20height='18px'%20viewBox='0%200%2018%2018'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e暂停%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2时间轴-观看视频'%20transform='translate(-17.000000,%20-687.000000)'%20fill='%23333333'%3e%3cg%20id='编组-5'%20transform='translate(0.000000,%20672.000000)'%3e%3cg%20id='编组-3'%20transform='translate(17.000000,%2012.913043)'%3e%3cg%20id='暂停-2'%20transform='translate(0.000000,%202.086957)'%3e%3cg%20id='暂停'%20transform='translate(3.000000,%201.500000)'%3e%3crect%20id='矩形'%20x='0'%20y='0'%20width='3.5'%20height='15'%20rx='1.75'%3e%3c/rect%3e%3crect%20id='矩形备份-7'%20x='9'%20y='0'%20width='3.5'%20height='15'%20rx='1.75'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"mobile-fullscreen":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='24px'%20height='24px'%20viewBox='0%200%2024%2024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e横竖屏备份%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='懒猫微服-图标库2.0'%20transform='translate(-449.000000,%20-196.000000)'%20stroke='%23333333'%20stroke-width='1.5'%3e%3cg%20id='横竖屏'%20transform='translate(449.000000,%20196.000000)'%3e%3crect%20id='矩形'%20x='3.75'%20y='9.75'%20width='16.5'%20height='10.5'%20rx='4'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='3.75'%20y='3.75'%20width='10.5'%20height='16.5'%20rx='4'%3e%3c/rect%3e%3cline%20x1='7.5'%20y1='7'%20x2='10.5'%20y2='7'%20id='路径-83'%20stroke-linecap='round'%3e%3c/line%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"center-play":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='14px'%20height='14px'%20viewBox='0%200%2014%2014'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e播放%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill-rule='evenodd'%3e%3cg%20id='2时间轴-查看视频'%20transform='translate(-181.000000,%20-399.000000)'%20fill-rule='nonzero'%3e%3cg%20id='播放'%20transform='translate(164.000000,%20382.000000)'%3e%3cg%20id='播放-2'%20transform='translate(17.000000,%2016.000000)'%3e%3cpath%20d='M10.7364863,4.038851%20L15.2901269,12.0077221%20C15.8381469,12.966757%2015.5049534,14.1884663%2014.5459185,14.7364863%20C14.2437231,14.9091694%2013.9016945,15%2013.5536406,15%20L4.44635936,15%20C3.34178986,15%202.44635936,14.1045695%202.44635936,13%20C2.44635936,12.6519461%202.53718999,12.3099175%202.70987307,12.0077221%20L7.26351372,4.038851%20C7.81153365,3.0798161%209.03324298,2.74662265%209.99227788,3.29464259%20C10.3023404,3.47182119%2010.5593077,3.72878844%2010.7364863,4.038851%20Z'%20id='播放'%20transform='translate(9.000000,%208.000000)%20rotate(90.000000)%20translate(-9.000000,%20-8.000000)%20'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-play":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e开始%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-764.000000,%20-1017.000000)'%20fill='%23FFFFFF'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组'%20transform='translate(646.000000,%20970.000000)'%3e%3cg%20id='开始'%20transform='translate(50.000000,%2045.022998)'%3e%3cpath%20d='M11.1122895,6.09085035%20L16.0457675,13.4910673%20C16.9648249,14.8696534%2016.5923033,16.7322614%2015.2137172,17.6513188%20C14.7209147,17.9798538%2014.1418916,18.1551679%2013.5496166,18.1551679%20L4.15581091,18.1551679%20C2.49895666,18.1551679%201.15581091,16.8120222%201.15581091,15.1551679%20C1.15581091,14.6093944%201.30469549,14.0739605%201.58643112,13.6065274%20L6.04675886,6.20631041%20C6.90204941,4.78728113%208.74574991,4.3302806%2010.1647792,5.18557115%20C10.5434695,5.41381888%2010.8670246,5.72295299%2011.1122895,6.09085035%20Z'%20id='三角形'%20transform='translate(9.000000,%2010.155168)%20rotate(90.000000)%20translate(-9.000000,%20-10.155168)%20'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-pause":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e暂停%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-737.000000,%20-1017.000000)'%20fill='%23FFFFFF'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组'%20transform='translate(646.000000,%20970.000000)'%3e%3cg%20id='暂停-2'%20transform='translate(23.000000,%2047.000000)'%3e%3cg%20id='暂停'%20transform='translate(1.000000,%200.000000)'%3e%3crect%20id='矩形'%20x='0'%20y='0'%20width='4'%20height='16'%20rx='2'%3e%3c/rect%3e%3crect%20id='矩形备份-4'%20x='10'%20y='0'%20width='4'%20height='16'%20rx='2'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-fullscreen":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e形状%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-1236.000000,%20-1017.000000)'%20fill='%23FFFFFF'%20fill-rule='nonzero'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组'%20transform='translate(646.000000,%20970.000000)'%3e%3cg%20id='形状-2'%20transform='translate(522.000000,%2047.000000)'%3e%3cpath%20d='M2.64896326,8.31181102%20C3.0069116,8.31181102%203.29792652,8.60254391%203.29792652,8.96014537%20L3.297,11.774%20L6.30847581,8.766808%20C6.56165879,8.51387038%206.97344489,8.51387038%207.22662786,8.766808%20C7.47981084,9.01974561%207.47981084,9.43113265%207.22662786,9.68407026%20L4.204,12.701%20L7.04328847,12.7018776%20C7.40123681,12.7018776%207.69225716,12.9926105%207.69225716,13.350212%20C7.6937068,13.7092671%207.40269189,14%207.04328847,14%20L3.79410695,14%20C2.80465624,14%202,13.1961236%202,12.2076317%20L2,8.96014537%20C2,8.60254391%202.29101491,8.31181102%202.64896326,8.31181102%20Z%20M12.2058931,2%20C12.6893524,2%2013.1286932,2.19192028%2013.4516066,2.50352194%20C13.4593844,2.50982425%2013.4671226,2.51718474%2013.4747181,2.52477286%20L13.4959896,2.54786191%20C13.8078935,2.87046237%2014,3.30937746%2014,3.79236826%20L14,7.03985463%20C14,7.39745609%2013.7089851,7.68818898%2013.3510367,7.68818898%20C12.9930884,7.68818898%2012.7020735,7.39745609%2012.7020735,7.03985463%20L12.702,4.213%20L9.67842852,7.23464567%20C9.55183703,7.36111448%209.38450346,7.42507571%209.21862495,7.42507571%20C9.05274645,7.42507571%208.88686795,7.36111448%208.76027646,7.23464567%20C8.50709349,6.98170806%208.50709349,6.57032102%208.76027646,6.3173834%20L11.783,3.296%20L8.95525646,3.29666869%20C8.59730811,3.29666869%208.3062932,3.0059358%208.3062932,2.64833434%20C8.3062932,2.29073289%208.59730811,2%208.95525646,2%20L12.2058931,2%20Z'%20id='全屏'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-exit":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e形状备份%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-1275.000000,%20-1007.000000)'%20fill='%23FFFFFF'%20fill-rule='nonzero'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组备份'%20transform='translate(601.000000,%20987.000000)'%3e%3cg%20id='形状-2'%20transform='translate(606.000000,%2020.000000)'%3e%3cpath%20d='M5.89959985,8.31181102%20C6.88905056,8.31181102%207.6937068,9.11568746%207.6937068,10.1041793%20L7.6937068,13.3516657%20C7.6937068,13.7092671%207.40269189,14%207.04474354,14%20C6.6867952,14%206.39578028,13.7092671%206.39578028,13.3516657%20L6.395,10.514%20L3.43761368,13.4679588%20C3.31102219,13.5958813%203.14514369,13.6583889%202.97926519,13.6583889%20C2.81338669,13.6583889%202.64750818,13.5944276%202.5209167,13.4679588%20C2.26773372,13.2150212%202.26773372,12.8036342%202.5209167,12.5506965%20L5.465,9.608%20L2.64896326,9.60847971%20C2.29101491,9.60847971%202,9.31774682%202,8.96014537%20C2,8.60254391%202.29101491,8.31181102%202.64896326,8.31181102%20L5.89959985,8.31181102%20Z%20M8.9567061,2%20C9.31465444,2%209.60566936,2.29073289%209.60566936,2.64833434%20L9.605,5.473%20L12.556566,2.52477286%20C12.809749,2.27183525%2013.2215351,2.27183525%2013.4747181,2.52477286%20C13.7279011,2.77771048%2013.7279011,3.18909752%2013.4747181,3.44203513%20L10.523,6.39%20L13.3510313,6.39006663%20C13.7089797,6.39006663%2014,6.68079952%2014,7.03840097%20C14.0014496,7.39745609%2013.7104347,7.68818898%2013.3510313,7.68818898%20L10.1018498,7.68818898%20C9.11239908,7.68818898%208.30774284,6.88431254%208.30774284,5.89582071%20L8.30774284,2.64833434%20C8.30774284,2.29073289%208.59875775,2%208.9567061,2%20Z'%20id='全屏'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("vue-media-preview.cjs",document.baseURI).href).href},r={play:["m9 5 11 7-11 7Z"],pause:["M8 5v14M16 5v14"],replay:["M4 10a8 8 0 1 1 1 7","M4 4v6h6"],fullscreen:["M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5"],exit:["M9 4v5H4M20 9h-5V4M15 20v-5h5M4 15h5v5"],volume:["m11 4-6 5H2v6h3l6 5Z","M15 8a6 6 0 0 1 0 8M18 5a10 10 0 0 1 0 14"],muted:["m11 4-6 5H2v6h3l6 5Z","m16 9 6 6m0-6-6 6"]};return(i,l)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["mp-video-icon",{"has-album-icon":a.name in o}])},[(e.openBlock(),e.createElementBlock("svg",bn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r[i.name],(s,u)=>(e.openBlock(),e.createElementBlock("path",{key:u,d:s,fill:i.name==="play"?"currentColor":"none"},null,8,kn))),128))])),i.name in o?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("img",{class:"mp-video-icon--mobile",src:t[o[i.name][0]],alt:"","aria-hidden":"true",draggable:"false"},null,8,Mn),e.createElementVNode("img",{class:"mp-video-icon--desktop",src:t[o[i.name][1]],alt:"","aria-hidden":"true",draggable:"false"},null,8,xn)],64)):e.createCommentVNode("",!0)],2))}}),En={key:0,class:"mp-video-seek-preview"},Sn=["aria-label","disabled"],Cn={class:"mp-video-time"},Rn=["tabindex","aria-disabled","aria-valuemax","aria-valuenow","aria-valuetext"],Pn=e.createElementVNode("span",{class:"mp-video-progress__rail"},null,-1),Bn={class:"mp-video-time"},Ln=["aria-label","aria-pressed"],Tn=["aria-label","disabled"],Fn=e.defineComponent({__name:"VideoControls",props:{playback:{},fullscreen:{type:Boolean},canFullscreen:{type:Boolean}},emits:["fullscreen"],setup(n,{emit:a}){const o=n,t=a,r=e.ref(),{state:i,seekable:l,displayTime:s,progress:u,bufferedRanges:g}=o.playback;function d(w){const p=r.value.getBoundingClientRect();o.playback.scrub((w.clientX-p.left)/Math.max(1,p.width)*i.duration)}function M(w){!l.value||w.pointerType==="mouse"&&w.button!==0||(r.value.setPointerCapture(w.pointerId),o.playback.beginScrub(),d(w))}function B(w){i.scrubbing&&d(w)}function E(w){i.scrubbing&&(d(w),o.playback.endScrub())}function R(w){o.playback.beginScrub(),o.playback.scrub(s.value+w),o.playback.endScrub()}return(w,p)=>(e.openBlock(),e.createElementBlock("div",{class:"mp-video-controls","data-preview-control":"",onPointerdown:p[9]||(p[9]=e.withModifiers(()=>{},["stop"])),onPointermove:p[10]||(p[10]=e.withModifiers(()=>{},["stop"])),onPointerup:p[11]||(p[11]=e.withModifiers(()=>{},["stop"])),onPointercancel:p[12]||(p[12]=e.withModifiers(()=>{},["stop"])),onClick:p[13]||(p[13]=e.withModifiers(()=>{},["stop"])),onDblclick:p[14]||(p[14]=e.withModifiers(()=>{},["stop"])),onKeydown:p[15]||(p[15]=e.withModifiers(()=>{},["stop"]))},[e.unref(i).scrubbing?(e.openBlock(),e.createElementBlock("div",En,[e.createTextVNode(e.toDisplayString(e.unref(Me)(e.unref(s))),1),e.createElementVNode("span",null," / "+e.toDisplayString(e.unref(Me)(e.unref(i).duration)),1)])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).ended?"重新播放视频":e.unref(i).playing?"暂停视频":"播放视频",disabled:e.unref(i).status==="error",onClick:p[0]||(p[0]=(...T)=>w.playback.toggle&&w.playback.toggle(...T))},[e.createVNode(Ne,{name:e.unref(i).ended?"replay":e.unref(i).playing?"pause":"play"},null,8,["name"])],8,Sn),e.createElementVNode("time",Cn,e.toDisplayString(e.unref(Me)(e.unref(s))),1),e.createElementVNode("div",{ref_key:"track",ref:r,class:e.normalizeClass(["mp-video-progress",{"is-scrubbing":e.unref(i).scrubbing}]),role:"slider","aria-label":"视频进度",tabindex:e.unref(l)?0:-1,"aria-disabled":!e.unref(l),"aria-valuemin":"0","aria-valuemax":e.unref(i).duration,"aria-valuenow":e.unref(s),"aria-valuetext":`${e.unref(Me)(e.unref(s))} / ${e.unref(Me)(e.unref(i).duration)}`,onPointerdown:e.withModifiers(M,["prevent"]),onPointermove:e.withModifiers(B,["prevent"]),onPointerup:e.withModifiers(E,["prevent"]),onPointercancel:p[1]||(p[1]=T=>w.playback.endScrub(!1)),onLostpointercapture:p[2]||(p[2]=T=>w.playback.endScrub(!1)),onKeydown:[p[3]||(p[3]=e.withKeys(e.withModifiers(T=>R(-5),["prevent"]),["left"])),p[4]||(p[4]=e.withKeys(e.withModifiers(T=>R(5),["prevent"]),["right"])),p[5]||(p[5]=e.withKeys(e.withModifiers(T=>R(-e.unref(i).duration),["prevent"]),["home"])),p[6]||(p[6]=e.withKeys(e.withModifiers(T=>R(e.unref(i).duration),["prevent"]),["end"]))]},[Pn,(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),(T,z)=>(e.openBlock(),e.createElementBlock("span",{key:z,class:"mp-video-progress__buffered",style:e.normalizeStyle({left:`${T.left}%`,width:`${T.width}%`})},null,4))),128)),e.createElementVNode("span",{class:"mp-video-progress__played",style:e.normalizeStyle({width:`${e.unref(u)}%`})},null,4),e.createElementVNode("span",{class:"mp-video-progress__thumb",style:e.normalizeStyle({left:`${e.unref(u)}%`})},null,4)],42,Rn),e.createElementVNode("time",Bn,e.toDisplayString(e.unref(Me)(e.unref(i).duration)),1),e.createElementVNode("button",{type:"button",class:"mp-video-volume","aria-label":e.unref(i).muted?"开启声音":"静音视频","aria-pressed":e.unref(i).muted,onClick:p[7]||(p[7]=(...T)=>w.playback.toggleMuted&&w.playback.toggleMuted(...T))},[e.createVNode(Ne,{name:e.unref(i).muted?"muted":"volume"},null,8,["name"])],8,Ln),e.createElementVNode("button",{type:"button","aria-label":w.fullscreen?"退出视频全屏":"视频全屏",disabled:!w.canFullscreen,onClick:p[8]||(p[8]=T=>t("fullscreen"))},[e.createVNode(Ne,{name:w.fullscreen?"exit":"fullscreen"},null,8,["name"])],8,Tn)],32))}}),Vn=["data-playback"],$n=["muted","loop","preload"],zn={key:1,class:"mp-video-loading",role:"status","aria-label":"视频缓冲中"},In=e.createElementVNode("span",{class:"mp-spinner"},null,-1),Dn=[In],Nn=["aria-label"],qn={key:3,class:"mp-video-error",role:"alert"},Un=["inert"],vt=e.defineComponent({inheritAttrs:!1,__name:"VideoDomRenderer",props:{initialImage:{default:()=>ye},rendering:{type:Boolean,default:!0},quality:{default:"screen"},requestVersion:{default:0},priority:{default:0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},media:{},videoLoader:{type:Function,default:Ve},core:{},active:{type:Boolean,default:!0},enabled:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},loadEnabled:{type:Boolean,default:!0},muted:{type:Boolean,default:!1},loop:{type:Boolean,default:!1},controls:{type:Boolean,default:!0},controlsVisible:{type:Boolean,default:!0},teleportControls:{type:Boolean,default:!1},controlsTarget:{default:"body"}},emits:["originalState","ready","error"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(!1),l=e.computed(()=>({...t.media,type:"image",src:t.media.poster||t.media.previewSrc||t.media.thumbnail})),s=e.ref(),u=e.ref(),g=e.ref(!1),d=e.ref(!1),M=gt(()=>s.value,v=>r("error",v));lt(()=>s.value,()=>t.media,()=>t.active&&t.loadEnabled,()=>t.videoLoader,M.sourceObserver);let B=()=>{};const{state:E}=M,R=e.computed(()=>t.controls&&t.active&&t.enabled&&t.controlsVisible);function w(){return t.teleportControls?u.value.closest(".mp-viewer"):t.core.containerRef.value}async function p(){if(d.value)try{document.fullscreenElement===w()?await document.exitFullscreen():document.fullscreenEnabled?await w().requestFullscreen():s.value.webkitEnterFullscreen()}catch(v){r("error",Se(v))}}function T(){g.value=document.fullscreenElement===w()}function z(){!t.active||!t.enabled?M.pause():t.autoplay&&M.play()}function h(){document.hidden&&M.pause()}e.onMounted(()=>{E.muted=s.value.muted,d.value=document.fullscreenEnabled||"webkitEnterFullscreen"in s.value,document.addEventListener("fullscreenchange",T),document.addEventListener("visibilitychange",h),B=e.watch(()=>[t.active,t.enabled,t.autoplay],z,{flush:"post"}),z()}),e.onBeforeUnmount(()=>{B(),M.dispose(),document.removeEventListener("fullscreenchange",T),document.removeEventListener("visibilitychange",h),document.fullscreenElement===w()&&document.exitFullscreen().catch(()=>{})});const k=e.computed(()=>({transform:`translate(-50%, -50%) translate3d(${t.core.state.offsetX}px, ${t.core.state.offsetY}px, 0)`})),m=e.computed(()=>({width:`${t.core.mediaSize.value.width*t.core.displayScale.value}px`,height:`${t.core.mediaSize.value.height*t.core.displayScale.value}px`,transform:`rotate(${t.core.state.rotation}deg)`}));function y(){i.value=!0,t.core.setMediaElement(s.value),r("ready","screen")}function S(){return{image:i.value?wn(s.value,t.core.mediaSize.value):t.core.mediaRef.value,scale:1}}return a({togglePlayback:M.toggle,toggleFullscreen:p,playback:M,captureFrame:S,retainFrame:()=>({...S(),release:()=>{}})}),(v,C)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"host",ref:u,class:"mp-dom-renderer mp-video-player","data-playback":e.unref(E).ended?"ended":e.unref(E).playing?"playing":"paused"},[i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(qe,{key:0,active:v.active,media:l.value,"original-enabled":!1,core:v.core,"initial-image":v.initialImage,rendering:v.rendering,quality:v.quality,"request-version":v.requestVersion,"load-enabled":v.loadEnabled,priority:v.priority,"resource-policy":v.resourcePolicy,"resolve-source":v.resolveSource,onReady:C[0]||(C[0]=L=>r("ready",L)),onError:C[1]||(C[1]=L=>r("error",L)),onOriginalState:C[2]||(C[2]=(L,P)=>r("originalState",L,P))},null,8,["active","media","core","initial-image","rendering","quality","request-version","load-enabled","priority","resource-policy","resolve-source"])),e.createElementVNode("div",{class:"mp-dom-renderer__frame",style:e.normalizeStyle([k.value,{visibility:i.value?"inherit":"hidden"}])},[e.createElementVNode("video",e.mergeProps({ref_key:"videoRef",ref:s,class:"mp-dom-renderer__node",muted:v.muted,loop:v.loop,playsinline:"","webkit-playsinline":"true",crossorigin:"anonymous",preload:v.active&&v.loadEnabled?"auto":"none",style:m.value},e.toHandlers(e.unref(M).events,!0),{onPlaying:y}),null,16,$n)],4),v.active&&v.enabled&&e.unref(E).buffering&&e.unref(E).status!=="error"?(e.openBlock(),e.createElementBlock("div",zn,Dn)):e.createCommentVNode("",!0),R.value&&!e.unref(E).playing&&!e.unref(E).buffering&&e.unref(E).status!=="error"?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"mp-video-center-play","data-preview-control":"","aria-label":e.unref(E).ended?"重新播放":"开始播放视频",onPointerdown:C[3]||(C[3]=e.withModifiers(()=>{},["stop"])),onPointerup:C[4]||(C[4]=e.withModifiers(()=>{},["stop"])),onClick:C[5]||(C[5]=e.withModifiers((...L)=>e.unref(M).toggle&&e.unref(M).toggle(...L),["stop"]))},[e.createVNode(Ne,{name:e.unref(E).ended?"replay":"play"},null,8,["name"])],40,Nn)):e.createCommentVNode("",!0),e.unref(E).status==="error"?(e.openBlock(),e.createElementBlock("div",qn,"视频暂时无法播放")):e.createCommentVNode("",!0),v.controls&&v.active&&v.enabled?(e.openBlock(),e.createBlock(e.Teleport,{key:4,to:v.controlsTarget,disabled:!v.teleportControls},[e.createElementVNode("div",{class:e.normalizeClass(["mp-video-control-layer",{"is-hidden":!R.value}]),inert:!R.value},[e.createVNode(Fn,{playback:e.unref(M),fullscreen:g.value,"can-fullscreen":d.value,onFullscreen:p},null,8,["playback","fullscreen","can-fullscreen"])],10,Un)],8,["to","disabled"])):e.createCommentVNode("",!0)],8,Vn))}}),On=["data-scale","data-rotation","data-live-holding"],yt=e.defineComponent({__name:"PreviewStage",props:{media:{},videoLoader:{type:Function,default:Ve},livePlaying:{type:Boolean,default:!1},active:{type:Boolean,default:!0},requestVersion:{default:0},loadEnabled:{type:Boolean,default:!0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},inactiveResetDuration:{default:0},disabled:{type:Boolean,default:!1},externalGestures:{type:Boolean,default:!1},controlsVisible:{type:Boolean,default:!0},teleportControls:{type:Boolean,default:!1},controlsTarget:{default:"body"},rendering:{type:Boolean,default:!0},paging:{type:Boolean,default:!1},initialImage:{default:()=>ye},quality:{default:"screen"}},emits:["tap","doubleTap","scale","swipeDownProgress","close","previous","next","pageDrag","pageRelease","ready","error","originalState","liveState","liveEnded"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(!1),l=e.ref("loading"),s=st({motionActive:()=>t.paging,interactive:()=>t.active&&!t.disabled,zoomable:()=>!0,doubleTapZoom:()=>rn(t.media,s.core.viewportSize.value),holdable:()=>t.media.type==="live-photo"&&M.value==="ready"&&l.value==="idle",onHoldStart:()=>{i.value=!0},onHoldEnd:()=>{i.value=!1,r("liveEnded")},onTap:()=>r("tap"),onDoubleTap:()=>r("doubleTap"),onScale:h=>{t.active&&r("scale",h)},onSwipeDownProgress:h=>{t.active&&r("swipeDownProgress",h)},onSwipeDownClose:()=>r("close"),onSwipeLeft:()=>r("next"),onSwipeRight:()=>r("previous"),onPageDrag:h=>{t.active&&r("pageDrag",h)},onPageRelease:(h,k)=>r("pageRelease",h,k)}),u=s.core.containerRef,g=s.core.downDragStyle,d=s.core.state,M=e.ref("loading"),B=e.ref("thumbnail"),E=e.ref(),R=e.computed(()=>t.media.type==="video"?vt:t.media.type==="live-photo"?ht:qe),w=e.computed(()=>B.value==="full"||t.quality==="full"?"full":t.quality);e.watch([()=>t.media.id,()=>t.media.src,()=>t.media.previewSrc,()=>t.media.thumbnail],()=>{B.value="thumbnail"}),e.watch(()=>t.media.id,()=>{M.value="loading",s.core.setRotation(0)}),e.watch([()=>t.media.width,()=>t.media.height],([h,k])=>{s.core.setMediaSize({width:h,height:k})},{immediate:!0}),e.watch(()=>t.active,h=>{h||s.core.resetTransform(t.inactiveResetDuration)}),e.watch(()=>t.disabled,h=>{h&&s.core.cancelGesture(!0)});function p(h){h==="full"&&(B.value=h),M.value="ready",r("ready",h)}function T(h){l.value=h,r("liveState",h)}const z=e.computed(()=>t.externalGestures?{}:{wheel:s.onWheel,pointerdown:s.onPointerDown,pointermove:s.onPointerMove,pointerup:s.onPointerUp,pointercancel:s.onPointerCancel,lostpointercapture:s.onPointerCancel});return a({onPointerDown:s.onPointerDown,onPointerMove:s.onPointerMove,onPointerUp:s.onPointerUp,onPointerCancel:s.onPointerCancel,onWheel:s.onWheel,readiness:M,core:s.core,rotateBy:s.core.rotateBy,resetTransform:s.core.resetTransform,zoomIn:()=>s.core.zoomTo(d.level*1.5,void 0,!0),zoomOut:()=>s.core.zoomTo(d.level/1.5,void 0,!0),togglePlayback:()=>E.value.togglePlayback(),toggleFullscreen:()=>E.value.toggleFullscreen(),captureFrame:()=>E.value.captureFrame(),retainFrame:()=>E.value.retainFrame()}),(h,k)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({ref_key:"containerRef",ref:u,class:["mp-stage",{"is-zoomed":e.unref(d).level>1,"is-dismissing":e.unref(d).draggingDown}],style:e.unref(g),"data-scale":e.unref(d).level.toFixed(3),"data-rotation":e.unref(d).rotation,"data-live-holding":i.value,onContextmenu:k[3]||(k[3]=m=>{h.media.type==="live-photo"&&m.preventDefault()})},e.toHandlers(z.value,!0)),[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(R.value),e.mergeProps({ref_key:"rendererRef",ref:E,media:h.media},h.media.type==="video"?{videoLoader:h.videoLoader}:{},{"initial-image":h.initialImage,rendering:h.rendering,core:e.unref(s).core,quality:w.value,"request-version":h.requestVersion,"load-enabled":h.loadEnabled,priority:h.active?0:2,"resource-policy":h.resourcePolicy,"resolve-source":h.resolveSource,playing:(h.livePlaying||i.value)&&h.active,enabled:!h.disabled,"controls-visible":h.controlsVisible,"teleport-controls":h.teleportControls,"controls-target":h.controlsTarget,active:h.active,onReady:p,onError:k[0]||(k[0]=m=>r("error",m)),onOriginalState:k[1]||(k[1]=(m,y)=>r("originalState",m,y)),onLiveState:T,onLiveEnded:k[2]||(k[2]=m=>r("liveEnded"))}),null,16,["media","initial-image","rendering","core","quality","request-version","load-enabled","priority","resource-policy","resolve-source","playing","enabled","controls-visible","teleport-controls","controls-target","active"]))],16,On))}});function An(n,a){const o=e.ref(new Set),t=e.ref("idle"),r=e.ref(""),i=e.ref(0),l=e.ref("");function s(){l.value="",t.value="idle",r.value="",i.value=0}function u(){t.value!=="ready"&&(t.value="loading",r.value="",i.value++,o.value=new Set([...o.value,n().id]))}function g(d,M){t.value=d,r.value=M,a(n(),d,M)}return{originalIds:o,originalStatus:t,originalReason:r,originalRequest:i,readyId:l,reset:s,requestOriginal:u,updateOriginal:g}}function _n(n,a,o,t={}){const r=e.ref(0),i=e.reactive({offset:0,dragging:!1,settling:!1,preparing:!1,grabbed:!1,duration:360}),l={readOffset:()=>i.offset,flushLayout:()=>{},...t},s=16,u=()=>a()+s,g=e.computed(()=>[r.value-1,r.value,r.value+1].filter(S=>S>=0&&S<n()));let d=setTimeout(()=>{},0),M=()=>{},B=0,E=0;function R(){B+=1,clearTimeout(d),M(),i.settling=!1,i.preparing=!1}e.onBeforeUnmount(R);function w(){if(!i.settling&&!i.preparing)return;const S=i.preparing?i.offset:l.readOffset();R(),i.offset=S,i.grabbed=!0}function p(S){if(S===0){R(),i.dragging=!1,i.grabbed=!1,i.offset=0,E=0;return}i.dragging||(w(),E=i.offset,R(),i.dragging=!0,i.grabbed=!0);const v=E+S,C=r.value===0&&v>0||r.value===n()-1&&v<0;i.offset=C?Math.sign(v)*Math.sqrt(Math.abs(v))*6:v}async function T(S,v=0){R();const C=B,L=r.value;i.offset+=(S-L)*u();const P=Math.abs(i.offset),$=Z(P/u(),0,1),I=Z(220+$*140-Math.min(Math.abs(v),2)*35,240,360);i.duration=matchMedia("(prefers-reduced-motion: reduce)").matches?0:I,r.value=S,i.dragging=!1,i.grabbed=!1,i.preparing=!0,S!==L&&o(S),await e.nextTick(),C===B&&(l.flushLayout(),i.preparing=!1,i.settling=!0,i.offset=0,await new Promise(_=>{M=_,d=setTimeout(_,i.duration)}),C===B&&(i.settling=!1,M=()=>{}))}function z(S,v){const C=i.offset,L=Math.abs(v)>.35&&Math.abs(S)>16,P=Math.sign(L?v:C),$=L||Math.abs(C)>a()*.14;T(Z(r.value-($?P:0),0,n()-1),v)}function h(){i.grabbed&&!i.dragging&&T(r.value)}function k(S){if(i.dragging)return;w();const v=Z(r.value+S,0,n()-1);v!==r.value?T(v):h()}function m(S){R(),r.value=S,i.offset=0,i.dragging=!1,i.grabbed=!1}function y(S){r.value=S}return{index:r,state:i,slots:g,stride:u,drag:p,release:z,go:k,grab:w,resume:h,reset:m,rebase:y,cancel:R}}function wt(n,a,o){const t=Math[o==="cover"?"max":"min"](a.width/n.width,a.height/n.height);return{x:a.left+a.width/2,y:a.top+a.height/2,width:n.width*t,height:n.height*t,rotation:0,clip:{left:a.left,top:a.top,width:a.width,height:a.height},radius:0}}function Yn(n,a,o){const t=(r,i)=>r+(i-r)*o;return{x:t(n.x,a.x),y:t(n.y,a.y),width:t(n.width,a.width),height:t(n.height,a.height),rotation:t(n.rotation,a.rotation),radius:t(n.radius,a.radius),clip:{left:t(n.clip.left,a.clip.left),top:t(n.clip.top,a.clip.top),width:t(n.clip.width,a.clip.width),height:t(n.clip.height,a.clip.height)}}}function tt(n){const a=n.rotation*Math.PI/180,o=Math.abs(Math.cos(a))*n.width+Math.abs(Math.sin(a))*n.height,t=Math.abs(Math.sin(a))*n.width+Math.abs(Math.cos(a))*n.height,r=Math.max(n.x-o/2,n.clip.left),i=Math.max(n.y-t/2,n.clip.top);return{left:r,top:i,width:Math.max(0,Math.min(n.x+o/2,n.clip.left+n.clip.width)-r),height:Math.max(0,Math.min(n.y+t/2,n.clip.top+n.clip.height)-i)}}function Hn(n,a,o,t,r){const i=tt(n),l=tt(a),s=Math.min(i.width/l.width,i.height/l.height),u={width:Math.max(i.width,l.width,1),height:Math.max(i.height,l.height,1)},g=128,d=[],M=[];for(let B=0;B<=g;B+=1){const E=B/g,R=Yn(n,a,E);let w;if(r)w={left:i.left+(l.left-i.left)*E,top:i.top+(l.top-i.top)*E,width:i.width+(l.width-i.width)*E,height:i.height+(l.height-i.height)*E};else{const z=Math.min(E/.78,1),h=1-z*z*z*(z*(z*6-15)+10),k=s+(1-s)*E,m=l.width*k+(i.width-l.width*s)*h,y=l.height*k+(i.height-l.height*s)*h;w={left:i.left+i.width/2+(l.left+l.width/2-i.left-i.width/2)*E-m/2,top:i.top+i.height/2+(l.top+l.height/2-i.top-i.height/2)*E-y/2,width:m,height:y}}const p=Math.max(w.width,.001)/u.width,T=Math.max(w.height,.001)/u.height;d.push({transform:`scale(${1/p},${1/T}) translate3d(${R.x-w.left}px,${R.y-w.top}px,0) rotate(${R.rotation}deg) scale(${R.width/t.width}) translate3d(${-t.width/2}px,${-t.height/2}px,0)`,offset:E}),M.push({transform:`translate3d(${w.left-o.left}px,${w.top-o.top}px,0) scale(${p},${T})`,...n.radius===0&&a.radius===0?{}:{borderRadius:`${R.radius/p}px / ${R.radius/T}px`},offset:E})}return{pictures:d,masks:M,maskSize:u}}function Xn(){let n={kind:"idle"};function a(){n.kind==="playing"&&n.animations.forEach(r=>r.cancel()),n={kind:"idle"}}function o(){return n.kind!=="playing"||!n.entering?{kind:"inactive"}:(n.entering=!1,n.animations.forEach(r=>r.reverse()),n.finished=Promise.all(n.animations.map(r=>r.finished)).then(()=>{}).catch(()=>{}),{kind:"reversing",finished:n.finished})}async function t(r,i,l,s,u,g,d,M,B=M?0:1,E=340){a();const R=Math.max(s.width,u.width),w=R*u.height/u.width,p=Math.min(devicePixelRatio,2,Math.sqrt(ne.maxCanvasPixels/(R*w)));r.width=Math.max(1,Math.round(R*p)),r.height=Math.max(1,Math.round(w*p)),r.style.width=`${R}px`,r.style.height=`${w}px`;const T=r.getContext("2d");(v=>{T.clearRect(0,0,r.width,r.height),T.imageSmoothingEnabled=!0,T.imageSmoothingQuality="high",T.drawImage(v,0,0,r.width,r.height)})(l);const h=Hn(s,u,g,{width:R,height:w},M);i.style.width=`${h.maskSize.width}px`,i.style.height=`${h.maskSize.height}px`,i.style.borderRadius="0";const m={duration:matchMedia("(prefers-reduced-motion: reduce)").matches?0:Math.max(0,E),easing:"cubic-bezier(.2,.78,.2,1)",fill:"both"},y=[r.animate(h.pictures,m),i.animate(h.masks,m),d.animate([{opacity:B},{opacity:M?1:0}],m)],S=Promise.all(y.map(v=>v.finished)).then(()=>{}).catch(()=>{});n={kind:"playing",entering:M,animations:y,finished:S},await S}return{play:t,cancel:a,reverseOpening:o}}function bt(n,a){const o=Math.max(n.left,a.left),t=Math.max(n.top,a.top);return{left:o,top:t,width:Math.max(0,Math.min(n.left+n.width,a.left+a.width)-o),height:Math.max(0,Math.min(n.top+n.height,a.top+a.height)-t)}}function Wn(n,a){let o={...a};const t=/^(auto|scroll|overlay)$/;for(let r=n.parentElement;r!==document.documentElement;r=r.parentElement){const i=getComputedStyle(r),l=t.test(i.overflowX),s=t.test(i.overflowY);if(!l&&!s)continue;const u=r.getBoundingClientRect(),g=Number(r.style.getPropertyValue("--mp-transition-inset-top"));o=bt(o,{left:l?u.left:o.left,top:s?u.top+g:o.top,width:l?u.width:o.width,height:s?Math.max(0,u.height-g):o.height})}return o}function nt(n,a,o){if(n.kind==="unavailable")return n;const t=wt(a,n.element.getBoundingClientRect(),"cover");return t.clip=bt(t.clip,Wn(n.element,o)),t.clip.width<=0||t.clip.height<=0?{kind:"unavailable"}:(t.radius=parseFloat(getComputedStyle(n.element).borderTopLeftRadius)||0,{kind:"element",element:n.element,frame:t,viewport:o})}const jn=["aria-label","data-phase","data-chrome","inert"],Zn=["aria-hidden","inert","data-media-id"],Kn={key:0,class:"mp-resource-state mp-viewer__loading mp-viewer__pages",role:"status","aria-label":"加载中"},Gn=e.createElementVNode("span",{class:"mp-spinner","aria-hidden":"true"},null,-1),Qn=[Gn],Jn=["inert"],ea={class:"mp-viewer__toolbar"},ta={class:"mp-viewer__title"},na=["disabled"],aa={class:"mp-viewer__footer"},ia={class:"mp-viewer__counter","aria-live":"polite"},ra={key:1,class:"mp-viewer__detail"},oa=e.defineComponent({inheritAttrs:!1,__name:"MediaPreview",props:{items:{},mobile:{type:Boolean,default:!1},teleportDisabled:{type:Boolean,default:!1},keyboardEnabled:{type:Boolean,default:!0},gesturesEnabled:{type:Boolean,default:!0},persistentChrome:{type:Boolean,default:!1},videoLoader:{type:Function,default:Ve},resourcePolicy:{default:()=>Ce},resolveImageSource:{type:Function,default:Re},hasMore:{type:Boolean,default:!1},appearance:{default:"dark"},closeDuration:{default:240},transitionDuration:{default:340},resolveAnchor:{type:Function,default:()=>({kind:"unavailable"})}},emits:["open","opened","ready","closing","close","change","error","originalState","loadMore","phaseChange","chromeChange"],setup(n,{expose:a,emit:o}){const t=e.useAttrs(),r=n,i=o,l=e.ref("closed");e.watch(l,c=>i("phaseChange",c),{flush:"sync"});const s=`mp-video-controls-${e.getCurrentInstance().uid}`,u=e.ref(),g=e.ref(),d=An(()=>N.value,(c,b,x)=>i("originalState",c,b,x)),{originalIds:M,originalStatus:B,originalReason:E,originalRequest:R,readyId:w}=d;let p="",T=-1;const z=e.ref(),h=e.ref(),k=e.ref(),m=e.ref(!1),y=e.ref(0),S=e.ref(!0);e.watch(S,c=>i("chromeChange",c),{flush:"sync"});const v=e.ref(!1),C=e.ref("loading"),L=e.ref(1),P=e.ref(!1),$=e.ref(1),I=e.ref(!1),_=e.ref(!1),W=e.shallowRef(ye);let de="",G={kind:"unavailable"};const re=new Map,ee=new Map;function ge(c){return b=>{ee.set(c,b)}}function K(c){return b=>{re.set(c,b)}}const V=_n(()=>r.items.length,()=>$.value,c=>{p=r.items[c].id,d.reset(),L.value=1,v.value=!1,C.value="loading",i("change",c),Ee(c)},{readOffset:()=>new DOMMatrixReadOnly(getComputedStyle(ee.get(p)).transform).m41,flushLayout:()=>{ee.get(p).getBoundingClientRect()}}),D=V.index,N=e.computed(()=>r.items[D.value]),xe=V.slots,$e=e.computed(()=>l.value==="opening"||m.value?[D.value]:xe.value);e.watch(xe,()=>{e.nextTick(()=>{const c=new Set(xe.value.map(b=>r.items[b].id));for(const b of re.keys())c.has(b)||re.delete(b);for(const b of ee.keys())c.has(b)||ee.delete(b)})});const Q={close:A,setChromeVisible:c=>{S.value=c},goTo:Ae,previous:()=>V.go(-1),next:()=>V.go(1),rotate:(c=90)=>O().rotateBy(c),reset:()=>O().resetTransform(),zoomIn:()=>O().zoomIn(),zoomOut:()=>O().zoomOut(),original:d.requestOriginal,fullscreen:pe,togglePlayback:()=>O().togglePlayback(),toggleLive:()=>{l.value!=="open"||C.value==="loading"||C.value==="error"||(v.value=!v.value)},toggleDetail:()=>{P.value=!P.value}},oe=Xn(),ae=Tt();let fe=Promise.resolve(),le=()=>{},X=0,me="",te=!1,ie="",se="",he=()=>{},ce={kind:"idle"},be=0;const ve=()=>new Promise(c=>requestAnimationFrame(()=>c())),ke=new ResizeObserver(()=>{const c=`${g.value.clientWidth}:${g.value.clientHeight}`,b=`${u.value.clientWidth}:${u.value.clientHeight}`,x=ie!==""&&ie!==c,U=se!==""&&se!==b;ie=c,se=b,$.value=g.value.clientWidth,x&&l.value==="open"&&V.reset(D.value),U&&oe.cancel()});function Ee(c){r.hasMore&&c>=r.items.length-3&&T!==r.items.length&&(T=r.items.length,i("loadMore",c))}function Ue(c,b){c===D.value&&(_.value&&(w.value=N.value.id),i("ready",c,b))}function Oe(c,b,x){c===D.value&&d.updateOriginal(b,x)}e.watch(()=>r.items.map(c=>c.id),c=>{if(l.value==="closed")return;if(c.length===0){X++,oe.cancel(),le(),ae.clear(),V.cancel(),be++,ce.kind==="active"&&ce.animation.cancel(),ke.disconnect(),ie="",se="",he(),i("closing"),l.value="closed",W.value=ye,re.clear(),ee.clear(),document.body.style.overflow=me,i("close");return}const b=c.indexOf(p),x=b>=0?b:Math.min(D.value,c.length-1);(x!==D.value||b<0)&&(b>=0?V.rebase(x):(V.reset(x),p=c[x],d.reset(),L.value=1,v.value=!1,i("change",x))),Ee(x)},{flush:"sync"});function Ae(c){if(!Number.isInteger(c)||c<0||c>=r.items.length)throw new RangeError("无效的预览下标");if(!(l.value!=="open"||c===D.value)){if(Math.abs(c-D.value)===1){V.go(c-D.value);return}V.reset(c),p=r.items[c].id,d.reset(),L.value=1,v.value=!1,C.value="loading",i("change",c),Ee(c)}}function _e(){r.persistentChrome||(S.value=!S.value)}function O(){return re.get(p)}function Pe(c){he();const b=c.element.classList.contains("mp-transition-source");c.element.classList.add("mp-transition-source"),he=()=>{c.element.classList.toggle("mp-transition-source",b)}}function f(){const c=u.value.getBoundingClientRect();return{left:c.left,top:c.top,width:c.width,height:c.height}}function F(){return g.value.getBoundingClientRect()}function q(c=1){const b=F(),x=O().core,U=x.state,J=U.downScale;return{x:b.left+b.width/2+V.state.offset+U.offsetX*J*c+U.downOffsetX,y:b.top+b.height/2+U.offsetY*J*c+U.downOffsetY,width:x.mediaSize.value.width*x.displayScale.value*J*c,height:x.mediaSize.value.height*x.displayScale.value*J*c,rotation:U.rotation,clip:b,radius:0}}async function H(c=0){if(!Number.isInteger(c)||c<0||c>=r.items.length)throw new RangeError("无效的预览下标");if(l.value==="closing"&&await fe,l.value!=="closed"||te)return;const b=++X;if(ae.clear(),me=document.body.style.overflow,document.body.style.overflow="hidden",V.reset(c),p=r.items[c].id,d.reset(),L.value=1,S.value=!0,v.value=!1,C.value="loading",P.value=!1,y.value=0,_.value=!1,l.value="opening",W.value=ye,I.value=!1,de=N.value.id,G={kind:"unavailable"},m.value=!1,i("open",c),await e.nextTick(),b!==X||te)return;$.value=g.value.clientWidth,ke.observe(u.value),ke.observe(g.value);try{const U=await r.resolveAnchor(N.value);if(b!==X)return;const J=nt(U,N.value,f());G=J,W.value=nn(J),I.value=W.value.kind==="image"||O().readiness==="ready";const Be=F();if(J.kind==="element"){const Le=O().readiness==="ready"?O().core.mediaRef.value:W.value.kind==="image"?W.value.image:Qe();if(m.value=!0,await e.nextTick(),b!==X||te)return;Pe(J),await oe.play(z.value,h.value,Le,J.frame,wt(N.value,Be,"contain"),J.viewport,k.value,!0,0,r.transitionDuration)}else y.value=1,m.value=!1,await ue(!0)}catch(U){if(b!==X)return;i("error",Se(U),N.value)}if(b!==X||te||(y.value=1,l.value="open",await e.nextTick(),b!==X||te))return;const x=ae.take();x.kind==="pointer"&&r.gesturesEnabled&&(O().onPointerDown(x.down,F(),x.target),O().onPointerMove(x.latest)),O().core.renderNow(),await ve(),!(b!==X||te)&&(m.value=!1,oe.cancel(),he(),i("opened",c),await ve(),!(b!==X||te||l.value!=="open")&&(_.value=!0,Ee(c)))}function A(){return l.value==="closed"||l.value==="closing"||(fe=j()),fe}async function j(){ae.clear(),V.grab();const c=y.value,b=l.value==="opening",x=!b&&O().readiness==="ready"?O().retainFrame():{image:W.value.kind==="image"&&N.value.id===de?W.value.image:Qe(),scale:1,release:()=>{}};le=x.release;try{let U=b?{kind:"opening"}:{kind:"captured",frame:q(x.scale)};b||O().core.cancelGesture(!0);const J=++X,Be=b?oe.reverseOpening():{kind:"inactive"};Be.kind==="inactive"&&oe.cancel(),V.cancel(),v.value=!1,l.value="closing",i("closing");try{if(await e.nextTick(),J!==X||te||(document.fullscreenElement===u.value&&(await document.exitFullscreen(),await ve(),await ve(),U.kind==="captured"&&(U.frame=q(x.scale))),J!==X||te))return;const Le=b?G:await r.resolveAnchor(N.value);if(J!==X||te)return;const Ie=b?G:nt(Le,N.value,f());if(Be.kind==="reversing")await Be.finished;else if(U.kind==="captured"&&Ie.kind==="element"){const Pt=x.image;Pe(Ie),m.value=!0,await e.nextTick(),await oe.play(z.value,h.value,Pt,U.frame,Ie.frame,Ie.viewport,k.value,!1,c,r.closeDuration)}else m.value=!1,await ue(!1)}catch(Le){i("error",Se(Le),N.value),await ue(!1)}if(J!==X||te)return;ke.disconnect(),ie="",se="",y.value=0,l.value="closed",W.value=ye,re.clear(),ee.clear(),he(),document.body.style.overflow=me,i("close"),await e.nextTick(),oe.cancel()}finally{x.release(),le===x.release&&(le=()=>{})}}async function ue(c){const b=++be,x=c?0:Number(getComputedStyle(u.value).opacity);ce.kind==="active"&&ce.animation.cancel(),u.value.style.opacity=String(x);const U=u.value.animate([{opacity:x},{opacity:c?1:0}],{duration:matchMedia("(prefers-reduced-motion: reduce)").matches?0:180,fill:"forwards"});ce={kind:"active",animation:U},await U.finished.catch(()=>{}),!(b!==be||te)&&(u.value.style.opacity=c?"1":"0",U.cancel(),ce={kind:"idle"})}async function pe(){if(document.fullscreenEnabled)try{document.fullscreenElement===u.value?await document.exitFullscreen():await u.value.requestFullscreen()}catch(c){i("error",Se(c),N.value)}}function we(c){if(r.gesturesEnabled){if(l.value==="opening"){ae.start(c);return}l.value==="open"&&O().onPointerDown(c,F())&&V.grab()}}function ze(c){if(l.value==="opening"){r.gesturesEnabled&&ae.finish(c,F())&&A();return}l.value==="open"&&(O().onPointerUp(c),l.value==="open"&&V.resume())}function Xe(c){ae.clear(),l.value==="open"&&(O().onPointerCancel(c),l.value==="open"&&V.resume())}function kt(c){l.value==="opening"&&ae.clear(),l.value==="open"&&c.target===O().core.containerRef.value&&Xe(c)}function Mt(c){l.value==="opening"&&ae.move(c),l.value==="open"&&O().onPointerMove(c)}function xt(c){l.value==="open"&&r.gesturesEnabled&&O().onWheel(c)}function Et(c){l.value==="open"&&(y.value=1-c)}function St(c){l.value==="open"&&V.drag(c)}function Ct(c,b){l.value==="open"&&(v.value=!1,V.release(c,b))}function Rt(c){L.value=c,c>1.02&&!r.persistentChrome&&(S.value=!1)}function We(c){if(!(l.value==="closed"||!r.keyboardEnabled)&&!(c.key==="Escape"&&document.fullscreenElement===u.value)){if(c.key==="Escape"){c.preventDefault(),A();return}if(!(l.value!=="open"||c.target.matches("input, textarea, select, button, [role='slider']"))){if(N.value.type==="video"){if(c.code==="Space"){c.preventDefault(),O().togglePlayback();return}if(c.key==="Enter"){c.preventDefault(),O().toggleFullscreen();return}}if(N.value.type==="live-photo"&&c.code==="Space"){c.preventDefault(),Q.toggleLive();return}c.key==="ArrowLeft"&&(c.preventDefault(),V.go(-1)),c.key==="ArrowRight"&&(c.preventDefault(),V.go(1)),(c.key==="+"||c.key==="=")&&Q.zoomIn(),c.key==="-"&&Q.zoomOut(),c.key==="0"&&Q.reset()}}}return e.onMounted(()=>{document.addEventListener("keydown",We)}),e.onBeforeUnmount(()=>{te=!0,X+=1,oe.cancel(),le(),ae.clear(),be+=1,ce.kind==="active"&&ce.animation.cancel(),he(),ke.disconnect(),document.removeEventListener("keydown",We),l.value!=="closed"&&(document.body.style.overflow=me)}),a({open:H,...Q,currentIndex:D,phase:l,element:u,mediaElement:()=>O().core.mediaRef.value,canvasElement:()=>O().core.canvasRef.value}),(c,b)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:c.teleportDisabled},[l.value!=="closed"?(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:0,ref_key:"root",ref:u},e.unref(t),{class:["mp-viewer",{"is-mobile":c.mobile,"is-album":c.appearance==="album"}],role:"dialog","aria-modal":"true","aria-label":N.value.title,"data-phase":l.value,"data-chrome":S.value?"visible":"hidden",inert:l.value==="closing",onPointerdown:we,onPointermove:Mt,onPointerup:ze,onPointercancel:Xe,onLostpointercapture:kt,onWheel:xt}),[e.createElementVNode("div",{ref_key:"backdrop",ref:k,class:"mp-viewer__backdrop",style:e.normalizeStyle({opacity:y.value})},null,4),e.createElementVNode("div",{id:s,class:"mp-viewer__video-controls"}),e.createElementVNode("div",{ref_key:"mediaViewport",ref:g,class:e.normalizeClass(["mp-viewer__pages",{"is-transitioning":m.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($e.value,x=>(e.openBlock(),e.createElementBlock("div",{key:c.items[x].id,ref_for:!0,ref:ge(c.items[x].id),class:"mp-viewer__page",style:e.normalizeStyle({transform:`translate3d(${(x-e.unref(D))*e.unref(V).stride()+e.unref(V).state.offset}px,0,0)`,transition:e.unref(V).state.settling?`transform ${e.unref(V).state.duration}ms cubic-bezier(.22,.61,.36,1)`:"none"}),"aria-hidden":x!==e.unref(D),inert:x!==e.unref(D),"data-media-id":c.items[x].id},[e.createVNode(yt,{ref_for:!0,ref:K(c.items[x].id),media:c.items[x],"video-loader":c.videoLoader,rendering:l.value==="open",paging:e.unref(V).state.dragging||e.unref(V).state.preparing||e.unref(V).state.settling||e.unref(V).state.grabbed,"external-gestures":"",active:x===e.unref(D),disabled:l.value!=="open"||!c.gesturesEnabled,"inactive-reset-duration":e.unref(V).state.duration,"resource-policy":c.resourcePolicy,"resolve-source":c.resolveImageSource,"request-version":x===e.unref(D)?e.unref(R):0,"load-enabled":x===e.unref(D)?_.value&&l.value==="open":l.value==="open"&&!m.value&&e.unref(w)===N.value.id,"teleport-controls":"","controls-target":`#${s}`,"controls-visible":S.value&&y.value===1,"initial-image":c.items[x].id===e.unref(de)?W.value:e.unref(ye),quality:x===e.unref(D)&&e.unref(M).has(c.items[x].id)?"full":x===e.unref(D)?"screen":"thumbnail","live-playing":v.value,onTap:_e,onScale:Rt,onPageDrag:St,onPageRelease:Ct,onClose:A,onSwipeDownProgress:Et,onLiveState:U=>{x===e.unref(D)&&(C.value=U)},onLiveEnded:()=>{x===e.unref(D)&&(v.value=!1)},onReady:U=>Ue(x,U),onOriginalState:(U,J)=>Oe(x,U,J),onError:U=>i("error",U,c.items[x])},null,8,["media","video-loader","rendering","paging","active","disabled","inactive-reset-duration","resource-policy","resolve-source","request-version","load-enabled","controls-target","controls-visible","initial-image","quality","live-playing","onLiveState","onLiveEnded","onReady","onOriginalState","onError"])],12,Zn))),128))],2),e.withDirectives(e.createElementVNode("div",{ref_key:"transitionMask",ref:h,class:"mp-shared-clip","aria-hidden":"true"},[e.createElementVNode("canvas",{ref_key:"transitionCanvas",ref:z,class:"mp-shared-transition"},null,512)],512),[[e.vShow,m.value]]),l.value==="opening"&&!I.value?(e.openBlock(),e.createElementBlock("div",Kn,Qn)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mp-viewer__chrome",{"is-hidden":!S.value||l.value!=="open"||y.value<1}]),inert:!S.value||l.value!=="open"||y.value<1},[e.renderSlot(c.$slots,"toolbar",{media:N.value,index:e.unref(D),total:c.items.length,scale:L.value,controls:Q,originalStatus:e.unref(B),originalReason:e.unref(E),livePlaying:v.value,liveStatus:C.value},()=>[e.createElementVNode("header",ea,[e.createElementVNode("button",{type:"button","aria-label":"关闭预览",onClick:A},"‹"),e.createElementVNode("div",ta,[e.createElementVNode("strong",null,e.toDisplayString(N.value.title),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(D)+1)+" / "+e.toDisplayString(c.items.length),1)]),e.createElementVNode("button",{type:"button","aria-label":"旋转图片",disabled:N.value.type==="video",onClick:b[0]||(b[0]=x=>Q.rotate())}," ↻ ",8,na)]),e.createElementVNode("footer",aa,[N.value.type!=="video"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button","aria-label":"缩小",onClick:b[1]||(b[1]=(...x)=>Q.zoomOut&&Q.zoomOut(...x))},"−"),e.createElementVNode("button",{type:"button","aria-label":"放大",onClick:b[2]||(b[2]=(...x)=>Q.zoomIn&&Q.zoomIn(...x))},"+"),e.createElementVNode("button",{type:"button","aria-label":"复位",onClick:b[3]||(b[3]=(...x)=>Q.reset&&Q.reset(...x))},"复位")],64)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button","aria-label":"图片详情",onClick:b[4]||(b[4]=(...x)=>Q.toggleDetail&&Q.toggleDetail(...x))},"ⓘ")])]),!c.mobile&&e.unref(D)>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mp-viewer__arrow is-left","aria-label":"上一张",onClick:b[5]||(b[5]=x=>e.unref(V).go(-1))}," ‹ ")):e.createCommentVNode("",!0),!c.mobile&&e.unref(D)<c.items.length-1?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mp-viewer__arrow is-right","aria-label":"下一张",onClick:b[6]||(b[6]=x=>e.unref(V).go(1))}," › ")):e.createCommentVNode("",!0),e.createElementVNode("div",ia,e.toDisplayString(e.unref(D)+1)+" / "+e.toDisplayString(c.items.length),1)],10,Jn),P.value?(e.openBlock(),e.createElementBlock("aside",ra,[e.createElementVNode("button",{type:"button","aria-label":"关闭详情",onClick:b[7]||(b[7]=x=>P.value=!1)},"×"),e.createElementVNode("strong",null,e.toDisplayString(N.value.title),1),e.createElementVNode("span",null,e.toDisplayString(N.value.width)+" × "+e.toDisplayString(N.value.height),1),e.createElementVNode("span",null,e.toDisplayString(N.value.type)+" · "+e.toDisplayString(L.value.toFixed(2))+"×",1)])):e.createCommentVNode("",!0)],16,jn)):e.createCommentVNode("",!0)],8,["disabled"]))}});function la(n,a,o,t=2){const r=Math.max(1,(a-t*(o-1))/o),i=[],l=new Map;let s=0,u=0;return n.forEach((g,d)=>{d>0&&(i.push({kind:"header",group:d,first:0,count:0,start:s,end:s+52}),s+=52);for(let M=0;M<g.items.length;M+=o){const B=Math.min(o,g.items.length-M),E=i.length;i.push({kind:"items",group:d,first:M,count:B,start:s,end:s+r});for(let R=0;R<B;R++)l.set(g.items[M+R].id,E);u+=B,s+=r+(M+B<g.items.length?t:0)}}),{rows:i,locations:l,height:s,size:r,total:u}}function at(n,a){let o=0,t=n.length;for(;o<t;){const r=o+t>>>1;n[r].end<a?o=r+1:t=r}return Math.min(o,Math.max(0,n.length-1))}const sa=["data-total-items","data-rendered-items"],ca=e.defineComponent({__name:"VirtualTimeline",props:{groups:{},scrollElement:{},mobile:{type:Boolean,default:!1},hasMore:{type:Boolean,default:!1}},emits:["loadMore","date"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(),l=e.ref(390),s=e.ref(844),u=e.ref(0),g=e.computed(()=>t.mobile?l.value>=640?5:l.value>=480?4:3:Math.max(1,Math.floor((l.value+2)/172))),d=e.computed(()=>la(t.groups,l.value,g.value)),M=e.computed(()=>{const k=d.value.rows,m=at(k,Math.max(0,u.value-d.value.size*3)),y=u.value+s.value+d.value.size*3;let S=m;for(;S<k.length&&k[S].start<=y;)S++;return k.slice(m,S)}),B=e.computed(()=>M.value.reduce((k,m)=>k+m.count,0));let E=0,R=!1,w=()=>{};function p(){const k=t.scrollElement();l.value=k.clientWidth,s.value=k.clientHeight,u.value=k.scrollTop,d.value.rows.length>0&&r("date",t.groups[d.value.rows[at(d.value.rows,u.value)].group].key);const m=u.value+s.value>=d.value.height-d.value.size*3;m&&t.hasMore&&!R&&(R=!0,r("loadMore")),m||(R=!1)}function T(){E===0&&(E=requestAnimationFrame(()=>{E=0,p()}))}const z=new ResizeObserver(p);e.onMounted(()=>{const k=t.scrollElement(),m=k.style.overflowAnchor;k.style.overflowAnchor="none",w=()=>{k.style.overflowAnchor=m},k.addEventListener("scroll",T,{passive:!0}),z.observe(k),p()}),e.onBeforeUnmount(()=>{t.scrollElement().removeEventListener("scroll",T),z.disconnect(),cancelAnimationFrame(E),w()}),e.watch(()=>t.groups,()=>{R=!1,e.nextTick(p)});async function h(k){if(!d.value.locations.has(k))return{kind:"unavailable"};const m=d.value.rows[d.value.locations.get(k)],y=t.scrollElement();return(m.start<y.scrollTop||m.end>y.scrollTop+y.clientHeight)&&(y.scrollTop=Math.max(0,m.start-(y.clientHeight-d.value.size)/2)),p(),await e.nextTick(),await new Promise(v=>requestAnimationFrame(()=>v())),{kind:"element",element:[...i.value.querySelectorAll("[data-id]")].find(v=>v.dataset.id===k).querySelector("img")}}return a({resolveAnchor:h,rendered:B,total:e.computed(()=>d.value.total)}),(k,m)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:i,class:"mp-virtual-timeline",style:e.normalizeStyle({height:d.value.height+"px"}),"data-total-items":d.value.total,"data-rendered-items":B.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,y=>(e.openBlock(),e.createElementBlock("div",{key:k.groups[y.group].key+":"+y.kind+":"+y.first,class:"mp-timeline-row",style:e.normalizeStyle({top:y.start+"px",height:y.end-y.start+"px",display:y.kind==="items"?"grid":"block",gridTemplateColumns:`repeat(${g.value},minmax(0,1fr))`,gap:"2px"})},[y.kind==="header"?e.renderSlot(k.$slots,"header",{key:0,group:k.groups[y.group],index:y.group},void 0,!0):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(k.groups[y.group].items.slice(y.first,y.first+y.count),S=>e.renderSlot(k.$slots,"item",{key:S.id,item:S},void 0,!0)),128))],4))),128))],12,sa))}}),ua=(n,a)=>{const o=n.__vccOpts||n;for(const[t,r]of a)o[t]=r;return o},da=ua(ca,[["__scopeId","data-v-05c756fb"]]);exports.ImageCanvasRenderer=qe;exports.ImageStore=ft;exports.LivePhotoRenderer=ht;exports.MediaPreview=oa;exports.PreviewStage=yt;exports.VideoDomRenderer=vt;exports.VirtualTimeline=da;exports.defaultImagePolicy=Ce;exports.defaultImageSource=Re;exports.formatVideoTime=Me;exports.nativeVideoSource=Ve;exports.previewImageStore=mt;exports.usePreviewViewport=st;
|
|
1
|
+
"use strict";var Lt=Object.defineProperty;var Tt=(n,a,o)=>a in n?Lt(n,a,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[a]=o;var ze=(n,a,o)=>Tt(n,typeof a!="symbol"?a+"":a,o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");var H=typeof document<"u"?document.currentScript:null;function Te(n,a){return Math.hypot(n.x-a.x,n.y-a.y)}function je(n,a){return{x:(n.x+a.x)/2,y:(n.y+a.y)/2}}function it(n,a,o){return Math.hypot(n,a)<9?"pending":o>1.01?"pan":Math.abs(n)>Math.abs(a)*1.1?"page":a>0&&Math.abs(a)>Math.abs(n)*1.1?"dismiss":"pending"}function rt(n,a,o){return n>Math.min(o.width,o.height)*.14||n>16&&a>.35}function ot(){let n={x:0,y:0,time:0},a={x:0,y:0};return{reset(o,t){n={...o,time:t},a={x:0,y:0}},move(o,t){const r=Math.max(8,t-n.time);a={x:(o.x-n.x)/r,y:(o.y-n.y)/r},n={...o,time:t}},read(o){return o-n.time<100?a:{x:0,y:0}}}}function Ft(){const n=new Map;let a=!1;function o(){n.clear(),a=!1}function t(){const i=!a&&n.size===1?{kind:"pointer",...n.values().next().value}:{kind:"empty"};return o(),i}function r(i){if(!n.has(i.pointerId))return;const l=n.get(i.pointerId);l.latest=i,l.velocity.move({x:i.clientX,y:i.clientY},i.timeStamp)}return{clear:o,take:t,move:r,start(i){if(i.pointerType==="mouse"&&i.button!==0)return;const l=i.target;if(l.closest("button, input, a, select"))return;const s=ot();s.reset({x:i.clientX,y:i.clientY},i.timeStamp),n.set(i.pointerId,{down:i,latest:i,target:l,velocity:s}),a||(a=n.size>1)},finish(i,l){if(!n.has(i.pointerId))return!1;if(a)return n.delete(i.pointerId),n.size===0&&o(),!1;const s=t();if(s.kind==="empty")return!1;const u=i.clientX-s.down.clientX,m=i.clientY-s.down.clientY,d=s.velocity.read(i.timeStamp).y;return it(u,m,1)==="dismiss"&&rt(m,d,l)}}}function Se(n){return n instanceof Error?n:new Error(String(n))}function Vt(n){let a=0,o=()=>{};function t(){a+=1;const i=o;o=()=>{},i()}function r(){t(),n.reset()}return{clear:r,dispose:t,start(i,l,s){r();const u=a;o=s(i,l,m=>{u===a&&n.error(m)},m=>{u===a&&n.duration(m)},m=>{u===a&&n.quality(m.kind!=="available"?m:{...m,select:d=>{u===a&&m.select(d)}})})}}}const Ve=(n,a)=>(n.src=a.videoSrc||a.src,()=>{n.removeAttribute("src"),n.load()});function lt(n,a,o,t,r){const i=e.ref(0),l=Vt(r);let s=()=>{};return e.onMounted(()=>{s=e.watch(()=>[a().id,a().src,a().videoSrc,o(),t(),i.value],()=>{o()?l.start(n(),a(),t()):l.clear()},{immediate:!0,flush:"post"})}),e.onBeforeUnmount(()=>{s(),l.dispose()}),()=>i.value++}function Z(n,a,o){return Math.min(Math.max(n,a),o)}function Ze(n,a=2){return Number(n.toFixed(a))}function $t(n,a){return n.width<=0||n.height<=0||a.width<=0||a.height<=0?1:Math.min(a.width/n.width,a.height/n.height)}function Ke(n){const a=(n%360+360)%360;return a===90||a===180||a===270?a:0}function It(n,a){return a===90||a===270?{width:n.height,height:n.width}:n}function qt(n,a,o){return`translate3d(${Ze(n)}px, ${Ze(a)}px, 0) scale3d(${o}, ${o}, 1)`}function zt(n){return 1-(1-n)**3}const Dt=16;function Nt(n,a){const o=n<1?1:a;if(n>=1&&n<=a)return n;const t=Math.abs(n-o),r=o*.25;return o+Math.sign(n-o)*(r*t)/(r+t)}function _t(n,a){const o=n<1?1:a;if(n>=1&&n<=a)return n;const t=Math.abs(n-o),r=o*.25;return o+Math.sign(n-o)*(r*t)/Math.max(Number.EPSILON,r-t)}function Ut(n,a){return n.deltaMode===1?2**(-n.deltaY*.05):n.deltaMode===2?2**-n.deltaY:a||Math.abs(n.deltaY)>=40?2**(-n.deltaY*.002):Math.exp(-n.deltaY*.008)}function At(n,a,o=650){let t={kind:"idle"};function r(){const l=t;t={kind:"idle"},l.kind==="pending"&&clearTimeout(l.timer),l.kind==="active"&&a()}function i(){r(),t={kind:"pending",timer:setTimeout(()=>{t={kind:"active"},n()},o)}}return{arm:i,cancel:r}}function Ot(n,a,o){const t=Z(n,-a,a);return{offsetX:t,pageOffset:o?n-t:0}}function st(n={}){const a={motionActive:()=>!1,onTap:()=>{},onDoubleTap:()=>{},onScale:f=>{},onSwipeDownProgress:f=>{},onSwipeDownClose:()=>{},onSwipeLeft:()=>{},onSwipeRight:()=>{},onPageDrag:f=>{},onPageRelease:(f,V)=>{Math.abs(f)<60||(f<0?a.onSwipeLeft():a.onSwipeRight())},interactive:()=>!0,zoomable:()=>!0,doubleTapZoom:()=>2.5,zoomLimit:()=>Dt,holdable:()=>!1,onHoldStart:()=>{},onHoldEnd:()=>{},...n},o=e.ref(),t=e.ref(),r=e.shallowRef(),i=e.ref({width:1,height:1}),l=e.ref({width:1,height:1}),s=e.reactive({level:1,offsetX:0,offsetY:0,rotation:0,zooming:!1,draggingDown:!1,downOffsetX:0,downOffsetY:0,downScale:1}),u=e.computed(()=>It(l.value,s.rotation)),m=e.computed(()=>$t(u.value,i.value)),d=e.computed(()=>m.value*s.level),S=e.computed(()=>({width:u.value.width*d.value,height:u.value.height*d.value})),M=e.computed(()=>({transform:qt(s.downOffsetX,s.downOffsetY,s.downScale)})),y=new Set,R=e.ref(!1),w=e.ref(!1),h=e.ref(!1),x=e.computed(()=>R.value||w.value||h.value||a.motionActive());let I,g=0,b=0,p=setTimeout(()=>{},0),k=-1e3,B={x:0,y:0},F=!1,L="idle",$=!0,P=!1,v=0;const T=new Map;let z={x:0,y:0};const X=ot();let de=0,G={left:0,top:0},re=1,ee=1,he={x:0,y:0},K=le();const q=At(()=>{L="hold",clearTimeout(p),k=-1e3,a.onHoldStart()},()=>a.onHoldEnd()),D=new ResizeObserver(f=>{for(const V of f)ae(V.contentRect)}),N=new Set,xe=f=>{(f.key==="Control"||f.key==="Meta")&&N.add(f.key)},$e=f=>N.delete(f.key),Q=()=>{q.cancel(),N.clear()},oe=()=>{document.hidden&&q.cancel()};e.onMounted(()=>{D.observe(o.value),ae(o.value.getBoundingClientRect()),window.addEventListener("keydown",xe),window.addEventListener("keyup",$e),window.addEventListener("blur",Q),document.addEventListener("visibilitychange",oe)}),e.onBeforeUnmount(()=>{F=!0,q.cancel(),window.removeEventListener("keydown",xe),window.removeEventListener("keyup",$e),window.removeEventListener("blur",Q),document.removeEventListener("visibilitychange",oe),D.disconnect(),cancelAnimationFrame(g),cancelAnimationFrame(b),clearTimeout(p),clearTimeout(I)});function ae(f){i.value={width:f.width,height:f.height},Object.assign(s,W(s.offsetX,s.offsetY,s.level)),fe()}function fe(){F||g||(g=requestAnimationFrame(()=>{g=0,y.forEach(f=>f())}))}function le(){return{level:s.level,offsetX:s.offsetX,offsetY:s.offsetY}}function W(f,V,_){const Y=Math.max(0,(u.value.width*m.value*_-i.value.width)/2),O=Math.max(0,(u.value.height*m.value*_-i.value.height)/2);return{offsetX:Z(f,-Y,Y),offsetY:Z(V,-O,O)}}function me(f){Object.assign(s,f),a.onScale(s.level),fe()}function te(f,V=250){cancelAnimationFrame(b),R.value=!0;const _=le(),Y=performance.now(),O=matchMedia("(prefers-reduced-motion: reduce)").matches?0:V,j=ue=>{const pe=O===0?1:Z((ue-Y)/O,0,1),we=zt(pe);me({level:_.level+(f.level-_.level)*we,offsetX:_.offsetX+(f.offsetX-_.offsetX)*we,offsetY:_.offsetY+(f.offsetY-_.offsetY)*we}),pe<1?b=requestAnimationFrame(j):R.value=!1};b=requestAnimationFrame(j)}function ie(){return{x:i.value.width/2,y:i.value.height/2}}function se(f,V=ie(),_=!1){if(!a.zoomable())return;cancelAnimationFrame(b),R.value=!1;const Y=Z(f,1,a.zoomLimit()),O=Y/s.level,j=ie(),ue=W(V.x-j.x-(V.x-j.x-s.offsetX)*O,V.y-j.y-(V.y-j.y-s.offsetY)*O,Y),pe={level:Y,...ue};_?te(pe):me(pe)}function ge(){s.draggingDown=!1,s.downOffsetX=0,s.downOffsetY=0,s.downScale=1,a.onSwipeDownProgress(0)}function ce(f=!1){f&&(cancelAnimationFrame(b),R.value=!1),q.cancel(),T.clear(),w.value=!1,h.value=!1,clearTimeout(I),L="idle",v=0,s.zooming=!1,f||(ge(),a.onPageDrag(0)),clearTimeout(p),k=-1e3}function be(f=0){cancelAnimationFrame(b),R.value=!1,ce();const V={level:1,offsetX:0,offsetY:0};f>0&&(s.level!==1||s.offsetX!==0||s.offsetY!==0)?te(V,f):me(V)}function ve(f,V=G){return{x:f.clientX-V.left,y:f.clientY-V.top}}function ke(){q.cancel(),$=!1,P=!1,v=0;const[f,V]=[...T.values()];re=_t(s.level,a.zoomLimit()),ee=Math.max(1,Te(f,V)),he=je(f,V),K=le(),L="pinch",s.zooming=!0,ge(),a.onPageDrag(0),clearTimeout(p),k=-1e3}function Ee(f,V=o.value.getBoundingClientRect(),_=f.target){if(!a.interactive()||f.pointerType==="mouse"&&f.button!==0||_.closest("button, input, a, select")||_ instanceof HTMLVideoElement&&_.controls&&f.clientY>_.getBoundingClientRect().bottom-48)return!1;if(cancelAnimationFrame(b),R.value=!1,w.value=!0,T.size===0&&(G=V),T.set(f.pointerId,ve(f)),o.value.setPointerCapture(f.pointerId),T.size>=2)return ke(),!0;z=ve(f),de=performance.now(),X.reset(z,f.timeStamp),K=le(),L="pending",$=!0,P=!1,v=0;const Y=S.value.width/2,O=S.value.height/2,j=ie();return a.holdable()&&Math.abs(z.x-j.x-s.offsetX)<=Y&&Math.abs(z.y-j.y-s.offsetY)<=O&&(clearTimeout(p),q.arm()),!0}function _e(f){if(!T.has(f.pointerId))return;const V=ve(f);if(T.set(f.pointerId,V),L==="pinch"&&T.size>=2){if(!a.zoomable())return;const[O,j]=[...T.values()],ue=ie(),pe=je(O,j);re*=Math.max(1,Te(O,j))/ee;const we=Nt(re,a.zoomLimit()),Ie=we/K.level;me({level:we,...W(pe.x-ue.x-(he.x-ue.x-K.offsetX)*Ie,pe.y-ue.y-(he.y-ue.y-K.offsetY)*Ie,we)}),K=le(),ee=Math.max(1,Te(O,j)),he=pe,f.preventDefault();return}if(L==="idle")return;const _=V.x-z.x,Y=V.y-z.y;if(L==="hold"){if(f.preventDefault(),Math.hypot(_,Y)<9)return;q.cancel(),L="pending"}if(Math.hypot(_,Y)>=9&&q.cancel(),X.move(V,f.timeStamp),L==="pending"&&(L=it(_,Y,s.level),P=L==="pan"&&$&&Math.abs(_)>Math.abs(Y)*1.1),L!=="pending")if(clearTimeout(p),k=-1e3,f.preventDefault(),L==="pan"){const O=Math.max(0,(S.value.width-i.value.width)/2),j=Ot(K.offsetX+_,O,P);me({level:s.level,...W(j.offsetX,K.offsetY+Y,s.level)}),j.pageOffset!==v&&(v=j.pageOffset,a.onPageDrag(v))}else L==="page"?a.onPageDrag(_):L==="dismiss"&&(s.draggingDown=!0,s.downOffsetX=_*.65,s.downOffsetY=Math.max(0,Y),s.downScale=Z(1-Math.max(0,Y)/i.value.height*.6,.65,1),a.onSwipeDownProgress(Z(Y/(i.value.height*.55),0,.85)))}function Ue(f){if(!T.has(f.pointerId))return;if(q.cancel(),T.delete(f.pointerId),w.value=T.size>0,L==="pinch"){T.size>0?(z=[...T.values()][0],K=le(),L="pan"):(L="idle",s.zooming=!1,se(Math.max(1,s.level),ie(),!0));return}if(T.size>0)return;const V=ve(f),_=V.x-z.x,Y=V.y-z.y,O=X.read(f.timeStamp);L==="page"||L==="pan"&&v!==0?a.onPageRelease(L==="page"?_:v,O.x):L==="dismiss"?rt(Y,O.y,i.value)?a.onSwipeDownClose():ge():L==="pending"&&performance.now()-de<300&&Te(z,V)<9?Oe(V):(s.level<1||s.level>a.zoomLimit())&&se(s.level,ie(),!0),s.zooming=!1,L="idle"}function Ae(f){if(!T.has(f.pointerId))return;const V=L==="page"||L==="pan"&&v!==0;ce(),V&&a.onPageRelease(0,0),(s.level<1||s.level>a.zoomLimit())&&se(s.level,ie(),!0)}function Oe(f){const V=performance.now();V-k<280&&Te(f,B)<36?(clearTimeout(p),k=-1e3,a.onDoubleTap(),se(s.level>1.01?1:a.doubleTapZoom(),f,!0)):(k=V,B=f,p=setTimeout(a.onTap,280))}function A(f){if(a.interactive()){if(q.cancel(),h.value=!0,clearTimeout(I),I=setTimeout(()=>{h.value=!1},120),f.ctrlKey||f.metaKey)f.preventDefault(),se(s.level*Ut(f,N.size>0),ve(f,o.value.getBoundingClientRect()));else if(s.level>1){f.preventDefault();const V=f.deltaMode===1?16:1;me({level:s.level,...W(s.offsetX-f.deltaX*V,s.offsetY-f.deltaY*V,s.level)})}}}const Be={state:s,motionActive:x,containerRef:o,canvasRef:t,mediaRef:r,viewportSize:i,mediaSize:l,visualMediaSize:u,displaySize:S,displayScale:d,downDragStyle:M,requestRender:fe,renderNow:()=>y.forEach(f=>f()),zoomTo:se,resetTransform:be,cancelGesture:ce,setMediaElement(f){r.value=f,f instanceof HTMLVideoElement&&fe()},setMediaSize(f){l.value=f,fe()},clearMedia(){r.value=void 0},registerRenderHandler(f){return y.add(f),()=>y.delete(f)},setRotation(f,V=!0){s.rotation=Ke(f),V&&be(),fe()},rotateBy(f=90){Be.setRotation(Ke(s.rotation+f))}};return{core:Be,onPointerDown:Ee,onPointerMove:_e,onPointerUp:Ue,onPointerCancel:Ae,onWheel:A}}function Ht(n){const a=n.rotation*Math.PI/180,o=Math.round(Math.cos(a)),t=Math.round(Math.sin(a)),r=n.size.width/2-o*n.offsetX-t*n.offsetY,i=n.size.height/2+t*n.offsetX-o*n.offsetY,l=(Math.abs(o)*n.viewport.width+Math.abs(t)*n.viewport.height)/2,s=(Math.abs(t)*n.viewport.width+Math.abs(o)*n.viewport.height)/2,u=Z(r-l,0,n.size.width),m=Z(i-s,0,n.size.height);return{x:u,y:m,width:Z(r+l,0,n.size.width)-u,height:Z(i+s,0,n.size.height)-m}}function Yt(n,a,o,t){const r=Ht(o);if(r.width<=0||r.height<=0)return;n.imageSmoothingEnabled=!0,n.imageSmoothingQuality=t?"low":"high",n.translate(o.viewport.width/2+o.offsetX,o.viewport.height/2+o.offsetY),n.rotate(o.rotation*Math.PI/180);const{width:i,height:l}=o.size,s="naturalWidth"in a?a.naturalWidth:a.width,u="naturalHeight"in a?a.naturalHeight:a.height;if(r.width===i&&r.height===l){n.drawImage(a,-i/2,-l/2,i,l);return}n.drawImage(a,r.x/i*s,r.y/l*u,r.width/i*s,r.height/l*u,r.x-i/2,r.y-l/2,r.width,r.height)}const Xt={class:"mp-dom-renderer mp-gif-renderer"},Wt=["src","alt"],jt=e.defineComponent({__name:"AnimatedImageLayer",props:{core:{},src:{},title:{}},setup(n){const a=n,o=e.computed(()=>({transform:`translate(-50%, -50%) translate3d(${a.core.state.offsetX}px, ${a.core.state.offsetY}px, 0)`})),t=e.computed(()=>({width:`${a.core.mediaSize.value.width*a.core.displayScale.value}px`,height:`${a.core.mediaSize.value.height*a.core.displayScale.value}px`,transform:`rotate(${a.core.state.rotation}deg)`,pointerEvents:"none"}));return(r,i)=>(e.openBlock(),e.createElementBlock("div",Xt,[e.createElementVNode("div",{class:"mp-dom-renderer__frame",style:e.normalizeStyle(o.value)},[e.createElementVNode("img",{src:r.src,alt:r.title,draggable:!1,class:"mp-dom-renderer__node",style:e.normalizeStyle(t.value)},null,12,Wt)],4)]))}});function Zt(){const n=new Set;let a=[];const o=new Map;let t={kind:"empty"};function r(){for(const i of n)o.has(i)||a.includes(i)||t.kind==="owned"&&t.lease===i||(i.release(),n.delete(i))}return{replace(i){a=i,i.forEach(l=>n.add(l)),r()},display(i){t={kind:"owned",lease:i},r()},retainDisplay(){if(t.kind==="empty")return()=>{};const i=t.lease;o.set(i,o.has(i)?o.get(i)+1:1);let l=!1;return()=>{if(l)return;l=!0;const s=o.get(i)-1;s===0?o.delete(i):o.set(i,s),r()}},clearDisplay(){t={kind:"empty"},r()},dispose(){a=[],t={kind:"empty"},r()}}}const ne={maxDecodedPixels:64e6,maxCanvasPixels:6e6,maxDevicePixelRatio:2.5,maxOriginalBytes:32*1024*1024,maxPreviewBytes:12*1024*1024,cacheBytes:96*1024*1024,cacheEntries:24,concurrency:3};class Fe extends Error{constructor(a){super(a),this.name="ImageLimitError"}}function ct(n,a){if(n.naturalWidth*n.naturalHeight>a)throw new Fe("图片像素超过解码保护限制,请提供较小的适屏资源")}const He="原图超过资源限制";function Kt(n){return n instanceof Fe?{status:"blocked",reason:He}:{status:"error",reason:n instanceof Error?n.message:"原图加载失败,可重试"}}const ut=`(function(){"use strict";self.onmessage=async({data:a})=>{try{const t=await createImageBitmap(a.blob);let e=t;try{const s=Math.min(1,Math.sqrt(a.maxMotionPixels/(t.width*t.height)));s<1&&(e=await createImageBitmap(t,{resizeWidth:Math.max(1,Math.floor(t.width*s)),resizeHeight:Math.max(1,Math.floor(t.height*s)),resizeQuality:"high"}));const r=e===t?[t]:[t,e];self.postMessage({status:"ready",full:t,motion:e},{transfer:r})}catch(s){throw e!==t&&e.close(),t.close(),s}}catch(t){self.postMessage({status:"error",message:t instanceof Error?t.message:"图片位图准备失败"})}}})();
|
|
2
|
+
`,Ge=typeof self<"u"&&self.Blob&&new Blob([ut],{type:"text/javascript;charset=utf-8"});function Gt(n){let a;try{if(a=Ge&&(self.URL||self.webkitURL).createObjectURL(Ge),!a)throw"";const o=new Worker(a,{name:n==null?void 0:n.name});return o.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(a)}),o}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(ut),{name:n==null?void 0:n.name})}finally{a&&(self.URL||self.webkitURL).revokeObjectURL(a)}}function Ye({full:n,motion:a}){a!==n&&a.close(),n.close()}function Qt(n,a,o){return o.throwIfAborted(),new Promise((t,r)=>{const i=new Gt,l=()=>{o.removeEventListener("abort",s),i.terminate()},s=()=>{l(),r(o.reason)};i.onmessage=({data:u})=>{if(l(),u.status==="error"){r(new Error(u.message));return}if(o.aborted){Ye(u),r(o.reason);return}t(u)},i.onerror=u=>{l(),r(new Error(u.message||"图片位图准备失败"))},o.addEventListener("abort",s,{once:!0});try{i.postMessage({blob:n,maxMotionPixels:a})}catch(u){l(),r(u)}})}function Jt(n){return n[0]===71&&n[1]===73&&n[2]===70&&n[3]===56&&(n[4]===55||n[4]===57)&&n[5]===97}async function en(n,a,o){await n.decode(),o.throwIfAborted();const t=URL.createObjectURL(a);return{image:n,source:n,motionSource:n,animation:{kind:"gif",url:t},bytes:n.naturalWidth*n.naturalHeight*4+a.size,dispose:()=>URL.revokeObjectURL(t)}}function dt(n){return{image:n,source:n,motionSource:n,bytes:n.naturalWidth*n.naturalHeight*4,dispose:()=>{}}}async function tn(n,a,o){const t=new Uint8Array(await a.slice(0,6).arrayBuffer());if(o.throwIfAborted(),Jt(t))return en(n,a,o);if(!(t[0]===255&&t[1]===216&&t[2]===255))return await n.decode(),o.throwIfAborted(),dt(n);const r=await Qt(a,ne.maxCanvasPixels,o);try{o.throwIfAborted();const{full:i,motion:l}=r,s=l===i?0:l.width*l.height*4;return{image:n,source:i,motionSource:l,bytes:(n.naturalWidth*n.naturalHeight+i.width*i.height)*4+s,dispose:()=>Ye(r)}}catch(i){throw Ye(r),i}}const nn=async(n,a)=>{const o=await fetch(n,{signal:a.signal,credentials:"same-origin"});if(!o.ok)throw new Error(`图片加载失败:HTTP ${o.status}`);if(Number(o.headers.get("content-length"))>a.maxBytes)throw await o.body.cancel(),new Fe("资源超过下载保护限制,请使用适屏图或下载原文件");const r=o.body.getReader(),i=[];let l=0;try{for(;;){const d=await r.read();if(d.done)break;if(l+=d.value.byteLength,l>a.maxBytes)throw new Fe("资源超过下载保护限制,请使用适屏图或下载原文件");i.push(new Uint8Array(d.value))}}catch(d){throw await r.cancel(),d}finally{r.releaseLock()}a.signal.throwIfAborted();const s=new Blob(i,{type:o.headers.get("content-type")}),u=URL.createObjectURL(s),m=new Image;m.decoding="async";try{return await new Promise((d,S)=>{const M=()=>{m.removeAttribute("src"),S(new DOMException("请求已取消","AbortError"))};m.onload=()=>{a.signal.removeEventListener("abort",M),d()},m.onerror=()=>{a.signal.removeEventListener("abort",M),S(new Error("图片解码失败或格式不受支持"))},a.signal.addEventListener("abort",M,{once:!0}),m.src=u}),a.signal.throwIfAborted(),ct(m,a.maxPixels),await tn(m,s,a.signal)}finally{URL.revokeObjectURL(u)}};class ft{constructor(a=ne.cacheBytes,o=ne.concurrency,t=nn){ze(this,"entries",new Map);ze(this,"active",0);ze(this,"cancelled",0);this.budget=a,this.concurrency=o,this.loader=t}get stats(){return{active:this.active,queued:[...this.entries.values()].filter(a=>a.state==="queued").length,entries:this.entries.size,bytes:[...this.entries.values()].reduce((a,o)=>a+o.bytes,0),cancelled:this.cancelled}}acquire(a,o={}){const t={priority:0,maxBytes:ne.maxOriginalBytes,maxPixels:ne.maxDecodedPixels,...o};if(this.entries.has(a)&&["error","aborted"].includes(this.entries.get(a).state)&&this.entries.delete(a),!this.entries.has(a)){let u,m;const d=new Promise((S,M)=>{u=S,m=M});d.catch(()=>{}),this.entries.set(a,{promise:d,resolve:u,reject:m,controller:new AbortController,users:0,bytes:0,dispose:()=>{},priority:t.priority,maxBytes:t.maxBytes,maxPixels:t.maxPixels,state:"queued"})}const r=this.entries.get(a);r.users++,r.priority=Math.min(r.priority,t.priority),r.maxBytes=Math.max(r.maxBytes,t.maxBytes),r.maxPixels=Math.max(r.maxPixels,t.maxPixels),this.entries.delete(a),this.entries.set(a,r),this.pump();let i=!1;const l=r.promise.then(u=>(ct(u.image,t.maxPixels),u)),s=l.then(u=>u.image);return l.catch(()=>{}),s.catch(()=>{}),{ready:s,resource:l,release:()=>{i||(i=!0,r.users--,r.users===0&&(r.state==="queued"||r.state==="loading")&&(r.state="aborted",this.cancelled++,r.controller.abort(),r.reject(new DOMException("请求已取消","AbortError")),this.entries.get(a)===r&&this.entries.delete(a)),r.users===0&&r.state==="error"&&this.entries.get(a)===r&&this.entries.delete(a),this.trim(),this.pump())}}}pump(){for(;this.active<this.concurrency;){const a=[...this.entries].filter(([,r])=>r.state==="queued"&&r.users>0).sort((r,i)=>r[1].priority-i[1].priority);if(a.length===0)return;const[o,t]=a[0];t.state="loading",this.active++,this.loader(o,{signal:t.controller.signal,get maxBytes(){return t.maxBytes},get maxPixels(){return t.maxPixels}}).then(r=>{if(t.state==="aborted"){r.dispose();return}t.bytes=r.bytes,t.dispose=r.dispose,t.state="ready",t.resolve(r)}).catch(r=>{t.state!=="aborted"&&(t.state="error",t.reject(Se(r)))}).finally(()=>{this.active--,this.trim(),this.pump()})}}trim(){let a=this.stats.bytes;for(const[o,t]of this.entries)if(!(t.users>0||t.state==="loading"||t.state==="queued")){if(a<=this.budget&&this.entries.size<=ne.cacheEntries)break;a-=t.bytes,t.dispose(),this.entries.delete(o)}}}const mt=new ft,ye={kind:"empty"};function an(n){return n.kind==="element"&&n.element instanceof HTMLImageElement&&n.element.complete&&n.element.naturalWidth>0?{kind:"image",image:n.element}:ye}function Qe(){const n=document.createElement("canvas");n.width=n.height=1;const a=n.getContext("2d");return a.fillStyle="#f3f4f5",a.fillRect(0,0,1,1),n}const pt=["thumbnail","screen","full"],Ce={maxOriginalPixels:ne.maxDecodedPixels,maxOriginalBytes:ne.maxOriginalBytes,maxPreviewBytes:ne.maxPreviewBytes},Re=(n,a)=>a==="full"?n.src:a==="screen"?n.previewSrc:n.thumbnail;function rn(n,a){return n.width*n.height<=a.maxOriginalPixels}function on(n,a){const o=Math.min(a.width/n.width,a.height/n.height);return Math.min(8,Math.max(2,Math.min(1/o,Math.max(a.width/(n.width*o),a.height/(n.height*o)))))}function ln(n,a,o,t,r,i=!0){const l=rn(n,o),s={sources:[],originalStatus:i&&a==="full"?l?"loading":"blocked":"idle",originalReason:""};s.originalStatus==="blocked"&&(s.originalReason=He);for(const[u,m]of pt.entries()){if(m==="screen"&&a==="thumbnail"||m==="full"&&(!i||a!=="full"||!l))continue;const d=t(n,m,r);if(i&&!l&&d===n.src){s.originalStatus="blocked",s.originalReason=He;continue}s.sources.push({url:d,quality:m,rank:u})}return s}const sn=["aria-label"],cn={key:1,class:"mp-resource-state",role:"status","aria-label":"加载中"},un=e.createElementVNode("span",{class:"mp-spinner","aria-hidden":"true"},null,-1),dn=[un],fn={key:2,class:"mp-resource-state",role:"alert"},mn=e.createElementVNode("span",null,"图片暂时无法加载",-1),pn={key:3,class:"mp-quality-notice"},Ne=e.defineComponent({inheritAttrs:!1,__name:"ImageCanvasRenderer",props:{media:{},core:{},active:{type:Boolean,default:!0},quality:{default:"screen"},rendering:{type:Boolean,default:!0},requestVersion:{default:0},loadEnabled:{type:Boolean,default:!0},originalEnabled:{type:Boolean,default:!0},priority:{default:0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},initialImage:{default:()=>ye}},emits:["ready","error","originalState"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(),l=e.shallowRef({status:"empty"}),s=e.computed(()=>{const $={kind:"hidden"};if(!t.active||!t.rendering||!t.loadEnabled||l.value.status!=="ready")return $;const P=l.value.value;return"animation"in P?P.animation:$}),u=e.ref("loading"),m=e.ref(!1),d=e.ref("idle"),S=e.ref("");e.watch([d,S],()=>r("originalState",d.value,S.value));let M=!0,y=0,R=t.media.id;const w=Zt();let h=()=>{},x,I=!1,g={kind:"empty"};function b(){if(t.core.motionActive.value&&t.loadEnabled&&R===t.media.id){I=!0;return}I=!1,B()}function p($,P,v,T){l.value={status:"ready",value:$,rank:v},w.display(P),t.core.setMediaElement($.image),u.value="ready",m.value=!1,T==="full"&&(d.value="ready"),t.core.requestRender(),r("ready",T)}e.watch(()=>t.core.motionActive.value,$=>{if(t.core.requestRender(),!$){if(g.kind==="ready"){const P=g;g={kind:"empty"},P.token===y&&p(P.value,P.lease,P.rank,P.quality)}I&&b()}}),e.onMounted(()=>{const $=i.value;x=$.getContext("2d"),t.core.canvasRef.value=$,h=t.core.registerRenderHandler(F),k(),e.nextTick(()=>{M&&b()})}),e.onBeforeUnmount(()=>{M=!1,y+=1,h(),w.dispose()}),e.watch([()=>t.media.id,()=>t.media.src,()=>t.media.thumbnail,()=>t.media.previewSrc,()=>t.quality,()=>t.loadEnabled,()=>t.priority,()=>t.resolveSource,()=>t.resourcePolicy,()=>t.originalEnabled,()=>t.requestVersion],()=>{b()}),e.watch(()=>t.initialImage,k),e.watch(()=>t.rendering,$=>{$&&t.core.requestRender()});function k(){t.initialImage.kind!=="image"||l.value.status==="ready"||(l.value={status:"ready",value:dt(t.initialImage.image),rank:0},t.core.setMediaElement(t.initialImage.image),u.value="ready",t.core.requestRender(),r("ready","thumbnail"))}async function B(){const $=++y;if(g={kind:"empty"},m.value=!1,R!==t.media.id&&(R=t.media.id,l.value={status:"empty"},w.clearDisplay(),u.value="loading",t.core.clearMedia(),k()),!t.loadEnabled){w.replace([]);return}const P=Math.ceil(t.core.viewportSize.value.width*Math.min(devicePixelRatio,ne.maxDevicePixelRatio)*t.core.state.level),v=ln(t.media,t.quality,t.resourcePolicy,t.resolveSource,P,t.originalEnabled);S.value=v.originalReason,d.value=v.originalStatus;const{sources:T}=v,z=T.map(G=>mt.acquire(G.url,{priority:t.priority,maxPixels:t.resourcePolicy.maxOriginalPixels,maxBytes:G.quality==="full"?t.resourcePolicy.maxOriginalBytes:t.resourcePolicy.maxPreviewBytes}));w.replace(z),T.length===0&&l.value.status==="empty"&&(u.value="error",r("error",new Fe(S.value))),l.value.status==="ready"&&r("ready",pt[l.value.rank]);let X=l.value.status==="ready"?l.value.rank:-1,de=0;await Promise.all(T.map(async(G,re)=>{const ee=G.rank,he=z[re];try{const K=await he.resource;if($!==y||ee<X)return;X=ee,t.core.motionActive.value&&l.value.status==="ready"?g={kind:"ready",token:$,value:K,lease:he,rank:ee,quality:G.quality}:p(K,he,ee,G.quality)}catch(K){if($!==y||K instanceof Error&&K.name==="AbortError")return;if(G.quality==="full"){const q=Kt(K);d.value=q.status,S.value=q.reason}de+=1,ee>X&&l.value.status==="ready"&&(m.value=!0),de===T.length&&l.value.status==="empty"&&(u.value="error"),r("error",Se(K))}}))}function F(){if(!t.rendering||l.value.status!=="ready")return;const $=i.value,P=t.core.viewportSize.value;if(P.width<=0||P.height<=0)return;const v=Math.min(devicePixelRatio,ne.maxDevicePixelRatio,Math.sqrt(ne.maxCanvasPixels/(P.width*P.height))),T=Math.max(1,Math.round(P.width*v)),z=Math.max(1,Math.round(P.height*v));($.width!==T||$.height!==z)&&($.width=T,$.height=z),x.setTransform(v,0,0,v,0,0),x.clearRect(0,0,P.width,P.height);const{width:X,height:de}=t.core.mediaSize.value,G=t.core.displayScale.value;Yt(x,t.core.motionActive.value?l.value.value.motionSource:l.value.value.source,{viewport:P,size:{width:X*G,height:de*G},offsetX:t.core.state.offsetX,offsetY:t.core.state.offsetY,rotation:t.core.state.rotation},t.core.motionActive.value)}function L(){if(l.value.status!=="ready")throw new Error("图片画面尚未就绪");return{image:l.value.value.motionSource,scale:1}}return a({captureFrame:L,retainFrame:()=>({...L(),release:w.retainDisplay()})}),($,P)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:i,class:"mp-canvas-renderer","aria-label":$.media.title,style:e.normalizeStyle({visibility:s.value.kind==="gif"?"hidden":"inherit"})},null,12,sn),s.value.kind==="gif"?(e.openBlock(),e.createBlock(jt,{key:0,core:$.core,src:s.value.url,title:$.media.title},null,8,["core","src","title"])):e.createCommentVNode("",!0),u.value==="loading"?(e.openBlock(),e.createElementBlock("div",cn,dn)):e.createCommentVNode("",!0),u.value==="error"?(e.openBlock(),e.createElementBlock("div",fn,[mn,e.createElementVNode("button",{type:"button",onClick:e.withModifiers(B,["stop"])},"重新加载")])):e.createCommentVNode("",!0),m.value&&d.value!=="blocked"?(e.openBlock(),e.createElementBlock("span",pn," 高清图加载失败,当前显示预览图 ")):e.createCommentVNode("",!0)],64))}});function hn(n,a,o){const{buffered:t}=n;if(!Number.isFinite(a)||a<=0)return[];const r=[],i=Math.min(.25,a*.05);for(let l=0;l<t.length;l++){const s=Z(t.start(l),0,a);let u=Z(t.end(l),s,a);l===t.length-1&&(n.ended||o.kind==="retained"&&t.end(l)>=o.end||n.readyState>=4&&a-u<=i)&&(u=a),u>s&&r.push({start:s,end:u})}return r}function Me(n){const a=Math.max(0,Math.floor(Number.isFinite(n)?n:0));return`${String(Math.floor(a/60)).padStart(2,"0")}:${String(a%60).padStart(2,"0")}`}function Je(n){return Number.isFinite(n)&&n>0?n:0}function et(){return{duration:0,time:0,buffered:0,bufferedRanges:[]}}function gn(){let n=0,a={kind:"pending"};return{setDuration(o){n=Je(o)},complete(o){const{buffered:t}=o;a=t.length>0?{kind:"retained",end:t.end(t.length-1)}:{kind:"pending"}},reset(){n=0,a={kind:"pending"}},read(o,t){const r=n>0?n:Je(o.duration),i=hn(o,r,a);return{duration:r,time:t?r:Z(o.currentTime,0,r),buffered:i.length>0?i[i.length-1].end:0,bufferedRanges:i}}}}function ht(n,a){const o=gn(),t=e.reactive({playing:!1,buffering:!1,...et(),muted:!1,ended:!1,scrubbing:!1,scrubTime:0,status:"loading"});let r=!1,i=0,l=!1;const s=e.computed(()=>t.duration>0&&t.status!=="error"),u=e.computed(()=>t.scrubbing?t.scrubTime:t.time),m=e.computed(()=>s.value?u.value/t.duration*100:0),d=e.computed(()=>s.value?t.buffered/t.duration*100:0),S=e.computed(()=>t.bufferedRanges.map(({start:P,end:v})=>({left:P/t.duration*100,width:(v-P)/t.duration*100})));function M(){Object.assign(t,o.read(n(),t.ended))}function y(P){l||(o.setDuration(P),M(),t.scrubTime=Z(t.scrubTime,0,t.duration))}function R(){o.reset(),r=!1,i+=1,Object.assign(t,{playing:!1,buffering:!1,...et(),ended:!1,scrubbing:!1,scrubTime:0,status:"loading"})}async function w(){if(l)return;const P=++i;t.ended&&(n().currentTime=0,t.time=0),t.ended=!1,t.buffering=!0;try{await n().play()}catch(v){if(P!==i)return;t.buffering=!1,t.playing=!1,v instanceof Error&&v.name!=="NotAllowedError"&&v.name!=="AbortError"&&a(v)}}function h(){i+=1,r=!1,t.scrubbing=!1,t.buffering=!1,n().pause()}function x(){t.playing?h():w()}function I(){!s.value||t.scrubbing||(r=t.playing,t.scrubbing=!0,t.scrubTime=t.time,n().pause())}function g(P){t.scrubTime=Z(P,0,t.duration)}function b(P=!0){if(!t.scrubbing)return;const v=r;r=!1,t.scrubbing=!1,P&&(n().currentTime=t.scrubTime,t.time=t.scrubTime,t.ended=!1),v&&w()}function p(){n().muted=!n().muted,t.muted=n().muted}function k(P){t.status="error",t.playing=!1,t.buffering=!1,a(P)}const F=Object.fromEntries(Object.entries({loadedmetadata:M,durationchange:M,timeupdate:M,progress:M,loadeddata:()=>{M(),t.status="ready",t.buffering=!1},canplay:()=>{M(),t.buffering=!1},canplaythrough:M,play:()=>{t.playing=!0,t.ended=!1},playing:()=>{t.playing=!0,t.buffering=!1},pause:()=>{t.playing=!1,t.buffering=!1},ended:()=>{t.playing=!1,t.ended=!0,t.buffering=!1,o.complete(n()),M()},waiting:()=>{t.buffering=t.playing},seeking:()=>{t.buffering=!0},seeked:()=>{t.buffering=!1,M()},volumechange:()=>{t.muted=n().muted},error:()=>{k(new Error("视频暂时无法播放,请重试或检查资源格式"))}}).map(([P,v])=>[P,()=>{l||v()}]));function L(){l=!0,h()}function $(){R(),t.buffering=!0,n().load()}return{state:t,seekable:s,displayTime:u,progress:m,bufferedProgress:d,bufferedRanges:S,events:F,play:w,pause:h,toggle:x,beginScrub:I,scrub:g,endScrub:b,toggleMuted:p,retry:$,setSourceDuration:y,resetSource:R,sourceObserver:{error:k,duration:y,reset:R},dispose:L}}const vn=["data-live-state"],yn={class:"mp-dom-renderer mp-live-photo__motion"},wn=["preload"],gt=e.defineComponent({__name:"LivePhotoRenderer",props:{media:{},core:{},playing:{type:Boolean,default:!1},active:{type:Boolean,default:!0},enabled:{type:Boolean,default:!0},requestVersion:{default:0},loadEnabled:{type:Boolean,default:!0},priority:{default:0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},rendering:{type:Boolean,default:!0},initialImage:{default:()=>ye},quality:{default:"screen"}},emits:["ready","error","originalState","liveState","liveEnded"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(),l=e.ref(),s=e.ref(),u=e.ref(),m=ht(()=>i.value,p=>r("error",p)),{state:d}=m;lt(()=>i.value,()=>t.media,()=>t.active&&t.loadEnabled,()=>Ve,{...m.sourceObserver,quality:()=>{}});let S=!1,M=()=>{};const y=e.computed(()=>t.active&&t.enabled&&d.playing&&d.status==="ready"&&!d.buffering),R=e.computed(()=>({transform:`translate(-50%, -50%) translate3d(${t.core.state.offsetX}px, ${t.core.state.offsetY}px, 0)`})),w=e.computed(()=>({width:`${t.core.mediaSize.value.width*t.core.displayScale.value}px`,height:`${t.core.mediaSize.value.height*t.core.displayScale.value}px`,transform:`rotate(${t.core.state.rotation}deg)`}));function h(){m.pause(),i.value.readyState>=HTMLMediaElement.HAVE_METADATA&&(i.value.currentTime=0)}function x(){!t.active||!t.enabled||!t.loadEnabled||!t.playing||d.status!=="ready"||d.buffering?h():m.play().then(()=>{!S&&!d.playing&&t.playing&&r("liveEnded")})}e.watch(()=>[d.status,d.playing,d.buffering],()=>{const p=d.status==="error"?"error":d.buffering||d.status==="loading"?"loading":y.value?"playing":"idle";r("liveState",p)},{immediate:!0});function I(){S||(h(),r("liveEnded"))}function g(){document.hidden&&(h(),r("liveEnded"))}e.onMounted(()=>{M=e.watch(()=>[t.active,t.enabled,t.loadEnabled,t.playing],x,{flush:"post"}),x(),document.addEventListener("visibilitychange",g)}),e.onBeforeUnmount(()=>{M(),S=!0,m.dispose(),document.removeEventListener("visibilitychange",g)});function b(){const p=document.createElement("canvas"),k=Math.min(1,Math.sqrt(ne.maxCanvasPixels/(t.media.width*t.media.height)));p.width=Math.round(t.media.width*k),p.height=Math.round(t.media.height*k);const B=p.getContext("2d"),F=Number(getComputedStyle(s.value).opacity);B.drawImage(u.value.captureFrame().image,0,0,p.width,p.height),F<1&&i.value.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&(B.globalAlpha=1-F,B.drawImage(i.value,0,0,p.width,p.height));const L=new DOMMatrixReadOnly(getComputedStyle(l.value).transform).a;return m.pause(),{image:p,scale:L}}return a({captureFrame:b,retainFrame:()=>({...b(),release:()=>{}})}),(p,k)=>(e.openBlock(),e.createElementBlock("div",{class:"mp-live-photo-renderer","data-live-state":e.unref(d).status==="error"?"error":y.value?"playing":"idle"},[e.createElementVNode("div",{ref_key:"effectsRef",ref:l,class:e.normalizeClass(["mp-live-photo__effects",{"is-playing":y.value}])},[e.createElementVNode("div",yn,[e.createElementVNode("div",{class:"mp-dom-renderer__frame",style:e.normalizeStyle(R.value)},[e.createElementVNode("video",e.mergeProps({ref_key:"videoRef",ref:i,class:"mp-dom-renderer__node",style:w.value,preload:p.active&&p.enabled&&p.loadEnabled?"auto":"none",playsinline:"","webkit-playsinline":"true",crossorigin:"anonymous"},e.toHandlers(e.unref(m).events,!0),{onEnded:I,onError:k[0]||(k[0]=B=>r("liveEnded"))}),null,16,wn)],4)]),e.createElementVNode("div",{ref_key:"stillRef",ref:s,class:e.normalizeClass(["mp-live-photo__still",{"is-playing":y.value}])},[e.createVNode(Ne,{ref_key:"imageRendererRef",ref:u,active:p.active,"request-version":p.requestVersion,"load-enabled":p.loadEnabled,priority:p.priority,"resource-policy":p.resourcePolicy,"resolve-source":p.resolveSource,onOriginalState:k[1]||(k[1]=(B,F)=>r("originalState",B,F)),media:p.media,"initial-image":p.initialImage,rendering:p.rendering,core:p.core,quality:p.quality,onReady:k[2]||(k[2]=B=>r("ready",B)),onError:k[3]||(k[3]=B=>r("error",B))},null,8,["active","request-version","load-enabled","priority","resource-policy","resolve-source","media","initial-image","rendering","core","quality"])],2)],2)],8,vn))}});function vt(n,a,o){const t=Math.min(1,Math.sqrt(ne.maxCanvasPixels/(o.width*o.height)));a.width=Math.max(1,Math.round(o.width*t)),a.height=Math.max(1,Math.round(o.height*t));const r=Math.min(a.width/n.videoWidth,a.height/n.videoHeight),i=n.videoWidth*r,l=n.videoHeight*r;a.getContext("2d").drawImage(n,(a.width-i)/2,(a.height-l)/2,i,l)}function bn(n,a){const o=document.createElement("canvas");return vt(n,o,a),n.pause(),o}function kn(n,a,o){const t=e.ref(!1);let r=!1,i=!1,l=0,s=-1,u=-1;const m=["loadeddata","seeked","canplay"];function d(){s!==-1&&cancelAnimationFrame(s),u!==-1&&n().cancelVideoFrameCallback(u),s=-1,u=-1}function S(){a().width=1,a().height=1,r=!1}function M(){l+=1,d(),i&&(m.forEach(x=>n().removeEventListener(x,R)),n().removeEventListener("error",M),i=!1),t.value=!1,r&&S()}function y(){return n().readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&!n().seeking}function R(){if(!t.value||!y())return;s!==-1&&cancelAnimationFrame(s);const x=l;s=requestAnimationFrame(()=>{x===l&&(s=requestAnimationFrame(()=>{x===l&&(s=-1,y()&&M())}))})}function w(x){const I=n(),g=I.getAttribute("src"),b=t.value;if(l+=1,d(),!b&&I.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA)try{vt(I,a(),o()),r=!0}catch{S()}try{x()}catch(p){throw M(),p}if(!r||!b&&g===I.getAttribute("src")){M();return}if(t.value=!0,i||(m.forEach(p=>I.addEventListener(p,R)),I.addEventListener("error",M),i=!0),"requestVideoFrameCallback"in I){const p=l;u=I.requestVideoFrameCallback(()=>{p===l&&(u=-1,y()&&M())})}}function h(){const x=document.createElement("canvas");return x.width=a().width,x.height=a().height,x.getContext("2d").drawImage(a(),0,0),x}return{active:t,run:w,clear:M,snapshot:h}}const Mn={class:"mp-video-icon--generic",width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.7","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},xn=["d","fill"],En=["src"],Sn=["src"],De=e.defineComponent({__name:"VideoIcon",props:{name:{}},setup(n){const a=n,o={play:["mobile-play","pc-play"],replay:["mobile-play","pc-play"],pause:["mobile-pause","pc-pause"],fullscreen:["mobile-fullscreen","pc-fullscreen"],exit:["mobile-fullscreen","pc-exit"]},t={"mobile-play":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='18px'%20height='18px'%20viewBox='0%200%2018%2018'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e三角形%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2时间轴-查看视频'%20transform='translate(-18.000000,%20-687.000000)'%20fill='%23333333'%3e%3cg%20id='编组-5'%20transform='translate(0.000000,%20672.000000)'%3e%3cg%20id='编组-4'%20transform='translate(18.000000,%2012.913043)'%3e%3cpath%20d='M13.5185936,7.08213339%20L18.1443888,14.1750193%20C19.2003225,15.7941177%2018.7437874,17.9626598%2017.1246889,19.0185936%20C16.5559936,19.3894818%2015.8917011,19.5869565%2015.2127517,19.5869565%20L5.96116137,19.5869565%20C4.02816475,19.5869565%202.46116137,18.0199531%202.46116137,16.0869565%20C2.46116137,15.4080071%202.65863607,14.7437145%203.02952428,14.1750193%20L7.65531943,7.08213339%20C8.71125321,5.46303494%2010.8797953,5.00649976%2012.4988938,6.06243353%20C12.9058908,6.3278664%2013.2531607,6.67513633%2013.5185936,7.08213339%20Z'%20id='三角形'%20transform='translate(10.586957,%2011.086957)%20rotate(90.000000)%20translate(-10.586957,%20-11.086957)%20'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"mobile-pause":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='18px'%20height='18px'%20viewBox='0%200%2018%2018'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e暂停%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2时间轴-观看视频'%20transform='translate(-17.000000,%20-687.000000)'%20fill='%23333333'%3e%3cg%20id='编组-5'%20transform='translate(0.000000,%20672.000000)'%3e%3cg%20id='编组-3'%20transform='translate(17.000000,%2012.913043)'%3e%3cg%20id='暂停-2'%20transform='translate(0.000000,%202.086957)'%3e%3cg%20id='暂停'%20transform='translate(3.000000,%201.500000)'%3e%3crect%20id='矩形'%20x='0'%20y='0'%20width='3.5'%20height='15'%20rx='1.75'%3e%3c/rect%3e%3crect%20id='矩形备份-7'%20x='9'%20y='0'%20width='3.5'%20height='15'%20rx='1.75'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"mobile-fullscreen":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='24px'%20height='24px'%20viewBox='0%200%2024%2024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e横竖屏备份%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='懒猫微服-图标库2.0'%20transform='translate(-449.000000,%20-196.000000)'%20stroke='%23333333'%20stroke-width='1.5'%3e%3cg%20id='横竖屏'%20transform='translate(449.000000,%20196.000000)'%3e%3crect%20id='矩形'%20x='3.75'%20y='9.75'%20width='16.5'%20height='10.5'%20rx='4'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='3.75'%20y='3.75'%20width='10.5'%20height='16.5'%20rx='4'%3e%3c/rect%3e%3cline%20x1='7.5'%20y1='7'%20x2='10.5'%20y2='7'%20id='路径-83'%20stroke-linecap='round'%3e%3c/line%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"center-play":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='14px'%20height='14px'%20viewBox='0%200%2014%2014'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e播放%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill-rule='evenodd'%3e%3cg%20id='2时间轴-查看视频'%20transform='translate(-181.000000,%20-399.000000)'%20fill-rule='nonzero'%3e%3cg%20id='播放'%20transform='translate(164.000000,%20382.000000)'%3e%3cg%20id='播放-2'%20transform='translate(17.000000,%2016.000000)'%3e%3cpath%20d='M10.7364863,4.038851%20L15.2901269,12.0077221%20C15.8381469,12.966757%2015.5049534,14.1884663%2014.5459185,14.7364863%20C14.2437231,14.9091694%2013.9016945,15%2013.5536406,15%20L4.44635936,15%20C3.34178986,15%202.44635936,14.1045695%202.44635936,13%20C2.44635936,12.6519461%202.53718999,12.3099175%202.70987307,12.0077221%20L7.26351372,4.038851%20C7.81153365,3.0798161%209.03324298,2.74662265%209.99227788,3.29464259%20C10.3023404,3.47182119%2010.5593077,3.72878844%2010.7364863,4.038851%20Z'%20id='播放'%20transform='translate(9.000000,%208.000000)%20rotate(90.000000)%20translate(-9.000000,%20-8.000000)%20'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-play":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e开始%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-764.000000,%20-1017.000000)'%20fill='%23FFFFFF'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组'%20transform='translate(646.000000,%20970.000000)'%3e%3cg%20id='开始'%20transform='translate(50.000000,%2045.022998)'%3e%3cpath%20d='M11.1122895,6.09085035%20L16.0457675,13.4910673%20C16.9648249,14.8696534%2016.5923033,16.7322614%2015.2137172,17.6513188%20C14.7209147,17.9798538%2014.1418916,18.1551679%2013.5496166,18.1551679%20L4.15581091,18.1551679%20C2.49895666,18.1551679%201.15581091,16.8120222%201.15581091,15.1551679%20C1.15581091,14.6093944%201.30469549,14.0739605%201.58643112,13.6065274%20L6.04675886,6.20631041%20C6.90204941,4.78728113%208.74574991,4.3302806%2010.1647792,5.18557115%20C10.5434695,5.41381888%2010.8670246,5.72295299%2011.1122895,6.09085035%20Z'%20id='三角形'%20transform='translate(9.000000,%2010.155168)%20rotate(90.000000)%20translate(-9.000000,%20-10.155168)%20'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-pause":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e暂停%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-737.000000,%20-1017.000000)'%20fill='%23FFFFFF'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组'%20transform='translate(646.000000,%20970.000000)'%3e%3cg%20id='暂停-2'%20transform='translate(23.000000,%2047.000000)'%3e%3cg%20id='暂停'%20transform='translate(1.000000,%200.000000)'%3e%3crect%20id='矩形'%20x='0'%20y='0'%20width='4'%20height='16'%20rx='2'%3e%3c/rect%3e%3crect%20id='矩形备份-4'%20x='10'%20y='0'%20width='4'%20height='16'%20rx='2'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-fullscreen":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e形状%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-1236.000000,%20-1017.000000)'%20fill='%23FFFFFF'%20fill-rule='nonzero'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组'%20transform='translate(646.000000,%20970.000000)'%3e%3cg%20id='形状-2'%20transform='translate(522.000000,%2047.000000)'%3e%3cpath%20d='M2.64896326,8.31181102%20C3.0069116,8.31181102%203.29792652,8.60254391%203.29792652,8.96014537%20L3.297,11.774%20L6.30847581,8.766808%20C6.56165879,8.51387038%206.97344489,8.51387038%207.22662786,8.766808%20C7.47981084,9.01974561%207.47981084,9.43113265%207.22662786,9.68407026%20L4.204,12.701%20L7.04328847,12.7018776%20C7.40123681,12.7018776%207.69225716,12.9926105%207.69225716,13.350212%20C7.6937068,13.7092671%207.40269189,14%207.04328847,14%20L3.79410695,14%20C2.80465624,14%202,13.1961236%202,12.2076317%20L2,8.96014537%20C2,8.60254391%202.29101491,8.31181102%202.64896326,8.31181102%20Z%20M12.2058931,2%20C12.6893524,2%2013.1286932,2.19192028%2013.4516066,2.50352194%20C13.4593844,2.50982425%2013.4671226,2.51718474%2013.4747181,2.52477286%20L13.4959896,2.54786191%20C13.8078935,2.87046237%2014,3.30937746%2014,3.79236826%20L14,7.03985463%20C14,7.39745609%2013.7089851,7.68818898%2013.3510367,7.68818898%20C12.9930884,7.68818898%2012.7020735,7.39745609%2012.7020735,7.03985463%20L12.702,4.213%20L9.67842852,7.23464567%20C9.55183703,7.36111448%209.38450346,7.42507571%209.21862495,7.42507571%20C9.05274645,7.42507571%208.88686795,7.36111448%208.76027646,7.23464567%20C8.50709349,6.98170806%208.50709349,6.57032102%208.76027646,6.3173834%20L11.783,3.296%20L8.95525646,3.29666869%20C8.59730811,3.29666869%208.3062932,3.0059358%208.3062932,2.64833434%20C8.3062932,2.29073289%208.59730811,2%208.95525646,2%20L12.2058931,2%20Z'%20id='全屏'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href,"pc-exit":new URL("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='16px'%20height='16px'%20viewBox='0%200%2016%2016'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3e形状备份%3c/title%3e%3cg%20id='页面-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='2.11查看视频'%20transform='translate(-1275.000000,%20-1007.000000)'%20fill='%23FFFFFF'%20fill-rule='nonzero'%3e%3cg%20id='编组-7'%20transform='translate(68.000000,%200.000000)'%3e%3cg%20id='编组备份'%20transform='translate(601.000000,%20987.000000)'%3e%3cg%20id='形状-2'%20transform='translate(606.000000,%2020.000000)'%3e%3cpath%20d='M5.89959985,8.31181102%20C6.88905056,8.31181102%207.6937068,9.11568746%207.6937068,10.1041793%20L7.6937068,13.3516657%20C7.6937068,13.7092671%207.40269189,14%207.04474354,14%20C6.6867952,14%206.39578028,13.7092671%206.39578028,13.3516657%20L6.395,10.514%20L3.43761368,13.4679588%20C3.31102219,13.5958813%203.14514369,13.6583889%202.97926519,13.6583889%20C2.81338669,13.6583889%202.64750818,13.5944276%202.5209167,13.4679588%20C2.26773372,13.2150212%202.26773372,12.8036342%202.5209167,12.5506965%20L5.465,9.608%20L2.64896326,9.60847971%20C2.29101491,9.60847971%202,9.31774682%202,8.96014537%20C2,8.60254391%202.29101491,8.31181102%202.64896326,8.31181102%20L5.89959985,8.31181102%20Z%20M8.9567061,2%20C9.31465444,2%209.60566936,2.29073289%209.60566936,2.64833434%20L9.605,5.473%20L12.556566,2.52477286%20C12.809749,2.27183525%2013.2215351,2.27183525%2013.4747181,2.52477286%20C13.7279011,2.77771048%2013.7279011,3.18909752%2013.4747181,3.44203513%20L10.523,6.39%20L13.3510313,6.39006663%20C13.7089797,6.39006663%2014,6.68079952%2014,7.03840097%20C14.0014496,7.39745609%2013.7104347,7.68818898%2013.3510313,7.68818898%20L10.1018498,7.68818898%20C9.11239908,7.68818898%208.30774284,6.88431254%208.30774284,5.89582071%20L8.30774284,2.64833434%20C8.30774284,2.29073289%208.59875775,2%208.9567061,2%20Z'%20id='全屏'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",typeof document>"u"?require("url").pathToFileURL(__filename).href:H&&H.tagName.toUpperCase()==="SCRIPT"&&H.src||new URL("vue-media-preview.cjs",document.baseURI).href).href},r={play:["m9 5 11 7-11 7Z"],pause:["M8 5v14M16 5v14"],replay:["M4 10a8 8 0 1 1 1 7","M4 4v6h6"],fullscreen:["M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5"],exit:["M9 4v5H4M20 9h-5V4M15 20v-5h5M4 15h5v5"],volume:["m11 4-6 5H2v6h3l6 5Z","M15 8a6 6 0 0 1 0 8M18 5a10 10 0 0 1 0 14"],muted:["m11 4-6 5H2v6h3l6 5Z","m16 9 6 6m0-6-6 6"]};return(i,l)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["mp-video-icon",{"has-album-icon":a.name in o}])},[(e.openBlock(),e.createElementBlock("svg",Mn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r[i.name],(s,u)=>(e.openBlock(),e.createElementBlock("path",{key:u,d:s,fill:i.name==="play"?"currentColor":"none"},null,8,xn))),128))])),i.name in o?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("img",{class:"mp-video-icon--mobile",src:t[o[i.name][0]],alt:"","aria-hidden":"true",draggable:"false"},null,8,En),e.createElementVNode("img",{class:"mp-video-icon--desktop",src:t[o[i.name][1]],alt:"","aria-hidden":"true",draggable:"false"},null,8,Sn)],64)):e.createCommentVNode("",!0)],2))}}),Cn=["aria-expanded","aria-busy","title"],Rn={key:0,"aria-hidden":"true"},Bn={key:0,class:"mp-video-quality__menu",role:"group","aria-label":"视频清晰度选项"},Pn=["aria-pressed","onClick"],Ln=e.defineComponent({__name:"VideoQualityMenu",props:{quality:{}},setup(n){const a=n,o=e.ref(!1),t=e.ref(),r=e.computed(()=>a.quality.kind==="fixed"?[{id:"fixed",label:a.quality.label}]:a.quality.options),i=e.computed(()=>a.quality.kind==="fixed"?"fixed":a.quality.selectedId),l=e.computed(()=>r.value.find(d=>d.id===i.value).label),s=e.computed(()=>a.quality.kind==="available"&&r.value.length>1&&a.quality.selectedId!==a.quality.activeId);e.watch([()=>a.quality.kind,()=>r.value.length],()=>{o.value=!1});function u(d){d.composedPath().includes(t.value)||(o.value=!1)}function m(d){a.quality.kind==="available"&&d!==a.quality.selectedId&&a.quality.select(d),o.value=!1}return e.onMounted(()=>document.addEventListener("pointerdown",u,!0)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",u,!0)),(d,S)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"host",ref:t,class:"mp-video-quality",onKeydown:S[1]||(S[1]=e.withKeys(e.withModifiers(M=>o.value=!1,["stop","prevent"]),["esc"]))},[e.createElementVNode("button",{type:"button",class:"mp-video-quality__trigger","aria-label":"视频清晰度","aria-expanded":o.value,"aria-busy":s.value,title:s.value?`${l.value}(切换中)`:l.value,onClick:S[0]||(S[0]=M=>o.value=!o.value)},[e.createTextVNode(e.toDisplayString(l.value),1),s.value?(e.openBlock(),e.createElementBlock("span",Rn,"…")):e.createCommentVNode("",!0)],8,Cn),o.value?(e.openBlock(),e.createElementBlock("div",Bn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,M=>(e.openBlock(),e.createElementBlock("button",{key:M.id,type:"button","aria-pressed":M.id===i.value,onClick:y=>m(M.id)},e.toDisplayString(M.label),9,Pn))),128))])):e.createCommentVNode("",!0)],544))}}),Tn={key:0,class:"mp-video-seek-preview"},Fn=["aria-label","disabled"],Vn={class:"mp-video-time"},$n=["tabindex","aria-disabled","aria-valuemax","aria-valuenow","aria-valuetext"],In=e.createElementVNode("span",{class:"mp-video-progress__rail"},null,-1),qn={class:"mp-video-time"},zn=["aria-label","aria-pressed"],Dn=["aria-label","disabled"],Nn=e.defineComponent({__name:"VideoControls",props:{playback:{},fullscreen:{type:Boolean},canFullscreen:{type:Boolean},quality:{},visible:{type:Boolean}},emits:["fullscreen"],setup(n,{emit:a}){const o=n,t=a,r=e.ref(),{state:i,seekable:l,displayTime:s,progress:u,bufferedRanges:m}=o.playback;function d(w){const h=r.value.getBoundingClientRect();o.playback.scrub((w.clientX-h.left)/Math.max(1,h.width)*i.duration)}function S(w){!l.value||w.pointerType==="mouse"&&w.button!==0||(r.value.setPointerCapture(w.pointerId),o.playback.beginScrub(),d(w))}function M(w){i.scrubbing&&d(w)}function y(w){i.scrubbing&&(d(w),o.playback.endScrub())}function R(w){o.playback.beginScrub(),o.playback.scrub(s.value+w),o.playback.endScrub()}return(w,h)=>(e.openBlock(),e.createElementBlock("div",{class:"mp-video-controls","data-preview-control":"",onPointerdown:h[9]||(h[9]=e.withModifiers(()=>{},["stop"])),onPointermove:h[10]||(h[10]=e.withModifiers(()=>{},["stop"])),onPointerup:h[11]||(h[11]=e.withModifiers(()=>{},["stop"])),onPointercancel:h[12]||(h[12]=e.withModifiers(()=>{},["stop"])),onClick:h[13]||(h[13]=e.withModifiers(()=>{},["stop"])),onDblclick:h[14]||(h[14]=e.withModifiers(()=>{},["stop"])),onKeydown:h[15]||(h[15]=e.withModifiers(()=>{},["stop"]))},[e.unref(i).scrubbing?(e.openBlock(),e.createElementBlock("div",Tn,[e.createTextVNode(e.toDisplayString(e.unref(Me)(e.unref(s))),1),e.createElementVNode("span",null," / "+e.toDisplayString(e.unref(Me)(e.unref(i).duration)),1)])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).ended?"重新播放视频":e.unref(i).playing?"暂停视频":"播放视频",disabled:e.unref(i).status==="error",onClick:h[0]||(h[0]=(...x)=>w.playback.toggle&&w.playback.toggle(...x))},[e.createVNode(De,{name:e.unref(i).ended?"replay":e.unref(i).playing?"pause":"play"},null,8,["name"])],8,Fn),e.createElementVNode("time",Vn,e.toDisplayString(e.unref(Me)(e.unref(s))),1),e.createElementVNode("div",{ref_key:"track",ref:r,class:e.normalizeClass(["mp-video-progress",{"is-scrubbing":e.unref(i).scrubbing}]),role:"slider","aria-label":"视频进度",tabindex:e.unref(l)?0:-1,"aria-disabled":!e.unref(l),"aria-valuemin":"0","aria-valuemax":e.unref(i).duration,"aria-valuenow":e.unref(s),"aria-valuetext":`${e.unref(Me)(e.unref(s))} / ${e.unref(Me)(e.unref(i).duration)}`,onPointerdown:e.withModifiers(S,["prevent"]),onPointermove:e.withModifiers(M,["prevent"]),onPointerup:e.withModifiers(y,["prevent"]),onPointercancel:h[1]||(h[1]=x=>w.playback.endScrub(!1)),onLostpointercapture:h[2]||(h[2]=x=>w.playback.endScrub(!1)),onKeydown:[h[3]||(h[3]=e.withKeys(e.withModifiers(x=>R(-5),["prevent"]),["left"])),h[4]||(h[4]=e.withKeys(e.withModifiers(x=>R(5),["prevent"]),["right"])),h[5]||(h[5]=e.withKeys(e.withModifiers(x=>R(-e.unref(i).duration),["prevent"]),["home"])),h[6]||(h[6]=e.withKeys(e.withModifiers(x=>R(e.unref(i).duration),["prevent"]),["end"]))]},[In,(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),(x,I)=>(e.openBlock(),e.createElementBlock("span",{key:I,class:"mp-video-progress__buffered",style:e.normalizeStyle({left:`${x.left}%`,width:`${x.width}%`})},null,4))),128)),e.createElementVNode("span",{class:"mp-video-progress__played",style:e.normalizeStyle({width:`${e.unref(u)}%`})},null,4),e.createElementVNode("span",{class:"mp-video-progress__thumb",style:e.normalizeStyle({left:`${e.unref(u)}%`})},null,4)],42,$n),e.createElementVNode("time",qn,e.toDisplayString(e.unref(Me)(e.unref(i).duration)),1),w.quality.kind!=="unavailable"&&w.visible&&e.unref(i).status!=="error"?(e.openBlock(),e.createBlock(Ln,{key:1,quality:w.quality},null,8,["quality"])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"mp-video-volume","aria-label":e.unref(i).muted?"开启声音":"静音视频","aria-pressed":e.unref(i).muted,onClick:h[7]||(h[7]=(...x)=>w.playback.toggleMuted&&w.playback.toggleMuted(...x))},[e.createVNode(De,{name:e.unref(i).muted?"muted":"volume"},null,8,["name"])],8,zn),e.createElementVNode("button",{type:"button","aria-label":w.fullscreen?"退出视频全屏":"视频全屏",disabled:!w.canFullscreen,onClick:h[8]||(h[8]=x=>t("fullscreen"))},[e.createVNode(De,{name:w.fullscreen?"exit":"fullscreen"},null,8,["name"])],8,Dn)],32))}}),_n=["data-playback"],Un=["muted","loop","preload"],An={key:1,class:"mp-video-loading",role:"status","aria-label":"视频缓冲中"},On=e.createElementVNode("span",{class:"mp-spinner"},null,-1),Hn=[On],Yn=["aria-label"],Xn={key:3,class:"mp-video-error",role:"alert"},Wn=["inert"],yt=e.defineComponent({inheritAttrs:!1,__name:"VideoDomRenderer",props:{initialImage:{default:()=>ye},rendering:{type:Boolean,default:!0},quality:{default:"screen"},requestVersion:{default:0},priority:{default:0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},media:{},videoLoader:{type:Function,default:Ve},core:{},active:{type:Boolean,default:!0},enabled:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},loadEnabled:{type:Boolean,default:!0},muted:{type:Boolean,default:!1},loop:{type:Boolean,default:!1},controls:{type:Boolean,default:!0},controlsVisible:{type:Boolean,default:!0},teleportControls:{type:Boolean,default:!1},controlsTarget:{default:"body"}},emits:["originalState","ready","error"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(!1),l=e.computed(()=>({...t.media,type:"image",src:t.media.poster||t.media.previewSrc||t.media.thumbnail})),s=e.ref(),u=e.ref(),m=kn(()=>s.value,()=>u.value,()=>t.core.mediaSize.value),d=e.ref(),S=e.ref(!1),M=e.ref(!1),y=ht(()=>s.value,v=>r("error",v)),R=e.shallowRef({kind:"unavailable"});function w(v){if(v.kind!=="available"){R.value=v;return}R.value={...v,select:T=>{i.value?m.run(()=>v.select(T)):v.select(T)}}}lt(()=>s.value,()=>t.media,()=>t.active&&t.loadEnabled,()=>t.videoLoader,{...y.sourceObserver,error:v=>{m.clear(),y.sourceObserver.error(v)},quality:w,reset:()=>{m.clear(),R.value={kind:"unavailable"},y.resetSource()}});let h=()=>{};const{state:x}=y,I=e.computed(()=>t.controls&&t.active&&t.enabled&&t.controlsVisible);function g(){return t.teleportControls?d.value.closest(".mp-viewer"):t.core.containerRef.value}async function b(){if(M.value)try{document.fullscreenElement===g()?await document.exitFullscreen():document.fullscreenEnabled?await g().requestFullscreen():s.value.webkitEnterFullscreen()}catch(v){r("error",Se(v))}}function p(){S.value=document.fullscreenElement===g()}function k(){!t.active||!t.enabled?y.pause():t.autoplay&&y.play()}function B(){document.hidden&&y.pause()}e.onMounted(()=>{x.muted=s.value.muted,M.value=document.fullscreenEnabled||"webkitEnterFullscreen"in s.value,document.addEventListener("fullscreenchange",p),document.addEventListener("visibilitychange",B),h=e.watch(()=>[t.active,t.enabled,t.autoplay],k,{flush:"post"}),k()}),e.onBeforeUnmount(()=>{m.clear(),h(),y.dispose(),document.removeEventListener("fullscreenchange",p),document.removeEventListener("visibilitychange",B),document.fullscreenElement===g()&&document.exitFullscreen().catch(()=>{})});const F=e.computed(()=>({transform:`translate(-50%, -50%) translate3d(${t.core.state.offsetX}px, ${t.core.state.offsetY}px, 0)`})),L=e.computed(()=>({width:`${t.core.mediaSize.value.width*t.core.displayScale.value}px`,height:`${t.core.mediaSize.value.height*t.core.displayScale.value}px`,transform:`rotate(${t.core.state.rotation}deg)`}));function $(){i.value=!0,t.core.setMediaElement(s.value),r("ready","screen")}function P(){return{image:m.active.value?m.snapshot():i.value?bn(s.value,t.core.mediaSize.value):t.core.mediaRef.value,scale:1}}return a({togglePlayback:y.toggle,toggleFullscreen:b,playback:y,captureFrame:P,retainFrame:()=>({...P(),release:()=>{}})}),(v,T)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"host",ref:d,class:"mp-dom-renderer mp-video-player","data-playback":e.unref(x).ended?"ended":e.unref(x).playing?"playing":"paused"},[i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Ne,{key:0,active:v.active,media:l.value,"original-enabled":!1,core:v.core,"initial-image":v.initialImage,rendering:v.rendering,quality:v.quality,"request-version":v.requestVersion,"load-enabled":v.loadEnabled,priority:v.priority,"resource-policy":v.resourcePolicy,"resolve-source":v.resolveSource,onReady:T[0]||(T[0]=z=>r("ready",z)),onError:T[1]||(T[1]=z=>r("error",z)),onOriginalState:T[2]||(T[2]=(z,X)=>r("originalState",z,X))},null,8,["active","media","core","initial-image","rendering","quality","request-version","load-enabled","priority","resource-policy","resolve-source"])),e.createElementVNode("div",{class:"mp-dom-renderer__frame",style:e.normalizeStyle([F.value,{visibility:i.value?"inherit":"hidden"}])},[e.createElementVNode("video",e.mergeProps({ref_key:"videoRef",ref:s,class:"mp-dom-renderer__node",muted:v.muted,loop:v.loop,playsinline:"","webkit-playsinline":"true",crossorigin:"anonymous",preload:v.active&&v.loadEnabled?"auto":"none",style:L.value},e.toHandlers(e.unref(y).events,!0),{onPlaying:$}),null,16,Un),e.withDirectives(e.createElementVNode("canvas",{ref_key:"retainedFrame",ref:u,class:"mp-dom-renderer__node mp-video-retained-frame",style:e.normalizeStyle(L.value),"aria-hidden":"true"},null,4),[[e.vShow,e.unref(m).active.value]])],4),v.active&&v.enabled&&e.unref(x).buffering&&e.unref(x).status!=="error"?(e.openBlock(),e.createElementBlock("div",An,Hn)):e.createCommentVNode("",!0),I.value&&!e.unref(x).playing&&!e.unref(x).buffering&&e.unref(x).status!=="error"?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"mp-video-center-play","data-preview-control":"","aria-label":e.unref(x).ended?"重新播放":"开始播放视频",onPointerdown:T[3]||(T[3]=e.withModifiers(()=>{},["stop"])),onPointerup:T[4]||(T[4]=e.withModifiers(()=>{},["stop"])),onClick:T[5]||(T[5]=e.withModifiers((...z)=>e.unref(y).toggle&&e.unref(y).toggle(...z),["stop"]))},[e.createVNode(De,{name:e.unref(x).ended?"replay":"play"},null,8,["name"])],40,Yn)):e.createCommentVNode("",!0),e.unref(x).status==="error"?(e.openBlock(),e.createElementBlock("div",Xn,"视频暂时无法播放")):e.createCommentVNode("",!0),v.controls&&v.active&&v.enabled?(e.openBlock(),e.createBlock(e.Teleport,{key:4,to:v.controlsTarget,disabled:!v.teleportControls},[e.createElementVNode("div",{class:e.normalizeClass(["mp-video-control-layer",{"is-hidden":!I.value}]),inert:!I.value},[e.createVNode(Nn,{quality:R.value,visible:I.value,playback:e.unref(y),fullscreen:S.value,"can-fullscreen":M.value,onFullscreen:b},null,8,["quality","visible","playback","fullscreen","can-fullscreen"])],10,Wn)],8,["to","disabled"])):e.createCommentVNode("",!0)],8,_n))}}),jn=["data-scale","data-rotation","data-live-holding"],wt=e.defineComponent({__name:"PreviewStage",props:{media:{},videoLoader:{type:Function,default:Ve},livePlaying:{type:Boolean,default:!1},active:{type:Boolean,default:!0},requestVersion:{default:0},loadEnabled:{type:Boolean,default:!0},resourcePolicy:{default:()=>Ce},resolveSource:{type:Function,default:Re},inactiveResetDuration:{default:0},disabled:{type:Boolean,default:!1},externalGestures:{type:Boolean,default:!1},controlsVisible:{type:Boolean,default:!0},teleportControls:{type:Boolean,default:!1},controlsTarget:{default:"body"},rendering:{type:Boolean,default:!0},paging:{type:Boolean,default:!1},initialImage:{default:()=>ye},quality:{default:"screen"}},emits:["tap","doubleTap","scale","swipeDownProgress","close","previous","next","pageDrag","pageRelease","ready","error","originalState","liveState","liveEnded"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(!1),l=e.ref("loading"),s=st({motionActive:()=>t.paging,interactive:()=>t.active&&!t.disabled,zoomable:()=>!0,doubleTapZoom:()=>on(t.media,s.core.viewportSize.value),holdable:()=>t.media.type==="live-photo"&&S.value==="ready"&&l.value==="idle",onHoldStart:()=>{i.value=!0},onHoldEnd:()=>{i.value=!1,r("liveEnded")},onTap:()=>r("tap"),onDoubleTap:()=>r("doubleTap"),onScale:g=>{t.active&&r("scale",g)},onSwipeDownProgress:g=>{t.active&&r("swipeDownProgress",g)},onSwipeDownClose:()=>r("close"),onSwipeLeft:()=>r("next"),onSwipeRight:()=>r("previous"),onPageDrag:g=>{t.active&&r("pageDrag",g)},onPageRelease:(g,b)=>r("pageRelease",g,b)}),u=s.core.containerRef,m=s.core.downDragStyle,d=s.core.state,S=e.ref("loading"),M=e.ref("thumbnail"),y=e.ref(),R=e.computed(()=>t.media.type==="video"?yt:t.media.type==="live-photo"?gt:Ne),w=e.computed(()=>M.value==="full"||t.quality==="full"?"full":t.quality);e.watch([()=>t.media.id,()=>t.media.src,()=>t.media.previewSrc,()=>t.media.thumbnail],()=>{M.value="thumbnail"}),e.watch(()=>t.media.id,()=>{S.value="loading",s.core.setRotation(0)}),e.watch([()=>t.media.width,()=>t.media.height],([g,b])=>{s.core.setMediaSize({width:g,height:b})},{immediate:!0}),e.watch(()=>t.active,g=>{g||s.core.resetTransform(t.inactiveResetDuration)}),e.watch(()=>t.disabled,g=>{g&&s.core.cancelGesture(!0)});function h(g){g==="full"&&(M.value=g),S.value="ready",r("ready",g)}function x(g){l.value=g,r("liveState",g)}const I=e.computed(()=>t.externalGestures?{}:{wheel:s.onWheel,pointerdown:s.onPointerDown,pointermove:s.onPointerMove,pointerup:s.onPointerUp,pointercancel:s.onPointerCancel,lostpointercapture:s.onPointerCancel});return a({onPointerDown:s.onPointerDown,onPointerMove:s.onPointerMove,onPointerUp:s.onPointerUp,onPointerCancel:s.onPointerCancel,onWheel:s.onWheel,readiness:S,core:s.core,rotateBy:s.core.rotateBy,resetTransform:s.core.resetTransform,zoomIn:()=>s.core.zoomTo(d.level*1.5,void 0,!0),zoomOut:()=>s.core.zoomTo(d.level/1.5,void 0,!0),togglePlayback:()=>y.value.togglePlayback(),toggleFullscreen:()=>y.value.toggleFullscreen(),captureFrame:()=>y.value.captureFrame(),retainFrame:()=>y.value.retainFrame()}),(g,b)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({ref_key:"containerRef",ref:u,class:["mp-stage",{"is-zoomed":e.unref(d).level>1,"is-dismissing":e.unref(d).draggingDown}],style:e.unref(m),"data-scale":e.unref(d).level.toFixed(3),"data-rotation":e.unref(d).rotation,"data-live-holding":i.value,onContextmenu:b[3]||(b[3]=p=>{g.media.type==="live-photo"&&p.preventDefault()})},e.toHandlers(I.value,!0)),[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(R.value),e.mergeProps({ref_key:"rendererRef",ref:y,media:g.media},g.media.type==="video"?{videoLoader:g.videoLoader}:{},{"initial-image":g.initialImage,rendering:g.rendering,core:e.unref(s).core,quality:w.value,"request-version":g.requestVersion,"load-enabled":g.loadEnabled,priority:g.active?0:2,"resource-policy":g.resourcePolicy,"resolve-source":g.resolveSource,playing:(g.livePlaying||i.value)&&g.active,enabled:!g.disabled,"controls-visible":g.controlsVisible,"teleport-controls":g.teleportControls,"controls-target":g.controlsTarget,active:g.active,onReady:h,onError:b[0]||(b[0]=p=>r("error",p)),onOriginalState:b[1]||(b[1]=(p,k)=>r("originalState",p,k)),onLiveState:x,onLiveEnded:b[2]||(b[2]=p=>r("liveEnded"))}),null,16,["media","initial-image","rendering","core","quality","request-version","load-enabled","priority","resource-policy","resolve-source","playing","enabled","controls-visible","teleport-controls","controls-target","active"]))],16,jn))}});function Zn(n,a){const o=e.ref(new Set),t=e.ref("idle"),r=e.ref(""),i=e.ref(0),l=e.ref("");function s(){l.value="",t.value="idle",r.value="",i.value=0}function u(){t.value!=="ready"&&(t.value="loading",r.value="",i.value++,o.value=new Set([...o.value,n().id]))}function m(d,S){t.value=d,r.value=S,a(n(),d,S)}return{originalIds:o,originalStatus:t,originalReason:r,originalRequest:i,readyId:l,reset:s,requestOriginal:u,updateOriginal:m}}function Kn(n,a,o,t={}){const r=e.ref(0),i=e.reactive({offset:0,dragging:!1,settling:!1,preparing:!1,grabbed:!1,duration:360}),l={readOffset:()=>i.offset,flushLayout:()=>{},...t},s=16,u=()=>a()+s,m=e.computed(()=>[r.value-1,r.value,r.value+1].filter(B=>B>=0&&B<n()));let d=setTimeout(()=>{},0),S=()=>{},M=0,y=0;function R(){M+=1,clearTimeout(d),S(),i.settling=!1,i.preparing=!1}e.onBeforeUnmount(R);function w(){if(!i.settling&&!i.preparing)return;const B=i.preparing?i.offset:l.readOffset();R(),i.offset=B,i.grabbed=!0}function h(B){if(B===0){R(),i.dragging=!1,i.grabbed=!1,i.offset=0,y=0;return}i.dragging||(w(),y=i.offset,R(),i.dragging=!0,i.grabbed=!0);const F=y+B,L=r.value===0&&F>0||r.value===n()-1&&F<0;i.offset=L?Math.sign(F)*Math.sqrt(Math.abs(F))*6:F}async function x(B,F=0){R();const L=M,$=r.value;i.offset+=(B-$)*u();const P=Math.abs(i.offset),v=Z(P/u(),0,1),T=Z(220+v*140-Math.min(Math.abs(F),2)*35,240,360);i.duration=matchMedia("(prefers-reduced-motion: reduce)").matches?0:T,r.value=B,i.dragging=!1,i.grabbed=!1,i.preparing=!0,B!==$&&o(B),await e.nextTick(),L===M&&(l.flushLayout(),i.preparing=!1,i.settling=!0,i.offset=0,await new Promise(z=>{S=z,d=setTimeout(z,i.duration)}),L===M&&(i.settling=!1,S=()=>{}))}function I(B,F){const L=i.offset,$=Math.abs(F)>.35&&Math.abs(B)>16,P=Math.sign($?F:L),v=$||Math.abs(L)>a()*.14;x(Z(r.value-(v?P:0),0,n()-1),F)}function g(){i.grabbed&&!i.dragging&&x(r.value)}function b(B){if(i.dragging)return;w();const F=Z(r.value+B,0,n()-1);F!==r.value?x(F):g()}function p(B){R(),r.value=B,i.offset=0,i.dragging=!1,i.grabbed=!1}function k(B){r.value=B}return{index:r,state:i,slots:m,stride:u,drag:h,release:I,go:b,grab:w,resume:g,reset:p,rebase:k,cancel:R}}function bt(n,a,o){const t=Math[o==="cover"?"max":"min"](a.width/n.width,a.height/n.height);return{x:a.left+a.width/2,y:a.top+a.height/2,width:n.width*t,height:n.height*t,rotation:0,clip:{left:a.left,top:a.top,width:a.width,height:a.height},radius:0}}function Gn(n,a,o){const t=(r,i)=>r+(i-r)*o;return{x:t(n.x,a.x),y:t(n.y,a.y),width:t(n.width,a.width),height:t(n.height,a.height),rotation:t(n.rotation,a.rotation),radius:t(n.radius,a.radius),clip:{left:t(n.clip.left,a.clip.left),top:t(n.clip.top,a.clip.top),width:t(n.clip.width,a.clip.width),height:t(n.clip.height,a.clip.height)}}}function tt(n){const a=n.rotation*Math.PI/180,o=Math.abs(Math.cos(a))*n.width+Math.abs(Math.sin(a))*n.height,t=Math.abs(Math.sin(a))*n.width+Math.abs(Math.cos(a))*n.height,r=Math.max(n.x-o/2,n.clip.left),i=Math.max(n.y-t/2,n.clip.top);return{left:r,top:i,width:Math.max(0,Math.min(n.x+o/2,n.clip.left+n.clip.width)-r),height:Math.max(0,Math.min(n.y+t/2,n.clip.top+n.clip.height)-i)}}function Qn(n,a,o,t,r){const i=tt(n),l=tt(a),s=Math.min(i.width/l.width,i.height/l.height),u={width:Math.max(i.width,l.width,1),height:Math.max(i.height,l.height,1)},m=128,d=[],S=[];for(let M=0;M<=m;M+=1){const y=M/m,R=Gn(n,a,y);let w;if(r)w={left:i.left+(l.left-i.left)*y,top:i.top+(l.top-i.top)*y,width:i.width+(l.width-i.width)*y,height:i.height+(l.height-i.height)*y};else{const I=Math.min(y/.78,1),g=1-I*I*I*(I*(I*6-15)+10),b=s+(1-s)*y,p=l.width*b+(i.width-l.width*s)*g,k=l.height*b+(i.height-l.height*s)*g;w={left:i.left+i.width/2+(l.left+l.width/2-i.left-i.width/2)*y-p/2,top:i.top+i.height/2+(l.top+l.height/2-i.top-i.height/2)*y-k/2,width:p,height:k}}const h=Math.max(w.width,.001)/u.width,x=Math.max(w.height,.001)/u.height;d.push({transform:`scale(${1/h},${1/x}) translate3d(${R.x-w.left}px,${R.y-w.top}px,0) rotate(${R.rotation}deg) scale(${R.width/t.width}) translate3d(${-t.width/2}px,${-t.height/2}px,0)`,offset:y}),S.push({transform:`translate3d(${w.left-o.left}px,${w.top-o.top}px,0) scale(${h},${x})`,...n.radius===0&&a.radius===0?{}:{borderRadius:`${R.radius/h}px / ${R.radius/x}px`},offset:y})}return{pictures:d,masks:S,maskSize:u}}function Jn(){let n={kind:"idle"};function a(){n.kind==="playing"&&n.animations.forEach(r=>r.cancel()),n={kind:"idle"}}function o(){return n.kind!=="playing"||!n.entering?{kind:"inactive"}:(n.entering=!1,n.animations.forEach(r=>r.reverse()),n.finished=Promise.all(n.animations.map(r=>r.finished)).then(()=>{}).catch(()=>{}),{kind:"reversing",finished:n.finished})}async function t(r,i,l,s,u,m,d,S,M=S?0:1,y=340){a();const R=Math.max(s.width,u.width),w=R*u.height/u.width,h=Math.min(devicePixelRatio,2,Math.sqrt(ne.maxCanvasPixels/(R*w)));r.width=Math.max(1,Math.round(R*h)),r.height=Math.max(1,Math.round(w*h)),r.style.width=`${R}px`,r.style.height=`${w}px`;const x=r.getContext("2d");(F=>{x.clearRect(0,0,r.width,r.height),x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(F,0,0,r.width,r.height)})(l);const g=Qn(s,u,m,{width:R,height:w},S);i.style.width=`${g.maskSize.width}px`,i.style.height=`${g.maskSize.height}px`,i.style.borderRadius="0";const p={duration:matchMedia("(prefers-reduced-motion: reduce)").matches?0:Math.max(0,y),easing:"cubic-bezier(.2,.78,.2,1)",fill:"both"},k=[r.animate(g.pictures,p),i.animate(g.masks,p),d.animate([{opacity:M},{opacity:S?1:0}],p)],B=Promise.all(k.map(F=>F.finished)).then(()=>{}).catch(()=>{});n={kind:"playing",entering:S,animations:k,finished:B},await B}return{play:t,cancel:a,reverseOpening:o}}function kt(n,a){const o=Math.max(n.left,a.left),t=Math.max(n.top,a.top);return{left:o,top:t,width:Math.max(0,Math.min(n.left+n.width,a.left+a.width)-o),height:Math.max(0,Math.min(n.top+n.height,a.top+a.height)-t)}}function ea(n,a){let o={...a};const t=/^(auto|scroll|overlay)$/;for(let r=n.parentElement;r!==document.documentElement;r=r.parentElement){const i=getComputedStyle(r),l=t.test(i.overflowX),s=t.test(i.overflowY);if(!l&&!s)continue;const u=r.getBoundingClientRect(),m=Number(r.style.getPropertyValue("--mp-transition-inset-top"));o=kt(o,{left:l?u.left:o.left,top:s?u.top+m:o.top,width:l?u.width:o.width,height:s?Math.max(0,u.height-m):o.height})}return o}function nt(n,a,o){if(n.kind==="unavailable")return n;const t=bt(a,n.element.getBoundingClientRect(),"cover");return t.clip=kt(t.clip,ea(n.element,o)),t.clip.width<=0||t.clip.height<=0?{kind:"unavailable"}:(t.radius=parseFloat(getComputedStyle(n.element).borderTopLeftRadius)||0,{kind:"element",element:n.element,frame:t,viewport:o})}const ta=["aria-label","data-phase","data-chrome","inert"],na=["aria-hidden","inert","data-media-id"],aa={key:0,class:"mp-resource-state mp-viewer__loading mp-viewer__pages",role:"status","aria-label":"加载中"},ia=e.createElementVNode("span",{class:"mp-spinner","aria-hidden":"true"},null,-1),ra=[ia],oa=["inert"],la={class:"mp-viewer__toolbar"},sa={class:"mp-viewer__title"},ca=["disabled"],ua={class:"mp-viewer__footer"},da={class:"mp-viewer__counter","aria-live":"polite"},fa={key:1,class:"mp-viewer__detail"},ma=e.defineComponent({inheritAttrs:!1,__name:"MediaPreview",props:{items:{},mobile:{type:Boolean,default:!1},teleportDisabled:{type:Boolean,default:!1},keyboardEnabled:{type:Boolean,default:!0},gesturesEnabled:{type:Boolean,default:!0},persistentChrome:{type:Boolean,default:!1},videoLoader:{type:Function,default:Ve},resourcePolicy:{default:()=>Ce},resolveImageSource:{type:Function,default:Re},hasMore:{type:Boolean,default:!1},appearance:{default:"dark"},closeDuration:{default:240},transitionDuration:{default:340},resolveAnchor:{type:Function,default:()=>({kind:"unavailable"})}},emits:["open","opened","ready","closing","close","change","error","originalState","loadMore","phaseChange","chromeChange"],setup(n,{expose:a,emit:o}){const t=e.useAttrs(),r=n,i=o,l=e.ref("closed");e.watch(l,c=>i("phaseChange",c),{flush:"sync"});const s=`mp-video-controls-${e.getCurrentInstance().uid}`,u=e.ref(),m=e.ref(),d=Zn(()=>N.value,(c,E,C)=>i("originalState",c,E,C)),{originalIds:S,originalStatus:M,originalReason:y,originalRequest:R,readyId:w}=d;let h="",x=-1;const I=e.ref(),g=e.ref(),b=e.ref(),p=e.ref(!1),k=e.ref(0),B=e.ref(!0);e.watch(B,c=>i("chromeChange",c),{flush:"sync"});const F=e.ref(!1),L=e.ref("loading"),$=e.ref(1),P=e.ref(!1),v=e.ref(1),T=e.ref(!1),z=e.ref(!1),X=e.shallowRef(ye);let de="",G={kind:"unavailable"};const re=new Map,ee=new Map;function he(c){return E=>{ee.set(c,E)}}function K(c){return E=>{re.set(c,E)}}const q=Kn(()=>r.items.length,()=>v.value,c=>{h=r.items[c].id,d.reset(),$.value=1,F.value=!1,L.value="loading",i("change",c),Ee(c)},{readOffset:()=>new DOMMatrixReadOnly(getComputedStyle(ee.get(h)).transform).m41,flushLayout:()=>{ee.get(h).getBoundingClientRect()}}),D=q.index,N=e.computed(()=>r.items[D.value]),xe=q.slots,$e=e.computed(()=>l.value==="opening"||p.value?[D.value]:xe.value);e.watch(xe,()=>{e.nextTick(()=>{const c=new Set(xe.value.map(E=>r.items[E].id));for(const E of re.keys())c.has(E)||re.delete(E);for(const E of ee.keys())c.has(E)||ee.delete(E)})});const Q={close:O,setChromeVisible:c=>{B.value=c},goTo:Ae,previous:()=>q.go(-1),next:()=>q.go(1),rotate:(c=90)=>A().rotateBy(c),reset:()=>A().resetTransform(),zoomIn:()=>A().zoomIn(),zoomOut:()=>A().zoomOut(),original:d.requestOriginal,fullscreen:pe,togglePlayback:()=>A().togglePlayback(),toggleLive:()=>{l.value!=="open"||L.value==="loading"||L.value==="error"||(F.value=!F.value)},toggleDetail:()=>{P.value=!P.value}},oe=Jn(),ae=Ft();let fe=Promise.resolve(),le=()=>{},W=0,me="",te=!1,ie="",se="",ge=()=>{},ce={kind:"idle"},be=0;const ve=()=>new Promise(c=>requestAnimationFrame(()=>c())),ke=new ResizeObserver(()=>{const c=`${m.value.clientWidth}:${m.value.clientHeight}`,E=`${u.value.clientWidth}:${u.value.clientHeight}`,C=ie!==""&&ie!==c,U=se!==""&&se!==E;ie=c,se=E,v.value=m.value.clientWidth,C&&l.value==="open"&&q.reset(D.value),U&&oe.cancel()});function Ee(c){r.hasMore&&c>=r.items.length-3&&x!==r.items.length&&(x=r.items.length,i("loadMore",c))}function _e(c,E){c===D.value&&(z.value&&(w.value=N.value.id),i("ready",c,E))}function Ue(c,E,C){c===D.value&&d.updateOriginal(E,C)}e.watch(()=>r.items.map(c=>c.id),c=>{if(l.value==="closed")return;if(c.length===0){W++,oe.cancel(),le(),ae.clear(),q.cancel(),be++,ce.kind==="active"&&ce.animation.cancel(),ke.disconnect(),ie="",se="",ge(),i("closing"),l.value="closed",X.value=ye,re.clear(),ee.clear(),document.body.style.overflow=me,i("close");return}const E=c.indexOf(h),C=E>=0?E:Math.min(D.value,c.length-1);(C!==D.value||E<0)&&(E>=0?q.rebase(C):(q.reset(C),h=c[C],d.reset(),$.value=1,F.value=!1,i("change",C))),Ee(C)},{flush:"sync"});function Ae(c){if(!Number.isInteger(c)||c<0||c>=r.items.length)throw new RangeError("无效的预览下标");if(!(l.value!=="open"||c===D.value)){if(Math.abs(c-D.value)===1){q.go(c-D.value);return}q.reset(c),h=r.items[c].id,d.reset(),$.value=1,F.value=!1,L.value="loading",i("change",c),Ee(c)}}function Oe(){r.persistentChrome||(B.value=!B.value)}function A(){return re.get(h)}function Be(c){ge();const E=c.element.classList.contains("mp-transition-source");c.element.classList.add("mp-transition-source"),ge=()=>{c.element.classList.toggle("mp-transition-source",E)}}function f(){const c=u.value.getBoundingClientRect();return{left:c.left,top:c.top,width:c.width,height:c.height}}function V(){return m.value.getBoundingClientRect()}function _(c=1){const E=V(),C=A().core,U=C.state,J=U.downScale;return{x:E.left+E.width/2+q.state.offset+U.offsetX*J*c+U.downOffsetX,y:E.top+E.height/2+U.offsetY*J*c+U.downOffsetY,width:C.mediaSize.value.width*C.displayScale.value*J*c,height:C.mediaSize.value.height*C.displayScale.value*J*c,rotation:U.rotation,clip:E,radius:0}}async function Y(c=0){if(!Number.isInteger(c)||c<0||c>=r.items.length)throw new RangeError("无效的预览下标");if(l.value==="closing"&&await fe,l.value!=="closed"||te)return;const E=++W;if(ae.clear(),me=document.body.style.overflow,document.body.style.overflow="hidden",q.reset(c),h=r.items[c].id,d.reset(),$.value=1,B.value=!0,F.value=!1,L.value="loading",P.value=!1,k.value=0,z.value=!1,l.value="opening",X.value=ye,T.value=!1,de=N.value.id,G={kind:"unavailable"},p.value=!1,i("open",c),await e.nextTick(),E!==W||te)return;v.value=m.value.clientWidth,ke.observe(u.value),ke.observe(m.value);try{const U=await r.resolveAnchor(N.value);if(E!==W)return;const J=nt(U,N.value,f());G=J,X.value=an(J),T.value=X.value.kind==="image"||A().readiness==="ready";const Pe=V();if(J.kind==="element"){const Le=A().readiness==="ready"?A().core.mediaRef.value:X.value.kind==="image"?X.value.image:Qe();if(p.value=!0,await e.nextTick(),E!==W||te)return;Be(J),await oe.play(I.value,g.value,Le,J.frame,bt(N.value,Pe,"contain"),J.viewport,b.value,!0,0,r.transitionDuration)}else k.value=1,p.value=!1,await ue(!0)}catch(U){if(E!==W)return;i("error",Se(U),N.value)}if(E!==W||te||(k.value=1,l.value="open",await e.nextTick(),E!==W||te))return;const C=ae.take();C.kind==="pointer"&&r.gesturesEnabled&&(A().onPointerDown(C.down,V(),C.target),A().onPointerMove(C.latest)),A().core.renderNow(),await ve(),!(E!==W||te)&&(p.value=!1,oe.cancel(),ge(),i("opened",c),await ve(),!(E!==W||te||l.value!=="open")&&(z.value=!0,Ee(c)))}function O(){return l.value==="closed"||l.value==="closing"||(fe=j()),fe}async function j(){ae.clear(),q.grab();const c=k.value,E=l.value==="opening",C=!E&&A().readiness==="ready"?A().retainFrame():{image:X.value.kind==="image"&&N.value.id===de?X.value.image:Qe(),scale:1,release:()=>{}};le=C.release;try{let U=E?{kind:"opening"}:{kind:"captured",frame:_(C.scale)};E||A().core.cancelGesture(!0);const J=++W,Pe=E?oe.reverseOpening():{kind:"inactive"};Pe.kind==="inactive"&&oe.cancel(),q.cancel(),F.value=!1,l.value="closing",i("closing");try{if(await e.nextTick(),J!==W||te||(document.fullscreenElement===u.value&&(await document.exitFullscreen(),await ve(),await ve(),U.kind==="captured"&&(U.frame=_(C.scale))),J!==W||te))return;const Le=E?G:await r.resolveAnchor(N.value);if(J!==W||te)return;const qe=E?G:nt(Le,N.value,f());if(Pe.kind==="reversing")await Pe.finished;else if(U.kind==="captured"&&qe.kind==="element"){const Pt=C.image;Be(qe),p.value=!0,await e.nextTick(),await oe.play(I.value,g.value,Pt,U.frame,qe.frame,qe.viewport,b.value,!1,c,r.closeDuration)}else p.value=!1,await ue(!1)}catch(Le){i("error",Se(Le),N.value),await ue(!1)}if(J!==W||te)return;ke.disconnect(),ie="",se="",k.value=0,l.value="closed",X.value=ye,re.clear(),ee.clear(),ge(),document.body.style.overflow=me,i("close"),await e.nextTick(),oe.cancel()}finally{C.release(),le===C.release&&(le=()=>{})}}async function ue(c){const E=++be,C=c?0:Number(getComputedStyle(u.value).opacity);ce.kind==="active"&&ce.animation.cancel(),u.value.style.opacity=String(C);const U=u.value.animate([{opacity:C},{opacity:c?1:0}],{duration:matchMedia("(prefers-reduced-motion: reduce)").matches?0:180,fill:"forwards"});ce={kind:"active",animation:U},await U.finished.catch(()=>{}),!(E!==be||te)&&(u.value.style.opacity=c?"1":"0",U.cancel(),ce={kind:"idle"})}async function pe(){if(document.fullscreenEnabled)try{document.fullscreenElement===u.value?await document.exitFullscreen():await u.value.requestFullscreen()}catch(c){i("error",Se(c),N.value)}}function we(c){if(r.gesturesEnabled){if(l.value==="opening"){ae.start(c);return}l.value==="open"&&A().onPointerDown(c,V())&&q.grab()}}function Ie(c){if(l.value==="opening"){r.gesturesEnabled&&ae.finish(c,V())&&O();return}l.value==="open"&&(A().onPointerUp(c),l.value==="open"&&q.resume())}function Xe(c){ae.clear(),l.value==="open"&&(A().onPointerCancel(c),l.value==="open"&&q.resume())}function Mt(c){l.value==="opening"&&ae.clear(),l.value==="open"&&c.target===A().core.containerRef.value&&Xe(c)}function xt(c){l.value==="opening"&&ae.move(c),l.value==="open"&&A().onPointerMove(c)}function Et(c){l.value==="open"&&r.gesturesEnabled&&A().onWheel(c)}function St(c){l.value==="open"&&(k.value=1-c)}function Ct(c){l.value==="open"&&q.drag(c)}function Rt(c,E){l.value==="open"&&(F.value=!1,q.release(c,E))}function Bt(c){$.value=c,c>1.02&&!r.persistentChrome&&(B.value=!1)}function We(c){if(!(l.value==="closed"||!r.keyboardEnabled)&&!(c.key==="Escape"&&document.fullscreenElement===u.value)){if(c.key==="Escape"){c.preventDefault(),O();return}if(!(l.value!=="open"||c.target.matches("input, textarea, select, button, [role='slider']"))){if(N.value.type==="video"){if(c.code==="Space"){c.preventDefault(),A().togglePlayback();return}if(c.key==="Enter"){c.preventDefault(),A().toggleFullscreen();return}}if(N.value.type==="live-photo"&&c.code==="Space"){c.preventDefault(),Q.toggleLive();return}c.key==="ArrowLeft"&&(c.preventDefault(),q.go(-1)),c.key==="ArrowRight"&&(c.preventDefault(),q.go(1)),(c.key==="+"||c.key==="=")&&Q.zoomIn(),c.key==="-"&&Q.zoomOut(),c.key==="0"&&Q.reset()}}}return e.onMounted(()=>{document.addEventListener("keydown",We)}),e.onBeforeUnmount(()=>{te=!0,W+=1,oe.cancel(),le(),ae.clear(),be+=1,ce.kind==="active"&&ce.animation.cancel(),ge(),ke.disconnect(),document.removeEventListener("keydown",We),l.value!=="closed"&&(document.body.style.overflow=me)}),a({open:Y,...Q,currentIndex:D,phase:l,element:u,mediaElement:()=>A().core.mediaRef.value,canvasElement:()=>A().core.canvasRef.value}),(c,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:c.teleportDisabled},[l.value!=="closed"?(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:0,ref_key:"root",ref:u},e.unref(t),{class:["mp-viewer",{"is-mobile":c.mobile,"is-album":c.appearance==="album"}],role:"dialog","aria-modal":"true","aria-label":N.value.title,"data-phase":l.value,"data-chrome":B.value?"visible":"hidden",inert:l.value==="closing",onPointerdown:we,onPointermove:xt,onPointerup:Ie,onPointercancel:Xe,onLostpointercapture:Mt,onWheel:Et}),[e.createElementVNode("div",{ref_key:"backdrop",ref:b,class:"mp-viewer__backdrop",style:e.normalizeStyle({opacity:k.value})},null,4),e.createElementVNode("div",{id:s,class:"mp-viewer__video-controls"}),e.createElementVNode("div",{ref_key:"mediaViewport",ref:m,class:e.normalizeClass(["mp-viewer__pages",{"is-transitioning":p.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($e.value,C=>(e.openBlock(),e.createElementBlock("div",{key:c.items[C].id,ref_for:!0,ref:he(c.items[C].id),class:"mp-viewer__page",style:e.normalizeStyle({transform:`translate3d(${(C-e.unref(D))*e.unref(q).stride()+e.unref(q).state.offset}px,0,0)`,transition:e.unref(q).state.settling?`transform ${e.unref(q).state.duration}ms cubic-bezier(.22,.61,.36,1)`:"none"}),"aria-hidden":C!==e.unref(D),inert:C!==e.unref(D),"data-media-id":c.items[C].id},[e.createVNode(wt,{ref_for:!0,ref:K(c.items[C].id),media:c.items[C],"video-loader":c.videoLoader,rendering:l.value==="open",paging:e.unref(q).state.dragging||e.unref(q).state.preparing||e.unref(q).state.settling||e.unref(q).state.grabbed,"external-gestures":"",active:C===e.unref(D),disabled:l.value!=="open"||!c.gesturesEnabled,"inactive-reset-duration":e.unref(q).state.duration,"resource-policy":c.resourcePolicy,"resolve-source":c.resolveImageSource,"request-version":C===e.unref(D)?e.unref(R):0,"load-enabled":C===e.unref(D)?z.value&&l.value==="open":l.value==="open"&&!p.value&&e.unref(w)===N.value.id,"teleport-controls":"","controls-target":`#${s}`,"controls-visible":B.value&&k.value===1,"initial-image":c.items[C].id===e.unref(de)?X.value:e.unref(ye),quality:C===e.unref(D)&&e.unref(S).has(c.items[C].id)?"full":C===e.unref(D)?"screen":"thumbnail","live-playing":F.value,onTap:Oe,onScale:Bt,onPageDrag:Ct,onPageRelease:Rt,onClose:O,onSwipeDownProgress:St,onLiveState:U=>{C===e.unref(D)&&(L.value=U)},onLiveEnded:()=>{C===e.unref(D)&&(F.value=!1)},onReady:U=>_e(C,U),onOriginalState:(U,J)=>Ue(C,U,J),onError:U=>i("error",U,c.items[C])},null,8,["media","video-loader","rendering","paging","active","disabled","inactive-reset-duration","resource-policy","resolve-source","request-version","load-enabled","controls-target","controls-visible","initial-image","quality","live-playing","onLiveState","onLiveEnded","onReady","onOriginalState","onError"])],12,na))),128))],2),e.withDirectives(e.createElementVNode("div",{ref_key:"transitionMask",ref:g,class:"mp-shared-clip","aria-hidden":"true"},[e.createElementVNode("canvas",{ref_key:"transitionCanvas",ref:I,class:"mp-shared-transition"},null,512)],512),[[e.vShow,p.value]]),l.value==="opening"&&!T.value?(e.openBlock(),e.createElementBlock("div",aa,ra)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mp-viewer__chrome",{"is-hidden":!B.value||l.value!=="open"||k.value<1}]),inert:!B.value||l.value!=="open"||k.value<1},[e.renderSlot(c.$slots,"toolbar",{media:N.value,index:e.unref(D),total:c.items.length,scale:$.value,controls:Q,originalStatus:e.unref(M),originalReason:e.unref(y),livePlaying:F.value,liveStatus:L.value},()=>[e.createElementVNode("header",la,[e.createElementVNode("button",{type:"button","aria-label":"关闭预览",onClick:O},"‹"),e.createElementVNode("div",sa,[e.createElementVNode("strong",null,e.toDisplayString(N.value.title),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(D)+1)+" / "+e.toDisplayString(c.items.length),1)]),e.createElementVNode("button",{type:"button","aria-label":"旋转图片",disabled:N.value.type==="video",onClick:E[0]||(E[0]=C=>Q.rotate())}," ↻ ",8,ca)]),e.createElementVNode("footer",ua,[N.value.type!=="video"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button","aria-label":"缩小",onClick:E[1]||(E[1]=(...C)=>Q.zoomOut&&Q.zoomOut(...C))},"−"),e.createElementVNode("button",{type:"button","aria-label":"放大",onClick:E[2]||(E[2]=(...C)=>Q.zoomIn&&Q.zoomIn(...C))},"+"),e.createElementVNode("button",{type:"button","aria-label":"复位",onClick:E[3]||(E[3]=(...C)=>Q.reset&&Q.reset(...C))},"复位")],64)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button","aria-label":"图片详情",onClick:E[4]||(E[4]=(...C)=>Q.toggleDetail&&Q.toggleDetail(...C))},"ⓘ")])]),!c.mobile&&e.unref(D)>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mp-viewer__arrow is-left","aria-label":"上一张",onClick:E[5]||(E[5]=C=>e.unref(q).go(-1))}," ‹ ")):e.createCommentVNode("",!0),!c.mobile&&e.unref(D)<c.items.length-1?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mp-viewer__arrow is-right","aria-label":"下一张",onClick:E[6]||(E[6]=C=>e.unref(q).go(1))}," › ")):e.createCommentVNode("",!0),e.createElementVNode("div",da,e.toDisplayString(e.unref(D)+1)+" / "+e.toDisplayString(c.items.length),1)],10,oa),P.value?(e.openBlock(),e.createElementBlock("aside",fa,[e.createElementVNode("button",{type:"button","aria-label":"关闭详情",onClick:E[7]||(E[7]=C=>P.value=!1)},"×"),e.createElementVNode("strong",null,e.toDisplayString(N.value.title),1),e.createElementVNode("span",null,e.toDisplayString(N.value.width)+" × "+e.toDisplayString(N.value.height),1),e.createElementVNode("span",null,e.toDisplayString(N.value.type)+" · "+e.toDisplayString($.value.toFixed(2))+"×",1)])):e.createCommentVNode("",!0)],16,ta)):e.createCommentVNode("",!0)],8,["disabled"]))}});function pa(n,a,o,t=2){const r=Math.max(1,(a-t*(o-1))/o),i=[],l=new Map;let s=0,u=0;return n.forEach((m,d)=>{d>0&&(i.push({kind:"header",group:d,first:0,count:0,start:s,end:s+52}),s+=52);for(let S=0;S<m.items.length;S+=o){const M=Math.min(o,m.items.length-S),y=i.length;i.push({kind:"items",group:d,first:S,count:M,start:s,end:s+r});for(let R=0;R<M;R++)l.set(m.items[S+R].id,y);u+=M,s+=r+(S+M<m.items.length?t:0)}}),{rows:i,locations:l,height:s,size:r,total:u}}function at(n,a){let o=0,t=n.length;for(;o<t;){const r=o+t>>>1;n[r].end<a?o=r+1:t=r}return Math.min(o,Math.max(0,n.length-1))}const ha=["data-total-items","data-rendered-items"],ga=e.defineComponent({__name:"VirtualTimeline",props:{groups:{},scrollElement:{},mobile:{type:Boolean,default:!1},hasMore:{type:Boolean,default:!1}},emits:["loadMore","date"],setup(n,{expose:a,emit:o}){const t=n,r=o,i=e.ref(),l=e.ref(390),s=e.ref(844),u=e.ref(0),m=e.computed(()=>t.mobile?l.value>=640?5:l.value>=480?4:3:Math.max(1,Math.floor((l.value+2)/172))),d=e.computed(()=>pa(t.groups,l.value,m.value)),S=e.computed(()=>{const b=d.value.rows,p=at(b,Math.max(0,u.value-d.value.size*3)),k=u.value+s.value+d.value.size*3;let B=p;for(;B<b.length&&b[B].start<=k;)B++;return b.slice(p,B)}),M=e.computed(()=>S.value.reduce((b,p)=>b+p.count,0));let y=0,R=!1,w=()=>{};function h(){const b=t.scrollElement();l.value=b.clientWidth,s.value=b.clientHeight,u.value=b.scrollTop,d.value.rows.length>0&&r("date",t.groups[d.value.rows[at(d.value.rows,u.value)].group].key);const p=u.value+s.value>=d.value.height-d.value.size*3;p&&t.hasMore&&!R&&(R=!0,r("loadMore")),p||(R=!1)}function x(){y===0&&(y=requestAnimationFrame(()=>{y=0,h()}))}const I=new ResizeObserver(h);e.onMounted(()=>{const b=t.scrollElement(),p=b.style.overflowAnchor;b.style.overflowAnchor="none",w=()=>{b.style.overflowAnchor=p},b.addEventListener("scroll",x,{passive:!0}),I.observe(b),h()}),e.onBeforeUnmount(()=>{t.scrollElement().removeEventListener("scroll",x),I.disconnect(),cancelAnimationFrame(y),w()}),e.watch(()=>t.groups,()=>{R=!1,e.nextTick(h)});async function g(b){if(!d.value.locations.has(b))return{kind:"unavailable"};const p=d.value.rows[d.value.locations.get(b)],k=t.scrollElement();return(p.start<k.scrollTop||p.end>k.scrollTop+k.clientHeight)&&(k.scrollTop=Math.max(0,p.start-(k.clientHeight-d.value.size)/2)),h(),await e.nextTick(),await new Promise(F=>requestAnimationFrame(()=>F())),{kind:"element",element:[...i.value.querySelectorAll("[data-id]")].find(F=>F.dataset.id===b).querySelector("img")}}return a({resolveAnchor:g,rendered:M,total:e.computed(()=>d.value.total)}),(b,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:i,class:"mp-virtual-timeline",style:e.normalizeStyle({height:d.value.height+"px"}),"data-total-items":d.value.total,"data-rendered-items":M.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,k=>(e.openBlock(),e.createElementBlock("div",{key:b.groups[k.group].key+":"+k.kind+":"+k.first,class:"mp-timeline-row",style:e.normalizeStyle({top:k.start+"px",height:k.end-k.start+"px",display:k.kind==="items"?"grid":"block",gridTemplateColumns:`repeat(${m.value},minmax(0,1fr))`,gap:"2px"})},[k.kind==="header"?e.renderSlot(b.$slots,"header",{key:0,group:b.groups[k.group],index:k.group},void 0,!0):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(b.groups[k.group].items.slice(k.first,k.first+k.count),B=>e.renderSlot(b.$slots,"item",{key:B.id,item:B},void 0,!0)),128))],4))),128))],12,ha))}}),va=(n,a)=>{const o=n.__vccOpts||n;for(const[t,r]of a)o[t]=r;return o},ya=va(ga,[["__scopeId","data-v-05c756fb"]]);exports.ImageCanvasRenderer=Ne;exports.ImageStore=ft;exports.LivePhotoRenderer=gt;exports.MediaPreview=ma;exports.PreviewStage=wt;exports.VideoDomRenderer=yt;exports.VirtualTimeline=ya;exports.defaultImagePolicy=Ce;exports.defaultImageSource=Re;exports.formatVideoTime=Me;exports.nativeVideoSource=Ve;exports.previewImageStore=mt;exports.usePreviewViewport=st;
|