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) • 2.17 kB
JavaScript
;const e=require("vue");require("../../../../node_modules/epubjs/src/book.js");require("../../../../node_modules/@xmldom/xmldom/lib/dom.js");require("../../../../node_modules/@xmldom/xmldom/lib/dom-parser.js");require("../../../../node_modules/epubjs/src/rendition.js");require("../../../../node_modules/epubjs/src/contents.js");require("../../../../node_modules/epubjs/src/layout.js");const q=require("../../../../node_modules/epubjs/src/epub.js"),d=require("../../utils/utils.js"),f=require("../../../../node_modules/@vueuse/core/dist/index.js"),x=e.defineComponent({__name:"index",props:{file:{default:()=>null},url:{default:()=>null},name:{},width:{default:()=>"100%"},height:{default:()=>"100%"}},emits:["rendered","error"],setup(a,{emit:h}){const o=a,u=h,p=e.ref(),v=e.ref(),n=e.ref(1),c=e.ref(),w=e.ref(!1),i=e.ref(),l=e.ref();function s(t){i.value=q(t),l.value=i.value.renderTo("epub-viewer",{width:"100%",height:"calc(100vh - 80px)",flow:"scrolled",allowScriptedContent:!0}),i.value.ready.then(()=>{p.value=i.value.navigation,v.value=i.value.locations,w.value=!0,c.value=v.value.length(),l.value.display(),u("rendered")}).catch(r=>{u("error",r)})}e.watch(()=>o.file,t=>{t&&d.getFileRenderByFile(t).then(r=>{s(r)}).catch(r=>{u("error",r)})},{immediate:!0}),e.watch(()=>o.url,t=>{t&&!o.file&&d.getFileRenderByUrl(t).then(r=>{s(r)}).catch(r=>{u("error",r)})},{immediate:!0});function m(){l.value&&(l.value.prev(),n.value--,n.value<1&&(n.value=1))}function y(){l.value&&(l.value.next(),n.value++,n.value>c.value&&(n.value=c.value))}function b(t){t.preventDefault()}function g(t){t.preventDefault()}return f.onKeyStroke("ArrowLeft",()=>{m()}),f.onKeyStroke("ArrowRight",()=>{y()}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:"epub-preview epub-box",style:e.normalizeStyle({width:a.width,height:a.height})},[e.createElementVNode("button",{class:"btn",style:{display:"none"},onKeydown:b}," Prev ",32),r[0]||(r[0]=e.createElementVNode("div",{id:"epub-viewer",class:"epub-viewer"},null,-1)),e.createElementVNode("button",{class:"btn",style:{display:"none"},onKeydown:g}," Next ",32)],4))}});module.exports=x;
//# sourceMappingURL=index.vue2.js.map