define(["exports","./epubcfi.js","./progress.js","./overlayer.js","./text-walker.js"],function(_exports,CFI,_progress,_overlayer2,_textWalker){function _createForOfIteratorHelper(r,e){var o,a,u,n,t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return u=!(a=!0),{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){u=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw o}}};if(Array.isArray(r)||(t=function(r,a){{var t;if(r)return"string"==typeof r?_arrayLikeToArray(r,a):"Map"===(t="Object"===(t={}.toString.call(r).slice(8,-1))&&r.constructor?r.constructor.name:t)||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r))||e&&r&&"number"==typeof r.length)return t&&(r=t),n=0,{s:e=function(){},n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:e};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e=_classPrivateFieldGet(_arr,this).length-1||(detail={state:_classPrivateFieldGet(_arr,this)[index+1]},_classPrivateFieldSet(_index,this,index+1),this.dispatchEvent(new CustomEvent("popstate",{detail:detail})),this.dispatchEvent(new Event("index-change")))}},{key:"canGoBack",get:function(){return 0<_classPrivateFieldGet(_index,this)}},{key:"canGoForward",get:function(){return _classPrivateFieldGet(_index,this)<_classPrivateFieldGet(_arr,this).length-1}},{key:"clear",value:function(){_classPrivateFieldSet(_arr,this,[]),_classPrivateFieldSet(_index,this,-1)}}])}(babelHelpers.wrapNativeSuper(EventTarget)),_root=new WeakMap,_sectionProgress=new WeakMap,_tocProgress=new WeakMap,_pageProgress=new WeakMap,_searchResults=new WeakMap,_cursorAutohider=new WeakMap,_View_brand=new WeakSet,_exports=_exports.View=function(_HTMLElement){function View(){var _this3,e,a;return babelHelpers.classCallCheck(this,View),_this3=_callSuper(this,View),_checkPrivateRedeclaration(e=_this3,a=_View_brand),a.add(e),_classPrivateFieldInitSpec(_this3,_root,_this3.attachShadow({mode:"closed"})),_classPrivateFieldInitSpec(_this3,_sectionProgress,void 0),_classPrivateFieldInitSpec(_this3,_tocProgress,void 0),_classPrivateFieldInitSpec(_this3,_pageProgress,void 0),_classPrivateFieldInitSpec(_this3,_searchResults,new Map),_classPrivateFieldInitSpec(_this3,_cursorAutohider,new CursorAutohider(_this3,function(){return _this3.hasAttribute("autohide-cursor")})),babelHelpers.defineProperty(_this3,"isFixedLayout",!1),babelHelpers.defineProperty(_this3,"lastLocation",void 0),babelHelpers.defineProperty(_this3,"history",new History),_this3.history.addEventListener("popstate",function(_ref8){_ref8=_ref8.detail,_ref8=_this3.resolveNavigation(_ref8.state);_this3.renderer.goTo(_ref8)}),_this3}return babelHelpers.inherits(View,_HTMLElement),babelHelpers.createClass(View,[{key:"sectionProgress",get:function(){return _classPrivateFieldGet(_sectionProgress,this)}},{key:"open",value:async function(book,options){var _book$toc,splitHref,getFragment,activeClass,playbackActiveClass,lastActive,_this4=this;options=Object.assign({fileToBook:makeBook},options||{}),"string"!=typeof book&&"function"!=typeof book.arrayBuffer&&!book.isDirectory||(book=await options.fileToBook(book,options)),this.book=book,this.language=function(lang){if(!lang)return{};try{var _ref7,_locale$getTextInfo,canonical=Intl.getCanonicalLocales(lang)[0],locale=new Intl.Locale(canonical),isCJK=["zh","ja","kr"].includes(locale.language),direction=null==(_ref7=null!=(_locale$getTextInfo=null==locale.getTextInfo?void 0:locale.getTextInfo())?_locale$getTextInfo:locale.textInfo)?void 0:_ref7.direction;return{canonical:canonical,locale:locale,isCJK:isCJK,direction:direction}}catch(e){return console.warn(e),{}}}(null==(options=book.metadata)?void 0:options.language),book.splitTOCHref&&book.getTOCFragment&&(options=book.sections.map(function(s){return s.id}),_classPrivateFieldSet(_sectionProgress,this,new _progress.SectionProgress(book.sections,1500,1600)),splitHref=book.splitTOCHref.bind(book),getFragment=book.getTOCFragment.bind(book),_classPrivateFieldSet(_tocProgress,this,new _progress.TOCProgress),await _classPrivateFieldGet(_tocProgress,this).init({toc:null!=(_book$toc=book.toc)?_book$toc:[],ids:options,splitHref:splitHref,getFragment:getFragment}),_classPrivateFieldSet(_pageProgress,this,new _progress.TOCProgress),await _classPrivateFieldGet(_pageProgress,this).init({toc:null!=(_book$toc=book.pageList)?_book$toc:[],ids:options,splitHref:splitHref,getFragment:getFragment})),this.isFixedLayout="pre-paginated"===(null==(_book$toc=this.book.rendition)?void 0:_book$toc.layout),this.isFixedLayout?(await Emby.importModule("./modules/ebookplayer/foliate/fixed-layout.js"),this.renderer=document.createElement("foliate-fxl")):(await Emby.importModule("./modules/ebookplayer/foliate/paginator.js"),this.renderer=document.createElement("foliate-paginator")),this.renderer.setAttribute("exportparts","head,foot,filter"),this.renderer.addEventListener("load",function(e){return _assertClassBrand(_View_brand,_this4,_onLoad).call(_this4,e.detail)}),this.renderer.addEventListener("relocate",function(e){return _assertClassBrand(_View_brand,_this4,_onRelocate).call(_this4,e.detail)}),this.renderer.addEventListener("create-overlayer",function(e){return e.detail.attach(_assertClassBrand(_View_brand,_this4,_createOverlayer).call(_this4,e.detail))}),this.renderer.open(book),_classPrivateFieldGet(_root,this).append(this.renderer),book.sections.some(function(section){return section.mediaOverlay})&&(activeClass=book.media.activeClass,playbackActiveClass=book.media.playbackActiveClass,this.mediaOverlay=book.getMediaOverlay(),this.mediaOverlay.addEventListener("highlight",function(e){var resolved=_this4.resolveNavigation(e.detail.text);_this4.renderer.goTo(resolved).then(function(){var doc=_this4.renderer.getContents().find(function(x){return x.index=resolved.index}).doc,doc=resolved.anchor(doc);doc.classList.add(activeClass),playbackActiveClass&&doc.ownerDocument.documentElement.classList.add(playbackActiveClass),lastActive=new WeakRef(doc)})}),this.mediaOverlay.addEventListener("unhighlight",function(){var el=null==lastActive?void 0:lastActive.deref();el&&(el.classList.remove(activeClass),playbackActiveClass)&&el.ownerDocument.documentElement.classList.remove(playbackActiveClass)}))}},{key:"close",value:function(){var _this$renderer;null!=(_this$renderer=this.renderer)&&_this$renderer.destroy(),null!=(_this$renderer=this.renderer)&&_this$renderer.remove(),_classPrivateFieldSet(_sectionProgress,this,null),_classPrivateFieldSet(_tocProgress,this,null),_classPrivateFieldSet(_pageProgress,this,null),_classPrivateFieldSet(_searchResults,this,new Map),this.lastLocation=null,this.history.clear(),this.mediaOverlay=null}},{key:"goToTextStart",value:function(){var _this$book$landmarks;return this.goTo(null!=(_this$book$landmarks=null==(_this$book$landmarks=this.book.landmarks)||null==(_this$book$landmarks=_this$book$landmarks.find(function(m){return m.type.includes("bodymatter")||m.type.includes("text")}))?void 0:_this$book$landmarks.href)?_this$book$landmarks:this.book.sections.findIndex(function(s){return"no"!==s.linear}))}},{key:"init",value:async function(_ref9){var lastLocation=_ref9.lastLocation,_ref9=_ref9.showTextStart,resolved=lastLocation?this.resolveNavigation(lastLocation):null;resolved?(await this.renderer.goTo(resolved),this.history.pushState(lastLocation)):_ref9?await this.goToTextStart():(this.history.pushState(0),await this.next())}},{key:"addAnnotation",value:async function(annotation,remove){var _overlayer,_range,value=annotation.value;if(!value.startsWith("foliate-search:"))return index=(_await$this$resolveNa2=await this.resolveNavigation(value)).index,_await$this$resolveNa2=_await$this$resolveNa2.anchor,(obj=_assertClassBrand(_View_brand,this,_getOverlayer).call(this,index))&&(_overlayer=obj.overlayer,obj=obj.doc,_overlayer.remove(value),remove||(_range=obj?_await$this$resolveNa2(obj):_await$this$resolveNa2,_assertClassBrand(_View_brand,this,_emit).call(this,"draw-annotation",{draw:function(func,opts){return _overlayer.add(value,_range,func,opts)},annotation:annotation,doc:obj,range:_range}))),{index:index,label:null!=(annotation=null==(_await$this$resolveNa2=_classPrivateFieldGet(_tocProgress,this).getProgress(index))?void 0:_await$this$resolveNa2.label)?annotation:""};var obj=value.replace("foliate-search:",""),index=await this.resolveNavigation(obj),_await$this$resolveNa2=index.index,annotation=index.anchor,obj=_assertClassBrand(_View_brand,this,_getOverlayer).call(this,_await$this$resolveNa2);if(obj){index=obj.overlayer,_await$this$resolveNa2=obj.doc;if(remove)return void index.remove(value);obj=_await$this$resolveNa2?annotation(_await$this$resolveNa2):annotation;index.add(value,obj,_overlayer2.Overlayer.outline)}}},{key:"deleteAnnotation",value:function(annotation){return this.addAnnotation(annotation,!0)}},{key:"showAnnotation",value:async function(annotation){var index,annotation=annotation.value,resolved=await this.goTo(annotation);resolved&&(index=resolved.index,resolved=(0,resolved.anchor)(_assertClassBrand(_View_brand,this,_getOverlayer).call(this,index).doc),_assertClassBrand(_View_brand,this,_emit).call(this,"show-annotation",{value:annotation,index:index,range:resolved}))}},{key:"getCFI",value:function(index,range){var _this$book$sections$i=null!=(_this$book$sections$i=this.book.sections[index].cfi)?_this$book$sections$i:CFI.fake.fromIndex(index);return range?CFI.joinIndir(_this$book$sections$i,CFI.fromRange(range)):_this$book$sections$i}},{key:"resolveCFI",value:function(cfi){var parts;return this.book.resolveCFI?this.book.resolveCFI(cfi):(parts=CFI.parse(cfi),{index:CFI.fake.toIndex((null!=(cfi=parts.parent)?cfi:parts).shift()),anchor:function(doc){return CFI.toRange(doc,parts)}})}},{key:"resolveNavigation",value:function(target){try{var _classPrivateFieldGet4,_classPrivateFieldGet5;return"number"==typeof target?{index:target}:"number"==typeof target.fraction?(_classPrivateFieldGet4=_classPrivateFieldGet(_sectionProgress,this).getSection(target.fraction),{index:(_classPrivateFieldGet5=babelHelpers.slicedToArray(_classPrivateFieldGet4,2))[0],anchor:_classPrivateFieldGet5[1]}):CFI.isCFI.test(target)?this.resolveCFI(target):this.book.resolveHref(target)}catch(e){console.error(e),console.error("Could not resolve target ".concat(target))}}},{key:"goTo",value:async function(target){var resolved=this.resolveNavigation(target);try{return await this.renderer.goTo(resolved),this.history.pushState(target),resolved}catch(e){console.error(e),console.error("Could not go to ".concat(target))}}},{key:"goToFraction",value:async function(frac){var _classPrivateFieldGet6=_classPrivateFieldGet(_sectionProgress,this).getSection(frac),_classPrivateFieldGet6=babelHelpers.slicedToArray(_classPrivateFieldGet6,2),index=_classPrivateFieldGet6[0],_classPrivateFieldGet6=_classPrivateFieldGet6[1];await this.renderer.goTo({index:index,anchor:_classPrivateFieldGet6}),this.history.pushState({fraction:frac})}},{key:"select",value:async function(target){try{var obj=await this.resolveNavigation(target);await this.renderer.goTo(_objectSpread({},obj,{select:!0})),this.history.pushState(target)}catch(e){console.error(e),console.error("Could not go to ".concat(target))}}},{key:"deselect",value:function(){var _step,_iterator=_createForOfIteratorHelper(this.renderer.getContents());try{for(_iterator.s();!(_step=_iterator.n()).done;)_step.value.doc.defaultView.getSelection().removeAllRanges()}catch(err){_iterator.e(err)}finally{_iterator.f()}}},{key:"getSectionFractions",value:function(){var _classPrivateFieldGet9;return(null!=(_classPrivateFieldGet9=null==(_classPrivateFieldGet9=_classPrivateFieldGet(_sectionProgress,this))?void 0:_classPrivateFieldGet9.sectionFractions)?_classPrivateFieldGet9:[]).map(function(x){return x+Number.EPSILON})}},{key:"getProgressOf",value:function(index,range){var _classPrivateFieldGet0;return{tocItem:null==(_classPrivateFieldGet0=_classPrivateFieldGet(_tocProgress,this))?void 0:_classPrivateFieldGet0.getProgress(index,range),pageItem:null==(_classPrivateFieldGet0=_classPrivateFieldGet(_pageProgress,this))?void 0:_classPrivateFieldGet0.getProgress(index,range)}}},{key:"getTOCItemOf",value:async function(target){try{var _await$this$resolveNa3=await this.resolveNavigation(target),index=_await$this$resolveNa3.index,anchor=_await$this$resolveNa3.anchor,doc=await this.book.sections[index].createDocument(),frag=anchor(doc),isRange=frag instanceof Range,range=isRange?frag:doc.createRange();return isRange||range.selectNodeContents(frag),_classPrivateFieldGet(_tocProgress,this).getProgress(index,range)}catch(e){console.error(e),console.error("Could not get ".concat(target))}}},{key:"prev",value:async function(distance){await this.renderer.prev(distance)}},{key:"next",value:async function(distance){await this.renderer.next(distance)}},{key:"goLeft",value:function(){return"rtl"===this.book.dir?this.next():this.prev()}},{key:"goRight",value:function(){return"rtl"===this.book.dir?this.prev():this.next()}},{key:"search",value:async function*(opts){this.clearSearch();var _step2,searchMatcher=(await Emby.importModule("./modules/ebookplayer/foliate/search.js")).searchMatcher,query=opts.query,index=opts.index,searchMatcher=searchMatcher(_textWalker.textWalker,_objectSpread({defaultLocale:this.language},opts)),opts=null!=index?_assertClassBrand(_View_brand,this,_searchSection).call(this,searchMatcher,query,index):_assertClassBrand(_View_brand,this,_searchBook).call(this,searchMatcher,query),list=[],_iterator2=(_classPrivateFieldGet(_searchResults,this).set(index,list),_createForOfIteratorHelper(opts));try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var _item,result=_step2.value;if(result.subitems){var _classPrivateFieldGet10,_classPrivateFieldGet11,_step3,_list=result.subitems.map(function(_ref0){return{value:"foliate-search:"+_ref0.cfi}}),_iterator3=(_classPrivateFieldGet(_searchResults,this).set(result.index,_list),_createForOfIteratorHelper(_list));try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var item=_step3.value;this.addAnnotation(item)}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}yield{label:null!=(_classPrivateFieldGet10=null==(_classPrivateFieldGet11=_classPrivateFieldGet(_tocProgress,this).getProgress(result.index))?void 0:_classPrivateFieldGet11.label)?_classPrivateFieldGet10:"",subitems:result.subitems}}else result.cfi&&(_item={value:"foliate-search:"+result.cfi},list.push(_item),this.addAnnotation(_item)),yield result}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}yield"done"}},{key:"clearSearch",value:function(){var _step4,_iterator4=_createForOfIteratorHelper(_classPrivateFieldGet(_searchResults,this).values());try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var _step5,_iterator5=_createForOfIteratorHelper(_step4.value);try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var item=_step5.value;this.deleteAnnotation(item)}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}_classPrivateFieldGet(_searchResults,this).clear()}},{key:"startMediaOverlay",value:function(){var index=this.renderer.getContents()[0].index;return this.mediaOverlay.start(index)}}])}(babelHelpers.wrapNativeSuper(HTMLElement));function _emit(name,detail,cancelable){return this.dispatchEvent(new CustomEvent(name,{detail:detail,cancelable:cancelable}))}function _onRelocate(_ref1){var reason=_ref1.reason,range=_ref1.range,index=_ref1.index,fraction=_ref1.fraction,_ref1=_ref1.size,fraction=null!=(_classPrivateFieldGet13=null==(_classPrivateFieldGet13=_classPrivateFieldGet(_sectionProgress,this))?void 0:_classPrivateFieldGet13.getProgress(index,fraction,_ref1))?_classPrivateFieldGet13:{},_classPrivateFieldGet13=null==(_ref1=_classPrivateFieldGet(_tocProgress,this))?void 0:_ref1.getProgress(index,range),_ref1=null==(_ref1=_classPrivateFieldGet(_pageProgress,this))?void 0:_ref1.getProgress(index,range),index=this.getCFI(index,range);this.lastLocation=_objectSpread({},fraction,{tocItem:_classPrivateFieldGet13,pageItem:_ref1,cfi:index,range:range}),"snap"!==reason&&"page"!==reason&&"scroll"!==reason||this.history.replaceState(index),_assertClassBrand(_View_brand,this,_emit).call(this,"relocate",this.lastLocation)}function _onLoad(_ref10){var _doc$documentElement,doc=_ref10.doc,_ref10=_ref10.index;(_doc$documentElement=doc.documentElement).lang||(_doc$documentElement.lang=null!=(_doc$documentElement=this.language.canonical)?_doc$documentElement:""),this.language.isCJK||(_doc$documentElement=doc.documentElement).dir||(_doc$documentElement.dir=null!=(_doc$documentElement=this.language.direction)?_doc$documentElement:""),_assertClassBrand(_View_brand,this,_handleLinks).call(this,doc,_ref10),_classPrivateFieldGet(_cursorAutohider,this).cloneFor(doc.documentElement),_assertClassBrand(_View_brand,this,_emit).call(this,"load",{doc:doc,index:_ref10})}function _handleLinks(doc,index){var _this5=this,book=this.book,section=book.sections[index];doc.addEventListener("click",function(e){var _section$resolveHref,href,a=e.target.closest("a[href]");a&&(e.preventDefault(),e=a.getAttribute("href"),href=null!=(_section$resolveHref=null==section||null==section.resolveHref?void 0:section.resolveHref(e))?_section$resolveHref:e,null!=book&&null!=book.isExternal&&book.isExternal(href)?Promise.resolve(_assertClassBrand(_View_brand,_this5,_emit).call(_this5,"external-link",{a:a,href:href},!0)).then(function(x){return x?globalThis.open(href,"_blank"):null}).catch(function(e){return console.error(e)}):Promise.resolve(_assertClassBrand(_View_brand,_this5,_emit).call(_this5,"link",{a:a,href:href},!0)).then(function(x){return x?_this5.goTo(href):null}).catch(function(e){return console.error(e)}))})}function _getOverlayer(index){return this.renderer.getContents().find(function(x){return x.index===index&&x.overlayer})}function _createOverlayer(_ref11){var _this6=this,doc=_ref11.doc,index=_ref11.index,overlayer=new _overlayer2.Overlayer,_ref11=(doc.addEventListener("click",function(e){var e=overlayer.hitTest(e),e=babelHelpers.slicedToArray(e,2),value=e[0],e=e[1];value&&!value.startsWith("foliate-search:")&&_assertClassBrand(_View_brand,_this6,_emit).call(_this6,"show-annotation",{value:value,index:index,range:e})},!1),_classPrivateFieldGet(_searchResults,this).get(index));if(_ref11){var _step6,_iterator6=_createForOfIteratorHelper(_ref11);try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var item=_step6.value;this.addAnnotation(item)}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}}return _assertClassBrand(_View_brand,this,_emit).call(this,"create-overlay",{index:index}),overlayer}async function*_searchSection(matcher,query,index){var _step7,_iterator7=_createForOfIteratorHelper(matcher(await this.book.sections[index].createDocument(),query));try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var _step7$value=_step7.value,range=_step7$value.range,excerpt=_step7$value.excerpt;yield{cfi:this.getCFI(index,range),excerpt:excerpt}}}catch(err){_iterator7.e(err)}finally{_iterator7.f()}}async function*_searchBook(matcher,query){var _step8,_this7=this,sections=this.book.sections,_iterator8=_createForOfIteratorHelper(sections.entries());try{for(_iterator8.s();!(_step8=_iterator8.n()).done;)yield*async function*(){var _step8$value=babelHelpers.slicedToArray(_step8.value,2),index=_step8$value[0],_step8$value=_step8$value[1].createDocument;if(!_step8$value)return 1;_step8$value=await _step8$value(),_step8$value=Array.from(matcher(_step8$value,query),function(_ref12){var range=_ref12.range,_ref12=_ref12.excerpt;return{cfi:_this7.getCFI(index,range),excerpt:_ref12}});yield{progress:(index+1)/sections.length},_step8$value.length&&(yield{index:index,subitems:_step8$value})}()}catch(err){_iterator8.e(err)}finally{_iterator8.f()}}customElements.define("foliate-view",_exports)});