@readium/navigator-html-injectables 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
- (function(w,V){typeof exports=="object"&&typeof module<"u"?V(exports):typeof define=="function"&&define.amd?define(["exports"],V):(w=typeof globalThis<"u"?globalThis:w||self,V(w["navigator-html-injectables"]={}))})(this,function(w){"use strict";const V=Math.pow(2,32),Le=()=>Math.round(Math.random()*V).toString(36),ze=()=>`${Math.round(performance.now())}-${Le()}-${Le()}`,H=1;class Ie{constructor(e){this.destination=null,this.registrar=new Map,this.origin="",this.channelId="",this.receiver=this.receive.bind(this),this.preLog=[],this.wnd=e,e.addEventListener("message",this.receiver)}receive(e){if(e.source===null)throw Error("Event source is null");if(typeof e.data!="object")return;const t=e.data;if(!(!("_readium"in t)||!t._readium||t._readium<=0)){if(t.key==="_ping"){if(!this.destination){if(this.destination=e.source,this.origin=e.origin,this.channelId=t._channel,t._readium!==H){t._readium>H?this.send("error",`received comms version ${t._readium} higher than ${H}`):this.send("error",`received comms version ${t._readium} lower than ${H}`),this.destination=null,this.origin="",this.channelId="";return}this.send("_pong",void 0),this.preLog.forEach(r=>this.send("log",r)),this.preLog=[]}return}else if(this.channelId){if(t._channel!==this.channelId||e.origin!==this.origin)return}else return;this.handle(t)}}handle(e){const t=this.registrar.get(e.key);if(!t||t.length===0){e.strict&&this.send("_unhandled",e);return}t.forEach(r=>r.cb(e.data,s=>{this.send("_ack",s,e.id)}))}register(e,t,r){Array.isArray(e)||(e=[e]),e.forEach(s=>{const n=this.registrar.get(s);if(n&&n.length>=0){if(n.find(a=>a.module===t))throw new Error(`Trying to register another callback for combination of event ${s} and module ${t}`);n.push({cb:r,module:t}),this.registrar.set(s,n)}else this.registrar.set(s,[{cb:r,module:t}])})}unregister(e,t){Array.isArray(e)||(e=[e]),e.forEach(r=>{const s=this.registrar.get(r);!s||s.length===0||s.splice(s.findIndex(n=>n.module===t),1)})}unregisterAll(e){this.registrar.forEach((t,r)=>this.registrar.set(r,t.filter(s=>s.module!==e)))}log(...e){this.destination?this.send("log",e):this.preLog.push(e)}get ready(){return!!this.destination}destroy(){this.destination=null,this.channelId="",this.preLog=[],this.registrar.clear(),this.wnd.removeEventListener("message",this.receiver)}send(e,t,r=void 0,s=[]){if(!this.destination)throw Error("Attempted to send comms message before destination has been initialized");const n={_readium:H,_channel:this.channelId,id:r??ze(),key:e,data:t};try{this.destination.postMessage(n,{targetOrigin:this.origin,transfer:s})}catch(o){if(s.length>0)throw o;this.destination.postMessage(n,this.origin,s)}}}class pe{constructor(e){this.algorithm=e.algorithm,this.compression=e.compression,this.originalLength=e.originalLength,this.profile=e.profile,this.scheme=e.scheme}static deserialize(e){if(e&&e.algorithm)return new pe({algorithm:e.algorithm,compression:e.compression,originalLength:e.originalLength,profile:e.profile,scheme:e.scheme})}serialize(){const e={algorithm:this.algorithm};return this.compression!==void 0&&(e.compression=this.compression),this.originalLength!==void 0&&(e.originalLength=this.originalLength),this.profile!==void 0&&(e.profile=this.profile),this.scheme!==void 0&&(e.scheme=this.scheme),e}}class b{constructor(e){this.otherProperties=e}static deserialize(e){if(e)return new b(e)}serialize(){return this.otherProperties}add(e){const t=Object.assign({},this.otherProperties);for(const r in e)t[r]=e[r];return new b(t)}}Object.defineProperty(b.prototype,"encryption",{get:function(){return pe.deserialize(this.otherProperties.encrypted)}}),b.prototype.getContains=function(){return new Set(this.otherProperties.contains||[])},b.prototype.getLayout=function(){return this.otherProperties.layout};class l{constructor(e){let t,r,s=e.mediaType.replace(/\s/g,"").split(";");const n=s[0].split("/");if(n.length===2){if(t=n[0].toLowerCase().trim(),r=n[1].toLowerCase().trim(),t.length===0||r.length===0)throw new Error("Invalid media type")}else throw new Error("Invalid media type");const o={};for(let u=1;u<s.length;u++){const f=s[u].split("=");if(f.length===2){const v=f[0].toLocaleLowerCase(),g=v==="charset"?f[1].toUpperCase():f[1];o[v]=g}}const a={},h=Object.keys(o);h.sort((u,f)=>u.localeCompare(f)),h.forEach(u=>a[u]=o[u]);let c="";for(const u in a){const f=a[u];c+=`;${u}=${f}`}const d=`${t}/${r}${c}`,p=a.encoding;this.string=d,this.type=t,this.subtype=r,this.parameters=a,this.encoding=p,this.name=e.name,this.fileExtension=e.fileExtension}static parse(e){return new l(e)}get structuredSyntaxSuffix(){const e=this.subtype.split("+");return e.length>1?`+${e[e.length-1]}`:void 0}get charset(){return this.parameters.charset}contains(e){const t=typeof e=="string"?l.parse({mediaType:e}):e;if(!((this.type==="*"||this.type===t.type)&&(this.subtype==="*"||this.subtype===t.subtype)))return!1;const r=new Set(Object.entries(this.parameters).map(([n,o])=>`${n}=${o}`)),s=new Set(Object.entries(t.parameters).map(([n,o])=>`${n}=${o}`));for(const n of Array.from(r.values()))if(!s.has(n))return!1;return!0}matches(e){const t=typeof e=="string"?l.parse({mediaType:e}):e;return this.contains(t)||t.contains(this)}matchesAny(...e){for(const t of e)if(this.matches(t))return!0;return!1}equals(e){return this.string===e.string}get isZIP(){return this.matchesAny(l.ZIP,l.LCP_PROTECTED_AUDIOBOOK,l.LCP_PROTECTED_PDF)||this.structuredSyntaxSuffix==="+zip"}get isJSON(){return this.matchesAny(l.JSON)||this.structuredSyntaxSuffix==="+json"}get isOPDS(){return this.matchesAny(l.OPDS1,l.OPDS1_ENTRY,l.OPDS2,l.OPDS2_PUBLICATION,l.OPDS_AUTHENTICATION)||this.structuredSyntaxSuffix==="+json"}get isHTML(){return this.matchesAny(l.HTML,l.XHTML)}get isBitmap(){return this.matchesAny(l.BMP,l.GIF,l.JPEG,l.PNG,l.TIFF,l.WEBP)}get isAudio(){return this.type==="audio"}get isVideo(){return this.type==="video"}get isRWPM(){return this.matchesAny(l.READIUM_AUDIOBOOK_MANIFEST,l.DIVINA_MANIFEST,l.READIUM_WEBPUB_MANIFEST)}get isPublication(){return this.matchesAny(l.READIUM_AUDIOBOOK,l.READIUM_AUDIOBOOK_MANIFEST,l.CBZ,l.DIVINA,l.DIVINA_MANIFEST,l.EPUB,l.LCP_PROTECTED_AUDIOBOOK,l.LCP_PROTECTED_PDF,l.LPF,l.PDF,l.W3C_WPUB_MANIFEST,l.READIUM_WEBPUB,l.READIUM_WEBPUB_MANIFEST,l.ZAB)}static get AAC(){return l.parse({mediaType:"audio/aac",fileExtension:"aac"})}static get ACSM(){return l.parse({mediaType:"application/vnd.adobe.adept+xml",name:"Adobe Content Server Message",fileExtension:"acsm"})}static get AIFF(){return l.parse({mediaType:"audio/aiff",fileExtension:"aiff"})}static get AVI(){return l.parse({mediaType:"video/x-msvideo",fileExtension:"avi"})}static get BINARY(){return l.parse({mediaType:"application/octet-stream"})}static get BMP(){return l.parse({mediaType:"image/bmp",fileExtension:"bmp"})}static get CBZ(){return l.parse({mediaType:"application/vnd.comicbook+zip",name:"Comic Book Archive",fileExtension:"cbz"})}static get CSS(){return l.parse({mediaType:"text/css",fileExtension:"css"})}static get DIVINA(){return l.parse({mediaType:"application/divina+zip",name:"Digital Visual Narratives",fileExtension:"divina"})}static get DIVINA_MANIFEST(){return l.parse({mediaType:"application/divina+json",name:"Digital Visual Narratives",fileExtension:"json"})}static get EPUB(){return l.parse({mediaType:"application/epub+zip",name:"EPUB",fileExtension:"epub"})}static get GIF(){return l.parse({mediaType:"image/gif",fileExtension:"gif"})}static get GZ(){return l.parse({mediaType:"application/gzip",fileExtension:"gz"})}static get HTML(){return l.parse({mediaType:"text/html",fileExtension:"html"})}static get JAVASCRIPT(){return l.parse({mediaType:"text/javascript",fileExtension:"js"})}static get JPEG(){return l.parse({mediaType:"image/jpeg",fileExtension:"jpeg"})}static get JSON(){return l.parse({mediaType:"application/json"})}static get LCP_LICENSE_DOCUMENT(){return l.parse({mediaType:"application/vnd.readium.lcp.license.v1.0+json",name:"LCP License",fileExtension:"lcpl"})}static get LCP_PROTECTED_AUDIOBOOK(){return l.parse({mediaType:"application/audiobook+lcp",name:"LCP Protected Audiobook",fileExtension:"lcpa"})}static get LCP_PROTECTED_PDF(){return l.parse({mediaType:"application/pdf+lcp",name:"LCP Protected PDF",fileExtension:"lcpdf"})}static get LCP_STATUS_DOCUMENT(){return l.parse({mediaType:"application/vnd.readium.license.status.v1.0+json"})}static get LPF(){return l.parse({mediaType:"application/lpf+zip",fileExtension:"lpf"})}static get MP3(){return l.parse({mediaType:"audio/mpeg",fileExtension:"mp3"})}static get MPEG(){return l.parse({mediaType:"video/mpeg",fileExtension:"mpeg"})}static get NCX(){return l.parse({mediaType:"application/x-dtbncx+xml",fileExtension:"ncx"})}static get OGG(){return l.parse({mediaType:"audio/ogg",fileExtension:"oga"})}static get OGV(){return l.parse({mediaType:"video/ogg",fileExtension:"ogv"})}static get OPDS1(){return l.parse({mediaType:"application/atom+xml;profile=opds-catalog"})}static get OPDS1_ENTRY(){return l.parse({mediaType:"application/atom+xml;type=entry;profile=opds-catalog"})}static get OPDS2(){return l.parse({mediaType:"application/opds+json"})}static get OPDS2_PUBLICATION(){return l.parse({mediaType:"application/opds-publication+json"})}static get OPDS_AUTHENTICATION(){return l.parse({mediaType:"application/opds-authentication+json"})}static get OPUS(){return l.parse({mediaType:"audio/opus",fileExtension:"opus"})}static get OTF(){return l.parse({mediaType:"font/otf",fileExtension:"otf"})}static get PDF(){return l.parse({mediaType:"application/pdf",name:"PDF",fileExtension:"pdf"})}static get PNG(){return l.parse({mediaType:"image/png",fileExtension:"png"})}static get READIUM_AUDIOBOOK(){return l.parse({mediaType:"application/audiobook+zip",name:"Readium Audiobook",fileExtension:"audiobook"})}static get READIUM_AUDIOBOOK_MANIFEST(){return l.parse({mediaType:"application/audiobook+json",name:"Readium Audiobook",fileExtension:"json"})}static get READIUM_CONTENT_DOCUMENT(){return l.parse({mediaType:"application/vnd.readium.content+json",name:"Readium Content Document",fileExtension:"json"})}static get READIUM_GUIDED_NAVIGATION_DOCUMENT(){return l.parse({mediaType:"application/guided-navigation+json",name:"Readium Guided Navigation Document",fileExtension:"json"})}static get READIUM_POSITION_LIST(){return l.parse({mediaType:"application/vnd.readium.position-list+json",name:"Readium Position List",fileExtension:"json"})}static get READIUM_WEBPUB(){return l.parse({mediaType:"application/webpub+zip",name:"Readium Web Publication",fileExtension:"webpub"})}static get READIUM_WEBPUB_MANIFEST(){return l.parse({mediaType:"application/webpub+json",name:"Readium Web Publication",fileExtension:"json"})}static get SMIL(){return l.parse({mediaType:"application/smil+xml",fileExtension:"smil"})}static get SVG(){return l.parse({mediaType:"image/svg+xml",fileExtension:"svg"})}static get TEXT(){return l.parse({mediaType:"text/plain",fileExtension:"txt"})}static get TIFF(){return l.parse({mediaType:"image/tiff",fileExtension:"tiff"})}static get TTF(){return l.parse({mediaType:"font/ttf",fileExtension:"ttf"})}static get W3C_WPUB_MANIFEST(){return l.parse({mediaType:"application/x.readium.w3c.wpub+json",name:"Web Publication",fileExtension:"json"})}static get WAV(){return l.parse({mediaType:"audio/wav",fileExtension:"wav"})}static get WEBM_AUDIO(){return l.parse({mediaType:"audio/webm",fileExtension:"webm"})}static get WEBM_VIDEO(){return l.parse({mediaType:"video/webm",fileExtension:"webm"})}static get WEBP(){return l.parse({mediaType:"image/webp",fileExtension:"webp"})}static get WOFF(){return l.parse({mediaType:"font/woff",fileExtension:"woff"})}static get WOFF2(){return l.parse({mediaType:"font/woff2",fileExtension:"woff2"})}static get XHTML(){return l.parse({mediaType:"application/xhtml+xml",fileExtension:"xhtml"})}static get XML(){return l.parse({mediaType:"application/xml",fileExtension:"xml"})}static get ZAB(){return l.parse({mediaType:"application/x.readium.zab+zip",name:"Zipped Audio Book",fileExtension:"zab"})}static get ZIP(){return l.parse({mediaType:"application/zip",fileExtension:"zip"})}}class De{constructor(e){this.uri=e,this.parameters=this.getParameters(e)}getParameters(e){const t=/\{\??([^}]+)\}/g,r=e.match(t);return r?new Set(r.join(",").replace(t,"$1").split(",").map(s=>s.trim())):new Set}expand(e){const t=s=>s.split(",").map(n=>{const o=e[n];return o?encodeURIComponent(o):""}).join(","),r=s=>"?"+s.split(",").map(n=>{const o=n.split("=")[0],a=e[o];return a?`${o}=${encodeURIComponent(a)}`:""}).join("&");return this.uri.replace(/\{(\??)([^}]+)\}/g,(...s)=>s[1]?r(s[2]):t(s[2]))}}function Bt(i){return i&&i instanceof Array?i:void 0}function Be(i){return i&&typeof i=="string"?[i]:Bt(i)}function We(i){return typeof i=="string"?new Date(i):void 0}function K(i){return isNaN(i)?void 0:i}function C(i){return K(i)!==void 0&&Math.sign(i)>=0?i:void 0}function Wt(i){const e=new Array;return i.forEach(t=>e.push(t)),e}class T{constructor(e){this.fragments=e.fragments?e.fragments:new Array,this.progression=e.progression,this.totalProgression=e.totalProgression,this.position=e.position,this.otherLocations=e.otherLocations}static deserialize(e){if(!e)return;const t=K(e.progression),r=K(e.totalProgression),s=K(e.position),n=new Map,o=new Set(["fragment","fragments","progression","totalProgression","position"]);return Object.entries(e).forEach(([a,h])=>{o.has(a)||n.set(a,h)}),new T({fragments:Be(e.fragments||e.fragment),progression:t!==void 0&&t>=0&&t<=1?t:void 0,totalProgression:r!==void 0&&r>=0&&r<=1?r:void 0,position:s!==void 0&&s>0?s:void 0,otherLocations:n.size===0?void 0:n})}serialize(){const e={};return this.fragments&&(e.fragments=this.fragments),this.progression!==void 0&&(e.progression=this.progression),this.totalProgression!==void 0&&(e.totalProgression=this.totalProgression),this.position!==void 0&&(e.position=this.position),this.otherLocations&&this.otherLocations.forEach((t,r)=>e[r]=t),e}}class ${constructor(e){this.after=e.after,this.before=e.before,this.highlight=e.highlight}static deserialize(e){if(e)return new $({after:e.after,before:e.before,highlight:e.highlight})}serialize(){const e={};return this.after!==void 0&&(e.after=this.after),this.before!==void 0&&(e.before=this.before),this.highlight!==void 0&&(e.highlight=this.highlight),e}}class z{constructor(e){this.href=e.href,this.type=e.type,this.title=e.title,this.locations=e.locations?e.locations:new T({}),this.text=e.text}static deserialize(e){if(e&&e.href&&e.type)return new z({href:e.href,type:e.type,title:e.title,locations:T.deserialize(e.locations),text:$.deserialize(e.text)})}serialize(){const e={href:this.href,type:this.type};return this.title!==void 0&&(e.title=this.title),this.locations&&(e.locations=this.locations.serialize()),this.text&&(e.text=this.text.serialize()),e}copyWithLocations(e){return new z({href:this.href,type:this.type,title:this.title,text:this.text,locations:new T({...this.locations,...e})})}}class j{constructor(e){this.href=e.href,this.templated=e.templated,this.type=e.type,this.title=e.title,this.rels=e.rels,this.properties=e.properties,this.height=e.height,this.width=e.width,this.duration=e.duration,this.bitrate=e.bitrate,this.languages=e.languages,this.alternates=e.alternates,this.children=e.children}static deserialize(e){if(e&&e.href&&typeof e.href=="string")return new j({href:e.href,templated:e.templated,type:e.type,title:e.title,rels:e.rel?e.rel instanceof Array?new Set(e.rel):new Set([e.rel]):void 0,properties:b.deserialize(e.properties),height:C(e.height),width:C(e.width),duration:C(e.duration),bitrate:C(e.bitrate),languages:Be(e.language),alternates:Q.deserialize(e.alternate),children:Q.deserialize(e.children)})}serialize(){const e={href:this.href};return this.templated!==void 0&&(e.templated=this.templated),this.type!==void 0&&(e.type=this.type),this.title!==void 0&&(e.title=this.title),this.rels&&(e.rel=Wt(this.rels)),this.properties&&(e.properties=this.properties.serialize()),this.height!==void 0&&(e.height=this.height),this.width!==void 0&&(e.width=this.width),this.duration!==void 0&&(e.duration=this.duration),this.bitrate!==void 0&&(e.bitrate=this.bitrate),this.languages&&(e.language=this.languages),this.alternates&&(e.alternate=this.alternates.serialize()),this.children&&(e.children=this.children.serialize()),e}get mediaType(){return this.type!==void 0?l.parse({mediaType:this.type}):l.BINARY}toURL(e){const t=this.href.replace(/^(\/)/,"");if(t.length===0)return;let r=e||"/";return r.startsWith("/")&&(r="file://"+r),new URL(t,r).href.replace(/^(file:\/\/)/,"")}get templateParameters(){return this.templated?new De(this.href).parameters:new Set}expandTemplate(e){return new j({href:new De(this.href).expand(e),templated:!1})}addProperties(e){var t;const r=j.deserialize(this.serialize());return r.properties=r.properties?(t=r.properties)==null?void 0:t.add(e):new b(e),r}get locator(){let e=this.href.split("#");return new z({href:e.length>0&&e[0]!==void 0?e[0]:this.href,type:this.type??"",title:this.title,locations:new T({fragments:e.length>1&&e[1]!==void 0?[e[1]]:[]})})}}class Q{constructor(e){this.items=e}static deserialize(e){if(e&&e instanceof Array)return new Q(e.map(t=>j.deserialize(t)).filter(t=>t!==void 0))}serialize(){return this.items.map(e=>e.serialize())}findWithRel(e){const t=r=>r.rels&&r.rels.has(e);return this.items.find(t)}filterByRel(e){const t=r=>r.rels&&r.rels.has(e);return this.items.filter(t)}findWithHref(e){const t=r=>r.href===e;return this.items.find(t)}findIndexWithHref(e){const t=r=>r.href===e;return this.items.findIndex(t)}findWithMediaType(e){const t=r=>r.mediaType.matches(e);return this.items.find(t)}filterByMediaType(e){const t=r=>r.mediaType.matches(e);return this.items.filter(t)}filterByMediaTypes(e){const t=r=>{for(const s of e)if(r.mediaType.matches(s))return!0;return!1};return this.items.filter(t)}everyIsAudio(){const e=t=>t.mediaType.isAudio;return this.items.length>0&&this.items.every(e)}everyIsBitmap(){const e=t=>t.mediaType.isBitmap;return this.items.length>0&&this.items.every(e)}everyIsHTML(){const e=t=>t.mediaType.isHTML;return this.items.length>0&&this.items.every(e)}everyIsVideo(){const e=t=>t.mediaType.isVideo;return this.items.length>0&&this.items.every(e)}everyMatchesMediaType(e){return Array.isArray(e)?this.items.length>0&&this.items.every(t=>{for(const r of e)return t.mediaType.matches(r);return!1}):this.items.length>0&&this.items.every(t=>t.mediaType.matches(e))}filterLinksHasType(){return this.items.filter(e=>e.type)}}class ee{constructor(e){this.cssSelector=e.cssSelector,this.textNodeIndex=e.textNodeIndex,this.charOffset=e.charOffset}static deserialize(e){if(!(e&&e.cssSelector))return;let t=C(e.textNodeIndex);if(t===void 0)return;let r=C(e.charOffset);return r===void 0&&(r=C(e.offset)),new ee({cssSelector:e.cssSelector,textNodeIndex:t,charOffset:r})}serialize(){const e={cssSelector:this.cssSelector,textNodeIndex:this.textNodeIndex};return this.charOffset!==void 0&&(e.charOffset=this.charOffset),e}}class fe{constructor(e){this.start=e.start,this.end=e.end}static deserialize(e){if(!e)return;let t=ee.deserialize(e.start);if(t)return new fe({start:t,end:ee.deserialize(e.end)})}serialize(){const e={start:this.start.serialize()};return this.end&&(e.end=this.end.serialize()),e}}T.prototype.getCssSelector=function(){var i;return(i=this.otherLocations)==null?void 0:i.get("cssSelector")},T.prototype.getPartialCfi=function(){var i;return(i=this.otherLocations)==null?void 0:i.get("partialCfi")},T.prototype.getDomRange=function(){var i;return fe.deserialize((i=this.otherLocations)==null?void 0:i.get("domRange"))},T.prototype.fragmentParameters=function(){return new Map(this.fragments.map(i=>i.startsWith("#")?i.slice(1):i).join("&").split("&").filter(i=>!i.startsWith("#")).map(i=>i.split("=")).filter(i=>i.length===2).map(i=>[i[0].trim().toLowerCase(),i[1].trim()]))},T.prototype.htmlId=function(){if(!this.fragments.length)return;let i=this.fragments.find(e=>e.length&&!e.includes("="));if(!i){const e=this.fragmentParameters();e.has("id")?i=e.get("id"):e.has("name")&&(i=e.get("name"))}return i!=null&&i.startsWith("#")?i.slice(1):i},T.prototype.page=function(){const i=parseInt(this.fragmentParameters().get("page"));if(!isNaN(i)&&i>=0)return i},T.prototype.time=function(){const i=parseInt(this.fragmentParameters().get("t"));if(!isNaN(i))return i},T.prototype.space=function(){const i=this.fragmentParameters();if(!i.has("xywh"))return;const e=i.get("xywh").split(",").map(t=>parseInt(t));if(e.length===4&&!e.some(isNaN))return e};class me{constructor(e){this.currency=e.currency,this.value=e.value}static deserialize(e){if(!e)return;let t=e.currency;if(!(t&&typeof t=="string"&&t.length>0))return;let r=C(e.value);if(r!==void 0)return new me({currency:t,value:r})}serialize(){return{currency:this.currency,value:this.value}}}class X{constructor(e){this.type=e.type,this.children=e.children}static deserialize(e){if(e&&e.type)return new X({type:e.type,children:X.deserializeArray(e.children)})}static deserializeArray(e){if(e instanceof Array)return e.map(t=>X.deserialize(t)).filter(t=>t!==void 0)}serialize(){const e={type:this.type};return this.children&&(e.children=this.children.map(t=>t.serialize())),e}}class ge{constructor(e){this.total=e.total,this.position=e.position}static deserialize(e){if(e)return new ge({total:C(e.total),position:C(e.position)})}serialize(){const e={};return this.total!==void 0&&(e.total=this.total),this.position!==void 0&&(e.position=this.position),e}}class ve{constructor(e){this.total=e.total,this.available=e.available}static deserialize(e){if(e)return new ve({total:C(e.total),available:C(e.available)})}serialize(){const e={};return this.total!==void 0&&(e.total=this.total),this.available!==void 0&&(e.available=this.available),e}}class ye{constructor(e){this.state=e.state,this.since=e.since,this.until=e.until}static deserialize(e){if(e&&e.state)return new ye({state:e.state,since:We(e.since),until:We(e.until)})}serialize(){const e={state:this.state};return this.since!==void 0&&(e.since=this.since.toISOString()),this.until!==void 0&&(e.until=this.until.toISOString()),e}}b.prototype.getNumberOfItems=function(){return C(this.otherProperties.numberOfItems)},b.prototype.getPrice=function(){return me.deserialize(this.otherProperties.price)},b.prototype.getIndirectAcquisitions=function(){const i=this.otherProperties.indirectAcquisition;if(i&&i instanceof Array)return i.map(e=>X.deserialize(e)).filter(e=>e!==void 0)},b.prototype.getHolds=function(){return ge.deserialize(this.otherProperties.holds)},b.prototype.getCopies=function(){return ve.deserialize(this.otherProperties.copies)},b.prototype.getAvailability=function(){return ye.deserialize(this.otherProperties.availability)},b.prototype.getAuthenticate=function(){return j.deserialize(this.otherProperties.authenticate)},b.prototype.getClipped=function(){return this.otherProperties.clipped},b.prototype.getFit=function(){return this.otherProperties.fit},b.prototype.getOrientation=function(){return this.otherProperties.orientation},b.prototype.getOverflow=function(){return this.otherProperties.overflow},b.prototype.getPage=function(){return this.otherProperties.page||void 0},b.prototype.getSpread=function(){return this.otherProperties.spread||void 0};class G{}function Fe(i){return i.split("").reverse().join("")}function Ft(i,e,t){const r=Fe(e);return t.map(s=>{const n=Math.max(0,s.end-e.length-s.errors),o=Fe(i.slice(n,s.end));return{start:Ue(o,r,s.errors).reduce((h,c)=>s.end-c.end<h?s.end-c.end:h,s.end),end:s.end,errors:s.errors}})}function be(i){return(i|-i)>>31&1}function ke(i,e,t,r){let s=i.P[t],n=i.M[t];const o=r>>>31,a=e[t]|o,h=a|n,c=(a&s)+s^s|a;let d=n|~(c|s),p=s&c;const u=be(d&i.lastRowMask[t])-be(p&i.lastRowMask[t]);return d<<=1,p<<=1,p|=o,d|=be(r)-o,s=p|~(h|d),n=d&h,i.P[t]=s,i.M[t]=n,u}function Ue(i,e,t){if(e.length===0)return[];t=Math.min(t,e.length);const r=[],s=32,n=Math.ceil(e.length/s)-1,o={P:new Uint32Array(n+1),M:new Uint32Array(n+1),lastRowMask:new Uint32Array(n+1)};o.lastRowMask.fill(1<<31),o.lastRowMask[n]=1<<(e.length-1)%s;const a=new Uint32Array(n+1),h=new Map,c=[];for(let u=0;u<256;u++)c.push(a);for(let u=0;u<e.length;u+=1){const f=e.charCodeAt(u);if(h.has(f))continue;const v=new Uint32Array(n+1);h.set(f,v),f<c.length&&(c[f]=v);for(let g=0;g<=n;g+=1){v[g]=0;for(let y=0;y<s;y+=1){const x=g*s+y;if(x>=e.length)continue;e.charCodeAt(x)===f&&(v[g]|=1<<y)}}}let d=Math.max(0,Math.ceil(t/s)-1);const p=new Uint32Array(n+1);for(let u=0;u<=d;u+=1)p[u]=(u+1)*s;p[n]=e.length;for(let u=0;u<=d;u+=1)o.P[u]=-1,o.M[u]=0;for(let u=0;u<i.length;u+=1){const f=i.charCodeAt(u);let v;f<c.length?v=c[f]:(v=h.get(f),typeof v>"u"&&(v=a));let g=0;for(let y=0;y<=d;y+=1)g=ke(o,v,y,g),p[y]+=g;if(p[d]-g<=t&&d<n&&(v[d+1]&1||g<0)){d+=1,o.P[d]=-1,o.M[d]=0;let y;if(d===n){const x=e.length%s;y=x===0?s:x}else y=s;p[d]=p[d-1]+y-g+ke(o,v,d,g)}else for(;d>0&&p[d]>=t+s;)d-=1;d===n&&p[d]<=t&&(p[d]<t&&r.splice(0,r.length),r.push({start:-1,end:u+1,errors:p[d]}),t=p[d])}return r}function kt(i,e,t){const r=Ue(i,e,t);return Ft(i,e,r)}function He(i,e,t){let r=0;const s=[];for(;r!==-1;)r=i.indexOf(e,r),r!==-1&&(s.push({start:r,end:r+e.length,errors:0}),r+=1);return s.length>0?s:kt(i,e,t)}function $e(i,e){return e.length===0||i.length===0?0:1-He(i,e,e.length)[0].errors/e.length}function Ut(i,e,t={}){if(e.length===0)return null;const r=Math.min(256,e.length/2),s=He(i,e,r);if(s.length===0)return null;const n=a=>{const u=1-a.errors/e.length,f=t.prefix?$e(i.slice(Math.max(0,a.start-t.prefix.length),a.start),t.prefix):1,v=t.suffix?$e(i.slice(a.end,a.end+t.suffix.length),t.suffix):1;let g=1;typeof t.hint=="number"&&(g=1-Math.abs(a.start-t.hint)/i.length);const y=50*u+20*f+20*v+2*g,x=50+20+20+2;return y/x},o=s.map(a=>({start:a.start,end:a.end,score:n(a)}));return o.sort((a,h)=>h.score-a.score),o[0]}function Ee(i,e,t){const r=t===1?e:e-1;if(i.charAt(r).trim()!=="")return e;let s,n;if(t===2?(s=i.substring(0,e),n=s.trimEnd()):(s=i.substring(e),n=s.trimStart()),!n.length)return-1;const o=s.length-n.length;return t===2?e-o:e+o}function je(i,e){const t=i.commonAncestorContainer.ownerDocument.createNodeIterator(i.commonAncestorContainer,NodeFilter.SHOW_TEXT),r=e===1?i.startContainer:i.endContainer,s=e===1?i.endContainer:i.startContainer;let n=t.nextNode();for(;n&&n!==r;)n=t.nextNode();e===2&&(n=t.previousNode());let o=-1;const a=()=>{if(n=e===1?t.nextNode():t.previousNode(),n){const h=n.textContent,c=e===1?0:h.length;o=Ee(h,c,e)}};for(;n&&o===-1&&n!==s;)a();if(n&&o>=0)return{node:n,offset:o};throw new RangeError("No text nodes with non-whitespace text found in range")}function Ht(i){if(!i.toString().trim().length)throw new RangeError("Range contains no non-whitespace text");if(i.startContainer.nodeType!==Node.TEXT_NODE)throw new RangeError("Range startContainer is not a text node");if(i.endContainer.nodeType!==Node.TEXT_NODE)throw new RangeError("Range endContainer is not a text node");const e=i.cloneRange();let t=!1,r=!1;const s={start:Ee(i.startContainer.textContent,i.startOffset,1),end:Ee(i.endContainer.textContent,i.endOffset,2)};if(s.start>=0&&(e.setStart(i.startContainer,s.start),t=!0),s.end>0&&(e.setEnd(i.endContainer,s.end),r=!0),t&&r)return e;if(!t){const{node:n,offset:o}=je(e,1);n&&o>=0&&e.setStart(n,o)}if(!r){const{node:n,offset:o}=je(e,2);n&&o>0&&e.setEnd(n,o)}return e}function qe(i){var e;switch(i.nodeType){case Node.ELEMENT_NODE:case Node.TEXT_NODE:return((e=i.textContent)==null?void 0:e.length)??0;default:return 0}}function _e(i){let e=i.previousSibling,t=0;for(;e;)t+=qe(e),e=e.previousSibling;return t}function Ve(i,...e){let t=e.shift();const r=i.ownerDocument.createNodeIterator(i,NodeFilter.SHOW_TEXT),s=[];let n=r.nextNode(),o,a=0;for(;t!==void 0&&n;)o=n,a+o.data.length>t?(s.push({node:o,offset:t-a}),t=e.shift()):(n=r.nextNode(),a+=o.data.length);for(;t!==void 0&&o&&a===t;)s.push({node:o,offset:o.data.length}),t=e.shift();if(t!==void 0)throw new RangeError("Offset exceeds text length");return s}class N{constructor(e,t){if(t<0)throw new Error("Offset is invalid");this.element=e,this.offset=t}relativeTo(e){if(!e.contains(this.element))throw new Error("Parent is not an ancestor of current element");let t=this.element,r=this.offset;for(;t!==e;)r+=_e(t),t=t.parentElement;return new N(t,r)}resolve(e={}){try{return Ve(this.element,this.offset)[0]}catch(t){if(this.offset===0&&e.direction!==void 0){const r=document.createTreeWalker(this.element.getRootNode(),NodeFilter.SHOW_TEXT);r.currentNode=this.element;const s=e.direction===1,n=s?r.nextNode():r.previousNode();if(!n)throw t;return{node:n,offset:s?0:n.data.length}}else throw t}}static fromCharOffset(e,t){switch(e.nodeType){case Node.TEXT_NODE:return N.fromPoint(e,t);case Node.ELEMENT_NODE:return new N(e,t);default:throw new Error("Node is not an element or text node")}}static fromPoint(e,t){switch(e.nodeType){case Node.TEXT_NODE:{if(t<0||t>e.data.length)throw new Error("Text node offset is out of range");if(!e.parentElement)throw new Error("Text node has no parent");const r=_e(e)+t;return new N(e.parentElement,r)}case Node.ELEMENT_NODE:{if(t<0||t>e.childNodes.length)throw new Error("Child node offset is out of range");let r=0;for(let s=0;s<t;s++)r+=qe(e.childNodes[s]);return new N(e,r)}default:throw new Error("Point is not in an element or text node")}}}class I{constructor(e,t){this.start=e,this.end=t}relativeTo(e){return new I(this.start.relativeTo(e),this.end.relativeTo(e))}toRange(){let e,t;this.start.element===this.end.element&&this.start.offset<=this.end.offset?[e,t]=Ve(this.start.element,this.start.offset,this.end.offset):(e=this.start.resolve({direction:1}),t=this.end.resolve({direction:2}));const r=new Range;return r.setStart(e.node,e.offset),r.setEnd(t.node,t.offset),r}static fromRange(e){const t=N.fromPoint(e.startContainer,e.startOffset),r=N.fromPoint(e.endContainer,e.endOffset);return new I(t,r)}static fromOffsets(e,t,r){return new I(new N(e,t),new N(e,r))}static trimmedRange(e){return Ht(I.fromRange(e).toRange())}}class te{constructor(e,t,r){this.root=e,this.start=t,this.end=r}static fromRange(e,t){const r=I.fromRange(t).relativeTo(e);return new te(e,r.start.offset,r.end.offset)}static fromSelector(e,t){return new te(e,t.start,t.end)}toSelector(){return{type:"TextPositionSelector",start:this.start,end:this.end}}toRange(){return I.fromOffsets(this.root,this.start,this.end).toRange()}}class ie{constructor(e,t,r={}){this.root=e,this.exact=t,this.context=r}static fromRange(e,t){const r=e.textContent,s=I.fromRange(t).relativeTo(e),n=s.start.offset,o=s.end.offset,a=32;return new ie(e,r.slice(n,o),{prefix:r.slice(Math.max(0,n-a),n),suffix:r.slice(o,Math.min(r.length,o+a))})}static fromSelector(e,t){const{prefix:r,suffix:s}=t;return new ie(e,t.exact,{prefix:r,suffix:s})}toSelector(){return{type:"TextQuoteSelector",exact:this.exact,prefix:this.context.prefix,suffix:this.context.suffix}}toRange(e={}){return this.toPositionAnchor(e).toRange()}toPositionAnchor(e={}){const t=this.root.textContent,r=Ut(t,this.exact,{...this.context,hint:e.hint});if(!r)throw new Error("Quote not found");return new te(this.root,r.start,r.end)}}function $t(i){const e=i.tagName.toUpperCase();return e==="IMG"||e==="VIDEO"||e==="AUDIO"||e==="IFRAME"||e==="OBJECT"||e==="EMBED"||e==="CANVAS"}function xe(i,e){try{const t=e.locations,r=e.text;if(r&&r.highlight){let s;t&&t.getCssSelector()&&(s=i.querySelector(t.getCssSelector())),s||(s=i.body);const n=new ie(s,r.highlight,{prefix:r.before,suffix:r.after});try{return n.toRange()}catch{return console.warn("Quote not found:",n),null}}if(t){let s=null;if(!s&&t.getCssSelector()&&(s=i.querySelector(t.getCssSelector())),!s&&t.fragments){for(const n of t.fragments)if(s=i.getElementById(n),s)break}if(s){const n=i.createRange();return s.childNodes.length===0||$t(s)?(n.selectNode(s),n):(n.setStartBefore(s),n.setEndAfter(s),n)}}}catch(t){console.error(t)}return null}function jt(i,e){let t=i.getClientRects();t.length||i.commonAncestorContainer.nodeType===Node.ELEMENT_NODE&&(t=i.commonAncestorContainer.getClientRects());const r=1,s=[];for(const c of t)s.push({bottom:c.bottom,height:c.height,left:c.left,right:c.right,top:c.top,width:c.width});const n=Xe(s,r,e),o=_t(n,r),a=Ge(o),h=2*2;for(let c=a.length-1;c>=0;c--){const d=a[c];if(!(d.width*d.height>h))if(a.length>1)a.splice(c,1);else break}return a}function Xe(i,e,t){for(let r=0;r<i.length;r++)for(let s=r+1;s<i.length;s++){const n=i[r],o=i[s];if(n===o)continue;const a=M(n.top,o.top,e)&&M(n.bottom,o.bottom,e),h=M(n.left,o.left,e)&&M(n.right,o.right,e);if((h&&!t||a&&!h)&&Ze(n,o,e)){const u=i.filter(v=>v!==n&&v!==o),f=qt(n,o);return u.push(f),Xe(u,e,t)}}return i}function qt(i,e){const t=Math.min(i.left,e.left),r=Math.max(i.right,e.right),s=Math.min(i.top,e.top),n=Math.max(i.bottom,e.bottom);return{bottom:n,height:n-s,left:t,right:r,top:s,width:r-t}}function _t(i,e){const t=new Set(i);for(const r of i){if(!(r.width>1&&r.height>1)){t.delete(r);continue}for(const n of i)if(r!==n&&t.has(n)&&Vt(n,r,e)){t.delete(r);break}}return Array.from(t)}function Vt(i,e,t){return re(i,e.left,e.top,t)&&re(i,e.right,e.top,t)&&re(i,e.left,e.bottom,t)&&re(i,e.right,e.bottom,t)}function re(i,e,t,r){return(i.left<e||M(i.left,e,r))&&(i.right>e||M(i.right,e,r))&&(i.top<t||M(i.top,t,r))&&(i.bottom>t||M(i.bottom,t,r))}function Ge(i){for(let e=0;e<i.length;e++)for(let t=e+1;t<i.length;t++){const r=i[e],s=i[t];if(r!==s&&Ze(r,s,-1)){let n=[],o;const a=Ye(r,s);if(a.length===1)n=a,o=r;else{const c=Ye(s,r);a.length<c.length?(n=a,o=r):(n=c,o=s)}const h=i.filter(c=>c!==o);return Array.prototype.push.apply(h,n),Ge(h)}}return i}function Ye(i,e){const t=Xt(e,i);if(t.height===0||t.width===0)return[i];const r=[];{const s={bottom:i.bottom,height:0,left:i.left,right:t.left,top:i.top,width:0};s.width=s.right-s.left,s.height=s.bottom-s.top,s.height!==0&&s.width!==0&&r.push(s)}{const s={bottom:t.top,height:0,left:t.left,right:t.right,top:i.top,width:0};s.width=s.right-s.left,s.height=s.bottom-s.top,s.height!==0&&s.width!==0&&r.push(s)}{const s={bottom:i.bottom,height:0,left:t.left,right:t.right,top:t.bottom,width:0};s.width=s.right-s.left,s.height=s.bottom-s.top,s.height!==0&&s.width!==0&&r.push(s)}{const s={bottom:i.bottom,height:0,left:t.right,right:i.right,top:i.top,width:0};s.width=s.right-s.left,s.height=s.bottom-s.top,s.height!==0&&s.width!==0&&r.push(s)}return r}function Xt(i,e){const t=Math.max(i.left,e.left),r=Math.min(i.right,e.right),s=Math.max(i.top,e.top),n=Math.min(i.bottom,e.bottom);return{bottom:n,height:Math.max(0,n-s),left:t,right:r,top:s,width:Math.max(0,r-t)}}function Ze(i,e,t){return(i.left<e.right||t>=0&&M(i.left,e.right,t))&&(e.left<i.right||t>=0&&M(e.left,i.right,t))&&(i.top<e.bottom||t>=0&&M(i.top,e.bottom,t))&&(e.top<i.bottom||t>=0&&M(e.top,i.bottom,t))}function M(i,e,t){return Math.abs(i-e)<=t}var B=[],Gt=function(){return B.some(function(i){return i.activeTargets.length>0})},Yt=function(){return B.some(function(i){return i.skippedTargets.length>0})},Je="ResizeObserver loop completed with undelivered notifications.",Zt=function(){var i;typeof ErrorEvent=="function"?i=new ErrorEvent("error",{message:Je}):(i=document.createEvent("Event"),i.initEvent("error",!1,!1),i.message=Je),window.dispatchEvent(i)},Y;(function(i){i.BORDER_BOX="border-box",i.CONTENT_BOX="content-box",i.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(Y||(Y={}));var W=function(i){return Object.freeze(i)},Jt=function(){function i(e,t){this.inlineSize=e,this.blockSize=t,W(this)}return i}(),Ke=function(){function i(e,t,r,s){return this.x=e,this.y=t,this.width=r,this.height=s,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,W(this)}return i.prototype.toJSON=function(){var e=this,t=e.x,r=e.y,s=e.top,n=e.right,o=e.bottom,a=e.left,h=e.width,c=e.height;return{x:t,y:r,top:s,right:n,bottom:o,left:a,width:h,height:c}},i.fromRect=function(e){return new i(e.x,e.y,e.width,e.height)},i}(),we=function(i){return i instanceof SVGElement&&"getBBox"in i},Qe=function(i){if(we(i)){var e=i.getBBox(),t=e.width,r=e.height;return!t&&!r}var s=i,n=s.offsetWidth,o=s.offsetHeight;return!(n||o||i.getClientRects().length)},et=function(i){var e;if(i instanceof Element)return!0;var t=(e=i==null?void 0:i.ownerDocument)===null||e===void 0?void 0:e.defaultView;return!!(t&&i instanceof t.Element)},Kt=function(i){switch(i.tagName){case"INPUT":if(i.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},Z=typeof window<"u"?window:{},se=new WeakMap,tt=/auto|scroll/,Qt=/^tb|vertical/,ei=/msie|trident/i.test(Z.navigator&&Z.navigator.userAgent),L=function(i){return parseFloat(i||"0")},q=function(i,e,t){return i===void 0&&(i=0),e===void 0&&(e=0),t===void 0&&(t=!1),new Jt((t?e:i)||0,(t?i:e)||0)},it=W({devicePixelContentBoxSize:q(),borderBoxSize:q(),contentBoxSize:q(),contentRect:new Ke(0,0,0,0)}),rt=function(i,e){if(e===void 0&&(e=!1),se.has(i)&&!e)return se.get(i);if(Qe(i))return se.set(i,it),it;var t=getComputedStyle(i),r=we(i)&&i.ownerSVGElement&&i.getBBox(),s=!ei&&t.boxSizing==="border-box",n=Qt.test(t.writingMode||""),o=!r&&tt.test(t.overflowY||""),a=!r&&tt.test(t.overflowX||""),h=r?0:L(t.paddingTop),c=r?0:L(t.paddingRight),d=r?0:L(t.paddingBottom),p=r?0:L(t.paddingLeft),u=r?0:L(t.borderTopWidth),f=r?0:L(t.borderRightWidth),v=r?0:L(t.borderBottomWidth),g=r?0:L(t.borderLeftWidth),y=p+c,x=h+d,O=g+f,m=u+v,E=a?i.offsetHeight-m-i.clientHeight:0,A=o?i.offsetWidth-O-i.clientWidth:0,he=s?y+O:0,ce=s?x+m:0,k=r?r.width:L(t.width)-he-A,U=r?r.height:L(t.height)-ce-E,de=k+y+A+O,ue=U+x+E+m,_=W({devicePixelContentBoxSize:q(Math.round(k*devicePixelRatio),Math.round(U*devicePixelRatio),n),borderBoxSize:q(de,ue,n),contentBoxSize:q(k,U,n),contentRect:new Ke(p,h,k,U)});return se.set(i,_),_},st=function(i,e,t){var r=rt(i,t),s=r.borderBoxSize,n=r.contentBoxSize,o=r.devicePixelContentBoxSize;switch(e){case Y.DEVICE_PIXEL_CONTENT_BOX:return o;case Y.BORDER_BOX:return s;default:return n}},ti=function(){function i(e){var t=rt(e);this.target=e,this.contentRect=t.contentRect,this.borderBoxSize=W([t.borderBoxSize]),this.contentBoxSize=W([t.contentBoxSize]),this.devicePixelContentBoxSize=W([t.devicePixelContentBoxSize])}return i}(),nt=function(i){if(Qe(i))return 1/0;for(var e=0,t=i.parentNode;t;)e+=1,t=t.parentNode;return e},ii=function(){var i=1/0,e=[];B.forEach(function(o){if(o.activeTargets.length!==0){var a=[];o.activeTargets.forEach(function(c){var d=new ti(c.target),p=nt(c.target);a.push(d),c.lastReportedSize=st(c.target,c.observedBox),p<i&&(i=p)}),e.push(function(){o.callback.call(o.observer,a,o.observer)}),o.activeTargets.splice(0,o.activeTargets.length)}});for(var t=0,r=e;t<r.length;t++){var s=r[t];s()}return i},ot=function(i){B.forEach(function(t){t.activeTargets.splice(0,t.activeTargets.length),t.skippedTargets.splice(0,t.skippedTargets.length),t.observationTargets.forEach(function(s){s.isActive()&&(nt(s.target)>i?t.activeTargets.push(s):t.skippedTargets.push(s))})})},ri=function(){var i=0;for(ot(i);Gt();)i=ii(),ot(i);return Yt()&&Zt(),i>0},Te,at=[],si=function(){return at.splice(0).forEach(function(i){return i()})},ni=function(i){if(!Te){var e=0,t=document.createTextNode(""),r={characterData:!0};new MutationObserver(function(){return si()}).observe(t,r),Te=function(){t.textContent="".concat(e?e--:e++)}}at.push(i),Te()},oi=function(i){ni(function(){requestAnimationFrame(i)})},ne=0,ai=function(){return!!ne},li=250,hi={attributes:!0,characterData:!0,childList:!0,subtree:!0},lt=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],ht=function(i){return i===void 0&&(i=0),Date.now()+i},Se=!1,ci=function(){function i(){var e=this;this.stopped=!0,this.listener=function(){return e.schedule()}}return i.prototype.run=function(e){var t=this;if(e===void 0&&(e=li),!Se){Se=!0;var r=ht(e);oi(function(){var s=!1;try{s=ri()}finally{if(Se=!1,e=r-ht(),!ai())return;s?t.run(1e3):e>0?t.run(e):t.start()}})}},i.prototype.schedule=function(){this.stop(),this.run()},i.prototype.observe=function(){var e=this,t=function(){return e.observer&&e.observer.observe(document.body,hi)};document.body?t():Z.addEventListener("DOMContentLoaded",t)},i.prototype.start=function(){var e=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),lt.forEach(function(t){return Z.addEventListener(t,e.listener,!0)}))},i.prototype.stop=function(){var e=this;this.stopped||(this.observer&&this.observer.disconnect(),lt.forEach(function(t){return Z.removeEventListener(t,e.listener,!0)}),this.stopped=!0)},i}(),Ce=new ci,ct=function(i){!ne&&i>0&&Ce.start(),ne+=i,!ne&&Ce.stop()},di=function(i){return!we(i)&&!Kt(i)&&getComputedStyle(i).display==="inline"},ui=function(){function i(e,t){this.target=e,this.observedBox=t||Y.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return i.prototype.isActive=function(){var e=st(this.target,this.observedBox,!0);return di(this.target)&&(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},i}(),pi=function(){function i(e,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=e,this.callback=t}return i}(),oe=new WeakMap,dt=function(i,e){for(var t=0;t<i.length;t+=1)if(i[t].target===e)return t;return-1},ae=function(){function i(){}return i.connect=function(e,t){var r=new pi(e,t);oe.set(e,r)},i.observe=function(e,t,r){var s=oe.get(e),n=s.observationTargets.length===0;dt(s.observationTargets,t)<0&&(n&&B.push(s),s.observationTargets.push(new ui(t,r&&r.box)),ct(1),Ce.schedule())},i.unobserve=function(e,t){var r=oe.get(e),s=dt(r.observationTargets,t),n=r.observationTargets.length===1;s>=0&&(n&&B.splice(B.indexOf(r),1),r.observationTargets.splice(s,1),ct(-1))},i.disconnect=function(e){var t=this,r=oe.get(e);r.observationTargets.slice().forEach(function(s){return t.unobserve(e,s.target)}),r.activeTargets.splice(0,r.activeTargets.length)},i}(),ut=function(){function i(e){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof e!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");ae.connect(this,e)}return i.prototype.observe=function(e,t){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!et(e))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");ae.observe(this,e,t)},i.prototype.unobserve=function(e){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!et(e))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");ae.unobserve(this,e)},i.prototype.disconnect=function(){ae.disconnect(this)},i.toString=function(){return"function ResizeObserver () { [polyfill code] }"},i}();function fi(i,e){return i.document.documentElement.style.getPropertyValue(e)}function Oe(i,e,t){i.document.documentElement.style.setProperty(e,t)}function pt(i,e){i.document.documentElement.style.removeProperty(e)}const mi=window.ResizeObserver||ut;var ft=(i=>(i.Wrap="wrap",i.Viewport="viewport",i.Bounds="bounds",i.Page="page",i))(ft||{}),mt=(i=>(i.Boxes="boxes",i.Bounds="bounds",i))(mt||{});const gi="Highlight"in window,gt=["IMG","IMAGE","AUDIO","VIDEO","SVG"];class vi{constructor(e,t,r,s){this.wnd=e,this.comms=t,this.id=r,this.name=s,this.items=[],this.lastItemId=0,this.container=void 0,this.activateable=!1,this.experimentalHighlights=!1,this.currentRender=0,gi&&(this.experimentalHighlights=!0,this.notTextFlag=new Map)}get activeable(){return this.activateable}set activeable(e){this.activateable=e}add(e){var o,a,h,c;const t=`${this.id}-${this.lastItemId++}`,r=xe(this.wnd.document,e.locator);if(!r){this.comms.log("Can't locate DOM range for decoration",e);return}const s=r.commonAncestorContainer;s.nodeType!==Node.TEXT_NODE&&this.experimentalHighlights&&(gt.includes(s.nodeName.toUpperCase())&&((o=this.notTextFlag)==null||o.set(t,!0)),s.querySelector(gt.join(", ").toLowerCase())&&((a=this.notTextFlag)==null||a.set(t,!0)),(((h=s.textContent)==null?void 0:h.trim())||"").length===0&&((c=this.notTextFlag)==null||c.set(t,!0)));const n={decoration:e,id:t,range:r};this.items.push(n),this.layout(n),this.renderLayout([n])}remove(e){var s,n;const t=this.items.findIndex(o=>o.decoration.id===e);if(t<0)return;const r=this.items[t];if(this.items.splice(t,1),r.clickableElements=void 0,r.container&&(r.container.remove(),r.container=void 0),this.experimentalHighlights&&!((s=this.notTextFlag)!=null&&s.has(r.id))){const o=this.wnd.CSS.highlights.get(this.id);o==null||o.delete(r.range)}(n=this.notTextFlag)==null||n.delete(r.id)}update(e){this.remove(e.id),this.add(e)}clear(){var e;this.clearContainer(),this.items.length=0,(e=this.notTextFlag)==null||e.clear()}requestLayout(){this.wnd.cancelAnimationFrame(this.currentRender),this.clearContainer(),this.items.forEach(e=>this.layout(e)),this.renderLayout(this.items)}experimentalLayout(e){var s,n;const[t,r]=this.requireContainer(!0);r.add(e.range),t.innerHTML=`
1
+ (function(w,G){typeof exports=="object"&&typeof module<"u"?G(exports):typeof define=="function"&&define.amd?define(["exports"],G):(w=typeof globalThis<"u"?globalThis:w||self,G(w["navigator-html-injectables"]={}))})(this,function(w){"use strict";const G=Math.pow(2,32),ze=()=>Math.round(Math.random()*G).toString(36),De=()=>`${Math.round(performance.now())}-${ze()}-${ze()}`,V=1;class Be{constructor(e){this.destination=null,this.registrar=new Map,this.origin="",this.channelId="",this.receiver=this.receive.bind(this),this.preLog=[],this.wnd=e,e.addEventListener("message",this.receiver)}receive(e){if(e.source===null)throw Error("Event source is null");if(typeof e.data!="object")return;const t=e.data;if(!(!("_readium"in t)||!t._readium||t._readium<=0)){if(t.key==="_ping"){if(!this.destination){if(this.destination=e.source,this.origin=e.origin,this.channelId=t._channel,t._readium!==V){t._readium>V?this.send("error",`received comms version ${t._readium} higher than ${V}`):this.send("error",`received comms version ${t._readium} lower than ${V}`),this.destination=null,this.origin="",this.channelId="";return}this.send("_pong",void 0),this.preLog.forEach(r=>this.send("log",r)),this.preLog=[]}return}else if(this.channelId){if(t._channel!==this.channelId||e.origin!==this.origin)return}else return;this.handle(t)}}handle(e){const t=this.registrar.get(e.key);if(!t||t.length===0){e.strict&&this.send("_unhandled",e);return}t.forEach(r=>r.cb(e.data,n=>{this.send("_ack",n,e.id)}))}register(e,t,r){Array.isArray(e)||(e=[e]),e.forEach(n=>{const s=this.registrar.get(n);if(s&&s.length>=0){if(s.find(a=>a.module===t))throw new Error(`Trying to register another callback for combination of event ${n} and module ${t}`);s.push({cb:r,module:t}),this.registrar.set(n,s)}else this.registrar.set(n,[{cb:r,module:t}])})}unregister(e,t){Array.isArray(e)||(e=[e]),e.forEach(r=>{const n=this.registrar.get(r);!n||n.length===0||n.splice(n.findIndex(s=>s.module===t),1)})}unregisterAll(e){this.registrar.forEach((t,r)=>this.registrar.set(r,t.filter(n=>n.module!==e)))}log(...e){this.destination?this.send("log",e):this.preLog.push(e)}get ready(){return!!this.destination}destroy(){this.destination=null,this.channelId="",this.preLog=[],this.registrar.clear(),this.wnd.removeEventListener("message",this.receiver)}send(e,t,r=void 0,n=[]){if(!this.destination)throw Error("Attempted to send comms message before destination has been initialized");const s={_readium:V,_channel:this.channelId,id:r??De(),key:e,data:t};try{this.destination.postMessage(s,{targetOrigin:this.origin,transfer:n})}catch(o){if(n.length>0)throw o;this.destination.postMessage(s,this.origin,n)}}}class me{constructor(e){this.algorithm=e.algorithm,this.compression=e.compression,this.originalLength=e.originalLength,this.profile=e.profile,this.scheme=e.scheme}static deserialize(e){if(e&&e.algorithm)return new me({algorithm:e.algorithm,compression:e.compression,originalLength:e.originalLength,profile:e.profile,scheme:e.scheme})}serialize(){const e={algorithm:this.algorithm};return this.compression!==void 0&&(e.compression=this.compression),this.originalLength!==void 0&&(e.originalLength=this.originalLength),this.profile!==void 0&&(e.profile=this.profile),this.scheme!==void 0&&(e.scheme=this.scheme),e}}class b{constructor(e){this.otherProperties=e}static deserialize(e){if(e)return new b(e)}serialize(){return this.otherProperties}add(e){const t=Object.assign({},this.otherProperties);for(const r in e)t[r]=e[r];return new b(t)}}Object.defineProperty(b.prototype,"encryption",{get:function(){return me.deserialize(this.otherProperties.encrypted)}}),b.prototype.getContains=function(){return new Set(this.otherProperties.contains||[])},b.prototype.getLayout=function(){return this.otherProperties.layout};class l{constructor(e){let t,r,n=e.mediaType.replace(/\s/g,"").split(";");const s=n[0].split("/");if(s.length===2){if(t=s[0].toLowerCase().trim(),r=s[1].toLowerCase().trim(),t.length===0||r.length===0)throw new Error("Invalid media type")}else throw new Error("Invalid media type");const o={};for(let d=1;d<n.length;d++){const f=n[d].split("=");if(f.length===2){const v=f[0].toLocaleLowerCase(),g=v==="charset"?f[1].toUpperCase():f[1];o[v]=g}}const a={},h=Object.keys(o);h.sort((d,f)=>d.localeCompare(f)),h.forEach(d=>a[d]=o[d]);let c="";for(const d in a){const f=a[d];c+=`;${d}=${f}`}const u=`${t}/${r}${c}`,p=a.encoding;this.string=u,this.type=t,this.subtype=r,this.parameters=a,this.encoding=p,this.name=e.name,this.fileExtension=e.fileExtension}static parse(e){return new l(e)}get structuredSyntaxSuffix(){const e=this.subtype.split("+");return e.length>1?`+${e[e.length-1]}`:void 0}get charset(){return this.parameters.charset}contains(e){const t=typeof e=="string"?l.parse({mediaType:e}):e;if(!((this.type==="*"||this.type===t.type)&&(this.subtype==="*"||this.subtype===t.subtype)))return!1;const r=new Set(Object.entries(this.parameters).map(([s,o])=>`${s}=${o}`)),n=new Set(Object.entries(t.parameters).map(([s,o])=>`${s}=${o}`));for(const s of Array.from(r.values()))if(!n.has(s))return!1;return!0}matches(e){const t=typeof e=="string"?l.parse({mediaType:e}):e;return this.contains(t)||t.contains(this)}matchesAny(...e){for(const t of e)if(this.matches(t))return!0;return!1}equals(e){return this.string===e.string}get isZIP(){return this.matchesAny(l.ZIP,l.LCP_PROTECTED_AUDIOBOOK,l.LCP_PROTECTED_PDF)||this.structuredSyntaxSuffix==="+zip"}get isJSON(){return this.matchesAny(l.JSON)||this.structuredSyntaxSuffix==="+json"}get isOPDS(){return this.matchesAny(l.OPDS1,l.OPDS1_ENTRY,l.OPDS2,l.OPDS2_PUBLICATION,l.OPDS_AUTHENTICATION)||this.structuredSyntaxSuffix==="+json"}get isHTML(){return this.matchesAny(l.HTML,l.XHTML)}get isBitmap(){return this.matchesAny(l.BMP,l.GIF,l.JPEG,l.PNG,l.TIFF,l.WEBP)}get isAudio(){return this.type==="audio"}get isVideo(){return this.type==="video"}get isRWPM(){return this.matchesAny(l.READIUM_AUDIOBOOK_MANIFEST,l.DIVINA_MANIFEST,l.READIUM_WEBPUB_MANIFEST)}get isPublication(){return this.matchesAny(l.READIUM_AUDIOBOOK,l.READIUM_AUDIOBOOK_MANIFEST,l.CBZ,l.DIVINA,l.DIVINA_MANIFEST,l.EPUB,l.LCP_PROTECTED_AUDIOBOOK,l.LCP_PROTECTED_PDF,l.LPF,l.PDF,l.W3C_WPUB_MANIFEST,l.READIUM_WEBPUB,l.READIUM_WEBPUB_MANIFEST,l.ZAB)}static get AAC(){return l.parse({mediaType:"audio/aac",fileExtension:"aac"})}static get ACSM(){return l.parse({mediaType:"application/vnd.adobe.adept+xml",name:"Adobe Content Server Message",fileExtension:"acsm"})}static get AIFF(){return l.parse({mediaType:"audio/aiff",fileExtension:"aiff"})}static get AVI(){return l.parse({mediaType:"video/x-msvideo",fileExtension:"avi"})}static get BINARY(){return l.parse({mediaType:"application/octet-stream"})}static get BMP(){return l.parse({mediaType:"image/bmp",fileExtension:"bmp"})}static get CBZ(){return l.parse({mediaType:"application/vnd.comicbook+zip",name:"Comic Book Archive",fileExtension:"cbz"})}static get CSS(){return l.parse({mediaType:"text/css",fileExtension:"css"})}static get DIVINA(){return l.parse({mediaType:"application/divina+zip",name:"Digital Visual Narratives",fileExtension:"divina"})}static get DIVINA_MANIFEST(){return l.parse({mediaType:"application/divina+json",name:"Digital Visual Narratives",fileExtension:"json"})}static get EPUB(){return l.parse({mediaType:"application/epub+zip",name:"EPUB",fileExtension:"epub"})}static get GIF(){return l.parse({mediaType:"image/gif",fileExtension:"gif"})}static get GZ(){return l.parse({mediaType:"application/gzip",fileExtension:"gz"})}static get HTML(){return l.parse({mediaType:"text/html",fileExtension:"html"})}static get JAVASCRIPT(){return l.parse({mediaType:"text/javascript",fileExtension:"js"})}static get JPEG(){return l.parse({mediaType:"image/jpeg",fileExtension:"jpeg"})}static get JSON(){return l.parse({mediaType:"application/json"})}static get LCP_LICENSE_DOCUMENT(){return l.parse({mediaType:"application/vnd.readium.lcp.license.v1.0+json",name:"LCP License",fileExtension:"lcpl"})}static get LCP_PROTECTED_AUDIOBOOK(){return l.parse({mediaType:"application/audiobook+lcp",name:"LCP Protected Audiobook",fileExtension:"lcpa"})}static get LCP_PROTECTED_PDF(){return l.parse({mediaType:"application/pdf+lcp",name:"LCP Protected PDF",fileExtension:"lcpdf"})}static get LCP_STATUS_DOCUMENT(){return l.parse({mediaType:"application/vnd.readium.license.status.v1.0+json"})}static get LPF(){return l.parse({mediaType:"application/lpf+zip",fileExtension:"lpf"})}static get MP3(){return l.parse({mediaType:"audio/mpeg",fileExtension:"mp3"})}static get MPEG(){return l.parse({mediaType:"video/mpeg",fileExtension:"mpeg"})}static get NCX(){return l.parse({mediaType:"application/x-dtbncx+xml",fileExtension:"ncx"})}static get OGG(){return l.parse({mediaType:"audio/ogg",fileExtension:"oga"})}static get OGV(){return l.parse({mediaType:"video/ogg",fileExtension:"ogv"})}static get OPDS1(){return l.parse({mediaType:"application/atom+xml;profile=opds-catalog"})}static get OPDS1_ENTRY(){return l.parse({mediaType:"application/atom+xml;type=entry;profile=opds-catalog"})}static get OPDS2(){return l.parse({mediaType:"application/opds+json"})}static get OPDS2_PUBLICATION(){return l.parse({mediaType:"application/opds-publication+json"})}static get OPDS_AUTHENTICATION(){return l.parse({mediaType:"application/opds-authentication+json"})}static get OPUS(){return l.parse({mediaType:"audio/opus",fileExtension:"opus"})}static get OTF(){return l.parse({mediaType:"font/otf",fileExtension:"otf"})}static get PDF(){return l.parse({mediaType:"application/pdf",name:"PDF",fileExtension:"pdf"})}static get PNG(){return l.parse({mediaType:"image/png",fileExtension:"png"})}static get READIUM_AUDIOBOOK(){return l.parse({mediaType:"application/audiobook+zip",name:"Readium Audiobook",fileExtension:"audiobook"})}static get READIUM_AUDIOBOOK_MANIFEST(){return l.parse({mediaType:"application/audiobook+json",name:"Readium Audiobook",fileExtension:"json"})}static get READIUM_CONTENT_DOCUMENT(){return l.parse({mediaType:"application/vnd.readium.content+json",name:"Readium Content Document",fileExtension:"json"})}static get READIUM_GUIDED_NAVIGATION_DOCUMENT(){return l.parse({mediaType:"application/guided-navigation+json",name:"Readium Guided Navigation Document",fileExtension:"json"})}static get READIUM_POSITION_LIST(){return l.parse({mediaType:"application/vnd.readium.position-list+json",name:"Readium Position List",fileExtension:"json"})}static get READIUM_WEBPUB(){return l.parse({mediaType:"application/webpub+zip",name:"Readium Web Publication",fileExtension:"webpub"})}static get READIUM_WEBPUB_MANIFEST(){return l.parse({mediaType:"application/webpub+json",name:"Readium Web Publication",fileExtension:"json"})}static get SMIL(){return l.parse({mediaType:"application/smil+xml",fileExtension:"smil"})}static get SVG(){return l.parse({mediaType:"image/svg+xml",fileExtension:"svg"})}static get TEXT(){return l.parse({mediaType:"text/plain",fileExtension:"txt"})}static get TIFF(){return l.parse({mediaType:"image/tiff",fileExtension:"tiff"})}static get TTF(){return l.parse({mediaType:"font/ttf",fileExtension:"ttf"})}static get W3C_WPUB_MANIFEST(){return l.parse({mediaType:"application/x.readium.w3c.wpub+json",name:"Web Publication",fileExtension:"json"})}static get WAV(){return l.parse({mediaType:"audio/wav",fileExtension:"wav"})}static get WEBM_AUDIO(){return l.parse({mediaType:"audio/webm",fileExtension:"webm"})}static get WEBM_VIDEO(){return l.parse({mediaType:"video/webm",fileExtension:"webm"})}static get WEBP(){return l.parse({mediaType:"image/webp",fileExtension:"webp"})}static get WOFF(){return l.parse({mediaType:"font/woff",fileExtension:"woff"})}static get WOFF2(){return l.parse({mediaType:"font/woff2",fileExtension:"woff2"})}static get XHTML(){return l.parse({mediaType:"application/xhtml+xml",fileExtension:"xhtml"})}static get XML(){return l.parse({mediaType:"application/xml",fileExtension:"xml"})}static get ZAB(){return l.parse({mediaType:"application/x.readium.zab+zip",name:"Zipped Audio Book",fileExtension:"zab"})}static get ZIP(){return l.parse({mediaType:"application/zip",fileExtension:"zip"})}}class We{constructor(e){this.uri=e,this.parameters=this.getParameters(e)}getParameters(e){const t=/\{\??([^}]+)\}/g,r=e.match(t);return r?new Set(r.join(",").replace(t,"$1").split(",").map(n=>n.trim())):new Set}expand(e){const t=n=>n.split(",").map(s=>{const o=e[s];return o?encodeURIComponent(o):""}).join(","),r=n=>"?"+n.split(",").map(s=>{const o=s.split("=")[0],a=e[o];return a?`${o}=${encodeURIComponent(a)}`:""}).join("&");return this.uri.replace(/\{(\??)([^}]+)\}/g,(...n)=>n[1]?r(n[2]):t(n[2]))}}function kt(i){return i&&i instanceof Array?i:void 0}function Fe(i){return i&&typeof i=="string"?[i]:kt(i)}function ke(i){return typeof i=="string"?new Date(i):void 0}function ee(i){return isNaN(i)?void 0:i}function C(i){return ee(i)!==void 0&&Math.sign(i)>=0?i:void 0}function Ut(i){const e=new Array;return i.forEach(t=>e.push(t)),e}class T{constructor(e){this.fragments=e.fragments?e.fragments:new Array,this.progression=e.progression,this.totalProgression=e.totalProgression,this.position=e.position,this.otherLocations=e.otherLocations}static deserialize(e){if(!e)return;const t=ee(e.progression),r=ee(e.totalProgression),n=ee(e.position),s=new Map,o=new Set(["fragment","fragments","progression","totalProgression","position"]);return Object.entries(e).forEach(([a,h])=>{o.has(a)||s.set(a,h)}),new T({fragments:Fe(e.fragments||e.fragment),progression:t!==void 0&&t>=0&&t<=1?t:void 0,totalProgression:r!==void 0&&r>=0&&r<=1?r:void 0,position:n!==void 0&&n>0?n:void 0,otherLocations:s.size===0?void 0:s})}serialize(){const e={};return this.fragments&&(e.fragments=this.fragments),this.progression!==void 0&&(e.progression=this.progression),this.totalProgression!==void 0&&(e.totalProgression=this.totalProgression),this.position!==void 0&&(e.position=this.position),this.otherLocations&&this.otherLocations.forEach((t,r)=>e[r]=t),e}}class _{constructor(e){this.after=e.after,this.before=e.before,this.highlight=e.highlight}static deserialize(e){if(e)return new _({after:e.after,before:e.before,highlight:e.highlight})}serialize(){const e={};return this.after!==void 0&&(e.after=this.after),this.before!==void 0&&(e.before=this.before),this.highlight!==void 0&&(e.highlight=this.highlight),e}}class z{constructor(e){this.href=e.href,this.type=e.type,this.title=e.title,this.locations=e.locations?e.locations:new T({}),this.text=e.text}static deserialize(e){if(e&&e.href&&e.type)return new z({href:e.href,type:e.type,title:e.title,locations:T.deserialize(e.locations),text:_.deserialize(e.text)})}serialize(){const e={href:this.href,type:this.type};return this.title!==void 0&&(e.title=this.title),this.locations&&(e.locations=this.locations.serialize()),this.text&&(e.text=this.text.serialize()),e}copyWithLocations(e){return new z({href:this.href,type:this.type,title:this.title,text:this.text,locations:new T({...this.locations,...e})})}}class q{constructor(e){this.href=e.href,this.templated=e.templated,this.type=e.type,this.title=e.title,this.rels=e.rels,this.properties=e.properties,this.height=e.height,this.width=e.width,this.duration=e.duration,this.bitrate=e.bitrate,this.languages=e.languages,this.alternates=e.alternates,this.children=e.children}static deserialize(e){if(e&&e.href&&typeof e.href=="string")return new q({href:e.href,templated:e.templated,type:e.type,title:e.title,rels:e.rel?e.rel instanceof Array?new Set(e.rel):new Set([e.rel]):void 0,properties:b.deserialize(e.properties),height:C(e.height),width:C(e.width),duration:C(e.duration),bitrate:C(e.bitrate),languages:Fe(e.language),alternates:te.deserialize(e.alternate),children:te.deserialize(e.children)})}serialize(){const e={href:this.href};return this.templated!==void 0&&(e.templated=this.templated),this.type!==void 0&&(e.type=this.type),this.title!==void 0&&(e.title=this.title),this.rels&&(e.rel=Ut(this.rels)),this.properties&&(e.properties=this.properties.serialize()),this.height!==void 0&&(e.height=this.height),this.width!==void 0&&(e.width=this.width),this.duration!==void 0&&(e.duration=this.duration),this.bitrate!==void 0&&(e.bitrate=this.bitrate),this.languages&&(e.language=this.languages),this.alternates&&(e.alternate=this.alternates.serialize()),this.children&&(e.children=this.children.serialize()),e}get mediaType(){return this.type!==void 0?l.parse({mediaType:this.type}):l.BINARY}toURL(e){const t=this.href.replace(/^(\/)/,"");if(t.length===0)return;let r=e||"/";return r.startsWith("/")&&(r="file://"+r),new URL(t,r).href.replace(/^(file:\/\/)/,"")}get templateParameters(){return this.templated?new We(this.href).parameters:new Set}expandTemplate(e){return new q({href:new We(this.href).expand(e),templated:!1})}addProperties(e){var t;const r=q.deserialize(this.serialize());return r.properties=r.properties?(t=r.properties)==null?void 0:t.add(e):new b(e),r}get locator(){let e=this.href.split("#");return new z({href:e.length>0&&e[0]!==void 0?e[0]:this.href,type:this.type??"",title:this.title,locations:new T({fragments:e.length>1&&e[1]!==void 0?[e[1]]:[]})})}}class te{constructor(e){this.items=e}static deserialize(e){if(e&&e instanceof Array)return new te(e.map(t=>q.deserialize(t)).filter(t=>t!==void 0))}serialize(){return this.items.map(e=>e.serialize())}findWithRel(e){const t=r=>r.rels&&r.rels.has(e);return this.items.find(t)}filterByRel(e){const t=r=>r.rels&&r.rels.has(e);return this.items.filter(t)}findWithHref(e){const t=r=>r.href===e;return this.items.find(t)}findIndexWithHref(e){const t=r=>r.href===e;return this.items.findIndex(t)}findWithMediaType(e){const t=r=>r.mediaType.matches(e);return this.items.find(t)}filterByMediaType(e){const t=r=>r.mediaType.matches(e);return this.items.filter(t)}filterByMediaTypes(e){const t=r=>{for(const n of e)if(r.mediaType.matches(n))return!0;return!1};return this.items.filter(t)}everyIsAudio(){const e=t=>t.mediaType.isAudio;return this.items.length>0&&this.items.every(e)}everyIsBitmap(){const e=t=>t.mediaType.isBitmap;return this.items.length>0&&this.items.every(e)}everyIsHTML(){const e=t=>t.mediaType.isHTML;return this.items.length>0&&this.items.every(e)}everyIsVideo(){const e=t=>t.mediaType.isVideo;return this.items.length>0&&this.items.every(e)}everyMatchesMediaType(e){return Array.isArray(e)?this.items.length>0&&this.items.every(t=>{for(const r of e)return t.mediaType.matches(r);return!1}):this.items.length>0&&this.items.every(t=>t.mediaType.matches(e))}filterLinksHasType(){return this.items.filter(e=>e.type)}}class ie{constructor(e){this.cssSelector=e.cssSelector,this.textNodeIndex=e.textNodeIndex,this.charOffset=e.charOffset}static deserialize(e){if(!(e&&e.cssSelector))return;let t=C(e.textNodeIndex);if(t===void 0)return;let r=C(e.charOffset);return r===void 0&&(r=C(e.offset)),new ie({cssSelector:e.cssSelector,textNodeIndex:t,charOffset:r})}serialize(){const e={cssSelector:this.cssSelector,textNodeIndex:this.textNodeIndex};return this.charOffset!==void 0&&(e.charOffset=this.charOffset),e}}class ge{constructor(e){this.start=e.start,this.end=e.end}static deserialize(e){if(!e)return;let t=ie.deserialize(e.start);if(t)return new ge({start:t,end:ie.deserialize(e.end)})}serialize(){const e={start:this.start.serialize()};return this.end&&(e.end=this.end.serialize()),e}}T.prototype.getCssSelector=function(){var i;return(i=this.otherLocations)==null?void 0:i.get("cssSelector")},T.prototype.getPartialCfi=function(){var i;return(i=this.otherLocations)==null?void 0:i.get("partialCfi")},T.prototype.getDomRange=function(){var i;return ge.deserialize((i=this.otherLocations)==null?void 0:i.get("domRange"))},T.prototype.fragmentParameters=function(){return new Map(this.fragments.map(i=>i.startsWith("#")?i.slice(1):i).join("&").split("&").filter(i=>!i.startsWith("#")).map(i=>i.split("=")).filter(i=>i.length===2).map(i=>[i[0].trim().toLowerCase(),i[1].trim()]))},T.prototype.htmlId=function(){if(!this.fragments.length)return;let i=this.fragments.find(e=>e.length&&!e.includes("="));if(!i){const e=this.fragmentParameters();e.has("id")?i=e.get("id"):e.has("name")&&(i=e.get("name"))}return i!=null&&i.startsWith("#")?i.slice(1):i},T.prototype.page=function(){const i=parseInt(this.fragmentParameters().get("page"));if(!isNaN(i)&&i>=0)return i},T.prototype.time=function(){const i=parseInt(this.fragmentParameters().get("t"));if(!isNaN(i))return i},T.prototype.space=function(){const i=this.fragmentParameters();if(!i.has("xywh"))return;const e=i.get("xywh").split(",").map(t=>parseInt(t));if(e.length===4&&!e.some(isNaN))return e};class ve{constructor(e){this.currency=e.currency,this.value=e.value}static deserialize(e){if(!e)return;let t=e.currency;if(!(t&&typeof t=="string"&&t.length>0))return;let r=C(e.value);if(r!==void 0)return new ve({currency:t,value:r})}serialize(){return{currency:this.currency,value:this.value}}}class Y{constructor(e){this.type=e.type,this.children=e.children}static deserialize(e){if(e&&e.type)return new Y({type:e.type,children:Y.deserializeArray(e.children)})}static deserializeArray(e){if(e instanceof Array)return e.map(t=>Y.deserialize(t)).filter(t=>t!==void 0)}serialize(){const e={type:this.type};return this.children&&(e.children=this.children.map(t=>t.serialize())),e}}class ye{constructor(e){this.total=e.total,this.position=e.position}static deserialize(e){if(e)return new ye({total:C(e.total),position:C(e.position)})}serialize(){const e={};return this.total!==void 0&&(e.total=this.total),this.position!==void 0&&(e.position=this.position),e}}class be{constructor(e){this.total=e.total,this.available=e.available}static deserialize(e){if(e)return new be({total:C(e.total),available:C(e.available)})}serialize(){const e={};return this.total!==void 0&&(e.total=this.total),this.available!==void 0&&(e.available=this.available),e}}class Ee{constructor(e){this.state=e.state,this.since=e.since,this.until=e.until}static deserialize(e){if(e&&e.state)return new Ee({state:e.state,since:ke(e.since),until:ke(e.until)})}serialize(){const e={state:this.state};return this.since!==void 0&&(e.since=this.since.toISOString()),this.until!==void 0&&(e.until=this.until.toISOString()),e}}b.prototype.getNumberOfItems=function(){return C(this.otherProperties.numberOfItems)},b.prototype.getPrice=function(){return ve.deserialize(this.otherProperties.price)},b.prototype.getIndirectAcquisitions=function(){const i=this.otherProperties.indirectAcquisition;if(i&&i instanceof Array)return i.map(e=>Y.deserialize(e)).filter(e=>e!==void 0)},b.prototype.getHolds=function(){return ye.deserialize(this.otherProperties.holds)},b.prototype.getCopies=function(){return be.deserialize(this.otherProperties.copies)},b.prototype.getAvailability=function(){return Ee.deserialize(this.otherProperties.availability)},b.prototype.getAuthenticate=function(){return q.deserialize(this.otherProperties.authenticate)},b.prototype.getClipped=function(){return this.otherProperties.clipped},b.prototype.getFit=function(){return this.otherProperties.fit},b.prototype.getOrientation=function(){return this.otherProperties.orientation},b.prototype.getOverflow=function(){return this.otherProperties.overflow},b.prototype.getPage=function(){return this.otherProperties.page||void 0},b.prototype.getSpread=function(){return this.otherProperties.spread||void 0};var D;(function(i){i.NONE="none",i.DESCENDANT="descendant",i.CHILD="child"})(D||(D={}));var N;(function(i){i.id="id",i.class="class",i.tag="tag",i.attribute="attribute",i.nthchild="nthchild",i.nthoftype="nthoftype"})(N||(N={}));const Ht="CssSelectorGenerator";function Ue(i="unknown problem",...e){console.warn(`${Ht}: ${i}`,...e)}N.id,N.class,N.tag,N.attribute,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY;function $t(i){return i instanceof RegExp}function Vt(i){return i.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".+")}function _t(i){const e=i.map(t=>{if($t(t))return r=>t.test(r);if(typeof t=="function")return r=>{const n=t(r);return typeof n!="boolean"?(Ue("pattern matcher function invalid","Provided pattern matching function does not return boolean. It's result will be ignored.",t),!1):n};if(typeof t=="string"){const r=new RegExp("^"+Vt(t)+"$");return n=>r.test(n)}return Ue("pattern matcher invalid","Pattern matching only accepts strings, regular expressions and/or functions. This item is invalid and will be ignored.",t),()=>!1});return t=>e.some(r=>r(t))}const qt="",jt=" > ",Xt=" ";D.NONE+"",D.NONE,D.DESCENDANT+"",D.DESCENDANT,D.CHILD+"",D.CHILD,N.nthoftype,N.tag,N.id,N.class,N.attribute,N.nthchild,_t(["class","id","ng-*"]);class J{}function He(i){return i.split("").reverse().join("")}function Gt(i,e,t){const r=He(e);return t.map(n=>{const s=Math.max(0,n.end-e.length-n.errors),o=He(i.slice(s,n.end));return{start:Ve(o,r,n.errors).reduce((h,c)=>n.end-c.end<h?n.end-c.end:h,n.end),end:n.end,errors:n.errors}})}function xe(i){return(i|-i)>>31&1}function $e(i,e,t,r){let n=i.P[t],s=i.M[t];const o=r>>>31,a=e[t]|o,h=a|s,c=(a&n)+n^n|a;let u=s|~(c|n),p=n&c;const d=xe(u&i.lastRowMask[t])-xe(p&i.lastRowMask[t]);return u<<=1,p<<=1,p|=o,u|=xe(r)-o,n=p|~(h|u),s=u&h,i.P[t]=n,i.M[t]=s,d}function Ve(i,e,t){if(e.length===0)return[];t=Math.min(t,e.length);const r=[],n=32,s=Math.ceil(e.length/n)-1,o={P:new Uint32Array(s+1),M:new Uint32Array(s+1),lastRowMask:new Uint32Array(s+1)};o.lastRowMask.fill(1<<31),o.lastRowMask[s]=1<<(e.length-1)%n;const a=new Uint32Array(s+1),h=new Map,c=[];for(let d=0;d<256;d++)c.push(a);for(let d=0;d<e.length;d+=1){const f=e.charCodeAt(d);if(h.has(f))continue;const v=new Uint32Array(s+1);h.set(f,v),f<c.length&&(c[f]=v);for(let g=0;g<=s;g+=1){v[g]=0;for(let y=0;y<n;y+=1){const x=g*n+y;if(x>=e.length)continue;e.charCodeAt(x)===f&&(v[g]|=1<<y)}}}let u=Math.max(0,Math.ceil(t/n)-1);const p=new Uint32Array(s+1);for(let d=0;d<=u;d+=1)p[d]=(d+1)*n;p[s]=e.length;for(let d=0;d<=u;d+=1)o.P[d]=-1,o.M[d]=0;for(let d=0;d<i.length;d+=1){const f=i.charCodeAt(d);let v;f<c.length?v=c[f]:(v=h.get(f),typeof v>"u"&&(v=a));let g=0;for(let y=0;y<=u;y+=1)g=$e(o,v,y,g),p[y]+=g;if(p[u]-g<=t&&u<s&&(v[u+1]&1||g<0)){u+=1,o.P[u]=-1,o.M[u]=0;let y;if(u===s){const x=e.length%n;y=x===0?n:x}else y=n;p[u]=p[u-1]+y-g+$e(o,v,u,g)}else for(;u>0&&p[u]>=t+n;)u-=1;u===s&&p[u]<=t&&(p[u]<t&&r.splice(0,r.length),r.push({start:-1,end:d+1,errors:p[u]}),t=p[u])}return r}function Yt(i,e,t){const r=Ve(i,e,t);return Gt(i,e,r)}function _e(i,e,t){let r=0;const n=[];for(;r!==-1;)r=i.indexOf(e,r),r!==-1&&(n.push({start:r,end:r+e.length,errors:0}),r+=1);return n.length>0?n:Yt(i,e,t)}function qe(i,e){return e.length===0||i.length===0?0:1-_e(i,e,e.length)[0].errors/e.length}function Jt(i,e,t={}){if(e.length===0)return null;const r=Math.min(256,e.length/2),n=_e(i,e,r);if(n.length===0)return null;const s=a=>{const d=1-a.errors/e.length,f=t.prefix?qe(i.slice(Math.max(0,a.start-t.prefix.length),a.start),t.prefix):1,v=t.suffix?qe(i.slice(a.end,a.end+t.suffix.length),t.suffix):1;let g=1;typeof t.hint=="number"&&(g=1-Math.abs(a.start-t.hint)/i.length);const y=50*d+20*f+20*v+2*g,x=50+20+20+2;return y/x},o=n.map(a=>({start:a.start,end:a.end,score:s(a)}));return o.sort((a,h)=>h.score-a.score),o[0]}function we(i,e,t){const r=t===1?e:e-1;if(i.charAt(r).trim()!=="")return e;let n,s;if(t===2?(n=i.substring(0,e),s=n.trimEnd()):(n=i.substring(e),s=n.trimStart()),!s.length)return-1;const o=n.length-s.length;return t===2?e-o:e+o}function je(i,e){const t=i.commonAncestorContainer.ownerDocument.createNodeIterator(i.commonAncestorContainer,NodeFilter.SHOW_TEXT),r=e===1?i.startContainer:i.endContainer,n=e===1?i.endContainer:i.startContainer;let s=t.nextNode();for(;s&&s!==r;)s=t.nextNode();e===2&&(s=t.previousNode());let o=-1;const a=()=>{if(s=e===1?t.nextNode():t.previousNode(),s){const h=s.textContent,c=e===1?0:h.length;o=we(h,c,e)}};for(;s&&o===-1&&s!==n;)a();if(s&&o>=0)return{node:s,offset:o};throw new RangeError("No text nodes with non-whitespace text found in range")}function Kt(i){if(!i.toString().trim().length)throw new RangeError("Range contains no non-whitespace text");if(i.startContainer.nodeType!==Node.TEXT_NODE)throw new RangeError("Range startContainer is not a text node");if(i.endContainer.nodeType!==Node.TEXT_NODE)throw new RangeError("Range endContainer is not a text node");const e=i.cloneRange();let t=!1,r=!1;const n={start:we(i.startContainer.textContent,i.startOffset,1),end:we(i.endContainer.textContent,i.endOffset,2)};if(n.start>=0&&(e.setStart(i.startContainer,n.start),t=!0),n.end>0&&(e.setEnd(i.endContainer,n.end),r=!0),t&&r)return e;if(!t){const{node:s,offset:o}=je(e,1);s&&o>=0&&e.setStart(s,o)}if(!r){const{node:s,offset:o}=je(e,2);s&&o>0&&e.setEnd(s,o)}return e}function Xe(i){var e;switch(i.nodeType){case Node.ELEMENT_NODE:case Node.TEXT_NODE:return((e=i.textContent)==null?void 0:e.length)??0;default:return 0}}function Ge(i){let e=i.previousSibling,t=0;for(;e;)t+=Xe(e),e=e.previousSibling;return t}function Ye(i,...e){let t=e.shift();const r=i.ownerDocument.createNodeIterator(i,NodeFilter.SHOW_TEXT),n=[];let s=r.nextNode(),o,a=0;for(;t!==void 0&&s;)o=s,a+o.data.length>t?(n.push({node:o,offset:t-a}),t=e.shift()):(s=r.nextNode(),a+=o.data.length);for(;t!==void 0&&o&&a===t;)n.push({node:o,offset:o.data.length}),t=e.shift();if(t!==void 0)throw new RangeError("Offset exceeds text length");return n}class L{constructor(e,t){if(t<0)throw new Error("Offset is invalid");this.element=e,this.offset=t}relativeTo(e){if(!e.contains(this.element))throw new Error("Parent is not an ancestor of current element");let t=this.element,r=this.offset;for(;t!==e;)r+=Ge(t),t=t.parentElement;return new L(t,r)}resolve(e={}){try{return Ye(this.element,this.offset)[0]}catch(t){if(this.offset===0&&e.direction!==void 0){const r=document.createTreeWalker(this.element.getRootNode(),NodeFilter.SHOW_TEXT);r.currentNode=this.element;const n=e.direction===1,s=n?r.nextNode():r.previousNode();if(!s)throw t;return{node:s,offset:n?0:s.data.length}}else throw t}}static fromCharOffset(e,t){switch(e.nodeType){case Node.TEXT_NODE:return L.fromPoint(e,t);case Node.ELEMENT_NODE:return new L(e,t);default:throw new Error("Node is not an element or text node")}}static fromPoint(e,t){switch(e.nodeType){case Node.TEXT_NODE:{if(t<0||t>e.data.length)throw new Error("Text node offset is out of range");if(!e.parentElement)throw new Error("Text node has no parent");const r=Ge(e)+t;return new L(e.parentElement,r)}case Node.ELEMENT_NODE:{if(t<0||t>e.childNodes.length)throw new Error("Child node offset is out of range");let r=0;for(let n=0;n<t;n++)r+=Xe(e.childNodes[n]);return new L(e,r)}default:throw new Error("Point is not in an element or text node")}}}class B{constructor(e,t){this.start=e,this.end=t}relativeTo(e){return new B(this.start.relativeTo(e),this.end.relativeTo(e))}toRange(){let e,t;this.start.element===this.end.element&&this.start.offset<=this.end.offset?[e,t]=Ye(this.start.element,this.start.offset,this.end.offset):(e=this.start.resolve({direction:1}),t=this.end.resolve({direction:2}));const r=new Range;return r.setStart(e.node,e.offset),r.setEnd(t.node,t.offset),r}static fromRange(e){const t=L.fromPoint(e.startContainer,e.startOffset),r=L.fromPoint(e.endContainer,e.endOffset);return new B(t,r)}static fromOffsets(e,t,r){return new B(new L(e,t),new L(e,r))}static trimmedRange(e){return Kt(B.fromRange(e).toRange())}}class re{constructor(e,t,r){this.root=e,this.start=t,this.end=r}static fromRange(e,t){const r=B.fromRange(t).relativeTo(e);return new re(e,r.start.offset,r.end.offset)}static fromSelector(e,t){return new re(e,t.start,t.end)}toSelector(){return{type:"TextPositionSelector",start:this.start,end:this.end}}toRange(){return B.fromOffsets(this.root,this.start,this.end).toRange()}}class ne{constructor(e,t,r={}){this.root=e,this.exact=t,this.context=r}static fromRange(e,t){const r=e.textContent,n=B.fromRange(t).relativeTo(e),s=n.start.offset,o=n.end.offset,a=32;return new ne(e,r.slice(s,o),{prefix:r.slice(Math.max(0,s-a),s),suffix:r.slice(o,Math.min(r.length,o+a))})}static fromSelector(e,t){const{prefix:r,suffix:n}=t;return new ne(e,t.exact,{prefix:r,suffix:n})}toSelector(){return{type:"TextQuoteSelector",exact:this.exact,prefix:this.context.prefix,suffix:this.context.suffix}}toRange(e={}){return this.toPositionAnchor(e).toRange()}toPositionAnchor(e={}){const t=this.root.textContent,r=Jt(t,this.exact,{...this.context,hint:e.hint});if(!r)throw new Error("Quote not found");return new re(this.root,r.start,r.end)}}function Zt(i){const e=i.tagName.toUpperCase();return e==="IMG"||e==="VIDEO"||e==="AUDIO"||e==="IFRAME"||e==="OBJECT"||e==="EMBED"||e==="CANVAS"}function Te(i,e){try{const t=e.locations,r=e.text;if(r&&r.highlight){let n;t&&t.getCssSelector()&&(n=i.querySelector(t.getCssSelector())),n||(n=i.body);const s=new ne(n,r.highlight,{prefix:r.before,suffix:r.after});try{return s.toRange()}catch{return console.warn("Quote not found:",s),null}}if(t){let n=null;if(!n&&t.getCssSelector()&&(n=i.querySelector(t.getCssSelector())),!n&&t.fragments){for(const s of t.fragments)if(n=i.getElementById(s),n)break}if(n){const s=i.createRange();return n.childNodes.length===0||Zt(n)?(s.selectNode(n),s):(s.setStartBefore(n),s.setEndAfter(n),s)}}}catch(t){console.error(t)}return null}function Qt(i,e){let t=i.getClientRects();t.length||i.commonAncestorContainer.nodeType===Node.ELEMENT_NODE&&(t=i.commonAncestorContainer.getClientRects());const r=1,n=[];for(const c of t)n.push({bottom:c.bottom,height:c.height,left:c.left,right:c.right,top:c.top,width:c.width});const s=Je(n,r,e),o=ti(s,r),a=Ke(o),h=2*2;for(let c=a.length-1;c>=0;c--){const u=a[c];if(!(u.width*u.height>h))if(a.length>1)a.splice(c,1);else break}return a}function Je(i,e,t){for(let r=0;r<i.length;r++)for(let n=r+1;n<i.length;n++){const s=i[r],o=i[n];if(s===o)continue;const a=A(s.top,o.top,e)&&A(s.bottom,o.bottom,e),h=A(s.left,o.left,e)&&A(s.right,o.right,e);if((h&&!t||a&&!h)&&Qe(s,o,e)){const d=i.filter(v=>v!==s&&v!==o),f=ei(s,o);return d.push(f),Je(d,e,t)}}return i}function ei(i,e){const t=Math.min(i.left,e.left),r=Math.max(i.right,e.right),n=Math.min(i.top,e.top),s=Math.max(i.bottom,e.bottom);return{bottom:s,height:s-n,left:t,right:r,top:n,width:r-t}}function ti(i,e){const t=new Set(i);for(const r of i){if(!(r.width>1&&r.height>1)){t.delete(r);continue}for(const s of i)if(r!==s&&t.has(s)&&ii(s,r,e)){t.delete(r);break}}return Array.from(t)}function ii(i,e,t){return se(i,e.left,e.top,t)&&se(i,e.right,e.top,t)&&se(i,e.left,e.bottom,t)&&se(i,e.right,e.bottom,t)}function se(i,e,t,r){return(i.left<e||A(i.left,e,r))&&(i.right>e||A(i.right,e,r))&&(i.top<t||A(i.top,t,r))&&(i.bottom>t||A(i.bottom,t,r))}function Ke(i){for(let e=0;e<i.length;e++)for(let t=e+1;t<i.length;t++){const r=i[e],n=i[t];if(r!==n&&Qe(r,n,-1)){let s=[],o;const a=Ze(r,n);if(a.length===1)s=a,o=r;else{const c=Ze(n,r);a.length<c.length?(s=a,o=r):(s=c,o=n)}const h=i.filter(c=>c!==o);return Array.prototype.push.apply(h,s),Ke(h)}}return i}function Ze(i,e){const t=ri(e,i);if(t.height===0||t.width===0)return[i];const r=[];{const n={bottom:i.bottom,height:0,left:i.left,right:t.left,top:i.top,width:0};n.width=n.right-n.left,n.height=n.bottom-n.top,n.height!==0&&n.width!==0&&r.push(n)}{const n={bottom:t.top,height:0,left:t.left,right:t.right,top:i.top,width:0};n.width=n.right-n.left,n.height=n.bottom-n.top,n.height!==0&&n.width!==0&&r.push(n)}{const n={bottom:i.bottom,height:0,left:t.left,right:t.right,top:t.bottom,width:0};n.width=n.right-n.left,n.height=n.bottom-n.top,n.height!==0&&n.width!==0&&r.push(n)}{const n={bottom:i.bottom,height:0,left:t.right,right:i.right,top:i.top,width:0};n.width=n.right-n.left,n.height=n.bottom-n.top,n.height!==0&&n.width!==0&&r.push(n)}return r}function ri(i,e){const t=Math.max(i.left,e.left),r=Math.min(i.right,e.right),n=Math.max(i.top,e.top),s=Math.min(i.bottom,e.bottom);return{bottom:s,height:Math.max(0,s-n),left:t,right:r,top:n,width:Math.max(0,r-t)}}function Qe(i,e,t){return(i.left<e.right||t>=0&&A(i.left,e.right,t))&&(e.left<i.right||t>=0&&A(e.left,i.right,t))&&(i.top<e.bottom||t>=0&&A(i.top,e.bottom,t))&&(e.top<i.bottom||t>=0&&A(e.top,i.bottom,t))}function A(i,e,t){return Math.abs(i-e)<=t}var F=[],ni=function(){return F.some(function(i){return i.activeTargets.length>0})},si=function(){return F.some(function(i){return i.skippedTargets.length>0})},et="ResizeObserver loop completed with undelivered notifications.",oi=function(){var i;typeof ErrorEvent=="function"?i=new ErrorEvent("error",{message:et}):(i=document.createEvent("Event"),i.initEvent("error",!1,!1),i.message=et),window.dispatchEvent(i)},K;(function(i){i.BORDER_BOX="border-box",i.CONTENT_BOX="content-box",i.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(K||(K={}));var k=function(i){return Object.freeze(i)},ai=function(){function i(e,t){this.inlineSize=e,this.blockSize=t,k(this)}return i}(),tt=function(){function i(e,t,r,n){return this.x=e,this.y=t,this.width=r,this.height=n,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,k(this)}return i.prototype.toJSON=function(){var e=this,t=e.x,r=e.y,n=e.top,s=e.right,o=e.bottom,a=e.left,h=e.width,c=e.height;return{x:t,y:r,top:n,right:s,bottom:o,left:a,width:h,height:c}},i.fromRect=function(e){return new i(e.x,e.y,e.width,e.height)},i}(),Se=function(i){return i instanceof SVGElement&&"getBBox"in i},it=function(i){if(Se(i)){var e=i.getBBox(),t=e.width,r=e.height;return!t&&!r}var n=i,s=n.offsetWidth,o=n.offsetHeight;return!(s||o||i.getClientRects().length)},rt=function(i){var e;if(i instanceof Element)return!0;var t=(e=i==null?void 0:i.ownerDocument)===null||e===void 0?void 0:e.defaultView;return!!(t&&i instanceof t.Element)},li=function(i){switch(i.tagName){case"INPUT":if(i.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},Z=typeof window<"u"?window:{},oe=new WeakMap,nt=/auto|scroll/,hi=/^tb|vertical/,ci=/msie|trident/i.test(Z.navigator&&Z.navigator.userAgent),I=function(i){return parseFloat(i||"0")},j=function(i,e,t){return i===void 0&&(i=0),e===void 0&&(e=0),t===void 0&&(t=!1),new ai((t?e:i)||0,(t?i:e)||0)},st=k({devicePixelContentBoxSize:j(),borderBoxSize:j(),contentBoxSize:j(),contentRect:new tt(0,0,0,0)}),ot=function(i,e){if(e===void 0&&(e=!1),oe.has(i)&&!e)return oe.get(i);if(it(i))return oe.set(i,st),st;var t=getComputedStyle(i),r=Se(i)&&i.ownerSVGElement&&i.getBBox(),n=!ci&&t.boxSizing==="border-box",s=hi.test(t.writingMode||""),o=!r&&nt.test(t.overflowY||""),a=!r&&nt.test(t.overflowX||""),h=r?0:I(t.paddingTop),c=r?0:I(t.paddingRight),u=r?0:I(t.paddingBottom),p=r?0:I(t.paddingLeft),d=r?0:I(t.borderTopWidth),f=r?0:I(t.borderRightWidth),v=r?0:I(t.borderBottomWidth),g=r?0:I(t.borderLeftWidth),y=p+c,x=h+u,O=g+f,m=d+v,E=a?i.offsetHeight-m-i.clientHeight:0,M=o?i.offsetWidth-O-i.clientWidth:0,ue=n?y+O:0,de=n?x+m:0,H=r?r.width:I(t.width)-ue-M,$=r?r.height:I(t.height)-de-E,pe=H+y+M+O,fe=$+x+E+m,X=k({devicePixelContentBoxSize:j(Math.round(H*devicePixelRatio),Math.round($*devicePixelRatio),s),borderBoxSize:j(pe,fe,s),contentBoxSize:j(H,$,s),contentRect:new tt(p,h,H,$)});return oe.set(i,X),X},at=function(i,e,t){var r=ot(i,t),n=r.borderBoxSize,s=r.contentBoxSize,o=r.devicePixelContentBoxSize;switch(e){case K.DEVICE_PIXEL_CONTENT_BOX:return o;case K.BORDER_BOX:return n;default:return s}},ui=function(){function i(e){var t=ot(e);this.target=e,this.contentRect=t.contentRect,this.borderBoxSize=k([t.borderBoxSize]),this.contentBoxSize=k([t.contentBoxSize]),this.devicePixelContentBoxSize=k([t.devicePixelContentBoxSize])}return i}(),lt=function(i){if(it(i))return 1/0;for(var e=0,t=i.parentNode;t;)e+=1,t=t.parentNode;return e},di=function(){var i=1/0,e=[];F.forEach(function(o){if(o.activeTargets.length!==0){var a=[];o.activeTargets.forEach(function(c){var u=new ui(c.target),p=lt(c.target);a.push(u),c.lastReportedSize=at(c.target,c.observedBox),p<i&&(i=p)}),e.push(function(){o.callback.call(o.observer,a,o.observer)}),o.activeTargets.splice(0,o.activeTargets.length)}});for(var t=0,r=e;t<r.length;t++){var n=r[t];n()}return i},ht=function(i){F.forEach(function(t){t.activeTargets.splice(0,t.activeTargets.length),t.skippedTargets.splice(0,t.skippedTargets.length),t.observationTargets.forEach(function(n){n.isActive()&&(lt(n.target)>i?t.activeTargets.push(n):t.skippedTargets.push(n))})})},pi=function(){var i=0;for(ht(i);ni();)i=di(),ht(i);return si()&&oi(),i>0},Ce,ct=[],fi=function(){return ct.splice(0).forEach(function(i){return i()})},mi=function(i){if(!Ce){var e=0,t=document.createTextNode(""),r={characterData:!0};new MutationObserver(function(){return fi()}).observe(t,r),Ce=function(){t.textContent="".concat(e?e--:e++)}}ct.push(i),Ce()},gi=function(i){mi(function(){requestAnimationFrame(i)})},ae=0,vi=function(){return!!ae},yi=250,bi={attributes:!0,characterData:!0,childList:!0,subtree:!0},ut=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],dt=function(i){return i===void 0&&(i=0),Date.now()+i},Oe=!1,Ei=function(){function i(){var e=this;this.stopped=!0,this.listener=function(){return e.schedule()}}return i.prototype.run=function(e){var t=this;if(e===void 0&&(e=yi),!Oe){Oe=!0;var r=dt(e);gi(function(){var n=!1;try{n=pi()}finally{if(Oe=!1,e=r-dt(),!vi())return;n?t.run(1e3):e>0?t.run(e):t.start()}})}},i.prototype.schedule=function(){this.stop(),this.run()},i.prototype.observe=function(){var e=this,t=function(){return e.observer&&e.observer.observe(document.body,bi)};document.body?t():Z.addEventListener("DOMContentLoaded",t)},i.prototype.start=function(){var e=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),ut.forEach(function(t){return Z.addEventListener(t,e.listener,!0)}))},i.prototype.stop=function(){var e=this;this.stopped||(this.observer&&this.observer.disconnect(),ut.forEach(function(t){return Z.removeEventListener(t,e.listener,!0)}),this.stopped=!0)},i}(),Pe=new Ei,pt=function(i){!ae&&i>0&&Pe.start(),ae+=i,!ae&&Pe.stop()},xi=function(i){return!Se(i)&&!li(i)&&getComputedStyle(i).display==="inline"},wi=function(){function i(e,t){this.target=e,this.observedBox=t||K.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return i.prototype.isActive=function(){var e=at(this.target,this.observedBox,!0);return xi(this.target)&&(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},i}(),Ti=function(){function i(e,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=e,this.callback=t}return i}(),le=new WeakMap,ft=function(i,e){for(var t=0;t<i.length;t+=1)if(i[t].target===e)return t;return-1},he=function(){function i(){}return i.connect=function(e,t){var r=new Ti(e,t);le.set(e,r)},i.observe=function(e,t,r){var n=le.get(e),s=n.observationTargets.length===0;ft(n.observationTargets,t)<0&&(s&&F.push(n),n.observationTargets.push(new wi(t,r&&r.box)),pt(1),Pe.schedule())},i.unobserve=function(e,t){var r=le.get(e),n=ft(r.observationTargets,t),s=r.observationTargets.length===1;n>=0&&(s&&F.splice(F.indexOf(r),1),r.observationTargets.splice(n,1),pt(-1))},i.disconnect=function(e){var t=this,r=le.get(e);r.observationTargets.slice().forEach(function(n){return t.unobserve(e,n.target)}),r.activeTargets.splice(0,r.activeTargets.length)},i}(),mt=function(){function i(e){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof e!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");he.connect(this,e)}return i.prototype.observe=function(e,t){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!rt(e))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");he.observe(this,e,t)},i.prototype.unobserve=function(e){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!rt(e))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");he.unobserve(this,e)},i.prototype.disconnect=function(){he.disconnect(this)},i.toString=function(){return"function ResizeObserver () { [polyfill code] }"},i}();function Si(i,e){return i.document.documentElement.style.getPropertyValue(e)}function Ne(i,e,t){i.document.documentElement.style.setProperty(e,t)}function gt(i,e){i.document.documentElement.style.removeProperty(e)}const Ci=window.ResizeObserver||mt;var vt=(i=>(i.Wrap="wrap",i.Viewport="viewport",i.Bounds="bounds",i.Page="page",i))(vt||{}),yt=(i=>(i.Boxes="boxes",i.Bounds="bounds",i))(yt||{});const Oi="Highlight"in window,bt=["IMG","IMAGE","AUDIO","VIDEO","SVG"];class Pi{constructor(e,t,r,n){this.wnd=e,this.comms=t,this.id=r,this.name=n,this.items=[],this.lastItemId=0,this.container=void 0,this.activateable=!1,this.experimentalHighlights=!1,this.currentRender=0,Oi&&(this.experimentalHighlights=!0,this.notTextFlag=new Map)}get activeable(){return this.activateable}set activeable(e){this.activateable=e}add(e){var o,a,h,c;const t=`${this.id}-${this.lastItemId++}`,r=Te(this.wnd.document,e.locator);if(!r){this.comms.log("Can't locate DOM range for decoration",e);return}const n=r.commonAncestorContainer;n.nodeType!==Node.TEXT_NODE&&this.experimentalHighlights&&(bt.includes(n.nodeName.toUpperCase())&&((o=this.notTextFlag)==null||o.set(t,!0)),n.querySelector(bt.join(", ").toLowerCase())&&((a=this.notTextFlag)==null||a.set(t,!0)),(((h=n.textContent)==null?void 0:h.trim())||"").length===0&&((c=this.notTextFlag)==null||c.set(t,!0)));const s={decoration:e,id:t,range:r};this.items.push(s),this.layout(s),this.renderLayout([s])}remove(e){var n,s;const t=this.items.findIndex(o=>o.decoration.id===e);if(t<0)return;const r=this.items[t];if(this.items.splice(t,1),r.clickableElements=void 0,r.container&&(r.container.remove(),r.container=void 0),this.experimentalHighlights&&!((n=this.notTextFlag)!=null&&n.has(r.id))){const o=this.wnd.CSS.highlights.get(this.id);o==null||o.delete(r.range)}(s=this.notTextFlag)==null||s.delete(r.id)}update(e){this.remove(e.id),this.add(e)}clear(){var e;this.clearContainer(),this.items.length=0,(e=this.notTextFlag)==null||e.clear()}requestLayout(){this.wnd.cancelAnimationFrame(this.currentRender),this.clearContainer(),this.items.forEach(e=>this.layout(e)),this.renderLayout(this.items)}experimentalLayout(e){var n,s;const[t,r]=this.requireContainer(!0);r.add(e.range),t.innerHTML=`
2
2
  ::highlight(${this.id}) {
3
3
  color: black;
4
- background-color: ${((n=(s=e.decoration)==null?void 0:s.style)==null?void 0:n.tint)??"yellow"};
5
- }`}layout(e){var v,g,y,x,O;if(this.experimentalHighlights&&!((v=this.notTextFlag)!=null&&v.has(e.id)))return this.experimentalLayout(e);const t=this.wnd.document.createElement("div");t.setAttribute("id",e.id),t.style.setProperty("pointer-events","none");const r=this.wnd.innerWidth,s=parseInt(getComputedStyle(this.wnd.document.documentElement).getPropertyValue("column-count")),n=r/(s||1),o=this.wnd.document.scrollingElement,a=o.scrollLeft,h=o.scrollTop,c=(m,E,A)=>{var he,ce,k,U,de,ue;if(m.style.position="absolute",((ce=(he=e.decoration)==null?void 0:he.style)==null?void 0:ce.width)==="viewport"){m.style.width=`${r}px`,m.style.height=`${E.height}px`;let _=Math.floor(E.left/r)*r;m.style.left=`${_+a}px`,m.style.top=`${E.top+h}px`}else if(((U=(k=e.decoration)==null?void 0:k.style)==null?void 0:U.width)==="bounds")m.style.width=`${A.width}px`,m.style.height=`${E.height}px`,m.style.left=`${A.left+a}px`,m.style.top=`${E.top+h}px`;else if(((ue=(de=e.decoration)==null?void 0:de.style)==null?void 0:ue.width)==="page"){m.style.width=`${n}px`,m.style.height=`${E.height}px`;let _=Math.floor(E.left/n)*n;m.style.left=`${_+a}px`,m.style.top=`${E.top+h}px`}else m.style.width=`${E.width}px`,m.style.height=`${E.height}px`,m.style.left=`${E.left+a}px`,m.style.top=`${E.top+h}px`},d=e.range.getBoundingClientRect();let p=this.wnd.document.createElement("template");const u=fi(this.wnd,"--USER__appearance")==="readium-night-on";p.innerHTML=`
4
+ background-color: ${((s=(n=e.decoration)==null?void 0:n.style)==null?void 0:s.tint)??"yellow"};
5
+ }`}layout(e){var v,g,y,x,O;if(this.experimentalHighlights&&!((v=this.notTextFlag)!=null&&v.has(e.id)))return this.experimentalLayout(e);const t=this.wnd.document.createElement("div");t.setAttribute("id",e.id),t.style.setProperty("pointer-events","none");const r=this.wnd.innerWidth,n=parseInt(getComputedStyle(this.wnd.document.documentElement).getPropertyValue("column-count")),s=r/(n||1),o=this.wnd.document.scrollingElement,a=o.scrollLeft,h=o.scrollTop,c=(m,E,M)=>{var ue,de,H,$,pe,fe;if(m.style.position="absolute",((de=(ue=e.decoration)==null?void 0:ue.style)==null?void 0:de.width)==="viewport"){m.style.width=`${r}px`,m.style.height=`${E.height}px`;let X=Math.floor(E.left/r)*r;m.style.left=`${X+a}px`,m.style.top=`${E.top+h}px`}else if((($=(H=e.decoration)==null?void 0:H.style)==null?void 0:$.width)==="bounds")m.style.width=`${M.width}px`,m.style.height=`${E.height}px`,m.style.left=`${M.left+a}px`,m.style.top=`${E.top+h}px`;else if(((fe=(pe=e.decoration)==null?void 0:pe.style)==null?void 0:fe.width)==="page"){m.style.width=`${s}px`,m.style.height=`${E.height}px`;let X=Math.floor(E.left/s)*s;m.style.left=`${X+a}px`,m.style.top=`${E.top+h}px`}else m.style.width=`${E.width}px`,m.style.height=`${E.height}px`,m.style.left=`${E.left+a}px`,m.style.top=`${E.top+h}px`},u=e.range.getBoundingClientRect();let p=this.wnd.document.createElement("template");const d=Si(this.wnd,"--USER__appearance")==="readium-night-on";p.innerHTML=`
6
6
  <div
7
7
  class="r2-highlight-0"
8
- style="${[`background-color: ${((y=(g=e.decoration)==null?void 0:g.style)==null?void 0:y.tint)??"yellow"} !important`,`mix-blend-mode: ${u?"exclusion":"multiply"} !important`,"opacity: 1 !important","box-sizing: border-box !important"].join("; ")}"
8
+ style="${[`background-color: ${((y=(g=e.decoration)==null?void 0:g.style)==null?void 0:y.tint)??"yellow"} !important`,`mix-blend-mode: ${d?"exclusion":"multiply"} !important`,"opacity: 1 !important","box-sizing: border-box !important"].join("; ")}"
9
9
  >
10
10
  </div>
11
- `.trim();const f=p.content.firstElementChild;if(((O=(x=e.decoration)==null?void 0:x.style)==null?void 0:O.layout)==="bounds"){const m=f.cloneNode(!0);m.style.setProperty("pointer-events","none"),c(m,d,d),t.append(m)}else{let m=jt(e.range,!0);m=m.sort((E,A)=>E.top<A.top?-1:E.top>A.top?1:0);for(let E of m){const A=f.cloneNode(!0);A.style.setProperty("pointer-events","none"),c(A,E,d),t.append(A)}}e.container=t,e.clickableElements=Array.from(t.querySelectorAll("[data-activable='1']")),e.clickableElements.length||(e.clickableElements=Array.from(t.children))}renderLayout(e){this.wnd.cancelAnimationFrame(this.currentRender),this.currentRender=this.wnd.requestAnimationFrame(()=>{if(e=e.filter(r=>{var s;return!this.experimentalHighlights||!!((s=this.notTextFlag)!=null&&s.has(r.id))}),!e||e.length===0)return;this.requireContainer().append(...e.map(r=>r.container).filter(r=>!!r))})}requireContainer(e=!1){if(e){let t;this.wnd.document.getElementById(`${this.id}-style`)?t=this.wnd.document.getElementById(`${this.id}-style`):(t=this.wnd.document.createElement("style"),t.dataset.readium="true",t.id=`${this.id}-style`,this.wnd.document.head.appendChild(t));let r;return this.wnd.CSS.highlights.has(this.id)?r=this.wnd.CSS.highlights.get(this.id):(r=new this.wnd.Highlight,this.wnd.CSS.highlights.set(this.id,r)),[t,r]}return this.container||(this.container=this.wnd.document.createElement("div"),this.container.setAttribute("id",this.id),this.container.dataset.group=this.name,this.container.dataset.readium="true",this.container.style.setProperty("pointer-events","none"),this.container.style.display="contents",this.wnd.document.body.append(this.container)),this.container}clearContainer(){this.experimentalHighlights&&this.wnd.CSS.highlights.delete(this.id),this.container&&(this.container.remove(),this.container=void 0)}}const vt=class Ae extends G{constructor(){super(...arguments),this.resizeFrame=0,this.lastGroupId=0,this.groups=new Map,this.handleResizer=this.handleResize.bind(this)}cleanup(){this.groups.forEach(e=>e.clear()),this.groups.clear()}handleResize(){this.wnd.clearTimeout(this.resizeFrame),this.resizeFrame=this.wnd.setTimeout(()=>{this.groups.forEach(e=>{e.experimentalHighlights||e.requestLayout()})},50)}mount(e,t){return this.wnd=e,t.register("decorate",Ae.moduleName,(r,s)=>{const n=r;n.decoration&&n.decoration.locator&&(n.decoration.locator=z.deserialize(n.decoration.locator)),this.groups.has(n.group)||this.groups.set(n.group,new vi(e,t,`readium-decoration-${this.lastGroupId++}`,n.group));const o=this.groups.get(n.group);switch(n.action){case"add":o==null||o.add(n.decoration);break;case"remove":o==null||o.remove(n.decoration.id);break;case"clear":o==null||o.clear();break;case"update":o==null||o.update(n.decoration);break}s(!0)}),this.resizeObserver=new mi(()=>e.requestAnimationFrame(()=>this.handleResize())),this.resizeObserver.observe(e.document.body),e.addEventListener("orientationchange",this.handleResizer),e.addEventListener("resize",this.handleResizer),t.log("Decorator Mounted"),!0}unmount(e,t){return e.removeEventListener("orientationchange",this.handleResizer),e.removeEventListener("resize",this.handleResizer),t.unregisterAll(Ae.moduleName),this.resizeObserver.disconnect(),this.cleanup(),t.log("Decorator Unmounted"),!0}};vt.moduleName="decorator";let yt=vt;const bt="readium-snapper-style",Et=class Re extends G{constructor(){super(...arguments),this.protected=!1}buildStyles(){return`
11
+ `.trim();const f=p.content.firstElementChild;if(((O=(x=e.decoration)==null?void 0:x.style)==null?void 0:O.layout)==="bounds"){const m=f.cloneNode(!0);m.style.setProperty("pointer-events","none"),c(m,u,u),t.append(m)}else{let m=Qt(e.range,!0);m=m.sort((E,M)=>E.top<M.top?-1:E.top>M.top?1:0);for(let E of m){const M=f.cloneNode(!0);M.style.setProperty("pointer-events","none"),c(M,E,u),t.append(M)}}e.container=t,e.clickableElements=Array.from(t.querySelectorAll("[data-activable='1']")),e.clickableElements.length||(e.clickableElements=Array.from(t.children))}renderLayout(e){this.wnd.cancelAnimationFrame(this.currentRender),this.currentRender=this.wnd.requestAnimationFrame(()=>{if(e=e.filter(r=>{var n;return!this.experimentalHighlights||!!((n=this.notTextFlag)!=null&&n.has(r.id))}),!e||e.length===0)return;this.requireContainer().append(...e.map(r=>r.container).filter(r=>!!r))})}requireContainer(e=!1){if(e){let t;this.wnd.document.getElementById(`${this.id}-style`)?t=this.wnd.document.getElementById(`${this.id}-style`):(t=this.wnd.document.createElement("style"),t.dataset.readium="true",t.id=`${this.id}-style`,this.wnd.document.head.appendChild(t));let r;return this.wnd.CSS.highlights.has(this.id)?r=this.wnd.CSS.highlights.get(this.id):(r=new this.wnd.Highlight,this.wnd.CSS.highlights.set(this.id,r)),[t,r]}return this.container||(this.container=this.wnd.document.createElement("div"),this.container.setAttribute("id",this.id),this.container.dataset.group=this.name,this.container.dataset.readium="true",this.container.style.setProperty("pointer-events","none"),this.container.style.display="contents",this.wnd.document.body.append(this.container)),this.container}clearContainer(){this.experimentalHighlights&&this.wnd.CSS.highlights.delete(this.id),this.container&&(this.container.remove(),this.container=void 0)}}const Et=class Re extends J{constructor(){super(...arguments),this.resizeFrame=0,this.lastGroupId=0,this.groups=new Map,this.handleResizer=this.handleResize.bind(this)}cleanup(){this.groups.forEach(e=>e.clear()),this.groups.clear()}handleResize(){this.wnd.clearTimeout(this.resizeFrame),this.resizeFrame=this.wnd.setTimeout(()=>{this.groups.forEach(e=>{e.experimentalHighlights||e.requestLayout()})},50)}mount(e,t){return this.wnd=e,t.register("decorate",Re.moduleName,(r,n)=>{const s=r;s.decoration&&s.decoration.locator&&(s.decoration.locator=z.deserialize(s.decoration.locator)),this.groups.has(s.group)||this.groups.set(s.group,new Pi(e,t,`readium-decoration-${this.lastGroupId++}`,s.group));const o=this.groups.get(s.group);switch(s.action){case"add":o==null||o.add(s.decoration);break;case"remove":o==null||o.remove(s.decoration.id);break;case"clear":o==null||o.clear();break;case"update":o==null||o.update(s.decoration);break}n(!0)}),this.resizeObserver=new Ci(()=>e.requestAnimationFrame(()=>this.handleResize())),this.resizeObserver.observe(e.document.body),e.addEventListener("orientationchange",this.handleResizer),e.addEventListener("resize",this.handleResizer),t.log("Decorator Mounted"),!0}unmount(e,t){return e.removeEventListener("orientationchange",this.handleResizer),e.removeEventListener("resize",this.handleResizer),t.unregisterAll(Re.moduleName),this.resizeObserver.disconnect(),this.cleanup(),t.log("Decorator Unmounted"),!0}};Et.moduleName="decorator";let xt=Et;const wt="readium-snapper-style",Tt=class Le extends J{constructor(){super(...arguments),this.protected=!1}buildStyles(){return`
12
12
  html, body {
13
13
  touch-action: manipulation;
14
14
  user-select: ${this.protected?"none":"auto"};
15
- }`}mount(e,t){const r=e.document.createElement("style");return r.dataset.readium="true",r.id=bt,r.textContent=this.buildStyles(),e.document.head.appendChild(r),t.register("protect",Re.moduleName,(s,n)=>{this.protected=!0,r.textContent=this.buildStyles(),n(!0)}),t.register("unprotect",Re.moduleName,(s,n)=>{this.protected=!1,r.textContent=this.buildStyles(),n(!0)}),t.log("Snapper Mounted"),!0}unmount(e,t){var r;return(r=e.document.getElementById(bt))==null||r.remove(),t.log("Snapper Unmounted"),!0}};Et.moduleName="snapper";let xt=Et;function F(i){return i.document.body.dir.toLowerCase()==="rtl"}function wt(i){return parseInt(i.getComputedStyle(i.document.documentElement).getPropertyValue("column-count"))}function yi(i){const e="readium-virtual-page";let t=i.document.getElementById(e);if(wt(i)!==2)t&&t.remove();else{const s=i.document.scrollingElement.scrollWidth/i.innerWidth;Math.round(s*2)/2%1>.1&&(t?t.remove():(t=i.document.createElement("div"),t.setAttribute("id",e),t.dataset.readium="true",t.style.breakBefore="column",t.innerHTML="&#8203;",i.document.body.appendChild(t)))}}function bi(i){return i<.5?2*i*i:-1+(4-2*i)*i}function S(i){const e=i.getSelection();e&&e.removeAllRanges()}const Ei=["a","audio","button","canvas","details","input","label","option","select","submit","textarea","video"];function Tt(i){var e;return Ei.indexOf(i.nodeName.toLowerCase())!==-1||i.hasAttribute("contenteditable")&&((e=i.getAttribute("contenteditable"))==null?void 0:e.toLowerCase())!=="false"?i:i.parentElement?Tt(i.parentElement):null}function St(i,e){const t=Ct(i,i.document.body,e);return new z({href:"#",type:"application/xhtml+xml",locations:new T({otherLocations:new Map([["cssSelector",i._readium_cssSelectorGenerator.getCssSelector(t)]])}),text:new $({highlight:t.textContent||void 0})})}function Ct(i,e,t){for(var r=0;r<e.children.length;r++){const s=e.children[r];if(!wi(s)&&xi(i,s,t))return Ct(i,s,t)}return e}function xi(i,e,t){if(e===document.body||e===document.documentElement)return!0;if(!document||!document.documentElement||!document.body)return!1;const r=e.getBoundingClientRect();return t?r.bottom>0&&r.top<i.innerHeight:r.right>0&&r.left<i.innerWidth}function wi(i){const e=getComputedStyle(i);return!!(e&&(e.getPropertyValue("display")!="block"||e.getPropertyValue("opacity")==="0"))}const Ot="readium-column-snapper-style",Ti=200,Pt=class P extends xt{constructor(){super(...arguments),this.shakeTimeout=0,this.snappingCancelled=!1,this.alreadyScrollLeft=0,this.overscroll=0,this.cachedScrollWidth=0,this.touchState=0,this.startingX=void 0,this.endingX=void 0,this.onTouchStarter=this.onTouchStart.bind(this),this.onTouchEnder=this.onTouchEnd.bind(this),this.onWidthChanger=this.onWidthChange.bind(this),this.onTouchMover=this.onTouchMove.bind(this)}doc(){return this.wnd.document.scrollingElement}scrollOffset(){return this.doc().scrollLeft>0?this.doc().scrollLeft:this.alreadyScrollLeft}snapOffset(e){const t=e+(F(this.wnd)?-1:1);return t-t%this.wnd.innerWidth}reportProgress(){this.comms.send("progress",{progress:this.wnd.scrollX/this.cachedScrollWidth,reference:this.wnd.innerWidth/this.doc().scrollWidth})}shake(){if(this.overscroll!==0||this.shakeTimeout!==0)return;const e=this.doc();e.classList.add(F(this.wnd)?"readium-bounce-l":"readium-bounce-r");const t=this.scrollOffset();this.shakeTimeout=this.wnd.setTimeout(()=>{e.classList.remove("readium-bounce-l"),e.classList.remove("readium-bounce-r"),this.shakeTimeout=0,this.doc().scrollLeft=t},150)}takeOverSnap(){var t;this.snappingCancelled=!0,this.clearTouches();const e=this.doc();this.overscroll=((t=e.style.transform)==null?void 0:t.length)>12?parseFloat(e.style.transform.slice(12).split("px")[0]):0}snapCurrentOffset(e=!1,t=!1){const r=this.wnd.scrollX>0?this.wnd.scrollX:this.alreadyScrollLeft,s=this.doc(),n=this.dragOffset(),o=wt(this.wnd),a=Math.min(Math.max(0,r),this.cachedScrollWidth),h=F(this.wnd)?-1:1,c=h*(this.wnd.innerWidth/3)*(h*n>0?2:1),d=this.snapOffset(a+c);if(e&&d!==this.scrollOffset()){this.snappingCancelled=!1;const p=(g,y,x,O)=>x>O?y:g+(y-g)*bi(x/O),u=Ti*o;let f;const v=g=>{if(this.snappingCancelled)return;f||(f=g);const y=g-f,x=p(this.overscroll,0,y,u),O=p(r,d,y,u);s.scrollLeft=O,this.overscroll!==0&&(s.style.transform=`translate3d(${-x}px, 0px, 0px)`),y<u?this.wnd.requestAnimationFrame(v):(this.clearTouches(),s.style.removeProperty("transform"),s.scrollLeft=d,t||this.reportProgress())};this.wnd.requestAnimationFrame(v)}else s.style.removeProperty("transform"),this.wnd.requestAnimationFrame(()=>{s.scrollLeft=d,this.clearTouches(),t||this.reportProgress()})}dragOffset(){return(this.startingX??0)-(this.endingX??0)}clearTouches(){this.startingX=void 0,this.endingX=void 0,this.overscroll=0}onTouchStart(e){switch(e.stopPropagation(),this.takeOverSnap(),e.touches.length){case 1:break;case 2:this.onTouchEnd(e);return;default:{this.onTouchEnd(e),this.comms.send("tap_more",e.touches.length);return}}this.startingX=e.touches[0].clientX,this.alreadyScrollLeft=this.doc().scrollLeft,this.touchState=1}onTouchEnd(e){if(this.touchState===2){const t=this.dragOffset(),r=this.scrollOffset();this.cachedScrollWidth<=this.wnd.innerWidth?(this.reportProgress(),t>5&&this.comms.send("no_more",void 0),t<-5&&this.comms.send("no_less",void 0)):r<5&&t<5?(this.alreadyScrollLeft=0,this.comms.send("no_less",void 0)):this.cachedScrollWidth-r-this.wnd.innerWidth<5&&t>5&&(this.alreadyScrollLeft=this.cachedScrollWidth,this.comms.send("no_more",void 0)),this.snapCurrentOffset(!0),this.comms.send("swipe",t)}this.touchState=0}onWidthChange(){this.cachedScrollWidth=this.doc().scrollWidth,this.comms.ready&&this.snapCurrentOffset()}onTouchMove(e){if(this.touchState===0)return;this.touchState===1&&(this.touchState=2,S(this.wnd)),this.endingX=e.touches[0].clientX;const t=this.dragOffset(),r=this.alreadyScrollLeft+t;r<0?(this.overscroll=r,this.doc().style.transform=`translate3d(${-this.overscroll}px, 0px, 0px)`):r+this.wnd.innerWidth>this.cachedScrollWidth?(this.overscroll=r,this.doc().style.transform=`translate3d(${-r}px, 0px, 0px)`):(this.overscroll=0,this.doc().style.removeProperty("transform"),this.doc().scrollLeft=this.alreadyScrollLeft+t)}mount(e,t){if(this.wnd=e,this.comms=t,!super.mount(e,t))return!1;e.navigator.epubReadingSystem.layoutStyle="paginated";const r=e.document.createElement("style");r.dataset.readium="true",r.id=Ot,r.textContent=`
15
+ }`}mount(e,t){const r=e.document.createElement("style");return r.dataset.readium="true",r.id=wt,r.textContent=this.buildStyles(),e.document.head.appendChild(r),t.register("protect",Le.moduleName,(n,s)=>{this.protected=!0,r.textContent=this.buildStyles(),s(!0)}),t.register("unprotect",Le.moduleName,(n,s)=>{this.protected=!1,r.textContent=this.buildStyles(),s(!0)}),t.log("Snapper Mounted"),!0}unmount(e,t){var r;return(r=e.document.getElementById(wt))==null||r.remove(),t.log("Snapper Unmounted"),!0}};Tt.moduleName="snapper";let St=Tt;function U(i){return i.document.body.dir.toLowerCase()==="rtl"}function Ct(i){return parseInt(i.getComputedStyle(i.document.documentElement).getPropertyValue("column-count"))}function Ni(i){const e="readium-virtual-page";let t=i.document.getElementById(e);if(Ct(i)!==2)t&&t.remove();else{const n=i.document.scrollingElement.scrollWidth/i.innerWidth;Math.round(n*2)/2%1>.1&&(t?t.remove():(t=i.document.createElement("div"),t.setAttribute("id",e),t.dataset.readium="true",t.style.breakBefore="column",t.innerHTML="&#8203;",i.document.body.appendChild(t)))}}function Ai(i){return i<.5?2*i*i:-1+(4-2*i)*i}function S(i){const e=i.getSelection();e&&e.removeAllRanges()}const Mi=["a","audio","button","canvas","details","input","label","option","select","submit","textarea","video"];function Ot(i){var e;return Mi.indexOf(i.nodeName.toLowerCase())!==-1||i.hasAttribute("contenteditable")&&((e=i.getAttribute("contenteditable"))==null?void 0:e.toLowerCase())!=="false"?i:i.parentElement?Ot(i.parentElement):null}function Pt(i,e){const t=Nt(i,i.document.body,e),r=i._readium_cssSelectorGenerator.getCssSelector(t,{selectors:["tag","id","class","nthchild","nthoftype","attribute"]});return new z({href:"#",type:"application/xhtml+xml",locations:new T({otherLocations:new Map([["cssSelector",r]])}),text:new _({highlight:t.textContent||void 0})})}function Nt(i,e,t){for(var r=0;r<e.children.length;r++){const n=e.children[r];if(!Ii(n)&&Ri(i,n,t))return Li(i,n)?n:Nt(i,n,t)}return e}function Ri(i,e,t){if(e===document.body||e===document.documentElement)return!0;if(!document||!document.documentElement||!document.body)return!1;const r=e.getBoundingClientRect();return t?r.bottom>0&&r.top<i.innerHeight:r.right>0&&r.left<i.innerWidth}function Li(i,e){const t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=i.innerHeight&&t.right<=i.innerWidth}function Ii(i){const e=getComputedStyle(i);if(e){const t=e.getPropertyValue("display");if(t!="block"&&t!="list-item"||e.getPropertyValue("opacity")==="0")return!0}return!1}const At="readium-column-snapper-style",zi=200,Mt=class P extends St{constructor(){super(...arguments),this.shakeTimeout=0,this.snappingCancelled=!1,this.alreadyScrollLeft=0,this.overscroll=0,this.cachedScrollWidth=0,this.touchState=0,this.startingX=void 0,this.endingX=void 0,this.onTouchStarter=this.onTouchStart.bind(this),this.onTouchEnder=this.onTouchEnd.bind(this),this.onWidthChanger=this.onWidthChange.bind(this),this.onTouchMover=this.onTouchMove.bind(this)}doc(){return this.wnd.document.scrollingElement}scrollOffset(){return this.doc().scrollLeft>0?this.doc().scrollLeft:this.alreadyScrollLeft}snapOffset(e){const t=e+(U(this.wnd)?-1:1);return t-t%this.wnd.innerWidth}reportProgress(){this.comms.send("progress",{progress:this.wnd.scrollX/this.cachedScrollWidth,reference:this.wnd.innerWidth/this.doc().scrollWidth})}shake(){if(this.overscroll!==0||this.shakeTimeout!==0)return;const e=this.doc();e.classList.add(U(this.wnd)?"readium-bounce-l":"readium-bounce-r");const t=this.scrollOffset();this.shakeTimeout=this.wnd.setTimeout(()=>{e.classList.remove("readium-bounce-l"),e.classList.remove("readium-bounce-r"),this.shakeTimeout=0,this.doc().scrollLeft=t},150)}takeOverSnap(){var t;this.snappingCancelled=!0,this.clearTouches();const e=this.doc();this.overscroll=((t=e.style.transform)==null?void 0:t.length)>12?parseFloat(e.style.transform.slice(12).split("px")[0]):0}snapCurrentOffset(e=!1,t=!1){const r=this.wnd.scrollX>0?this.wnd.scrollX:this.alreadyScrollLeft,n=this.doc(),s=this.dragOffset(),o=Ct(this.wnd),a=Math.min(Math.max(0,r),this.cachedScrollWidth),h=U(this.wnd)?-1:1,c=h*(this.wnd.innerWidth/3)*(h*s>0?2:1),u=this.snapOffset(a+c);if(e&&u!==this.scrollOffset()){this.snappingCancelled=!1;const p=(g,y,x,O)=>x>O?y:g+(y-g)*Ai(x/O),d=zi*o;let f;const v=g=>{if(this.snappingCancelled)return;f||(f=g);const y=g-f,x=p(this.overscroll,0,y,d),O=p(r,u,y,d);n.scrollLeft=O,this.overscroll!==0&&(n.style.transform=`translate3d(${-x}px, 0px, 0px)`),y<d?this.wnd.requestAnimationFrame(v):(this.clearTouches(),n.style.removeProperty("transform"),n.scrollLeft=u,t||this.reportProgress())};this.wnd.requestAnimationFrame(v)}else n.style.removeProperty("transform"),this.wnd.requestAnimationFrame(()=>{n.scrollLeft=u,this.clearTouches(),t||this.reportProgress()})}dragOffset(){return(this.startingX??0)-(this.endingX??0)}clearTouches(){this.startingX=void 0,this.endingX=void 0,this.overscroll=0}onTouchStart(e){switch(e.stopPropagation(),this.takeOverSnap(),e.touches.length){case 1:break;case 2:this.onTouchEnd(e);return;default:{this.onTouchEnd(e),this.comms.send("tap_more",e.touches.length);return}}this.startingX=e.touches[0].clientX,this.alreadyScrollLeft=this.doc().scrollLeft,this.touchState=1}onTouchEnd(e){if(this.touchState===2){const t=this.dragOffset(),r=this.scrollOffset();this.cachedScrollWidth<=this.wnd.innerWidth?(this.reportProgress(),t>5&&this.comms.send("no_more",void 0),t<-5&&this.comms.send("no_less",void 0)):r<5&&t<5?(this.alreadyScrollLeft=0,this.comms.send("no_less",void 0)):this.cachedScrollWidth-r-this.wnd.innerWidth<5&&t>5&&(this.alreadyScrollLeft=this.cachedScrollWidth,this.comms.send("no_more",void 0)),this.snapCurrentOffset(!0),this.comms.send("swipe",t)}this.touchState=0}onWidthChange(){this.cachedScrollWidth=this.doc().scrollWidth,this.comms.ready&&this.snapCurrentOffset()}onTouchMove(e){if(this.touchState===0)return;this.touchState===1&&(this.touchState=2,S(this.wnd)),this.endingX=e.touches[0].clientX;const t=this.dragOffset(),r=this.alreadyScrollLeft+t;r<0?(this.overscroll=r,this.doc().style.transform=`translate3d(${-this.overscroll}px, 0px, 0px)`):r+this.wnd.innerWidth>this.cachedScrollWidth?(this.overscroll=r,this.doc().style.transform=`translate3d(${-r}px, 0px, 0px)`):(this.overscroll=0,this.doc().style.removeProperty("transform"),this.doc().scrollLeft=this.alreadyScrollLeft+t)}mount(e,t){if(this.wnd=e,this.comms=t,!super.mount(e,t))return!1;e.navigator.epubReadingSystem.layoutStyle="paginated";const r=e.document.createElement("style");r.dataset.readium="true",r.id=At,r.textContent=`
16
16
  @keyframes readium-bounce-l-animation {
17
17
  0%, 100% {transform: translate3d(0, 0, 0);}
18
18
  50% {transform: translate3d(-50px, 0, 0);}
@@ -46,7 +46,7 @@
46
46
  body::-webkit-scrollbar {
47
47
  display: none; /* for Chrome, Safari, and Opera */
48
48
  }
49
- `,e.document.head.appendChild(r);const s=e.ResizeObserver||ut;this.resizeObserver=new s(()=>e.requestAnimationFrame(()=>{e&&yi(e)})),this.resizeObserver.observe(e.document.body),this.mutationObserver=new MutationObserver(()=>{this.wnd.requestAnimationFrame(()=>this.cachedScrollWidth=this.doc().scrollWidth)}),e.frameElement&&this.mutationObserver.observe(e.frameElement,{attributes:!0,attributeFilter:["style"]}),this.mutationObserver.observe(e.document,{attributes:!0,attributeFilter:["style"]});const n=o=>{const a=this.doc().scrollLeft;return this.doc().scrollLeft=this.snapOffset(o),a!==this.doc().scrollLeft};return e.addEventListener("orientationchange",this.onWidthChanger),e.addEventListener("resize",this.onWidthChanger),e.requestAnimationFrame(()=>this.cachedScrollWidth=this.doc().scrollWidth),t.register("go_progression",P.moduleName,(o,a)=>{const h=o;if(h<0||h>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),a(!1);return}this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;const c=this.cachedScrollWidth,d=F(e)?-1:1,p=c*h*d;this.doc().scrollLeft=this.snapOffset(p),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_id",P.moduleName,(o,a)=>{const h=e.document.getElementById(o);if(!h){a(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollLeft=this.snapOffset(h.getBoundingClientRect().left+e.scrollX),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_text",P.moduleName,(o,a)=>{let h;Array.isArray(o)&&(o.length>1&&(h=o[1]),o=o[0]);const c=$.deserialize(o),d=xe(this.wnd.document,new z({href:e.location.href,type:"text/html",text:c,locations:h?new T({otherLocations:new Map([["cssSelector",h]])}):void 0}));if(!d){a(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollLeft=this.snapOffset(d.getBoundingClientRect().left+e.scrollX),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_end",P.moduleName,(o,a)=>{const h=F(e)?-1:1;this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;const c=this.cachedScrollWidth*h;if(this.doc().scrollLeft===c)return a(!1);this.doc().scrollLeft=this.snapOffset(c),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_start",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{if(this.doc().scrollLeft===0)return a(!1);this.doc().scrollLeft=0,this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_prev",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{const h=e.scrollX-e.innerWidth,c=F(e)?-(this.cachedScrollWidth-e.innerWidth):0,d=n(Math.max(h,c));d&&(this.reportProgress(),S(this.wnd)),a(d)})}),t.register("go_next",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{const h=e.scrollX+e.innerWidth,c=F(e)?0:this.cachedScrollWidth-e.innerWidth,d=n(Math.min(h,c));d&&(this.reportProgress(),S(this.wnd)),a(d)})}),t.register("unfocus",P.moduleName,(o,a)=>{this.snappingCancelled=!0,S(this.wnd),a(!0)}),t.register("shake",P.moduleName,(o,a)=>{this.shake(),a(!0)}),t.register("focus",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth,this.snapCurrentOffset(!1,!0),this.reportProgress(),a(!0)})}),t.register("first_visible_locator",P.moduleName,(o,a)=>{const h=St(e,!1);this.comms.send("first_visible_locator",h.serialize()),a(!0)}),e.addEventListener("touchstart",this.onTouchStarter,{passive:!0}),e.addEventListener("touchend",this.onTouchEnder,{passive:!0}),e.addEventListener("touchmove",this.onTouchMover,{passive:!0}),e.document.addEventListener("touchstart",()=>{}),t.log("ColumnSnapper Mounted"),!0}unmount(e,t){var r;return this.snappingCancelled=!0,t.unregisterAll(P.moduleName),this.resizeObserver.disconnect(),this.mutationObserver.disconnect(),e.removeEventListener("touchstart",this.onTouchStarter),e.removeEventListener("touchend",this.onTouchEnder),e.removeEventListener("touchmove",this.onTouchMover),e.removeEventListener("orientationchange",this.onWidthChanger),e.removeEventListener("resize",this.onWidthChanger),(r=e.document.getElementById(Ot))==null||r.remove(),t.log("ColumnSnapper Unmounted"),super.unmount(e,t)}};Pt.moduleName="column_snapper";let Si=Pt;const le={top:"js-iframe-reader-top-anchor",bottom:"js-iframe-reader-bottom-anchor"};class Ci extends HTMLElement{connectedCallback(){this.setAttribute("aria-hidden","true"),this.style.setProperty("display","block","important"),this.style.setProperty("padding","0","important"),this.style.setProperty("margin","0","important"),this.style.setProperty("visibility","hidden","important")}}function Oi(i){const e=i.getElementsByTagName("body")[0],t=document.createElement("anchor-observer"),r=document.createElement("anchor-observer");t.dataset.readium="true",r.dataset.readium="true",t==null||t.setAttribute("id",le.top),t==null||t.style.setProperty("height","115px","important"),r==null||r.setAttribute("id",le.bottom),r==null||r.style.setProperty("height","80px","important"),e==null||e.insertBefore(t,e.firstChild),e==null||e.appendChild(r)}function Pi(i){var s,n;const e=i.getElementsByTagName("body")[0],t=e==null?void 0:e.querySelector(`#${le.top}`),r=e==null?void 0:e.querySelector(`#${le.bottom}`);t&&((s=t.parentElement)==null||s.removeChild(t)),r&&((n=r.parentElement)==null||n.removeChild(r))}const Mt="readium-scroll-snapper-style",At=class R extends xt{constructor(){super(...arguments),this.createAnchorElements=()=>{Oi(this.doc())},this.removeAnchorElements=()=>{Pi(this.doc())},this.createCustomElement=()=>{customElements.get("anchor-observer")||customElements.define("anchor-observer",Ci)}}doc(){return this.wnd.document.scrollingElement}reportProgress(e){this.comms.send("progress",e)}mount(e,t){this.wnd=e,this.comms=t,e.navigator.epubReadingSystem.layoutStyle="scrolling";const r=e.document.createElement("style");return r.dataset.readium="true",r.id=Mt,r.textContent=`
49
+ `,e.document.head.appendChild(r);const n=e.ResizeObserver||mt;this.resizeObserver=new n(()=>e.requestAnimationFrame(()=>{e&&Ni(e)})),this.resizeObserver.observe(e.document.body),this.mutationObserver=new MutationObserver(()=>{this.wnd.requestAnimationFrame(()=>this.cachedScrollWidth=this.doc().scrollWidth)}),e.frameElement&&this.mutationObserver.observe(e.frameElement,{attributes:!0,attributeFilter:["style"]}),this.mutationObserver.observe(e.document,{attributes:!0,attributeFilter:["style"]});const s=o=>{const a=this.doc().scrollLeft;return this.doc().scrollLeft=this.snapOffset(o),a!==this.doc().scrollLeft};return e.addEventListener("orientationchange",this.onWidthChanger),e.addEventListener("resize",this.onWidthChanger),e.requestAnimationFrame(()=>this.cachedScrollWidth=this.doc().scrollWidth),t.register("go_progression",P.moduleName,(o,a)=>{const h=o;if(h<0||h>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),a(!1);return}this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;const c=this.cachedScrollWidth,u=U(e)?-1:1,p=c*h*u;this.doc().scrollLeft=this.snapOffset(p),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_id",P.moduleName,(o,a)=>{const h=e.document.getElementById(o);if(!h){a(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollLeft=this.snapOffset(h.getBoundingClientRect().left+e.scrollX),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_text",P.moduleName,(o,a)=>{let h;Array.isArray(o)&&(o.length>1&&(h=o[1]),o=o[0]);const c=_.deserialize(o),u=Te(this.wnd.document,new z({href:e.location.href,type:"text/html",text:c,locations:h?new T({otherLocations:new Map([["cssSelector",h]])}):void 0}));if(!u){a(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollLeft=this.snapOffset(u.getBoundingClientRect().left+e.scrollX),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_end",P.moduleName,(o,a)=>{const h=U(e)?-1:1;this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;const c=this.cachedScrollWidth*h;if(this.doc().scrollLeft===c)return a(!1);this.doc().scrollLeft=this.snapOffset(c),this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_start",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{if(this.doc().scrollLeft===0)return a(!1);this.doc().scrollLeft=0,this.reportProgress(),S(this.wnd),a(!0)})}),t.register("go_prev",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{const h=e.scrollX-e.innerWidth,c=U(e)?-(this.cachedScrollWidth-e.innerWidth):0,u=s(Math.max(h,c));u&&(this.reportProgress(),S(this.wnd)),a(u)})}),t.register("go_next",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{const h=e.scrollX+e.innerWidth,c=U(e)?0:this.cachedScrollWidth-e.innerWidth,u=s(Math.min(h,c));u&&(this.reportProgress(),S(this.wnd)),a(u)})}),t.register("unfocus",P.moduleName,(o,a)=>{this.snappingCancelled=!0,S(this.wnd),a(!0)}),t.register("shake",P.moduleName,(o,a)=>{this.shake(),a(!0)}),t.register("focus",P.moduleName,(o,a)=>{this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth,this.snapCurrentOffset(!1,!0),this.reportProgress(),a(!0)})}),t.register("first_visible_locator",P.moduleName,(o,a)=>{const h=Pt(e,!1);this.comms.send("first_visible_locator",h.serialize()),a(!0)}),e.addEventListener("touchstart",this.onTouchStarter,{passive:!0}),e.addEventListener("touchend",this.onTouchEnder,{passive:!0}),e.addEventListener("touchmove",this.onTouchMover,{passive:!0}),e.document.addEventListener("touchstart",()=>{}),t.log("ColumnSnapper Mounted"),!0}unmount(e,t){var r;return this.snappingCancelled=!0,t.unregisterAll(P.moduleName),this.resizeObserver.disconnect(),this.mutationObserver.disconnect(),e.removeEventListener("touchstart",this.onTouchStarter),e.removeEventListener("touchend",this.onTouchEnder),e.removeEventListener("touchmove",this.onTouchMover),e.removeEventListener("orientationchange",this.onWidthChanger),e.removeEventListener("resize",this.onWidthChanger),(r=e.document.getElementById(At))==null||r.remove(),t.log("ColumnSnapper Unmounted"),super.unmount(e,t)}};Mt.moduleName="column_snapper";let Di=Mt;const ce={top:"js-iframe-reader-top-anchor",bottom:"js-iframe-reader-bottom-anchor"};class Bi extends HTMLElement{connectedCallback(){this.setAttribute("aria-hidden","true"),this.style.setProperty("display","block","important"),this.style.setProperty("padding","0","important"),this.style.setProperty("margin","0","important"),this.style.setProperty("visibility","hidden","important")}}function Wi(i){const e=i.getElementsByTagName("body")[0],t=document.createElement("anchor-observer"),r=document.createElement("anchor-observer");t.dataset.readium="true",r.dataset.readium="true",t==null||t.setAttribute("id",ce.top),t==null||t.style.setProperty("height","115px","important"),r==null||r.setAttribute("id",ce.bottom),r==null||r.style.setProperty("height","80px","important"),e==null||e.insertBefore(t,e.firstChild),e==null||e.appendChild(r)}function Fi(i){var n,s;const e=i.getElementsByTagName("body")[0],t=e==null?void 0:e.querySelector(`#${ce.top}`),r=e==null?void 0:e.querySelector(`#${ce.bottom}`);t&&((n=t.parentElement)==null||n.removeChild(t)),r&&((s=r.parentElement)==null||s.removeChild(r))}const Rt="readium-scroll-snapper-style",Lt=class R extends St{constructor(){super(...arguments),this.createAnchorElements=()=>{Wi(this.doc())},this.removeAnchorElements=()=>{Fi(this.doc())},this.createCustomElement=()=>{customElements.get("anchor-observer")||customElements.define("anchor-observer",Bi)}}doc(){return this.wnd.document.scrollingElement}reportProgress(e){this.comms.send("progress",e)}mount(e,t){this.wnd=e,this.comms=t,e.navigator.epubReadingSystem.layoutStyle="scrolling";const r=e.document.createElement("style");return r.dataset.readium="true",r.id=Rt,r.textContent=`
50
50
  * {
51
51
  scrollbar-width: none; /* for Firefox */
52
52
  }
@@ -54,7 +54,7 @@
54
54
  body::-webkit-scrollbar {
55
55
  display: none; /* for Chrome, Safari, and Opera */
56
56
  }
57
- `,e.document.head.appendChild(r),t.register("go_progression",R.moduleName,(s,n)=>{const o=s;if(o<0||o>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=this.doc().offsetHeight*o,this.reportProgress({progress:o,reference:this.wnd.innerHeight/this.doc().scrollHeight}),S(this.wnd),n(!0)})}),t.register("go_id",R.moduleName,(s,n)=>{const o=e.document.getElementById(s);if(!o){n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=o.getBoundingClientRect().top+e.scrollY-e.innerHeight/2;const a=this.doc().scrollTop/this.doc().offsetHeight;this.reportProgress({progress:a,reference:this.wnd.innerHeight/this.doc().scrollHeight}),S(this.wnd),n(!0)})}),t.register("go_text",R.moduleName,(s,n)=>{let o;Array.isArray(s)&&(s.length>1&&(o=s[1]),s=s[0]);const a=$.deserialize(s),h=xe(this.wnd.document,new z({href:e.location.href,type:"text/html",text:a,locations:o?new T({otherLocations:new Map([["cssSelector",o]])}):void 0}));if(!h){n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=h.getBoundingClientRect().top+e.scrollY-e.innerHeight/2;const c=this.doc().scrollTop/this.doc().offsetHeight;this.reportProgress({progress:c,reference:this.wnd.innerHeight/this.doc().scrollHeight}),S(this.wnd),n(!0)})}),t.register("go_start",R.moduleName,(s,n)=>{if(this.doc().scrollTop===0)return n(!1);this.doc().scrollTop=0,this.reportProgress({progress:0,reference:this.wnd.innerHeight/this.doc().scrollHeight}),n(!0)}),t.register("go_end",R.moduleName,(s,n)=>{if(this.doc().scrollTop===0)return n(!1);this.doc().scrollTop=0,this.reportProgress({progress:0,reference:this.wnd.innerHeight/this.doc().scrollHeight}),n(!0)}),t.register("unfocus",R.moduleName,(s,n)=>{S(this.wnd),n(!0)}),t.register(["go_next","go_prev"],R.moduleName,(s,n)=>n(!1)),t.register("focus",R.moduleName,(s,n)=>{const o=this.doc().scrollTop/this.doc().offsetHeight;this.reportProgress({progress:o,reference:this.wnd.innerHeight/this.doc().scrollHeight}),n(!0)}),t.register("first_visible_locator",R.moduleName,(s,n)=>{const o=St(e,!0);this.comms.send("first_visible_locator",o.serialize()),n(!0)}),t.log("ScrollSnapper Mounted"),this.createCustomElement(),this.createAnchorElements(),!0}unmount(e,t){var r;return t.unregisterAll(R.moduleName),this.removeAnchorElements(),(r=e.document.getElementById(Mt))==null||r.remove(),t.log("ScrollSnapper Unmounted"),!0}};At.moduleName="scroll_snapper";let Mi=At;class Pe extends G{constructor(){super(...arguments),this.pointerMoved=!1,this.onPointerUp=this.onPointUp.bind(this),this.onPointerMove=this.onPointMove.bind(this),this.onPointerDown=this.onPointDown.bind(this),this.onContextMenu=this.onContext.bind(this),this.onClicker=this.onClick.bind(this)}onPointUp(e){var s,n,o,a,h;const t=this.wnd.getSelection();if(t&&((s=t.toString())==null?void 0:s.length)>0){const c=(n=t.getRangeAt(0))==null?void 0:n.getClientRects();if(!c||c.length===0)return;const d=c[0],p={text:t.toString(),x:d.x,y:d.y,width:d.width,height:d.height,targetFrameSrc:(a=(o=this.wnd)==null?void 0:o.location)==null?void 0:a.href};this.comms.send("text_selected",p)}if(this.pointerMoved){this.pointerMoved=!1;return}if(!(t!=null&&t.isCollapsed)||!e.isPrimary)return;const r=this.wnd.devicePixelRatio;e.preventDefault(),this.comms.send(e.pointerType==="touch"?"tap":"click",{defaultPrevented:e.defaultPrevented,x:e.clientX*r,y:e.clientY*r,targetFrameSrc:this.wnd.location.href,targetElement:e.target.outerHTML,interactiveElement:(h=Tt(e.target))==null?void 0:h.outerHTML,cssSelector:this.wnd._readium_cssSelectorGenerator.getCssSelector(e.target)}),this.pointerMoved=!1}onPointMove(e){if(e.movementY!==void 0&&e.movementX!==void 0){(Math.abs(e.movementX)>1||Math.abs(e.movementY)>1)&&(this.pointerMoved=!0);return}this.pointerMoved=!0}onPointDown(){this.pointerMoved=!1}onContext(e){this.onPointUp(e),this.pointerMoved=!1}onClick(e){if(e.preventDefault(),!e.isTrusted){const t=new PointerEvent("pointerup",{isPrimary:!0,pointerType:"mouse",clientX:e.clientX,clientY:e.clientY});Object.defineProperty(t,"target",{writable:!1,value:e.target}),Object.defineProperty(t,"defaultPrevented",{writable:!1,value:e.defaultPrevented}),this.onPointUp(t)}}mount(e,t){return this.wnd=e,this.comms=t,e.document.addEventListener("pointerdown",this.onPointerDown),e.document.addEventListener("pointerup",this.onPointerUp),e.document.addEventListener("contextmenu",this.onContextMenu),e.document.addEventListener("pointermove",this.onPointerMove),e.document.addEventListener("click",this.onClicker),t.log("Peripherals Mounted"),!0}unmount(e,t){return e.document.removeEventListener("pointerdown",this.onPointerDown),e.document.removeEventListener("pointerup",this.onPointerUp),e.document.removeEventListener("contextmenu",this.onContextMenu),e.document.removeEventListener("pointermove",this.onPointerMove),e.document.removeEventListener("click",this.onClicker),t.log("Peripherals Unmounted"),!0}}Pe.moduleName="peripherals";const Rt=class Ne extends G{constructor(){super(...arguments),this.mediaPlayingCount=0,this.allAnimations=new Set}wndOnErr(e){var t;(t=this.comms)==null||t.send("error",{message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno})}unblock(e){var t;for(e._readium_blockEvents=!1;((t=e._readium_blockedEvents)==null?void 0:t.length)>0;){const r=e._readium_blockedEvents.shift();switch(r[0]){case 0:Reflect.apply(r[1],r[2],r[3]);break;case 1:const s=r[1],n=r[2];e.removeEventListener(s.type,e._readium_eventBlocker,!0);const o=new Event(s.type,{bubbles:s.bubbles,cancelable:s.cancelable});n?n.dispatchEvent(o):e.dispatchEvent(o);break}}}onMediaPlayEvent(){var e;this.mediaPlayingCount++,(e=this.comms)==null||e.send("media_play",this.mediaPlayingCount)}onMediaPauseEvent(){var e;this.mediaPlayingCount>0&&this.mediaPlayingCount--,(e=this.comms)==null||e.send("media_pause",this.mediaPlayingCount)}pauseAllMedia(e){const t=e.document.querySelectorAll("audio,video");for(let r=0;r<t.length;r++)t[r].pause()}mount(e,t){this.comms=t,e.addEventListener("error",this.wndOnErr,!1),Reflect.defineProperty(e.navigator,"epubReadingSystem",{value:{name:"readium-ts-toolkit",version:"1.3.2",hasFeature:(s,n="")=>{switch(s){case"dom-manipulation":return!0;case"layout-changes":return!0;case"touch-events":return!0;case"mouse-events":return!0;case"keyboard-events":return!0;case"spine-scripting":return!0;case"embedded-web-content":return!0;default:return!1}}},writable:!1}),"getAnimations"in e.document&&e.document.getAnimations().forEach(s=>{s.cancel(),this.allAnimations.add(s)}),t.register("activate",Ne.moduleName,(s,n)=>{this.allAnimations.forEach(o=>{o.cancel(),o.play()}),n(!0)}),t.register("unfocus",Ne.moduleName,(s,n)=>{this.pauseAllMedia(e),this.allAnimations.forEach(o=>o.pause()),n(!0)});const r=e.document.querySelectorAll("audio,video");for(let s=0;s<r.length;s++){const n=r[s];n.addEventListener("play",this.onMediaPlayEvent,{passive:!0}),n.addEventListener("pause",this.onMediaPauseEvent,{passive:!0})}return t.log("Setup Mounted"),!0}unmount(e,t){return e.removeEventListener("error",this.wndOnErr),e.removeEventListener("play",this.onMediaPlayEvent),e.removeEventListener("pause",this.onMediaPauseEvent),this.allAnimations.forEach(r=>r.cancel()),this.allAnimations.clear(),t.log("Setup Unmounted"),!0}};Rt.moduleName="setup";let Nt=Rt;const Lt="readium-viewport",zt=class J extends Nt{onViewportWidthChanged(e){const t=e.target;Oe(t,"--RS__viewportWidth",`${t.innerWidth}px`)}mount(e,t){if(!super.mount(e,t))return!1;const r=e.document.createElement("meta");return r.dataset.readium="true",r.setAttribute("name","viewport"),r.setAttribute("id",Lt),r.setAttribute("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"),e.document.head.appendChild(r),e.addEventListener("orientationchange",this.onViewportWidthChanged),e.addEventListener("resize",this.onViewportWidthChanged),this.onViewportWidthChanged({target:e}),t.register("set_property",J.moduleName,(s,n)=>{const o=s;Oe(e,o[0],o[1]),n(!0)}),t.register("remove_property",J.moduleName,(s,n)=>{pt(e,s),n(!0)}),t.register("activate",J.moduleName,(s,n)=>{this.unblock(e),n(!0)}),t.log("ReflowableSetup Mounted"),!0}unmount(e,t){var r;return t.unregisterAll(J.moduleName),(r=e.document.head.querySelector(`#${Lt}`))==null||r.remove(),e.removeEventListener("orientationchange",this.onViewportWidthChanged),t.log("ReflowableSetup Unmounted"),super.unmount(e,t)}};zt.moduleName="reflowable_setup";let Ai=zt;const It="readium-fixed-style",Dt=class D extends Nt{mount(e,t){if(!super.mount(e,t))return!1;e.navigator.epubReadingSystem.layoutStyle="paginated";const r=e.document.createElement("style");return r.id=It,r.dataset.readium="true",r.textContent=`
57
+ `,e.document.head.appendChild(r),t.register("go_progression",R.moduleName,(n,s)=>{const o=n;if(o<0||o>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),s(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=this.doc().offsetHeight*o,this.reportProgress({progress:o,reference:this.wnd.innerHeight/this.doc().scrollHeight}),S(this.wnd),s(!0)})}),t.register("go_id",R.moduleName,(n,s)=>{const o=e.document.getElementById(n);if(!o){s(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=o.getBoundingClientRect().top+e.scrollY-e.innerHeight/2;const a=this.doc().scrollTop/this.doc().offsetHeight;this.reportProgress({progress:a,reference:this.wnd.innerHeight/this.doc().scrollHeight}),S(this.wnd),s(!0)})}),t.register("go_text",R.moduleName,(n,s)=>{let o;Array.isArray(n)&&(n.length>1&&(o=n[1]),n=n[0]);const a=_.deserialize(n),h=Te(this.wnd.document,new z({href:e.location.href,type:"text/html",text:a,locations:o?new T({otherLocations:new Map([["cssSelector",o]])}):void 0}));if(!h){s(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=h.getBoundingClientRect().top+e.scrollY-e.innerHeight/2;const c=this.doc().scrollTop/this.doc().offsetHeight;this.reportProgress({progress:c,reference:this.wnd.innerHeight/this.doc().scrollHeight}),S(this.wnd),s(!0)})}),t.register("go_start",R.moduleName,(n,s)=>{if(this.doc().scrollTop===0)return s(!1);this.doc().scrollTop=0,this.reportProgress({progress:0,reference:this.wnd.innerHeight/this.doc().scrollHeight}),s(!0)}),t.register("go_end",R.moduleName,(n,s)=>{if(this.doc().scrollTop===0)return s(!1);this.doc().scrollTop=0,this.reportProgress({progress:0,reference:this.wnd.innerHeight/this.doc().scrollHeight}),s(!0)}),t.register("unfocus",R.moduleName,(n,s)=>{S(this.wnd),s(!0)}),t.register(["go_next","go_prev"],R.moduleName,(n,s)=>s(!1)),t.register("focus",R.moduleName,(n,s)=>{const o=this.doc().scrollTop/this.doc().offsetHeight;this.reportProgress({progress:o,reference:this.wnd.innerHeight/this.doc().scrollHeight}),s(!0)}),t.register("first_visible_locator",R.moduleName,(n,s)=>{const o=Pt(e,!0);this.comms.send("first_visible_locator",o.serialize()),s(!0)}),t.log("ScrollSnapper Mounted"),this.createCustomElement(),this.createAnchorElements(),!0}unmount(e,t){var r;return t.unregisterAll(R.moduleName),this.removeAnchorElements(),(r=e.document.getElementById(Rt))==null||r.remove(),t.log("ScrollSnapper Unmounted"),!0}};Lt.moduleName="scroll_snapper";let ki=Lt;class Ae extends J{constructor(){super(...arguments),this.pointerMoved=!1,this.onPointerUp=this.onPointUp.bind(this),this.onPointerMove=this.onPointMove.bind(this),this.onPointerDown=this.onPointDown.bind(this),this.onContextMenu=this.onContext.bind(this),this.onClicker=this.onClick.bind(this)}onPointUp(e){var n,s,o,a,h;const t=this.wnd.getSelection();if(t&&((n=t.toString())==null?void 0:n.length)>0){const c=(s=t.getRangeAt(0))==null?void 0:s.getClientRects();if(!c||c.length===0)return;const u=c[0],p={text:t.toString(),x:u.x,y:u.y,width:u.width,height:u.height,targetFrameSrc:(a=(o=this.wnd)==null?void 0:o.location)==null?void 0:a.href};this.comms.send("text_selected",p)}if(this.pointerMoved){this.pointerMoved=!1;return}if(!(t!=null&&t.isCollapsed)||!e.isPrimary)return;const r=this.wnd.devicePixelRatio;e.preventDefault(),this.comms.send(e.pointerType==="touch"?"tap":"click",{defaultPrevented:e.defaultPrevented,x:e.clientX*r,y:e.clientY*r,targetFrameSrc:this.wnd.location.href,targetElement:e.target.outerHTML,interactiveElement:(h=Ot(e.target))==null?void 0:h.outerHTML,cssSelector:this.wnd._readium_cssSelectorGenerator.getCssSelector(e.target)}),this.pointerMoved=!1}onPointMove(e){if(e.movementY!==void 0&&e.movementX!==void 0){(Math.abs(e.movementX)>1||Math.abs(e.movementY)>1)&&(this.pointerMoved=!0);return}this.pointerMoved=!0}onPointDown(){this.pointerMoved=!1}onContext(e){this.onPointUp(e),this.pointerMoved=!1}onClick(e){if(e.preventDefault(),!e.isTrusted){const t=new PointerEvent("pointerup",{isPrimary:!0,pointerType:"mouse",clientX:e.clientX,clientY:e.clientY});Object.defineProperty(t,"target",{writable:!1,value:e.target}),Object.defineProperty(t,"defaultPrevented",{writable:!1,value:e.defaultPrevented}),this.onPointUp(t)}}mount(e,t){return this.wnd=e,this.comms=t,e.document.addEventListener("pointerdown",this.onPointerDown),e.document.addEventListener("pointerup",this.onPointerUp),e.document.addEventListener("contextmenu",this.onContextMenu),e.document.addEventListener("pointermove",this.onPointerMove),e.document.addEventListener("click",this.onClicker),t.log("Peripherals Mounted"),!0}unmount(e,t){return e.document.removeEventListener("pointerdown",this.onPointerDown),e.document.removeEventListener("pointerup",this.onPointerUp),e.document.removeEventListener("contextmenu",this.onContextMenu),e.document.removeEventListener("pointermove",this.onPointerMove),e.document.removeEventListener("click",this.onClicker),t.log("Peripherals Unmounted"),!0}}Ae.moduleName="peripherals";const It=class Ie extends J{constructor(){super(...arguments),this.mediaPlayingCount=0,this.allAnimations=new Set}wndOnErr(e){var t;(t=this.comms)==null||t.send("error",{message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno})}unblock(e){var t;for(e._readium_blockEvents=!1;((t=e._readium_blockedEvents)==null?void 0:t.length)>0;){const r=e._readium_blockedEvents.shift();switch(r[0]){case 0:Reflect.apply(r[1],r[2],r[3]);break;case 1:const n=r[1],s=r[2];e.removeEventListener(n.type,e._readium_eventBlocker,!0);const o=new Event(n.type,{bubbles:n.bubbles,cancelable:n.cancelable});s?s.dispatchEvent(o):e.dispatchEvent(o);break}}}onMediaPlayEvent(){var e;this.mediaPlayingCount++,(e=this.comms)==null||e.send("media_play",this.mediaPlayingCount)}onMediaPauseEvent(){var e;this.mediaPlayingCount>0&&this.mediaPlayingCount--,(e=this.comms)==null||e.send("media_pause",this.mediaPlayingCount)}pauseAllMedia(e){const t=e.document.querySelectorAll("audio,video");for(let r=0;r<t.length;r++)t[r].pause()}mount(e,t){this.comms=t,e.addEventListener("error",this.wndOnErr,!1),Reflect.defineProperty(e.navigator,"epubReadingSystem",{value:{name:"readium-ts-toolkit",version:"1.3.3",hasFeature:(n,s="")=>{switch(n){case"dom-manipulation":return!0;case"layout-changes":return!0;case"touch-events":return!0;case"mouse-events":return!0;case"keyboard-events":return!0;case"spine-scripting":return!0;case"embedded-web-content":return!0;default:return!1}}},writable:!1}),"getAnimations"in e.document&&e.document.getAnimations().forEach(n=>{n.cancel(),this.allAnimations.add(n)}),t.register("activate",Ie.moduleName,(n,s)=>{this.allAnimations.forEach(o=>{o.cancel(),o.play()}),s(!0)}),t.register("unfocus",Ie.moduleName,(n,s)=>{this.pauseAllMedia(e),this.allAnimations.forEach(o=>o.pause()),s(!0)});const r=e.document.querySelectorAll("audio,video");for(let n=0;n<r.length;n++){const s=r[n];s.addEventListener("play",this.onMediaPlayEvent,{passive:!0}),s.addEventListener("pause",this.onMediaPauseEvent,{passive:!0})}return t.log("Setup Mounted"),!0}unmount(e,t){return e.removeEventListener("error",this.wndOnErr),e.removeEventListener("play",this.onMediaPlayEvent),e.removeEventListener("pause",this.onMediaPauseEvent),this.allAnimations.forEach(r=>r.cancel()),this.allAnimations.clear(),t.log("Setup Unmounted"),!0}};It.moduleName="setup";let zt=It;const Dt="readium-viewport",Bt=class Q extends zt{onViewportWidthChanged(e){const t=e.target;Ne(t,"--RS__viewportWidth",`${t.innerWidth}px`)}mount(e,t){if(!super.mount(e,t))return!1;const r=e.document.createElement("meta");return r.dataset.readium="true",r.setAttribute("name","viewport"),r.setAttribute("id",Dt),r.setAttribute("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"),e.document.head.appendChild(r),e.addEventListener("orientationchange",this.onViewportWidthChanged),e.addEventListener("resize",this.onViewportWidthChanged),this.onViewportWidthChanged({target:e}),t.register("set_property",Q.moduleName,(n,s)=>{const o=n;Ne(e,o[0],o[1]),s(!0)}),t.register("remove_property",Q.moduleName,(n,s)=>{gt(e,n),s(!0)}),t.register("activate",Q.moduleName,(n,s)=>{this.unblock(e),s(!0)}),t.log("ReflowableSetup Mounted"),!0}unmount(e,t){var r;return t.unregisterAll(Q.moduleName),(r=e.document.head.querySelector(`#${Dt}`))==null||r.remove(),e.removeEventListener("orientationchange",this.onViewportWidthChanged),t.log("ReflowableSetup Unmounted"),super.unmount(e,t)}};Bt.moduleName="reflowable_setup";let Ui=Bt;const Wt="readium-fixed-style",Ft=class W extends zt{mount(e,t){if(!super.mount(e,t))return!1;e.navigator.epubReadingSystem.layoutStyle="paginated";const r=e.document.createElement("style");return r.id=Wt,r.dataset.readium="true",r.textContent=`
58
58
  html, body {
59
59
  text-size-adjust: none;
60
60
  -ms-text-size-adjust: none;
@@ -66,4 +66,4 @@
66
66
  min-height: 100%;
67
67
 
68
68
  /*cursor: var() TODO*/
69
- }`,e.document.head.appendChild(r),t.register("set_property",D.moduleName,(s,n)=>{const o=s;Oe(e,o[0],o[1]),n(!0)}),t.register("remove_property",D.moduleName,(s,n)=>{pt(e,s),n(!0)}),t.register("first_visible_locator",D.moduleName,(s,n)=>n(!1)),t.register("unfocus",D.moduleName,(s,n)=>{S(e),n(!0)}),t.register(["focus","go_next","go_prev","go_id","go_end","go_start","go_text","go_progression"],D.moduleName,(s,n)=>n(!0)),t.register("activate",D.moduleName,(s,n)=>{this.unblock(e),n(!0)}),t.log("FixedSetup Mounted"),!0}unmount(e,t){var r;return t.unregisterAll(D.moduleName),(r=e.document.getElementById(It))==null||r.remove(),t.log("FixedSetup Unmounted"),super.unmount(e,t)}};Dt.moduleName="fixed_setup";let Ri=Dt;const Ni=["fixed_setup","decorator","peripherals"],Li=["reflowable_setup","decorator","peripherals","column_snapper","scroll_snapper"],Me=new Map([Ri,Ai,Pe,yt,Si,Mi].map(i=>[i.moduleName,i]));class zi{constructor(e=window,t=[]){this.loadedModules=[],this.wnd=e,this.comms=new Ie(e);const r=[...new Set(t)];if(r.length){if(typeof e>"u")throw Error("Loader is not in a web browser");e.parent!==e&&this.comms.log("Loader is probably in a frame"),this.loadedModules=r.map(s=>{const n=this.loadModule(s);if(n)return n.mount(this.wnd,this.comms),n}).filter(s=>s!==void 0)}}loadModule(e){const t=Me.get(e);return t===void 0?(this.comms.log(`Module "${name}" does not exist in the library`),t):new t}addModule(e){const t=this.loadModule(e);return!t||!t.mount(this.wnd,this.comms)?!1:(this.loadedModules.push(t),!0)}removeModule(e){const t=Me.get(e);if(t===void 0)return this.comms.log(`Module "${e}" does not exist in the library`),!1;const r=this.loadedModules.findIndex(s=>s instanceof t);return r<0?!1:(this.loadedModules[r].unmount(this.wnd,this.comms),this.loadedModules.splice(r,1),!0)}destroy(){this.comms.destroy(),this.loadedModules.forEach(e=>e.unmount(this.wnd,this.comms)),this.loadedModules=[]}}w.COMMS_VERSION=H,w.Comms=Ie,w.Decorator=yt,w.FXLModules=Ni,w.Layout=mt,w.Loader=zi,w.Module=G,w.ModuleLibrary=Me,w.Peripherals=Pe,w.ReflowableModules=Li,w.Width=ft,w.mid=ze,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
69
+ }`,e.document.head.appendChild(r),t.register("set_property",W.moduleName,(n,s)=>{const o=n;Ne(e,o[0],o[1]),s(!0)}),t.register("remove_property",W.moduleName,(n,s)=>{gt(e,n),s(!0)}),t.register("first_visible_locator",W.moduleName,(n,s)=>s(!1)),t.register("unfocus",W.moduleName,(n,s)=>{S(e),s(!0)}),t.register(["focus","go_next","go_prev","go_id","go_end","go_start","go_text","go_progression"],W.moduleName,(n,s)=>s(!0)),t.register("activate",W.moduleName,(n,s)=>{this.unblock(e),s(!0)}),t.log("FixedSetup Mounted"),!0}unmount(e,t){var r;return t.unregisterAll(W.moduleName),(r=e.document.getElementById(Wt))==null||r.remove(),t.log("FixedSetup Unmounted"),super.unmount(e,t)}};Ft.moduleName="fixed_setup";let Hi=Ft;const $i=["fixed_setup","decorator","peripherals"],Vi=["reflowable_setup","decorator","peripherals","column_snapper","scroll_snapper"],Me=new Map([Hi,Ui,Ae,xt,Di,ki].map(i=>[i.moduleName,i]));class _i{constructor(e=window,t=[]){this.loadedModules=[],this.wnd=e,this.comms=new Be(e);const r=[...new Set(t)];if(r.length){if(typeof e>"u")throw Error("Loader is not in a web browser");e.parent!==e&&this.comms.log("Loader is probably in a frame"),this.loadedModules=r.map(n=>{const s=this.loadModule(n);if(s)return s.mount(this.wnd,this.comms),s}).filter(n=>n!==void 0)}}loadModule(e){const t=Me.get(e);return t===void 0?(this.comms.log(`Module "${name}" does not exist in the library`),t):new t}addModule(e){const t=this.loadModule(e);return!t||!t.mount(this.wnd,this.comms)?!1:(this.loadedModules.push(t),!0)}removeModule(e){const t=Me.get(e);if(t===void 0)return this.comms.log(`Module "${e}" does not exist in the library`),!1;const r=this.loadedModules.findIndex(n=>n instanceof t);return r<0?!1:(this.loadedModules[r].unmount(this.wnd,this.comms),this.loadedModules.splice(r,1),!0)}destroy(){this.comms.destroy(),this.loadedModules.forEach(e=>e.unmount(this.wnd,this.comms)),this.loadedModules=[]}}w.COMMS_VERSION=V,w.Comms=Be,w.Decorator=xt,w.FXLModules=$i,w.Layout=yt,w.Loader=_i,w.Module=J,w.ModuleLibrary=Me,w.Peripherals=Ae,w.ReflowableModules=Vi,w.Width=vt,w.mid=De,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@readium/navigator-html-injectables",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "type": "module",
5
5
  "description": "An embeddable solution for connecting frames of HTML publications with a Readium Navigator",
6
6
  "author": "readium",
@@ -46,11 +46,11 @@
46
46
  },
47
47
  "devDependencies": {
48
48
  "@juggle/resize-observer": "^3.4.0",
49
- "@readium/shared": "1.2.0",
50
- "css-selector-generator": "^3.6.4",
49
+ "css-selector-generator": "^3.6.9",
51
50
  "tslib": "^2.6.1",
52
51
  "typescript": "^5.4.5",
53
- "vite": "^4.5.5"
52
+ "vite": "^4.5.5",
53
+ "@readium/shared": "1.2.1"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "tsc && vite build"
@@ -68,13 +68,19 @@ export function nearestInteractiveElement(element: Element): Element | null {
68
68
  /// Returns the `Locator` object to the first block element that is visible on
69
69
  /// the screen.
70
70
  export function findFirstVisibleLocator(wnd: ReadiumWindow, scrolling: boolean) {
71
- const element = findElement(wnd, wnd.document.body, scrolling);
71
+ const element = findElement(wnd, wnd.document.body, scrolling) as HTMLElement;
72
+
73
+ // Use only the allowed selectors to generate the cssSelector and avoid a crash
74
+ const cssSelector = wnd._readium_cssSelectorGenerator.getCssSelector(element, {
75
+ selectors: ["tag", "id", "class", "nthchild", "nthoftype", "attribute"]
76
+ });
77
+
72
78
  return new Locator({
73
79
  href: "#",
74
80
  type: "application/xhtml+xml",
75
81
  locations: new LocatorLocations({
76
82
  otherLocations: new Map([
77
- ["cssSelector", wnd._readium_cssSelectorGenerator.getCssSelector(element)]
83
+ ["cssSelector", cssSelector]
78
84
  ])
79
85
  }),
80
86
  text: new LocatorText({
@@ -87,6 +93,9 @@ function findElement(wnd: ReadiumWindow, rootElement: Element, scrolling: boolea
87
93
  for (var i = 0; i < rootElement.children.length; i++) {
88
94
  const child = rootElement.children[i];
89
95
  if (!shouldIgnoreElement(child) && isElementVisible(wnd, child, scrolling)) {
96
+ // Once we get a fully visible element, return it
97
+ if (isElementFullyVisible(wnd, child)) return child;
98
+ // if the parent is not fully visible, search in the childs
90
99
  return findElement(wnd, child, scrolling);
91
100
  }
92
101
  }
@@ -111,11 +120,29 @@ function isElementVisible(wnd: ReadiumWindow, element: Element, scrolling: boole
111
120
  }
112
121
  }
113
122
 
123
+ /**
124
+ * Check if an element is fully visible in the current viewport.
125
+ * @param wnd Window instance to operate on
126
+ * @param element Element to check visibility of
127
+ * @returns True if the element is fully visible, false otherwise
128
+ */
129
+ function isElementFullyVisible(wnd: ReadiumWindow, element: Element): boolean {
130
+ const rect = element.getBoundingClientRect();
131
+ const isFullyVisible =
132
+ rect.top >= 0 &&
133
+ rect.left >= 0 &&
134
+ rect.bottom <= wnd.innerHeight &&
135
+ rect.right <= wnd.innerWidth;
136
+ return isFullyVisible;
137
+ }
138
+
114
139
  function shouldIgnoreElement(element: Element) {
115
140
  const elStyle = getComputedStyle(element);
116
141
  if (elStyle) {
117
142
  const display = elStyle.getPropertyValue("display");
118
- if (display != "block") {
143
+ // Added list-item as it is a common display property for list items
144
+ // TODO: Check if there are other display properties that should be ignored/considered
145
+ if (display != "block" && display != "list-item") {
119
146
  return true;
120
147
  }
121
148
  // Cannot be relied upon, because web browser engine reports invisible when out of view in
@@ -71,7 +71,7 @@ export class Peripherals extends Module {
71
71
  targetFrameSrc: this.wnd.location.href,
72
72
  targetElement: (event.target as Element).outerHTML,
73
73
  interactiveElement: nearestInteractiveElement(event.target as Element)?.outerHTML,
74
- cssSelector: this.wnd._readium_cssSelectorGenerator.getCssSelector(event.target),
74
+ cssSelector: this.wnd._readium_cssSelectorGenerator.getCssSelector(event.target as Element),
75
75
  } as FrameClickEvent);
76
76
 
77
77
  this.pointerMoved = false;