1 line
46 KiB
JavaScript
1 line
46 KiB
JavaScript
define(["exports"],function(_exports){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 _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function(){return!!t})()}function _superPropGet(t,o,e,r){var p=babelHelpers.get(babelHelpers.getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t)}:p}function _classPrivateMethodInitSpec(e,a){_checkPrivateRedeclaration(e,a),a.add(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 _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}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.isMOBI=_exports.MOBI=void 0;function unescapeHTML(str){var textarea;return str?((textarea=document.createElement("textarea")).innerHTML=str,textarea.value):""}function concatTypedArray3(a,b,c){var result=new a.constructor(a.length+b.length+c.length);return result.set(a),result.set(b,a.length),result.set(c,a.length+b.length),result}function decompressPalmDOC(array){for(var output=[],i=0;i<array.length;i++){var byte=array[i];if(0===byte)output.push(0);else if(byte<=8){var _step3,_iterator3=_createForOfIteratorHelper(array.subarray(i+1,(i+=byte)+1));try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var x=_step3.value;output.push(x)}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}}else if(byte<=127)output.push(byte);else if(byte<=191)for(var bytes=byte<<8|array[1+i++],distance=(16383&bytes)>>>3,length=3+(7&bytes),j=0;j<length;j++)output.push(output[output.length-distance]);else output.push(32,128^byte)}return Uint8Array.from(output)}async function huffcdic(mobi,loadRecord){var huffRecord=await loadRecord(mobi.huffcdic),_getStruct=getStruct(HUFF_HEADER,huffRecord),magic=_getStruct.magic,offset1=_getStruct.offset1,offset2=_getStruct.offset2;if("HUFF"!==magic)throw new Error("Invalid HUFF record");for(var table1=Array.from({length:256},function(_,i){return offset1+4*i}).map(function(offset){return getUint(huffRecord.slice(offset,offset+4))}).map(function(x){return[128&x,31&x,x>>>8]}),table2=[null].concat(Array.from({length:32},function(_,i){return offset2+8*i}).map(function(offset){return[getUint(huffRecord.slice(offset,offset+4)),getUint(huffRecord.slice(offset+4,offset+8))]})),dictionary=[],i=1;i<mobi.numHuffcdic;i++){var record=await loadRecord(mobi.huffcdic+i),cdic=getStruct(CDIC_HEADER,record);if("CDIC"!==cdic.magic)throw new Error("Invalid CDIC record");for(var n=Math.min(1<<cdic.codeLength,cdic.numEntries-dictionary.length),buffer=record.slice(cdic.length),_i=0;_i<n;_i++){var offset=getUint(buffer.slice(2*_i,2*_i+2)),x=getUint(buffer.slice(offset,offset+2)),decompressed=32768&x,offset=new Uint8Array(buffer.slice(offset+2,offset+2+(32767&x)));dictionary.push([offset,decompressed])}}function decompress(byteArray){for(var output=new Uint8Array,bitLength=8*byteArray.byteLength,_i2=0;_i2<bitLength;){var bits=Number(read32Bits(byteArray,_i2)),_table=babelHelpers.slicedToArray(table1[bits>>>24],3),found=_table[0],codeLength=_table[1],_table=_table[2];if(!found){for(;bits>>>32-codeLength<table2[codeLength][0];)codeLength+=1;_table=table2[codeLength][1]}if((_i2+=codeLength)>bitLength)break;var found=_table-(bits>>>32-codeLength),_table=babelHelpers.slicedToArray(dictionary[found],2),result=_table[0];_table[1]||(result=decompress(result),dictionary[found]=[result,!0]),output=concatTypedArray(output,result)}return output}return decompress}async function getIndexData(indxIndex,loadRecord){var indxRecord=await loadRecord(indxIndex),indx=getStruct(INDX_HEADER,indxRecord);if("INDX"!==indx.magic)throw new Error("Invalid INDX record");var decoder=getDecoder(indx.encoding),tagxBuffer=indxRecord.slice(indx.length),tagx=getStruct(TAGX_HEADER,tagxBuffer);if("TAGX"!==tagx.magic)throw new Error("Invalid TAGX section");for(var indxRecord=(tagx.length-12)/4,tagTable=Array.from({length:indxRecord},function(_,i){return new Uint8Array(tagxBuffer.slice(12+4*i,12+4*i+4))}),cncx={},cncxRecordOffset=0,i=0;i<indx.numCncx;i++){for(var record=await loadRecord(indxIndex+indx.numRecords+i+1),array=new Uint8Array(record),pos=0;pos<array.byteLength;){var index=pos,_getVarLen=getVarLen(array,pos),value=_getVarLen.value,_getVarLen=(pos+=_getVarLen.length,record.slice(pos,pos+value));pos+=value,cncx[cncxRecordOffset+index]=decoder.decode(_getVarLen)}cncxRecordOffset+=65536}for(var table=[],_i3=0;_i3<indx.numRecords;_i3++){var _record=await loadRecord(indxIndex+1+_i3),_array=new Uint8Array(_record),_indx=getStruct(INDX_HEADER,_record);if("INDX"!==_indx.magic)throw new Error("Invalid INDX record");for(var j=0;j<_indx.numRecords;j++){var _step4,offsetOffset=_indx.idxt+4+2*j,offsetOffset=getUint(_record.slice(offsetOffset,offsetOffset+2)),_length=getUint(_record.slice(offsetOffset,offsetOffset+1)),name=getString(_record.slice(offsetOffset+1,offsetOffset+1+_length)),tags=[],startPos=offsetOffset+1+_length,controlByteIndex=0,_pos=startPos+tagx.numControlBytes,_iterator4=_createForOfIteratorHelper(tagTable);try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var _offset,_value4,_getVarLen4,_value5,_length4,_step4$value=babelHelpers.slicedToArray(_step4.value,4),_tag=_step4$value[0],_numValues=_step4$value[1],mask=_step4$value[2];1&_step4$value[3]?controlByteIndex++:(_offset=startPos+controlByteIndex,(_value4=getUint(_record.slice(_offset,_offset+1))&mask)===mask?1<countBitsSet(mask)?(_value5=(_getVarLen4=getVarLen(_array,_pos)).value,_length4=_getVarLen4.length,tags.push([_tag,null,_value5,_numValues]),_pos+=_length4):tags.push([_tag,1,null,_numValues]):tags.push([_tag,_value4>>countUnsetEnd(mask),null,_numValues]))}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}for(var tagMap={},_i4=0,_tags=tags;_i4<_tags.length;_i4++){var _tags$_i=babelHelpers.slicedToArray(_tags[_i4],4),tag=_tags$_i[0],valueCount=_tags$_i[1],valueBytes=_tags$_i[2],numValues=_tags$_i[3],values=[];if(null!=valueCount)for(var _i5=0;_i5<valueCount*numValues;_i5++){var _getVarLen2=getVarLen(_array,_pos),_value2=_getVarLen2.value,_getVarLen2=_getVarLen2.length;values.push(_value2),_pos+=_getVarLen2}else for(var count=0;count<valueBytes;){var _getVarLen3=getVarLen(_array,_pos),_value3=_getVarLen3.value,_getVarLen3=_getVarLen3.length;values.push(_value3),_pos+=_getVarLen3,count+=_getVarLen3}tagMap[tag]=values}table.push({name:name,tagMap:tagMap})}}return{table:table,cncx:cncx}}async function _getNCX(indxIndex,loadRecord){function getChildren(item){return null!=item.firstChild&&(item.children=items.filter(function(x){return x.parent===item.index}).map(getChildren)),item}var loadRecord=(indxIndex=await getIndexData(indxIndex,loadRecord)).table,cncx=indxIndex.cncx,items=loadRecord.map(function(_ref3,index){_ref3=_ref3.tagMap;return{index:index,offset:null==(index=_ref3[1])?void 0:index[0],size:null==(index=_ref3[2])?void 0:index[0],label:null!=(index=cncx[_ref3[3]])?index:"",headingLevel:null==(index=_ref3[4])?void 0:index[0],pos:_ref3[6],parent:null==(index=_ref3[21])?void 0:index[0],firstChild:null==(index=_ref3[22])?void 0:index[0],lastChild:null==(index=_ref3[23])?void 0:index[0]}});return items.filter(function(item){return 0===item.headingLevel}).map(getChildren)}var MIME={XML:"application/xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml"},PDB_HEADER={name:[0,32,"string"],type:[60,4,"string"],creator:[64,4,"string"],numRecords:[76,2,"uint"]},PALMDOC_HEADER={compression:[0,2,"uint"],numTextRecords:[8,2,"uint"],recordSize:[10,2,"uint"],encryption:[12,2,"uint"]},MOBI_HEADER={magic:[16,4,"string"],length:[20,4,"uint"],type:[24,4,"uint"],encoding:[28,4,"uint"],uid:[32,4,"uint"],version:[36,4,"uint"],titleOffset:[84,4,"uint"],titleLength:[88,4,"uint"],localeRegion:[94,1,"uint"],localeLanguage:[95,1,"uint"],resourceStart:[108,4,"uint"],huffcdic:[112,4,"uint"],numHuffcdic:[116,4,"uint"],exthFlag:[128,4,"uint"],trailingFlags:[240,4,"uint"],indx:[244,4,"uint"]},KF8_HEADER={resourceStart:[108,4,"uint"],fdst:[192,4,"uint"],numFdst:[196,4,"uint"],frag:[248,4,"uint"],skel:[252,4,"uint"],guide:[260,4,"uint"]},EXTH_HEADER={magic:[0,4,"string"],length:[4,4,"uint"],count:[8,4,"uint"]},INDX_HEADER={magic:[0,4,"string"],length:[4,4,"uint"],type:[8,4,"uint"],idxt:[20,4,"uint"],numRecords:[24,4,"uint"],encoding:[28,4,"uint"],language:[32,4,"uint"],total:[36,4,"uint"],ordt:[40,4,"uint"],ligt:[44,4,"uint"],numLigt:[48,4,"uint"],numCncx:[52,4,"uint"]},TAGX_HEADER={magic:[0,4,"string"],length:[4,4,"uint"],numControlBytes:[8,4,"uint"]},HUFF_HEADER={magic:[0,4,"string"],offset1:[8,4,"uint"],offset2:[12,4,"uint"]},CDIC_HEADER={magic:[0,4,"string"],length:[4,4,"uint"],numEntries:[8,4,"uint"],codeLength:[12,4,"uint"]},FDST_HEADER={magic:[0,4,"string"],numEntries:[8,4,"uint"]},FONT_HEADER={flags:[8,4,"uint"],dataStart:[12,4,"uint"],keyLength:[16,4,"uint"],keyStart:[20,4,"uint"]},MOBI_ENCODING={1252:"windows-1252",65001:"utf-8"},EXTH_RECORD_TYPE={100:["creator","string",!0],101:["publisher"],103:["description"],104:["isbn"],105:["subject","string",!0],106:["date"],108:["contributor","string",!0],109:["rights"],110:["subjectCode","string",!0],112:["source","string",!0],113:["asin"],121:["boundary","uint"],122:["fixedLayout"],125:["numResources","uint"],126:["originalResolution"],127:["zeroGutter"],128:["zeroMargin"],129:["coverURI"],132:["regionMagnification"],201:["coverOffset","uint"],202:["thumbnailOffset","uint"],503:["title"],524:["language","string",!0],527:["pageProgressionDirection"]},MOBI_LANG={1:["ar","ar-SA","ar-IQ","ar-EG","ar-LY","ar-DZ","ar-MA","ar-TN","ar-OM","ar-YE","ar-SY","ar-JO","ar-LB","ar-KW","ar-AE","ar-BH","ar-QA"],2:["bg"],3:["ca"],4:["zh","zh-TW","zh-CN","zh-HK","zh-SG"],5:["cs"],6:["da"],7:["de","de-DE","de-CH","de-AT","de-LU","de-LI"],8:["el"],9:["en","en-US","en-GB","en-AU","en-CA","en-NZ","en-IE","en-ZA","en-JM",null,"en-BZ","en-TT","en-ZW","en-PH"],10:["es","es-ES","es-MX",null,"es-GT","es-CR","es-PA","es-DO","es-VE","es-CO","es-PE","es-AR","es-EC","es-CL","es-UY","es-PY","es-BO","es-SV","es-HN","es-NI","es-PR"],11:["fi"],12:["fr","fr-FR","fr-BE","fr-CA","fr-CH","fr-LU","fr-MC"],13:["he"],14:["hu"],15:["is"],16:["it","it-IT","it-CH"],17:["ja"],18:["ko"],19:["nl","nl-NL","nl-BE"],20:["no","nb","nn"],21:["pl"],22:["pt","pt-BR","pt-PT"],23:["rm"],24:["ro"],25:["ru"],26:["hr",null,"sr"],27:["sk"],28:["sq"],29:["sv","sv-SE","sv-FI"],30:["th"],31:["tr"],32:["ur"],33:["id"],34:["uk"],35:["be"],36:["sl"],37:["et"],38:["lv"],39:["lt"],41:["fa"],42:["vi"],43:["hy"],44:["az"],45:["eu"],46:["hsb"],47:["mk"],48:["st"],49:["ts"],50:["tn"],52:["xh"],53:["zu"],54:["af"],55:["ka"],56:["fo"],57:["hi"],58:["mt"],59:["se"],62:["ms"],63:["kk"],65:["sw"],67:["uz",null,"uz-UZ"],68:["tt"],69:["bn"],70:["pa"],71:["gu"],72:["or"],73:["ta"],74:["te"],75:["kn"],76:["ml"],77:["as"],78:["mr"],79:["sa"],82:["cy","cy-GB"],83:["gl","gl-ES"],87:["kok"],97:["ne"],98:["fy"]},concatTypedArray=function(a,b){var result=new a.constructor(a.length+b.length);return result.set(a),result.set(b,a.length),result},decoder=new TextDecoder,getString=function(buffer){return decoder.decode(buffer)},getUint=function(buffer){var l;if(buffer)return l=4===(l=buffer.byteLength)?"getUint32":2===l?"getUint16":"getUint8",new DataView(buffer)[l](0)},getStruct=function(def,buffer){return Object.fromEntries(Array.from(Object.entries(def)).map(function(_ref){var _ref=babelHelpers.slicedToArray(_ref,2),key=_ref[0],_ref=babelHelpers.slicedToArray(_ref[1],3),start=_ref[0],len=_ref[1];return[key,("string"===_ref[2]?getString:getUint)(buffer.slice(start,start+len))]}))},getDecoder=function(x){return new TextDecoder(MOBI_ENCODING[x])},getVarLen=function(byteArray){var _step,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,value=0,length=0,_iterator=_createForOfIteratorHelper(byteArray.subarray(i,i+4));try{for(_iterator.s();!(_step=_iterator.n()).done;){var byte=_step.value,value=value<<7|(127&byte)>>>0;if(length++,128&byte)break}}catch(err){_iterator.e(err)}finally{_iterator.f()}return{value:value,length:length}},countBitsSet=function(x){for(var count=0;0<x;x>>=1)1==(1&x)&&count++;return count},countUnsetEnd=function(x){for(var count=0;0==(1&x);)x>>=1,count++;return count},read32Bits=function(byteArray,from){for(var end=from+32,endByte=end>>3,bits=0n,i=from>>3;i<=endByte;i++)var _byteArray$i,bits=bits<<8n|BigInt(null!=(_byteArray$i=byteArray[i])?_byteArray$i:0);return bits>>8n-BigInt(7&end)&0xffffffffn},_file=(_exports.isMOBI=async function(file){return"BOOKMOBI"===getString(await file.slice(60,68).arrayBuffer())},new WeakMap),_offsets=new WeakMap,PDB=function(){return babelHelpers.createClass(function PDB(){babelHelpers.classCallCheck(this,PDB),_classPrivateFieldInitSpec(this,_file,void 0),_classPrivateFieldInitSpec(this,_offsets,void 0),babelHelpers.defineProperty(this,"pdb",void 0)},[{key:"open",value:async function(file){_classPrivateFieldSet(_file,this,file);var pdb=getStruct(PDB_HEADER,await file.slice(0,78).arrayBuffer()),buffer=(this.pdb=pdb,await file.slice(78,78+8*pdb.numRecords).arrayBuffer());_classPrivateFieldSet(_offsets,this,Array.from({length:pdb.numRecords},function(_,i){return getUint(buffer.slice(8*i,8*i+4))}).map(function(x,i,a){return[x,a[i+1]]}))}},{key:"loadRecord",value:function(index){var _classPrivateFieldGet2,index=_classPrivateFieldGet(_offsets,this)[index];if(index)return(_classPrivateFieldGet2=_classPrivateFieldGet(_file,this)).slice.apply(_classPrivateFieldGet2,babelHelpers.toConsumableArray(index)).arrayBuffer();throw new RangeError("Record index out of bounds")}},{key:"loadMagic",value:async function(index){index=_classPrivateFieldGet(_offsets,this)[index][0];return getString(await _classPrivateFieldGet(_file,this).slice(index,index+4).arrayBuffer())}}])}(),_start=new WeakMap,_resourceStart=new WeakMap,_decoder=new WeakMap,_encoder=new WeakMap,_decompress=new WeakMap,_removeTrailingEntries=new WeakMap,_MOBI_brand=new WeakSet;_exports.MOBI=function(){function MOBI(_ref4){var t,o,e,_ref4=_ref4.unzlib;return babelHelpers.classCallCheck(this,MOBI),t=this,o=MOBI,o=babelHelpers.getPrototypeOf(o),_classPrivateMethodInitSpec(o=babelHelpers.possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],babelHelpers.getPrototypeOf(t).constructor):o.apply(t,e)),_MOBI_brand),_classPrivateFieldInitSpec(o,_start,0),_classPrivateFieldInitSpec(o,_resourceStart,void 0),_classPrivateFieldInitSpec(o,_decoder,void 0),_classPrivateFieldInitSpec(o,_encoder,void 0),_classPrivateFieldInitSpec(o,_decompress,void 0),_classPrivateFieldInitSpec(o,_removeTrailingEntries,void 0),o.unzlib=_ref4,o}return babelHelpers.inherits(MOBI,PDB),babelHelpers.createClass(MOBI,[{key:"open",value:async function(file){await _superPropGet(MOBI,"open",this,3)([file]),this.headers=_assertClassBrand(_MOBI_brand,this,_getHeaders).call(this,await _superPropGet(MOBI,"loadRecord",this,3)([0])),_classPrivateFieldSet(_resourceStart,this,this.headers.mobi.resourceStart);file=8<=this.headers.mobi.version;if(!file){var _this$headers$exth=null==(_this$headers$exth=this.headers.exth)?void 0:_this$headers$exth.boundary;if(_this$headers$exth<4294967295)try{this.headers=_assertClassBrand(_MOBI_brand,this,_getHeaders).call(this,await _superPropGet(MOBI,"loadRecord",this,3)([_this$headers$exth])),_classPrivateFieldSet(_start,this,_this$headers$exth),file=!0}catch(e){console.warn(e),console.warn("Failed to open KF8; falling back to MOBI")}}return await _assertClassBrand(_MOBI_brand,this,_setup).call(this),new(file?KF8:MOBI6)(this).init()}},{key:"decode",value:function(){var _classPrivateFieldGet3;return(_classPrivateFieldGet3=_classPrivateFieldGet(_decoder,this)).decode.apply(_classPrivateFieldGet3,arguments)}},{key:"encode",value:function(){var _classPrivateFieldGet4;return(_classPrivateFieldGet4=_classPrivateFieldGet(_encoder,this)).encode.apply(_classPrivateFieldGet4,arguments)}},{key:"loadRecord",value:function(index){return _superPropGet(MOBI,"loadRecord",this,3)([_classPrivateFieldGet(_start,this)+index])}},{key:"loadMagic",value:function(index){return _superPropGet(MOBI,"loadMagic",this,3)([_classPrivateFieldGet(_start,this)+index])}},{key:"loadText",value:function(index){return this.loadRecord(index+1).then(function(buf){return new Uint8Array(buf)}).then(_classPrivateFieldGet(_removeTrailingEntries,this)).then(_classPrivateFieldGet(_decompress,this))}},{key:"loadResource",value:async function(index){var index=await _superPropGet(MOBI,"loadRecord",this,3)([_classPrivateFieldGet(_resourceStart,this)+index]),magic=getString(index.slice(0,4));return"FONT"===magic?async function(buf,unzlib){var _getStruct3=getStruct(FONT_HEADER,buf),flags=_getStruct3.flags,dataStart=_getStruct3.dataStart,keyLength=_getStruct3.keyLength,_getStruct3=_getStruct3.keyStart,array=new Uint8Array(buf.slice(dataStart));if(2&flags)for(var dataStart=16===keyLength?1024:1040,key=new Uint8Array(buf.slice(_getStruct3,_getStruct3+keyLength)),length=Math.min(dataStart,array.length),i=0;i<length;i++)array[i]=array[i]^key[i%key.length];if(1&flags)try{return await unzlib(array)}catch(e){console.warn(e),console.warn("Failed to decompress font")}return array}(index,this.unzlib):"VIDE"===magic||"AUDI"===magic?index.slice(12):index}},{key:"getNCX",value:function(){var index=this.headers.mobi.indx;if(index<4294967295)return _getNCX(index,this.loadRecord.bind(this))}},{key:"getMetadata",value:function(){var _exth$creator,_this$headers=this.headers,mobi=_this$headers.mobi,_this$headers=_this$headers.exth;return{identifier:mobi.uid.toString(),title:unescapeHTML((null==_this$headers?void 0:_this$headers.title)||this.decode(mobi.title)),author:null==_this$headers||null==(_exth$creator=_this$headers.creator)?void 0:_exth$creator.map(unescapeHTML),publisher:unescapeHTML(null==_this$headers?void 0:_this$headers.publisher),language:null!=(_exth$creator=null==_this$headers?void 0:_this$headers.language)?_exth$creator:mobi.language,published:null==_this$headers?void 0:_this$headers.date,description:unescapeHTML(null==_this$headers?void 0:_this$headers.description),subject:null==_this$headers||null==(_exth$creator=_this$headers.subject)?void 0:_exth$creator.map(unescapeHTML),rights:unescapeHTML(null==_this$headers?void 0:_this$headers.rights),contributor:null==_this$headers?void 0:_this$headers.contributor}}},{key:"getCover",value:async function(){var exth=this.headers.exth,exth=(null==exth?void 0:exth.coverOffset)<4294967295?null==exth?void 0:exth.coverOffset:(null==exth?void 0:exth.thumbnailOffset)<4294967295?null==exth?void 0:exth.thumbnailOffset:null;if(null!=exth)return exth=await this.loadResource(exth),new Blob([exth])}}])}();function _getHeaders(buf){var palmdoc=getStruct(PALMDOC_HEADER,buf),mobi=getStruct(MOBI_HEADER,buf);if("MOBI"!==mobi.magic)throw new Error("Missing MOBI header");var titleOffset=mobi.titleOffset,titleLength=mobi.titleLength,localeLanguage=mobi.localeLanguage,localeRegion=mobi.localeRegion,titleOffset=(mobi.title=buf.slice(titleOffset,titleOffset+titleLength),MOBI_LANG[localeLanguage]),localeLanguage=(mobi.language=null!=(titleLength=null==titleOffset?void 0:titleOffset[localeRegion>>2])?titleLength:null==titleOffset?void 0:titleOffset[0],64&mobi.exthFlag?function(buf,encoding){var _getStruct2=getStruct(EXTH_HEADER,buf),magic=_getStruct2.magic,count=_getStruct2.count;if("EXTH"!==magic)throw new Error("Invalid EXTH header");for(var decoder=getDecoder(encoding),results={},offset=12,i=0;i<count;i++){var name,data,typ,type=getUint(buf.slice(offset,offset+4)),length=getUint(buf.slice(offset+4,offset+8));type in EXTH_RECORD_TYPE&&(name=(type=babelHelpers.slicedToArray(EXTH_RECORD_TYPE[type],3))[0],typ=type[1],type=type[2],data=buf.slice(offset+8,offset+length),typ="uint"===typ?getUint(data):decoder.decode(data),type?(null==results[name]&&(results[name]=[]),results[name].push(typ)):results[name]=typ),offset+=length}return results}(buf.slice(mobi.length+16),mobi.encoding):null);return{palmdoc:palmdoc,mobi:mobi,exth:localeLanguage,kf8:8<=mobi.version?getStruct(KF8_HEADER,buf):null}}async function _setup(){var _this$headers2=this.headers,palmdoc=_this$headers2.palmdoc,_this$headers2=_this$headers2.mobi,palmdoc=(_classPrivateFieldSet(_decoder,this,getDecoder(_this$headers2.encoding)),_classPrivateFieldSet(_encoder,this,new TextEncoder),palmdoc.compression);if(_classPrivateFieldSet(_decompress,this,1===palmdoc?function(f){return f}:2===palmdoc?decompressPalmDOC:17480===palmdoc?await huffcdic(_this$headers2,this.loadRecord.bind(this)):null),!_classPrivateFieldGet(_decompress,this))throw new Error("Unknown compression type");var palmdoc=_this$headers2.trailingFlags,multibyte=1&palmdoc,numTrailingEntries=countBitsSet(palmdoc>>>1);_classPrivateFieldSet(_removeTrailingEntries,this,function(array){for(var _length5,i=0;i<numTrailingEntries;i++){var length=function(byteArray){var _step2,value=0,_iterator2=_createForOfIteratorHelper(byteArray.subarray(-4));try{for(_iterator2.s();!(_step2=_iterator2.n()).done;)var byte=_step2.value,value=(value=128&byte?0:value)<<7|127&byte}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return value}(array);array=array.subarray(0,-length)}return multibyte&&(_length5=1+(3&array[array.length-1]),array=array.subarray(0,-_length5)),array})}function parsePosURI(str){var str=str.match(kindlePosRegex).slice(1),fid=(str=babelHelpers.slicedToArray(str,2))[0],str=str[1];return{fid:parseInt(fid,32),off:parseInt(str,32)}}function makePosURI(){var fid=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,off=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return"kindle:pos:fid:".concat(fid.toString(32).toUpperCase().padStart(4,"0"),":off:").concat(off.toString(32).toUpperCase().padStart(10,"0"))}function getFragmentSelector(str){var attr;if(str=str.match(/\s(id|name|aid)\s*=\s*['"]([^'"]*)['"]/i))return attr=(str=babelHelpers.slicedToArray(str,3))[1],str=str[2],"[".concat(attr,'="').concat(CSS.escape(str),'"]')}var mbpPagebreakRegex=/<\s*(?:mbp:)?pagebreak[^>]*>/gi,fileposRegex=/<[^<>]+filepos=['"]{0,1}(\d+)[^<>]*>/gi,_resourceCache=new WeakMap,_textCache=new WeakMap,_cache=new WeakMap,_sections=new WeakMap,_fileposList=new WeakMap,_type=new WeakMap,MOBI6=function(){return babelHelpers.createClass(function MOBI6(mobi){babelHelpers.classCallCheck(this,MOBI6),babelHelpers.defineProperty(this,"parser",new DOMParser),babelHelpers.defineProperty(this,"serializer",new XMLSerializer),_classPrivateFieldInitSpec(this,_resourceCache,new Map),_classPrivateFieldInitSpec(this,_textCache,new Map),_classPrivateFieldInitSpec(this,_cache,new Map),_classPrivateFieldInitSpec(this,_sections,void 0),_classPrivateFieldInitSpec(this,_fileposList,[]),_classPrivateFieldInitSpec(this,_type,MIME.HTML),this.mobi=mobi},[{key:"init",value:async function(){for(var _this2=this,array=new Uint8Array,i=0;i<this.mobi.headers.palmdoc.numTextRecords;i++)array=concatTypedArray(array,await this.mobi.loadText(i));var str=Array.from(new Uint8Array(array),function(c){return String.fromCharCode(c)}).join("");_classPrivateFieldSet(_sections,this,[0].concat(Array.from(str.matchAll(mbpPagebreakRegex),function(m){return m.index})).map(function(x,i,a){return str.slice(x,a[i+1])}).map(function(str){return Uint8Array.from(str,function(x){return x.charCodeAt(0)})}).map(function(raw){return{book:_this2,raw:raw}}).reduce(function(arr,x){var last=arr[arr.length-1];return x.start=null!=(last=null==last?void 0:last.end)?last:0,x.end=x.start+x.raw.byteLength,arr.concat(x)},[])),this.sections=_classPrivateFieldGet(_sections,this).map(function(section,index){return{id:index,load:function(){return _this2.loadSection(section)},createDocument:function(){return _this2.createDocument(section)},size:section.end-section.start}});try{this.landmarks=await this.getGuide();var _this$landmarks$find,index,doc,lastItem,lastLevel,lastIndent,lastLevelOfIndent,lastParentOfLevel,tocHref=null==(_this$landmarks$find=this.landmarks.find(function(_ref5){_ref5=_ref5.type;return null==_ref5?void 0:_ref5.includes("toc")}))?void 0:_this$landmarks$find.href;tocHref&&(index=this.resolveHref(tocHref).index,doc=await this.sections[index].createDocument(),lastIndent=lastLevel=0,lastLevelOfIndent=new Map,lastParentOfLevel=new Map,this.toc=Array.from(doc.querySelectorAll("a[filepos]")).reduce(function(arr,a){var parent,indent=function(el){for(var x=0;el;){var tag,parent=el.parentElement;parent&&("p"===(tag=parent.tagName.toLowerCase())?x+=1.5:"blockquote"===tag&&(x+=2)),el=parent}return x}(a),_a$innerText={label:null!=(_a$innerText=null==(_a$innerText=a.innerText)?void 0:_a$innerText.trim())?_a$innerText:"",href:"filepos:".concat(a.getAttribute("filepos"))},a=lastIndent<indent?lastLevel+1:indent===lastIndent?lastLevel:null!=(a=lastLevelOfIndent.get(indent))?a:Math.max(0,lastLevel-1);return lastLevel<a?lastItem?(null==lastItem.subitems&&(lastItem.subitems=[]),lastItem.subitems.push(_a$innerText),lastParentOfLevel.set(a,lastItem)):arr.push(_a$innerText):((parent=lastParentOfLevel.get(a))?parent.subitems:arr).push(_a$innerText),lastItem=_a$innerText,lastLevel=a,lastIndent=indent,lastLevelOfIndent.set(indent,a),arr},[]))}catch(e){console.warn(e)}return _classPrivateFieldSet(_fileposList,this,babelHelpers.toConsumableArray(new Set(Array.from(str.matchAll(fileposRegex),function(m){return m[1]}))).map(function(filepos){return{filepos:filepos,number:Number(filepos)}}).sort(function(a,b){return a.number-b.number})),this.metadata=this.mobi.getMetadata(),this.getCover=this.mobi.getCover.bind(this.mobi),this}},{key:"getGuide",value:async function(){var doc=await this.createDocument(_classPrivateFieldGet(_sections,this)[0]);return Array.from(doc.getElementsByTagName("reference"),function(ref){var _ref$getAttribute;return{label:ref.getAttribute("title"),type:null==(_ref$getAttribute=ref.getAttribute("type"))?void 0:_ref$getAttribute.split(/\s/),href:"filepos:".concat(ref.getAttribute("filepos"))}})}},{key:"loadResource",value:async function(index){var raw;return _classPrivateFieldGet(_resourceCache,this).has(index)?_classPrivateFieldGet(_resourceCache,this).get(index):(raw=await this.mobi.loadResource(index),raw=URL.createObjectURL(new Blob([raw])),_classPrivateFieldGet(_resourceCache,this).set(index,raw),raw)}},{key:"loadRecindex",value:async function(recindex){return this.loadResource(Number(recindex)-1)}},{key:"replaceResources",value:async function(doc){var _step5,_iterator5=_createForOfIteratorHelper(doc.querySelectorAll("img[recindex]"));try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var img=_step5.value,recindex=img.getAttribute("recindex");try{img.src=await this.loadRecindex(recindex)}catch(_unused){console.warn("Failed to load image ".concat(recindex))}}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}var _step6,_iterator6=_createForOfIteratorHelper(doc.querySelectorAll("[mediarecindex]"));try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var media=_step6.value,mediarecindex=media.getAttribute("mediarecindex"),_recindex=media.getAttribute("recindex");try{media.src=await this.loadRecindex(mediarecindex),_recindex&&(media.poster=await this.loadRecindex(_recindex))}catch(_unused2){console.warn("Failed to load media ".concat(mediarecindex))}}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}var _step7,_iterator7=_createForOfIteratorHelper(doc.querySelectorAll("[filepos]"));try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var a=_step7.value,filepos=a.getAttribute("filepos");a.href="filepos:".concat(filepos)}}catch(err){_iterator7.e(err)}finally{_iterator7.f()}}},{key:"loadText",value:async function(section){var raw,fileposList,arr,str,_this3=this;return _classPrivateFieldGet(_textCache,this).has(section)?_classPrivateFieldGet(_textCache,this).get(section):(raw=section.raw,fileposList=_classPrivateFieldGet(_fileposList,this).filter(function(_ref6){_ref6=_ref6.number;return _ref6>=section.start&&_ref6<section.end}).map(function(obj){return function(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}({},obj,{offset:obj.number-section.start})}),arr=raw,fileposList.length&&(arr=raw.subarray(0,fileposList[0].offset),fileposList.forEach(function(_ref7,i){var filepos=_ref7.filepos,_ref7=_ref7.offset,i=fileposList[i+1],filepos=_this3.mobi.encode('<a id="filepos'.concat(filepos,'"></a>'));arr=concatTypedArray3(arr,filepos,raw.subarray(_ref7,null==i?void 0:i.offset))})),str=this.mobi.decode(arr).replaceAll(mbpPagebreakRegex,""),_classPrivateFieldGet(_textCache,this).set(section,str),str)}},{key:"createDocument",value:async function(section){section=await this.loadText(section);return this.parser.parseFromString(section,_classPrivateFieldGet(_type,this))}},{key:"loadSection",value:async function(section){var style,doc;return _classPrivateFieldGet(_cache,this).has(section)?_classPrivateFieldGet(_cache,this).get(section):(style=(doc=await this.createDocument(section)).createElement("style"),doc.head.append(style),style.append(doc.createTextNode("blockquote {\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 1em;\n margin-inline-end: 0;\n }")),await this.replaceResources(doc),style=this.serializer.serializeToString(doc),doc=URL.createObjectURL(new Blob([style],{type:_classPrivateFieldGet(_type,this)})),_classPrivateFieldGet(_cache,this).set(section,doc),doc)}},{key:"resolveHref",value:function(href){var filepos=href.match(/filepos:(.*)/)[1],number=Number(filepos);return{index:_classPrivateFieldGet(_sections,this).findIndex(function(section){return section.end>number}),anchor:function(doc){return doc.getElementById("filepos".concat(filepos))}}}},{key:"splitTOCHref",value:function(href){var href=href.match(/filepos:(.*)/)[1],number=Number(href);return[_classPrivateFieldGet(_sections,this).findIndex(function(section){return section.end>number}),"filepos".concat(href)]}},{key:"getTOCFragment",value:function(doc,id){return doc.getElementById(id)}},{key:"isExternal",value:function(uri){return/^(?!blob|filepos)\w+:/i.test(uri)}},{key:"destroy",value:function(){var _step8,_iterator8=_createForOfIteratorHelper(_classPrivateFieldGet(_resourceCache,this).values());try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var url=_step8.value;URL.revokeObjectURL(url)}}catch(err){_iterator8.e(err)}finally{_iterator8.f()}var _step9,_iterator9=_createForOfIteratorHelper(_classPrivateFieldGet(_cache,this).values());try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var _url=_step9.value;URL.revokeObjectURL(_url)}}catch(err){_iterator9.e(err)}finally{_iterator9.f()}}}])}(),kindleResourceRegex=/kindle:(flow|embed):(\w+)(?:\?mime=(\w+\/[-+.\w]+))?/,kindlePosRegex=/kindle:pos:fid:(\w+):off:(\w+)/,_cache2=new WeakMap,_fragmentOffsets=new WeakMap,_fragmentSelectors=new WeakMap,_tables=new WeakMap,_sections2=new WeakMap,_fullRawLength=new WeakMap,_rawHead=new WeakMap,_rawTail=new WeakMap,_lastLoadedHead=new WeakMap,_lastLoadedTail=new WeakMap,_type2=new WeakMap,_inlineMap=new WeakMap,_KF8_brand=new WeakSet,KF8=function(){return babelHelpers.createClass(function KF8(mobi){babelHelpers.classCallCheck(this,KF8),_classPrivateMethodInitSpec(this,_KF8_brand),babelHelpers.defineProperty(this,"parser",new DOMParser),babelHelpers.defineProperty(this,"serializer",new XMLSerializer),_classPrivateFieldInitSpec(this,_cache2,new Map),_classPrivateFieldInitSpec(this,_fragmentOffsets,new Map),_classPrivateFieldInitSpec(this,_fragmentSelectors,new Map),_classPrivateFieldInitSpec(this,_tables,{}),_classPrivateFieldInitSpec(this,_sections2,void 0),_classPrivateFieldInitSpec(this,_fullRawLength,void 0),_classPrivateFieldInitSpec(this,_rawHead,new Uint8Array),_classPrivateFieldInitSpec(this,_rawTail,new Uint8Array),_classPrivateFieldInitSpec(this,_lastLoadedHead,-1),_classPrivateFieldInitSpec(this,_lastLoadedTail,-1),_classPrivateFieldInitSpec(this,_type2,MIME.XHTML),_classPrivateFieldInitSpec(this,_inlineMap,new Map),this.mobi=mobi},[{key:"init",value:async function(){var _this4=this,loadRecord=this.mobi.loadRecord.bind(this.mobi),kf8=this.mobi.headers.kf8;try{var fdstBuffer=await loadRecord(kf8.fdst),fdst=getStruct(FDST_HEADER,fdstBuffer);if("FDST"!==fdst.magic)throw new Error("Missing FDST record");var fdstTable=Array.from({length:fdst.numEntries},function(_,i){return 12+8*i}).map(function(offset){return[getUint(fdstBuffer.slice(offset,offset+4)),getUint(fdstBuffer.slice(offset+4,offset+8))]});_classPrivateFieldGet(_tables,this).fdstTable=fdstTable,_classPrivateFieldSet(_fullRawLength,this,fdstTable[fdstTable.length-1][1])}catch(_unused3){}var fdst=(await getIndexData(kf8.skel,loadRecord)).table.map(function(_ref8,index){var name=_ref8.name,_ref8=_ref8.tagMap;return{index:index,name:name,numFrag:_ref8[1][0],offset:_ref8[6][0],length:_ref8[6][1]}}),fragData=await getIndexData(kf8.frag,loadRecord),fragTable=fragData.table.map(function(_ref9){var name=_ref9.name,_ref9=_ref9.tagMap;return{insertOffset:parseInt(name),selector:fragData.cncx[_ref9[2][0]],index:_ref9[4][0],offset:_ref9[6][0],length:_ref9[6][1]}}),fdstTable=(_classPrivateFieldGet(_tables,this).skelTable=fdst,_classPrivateFieldGet(_tables,this).fragTable=fragTable,_classPrivateFieldSet(_sections2,this,fdst.reduce(function(arr,skel){var last=arr[arr.length-1],_last$fragEnd=null!=(_last$fragEnd=null==last?void 0:last.fragEnd)?_last$fragEnd:0,fragEnd=_last$fragEnd+skel.numFrag,_last$fragEnd=fragTable.slice(_last$fragEnd,fragEnd),length=skel.length+_last$fragEnd.map(function(f){return f.length}).reduce(function(a,b){return a+b}),last=(null!=(last=null==last?void 0:last.totalLength)?last:0)+length;return arr.concat({skel:skel,frags:_last$fragEnd,fragEnd:fragEnd,length:length,totalLength:last})},[])),await this.getResourcesByMagic(["RESC","PAGE"])),pageSpreads=new Map;if(fdstTable.RESC){var _step1,kf8=await this.mobi.loadRecord(fdstTable.RESC),loadRecord=this.mobi.decode(kf8.slice(16)).replace(/\0/g,""),fdst=loadRecord.search(/\?>/),fdstTable="<package>".concat(loadRecord.slice(fdst),"</package>"),_iterator1=_createForOfIteratorHelper(this.parser.parseFromString(fdstTable,MIME.XML).querySelectorAll("spine > itemref"));try{for(_iterator1.s();!(_step1=_iterator1.n()).done;){var _$itemref$getAttribut,_$itemref$getAttribut2,$itemref=_step1.value,i=parseInt($itemref.getAttribute("skelid"));pageSpreads.set(i,function(properties){var _step0,_iterator0=_createForOfIteratorHelper(properties);try{for(_iterator0.s();!(_step0=_iterator0.n()).done;){var p=_step0.value;if("page-spread-left"===p||"rendition:page-spread-left"===p)return"left";if("page-spread-right"===p||"rendition:page-spread-right"===p)return"right";if("rendition:page-spread-center"===p)return"center"}}catch(err){_iterator0.e(err)}finally{_iterator0.f()}}(null!=(_$itemref$getAttribut=null==(_$itemref$getAttribut2=$itemref.getAttribute("properties"))?void 0:_$itemref$getAttribut2.split(" "))?_$itemref$getAttribut:[]))}}catch(err){_iterator1.e(err)}finally{_iterator1.f()}}this.sections=_classPrivateFieldGet(_sections2,this).map(function(section,index){return section.frags.length?{id:index,load:function(){return _this4.loadSection(section)},createDocument:function(){return _this4.createDocument(section)},size:section.length,pageSpread:pageSpreads.get(index)}:{linear:"no"}});try{var ncx=await this.mobi.getNCX(),map=function(_ref0){var label=_ref0.label,pos=_ref0.pos,_ref0=_ref0.children,pos=babelHelpers.slicedToArray(pos,2),fid=pos[0],pos=pos[1],href=makePosURI(fid,pos),arr=_classPrivateFieldGet(_fragmentOffsets,_this4).get(fid);return arr?arr.push(pos):_classPrivateFieldGet(_fragmentOffsets,_this4).set(fid,[pos]),{label:unescapeHTML(label),href:href,subitems:null==_ref0?void 0:_ref0.map(map)}};this.toc=null==ncx?void 0:ncx.map(map),this.landmarks=await this.getGuide()}catch(e){console.warn(e)}kf8=this.mobi.headers.exth;return this.dir=kf8.pageProgressionDirection,this.rendition={layout:"true"===kf8.fixedLayout?"pre-paginated":"reflowable",viewport:Object.fromEntries(null!=(fdst=null==(loadRecord=kf8.originalResolution)||null==(loadRecord=loadRecord.split("x"))||null==(loadRecord=loadRecord.slice(0,2))?void 0:loadRecord.map(function(x,i){return[i?"height":"width",x]}))?fdst:[])},this.metadata=this.mobi.getMetadata(),this.getCover=this.mobi.getCover.bind(this.mobi),this}},{key:"getResourcesByMagic",value:async function(keys){for(var _this5=this,results={},start=this.mobi.headers.kf8.resourceStart,end=this.mobi.pdb.numRecords,i=start;i<end;i++)await async function(){try{var magic=await _this5.mobi.loadMagic(i),match=keys.find(function(key){return key===magic});match&&(results[match]=i)}catch(_unused4){}}();return results}},{key:"getGuide",value:async function(){var loadRecord,cncx,index=this.mobi.headers.kf8.guide;if(index<4294967295)return loadRecord=this.mobi.loadRecord.bind(this.mobi),loadRecord=(index=await getIndexData(index,loadRecord)).table,cncx=index.cncx,loadRecord.map(function(_ref1){var _cncx$tagMap$1$,name=_ref1.name,_ref1=_ref1.tagMap;return{label:null!=(_cncx$tagMap$1$=cncx[_ref1[1][0]])?_cncx$tagMap$1$:"",type:null==name?void 0:name.split(/\s/),href:makePosURI(null!=(name=null==(_cncx$tagMap$1$=_ref1[6])?void 0:_cncx$tagMap$1$[0])?name:null==(_cncx$tagMap$1$=_ref1[3])?void 0:_cncx$tagMap$1$[0])}})}},{key:"loadResourceBlob",value:async function(str){var str=function(str){var str=str.match(kindleResourceRegex).slice(1),str=babelHelpers.slicedToArray(str,3),resourceType=str[0],id=str[1],str=str[2];return{resourceType:resourceType,id:parseInt(id,32),type:str}}(str),resourceType=str.resourceType,id=str.id,str=str.type,resourceType="flow"===resourceType?await this.loadFlow(id):await this.mobi.loadResource(id-1),id=[MIME.XHTML,MIME.HTML,MIME.CSS,MIME.SVG].includes(str)?await this.replaceResources(this.mobi.decode(resourceType)):resourceType,resourceType=str===MIME.SVG?this.parser.parseFromString(id,str):null;return[new Blob([id],{type:str}),null!=resourceType&&null!=(id=resourceType.getElementsByTagNameNS("http://www.w3.org/2000/svg","image"))&&id.length?resourceType.documentElement:null]}},{key:"loadResource",value:async function(str){var _await$this$loadResou,blob;return _classPrivateFieldGet(_cache2,this).has(str)?_classPrivateFieldGet(_cache2,this).get(str):(_await$this$loadResou=await this.loadResourceBlob(str),blob=(_await$this$loadResou=babelHelpers.slicedToArray(_await$this$loadResou,2))[0],blob=(_await$this$loadResou=_await$this$loadResou[1])?str:URL.createObjectURL(blob),_await$this$loadResou&&_classPrivateFieldGet(_inlineMap,this).set(blob,_await$this$loadResou),_classPrivateFieldGet(_cache2,this).set(str,blob),blob)}},{key:"replaceResources",value:function(str){return async function(str,regex,f){for(var matches=[],results=(str.replace(regex,function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return matches.push(args),null}),[]),_i6=0,_matches=matches;_i6<_matches.length;_i6++)results.push(await f.apply(void 0,babelHelpers.toConsumableArray(_matches[_i6])));return str.replace(regex,function(){return results.shift()})}(str,new RegExp(kindleResourceRegex,"g"),this.loadResource.bind(this))}},{key:"loadRaw",value:async function(start,end){var distanceHead=end-_classPrivateFieldGet(_rawHead,this).length,distanceEnd=null==_classPrivateFieldGet(_fullRawLength,this)?1/0:_classPrivateFieldGet(_fullRawLength,this)-_classPrivateFieldGet(_rawTail,this).length-start;if(distanceHead<0||distanceHead<distanceEnd){for(;_classPrivateFieldGet(_rawHead,this).length<end;){var _this$lastLoadedHead=_classPrivateFieldSet(_lastLoadedHead,this,(_this$lastLoadedHead=_classPrivateFieldGet(_lastLoadedHead,this),++_this$lastLoadedHead)),_this$lastLoadedHead=await this.mobi.loadText(_this$lastLoadedHead);_classPrivateFieldSet(_rawHead,this,concatTypedArray(_classPrivateFieldGet(_rawHead,this),_this$lastLoadedHead))}return _classPrivateFieldGet(_rawHead,this).slice(start,end)}for(;_classPrivateFieldGet(_fullRawLength,this)-_classPrivateFieldGet(_rawTail,this).length>start;){var _this$lastLoadedTail=this.mobi.headers.palmdoc.numTextRecords-1-_classPrivateFieldSet(_lastLoadedTail,this,(_this$lastLoadedTail=_classPrivateFieldGet(_lastLoadedTail,this),++_this$lastLoadedTail)),_this$lastLoadedTail=await this.mobi.loadText(_this$lastLoadedTail);_classPrivateFieldSet(_rawTail,this,concatTypedArray(_this$lastLoadedTail,_classPrivateFieldGet(_rawTail,this)))}distanceHead=_classPrivateFieldGet(_fullRawLength,this)-_classPrivateFieldGet(_rawTail,this).length;return _classPrivateFieldGet(_rawTail,this).slice(start-distanceHead,end-distanceHead)}},{key:"loadFlow",value:function(index){if(index<4294967295)return this.loadRaw.apply(this,babelHelpers.toConsumableArray(_classPrivateFieldGet(_tables,this).fdstTable[index]))}},{key:"loadText",value:async function(section){var _step10,skel=section.skel,frags=section.frags,section=section.length,raw=await this.loadRaw(skel.offset,skel.offset+section),skeleton=raw.slice(0,skel.length),_iterator10=_createForOfIteratorHelper(frags);try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var frag=_step10.value,insertOffset=frag.insertOffset-skel.offset,offset=skel.length+frag.offset,fragRaw=raw.slice(offset,offset+frag.length),skeleton=concatTypedArray3(skeleton.slice(0,insertOffset),fragRaw,skeleton.slice(insertOffset)),offsets=_classPrivateFieldGet(_fragmentOffsets,this).get(frag.index);if(offsets){var _step11,_iterator11=_createForOfIteratorHelper(offsets);try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var _offset2=_step11.value,str=this.mobi.decode(fragRaw).slice(_offset2),selector=getFragmentSelector(str);_assertClassBrand(_KF8_brand,this,_setFragmentSelector).call(this,frag.index,_offset2,selector)}}catch(err){_iterator11.e(err)}finally{_iterator11.f()}}}}catch(err){_iterator10.e(err)}finally{_iterator10.f()}return this.mobi.decode(skeleton)}},{key:"createDocument",value:async function(section){section=await this.loadText(section);return this.parser.parseFromString(section,_classPrivateFieldGet(_type2,this))}},{key:"loadSection",value:async function(section){if(_classPrivateFieldGet(_cache2,this).has(section))return _classPrivateFieldGet(_cache2,this).get(section);var _step12,str=await this.loadText(section),str=await this.replaceResources(str),doc=this.parser.parseFromString(str,_classPrivateFieldGet(_type2,this)),_iterator12=(!doc.querySelector("parsererror")&&null!=(_doc$documentElement=doc.documentElement)&&_doc$documentElement.namespaceURI||(_classPrivateFieldSet(_type2,this,MIME.HTML),doc=this.parser.parseFromString(str,_classPrivateFieldGet(_type2,this))),_createForOfIteratorHelper(_classPrivateFieldGet(_inlineMap,this)));try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var _step13,_step12$value=babelHelpers.slicedToArray(_step12.value,2),_url2=_step12$value[0],node=_step12$value[1],_iterator13=_createForOfIteratorHelper(doc.querySelectorAll('img[src="'.concat(_url2,'"]')));try{for(_iterator13.s();!(_step13=_iterator13.n()).done;)_step13.value.replaceWith(node)}catch(err){_iterator13.e(err)}finally{_iterator13.f()}}}catch(err){_iterator12.e(err)}finally{_iterator12.f()}var _doc$documentElement=URL.createObjectURL(new Blob([this.serializer.serializeToString(doc)],{type:_classPrivateFieldGet(_type2,this)}));return _classPrivateFieldGet(_cache2,this).set(section,_doc$documentElement),_doc$documentElement}},{key:"getIndexByFID",value:function(fid){return _classPrivateFieldGet(_sections2,this).findIndex(function(section){return section.frags.some(function(frag){return frag.index===fid})})}},{key:"resolveHref",value:async function(href){var saved,skel,_classPrivateFieldGet5,selector,href=parsePosURI(href),fid=href.fid,href=href.off,index=this.getIndexByFID(fid);if(!(index<0))return(saved=null==(_classPrivateFieldGet5=_classPrivateFieldGet(_fragmentSelectors,this).get(fid))?void 0:_classPrivateFieldGet5.get(href))?{index:index,anchor:function(doc){return doc.querySelector(saved)}}:(skel=(_classPrivateFieldGet5=_classPrivateFieldGet(_sections2,this)[index]).skel,_classPrivateFieldGet5=_classPrivateFieldGet5.frags.find(function(frag){return frag.index===fid}),skel=skel.offset+skel.length+_classPrivateFieldGet5.offset,skel=await this.loadRaw(skel,skel+_classPrivateFieldGet5.length),_classPrivateFieldGet5=this.mobi.decode(skel).slice(href),selector=getFragmentSelector(_classPrivateFieldGet5),_assertClassBrand(_KF8_brand,this,_setFragmentSelector).call(this,fid,href,selector),{index:index,anchor:function(doc){return doc.querySelector(selector)}})}},{key:"splitTOCHref",value:function(href){href=parsePosURI(href);return[this.getIndexByFID(href.fid),href]}},{key:"getTOCFragment",value:function(doc,_ref10){var fid=_ref10.fid,_ref10=_ref10.off,fid=null==(fid=_classPrivateFieldGet(_fragmentSelectors,this).get(fid))?void 0:fid.get(_ref10);return doc.querySelector(fid)}},{key:"isExternal",value:function(uri){return/^(?!blob|kindle)\w+:/i.test(uri)}},{key:"destroy",value:function(){var _step14,_iterator14=_createForOfIteratorHelper(_classPrivateFieldGet(_cache2,this).values());try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var url=_step14.value;URL.revokeObjectURL(url)}}catch(err){_iterator14.e(err)}finally{_iterator14.f()}}}])}();function _setFragmentSelector(id,offset,selector){var map=_classPrivateFieldGet(_fragmentSelectors,this).get(id);(map||(map=new Map,_classPrivateFieldGet(_fragmentSelectors,this).set(id,map),map)).set(offset,selector)}}); |