"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue-demi"),t=require("epubjs");function o(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===o&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}o(".reader{inset:50px 50px 20px;position:absolute}.viewHolder{height:100%;position:relative;width:100%}#viewer{height:100%}");var n=e.defineComponent({name:"EpubView",model:{prop:"location",event:"update:location"},emits:{"update:location":e=>!0,select:(e,t)=>!0,keyup:e=>!0,keyPress:e=>!0},props:{url:{required:!0},location:{},tocChanged:{type:Function},getRendition:{type:Function},epubInitOptions:{type:Object,default:()=>({})},epubOptions:{type:Object,default:()=>({})}},setup(o,n){const{emit:a,slots:r,expose:i}=n,s=e.getCurrentInstance(),l=e.h.bind(s),{url:c,location:u}=e.toRefs(o),{tocChanged:p,getRendition:d,epubInitOptions:f,epubOptions:b}=o,g=e.ref(null),v=e.ref([]),h=e.ref(!1);let x=null,m=null;const w=async()=>{x&&x.destroy(),c.value&&(x=t(c.value,f),x.loaded.navigation.then((({toc:e})=>{h.value=!0,v.value=e,p&&p(e),y()})))},y=()=>{const e=g.value||s?.refs?.viewer;m=x.renderTo(e,{width:"100%",height:"100%",...b}),A(),d&&d(m),"string"==typeof u?.value||"number"==typeof u?.value?m.display(u.value):v.value.length>0&&v?.value[0]?.href?m.display(v.value[0].href):m.display()},k=e=>{"next"===e?C():"prev"===e&&E()},A=()=>{m&&(m.on("rendered",((e,t)=>{var o,n;t?.iframe?.contentWindow.focus(),b?.flow?.includes("scrolled")||function(e,t){let o,n=0;e.addEventListener("wheel",(e=>{e.ignore||(e.ignore=!0,clearTimeout(o),n+=e.deltaY,o=setTimeout((()=>{if(Math.abs(n)>=750){let e=Math.sign(n)>0?"next":"prev";t(e),n=0}n=0}),50))}))}(t.document,k),function(e,t){let o,n,a;e.addEventListener("touchstart",(e=>{e.ignore||(e.ignore=!0,o=e.changedTouches[0].pageX,n=e.changedTouches[0].pageY,a=Date.now())}),!1),e.addEventListener("touchend",(r=>{if(r.ignore)return;r.ignore=!0;const i=r.changedTouches[0].pageX-o,s=r.changedTouches[0].pageY-n;Date.now()-a<=500&&(Math.abs(i)>=50&&Math.abs(s)<=200?t(i<0?"next":"prev"):Math.abs(s)>=50&&Math.abs(i)<=200?t(s<0?"up":"down"):(e?.defaultView?.getSelection()?.removeAllRanges(),e.dispatchEvent(new MouseEvent("click",{clientX:o,clientY:n})),r.preventDefault()))}),!1)}(t.document,k),o=t.document,n=k,o.addEventListener("keyup",(e=>{"ArrowUp"===e.key||"ArrowRight"===e.key?n("next"):"ArrowDown"!==e.key&&"ArrowLeft"!==e.key||n("prev")}),!1)})),m.on("locationChanged",B),m.on("displayError",(e=>console.error("error rendering book",e))),m.on("selected",((e,t)=>a("select",e,t))),m.on("keyup",(e=>a("keyPress",e))))},B=e=>{const t=e.start;u?.value!==t&&a("update:location",t)};e.watch(c,(()=>{w()}));const C=()=>{m?.next()},E=()=>{m?.prev()},L=e=>{"string"==typeof e&&m.display(e),"number"==typeof e&&m.display(e)};if(e.onMounted((()=>{w()})),e.onBeforeUnmount((()=>{x?.destroy()})),i)i({nextPage:C,prevPage:E,setLocation:L});else{(t=>{if(!s)throw new Error("expose should be called in setup().");const o=Object.keys(t);o.forEach((e=>{s.proxy[e]=t[e]})),e.onBeforeUnmount((()=>{o.forEach((e=>{s.proxy[e]=void 0}))}))})({nextPage:C,prevPage:E,setLocation:L})}return()=>l("div",{class:"reader"},[l("div",{class:"viewHolder"},[l("div",{ref:parseFloat(e.version)>=2.7?g:"viewer",class:"view",id:"viewer",attrs:{id:"viewer"},style:{display:h.value?null:"none"}}),!h.value&&l("div",r.loadingView?.())])])}});o('.container{height:100%;overflow:hidden;position:relative}.containerExpanded{-webkit-transform:translateX(256px);transform:translateX(256px)}.readerArea{height:100%;position:relative;-webkit-transition:all .3s ease;transition:all .3s ease;width:100%;z-index:1}.container .titleArea{color:#999;left:50px;overflow:hidden;position:absolute;right:50px;text-align:center;text-overflow:ellipsis;top:20px;white-space:nowrap}.tocBackground{left:256px;right:0;z-index:1}.tocArea,.tocBackground{bottom:0;position:absolute;top:0}.tocArea{-webkit-overflow-scrolling:touch;background:#f2f2f2;left:0;overflow-y:auto;padding:10px 0;width:256px;z-index:0}.tocArea::-webkit-scrollbar{height:5px;width:5px}.tocArea::-webkit-scrollbar-thumb:vertical{background-color:rgba(0,0,0,.1);border-radius:.5rem;height:5px}.tocArea .tocAreaButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;box-sizing:border-box;color:#aaa;cursor:pointer;display:block;font-family:sans-serif;font-size:.9em;outline:none;padding:.9em 1em;position:relative;text-align:left;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.tocArea .tocAreaButton:hover{background:rgba(0,0,0,.05)}.tocArea .tocAreaButton:active{background:rgba(0,0,0,.1)}.tocArea .active{border-bottom:2px solid #1565c0;color:#1565c0}.tocArea .tocAreaButton .expansion{background-color:#a2a5b4;cursor:pointer;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:10px}.tocArea .tocAreaButton .expansion,.tocArea .tocAreaButton .expansion:after,.tocArea .tocAreaButton .expansion:before{position:absolute;-webkit-transition:top .3s ease-in-out,-webkit-transform .3s ease-in-out;transition:top .3s ease-in-out,-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,top .3s ease-in-out;transition:transform .3s ease-in-out,top .3s ease-in-out,-webkit-transform .3s ease-in-out}.tocArea .tocAreaButton .expansion:after,.tocArea .tocAreaButton .expansion:before{background-color:currentcolor;border-radius:2px;content:"";height:2px;width:6px}.tocArea .tocAreaButton .expansion:before{-webkit-transform:rotate(-45deg) translateX(2.5px);transform:rotate(-45deg) translateX(2.5px)}.tocArea .tocAreaButton .expansion:after{-webkit-transform:rotate(45deg) translateX(-2.5px);transform:rotate(45deg) translateX(-2.5px)}.tocArea .tocAreaButton .open:before{-webkit-transform:rotate(45deg) translateX(2.5px);transform:rotate(45deg) translateX(2.5px)}.tocArea .tocAreaButton .open:after{-webkit-transform:rotate(-45deg) translateX(-2.5px);transform:rotate(-45deg) translateX(-2.5px)}.tocButton{background:none;border:none;border-radius:2px;cursor:pointer;height:32px;left:10px;outline:none;position:absolute;top:10px;width:32px}.tocButtonBar{background:#ccc;height:2px;left:50%;margin:-1px -30%;position:absolute;top:50%;-webkit-transition:all .5s ease;transition:all .5s ease;width:60%}.tocButtonExpanded{background:#f2f2f2}.arrow{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:#e2e2e2;cursor:pointer;font-family:arial,sans-serif;font-size:64px;font-weight:400;margin-top:-32px;outline:none;padding:0 10px;position:absolute;top:50%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.arrow:hover{color:#777}.arrow:disabled{color:#e2e2e2;cursor:not-allowed}.prev{left:1px}.next{right:1px}.loadingView{color:#ccc;left:10%;margin-top:-.5em;position:absolute;right:10%;text-align:center;top:50%}');const a=e.defineComponent({name:"TocComponent",props:{toc:{type:Array,default:()=>[]},current:{type:[String,Number],default:""},setLocation:{type:Function,required:!0},isSubmenu:{type:Boolean,default:!1,required:!1}},setup(t){const o=e.getCurrentInstance(),n=e.h.bind(o),{setLocation:r,isSubmenu:i}=t,{toc:s,current:l}=e.toRefs(t);return()=>n("div",null,s.value.map(((t,o)=>n("div",{key:o},[n("button",{class:["tocAreaButton",t.href===l.value?"active":""],on:{click:()=>{t.subitems.length>0?(t.expansion=!t.expansion,r(t.href,!1)):r(t.href)}},onClick:()=>{t.subitems.length>0?(t.expansion=!t.expansion,r(t.href,!1)):r(t.href)}},[i?" ".repeat(4)+t.label:t.label,t.subitems&&t.subitems.length>0&&n("div",{class:(t.expansion?"open":"")+" expansion"})]),t.subitems&&t.subitems.length>0&&n(e.Transition,{name:"collapse-transition"},{default:()=>n("div",{style:{display:t.expansion?void 0:"none"}},[n(a,{toc:t.subitems,current:l.value,setLocation:r,isSubmenu:!0,attrs:{toc:s.value,current:l.value,setLocation:r,isSubmenu:!0}})])})]))))}});var r=e.defineComponent({name:"VueReader",emits:{progress:e=>!0},props:{url:{required:!0},title:String,showToc:{type:Boolean,default:!0},tocChanged:{type:Function},getRendition:{type:Function},backgroundColor:{type:String,default:"#fff"}},setup(t,o){const{emit:r,slots:i,expose:s,attrs:l}=o,c=e.getCurrentInstance(),u=e.h.bind(c),p=e.ref(null),d=e.ref(null),f=e.ref(""),{tocChanged:b,getRendition:g}=t,{title:v,url:h,showToc:x,backgroundColor:m}=e.toRefs(t),w=e.reactive({toc:[],expandedToc:!1}),{toc:y,expandedToc:k}=e.toRefs(w),A=e.ref(""),B=()=>{k.value=!k.value},C=e=>{y.value=e.map((e=>({...e,expansion:!1}))),b&&b(e)},E=e=>{g&&g(e),e.on("relocated",(e=>{d.value=e}));const t=e.book;t.ready.then((()=>{const e=t.package.metadata;A.value=e.title})),e.hooks.content.register((({document:e})=>{const t=Array.from(e.querySelectorAll("a"));if(t.length){const e=Math.floor(t.length/2);t.slice(0,e).forEach((o=>{if(o.href){const n=o.href.split("#")[1],a=t.slice(e).find((e=>e.id===n));a&&a.parentNode&&(o.title=a.parentNode.textContent)}}))}}))},L=(e,t=!0)=>{const o=p.value||c?.refs.epubRef;o?.setLocation(e),f.value=e,k.value=!t},R=XMLHttpRequest.prototype.open,T=e=>{r("progress",Math.floor(e.loaded/e.total*100))};XMLHttpRequest.prototype.open=function(e,t){t===h.value&&this.addEventListener("progress",T),R.apply(this,arguments)},e.onUnmounted((()=>{XMLHttpRequest.prototype.open=R}));const X=()=>{const e=p.value||c?.refs.epubRef;e?.nextPage()},M=()=>{const e=p.value||c?.refs.epubRef;e?.prevPage()};if(s)s({setLocation:L,next:X,pre:M});else{(t=>{if(!c)throw new Error("expose should be called in setup().");const o=Object.keys(t);o.forEach((e=>{c.proxy[e]=t[e]})),e.onBeforeUnmount((()=>{o.forEach((e=>{c.proxy[e]=void 0}))}))})({setLocation:L,next:X,pre:M})}return()=>u("div",{class:"container"},[u("div",{class:["readerArea",{containerExpanded:k.value}],style:{backgroundColor:m.value}},[x.value&&u("button",{class:["tocButton",{tocButtonExpanded:k.value}],type:"button",on:{click:B},onClick:B},[u("span",{class:"tocButtonBar",style:"top: 35%"}),u("span",{class:"tocButtonBar",style:"top: 66%"})]),u("div",{class:"titleArea",title:A.value},i.title?i.title?.():v.value||A.value),u(n,{ref:parseFloat(e.version)<2.7?"epubRef":p,url:h.value,tocChanged:C,getRendition:E,...l,attrs:{url:h.value,tocChanged:C,getRendition:E,...l},on:{...o.listeners}},{loadingView:()=>u("div",{class:"loadingView"},i.loadingView?i.loadingView?.():"Loading...")}),u("button",{class:"arrow pre",on:{click:M},onClick:M,domProps:{disabled:d.value?.atStart},disabled:d.value?.atStart},"‹"),u("button",{class:"arrow next",on:{click:X},onClick:X,domProps:{disabled:d.value?.atEnd},disabled:d.value?.atEnd},"›")]),x.value&&u("div",[u("div",{class:"tocArea"},[u(a,{toc:y.value,current:f.value,setLocation:L,attrs:{toc:y.value,current:f.value,setLocation:L}})]),k.value&&u("div",{class:["tocBackground"],onClick:B,on:{click:B}})])])}});exports.EpubView=n,exports.VueReader=r,exports.default=r;