vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
3 lines (2 loc) • 1.26 kB
JavaScript
;const e=require("vue"),i=require("../../utils/utils.js"),c={class:"video-preview web-full-screen"},d=e.defineComponent({__name:"index",props:{file:{default:()=>null},url:{default:()=>null},name:{}},emits:["rendered","error"],setup(s,{emit:v}){const u=s,n=v,r=e.ref(null),o=e.ref(!1);e.watch(()=>u.file,t=>{t&&(r.value&&!o.value&&URL.revokeObjectURL(r.value),o.value=!1,i.getFileRenderByFile(t).then(l=>{r.value=l,a.value.src=r.value}).catch(l=>{n("error",l)}))},{immediate:!0}),e.watch(()=>u.url,t=>{t&&!u.file&&(r.value&&!o.value&&URL.revokeObjectURL(r.value),o.value=!0,i.getFileRenderByUrl(t).then(l=>{r.value=l,a.value.src=r.value}).catch(l=>{n("error",l)}))},{immediate:!0});const a=e.shallowRef(null);return e.onMounted(()=>{a.value.addEventListener("loadedmetadata",()=>{a.value.play(),n("rendered")}),a.value.addEventListener("error",()=>{n("error",new Error("Video load failed"))})}),e.onBeforeUnmount(()=>{a.value.pause(),r.value&&!o.value&&URL.revokeObjectURL(r.value)}),(t,l)=>(e.openBlock(),e.createElementBlock("div",c,[e.createElementVNode("video",{ref_key:"videoPreviewRef",ref:a,class:"player-video-main",controls:"",autoplay:"",crossorigin:"anonymous"},null,512)]))}});module.exports=d;
//# sourceMappingURL=index.vue2.js.map