define(["exports","./../dialoghelper/dialoghelper.js","./../common/globalize.js","./../emby-apiclient/connectionmanager.js","./../common/inputmanager.js","../layoutmanager.js","./../actionsheet/actionsheet.js","./../loading/loading.js","./../fluidheader/fluidheader.js","./../dialogsidebar/indexsidebar.js","./../common/appsettings.js","./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js","./../emby-elements/emby-input/emby-input.js","./../emby-elements/emby-slider/emby-slider.js","./foliate/view.js"],function(_exports,_dialoghelper,_globalize,_connectionmanager,_inputmanager,_layoutmanager,_actionsheet,_loading,_fluidheader,_indexsidebar,_appsettings,_embyDialogclosebutton,_embyInput,_embySlider,_view){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=function(){var self=this;function throttle(callback){var throttleTimer=null;return function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];throttleTimer&&clearTimeout(throttleTimer),throttleTimer=setTimeout(function(){throttleTimer=null,callback.apply(void 0,args)},THROTTLE)}}function getBackgroundContainer(){return self.dlg.querySelector(".ebookBackgroundPaginator")}function getBookContainer(){return self.dlg.querySelector(".ebookContainer")}function getScrollbarContainer(){return self.dlg.querySelector(".ebookOverlayScroller")}function getOverlayContainer(){return self.dlg.querySelector(".ebookOverlayPaginator")}function getTocContainer(){return self.dlg.querySelector(".ebookTocDrawer")}function getScrollbarVirtualContainerHeight(){return self.isFixedLayout()?self.getPageCount()*getBookContainer().clientHeight:self.loadedView?self.totalBookSize/(fontSize=parseFloat(getComputedStyle(self.loadedView.body).fontSize),parseFloat(getComputedStyle(self.loadedView.documentElement).columnWidth)*(getBookContainer().clientHeight-2*FOL_MARGIN)/(SCROLLBAR_EST_CHAR_COEF*Math.pow(fontSize,2)))*SCROLLBAR_EST_PAGE_HEIGHT:SCROLLBAR_BASE_RESOLUTION;var fontSize}function setScrollbarHeight(){var container=getScrollbarContainer();container.children[0].style.height=container.offsetHeight+getScrollbarVirtualContainerHeight()+"px"}function moveScrollToFraction(fraction){var fraction=fraction*getScrollbarVirtualContainerHeight(),scrollbarContainer=getScrollbarContainer();fraction!==scrollbarContainer.scrollTop&&self.scrollState!==SCROLL_STATE_MANUAL&&(self.scrollState=SCROLL_STATE_AUTO,scrollbarContainer.scrollTop=fraction)}function getBookViewportOffset(){var bookContainer=getBookContainer();return bookContainer.offsetWidth-bookContainer.clientWidth}function bestChoiceForLocale(obj,locale){var simpleLocale,options,bestKey;return"object"==typeof obj&&locale?obj[locale]||(obj[simpleLocale=(simpleLocale=locale.match(/^([a-z]+)(-|_|$)/i))&&simpleLocale[1]]?obj[simpleLocale]:(bestKey=(bestKey=(options=Object.keys(obj)).find(function(option){return option.startsWith(locale)}))||options.find(function(option){return option.startsWith(simpleLocale)}))?obj[bestKey]:null):null}function bestMetadataChoice(obj){var pick=bestChoiceForLocale(obj,_globalize.default.getCurrentLocale());return pick=(pick=!pick&&self.view.book.metadata.language?bestChoiceForLocale(obj,self.view.book.metadata.language):pick)||Object.values(obj)[0]||""}function forceDir(dir,addClass,removeClass){getBackgroundContainer().setAttribute("dir",dir),getBookContainer().setAttribute("dir",dir),getScrollbarContainer().setAttribute("dir",dir),getOverlayContainer().setAttribute("dir",dir);var tocScrollSlider=getTocContainer().firstElementChild,tocScrollSlider=(tocScrollSlider&&tocScrollSlider.setAttribute("dir",dir),self.dlg.querySelector(".ebookControls"));tocScrollSlider.setAttribute("dir",dir),"ltr"===dir?tocScrollSlider.querySelectorAll(".autortl").forEach(function(control){control.classList.remove("autortl"),control.classList.add("forceltr")}):tocScrollSlider.querySelectorAll(".forceltr").forEach(function(control){control.classList.remove("forceltr"),control.classList.add("autortl")}),addClass&&tocScrollSlider.classList.add(addClass),removeClass&&tocScrollSlider.classList.remove(removeClass)}function isTocOpen(){var tocContainer=getTocContainer();return self.tocSidebar&&tocContainer.classList.contains("sidebar")&&!tocContainer.classList.contains("hide")}function adjustOverlayPaginatorSizes(){var previousTarget,bgPreviousTarget,renderDetails,outsideOffset;self.isFixedLayout()&&(previousTarget=getOverlayContainer().querySelector(".previousTarget"),bgPreviousTarget=getBackgroundContainer().querySelector(".previousTarget"),"center"!==(renderDetails=self.view.renderer.getRenderDetails()).side&&renderDetails.leftWidth&&renderDetails.rightWidth?(previousTarget.style.flexGrow=0,previousTarget.style.width=renderDetails.leftWidth+"px",outsideOffset=(getBackgroundContainer().clientWidth-getOverlayContainer().querySelector(".paginatorFlexContainer").offsetWidth)/2,bgPreviousTarget.style.flexGrow=0,bgPreviousTarget.style.width=renderDetails.leftWidth+outsideOffset+"px"):(previousTarget.style.flexGrow=1,previousTarget.style.width="",bgPreviousTarget.style.flexGrow=1,bgPreviousTarget.style.width=""))}function setupPageSizes(){var bookContainer=getBookContainer(),pageSizeButton=self.dlg.querySelector(".ebook-pagesize");pageSizeButton.addEventListener("click",function(){var items;_actionsheet.default.show({title:_globalize.default.translate("LabelPageSize"),items:(items=[],PAGE_SIZES.forEach(function(option,i){items.push({id:i,Name:_globalize.default.translate(option.tag),icon:option.icon})}),items),hasItemSelectionState:!1,fields:["Name"],positionTo:pageSizeButton,positionY:"bottom",positionX:"right",transformOrigin:"right top",resolveOnClick:!0,hasItemIcon:!0}).then(function(pageSizeIndex){pageSizeIndex=PAGE_SIZES[pageSizeIndex];self.setPageWidth(bookContainer.clientHeight*pageSizeIndex.ratio)}).catch(function(){})}),self.dlg.addEventListener("resize",function(_ref){_ref=_ref.detail;self.isFullWidth(null,_ref.previousWidth)&&_ref.width>_ref.previousWidth?self.setPageWidth(_ref.width):self.setPageWidth()})}function setupUIElements(){function overlayClickHandler(pageChangeFunction){return function(mouseEvent){if(!self.inputingPage){if(self.loadedView){var contentOffset=self.measureRectangle.getClientRects()[0];if(contentOffset){var inlineTarget=self.loadedView.elementFromPoint(mouseEvent.x-contentOffset.x,mouseEvent.y-contentOffset.y);if(inlineTarget&&["A","BUTTON","INPUT"].find(function(tagName){return tagName===inlineTarget.tagName.toUpperCase()}))return void inlineTarget.click()}}return pageChangeFunction()}}}var toc,scrollbarContainer,anchorPosition,resizeWidth,bookContainer,resizeTarget,textSizeButton,dlg=self.dlg,prevSection=(!function(){var dlg,pageCount,pageinput,maxLength;self.isFixedLayout()&&(dlg=self.dlg,pageCount=self.getPageCount(),dlg.querySelector(".ebookPages > .total").textContent=pageCount||"?",pageinput=dlg.querySelector(".page-input"),pageCount&&(maxLength=String(pageCount).length,pageinput.maxLength=maxLength,pageinput.style.width=maxLength+"ch"),dlg.querySelector(".ebookPercentage").classList.add("hide"),dlg.querySelector(".ebookPages").classList.remove("hide"),pageinput.addEventListener("keydown",function(e){e.ctrlKey||e.metaKey||e.altKey||e.key.match(/[0-9]/)||["Backspace","Delete","ArrowLeft","ArrowRight","Enter","Home","End","Insert","Tab"].includes(e.key)||e.preventDefault()}),pageinput.addEventListener("focus",function(e){e.target.select(),self.inputingPage=!0}),pageinput.addEventListener("blur",function(e){setTimeout(function(){self.inputingPage=!1},100)}),pageinput.addEventListener("change",function(e){e=parseInt(e.target.value)-1;e<0||pageCount&&pageCount<=e?pageinput.value=self.getCurrentPage()+1:self.view.goTo(e)}))}(),dlg.querySelector(".ebook-previous").addEventListener("click",function(){return self.previousPage()}),dlg.querySelector(".ebook-next").addEventListener("click",function(){return self.nextPage()}),prevSection=self.dlg.querySelector(".ebook-prevsection"),nextSection=self.dlg.querySelector(".ebook-nextsection"),toc=self.dlg.querySelector(".ebook-toc"),self.isSectioned()?(prevSection.addEventListener("click",function(){return self.previousSection()}),nextSection.addEventListener("click",function(){return self.nextSection()}),toc.addEventListener("click",self.showHideToc)):(prevSection.remove(),nextSection.remove(),toc.remove()),getOverlayContainer()),nextSection=(prevSection.querySelector(".previousTarget").addEventListener("click",overlayClickHandler(self.previousPage)),prevSection.querySelector(".nextTarget").addEventListener("click",overlayClickHandler(self.nextPage)),getBackgroundContainer());return nextSection.querySelector(".previousTarget").addEventListener("click",function(){return!self.inputingPage&&self.previousPage()}),nextSection.querySelector(".nextTarget").addEventListener("click",function(){return!self.inputingPage&&self.nextPage()}),self.view.addEventListener("relocate",function(){adjustOverlayPaginatorSizes()}),scrollbarContainer=getScrollbarContainer(),_layoutmanager.default.tv?scrollbarContainer.style.visibility="hidden":(self.isFixedLayout()?setScrollbarHeight():self.view.renderer.addEventListener("create-overlayer",function(){setScrollbarHeight()}),scrollbarContainer.addEventListener("scroll",throttle(function(){var scroll;self.scrollState===SCROLL_STATE_AUTO?self.scrollState=SCROLL_STATE_IDLE:(self.scrollState=SCROLL_STATE_MANUAL,scroll=scrollbarContainer.scrollTop/getScrollbarVirtualContainerHeight(),self.view.goToFraction(scroll))})),self.view.addEventListener("relocate",function(e){moveScrollToFraction(e.detail.fraction||0)}),self.view.addEventListener("relocate",throttle(function(){self.scrollState===SCROLL_STATE_MANUAL&&(self.scrollState=SCROLL_STATE_IDLE)})),self.dlg.addEventListener("resize",function(){setScrollbarHeight()})),bookContainer=getBookContainer(),resizeTarget=getOverlayContainer().querySelector(".resizeTarget"),_layoutmanager.default.tv?resizeTarget.style.visibility="hidden":(resizeWidth=function(e){var rtl=isRTL(),dx=rtl?e.x-anchorPosition:anchorPosition-e.x;!rtl&&(0resizeTarget.offsetLeft+resizeTarget.offsetWidth||dx<0&&e.xresizeTarget.offsetLeft+resizeTarget.offsetWidth)||self.setPageWidth(bookContainer.offsetWidth+2*dx)&&(anchorPosition=e.x)},resizeTarget.addEventListener("mousedown",function(e){anchorPosition=e.x,document.addEventListener("mousemove",resizeWidth,{capture:!0})}),document.addEventListener("mouseup",function(){document.removeEventListener("mousemove",resizeWidth,{capture:!0})})),setupPageSizes(),textSizeButton=self.dlg.querySelector(".ebook-textsize"),self.isFixedLayout()?textSizeButton.remove():(textSizeButton.addEventListener("click",function(){function updateValue(){self.setFontSize(parseFloat(slider.value))}var sliderDlg=_dialoghelper.default.createDialog({removeOnClose:!0,autoFocus:!0,positionTo:textSizeButton,positionY:"bottom",positionX:"right",transformOrigin:"right top",transparentBackground:"auto",blurBackground:!1,lowResXMargin:!0,lowResAutoHeight:!0}),slider=(sliderDlg.classList.add("actionSheet"),sliderDlg.classList.add("dialog-blur"),sliderDlg.innerHTML='\n

'+_globalize.default.translate("LabelTextSize")+'

\n
\n
\n
\n \n
\n
\n
'+_globalize.default.translate("Smaller")+'
\n
'+_globalize.default.translate("Larger")+"
\n
\n
\n
\n ",sliderDlg.querySelector(".textSizeSlider"));slider.setValue(self.currentTextSize);slider.addEventListener("input",updateValue),slider.addEventListener("change",updateValue),slider.addEventListener("endediting",function(){_dialoghelper.default.close(sliderDlg)}),_dialoghelper.default.open(sliderDlg)}),self.view.renderer.addEventListener("create-overlayer",function(e){e=e.detail.doc;self.baseFontSize=parseFloat(getComputedStyle(e.body).fontSize),e.querySelectorAll("p").forEach(function(p){p.dataset.originalSize=parseFloat(getComputedStyle(p).fontSize)}),self.setFontSize(self.currentTextSize)})),dlg}function abortWithReason(signal){_loading.default.hide();signal=signal.reason;return signal||((signal=new Error("Aborted")).name="AbortError"),signal}function updateHeaderLabels(){var nextSection,currentIndex,prevLabel,_self$flatToc,nextLabel,titleElm=self.dlg.querySelector(".ebookDialogHeaderTitle");self.currentTocItem&&self.currentTocItem.label?titleElm.textContent=self.currentTocItem.label:titleElm.textContent=self.getBookTitle(),self.isSectioned()&&(titleElm=self.dlg.querySelector(".ebook-prevsection"),nextSection=self.dlg.querySelector(".ebook-nextsection"),currentIndex=self.getCurrentSectionIndex(),0=self.flatToc.length-1?nextLabel="":(nextLabel=_globalize.default.translate("NextSection"),(titleElm=null==(_self$flatToc=self.flatToc[currentIndex+1])?void 0:_self$flatToc.label)&&(nextLabel+=" - "+titleElm)),nextSection.setAttribute("title",nextLabel),nextSection.setAttribute("aria-label",nextLabel))}function setupDialog(template){var dlg=self.dlg=_dialoghelper.default.createDialog({removeOnClose:!0,autoFocus:!0,size:"fullscreen"}),template=(dlg.classList.add("ebookPlayerDialog"),dlg.classList.add("formDialog"),dlg.innerHTML=_globalize.default.translateDocument(template),self.view=document.createElement("foliate-view"));return dlg.querySelector(".ebookContent").append(template),template.addEventListener("relocate",function(e){self.currentFraction=e.detail.fraction||0,self.currentPageItem=e.detail.pageItem,self.currentTocItem=e.detail.tocItem,dlg.querySelector(".position").textContent=Math.round(100*self.currentFraction),dlg.querySelector(".page-input").value=self.getCurrentPage()+1,self.tocSidebar&&self.currentTocItem&&self.tocSidebar.selectItem(self.currentTocItem.id||self.currentTocItem.href)}),getScrollbarContainer().addEventListener("click",function(mouseEvent){mouseEvent.target.style.pointerEvents="none";var newTarget=document.elementFromPoint(mouseEvent.clientX,mouseEvent.clientY);if(mouseEvent.target.style.pointerEvents="auto",newTarget)return mouseEvent=new MouseEvent("click",mouseEvent),newTarget.dispatchEvent(mouseEvent),mouseEvent}),dlg}function open(url,name,knownType){return self.view.open(url,{smartSpreads:!0,forceType:knownType}).then(function(){return self.view.book.getCover()}).then(function(coverBlob){self.view.renderer.addEventListener("create-overlayer",function(e){self.loadedView=e.detail.doc;var measureRectangle=document.createElement("div");measureRectangle.style.position="absolute",e.detail.attach({element:measureRectangle,redraw:function(){}}),self.measureRectangle=measureRectangle}),self.totalBookSize=self.view.book.sections.map(function(s){return"no"!==s.linear&&0TEXT_SIZES_MIN&&self.setFontSize(self.currentTextSize-TEXT_SIZES_STEP),void e.preventDefault();if("green"===command||"down"===command&&_e$detail$originalEve)return self.currentTextSizecurrentWidth});return-1===targetIndex?PAGE_SIZES.length-1:0===targetIndex?-.5:Math.round(bookContainer.clientHeight*PAGE_SIZES[targetIndex-1].ratio)===currentWidth?targetIndex-1:targetIndex-.5},self.previousPageSize=function(){var pageSizeOption=PAGE_SIZES[Math.max(Math.ceil(self.currentPageSize())-1,0)];self.setPageWidth(getBookContainer().clientHeight*pageSizeOption.ratio)},self.nextPageSize=function(){var pageSizeOption=PAGE_SIZES[Math.min(Math.floor(self.currentPageSize())+1,PAGE_SIZES.length-1)];self.setPageWidth(getBookContainer().clientHeight*pageSizeOption.ratio)},self.setFontSize=function(currentTextSize){var documentFontSize=self.baseFontSize*currentTextSize;self.loadedView.body.style.fontSize=documentFontSize+"px",self.currentTextSize=currentTextSize,_appsettings.default.set(APPSETTINGS_TEXTSIZE,currentTextSize),self.loadedView.querySelectorAll("p").forEach(function(p){var paragraphOriginalSize=parseFloat(p.dataset.originalSize);p.style.fontSize=paragraphOriginalSize*currentTextSize+"px"}),setScrollbarHeight(),moveScrollToFraction(self.currentFraction)},self.getBookTitle=function(){var _self$view9,_self$view8;return null!=(_self$view8=self.view)&&_self$view8.book.metadata.title?"string"!=typeof(_self$view8=self.view.book.metadata.title)||null!=(_self$view9=self.view)&&null!=(_self$view9=_self$view9.book.metadata.title)&&_self$view9.endsWith("Download")?bestMetadataChoice(_self$view8):self.view.book.metadata.title:self.fileName},self.getBookAuthor=function(){var _self$view0=null==(_self$view0=self.view)||null==(_self$view0=_self$view0.book.metadata.author)?void 0:_self$view0.name;return _self$view0?"string"==typeof _self$view0?_self$view0:bestMetadataChoice(_self$view0):null},self.forceRTL=function(){forceDir("rtl","rtl")},self.forceLTR=function(){forceDir("ltr",null,"rtl")},self.showHideToc=function(){var tocContainer=getTocContainer();self.tocSidebar&&tocContainer.classList.contains("sidebar")?self.tocSidebar.toggle():(self.tocSidebar=_indexsidebar.default.show({container:tocContainer,className:"ebookTocDrawer",header:'

',reverse:!0,items:self.view.book.toc,callback:function(href){self.view.goTo(href)}}),self.tocSidebar.ready.then(function(tocContainer){tocContainer.querySelector(".ebook-toc-title").textContent=self.getBookTitle(),tocContainer.querySelector(".ebook-toc-author").textContent=self.getBookAuthor();var bookContainer=getBookContainer();bookContainer.getAttribute("dir")&&tocContainer.firstElementChild.setAttribute("dir",bookContainer.getAttribute("dir")),self.currentTocItem&&self.tocSidebar.selectItem(self.currentTocItem.id||self.currentTocItem.href)}))},self.show=function(item,signal){if(_loading.default.show(),null!=signal&&signal.aborted)throw abortWithReason(signal);var apiClient=_connectionmanager.default.getApiClient(item);return require([PATH_TEMPLATE]).then(function(responses){return setupDialog(responses[0])}).then(function(){return open(apiClient.getItemOriginalFileUrl(item.Id),item.Name,function(item){return(item=item.FileName||"").match(/\.fb2$/i)?"application/fictionbook2":item.match(/\.(fbz|fb2\.zip)$/i)?"application/fictionbook2+zip":void 0}(item))}).then(function(){if(null!=signal&&signal.aborted)throw self.clear(),abortWithReason(signal)}).then(setupUIElements).then(setupInputs).then(function(dlg){if(null!=signal&&signal.aborted)throw self.clear(),abortWithReason(signal);_fluidheader.default.fluidify({container:dlg.querySelector(".formDialogHeader"),defaultLTR:!0,item:item}),self.previousWidth=self.dlg.offsetWidth,self.resizeObserver=new ResizeObserver(function(){self.dlg.dispatchEvent(new CustomEvent("resize",{detail:{previousWidth:self.previousWidth,width:self.dlg.offsetWidth,deltaWidth:self.dlg.offsetWidth-self.previousWidth}})),self.previousWidth=self.dlg.offsetWidth}),self.resizeObserver.observe(self.dlg),_dialoghelper.default.open(dlg)}).finally(function(){_loading.default.hide()})},self.clear=function(){var _self$view10;self.resizeObserver&&(self.resizeObserver.unobserve(self.dlg),self.resizeObserver=null),null!=(_self$view10=self.view)&&_self$view10.close(),null!=(_self$view10=self.tocSidebar)&&_self$view10.destroy(),self.dlg=null,self.view=null,self.tocSidebar=null,self.flatToc=[],self.currentFraction=0,self.currentSectionFraction=0,self.currentPageItem=null,self.currentTocItem=null,self.loadedView=null,self.measureRectangle=null,self.previousWidth=null,self.inputingPage=!1,self.scrollState=SCROLL_STATE_IDLE}};var _excluded=["subitems"],PATH_TEMPLATE=(require(["formDialogStyle","css!modules/ebookplayer/ebookplayer.css"]),"text!./modules/ebookplayer/ebookplayer.template.html"),APPSETTINGS_TEXTSIZE="ebooktextsize",SCROLLBAR_BASE_RESOLUTION=1e6,SCROLLBAR_EST_CHAR_COEF=.72,SCROLLBAR_EST_PAGE_HEIGHT=1500,SCROLL_STATE_IDLE=0,SCROLL_STATE_AUTO=1,SCROLL_STATE_MANUAL=2,THROTTLE=250,MINIMUM_PAGE_VIEWPORT_RATIO=.5,FOL_MAX_COLUMN_COUNT=4,FOL_COLUMN_GAP=.07,FOL_MARGIN=48,DEFAULT_BACKGROUND="white",ISO216_PAGE_SIDE_RATIO=Math.sqrt(2),TEXT_SIZES_MIN=.6,TEXT_SIZES_STEP=.1,TEXT_SIZES_MAX=2.5,PAGE_SIZES=[{tag:"PageNarrow",icon:"width_normal",ratio:MINIMUM_PAGE_VIEWPORT_RATIO},{tag:"PageSingle",icon:"width_wide",ratio:ISO216_PAGE_SIDE_RATIO/2},{tag:"PageBook",icon:"width_full",ratio:ISO216_PAGE_SIDE_RATIO},{tag:"PageMaximized",icon:"smart_screen",ratio:10}],INITIAL_PAGE_RATIO=ISO216_PAGE_SIDE_RATIO});