Files
2026-02-09 10:48:21 +01:00

1 line
32 KiB
JavaScript

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<a;e++)n[e]=r[e];return n}function ownKeys(e,r){var o,t=Object.keys(e);return Object.getOwnPropertySymbols&&(o=Object.getOwnPropertySymbols(e),r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)),t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){babelHelpers.defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(s,a){return s.get(_assertClassBrand(s,a))}function _classPrivateFieldSet(s,a,r){return s.set(_assertClassBrand(s,a),r),r}function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function _callSuper(t,o,e){return o=babelHelpers.getPrototypeOf(o),babelHelpers.possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],babelHelpers.getPrototypeOf(t).constructor):o.apply(t,e))}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function(){return!!t})()}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.makeBook=_exports.View=_exports.UnsupportedTypeError=_exports.ResponseError=_exports.NotFoundError=void 0;async function makeZipLoader(file){var configure=(_await$Emby$importMod=await Emby.importModule(PATH_ZIPJS)).configure,ZipReader=_await$Emby$importMod.ZipReader,BlobReader=_await$Emby$importMod.BlobReader,TextWriter=_await$Emby$importMod.TextWriter,BlobWriter=_await$Emby$importMod.BlobWriter;function load(f){return function(name){for(var _len=arguments.length,args=new Array(1<_len?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];return map.has(name)?f.apply(void 0,[map.get(name)].concat(args)):null}}configure({useWebWorkers:!1});var _await$Emby$importMod=await new ZipReader(new BlobReader(file)).getEntries(),map=new Map(_await$Emby$importMod.map(function(entry){return[entry.filename,entry]}));return{entries:_await$Emby$importMod,loadText:load(function(entry){return entry.getData(new TextWriter)}),loadBlob:load(function(entry,type){return entry.getData(new BlobWriter(type))}),getSize:function(name){return null!=(name=null==(name=map.get(name))?void 0:name.uncompressedSize)?name:0}}}async function makeGenericArchiveLoader(file){function load(f){return function(name){for(var _len2=arguments.length,args=new Array(1<_len2?_len2-1:0),_key2=1;_key2<_len2;_key2++)args[_key2-1]=arguments[_key2];return map.has(name)?f.apply(void 0,[map.get(name)].concat(args)):null}}(Archive=(await Emby.importModule(PATH_LIBARCHIVE)).Archive).init({workerUrl:PATH_LIBARCHIVE_WORKER});var Archive=(await(await Archive.open(file)).getFilesArray()).map(function(entry){return{filename:entry.path+entry.file.name,file:entry.file}}),map=new Map(Archive.map(function(entry){return[entry.filename,entry]}));return{entries:Archive,loadText:load(function(entry){return entry.file.extract().text()}),loadBlob:load(function(entry,type){return type?entry.file.extract().then(function(data){return data.arrayBuffer()}).then(function(ab){return new Blob([ab],{type:type})}):entry.file.extract()}),getSize:function(name){return null!=(name=null==(name=map.get(name))?void 0:name.file.size)?name:0}}}async function makeDirectoryLoader(entry){var entries=await getFileEntries(entry),entries=await Promise.all(entries.map(function(entry){return new Promise(function(resolve,reject){return entry.file(function(file){return resolve([file,entry.fullPath])},function(error){return reject(error)})})})),map=new Map(entries.map(function(_ref4){var _ref4=babelHelpers.slicedToArray(_ref4,2),file=_ref4[0];return[_ref4[1].replace(entry.fullPath+"/",""),file]})),decoder=new TextDecoder;return{loadText:async function(name){return(name=await function(name){return null!=(name=null==(name=map.get(name))?void 0:name.arrayBuffer())?name:null}(name))?decoder.decode(name):null},loadBlob:function(name){return map.get(name)},getSize:function(name){return null!=(name=null==(name=map.get(name))?void 0:name.size)?name:0}}}async function makeBook(file,options){var _loader,_ref,name;if((file="string"==typeof file?await async function(url,forceType){url=await fetch(url);if(url.ok)return new File([await url.blob()],new URL(url.url).pathname,{type:forceType||url.headers.get("content-type")||""});throw new ResponseError("".concat(url.status," ").concat(url.statusText),{cause:url})}(file,options.forceType):file).isDirectory){var loader=await makeDirectoryLoader(file);(loader=await new(await Emby.importModule("./modules/ebookplayer/foliate/epub.js")).EPUB(loader).init()).type="epub"}else{if(!file.size)throw new NotFoundError("File not found");await async function(file){file=new Uint8Array(await file.slice(0,6).arrayBuffer());return 82===file[0]&&97===file[1]&&114===file[2]&&33===file[3]&&26===file[4]&&7===file[5]}(file)||await async function(file){var arr=new Uint8Array(await file.slice(257,262).arrayBuffer());return 117===arr[0]&&115===arr[1]&&116===arr[2]&&97===arr[3]&&114===arr[4]||31===(arr=new Uint8Array(await file.slice(0,6).arrayBuffer()))[0]&&139===arr[1]||253===arr[0]&&55===arr[1]&&122===arr[2]&&88===arr[3]&&90===arr[4]&&0===arr[5]}(file)||await async function(file){file=new Uint8Array(await file.slice(0,6).arrayBuffer());return 55===file[0]&&122===file[1]&&188===file[2]&&175===file[3]&&39===file[4]&&28===file[5]}(file)?(_loader=await makeGenericArchiveLoader(file),(loader=await(0,(await Emby.importModule("./modules/ebookplayer/foliate/comic-book.js")).makeComicBook)(_loader,file,null==options?void 0:options.smartSpreads)).type="comic-book"):await async function(file){file=new Uint8Array(await file.slice(0,4).arrayBuffer());return 80===file[0]&&75===file[1]&&3===file[2]&&4===file[3]}(file)?(_loader=await makeZipLoader(file),name=(_ref=file).name,"application/x-cbz"===(_ref=_ref.type)||"application/vnd.comicbook+zip"===_ref||name.endsWith(".cbz")?(loader=await(0,(await Emby.importModule("./modules/ebookplayer/foliate/comic-book.js")).makeComicBook)(_loader,file,null==options?void 0:options.smartSpreads)).type="comic-book":!function(_ref3){var name=_ref3.name,_ref3=_ref3.type;return"application/x-zip-compressed-fb2"===_ref3||"application/fictionbook2+zip"===_ref3||name.endsWith(".fb2.zip")||name.endsWith(".fbz")}(file)?(loader=await new(await Emby.importModule("./modules/ebookplayer/foliate/epub.js")).EPUB(_loader).init()).type="epub":(_ref=(await Emby.importModule("./modules/ebookplayer/foliate/fb2.js")).makeFB2,options=(name=_loader.entries).find(function(entry){return entry.filename.endsWith(".fb2")}),(loader=await _ref(await _loader.loadBlob((null!=options?options:name[0]).filename))).type="fb2")):(_loader=(_ref=await Emby.importModule("./modules/ebookplayer/foliate/mobi.js")).isMOBI,options=_ref.MOBI,await _loader(file)?(loader=await new options({unzlib:(await Emby.importModule("./thirdparty/fflate/fflate.js")).unzlibSync}).open(file)).type="mobi":function(_ref2){var name=_ref2.name,_ref2=_ref2.type;return"application/x-fictionbook+xml"===_ref2||"application/fictionbook2"===_ref2||name.endsWith(".fb2")}(file)&&((loader=await(0,(await Emby.importModule("./modules/ebookplayer/foliate/fb2.js")).makeFB2)(file)).type="fb2"))}if(loader)return loader;throw new UnsupportedTypeError("File type not supported")}var PATH_ZIPJS="./thirdparty/zipjs/zip.js",PATH_LIBARCHIVE="./thirdparty/libarchive/libarchive.js",PATH_LIBARCHIVE_WORKER="./thirdparty/libarchive/worker-bundle.js",getFileEntries=async function(entry){return entry.isFile?entry:(await Promise.all(Array.from(await new Promise(function(resolve,reject){return entry.createReader().readEntries(function(entries){return resolve(entries)},function(error){return reject(error)})}),getFileEntries))).flat()},ResponseError=_exports.ResponseError=function(_Error){function ResponseError(){return babelHelpers.classCallCheck(this,ResponseError),_callSuper(this,ResponseError,arguments)}return babelHelpers.inherits(ResponseError,_Error),babelHelpers.createClass(ResponseError)}(babelHelpers.wrapNativeSuper(Error)),NotFoundError=_exports.NotFoundError=function(_Error2){function NotFoundError(){return babelHelpers.classCallCheck(this,NotFoundError),_callSuper(this,NotFoundError,arguments)}return babelHelpers.inherits(NotFoundError,_Error2),babelHelpers.createClass(NotFoundError)}(babelHelpers.wrapNativeSuper(Error)),UnsupportedTypeError=_exports.UnsupportedTypeError=function(_Error3){function UnsupportedTypeError(){return babelHelpers.classCallCheck(this,UnsupportedTypeError),_callSuper(this,UnsupportedTypeError,arguments)}return babelHelpers.inherits(UnsupportedTypeError,_Error3),babelHelpers.createClass(UnsupportedTypeError)}(babelHelpers.wrapNativeSuper(Error)),_timeout=(_exports.makeBook=makeBook,new WeakMap),_el=new WeakMap,_check=new WeakMap,_state=new WeakMap,CursorAutohider=function(){function CursorAutohider(el,check){var _this=this,state=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};babelHelpers.classCallCheck(this,CursorAutohider),_classPrivateFieldInitSpec(this,_timeout,void 0),_classPrivateFieldInitSpec(this,_el,void 0),_classPrivateFieldInitSpec(this,_check,void 0),_classPrivateFieldInitSpec(this,_state,void 0),_classPrivateFieldSet(_el,this,el),_classPrivateFieldSet(_check,this,check),_classPrivateFieldSet(_state,this,state),_classPrivateFieldGet(_state,this).hidden&&this.hide(),_classPrivateFieldGet(_el,this).addEventListener("mousemove",function(_ref6){var screenX=_ref6.screenX,_ref6=_ref6.screenY;screenX===_classPrivateFieldGet(_state,_this).x&&_ref6===_classPrivateFieldGet(_state,_this).y||(_classPrivateFieldGet(_state,_this).x=screenX,_classPrivateFieldGet(_state,_this).y=_ref6,_this.show(),_classPrivateFieldGet(_timeout,_this)&&clearTimeout(_classPrivateFieldGet(_timeout,_this)),check()&&_classPrivateFieldSet(_timeout,_this,setTimeout(_this.hide.bind(_this),1e3)))},!1)}return babelHelpers.createClass(CursorAutohider,[{key:"cloneFor",value:function(el){return new CursorAutohider(el,_classPrivateFieldGet(_check,this),_classPrivateFieldGet(_state,this))}},{key:"hide",value:function(){_classPrivateFieldGet(_el,this).style.cursor="none",_classPrivateFieldGet(_state,this).hidden=!0}},{key:"show",value:function(){_classPrivateFieldGet(_el,this).style.removeProperty("cursor"),_classPrivateFieldGet(_state,this).hidden=!1}}])}(),_arr=new WeakMap,_index=new WeakMap,History=function(_EventTarget){function History(){var _this2;babelHelpers.classCallCheck(this,History);for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];return _classPrivateFieldInitSpec(_this2=_callSuper(this,History,[].concat(args)),_arr,[]),_classPrivateFieldInitSpec(_this2,_index,-1),_this2}return babelHelpers.inherits(History,_EventTarget),babelHelpers.createClass(History,[{key:"pushState",value:function(x){var last=_classPrivateFieldGet(_arr,this)[_classPrivateFieldGet(_index,this)];last===x||null!=last&&last.fraction&&last.fraction===x.fraction||(_classPrivateFieldGet(_arr,this)[_classPrivateFieldSet(_index,this,(last=_classPrivateFieldGet(_index,this),++last))]=x,_classPrivateFieldGet(_arr,this).length=_classPrivateFieldGet(_index,this)+1,this.dispatchEvent(new Event("index-change")))}},{key:"replaceState",value:function(x){var index=_classPrivateFieldGet(_index,this);_classPrivateFieldGet(_arr,this)[index]=x}},{key:"back",value:function(){var detail,index=_classPrivateFieldGet(_index,this);index<=0||(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:"forward",value:function(){var detail,index=_classPrivateFieldGet(_index,this);index>=_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)});