@prose-reader/core 0.0.46 → 0.0.48

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,6 +1,6 @@
1
- import { ComposableEnhancer, ComposeEnhancer2 } from './enhancers/composeEnhancer';
2
- import { Enhancer } from './enhancers/types';
3
- import { Reader as ReaderPublicApi } from './reader';
1
+ import { ComposableEnhancer, ComposeEnhancer2 } from "./enhancers/composeEnhancer";
2
+ import { Enhancer } from "./enhancers/types";
3
+ import { Reader as ReaderPublicApi } from "./reader";
4
4
  declare const withPublicApiOnly: <Api extends {
5
5
  context: any;
6
6
  registerHook: any;
@@ -748,10 +748,10 @@ declare const internalEnhancer: import("./enhancers/composeEnhancer").ComposeEnh
748
748
  computedSnapAnimationDuration: number;
749
749
  }>;
750
750
  state$: import("rxjs").Observable<{
751
- supportedPageTurnAnimation: ("none" | "fade" | "slide")[];
752
- supportedPageTurnMode: ("controlled" | "scrollable")[];
753
- supportedPageTurnDirection: ("vertical" | "horizontal")[];
754
- supportedComputedPageTurnDirection: ("vertical" | "horizontal")[];
751
+ supportedPageTurnAnimation: NonNullable<"none" | "fade" | "slide" | undefined>[];
752
+ supportedPageTurnMode: NonNullable<"controlled" | "scrollable" | undefined>[];
753
+ supportedPageTurnDirection: NonNullable<"vertical" | "horizontal" | undefined>[];
754
+ supportedComputedPageTurnDirection: NonNullable<"vertical" | "horizontal" | undefined>[];
755
755
  }>;
756
756
  ready$: import("rxjs").Observable<void>;
757
757
  selection$: import("rxjs").Observable<{
@@ -1532,10 +1532,10 @@ declare const internalEnhancer: import("./enhancers/composeEnhancer").ComposeEnh
1532
1532
  computedSnapAnimationDuration: number;
1533
1533
  }>;
1534
1534
  state$: import("rxjs").Observable<{
1535
- supportedPageTurnAnimation: ("none" | "fade" | "slide")[];
1536
- supportedPageTurnMode: ("controlled" | "scrollable")[];
1537
- supportedPageTurnDirection: ("vertical" | "horizontal")[];
1538
- supportedComputedPageTurnDirection: ("vertical" | "horizontal")[];
1535
+ supportedPageTurnAnimation: NonNullable<"none" | "fade" | "slide" | undefined>[];
1536
+ supportedPageTurnMode: NonNullable<"controlled" | "scrollable" | undefined>[];
1537
+ supportedPageTurnDirection: NonNullable<"vertical" | "horizontal" | undefined>[];
1538
+ supportedComputedPageTurnDirection: NonNullable<"vertical" | "horizontal" | undefined>[];
1539
1539
  }>;
1540
1540
  ready$: import("rxjs").Observable<void>;
1541
1541
  selection$: import("rxjs").Observable<{
@@ -13,7 +13,7 @@ declare const defaultThemes: ({
13
13
  backgroundColor: string;
14
14
  foregroundColor: string;
15
15
  })[];
16
- export declare type Theme = (typeof defaultThemes[number])[`name`] | `publisher`;
16
+ export declare type Theme = typeof defaultThemes[number][`name`] | `publisher`;
17
17
  export declare const themeEnhancer: Enhancer<{
18
18
  theme?: Theme;
19
19
  }, {
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { createReaderWithEnhancer as createReader, Reader, ExternalEnhancer as Enhancer, ReaderOptions } from './createReaderWithEnhancer';
2
- import { createSelection } from './selection';
3
- export { compose } from './utils/compose';
4
- export { ComposeEnhancer2, ComposeEnhancer3, ComposeEnhancer } from './enhancers/composeEnhancer';
5
- export { Manifest } from './types';
1
+ import { createReaderWithEnhancer as createReader, Reader, ExternalEnhancer as Enhancer, ReaderOptions } from "./createReaderWithEnhancer";
2
+ import { createSelection } from "./selection";
3
+ export { compose } from "./utils/compose";
4
+ export { ComposeEnhancer2, ComposeEnhancer3, ComposeEnhancer } from "./enhancers/composeEnhancer";
5
+ export { Manifest } from "./types";
6
6
  export { createReader, Reader, Enhancer, ReaderOptions };
7
7
  export declare type ReaderSelection = ReturnType<typeof createSelection>;
8
- export { Report } from './report';
9
- export { composeEnhancer } from './enhancers/composeEnhancer';
10
- export { groupBy, isShallowEqual } from './utils/objects';
8
+ export { Report } from "./report";
9
+ export { composeEnhancer } from "./enhancers/composeEnhancer";
10
+ export { groupBy, isShallowEqual } from "./utils/objects";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={36:(e,t)=>{(()=>{"use strict";var e={d:(t,n)=>{for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},n={};e.r(n),e.d(n,{detectContentType:()=>o,getUrlExtension:()=>i,parseContentType:()=>r});const i=e=>{var t,n;return(null===(n=null===(t=e.split(/[#?]/)[0])||void 0===t?void 0:t.split(".").pop())||void 0===n?void 0:n.trim())||""},o=e=>{switch(i(e)){case"png":return"image/png";case"jpg":return"image/jpg";case"jpeg":return"image/jpeg";case"txt":return"text/plain";case"webp":return"image/webp"}},r=e=>{if(e.length)return e.indexOf(";")?e.substring(0,e.indexOf(";")):e};var a=t;for(var s in n)a[s]=n[s];n.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})})()}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{Report:()=>h,compose:()=>$,composeEnhancer:()=>O,createReader:()=>ze,groupBy:()=>d,isShallowEqual:()=>c});const e=require("rxjs"),t=require("rxjs/operators");var o=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const r=(e,t)=>t.some((t=>t in e)),a=e=>(0,t.map)((t=>Object.entries(t).reduce(((t,[n,i])=>e.includes(n)?Object.assign(Object.assign({},t),{[n]:i}):t),{}))),s=Object.prototype.hasOwnProperty,l=(e,t)=>e===t&&(0!==e||0!==t||1/e==1/t),c=(e,t,n)=>{if(e===t)return!0;if("object"!=typeof e||null===e)return!1;if("object"!=typeof t||null===t)return!1;const i=Object.keys(e),o=Object.keys(t);if(i.length!==o.length)return!1;const r=n&&"function"==typeof n.customEqual?n.customEqual:l;for(let n=0;n<i.length;n++){const o=i[n]||"";if(!s.call(t,o)||!r(e[o],t[o]))return!1}return!0},d=(e,t)=>e.reduce(((e,n)=>{const i=t(n);return e[i]||(e[i]=[]),e[i].push(n),e}),{});var g=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const u="@prose-reader/core",p=e=>`[${e}]`,m=(e,t=0)=>{let n=0;const i=performance.now();return()=>{n++;const o=performance.now();h.logMetric({name:`${e} - tick ${n}`,duration:o-i},t)}},f=e=>({log:(...t)=>{window.__PROSE_READER_DEBUG&&(e?console.log(p(u),p(e),...t):console.log(p(u),...t))},warn:(...t)=>{window.__PROSE_READER_DEBUG&&(e?console.warn(p(u),p(e),...t):console.warn(p(u),...t))},error:(...e)=>{console.error(...e)},time:m,logMetric:(e,t=0)=>{window.__PROSE_READER_DEBUG&&(e.duration<=t||console.warn("[prose-reader] [metric] ",`${e.name} took ${e.duration}ms which is above the ${t}ms target for this function`))},measurePerformance:(e,t=10,n,{disable:i}={})=>i||!window.__PROSE_READER_DEBUG?n:(...i)=>{const o=performance.now(),r=n(...i);if(r&&r.then)return r.then((n=>{const i=performance.now();return h.logMetric({name:e,duration:i-o},t),n}));const a=performance.now();return h.logMetric({name:e,duration:a-o},t),r}}),h=Object.assign(Object.assign({},f()),{namespace:e=>f(e)}),v=({context:t})=>{const n=new e.BehaviorSubject({beginPageIndex:void 0,beginNumberOfPages:0,beginCfi:void 0,beginSpineItemIndex:void 0,endPageIndex:void 0,endNumberOfPages:0,endCfi:void 0,endSpineItemIndex:void 0}),i=e=>({numberOfPages:(e=>{const n=e.spineItemFrame.getWritingMode(),{width:i,height:o}=e.getElementDimensions();return"vertical-rl"===n?y(o,t.getPageSize().height):y(i,t.getPageSize().width)})(e.spineItem),pageIndex:e.pageIndex,cfi:e.cfi});return{destroy:()=>{n.complete()},updateBeginAndEnd:h.measurePerformance("pagination updateBeginAndEnd",1,((e,t)=>{const o=i(e),r=i(t),a={beginPageIndex:o.pageIndex,beginNumberOfPages:o.numberOfPages,beginCfi:o.cfi,beginSpineItemIndex:e.spineItemIndex,endPageIndex:r.pageIndex,endNumberOfPages:r.numberOfPages,endCfi:r.cfi,endSpineItemIndex:t.spineItemIndex};n.next(Object.assign(Object.assign({},n.value),a))}),{disable:!0}),getInfo:()=>n.value,$:{info$:n.asObservable().pipe((0,e.distinctUntilChanged)(c))}}},b=(e,t,n)=>{const i=n-e,o=n*(t*e)/n;return Math.max(0,Math.min(i,o))},y=(e,t)=>0===(t||0)||0===(e||0)?1:Math.floor(Math.max(1,e/t)),x=(e,t,n)=>{const i=y(n,t),o=[...Array(i)].map(((e,n)=>n*t));return e>=i*t?o[o.length-1]||0:o.find((n=>e<n+t))||0},w=h.namespace("paginationEnhancer"),S=(e,t)=>{const{path:n}=t;return P(n,e.nav.toc)},P=(e,t)=>t.reduce(((t,n)=>{const i=n.path.indexOf("#"),o=i>0?n.path.substr(0,i):n.path;if(e.endsWith(o))return{title:n.title,path:n.path};const r=P(e,n.contents);return r?{subChapter:r,title:n.title,path:n.path}:t}),void 0),I=[{name:"bright",backgroundColor:"white"},{name:"sepia",backgroundColor:"#eaddc7",foregroundColor:"black"},{name:"night",backgroundColor:"#191717",foregroundColor:"#f1ebeb"}];function $(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...n)=>t(e(...n))))}function O(...e){return $(...e)}const E=({newScale:e,oldScale:t,screenSize:n,scrollOffset:i})=>{const o=n*e/2-n+n/2,r=e/t,a=i-(n*t/2-n+n/2);return Math.max(o+a*r,0)},j=(e,t,n)=>{var i;t.computedPageTurnDirection=t.pageTurnDirection,t.computedPageTurnAnimation=t.pageTurnAnimation,t.computedPageTurnMode="controlled","scrolled-continuous"===(null==e?void 0:e.renditionFlow)?(t.computedPageTurnMode="scrollable",t.computedPageTurnDirection="vertical"):e&&"scrollable"===t.pageTurnMode&&("pre-paginated"!==e.renditionLayout||(null==(i=e)?void 0:i.spineItems.some((e=>"reflowable"===e.renditionLayout))))?(h.warn(`pageTurnMode ${t.pageTurnMode} incompatible with current book, switching back to default`),t.computedPageTurnAnimation="none",t.computedPageTurnMode="controlled"):"scrollable"===t.pageTurnMode&&(t.computedPageTurnMode="scrollable",t.computedPageTurnDirection="vertical"),n&&"slide"===t.computedPageTurnAnimation&&(h.warn(`pageTurnAnimation ${t.computedPageTurnAnimation} incompatible with current book, switching back to default`),t.computedPageTurnAnimation="none"),"scrollable"===t.computedPageTurnMode?(t.computedPageTurnAnimationDuration=0,t.computedPageTurnAnimation="none"):t.computedPageTurnAnimationDuration=void 0!==t.pageTurnAnimationDuration?t.pageTurnAnimationDuration:300},T=n=>{let i,o;const r=new e.BehaviorSubject(!1),a=new e.Subject,s={width:0,height:0,x:0,y:0},l=new e.Subject,d=(n=>{const i=Object.assign({forceSinglePageMode:!1,pageTurnAnimation:"none",computedPageTurnAnimation:"none",pageTurnDirection:"horizontal",computedPageTurnDirection:"horizontal",pageTurnAnimationDuration:void 0,computedPageTurnAnimationDuration:0,pageTurnMode:"controlled",computedPageTurnMode:"controlled",computedSnapAnimationDuration:300,navigationSnapThreshold:.3},n);j(void 0,i,!1);const o=new e.BehaviorSubject(i);return{getSettings:()=>o.value,setSettings:(e,t)=>{if(0===Object.keys(e).length)return;const n=Object.assign(Object.assign({},o.value),e);j(t.manifest,n,t.hasVerticalWritingSubject),o.next(n)},recompute:e=>{const t=Object.assign({},o.value);j(e.manifest,t,e.hasVerticalWritingSubject),o.next(t)},destroy:()=>{o.complete()},$:{settings$:o.asObservable().pipe((0,t.distinctUntilChanged)(c))}}})(n),g=()=>{const{height:e,width:t}=s,n=t>e;return!d.getSettings().forceSinglePageMode&&("scrolled-continuous"!==(null==i?void 0:i.renditionFlow)&&(!n&&"portrait"===(null==i?void 0:i.renditionSpread)||n&&(void 0===(null==i?void 0:i.renditionSpread)||"auto"===(null==i?void 0:i.renditionSpread)||"landscape"===(null==i?void 0:i.renditionSpread)||"both"===(null==i?void 0:i.renditionSpread))))};r.pipe((0,t.skip)(1),(0,t.distinctUntilChanged)(),(0,t.tap)((()=>{d.recompute({manifest:i,hasVerticalWritingSubject:r.value})})),(0,t.takeUntil)(l)).subscribe();return{load:(e,t)=>{i=e,o=t,d.recompute({manifest:i,hasVerticalWritingSubject:r.value}),a.next(e)},isRTL:()=>"rtl"===(null==i?void 0:i.readingDirection),areAllItemsPrePaginated:()=>C(i),destroy:()=>{d.destroy(),a.complete(),l.next(),l.complete(),r.complete()},getLoadOptions:()=>o,getCalculatedInnerMargin:()=>0,getVisibleAreaRect:()=>s,shouldDisplaySpread:g,setHasVerticalWriting:()=>r.next(!0),setVisibleAreaRect:(e,t,n,i)=>{s.width=n,s.height=i-0-0,s.x=e,s.y=t},getManifest:()=>i,getReadingDirection:()=>null==i?void 0:i.readingDirection,getPageSize:()=>({width:g()?s.width/2:s.width,height:s.height}),getSettings:d.getSettings,setSettings:e=>d.setSettings(e,{hasVerticalWritingSubject:r.value,manifest:i}),$:{hasVerticalWriting$:r.asObservable().pipe((0,t.distinctUntilChanged)()),destroy$:l.asObservable(),settings$:d.$.settings$,load$:a.asObservable()}}},C=e=>!(null==e?void 0:e.spineItems.some((e=>"reflowable"===e.renditionLayout))),M="__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT",F=[".xhtml",".html",".htm"],L=e=>t=>{if(e&&e.contentDocument&&e.contentDocument.head){const n=e.contentDocument.getElementById(t);n&&n.remove()}},R=e=>(t,n,i=!1)=>{if(e&&e.contentDocument&&e.contentDocument.head){const o=document.createElement("style");o.id=t,o.innerHTML=n,i?e.contentDocument.head.prepend(o):e.contentDocument.head.appendChild(o)}},N=(e,t)=>{const n=new RegExp(t+"\\s*=\\s*([0-9.]+)","i"),i=e.match(n)||[],o=i[1]||"0";return i&&parseFloat(o)||0},k=h.measurePerformance("SpineItemFrame createFrame",1/0,(()=>{const t=document.createElement("iframe");return t.frameBorder="no",t.tabIndex=0,t.setAttribute("sandbox","allow-same-origin allow-scripts"),t.scrolling="no",t.style.cssText="\n visibility: hidden;\n overflow: hidden;\n background-color: transparent;\n border: 0px none transparent;\n padding: 0px;\n transition: opacity 300ms;\n opacity: 0;\n ",(0,e.of)(t)})),D=e=>({frame:e,removeStyle:L(e),addStyle:R(e)});var A=n(36),U=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const B=(e,t)=>U(void 0,void 0,void 0,(function*(){if("string"==typeof e)return e;const n=(0,A.parseContentType)(e.headers.get("Content-Type")||"")||(0,A.detectContentType)(t.href);if(["image/jpg","image/jpeg","image/png","image/webp"].some((e=>e===n))){const n=yield(e=>{const t=new FileReader;return new Promise((n=>{t.addEventListener("load",(function(){n(t.result)}),!1),t.readAsDataURL(e)}))})(yield e.blob());return`\n <html>\n <head>\n ${"reflowable"!==t.renditionLayout?'<meta name="viewport" content="width=device-width, minimum-scale=0.1">':""}\n </head>\n <body style="margin: 0px;" tab-index="-1;">\n <img\n src="${n}"\n style="max-width: 100%;height:100%;object-fit:contain;"\n >\n </body>\n </html>\n `}if(["text/plain"].some((e=>e===n))){return`\n <!DOCTYPE html>\n <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">\n <head>\n <style>\n pre {\n white-space: pre;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n </style>\n </head>\n <body>\n <pre>${yield e.text()}</pre>\n </body>\n </html>\n `}return yield e.text()})),z=e=>"item.onLoad"===e.name,V=({item:n,parent:i,fetchResource:o,hooks$:r,context:a,viewportState$:s})=>{const l=new e.Subject,c=new e.Subject,d=new e.Subject,g=new e.BehaviorSubject(void 0),u=new e.BehaviorSubject(!1),p=new e.BehaviorSubject(!1);let m,f=[];const v=e=>(e.pipe((0,t.takeUntil)(a.$.destroy$)).subscribe(),e),b=s.pipe((0,t.filter)((e=>"free"===e)),(0,t.take)(1)),y=d.asObservable().pipe((0,t.withLatestFrom)(g),(0,t.filter)((([e,t])=>!!t)),(0,t.map)((([,e])=>{f.forEach((e=>{e&&"unsubscribe"in e?e.unsubscribe():e&&e()})),f=[],null==e||e.remove(),g.next(void 0)})),(0,t.share)(),(0,t.takeUntil)(l)),x=c.asObservable().pipe((0,t.withLatestFrom)(u),(0,t.filter)((([e,t])=>!t)),(0,t.exhaustMap)((()=>k().pipe((0,t.mergeMap)((e=>b.pipe((0,t.mapTo)(e)))),(0,t.mergeMap)((r=>{if(i.appendChild(r),g.next(r),!o&&n.href.startsWith(window.location.origin)&&(n.mediaType&&["application/xhtml+xml","application/xml","text/html","text/xml"].includes(n.mediaType)||!n.mediaType&&F.some((e=>n.href.endsWith(e)))))return null==r||r.setAttribute("src",n.href),(0,e.of)(r);{const i=o||(()=>fetch(n.href));return(0,e.from)(i(n)).pipe((0,t.mergeMap)((e=>(e=>B(e,n))(e))),(0,t.tap)((e=>{null==r||r.setAttribute("srcdoc",e)})),(0,t.map)((()=>r)))}})),(0,t.mergeMap)((i=>i?(i.setAttribute("sandbox","allow-same-origin allow-scripts"),(0,e.fromEvent)(i,"load").pipe((0,t.take)(1),(0,t.withLatestFrom)(r),(0,t.mergeMap)((([t,o])=>{var r,s;const l=null===(r=i.contentDocument)||void 0===r?void 0:r.body;if(!l)return h.error(`Something went wrong on iframe load ${n.id}`),e.EMPTY;i.setAttribute("role","main"),(null==i?void 0:i.contentDocument)&&l&&(m=null===(s=null==i?void 0:i.contentWindow)||void 0===s?void 0:s.getComputedStyle(l)),"scrollable"!==a.getSettings().computedPageTurnMode&&i.setAttribute("tab-index","0");const c=D(i);return f=o.filter(z).map((e=>{const t=e.fn(Object.assign(Object.assign({},c),{item:n}));return t&&"subscribe"in t?t.subscribe():t})),(0,e.of)(i)})))):e.EMPTY)),(0,t.takeUntil)(d)))),(0,t.share)(),v,(0,t.takeUntil)(l)),w=x.pipe((0,t.switchMap)((n=>{var i;return(0,e.from)((null===(i=null==n?void 0:n.contentDocument)||void 0===i?void 0:i.fonts.ready)||(0,e.of)(void 0)).pipe((0,t.takeUntil)(d))})),(0,t.share)(),v,(0,t.takeUntil)(l));return(0,e.merge)(x.pipe((0,t.mapTo)(!0)),d.pipe((0,t.mapTo)(!1))).pipe((0,t.distinctUntilChanged)(),(0,t.takeUntil)(l)).subscribe(u),(0,e.merge)(w.pipe((0,t.mapTo)(!0)),d.pipe((0,t.mapTo)(!1))).pipe((0,t.distinctUntilChanged)(),(0,t.takeUntil)(l)).subscribe(p),y.subscribe(),{load:()=>c.next(),unload:()=>d.next(),destroy:()=>{c.complete(),d.complete(),g.complete(),l.next(),l.complete(),p.complete(),u.complete()},getComputedStyleAfterLoad:()=>m,$:{load$:c.asObservable(),unload$:d.asObservable(),loaded$:x,isLoaded$:u.asObservable(),isReady$:p.asObservable().pipe((0,t.distinctUntilChanged)()),ready$:w,unloaded$:y,frameElement$:g}}};const W=h.measurePerformance("getFirstVisibleNodeForViewport",1,((e,t)=>{const n=H("body"in e?e.body:e,t),i="createRange"in e?e:e.ownerDocument;if(n){let e,o=0;const r=i.createRange();return Array.from(n.childNodes).some((n=>{r.selectNodeContents(n);const a=function(e,t){return Array.from(e).find((e=>{const n=_(e,t);return"before"!==n&&"after"!==n}))}(r.getClientRects(),t);if(a){e=r.cloneRange();const t=(s=i,l=Math.ceil(a.left),c=Math.ceil(a.top),"caretPositionFromPoint"in s?s.caretPositionFromPoint(l,c):void 0!==s.caretRangeFromPoint?s.caretRangeFromPoint(l,c):void 0);return t&&"startContainer"in t&&t.startContainer===e.startContainer&&(o=t.startOffset),t&&"offsetNode"in t&&t.offsetNode===e.startContainer&&(o=t.offset),!0}var s,l,c;return!1})),e?{node:e.startContainer,offset:o}:{node:n,offset:0}}})),H=(e,t)=>{let n;const i=_(e.getBoundingClientRect(),t);return"before"!==i&&"after"!==i&&(n=e),Array.from(e.children).some((e=>{const i=H(e,t);return!!i&&(n=i,!0)})),n};function _(e,{left:t,right:n}){return e.left<=t&&e.right<=t?"before":e.left<=t&&e.right>t&&e.right<=n?"partially-before":e.left<=n&&e.right>n?"partially-after":e.left>n?"after":"within"}const Y=e=>{var t,n,i,o,r;if((null==e?void 0:e.target)&&(null===(n=null===(t=null==e?void 0:e.target)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.defaultView)){const t=null===(o=null===(i=null==e?void 0:e.target)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(t.PointerEvent)return e instanceof t.PointerEvent}if((null==e?void 0:e.view)&&(null===(r=null==e?void 0:e.view)||void 0===r?void 0:r.window)){const t=null==e?void 0:e.view;if(t.PointerEvent)return e instanceof t.PointerEvent}return!1},X=e=>{var t,n,i,o,r;if(Y(e))return!1;if((null==e?void 0:e.target)&&(null===(n=null===(t=null==e?void 0:e.target)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.defaultView)){const t=null===(o=null===(i=null==e?void 0:e.target)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(t.MouseEvent)return e instanceof t.MouseEvent}if((null==e?void 0:e.view)&&(null===(r=null==e?void 0:e.view)||void 0===r?void 0:r.window)){const t=null==e?void 0:e.view;if(t.MouseEvent)return e instanceof t.MouseEvent}return!1};var J=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const q=[...["pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],...["mousedown","mouseup","mouseenter","mouseleave","mousemove","mouseout","mouseover"]],G=({item:n,context:i,parentElement:o,iframeEventBridgeElement:r,hooks$:a,viewportState$:s})=>{var l;const c=new e.Subject,d=Z(o,n,a),g=K(o,n),u=(()=>{const t={x:void 0,y:void 0},n=new e.Subject;let i=!1;return{track:e=>{var o,r,a;t.x=void 0,t.y=void 0,null===(o=e.contentDocument)||void 0===o||o.addEventListener("mousedown",(e=>{i=!0,t.x=e.x,t.y=e.y,n.next({event:"fingermove",data:{x:e.x,y:e.y}})})),null===(r=e.contentDocument)||void 0===r||r.addEventListener("mouseup",(()=>{i=!1,t.x=void 0,t.y=void 0,n.next({event:"fingerout",data:void 0})})),null===(a=e.contentDocument)||void 0===a||a.addEventListener("mousemove",(e=>{i&&n.next({event:"fingermove",data:{x:e.x,y:e.y}})}))},getFingerPositionInIframe:()=>void 0===t.x||void 0===t.y?void 0:t,destroy:()=>{},$:n.asObservable()}})(),p=(()=>{let t,n=!1;const i=new e.Subject,o=["mouseup","pointerup"];return{track:e=>{var r,a;t=e,o.forEach((t=>{var i;null===(i=e.contentWindow)||void 0===i||i.addEventListener(t,(()=>{n=!1}))})),null===(r=e.contentDocument)||void 0===r||r.addEventListener("selectionchange",(()=>{var e;i.next({event:"selectionchange",data:(null===(e=null==t?void 0:t.contentWindow)||void 0===e?void 0:e.getSelection())||null})})),null===(a=e.contentWindow)||void 0===a||a.addEventListener("selectstart",(()=>{n=!0}))},destroy:()=>{},isSelecting:()=>n,getSelection:()=>{var e;const n=null===(e=null==t?void 0:t.contentWindow)||void 0===e?void 0:e.getSelection();if((null==n?void 0:n.anchorNode)&&"None"!==n.type&&"Caret"!==n.type)return n},$:i.asObservable()}})(),m=Q(r,u,p),f=(({item:n,parent:i,fetchResource:o,context:r,hooks$:a,viewportState$:s})=>{const l=new e.Subject,{$:{unload$:c,loaded$:d,isLoaded$:g,isReady$:u,unloaded$:p,frameElement$:m,ready$:f},load:h,unload:v,destroy:b,getComputedStyleAfterLoad:y}=V({context:r,hooks$:a,item:n,parent:i,fetchResource:o,viewportState$:s}),x=new e.BehaviorSubject(!1),w=new e.BehaviorSubject(!1);g.subscribe(x),u.subscribe(w);const S=()=>{var e;return null===(e=y())||void 0===e?void 0:e.writingMode},P=(0,e.merge)(p.pipe((0,t.map)((()=>({isFirstLayout:!1})))),f.pipe((0,t.map)((()=>({isFirstLayout:!0})))));return{getIsLoaded:()=>x.value,getIsReady:()=>w.value,getViewportDimensions:()=>{const e=m.getValue();if(e&&(null==e?void 0:e.contentDocument)){const t=e.contentDocument.querySelector("meta[name='viewport']");if(t){const e=t.getAttribute("content");if(e){const t=N(e,"width"),n=N(e,"height");return t>0&&n>0?{width:t,height:n}:void 0}}}},getFrameElement:()=>m.getValue(),getHtmlFromResource:e=>B(e,n),load:h,unload:v,staticLayout:e=>{const t=m.getValue();t&&(t.style.width=`${e.width}px`,t.style.height=`${e.height}px`,"scrollable"!==r.getSettings().computedPageTurnMode&&t.setAttribute("tab-index","0"))},getManipulableFrame:()=>{const e=m.getValue();if(x.value&&e)return D(e)},getReadingDirection:()=>{var e;if("vertical-rl"===S())return"rtl";const t=null===(e=y())||void 0===e?void 0:e.direction;return["ltr","rtl"].includes(t||"")?t:void 0},isUsingVerticalWriting:()=>{var e;return!!(null===(e=S())||void 0===e?void 0:e.startsWith("vertical"))},getWritingMode:S,destroy:()=>{v(),b(),l.next(),l.complete()},$:{unload$:c,unloaded$:p,loaded$:d,ready$:f,isReady$:w.asObservable(),contentLayoutChange$:P}}})({parent:d,item:n,context:i,fetchResource:null===(l=i.getLoadOptions())||void 0===l?void 0:l.fetchResource,hooks$:a.asObservable().pipe((0,t.map)((e=>[...e,...m]))),viewportState$:s});let h;d.appendChild(g),o.appendChild(d);const v=()=>{var e;return!!(null===(e=n.mediaType)||void 0===e?void 0:e.startsWith("image/"))},b=()=>{var e;const{width:t,height:n}=i.getPageSize(),o=f.getViewportDimensions(),r=null===(e=f.getManipulableFrame())||void 0===e?void 0:e.frame;if(d&&(null==r?void 0:r.contentDocument)&&(null==r?void 0:r.contentWindow)&&o){const e=t/o.width;return{computedScale:Math.min(e,n/o.height),computedWidthScale:e,viewportDimensions:o}}return Object.assign({computedScale:1,computedWidthScale:1},o)},y=()=>{h=void 0},x=f.$.contentLayoutChange$.pipe((0,t.withLatestFrom)(f.$.isReady$),(0,t.map)((([e,t])=>({isFirstLayout:e.isFirstLayout,isReady:t}))));return{load:()=>{y()},layout:({height:e,width:t})=>{d.style.width=`${t}px`,d.style.height=`${e}px`,y()},adjustPositionOfElement:({right:e,left:t,top:n})=>{void 0!==e?d.style.right=`${e}px`:d.style.removeProperty("right"),void 0!==t?d.style.left=`${t}px`:d.style.removeProperty("left"),void 0!==n?d.style.top=`${n}px`:d.style.removeProperty("top")},getElementDimensions:()=>{if(h)return h;const e=d.getBoundingClientRect(),t=Object.assign(Object.assign({},e),{width:Math.round(10*e.width)/10,height:Math.round(10*e.height)/10});return h=t,h},getHtmlFromResource:f.getHtmlFromResource,getResource:()=>J(void 0,void 0,void 0,(function*(){const e=i.getLoadOptions(),t=a.getValue().reduce(((e,t)=>"item.onGetResource"===t.name?t.fn(e):e),(t=>(null==e?void 0:e.fetchResource)?e.fetchResource(n):fetch(n.href)));return yield t(n)})),translateFramePositionIntoPage:e=>{var t;const{left:n=0,top:i=0}=(null===(t=f.getFrameElement())||void 0===t?void 0:t.getBoundingClientRect())||{},{computedScale:o=1}=b()||{};return{clientX:e.clientX*o+n,clientY:e.clientY*o+i}},setLayoutDirty:y,injectStyle:e=>{var t,n;null===(t=f.getManipulableFrame())||void 0===t||t.removeStyle("prose-reader-css"),null===(n=f.getManipulableFrame())||void 0===n||n.addStyle("prose-reader-css",e)},loadContent:()=>f.load(),unloadContent:()=>f.unload(),spineItemFrame:f,element:d,isReflowable:!1,getBoundingRectOfElementFromSelector:e=>{var t,n,i,o,r;const a=null===(t=f.getManipulableFrame())||void 0===t?void 0:t.frame;if(a&&e)return e.startsWith("#")?null===(i=null===(n=a.contentDocument)||void 0===n?void 0:n.getElementById(e.replace("#","")))||void 0===i?void 0:i.getBoundingClientRect():null===(r=null===(o=a.contentDocument)||void 0===o?void 0:o.querySelector(e))||void 0===r?void 0:r.getBoundingClientRect()},getViewPortInformation:b,isImageType:v,isReady:f.getIsReady,destroy:()=>{c.next(),d.remove(),null==f||f.destroy(),u.destroy(),p.destroy(),c.complete()},isUsingVerticalWriting:()=>{var e;return null===(e=f.getWritingMode())||void 0===e?void 0:e.startsWith("vertical")},getReadingDirection:()=>f.getReadingDirection()||i.getReadingDirection(),manipulateSpineItem:e=>{const t=f.getManipulableFrame();return e(t?Object.assign(Object.assign({},t),{container:d,item:n,overlayElement:g}):{container:d,item:n,frame:void 0,removeStyle:()=>{},addStyle:()=>{},overlayElement:g})},executeOnLayoutBeforeMeasurmentHook:e=>a.getValue().forEach((t=>{"item.onLayoutBeforeMeasurment"===t.name&&t.fn(Object.assign({frame:f,container:d,item:n,isImageType:v},e))})),selectionTracker:p,fingerTracker:u,$:{contentLayout$:x,loaded$:f.$.loaded$,isReady$:f.$.isReady$}}},Z=(e,t,n)=>{const i=e.ownerDocument.createElement("div");return i.classList.add("spineItem"),i.classList.add(`spineItem-${t.renditionLayout}`),i.style.cssText="\n position: absolute;\n overflow: hidden;\n ",n.getValue().reduce(((e,t)=>"item.onBeforeContainerCreated"===t.name?t.fn(e):e),i)},K=(e,t)=>{const n=e.ownerDocument.createElement("div");return n.classList.add("spineItemOverlay"),n.classList.add(`spineItemOverlay-${t.renditionLayout}`),n.style.cssText="\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background-color: transparent;\n ",n},Q=(e,t,n)=>[{name:"item.onLoad",fn:({frame:i})=>{const o=q.map((t=>{var n;const o=t=>{let n=t;Y(t)&&(n=new PointerEvent(t.type,t)),X(t)&&(n=new MouseEvent(t.type,t)),n!==t&&(((e,t)=>{Object.defineProperty(e,M,{value:t,enumerable:!0})})(n,t),e.dispatchEvent(n))};return null===(n=i.contentDocument)||void 0===n||n.addEventListener(t,o),()=>{var e;null===(e=i.contentDocument)||void 0===e||e.removeEventListener(t,o)}}));return n.track(i),t.track(i),()=>{o.forEach((e=>e()))}}}],ee=({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r})=>{const a=G({context:t,item:e,parentElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}),s=a.spineItemFrame,l=({blankPagePosition:e,minimumWidth:n,spreadPosition:i})=>{var o;const{width:r,height:l}=t.getPageSize(),{viewportDimensions:c,computedScale:d}=a.getViewPortInformation(),g=t.getVisibleAreaRect(),u=null===(o=s.getManipulableFrame())||void 0===o?void 0:o.frame;if((null==s?void 0:s.getIsLoaded())&&(null==u?void 0:u.contentDocument)&&(null==u?void 0:u.contentWindow)){const o=r,l=g.height+t.getCalculatedInnerMargin(),p=te(Object.assign(Object.assign({},(()=>{const e=t.getPageSize(),n=e.width;return{columnHeight:e.height,columnWidth:n}})()),{enableTouch:"scrollable"!==t.getSettings().computedPageTurnMode,spreadPosition:i}),c);if(null==u||u.style.setProperty("visibility","visible"),null==u||u.style.setProperty("opacity","1"),c){a.injectStyle(p),s.staticLayout({width:c.width,height:c.height}),null==u||u.style.setProperty("--scale",`${d}`),null==u||u.style.setProperty("position","absolute"),null==u||u.style.setProperty("top","50%"),"left"===i?(null==u||u.style.setProperty("right","0"),null==u||u.style.removeProperty("left")):"before"===e&&t.isRTL()?(null==u||u.style.setProperty("right","50%"),null==u||u.style.removeProperty("left")):"right"===i?(null==u||u.style.setProperty("left","0"),null==u||u.style.removeProperty("right")):(null==u||u.style.setProperty("left","before"===e?t.isRTL()?"25%":"75%":"after"===e?t.isRTL()?"75%":"25%":"50%"),null==u||u.style.removeProperty("right"));const o="none"!==i?"0":"-50%",r="right"===i&&"before"!==e?"left":"left"===i||"before"===e&&t.isRTL()?"right":"center";null==u||u.style.setProperty("transform",`translate(${o}, -50%) scale(${d})`),null==u||u.style.setProperty("transform-origin",`${r} center`),a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n})}else a.injectStyle(p),s.staticLayout({width:o,height:l}),"before"===e?t.isRTL()?null==u||u.style.setProperty("margin-right",`${r}px`):null==u||u.style.setProperty("margin-left",`${r}px`):(null==u||u.style.removeProperty("margin-left"),null==u||u.style.removeProperty("margin-right"));return a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),a.layout({width:n,height:l}),{width:n,height:l}}return a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),a.layout({width:n,height:l}),{width:n,height:l}};return Object.assign(Object.assign({},a),{layout:e=>l(e)})},te=({columnWidth:e,enableTouch:t,spreadPosition:n},i)=>`\n body {\n \n }\n body {\n margin: 0;\n ${i?"":`\n display: flex;\n justify-content: ${"left"===n?"flex-end":"right"===n?"flex-start":"center"};\n `}\n }\n \n html, body {\n height: 100%;\n width: 100%;\n }\n \n html, body {\n -max-width: ${e}px !important;\n }\n \n html, body {\n ${t?"\n touch-action: none\n ":""}\n }\n \n img {\n user-select: none;\n -webkit-user-drag: none;\n -khtml-user-drag: none;\n -moz-user-drag: none;\n -o-user-drag: none;\n user-drag: none;\n \n display: flex;\n \n ${i?"":"\n -width: 100%;\n max-width: 100%;\n height:100%;\n object-fit:contain;\n "}\n }\n `,ne=({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r})=>{const a=G({context:t,item:e,parentElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}),s=a.spineItemFrame;let l;return Object.assign(Object.assign({},a),{isReflowable:!0,layout:({blankPagePosition:e,minimumWidth:n})=>{var i,o,r,c,d,g,u,p;const{width:m,height:f}=t.getPageSize();null===(o=null===(i=s.getManipulableFrame())||void 0===i?void 0:i.frame)||void 0===o||o.style.setProperty("width",`${m}px`),null===(c=null===(r=s.getManipulableFrame())||void 0===r?void 0:r.frame)||void 0===c||c.style.setProperty("height",`${f}px`);const h=s.getViewportDimensions(),v=t.getVisibleAreaRect(),b=null===(d=s.getManipulableFrame())||void 0===d?void 0:d.frame,y="pre-paginated"===(null===(g=t.getManifest())||void 0===g?void 0:g.renditionLayout);if((null==s?void 0:s.getIsLoaded())&&(null==b?void 0:b.contentDocument)&&(null==b?void 0:b.contentWindow)){let i=m,o=v.height+t.getCalculatedInnerMargin();if(null==b||b.style.setProperty("visibility","visible"),null==b||b.style.setProperty("opacity","1"),h){const i=Math.min(m/h.width,f/h.height);a.injectStyle(ie()),a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),s.staticLayout({width:h.width,height:h.height}),null==b||b.style.setProperty("--scale",`${i}`),null==b||b.style.setProperty("position","absolute"),null==b||b.style.setProperty("top","50%"),null==b||b.style.setProperty("left","before"===e?t.isRTL()?"25%":"75%":"after"===e?t.isRTL()?"75%":"25%":"50%"),null==b||b.style.setProperty("transform",`translate(-50%, -50%) scale(${i})`),null==b||b.style.setProperty("transform-origin","center center")}else{const e=a.isImageType()?oe({isScrollable:"scrolled-continuous"===(null===(u=t.getManifest())||void 0===u?void 0:u.renditionFlow),enableTouch:"scrollable"!==t.getSettings().computedPageTurnMode}):re(((e,n)=>{const i=t.getPageSize();let o=i.width-0;const r=i.height-0;let a=i.width-0;return e&&(a=n-0,o=r),{columnHeight:r,columnWidth:o,width:a}})(s.isUsingVerticalWriting(),n));if(a.injectStyle(e),a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),s.isUsingVerticalWriting()){o=Math.ceil(b.contentDocument.documentElement.scrollHeight/f)*f,s.staticLayout({width:n,height:o})}else if("scrolled-continuous"===(null===(p=t.getManifest())||void 0===p?void 0:p.renditionFlow))o=b.contentDocument.documentElement.scrollHeight,l=o,s.staticLayout({width:n,height:o});else{const e=Math.ceil(b.contentDocument.documentElement.scrollWidth/m);i=y?m:e*m,s.staticLayout({width:i,height:o})}}return i%n==0?null==b||b.style.setProperty("margin-left","0px"):(i+=m,t.isRTL()&&!a.isUsingVerticalWriting()&&(null==b||b.style.setProperty("margin-left",`${m}px`))),a.layout({width:i,height:o}),{width:i,height:o}}a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n});const x=l||f;return a.layout({width:n,height:x}),{width:n,height:x}}})},ie=()=>"\n html {\n width: 100%;\n height: 100%;\n }\n body {\n width: 100%;\n height: 100%;\n margin: 0;\n }\n \n html, body {\n touch-action: none;\n }\n img {\n display: flex;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n }\n ",oe=({isScrollable:e,enableTouch:t})=>`\n \n html, body {\n width: 100%;\n margin: 0;\n padding: 0;\n ${t?"\n touch-action: none\n ":""}\n }\n ${e?"\n img {\n height: auto !important;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n \n width: 100%;\n \n display: block;\n }\n ":""}\n `,re=({width:e,columnHeight:t,columnWidth:n})=>`\n parsererror {\n display: none !important;\n }\n \n html, body {\n margin: 0;\n padding: 0 !important;\n -max-width: ${n}px !important;\n }\n \n body {\n padding: 0 !important;\n width: ${e}px !important;\n height: ${t}px !important;\n overflow-y: hidden;\n column-gap: 0px !important;\n column-width: ${n}px !important;\n column-fill: auto !important;\n word-wrap: break-word;\n box-sizing: border-box;\n }\n body {\n margin: 0;\n }\n body:focus-visible {\n \n outline: none;\n }\n \n html, body {\n touch-action: none;\n }\n \n * {\n -max-width: ${n}px !important;\n }\n \n img, video, audio, object, svg {\n max-width: 100%;\n max-width: ${n}px !important;\n max-height: ${t}px !important;\n -pointer-events: none;\n -webkit-column-break-inside: avoid;\n page-break-inside: avoid;\n break-inside: avoid;\n }\n figure {\n d-max-width: ${n}px !important;\n }\n img {\n object-fit: contain;\n break-inside: avoid;\n box-sizing: border-box;\n d-max-width: ${n}px !important;\n }\n \n table {\n max-width: ${n}px !important;\n table-layout: fixed;\n }\n td {\n max-width: ${n}px;\n }\n `,ae=Node.ELEMENT_NODE,se=Node.TEXT_NODE,le=Node.CDATA_SECTION_NODE;function ce(e,t,n){let i,o,r,a=0,s=0,l=!0;for(o=0;o<e.length;o++)if(r=e[o],r.nodeType===ae){if(i||l?(a+=2,l=!1):a++,t===r)return"img"===r.tagName.toLowerCase()?{count:a,offset:n}:{count:a};s=0,i=!0}else{if(r.nodeType!==se&&r.nodeType!==le)continue;if((i||l)&&(a++,l=!1),t===r)return{count:a,offset:n+s};s+=r.textContent.length,i=!1}throw new Error("The specified node was not found in the array of siblings")}function de(e,t){const n="number"==typeof e,i="number"==typeof t;return n||i?!n&&i?-1:n&&!i?1:(e||0)-(t||0):0}function ge(e,t){if(!e&&!t)return 0;if(!e&&t)return-1;if(e&&!t)return 1;const n=(e.y||0)-(t.y||0);return n||(e.x||0)-(t.x||0)}class ue{constructor(e,t){this.isRange=!1,this.opts=Object.assign({flattenRange:!1,stricter:!0},t||{}),this.cfi=e,this.parts=[];const n=(e=e.trim()).match(/^epubcfi\((.*)\)$/);if(!n)throw new Error("Not a valid CFI");if(n.length<2)return;let i,o,r;e=n[1]||"";let a=[],s=0;for(;e.length;){if(({parsed:i,offset:o,newDoc:r}=this.parse(e)),!i||null===o)throw new Error("Parsing failed");if(s&&r)throw new Error("CFI is a range that spans multiple documents. This is not allowed");a.push(i),(r||e.length-o<=0)&&(2===s?this.to=a:this.parts.push(a),a=[]),","===(e=e.slice(o))[0]&&(0===s?(a.length&&this.parts.push(a),a=[]):1===s&&(a.length&&(this.from=a),a=[]),e=e.slice(1),s++)}this.from&&this.from.length&&(!this.opts.flattenRange&&this.to&&this.to.length?this.isRange=!0:(this.parts=this.parts.concat(this.from),delete this.from,delete this.to)),this.opts.stricter&&this.removeIllegalOpts()}removeIllegalOpts(e){if(!e)if(this.from){if(this.removeIllegalOpts(this.from),!this.to)return;e=this.to}else e=this.parts;let t,n,i,o;for(t=0;t<e.length;t++)for(i=e[t],n=0;n<i.length-1;n++)o=i[n],delete o.temporal,delete o.spatial,delete o.offset,delete o.textLocationAssertion}static generatePart(e,t,n){let i,o="";for(;e.parentNode;)i=ce(e.parentNode.childNodes,e,t),!o&&i.offset&&(o=":"+i.offset),o="/"+i.count+(e.id?"["+(e.id.replace(/[\[\]\^,();]/g,"^$&")+"]"):"")+o,e=e.parentNode;return o}static generate(e,t,n){let i;if(Array.isArray(e)){const t=[];for(const i of e)t.push(this.generatePart(i.node,i.offset,n));i=t.join("!")}else i=this.generatePart(e,t,n);return n&&(i+=n),"epubcfi("+i+")"}static toParsed(e){return e.isRange?e.getFrom():e.get()}static comparePath(e,t){const n=Math.max(e.length,t.length);let i,o,r,a;for(i=0;i<n;i++){if(o=e[i],r=t[i],!o)return-1;if(!r)return 1;if(a=this.compareParts(o,r),a)return a}return 0}static sort(e){e.sort(((e,t)=>this.compare(e,t)))}static compare(e,t){let n=e.get(),i=t.get();if(e.isRange||t.isRange){if(e.isRange&&t.isRange){const e=this.comparePath(n.from,i.from);return e||this.comparePath(n.to,i.to)}return e.isRange&&(n=n.from),t.isRange&&(i=i.from),this.comparePath(n,i)}return this.comparePath(n,i)}static compareParts(e,t){const n=Math.max(e.length,t.length);let i,o,r,a;for(i=0;i<n;i++){if(o=e[i],r=t[i],!o)return-1;if(!r)return 1;if(a=o.nodeIndex-r.nodeIndex,a)return a;if(0===o.nodeIndex)return 0;if(!(i<n-1)){if(o.nodeIndex%2==0){if(a=de(o.temporal,r.temporal),a)return a;if(a=ge(o.spatial,r.spatial),a)return a}if(a=(o.offset||0)-(r.offset||0),a)return a}}return 0}decodeEntities(e,t){try{const n=e.createElement("textarea");return n.innerHTML=t,n.value||""}catch(e){return t}}trueLength(e,t){return this.decodeEntities(e,t).length}getFrom(){if(!this.isRange)throw new Error("Trying to get beginning of non-range CFI");if(!this.from)return this.deepClone(this.parts);const e=this.deepClone(this.parts);return e[e.length-1]=e[e.length-1].concat(this.from),e}getTo(){if(!this.isRange)throw new Error("Trying to get end of non-range CFI");const e=this.deepClone(this.parts);return e[e.length-1]=e[e.length-1].concat(this.to),e}get(){return this.isRange?{from:this.getFrom(),to:this.getTo(),isRange:!0}:this.deepClone(this.parts)}parseSideBias(e,t){if(!t)return;const n=t.trim().match(/^(.*);s=([ba])$/);!n||n.length<3?"object"==typeof e.textLocationAssertion?e.textLocationAssertion.post=t:e.textLocationAssertion=t:(n[1]&&("object"==typeof e.textLocationAssertion?e.textLocationAssertion.post=n[1]:e.textLocationAssertion=n[1]),"a"===n[2]?e.sideBias="after":e.sideBias="before")}parseSpatialRange(e){if(!e)return;const t=e.trim().match(/^([\d\.]+):([\d\.]+)$/);if(!t||t.length<3)return;const n={x:parseInt(t[1]),y:parseInt(t[2])};return"number"==typeof n.x&&"number"==typeof n.y?n:void 0}parse(e){const t={},n=/[\d]/;let i,o,r,a,s,l,c=!1,d=!1;for(l=0;l<=e.length;l++)if(a=l<e.length?e[l]:"","^"!==a||s){if("/"===o){if(a.match(n)){i?i+=a:i=a,s=!1;continue}i&&(t.nodeIndex=parseInt(i),i=null),r=o,o=null}if(":"===o){if(a.match(n)){i?i+=a:i=a,s=!1;continue}i&&(t.offset=parseInt(i),i=null),r=o,o=null}if("@"===o){let e=!1;if(a.match(n)||"."===a||":"===a?":"===a&&(c?e=!0:c=!0):e=!0,!e){i?i+=a:i=a,s=!1;continue}r=o,o=null,i&&c&&(t.spatial=this.parseSpatialRange(i)),i=null}if("~"===o){if(a.match(n)||"."===a){i?i+=a:i=a,s=!1;continue}i&&(t.temporal=parseFloat(i)),r=o,o=null,i=null}if(!o){if("!"===a){l++,o=a;break}if(","===a)break;if("/"===a){if(d)break;d=!0,r=o,o=a,s=!1;continue}if(":"===a||"~"===a||"@"===a){if(this.opts.stricter){if(":"===a&&(void 0!==t.temporal||void 0!==t.spatial))break;if(("~"===a||"@"===a)&&void 0!==t.offset)break}r=o,o=a,s=!1,c=!1;continue}if("["===a&&!s&&":"===r){r=o,o="[",s=!1;continue}if("["===a&&!s&&"/"===r){r=o,o="nodeID",s=!1;continue}}"["!==o?("nodeID"!==o||("]"!==a||s?i?i+=a:i=a:(r=o,o=null,t.nodeID=i,i=null)),s=!1):("]"!==a||s?","!==a||s?i?i+=a:i=a:(t.textLocationAssertion={},i&&(t.textLocationAssertion.pre=i),i=null):(r=o,o=null,this.parseSideBias(t,i),i=null),s=!1)}else s=!0;if(!t.nodeIndex&&0!==t.nodeIndex)throw new Error("Missing child node index in CFI");return{parsed:t,offset:l,newDoc:"!"===o}}getChildNodeByCFIIndex(e,t,n,i){const o=t.childNodes;if(!o.length)return{node:t,offset:0};if(n<=0)return{node:o[0],relativeToNode:"before",offset:0};let r,a,s,l=0;for(a=0;a<o.length;a++)switch(s=o[a],s.nodeType){case ae:if(l%2==0){if(l+=2,l>=n)return"img"===s.tagName.toLowerCase()&&i?{node:s,offset:i}:{node:s,offset:0}}else{if(l+=1,l===n)return"img"===s.tagName.toLowerCase()&&i?{node:s,offset:i}:{node:s,offset:0};if(l>n)return r?{node:r,offset:this.trueLength(e,r.textContent)}:{node:t,offset:0}}r=s;break;case se:case le:if(0!==l&&l%2!=0||(l+=1),l===n){const t=this.trueLength(e,s.textContent);if(!(i>=t))return{node:s,offset:i};i-=t}r=s;break;default:continue}if(n>l){const n={relativeToNode:"after",offset:0};return n.node=r||t,this.isTextNode(n.node)&&(n.offset=this.trueLength(e,n.node.textContent.length)),n}}isTextNode(e){return!!e&&(e.nodeType===se||e.nodeType===le)}correctOffset(e,t,n,i){let o,r=t;if("string"==typeof i?o=this.decodeEntities(e,i):(i.pre=this.decodeEntities(e,i.pre),i.post=this.decodeEntities(e,i.post),o=i.pre+"."+i.post),!this.isTextNode(t))return{node:t,offset:0};for(;this.isTextNode(r.previousSibling);)r=r.previousSibling;const a=r;let s;const l=[];let c="",d=0;for(;this.isTextNode(r)&&(s=this.decodeEntities(e,r.textContent),l[d]=s.length,c+=s,r.nextSibling);)r=r.nextSibling,d++;const g=i.pre?i.pre.length:0,u=function(e,t,n){n=n||0;const i=[];let o,r=0;do{if(o=e.match(t),!o)break;i.push(o.index+n),r+=o.index+o.length,e=e.slice(o.index+o.length)}while(r<e.length);return i}(c,new RegExp(o),g);if(!u.length)return{node:t,offset:n};let p=function(e,t){let n,i,o,r;for(o=0;o<e.length;o++)r=Math.abs(e[o]-t),(!o||r<n)&&(r=n,i=e[o]);return i}(u,n);if(r===t&&p===n)return{node:t,offset:n};for(d=0,r=a;p>=l[d];){if(p-=l[d],p<0)return{node:t,offset:n};const e=[];if(!r.nextSibling||d+1>=e.length)return{node:t,offset:n};d++,r=r.nextSibling}return{node:r,offset:p}}resolveNode(e,t,n,i){if(i=Object.assign({},i||{}),!n)throw new Error("Missing DOM argument");let o;if(0===e&&(o=n.querySelector("package")),!o)for(const e of n.childNodes)if(e.nodeType===ae){o=e;break}if(o=n,!o)throw new Error("Document incompatible with CFIs");let r,a,s=o,l=0;for(r=t.length-1;r>=0;r--)if(a=t[r],!i.ignoreIDs&&a.nodeID&&(s=n.getElementById(a.nodeID))){l=r+1;break}s||(s=o);let c={node:s,offset:0};for(r=l;r<t.length;r++)a=t[r],a&&(c=this.getChildNodeByCFIIndex(n,c.node,a.nodeIndex,a.offset),a.textLocationAssertion&&(c=this.correctOffset(n,c.node,a.offset,a.textLocationAssertion)));return c}resolveURI(e,t,n){if(n=n||{},e<0||e>this.parts.length-2)throw new Error("index is out of bounds");const i=this.parts[e];if(!i)throw new Error("Missing CFI part for index: "+e);let o=this.resolveNode(e,i,t,n).node;const r=o.tagName.toLowerCase();if("itemref"===r&&"spine"===o.parentNode.tagName.toLowerCase()){const e=o.getAttribute("idref");if(!e)throw new Error("Referenced node had not 'idref' attribute");if(o=t.getElementById(e),!o)throw new Error("Specified node is missing from manifest");const n=o.getAttribute("href");if(!n)throw new Error("Manifest item is missing href attribute");return n}if("iframe"===r||"embed"===r){const e=o.getAttribute("src");if(!e)throw new Error(r+" element is missing 'src' attribute");return e}if("object"===r){const e=o.getAttribute("data");if(!e)throw new Error(r+" element is missing 'data' attribute");return e}if("image"===r||"use"===r){const e=o.getAttribute("xlink:href");if(!e)throw new Error(r+" element is missing 'xlink:href' attribute");return e}throw new Error("No URI found")}deepClone(e){return JSON.parse(JSON.stringify(e))}resolveLocation(e,t){const n=t.length-1,i=t[n];if(!i)throw new Error("Missing CFI part for index: "+n);const o=this.resolveNode(n,i,e),r=this.deepClone(i[i.length-1]);return delete r.nodeIndex,r.offset||delete o.offset,Object.assign(Object.assign({},r),o)}resolveLast(e,t){if(t=Object.assign({range:!1},t||{}),!this.isRange)return this.resolveLocation(e,this.parts);if(t.range){const t=e.createRange(),n=this.getFrom();"before"===n.relativeToNode?t.setStartBefore(n.node,n.offset):"after"===n.relativeToNode?t.setStartAfter(n.node,n.offset):t.setStart(n.node,n.offset);const i=this.getTo();return"before"===i.relativeToNode?t.setEndBefore(i.node,i.offset):"after"===i.relativeToNode?t.setEndAfter(i.node,i.offset):t.setEnd(i.node,i.offset),t}return{from:this.resolveLocation(e,this.getFrom()),to:this.resolveLocation(e,this.getTo()),isRange:!0}}resolve(e,t){return this.resolveLast(e,t)}}const pe=e=>{var t,n;const[i]=(null===(t=e.match(/\|(\[prose\~anchor[^\]]*\])+/gi))||void 0===t?void 0:t.map((e=>e.replace(/\|\[prose\~anchor\~/,"").replace(/\]/,""))))||[],[o]=(null===(n=e.match(/\|(\[prose\~offset[^\]]*\])+/gi))||void 0===n?void 0:n.map((e=>e.replace(/\|\[prose\~offset\~/,"").replace(/\]/,""))))||[],r=e.replace(/\|(\[prose\~[^\]]*\~[^\]]*\])+/gi,""),a=parseInt(o||"");return{cleanedCfi:r,itemId:i?decodeURIComponent(i):i,offset:isNaN(a)?void 0:a}},me=(e,t)=>{const n=e.toString();return{toString:()=>n,getAnchorCfi:()=>{if(e.anchorNode)return ue.generate(e.anchorNode,e.anchorOffset,`|[prose~anchor~${encodeURIComponent(t.id)}]`)},getFocusCfi:()=>{if(e.focusNode)return ue.generate(e.focusNode,e.focusOffset,`|[prose~anchor~${encodeURIComponent(t.id)}]`)}}};var fe=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const he=h.namespace("spine"),ve=({ownerDocument:n,context:i,pagination:o,iframeEventBridgeElement:r,spineItemManager:a,hooks$:s,spineItemLocator:l,spineLocator:c,cfiLocator:d,navigation$:g,navigationAdjusted$:u,currentNavigationPosition$:p,viewportState$:m})=>{const f=new e.Subject,v=new e.Subject,b=new e.Subject,y=new e.Subject,x=be(n,s),w=(({iframeEventBridgeElement:e,locator:t})=>({normalizeEventForViewport:n=>{var i;const o=n.target===e,r=(e=>e.__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT)(n),a=null===(i=null==r?void 0:r.view)||void 0===i?void 0:i.frameElement;if(!o||!r||!a)return n;const s=t.getSpineItemFromIframe(a);if(!s)return n;if(Y(n)){const{clientX:e,clientY:t}=s.translateFramePositionIntoPage(n),i=new PointerEvent(n.type,Object.assign(Object.assign({},n),{clientX:e,clientY:t}));return Object.defineProperty(i,"target",{value:r.target,enumerable:!0}),i}if(X(n)){const{clientX:e,clientY:t}=s.translateFramePositionIntoPage(n),i=new MouseEvent(n.type,Object.assign(Object.assign({},n),{clientX:e,clientY:t}));return Object.defineProperty(i,"target",{value:r.target,enumerable:!0}),i}if((e=>{var t,n,i,o,r;if((null==e?void 0:e.target)&&(null===(n=null===(t=null==e?void 0:e.target)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.defaultView)){const t=null===(o=null===(i=null==e?void 0:e.target)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(t.TouchEvent)return e instanceof t.TouchEvent}if((null==e?void 0:e.view)&&(null===(r=null==e?void 0:e.view)||void 0===r?void 0:r.window)){const t=null==e?void 0:e.view;if(t.TouchEvent)return e instanceof t.TouchEvent}return!1})(n)){const e=Array.from(n.touches).map((e=>{const{clientX:t,clientY:n}=s.translateFramePositionIntoPage(e);return new Touch({identifier:e.identifier,target:e.target,clientX:t,clientY:n})})),t=new TouchEvent(n.type,{touches:e,changedTouches:e,targetTouches:e});return Object.defineProperty(t,"target",{value:r.target,enumerable:!0}),t}return n}}))({context:i,spineItemManager:a,iframeEventBridgeElement:r,locator:c});let S;i.$.load$.pipe((0,t.tap)((()=>{var e;b.next(),a.destroyItems(),null===(e=i.getManifest())||void 0===e||e.spineItems.map((e=>fe(void 0,void 0,void 0,(function*(){const t=(({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r})=>{let a;return a="pre-paginated"===e.renditionLayout?ee({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}):ne({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}),Object.assign({item:e},a)})({item:e,containerElement:x,iframeEventBridgeElement:r,context:i,hooks$:s,viewportState$:m});a.add(t)})))),v.next(a.getAll())})),(0,t.takeUntil)(i.$.destroy$)).subscribe();const P=m.pipe((0,t.filter)((e=>"free"===e)),(0,t.take)(1)),I=e=>P.pipe((0,t.tap)(he.measurePerformance("adjustPagination",1,(()=>{var t,n;const i=c.getSpineItemsFromReadingOrderPosition(e),r=i?a.get(i.begin):void 0,s=i?a.get(i.end):void 0,g=o.getInfo().beginCfi,u=o.getInfo().endCfi,p=o.getInfo().beginSpineItemIndex!==(null==i?void 0:i.begin)||void 0===g||(null==g?void 0:g.startsWith("epubcfi(/0")),m=o.getInfo().endSpineItemIndex!==(null==i?void 0:i.end)||void 0===u||(null==u?void 0:u.startsWith("epubcfi(/0"));if(r&&s&&i){const e=c.getSpineItemPositionFromSpinePosition(i.beginPosition,r),f=l.getSpineItemPageIndexFromPosition(e,r),h=c.getSpineItemPositionFromSpinePosition(i.endPosition,s),v=l.getSpineItemPageIndexFromPosition(h,s);o.updateBeginAndEnd({spineItem:r,spineItemIndex:null!==(t=a.getSpineItemIndex(r))&&void 0!==t?t:0,pageIndex:l.getSpineItemPageIndexFromPosition(e,r),cfi:p?d.getCfi(f,r):g,options:{isAtEndOfChapter:!1}},{spineItem:s,spineItemIndex:null!==(n=a.getSpineItemIndex(s))&&void 0!==n?n:0,pageIndex:l.getSpineItemPageIndexFromPosition(h,s),cfi:m?d.getCfi(v,s):u,options:{isAtEndOfChapter:!1}})}}),{disable:!0})));(0,e.merge)(a.$.focus$.pipe((0,t.tap)((n=>{const i=n.data,o=i.fingerTracker.$,r=i.selectionTracker.$;null==S||S.unsubscribe(),S=(0,e.merge)(r.pipe((0,t.filter)((e=>"selectionchange"===e.event)),(0,t.tap)((e=>{y.next({type:"onSelectionChange",data:e.data?me(e.data,i.item):null})}))),r.pipe((0,t.filter)((({event:e})=>"selectstart"===e)),(0,t.switchMap)((n=>o.pipe((0,t.filter)((({event:e})=>"fingermove"===e)),(0,t.debounce)((()=>(0,e.interval)(1e3))),(0,t.takeUntil)(o.pipe((0,t.filter)((({event:e})=>"fingerout"===e)),(0,t.tap)((()=>{})))),(0,t.tap)((({data:e})=>{}))))))).subscribe()})),(0,t.catchError)((t=>(h.error(t),e.EMPTY))),(0,t.takeUntil)(i.$.destroy$))).subscribe();const $=g.pipe((0,t.tap)((e=>{var t,n;const r=he.time("navigation",1),s=a.getFocusedSpineItem(),g=c.getSpineItemsFromReadingOrderPosition(e.position);let u=g?a.get(g.begin):void 0,p=g?a.get(g.end):void 0;u=u||s,p=p||s;const m=e.position.spineItem||u;if(m&&m!==s?a.focus(m):m||a.focus(0),m&&u&&p&&g){const r=e.lastUserExpectedNavigation,f=null!==(t=a.getSpineItemIndex(u))&&void 0!==t?t:0,h=c.getSpineItemPositionFromSpinePosition(g.beginPosition,u),v=l.getSpineItemPageIndexFromPosition(h,u),b=c.getSpineItemPositionFromSpinePosition(g.endPosition,p),y=l.getSpineItemPageIndexFromPosition(b,p),x=null!==(n=a.getSpineItemIndex(p))&&void 0!==n?n:0;o.updateBeginAndEnd({spineItem:u,spineItemIndex:f,pageIndex:v,cfi:"navigate-from-cfi"===(null==r?void 0:r.type)&&m===u?r.data:"adjust"===e.triggeredBy&&"controlled"===i.getSettings().computedPageTurnMode?o.getInfo().beginCfi:(o.getInfo().beginSpineItemIndex,d.getRootCfi(u)),options:{isAtEndOfChapter:!1}},{spineItem:p,spineItemIndex:x,pageIndex:y,cfi:"navigate-from-cfi"===(null==r?void 0:r.type)&&m===p?r.data:"adjust"===e.triggeredBy&&"controlled"===i.getSettings().computedPageTurnMode?o.getInfo().endCfi:(o.getInfo().endSpineItemIndex,d.getRootCfi(p)),options:{isAtEndOfChapter:!1}}),he.log("navigation$",{spineItemHasChanged:m!==s,item:m,spineItemToFocus:m,index:a.getSpineItemIndex(m),offset:e,endSpineItem:p,beginSpineItem:u,lastExpectedNavigation:r,spineItemsFromPosition:g})}r()})),(0,t.share)(),(0,t.takeUntil)(i.$.destroy$));return $.pipe((0,t.switchMap)((e=>I(e.position).pipe((0,t.takeUntil)(a.$.layout$)))),(0,t.takeUntil)(i.$.destroy$)).subscribe(),(0,e.merge)($,u).pipe((0,t.switchMap)((()=>P.pipe((0,t.withLatestFrom)(p),(0,t.map)((([,e])=>{const t=a.getFocusedSpineItemIndex();if(he.log("update contents",{focusedSpineItemIndex:t}),void 0===t)return;const{begin:n=t,end:i=t}=c.getSpineItemsFromReadingOrderPosition(e)||{};n!==t&&i!==t?(h.warn("Current viewport is not in sync with focus item, load from focus item rather than viewport"),a.loadContents([t,t])):a.loadContents([n,i])})),(0,t.take)(1)))),(0,t.takeUntil)(i.$.destroy$)).subscribe(),{element:x,locator:c,spineItemLocator:l,cfiLocator:d,normalizeEventForViewport:w.normalizeEventForViewport,manipulateSpineItems:e=>{let t=!1;a.getAll().forEach(((n,i)=>{t=n.manipulateSpineItem((t=>e(Object.assign({index:i},t))))||t})),t&&a.layout()},manipulateSpineItem:(e,t)=>{var n;null===(n=a.get(e))||void 0===n||n.manipulateSpineItem(t)},layout:()=>f.next(),destroy:()=>{f.complete(),v.complete(),b.next(),b.complete(),y.complete(),a.destroy(),null==S||S.unsubscribe(),x.remove()},adjustPagination:I,isSelecting:()=>{var e;return null===(e=a.getFocusedSpineItem())||void 0===e?void 0:e.selectionTracker.isSelecting()},getSelection:()=>{var e;return null===(e=a.getFocusedSpineItem())||void 0===e?void 0:e.selectionTracker.getSelection()},$:{$:y.asObservable(),layout$:a.$.layout$,itemsCreated$:v.asObservable(),itemsBeforeDestroy$:b.asObservable()}}},be=(e,t)=>{const n=e.createElement("div");return n.style.cssText="\n height: 100%;\n position: relative;\n ",n.className="prose-reader-spine",t.getValue().reduce(((e,t)=>"spine.onBeforeContainerCreated"===t.name?t.fn(e):e),n)},ye=({context:e})=>{const t=(t,n)=>{const{width:i,height:o}=n.getElementDimensions(),r=n.getReadingDirection();if(n.isUsingVerticalWriting()){return{x:0,y:b(e.getPageSize().height,t,o)}}const a=b(e.getPageSize().width,t,i);return"rtl"===r?{x:i-a-e.getPageSize().width,y:0}:{x:a,y:0}},n=(t,n)=>{const{width:i,height:r}=n.getElementDimensions(),a=n.getReadingDirection(),s=e.getPageSize().width,l=e.getPageSize().height;let c=Math.min(i,Math.max(0,t.x));if("rtl"===a&&(c=i-c-e.getPageSize().width),n.isUsingVerticalWriting()){const e=y(r,l);return o(t.y,l,e)}{const e=y(i,s);return o(c,s,e)}},i=(t,n,i)=>{var o;let r;if("img"===(null==t?void 0:t.nodeName)||""===(null==t?void 0:t.textContent)&&t.nodeType===Node.ELEMENT_NODE)r=t.getBoundingClientRect().x;else if(t){const e=t?((e,t)=>{var n;if(e.nodeType!==Node.CDATA_SECTION_NODE&&e.nodeType!==Node.DOCUMENT_TYPE_NODE){const i=null===(n=e.ownerDocument)||void 0===n?void 0:n.createRange();null==i||i.selectNodeContents(e);try{t<=((null==i?void 0:i.endOffset)||0)&&(null==i||i.setStart(e,t||0))}catch(e){h.error(e)}return i}})(t,n):void 0;r=(null==e?void 0:e.getBoundingClientRect().x)||r}const a=(null===(o=i.getElementDimensions())||void 0===o?void 0:o.width)||0,s=e.getPageSize().width;if(r){return{x:x(r,s,a),y:0}}},o=(e,t,n)=>{const i=[...Array(n)].map(((e,n)=>n*t));return e<=0?0:e>=n*t?n-1:Math.max(0,i.findIndex((n=>e<n+t)))};return{getSpineItemPositionFromNode:i,getSpineItemPositionFromPageIndex:t,getSpineItemOffsetFromAnchor:(t,n)=>{var i;const o=(null===(i=n.getElementDimensions())||void 0===i?void 0:i.width)||0,r=e.getPageSize().width,a=n.getBoundingRectOfElementFromSelector(t),s=(null==a?void 0:a.x)||0;return x(s,r,o)},getSpineItemPageIndexFromPosition:n,getSpineItemPageIndexFromNode:(e,t,o)=>{const r=i(e,t,o);return r?n(r,o):void 0},getSpineItemClosestPositionFromUnsafePosition:(t,n)=>{const{width:i,height:o}=n.getElementDimensions();return{x:x(t.x,e.getPageSize().width,i),y:x(t.y,e.getPageSize().height,o)}},getFirstNodeOrRangeAtPage:(n,i)=>{var o,r,a;const s=e.getPageSize(),l=null===(r=null===(o=i.spineItemFrame)||void 0===o?void 0:o.getManipulableFrame())||void 0===r?void 0:r.frame;if((null===(a=null==l?void 0:l.contentWindow)||void 0===a?void 0:a.document)&&null!==l.contentWindow.document.body){const{x:e,y:o}=t(n,i),r={left:e,right:e+s.width,top:o,bottom:o+s.height};return W(l.contentWindow.document,r)}}}},xe="spineNavigator",we=({context:e,spineItemManager:t,cfiLocator:n,locator:i})=>{const o=(({context:e})=>{const t=ye({context:e}),n=(e,n)=>t.getSpineItemPositionFromPageIndex(e,n);return{getNavigationForLeftPage:(n,i)=>{let o={x:n.x-e.getPageSize().width,y:n.y};return i.isUsingVerticalWriting()&&(o={x:n.x,y:n.y+e.getPageSize().height}),t.getSpineItemClosestPositionFromUnsafePosition(o,i)},getNavigationForRightPage:(n,i)=>{let o={x:n.x+e.getPageSize().width,y:n.y};return i.isUsingVerticalWriting()&&(o={x:n.x,y:n.y-e.getPageSize().height}),t.getSpineItemClosestPositionFromUnsafePosition(o,i)},getNavigationForLastPage:t=>{if(t.isUsingVerticalWriting()){const i=e.getPageSize().height,o=y(t.getElementDimensions().height,i);return n(o-1,t)}{const i=e.getPageSize().width,o=y(t.getElementDimensions().width,i);return n(o-1,t)}},getNavigationForPage:n,getNavigationForPosition:(e,n)=>t.getSpineItemClosestPositionFromUnsafePosition(n,e),getNavigationFromNode:(e,n,i)=>t.getSpineItemPositionFromNode(n,i,e)||{x:0,y:0}}})({context:e}),r=(e,t)=>e.x!==t.x||e.y!==t.y,a=h.measurePerformance("spineNavigator wrapPositionWithSafeEdge",1,(n=>{const i=t.get(t.getLength()-1),o=t.getAbsolutePositionOf(i||0),r=o.leftEnd-e.getPageSize().width,a=o.topEnd-e.getPageSize().height;return{x:Math.min(Math.max(0,n.x),r),y:Math.min(Math.max(0,n.y),a)}}),{disable:!0}),s=({x:t,y:n})=>({x:t%e.getVisibleAreaRect().width!=0?t-e.getPageSize().width:t,y:n}),l=n=>{const s=e.getSettings().computedPageTurnDirection,l=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem();if(!l)return n;const c=i.getSpineItemPositionFromSpinePosition(n,l),d=o.getNavigationForRightPage(c,l);if(!c.outsideOfBoundaries&&r(d,c)){return i.getSpinePositionFromSpineItemPosition(d,l)}return a(e.isRTL()?"horizontal"===s?{x:n.x-e.getPageSize().width,y:0}:{y:n.y+e.getPageSize().height,x:0}:"horizontal"===s?{x:n.x+e.getPageSize().width,y:0}:{y:n.y+e.getPageSize().height,x:0})},c=n=>{const s=e.getSettings().computedPageTurnDirection,l=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem(),c=Object.assign(Object.assign({},n),{spineItem:l});if(!l)return c;const d=i.getSpineItemPositionFromSpinePosition(n,l),g=o.getNavigationForLeftPage(d,l);if(!d.outsideOfBoundaries&&r(g,d)){return i.getSpinePositionFromSpineItemPosition(g,l)}return a(e.isRTL()?"horizontal"===s?{x:n.x+e.getPageSize().width,y:0}:{y:n.y-e.getPageSize().height,x:0}:"horizontal"===s?{x:n.x-e.getPageSize().width,y:0}:{y:n.y-e.getPageSize().height,x:0})},d=(e,t)=>{const n=i.getSpinePositionFromSpineItemAnchor(e,t);return s(n)},g=e=>{const t=i.getSpineItemFromPosition(e);if(t){const n=i.getSpineItemPositionFromSpinePosition(e,t),r=o.getNavigationForPosition(t,n),a=i.getSpinePositionFromSpineItemPosition(r,t);return s(a)}return{x:0,y:0}};return{getNavigationForCfi:e=>{const t=n.getSpineItemFromCfi(e),{node:r,offset:a=0}=n.resolveCfi(e)||{};if(t){const e=r?o.getNavigationFromNode(t,r,a):{x:0,y:0},n=i.getSpinePositionFromSpineItemPosition(e,t);return Object.assign(Object.assign({},s(n)),{spineItem:t})}return h.warn(xe,`unable to detect item id from cfi ${e}`),{x:0,y:0}},getNavigationForPage:(t,n)=>{if(!n){const n=t*e.getPageSize().width;return g({x:n,y:0})}const r=o.getNavigationForPage(t,n),a=i.getSpinePositionFromSpineItemPosition(r,n);return s(a)},getNavigationForLastPage:e=>{const t=o.getNavigationForLastPage(e),n=i.getSpinePositionFromSpineItemPosition(t,e);return s(n)},getNavigationForSpineIndexOrId:e=>{const n=t.get(e);if(n){const e=i.getSpinePositionFromSpineItem(n);return Object.assign(Object.assign({},s(e)),{spineItem:n})}return{x:0,y:0}},getNavigationForRightPage:n=>{const o=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem();let r=l(n);if((null==o?void 0:o.isUsingVerticalWriting())&&n.x===r.x)return s(r);if(e.shouldDisplaySpread()){if((null==o?void 0:o.isUsingVerticalWriting())&&n.x!==r.x)return s(a(e.isRTL()?Object.assign(Object.assign({},r),{x:r.x-e.getPageSize().width}):Object.assign(Object.assign({},r),{x:r.x+e.getPageSize().width})));if("vertical"===e.getSettings().computedPageTurnDirection&&n.y!==r.y)return s(r);r=l(r)}return s(r)},getNavigationForLeftPage:n=>{const o=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem();let r=c(n);if((null==o?void 0:o.isUsingVerticalWriting())&&n.x===r.x)return s(r);if(e.shouldDisplaySpread()){if((null==o?void 0:o.isUsingVerticalWriting())&&n.x!==r.x)return s(a(e.isRTL()?Object.assign(Object.assign({},r),{x:r.x+e.getPageSize().width}):Object.assign(Object.assign({},r),{x:r.x-e.getPageSize().width})));if("vertical"===e.getSettings().computedPageTurnDirection&&n.y!==r.y)return s(r);r=c(r)}return s(r)},getNavigationForUrl:n=>{var i;let o;try{o=n instanceof URL?n:new URL(n)}catch(e){h.error(e)}if(o){const n=`${o.origin}${o.pathname}`,r=null===(i=e.getManifest())||void 0===i?void 0:i.spineItems.find((e=>e.href===n));if(r){const e=t.get(r.id);if(e){const t=d(o.hash,e);return Object.assign(Object.assign({},s(t)),{url:o})}}}},getNavigationForAnchor:d,getNavigationForPosition:g,getMostPredominantNavigationForPosition:t=>{const n=e.getSettings().computedPageTurnDirection,i="horizontal"===n?t.x+.5*e.getVisibleAreaRect().width:0,o="horizontal"===n?0:t.y+.5*e.getVisibleAreaRect().height,r=a({x:i,y:o});return g(r)},wrapPositionWithSafeEdge:a,isNavigationGoingForwardFrom:(t,n)=>"vertical"===e.getSettings().computedPageTurnDirection?t.y>n.y:t.x>n.x,areNavigationDifferent:(e,t)=>r(e,t)||!!e.spineItem&&!!t.spineItem&&e.spineItem!==t.spineItem,arePositionsDifferent:r}},Se="manualViewportNavigator",Pe="viewportNavigator",Ie=({spineItemManager:n,context:i,pagination:o,parentElement:r,cfiLocator:s,spineLocator:l,hooks$:d,spine:g})=>{const u=$e(r.ownerDocument,d);u.appendChild(g.element);const p=new e.Subject;let m;const f=new e.BehaviorSubject({x:-1,y:0}),v=we({context:i,spineItemManager:n,cfiLocator:s,locator:l}),b=new e.Subject;r.appendChild(u);const y=h.measurePerformance("viewportNavigator getCurrentViewportPosition",1,(()=>{if(m&&(null==m||m.x,Math.abs(u.getBoundingClientRect().x)),"scrollable"===i.getSettings().computedPageTurnMode)return w.getCurrentViewportPosition();const{x:e,y:t}=u.getBoundingClientRect(),n={x:~~(10*Math.abs(e))/10,y:~~(10*Math.abs(t))/10};return m=n,m})),x=(({getCurrentViewportPosition:n,navigator:i,spineItemManager:o,locator:r,context:a,currentNavigationSubject$:s})=>{const l=new e.Subject,c=new e.BehaviorSubject("end");let d={x:0,y:0},g={x:0,y:0};const u=new e.Subject,p=h.measurePerformance("panViewportNavigator moveTo",5,((e,{final:t,start:o}={})=>{if("scrollable"===a.getSettings().computedPageTurnMode)return void h.warn("pan control is not available on free page turn mode");const r=a.getSettings().computedPageTurnDirection;o&&(c.next("start"),d={x:0,y:0},g=n());let l=s.value;if(e){const t=e.x-((null==d?void 0:d.x)||0),n=e.y-((null==d?void 0:d.y)||0);l=i.wrapPositionWithSafeEdge({x:"horizontal"===r?a.isRTL()?g.x+t:g.x-t:0,y:"horizontal"===r?0:g.y-n}),d=e}else l=n();if(g=l,t)return d={x:0,y:0},m({from:s.value,to:l,pan:g}),void c.next("end");u.next({position:l})}),{disable:!1}),m=e=>{l.next({type:"snap",data:e})},f=h.measurePerformance("turnTo",10,((e,{allowSpineItemChange:t=!0}={})=>{const n=o.getFocusedSpineItem();if(!n)return;const i=r.getSpineItemFromPosition(e)||n;return i!==n&&t?"before"===o.comparePositionOf(i,n)?{type:"navigate-from-next-item"}:{type:"navigate-from-previous-item"}:void 0})),v=l.pipe((0,t.filter)((e=>"snap"===e.type)),(0,e.withLatestFrom)(a.$.settings$),(0,t.switchMap)((([{data:{from:t,to:n}},{navigationSnapThreshold:o}])=>{const r=a.getSettings().computedPageTurnDirection,s=i.isNavigationGoingForwardFrom(n,t)?1-o:o,l="horizontal"===r?n.x+a.getVisibleAreaRect().width*s:0,c="horizontal"===r?0:n.y+a.getVisibleAreaRect().height*s,d=i.wrapPositionWithSafeEdge({x:l,y:c}),g=i.getNavigationForPosition(d),u=f(g);return(0,e.of)(Object.assign(Object.assign({},g),{lastUserExpectedNavigation:u}))})));return{moveTo:p,destroy:()=>{u.complete(),c.complete()},adjustReadingOffset:e=>!1,$:{moveToSubject$:u,state$:c.asObservable(),navigation$:(0,e.merge)(v)}}})({context:i,element:u,navigator:v,spineItemManager:n,locator:l,getCurrentViewportPosition:y,currentNavigationSubject$:f}),w=(({context:n,element:i,navigator:o,currentNavigationSubject$:r,spine:a})=>{let s=!1;const l=(c=(0,e.fromEvent)(i,"scroll"),n.$.settings$.pipe((0,t.map)((()=>n.getSettings().computedPageTurnMode)),(0,t.distinctUntilChanged)(),(0,t.switchMap)((t=>(0,e.iif)((()=>"controlled"===t),e.EMPTY,c))))).pipe((e=>e.pipe((0,t.filter)((()=>!s||(s=!1,!1))))),(0,t.share)(),(0,t.takeUntil)(n.$.destroy$));var c;const d=({x:e,y:t})=>{const n=a.element.getBoundingClientRect().width/a.element.offsetWidth;return{x:E({newScale:1,oldScale:n,screenSize:i.clientWidth,pageSize:a.element.scrollWidth,scrollOffset:e}),y:E({newScale:1,oldScale:n,screenSize:i.clientHeight,pageSize:a.element.scrollHeight,scrollOffset:t})}},g=e=>o.getMostPredominantNavigationForPosition(e),u=l.pipe((0,t.debounceTime)(200,e.animationFrameScheduler),(0,t.withLatestFrom)(r),(0,t.switchMap)((()=>{const t=g(d({x:i.scrollLeft,y:i.scrollTop}));return(0,e.of)({position:t,animate:!1,lastUserExpectedNavigation:void 0})})),(0,t.share)()),p=l.pipe((0,t.debounceTime)(200,e.animationFrameScheduler),(0,t.share)(),(0,t.takeUntil)(n.$.destroy$)),m=(0,e.merge)(l.pipe((0,t.map)((()=>"start")),(0,t.distinctUntilChanged)()),p.pipe((0,t.map)((()=>"end")))).pipe((0,t.startWith)("end"));return{destroy:()=>{},adjustReadingOffset:({x:e,y:t})=>"scrollable"===n.getSettings().computedPageTurnMode&&(s=!0,i.scrollTo({left:e,top:t}),!0),getNavigationForPosition:g,getCurrentViewportPosition:()=>d({x:i.scrollLeft,y:i.scrollTop}),$:{state$:m,navigation$:u}}})({context:i,element:u,navigator:v,currentNavigationSubject$:f,spine:g,spineItemManager:n}),S=(({navigator:n,spineItemManager:i,currentNavigationSubject$:o,locator:r,context:a})=>{const s=new e.BehaviorSubject("end"),l=new e.Subject,c=l.pipe((0,t.filter)((e=>"url"===e.type)),(0,t.switchMap)((({data:t})=>{const i=n.getNavigationForUrl(t);return i?(0,e.of)(Object.assign(Object.assign({},i),{animate:!0,lastUserExpectedNavigation:{type:"navigate-from-anchor",data:i.url.hash}})):e.EMPTY}))),d=l.pipe((0,t.filter)((e=>"spineItem"===e.type)),(0,t.switchMap)((({data:{animate:t,indexOrId:i}})=>{const o=n.getNavigationForSpineIndexOrId(i),r={type:"navigate-from-previous-item"};return h.log(Se,"goToSpineItem",{indexOrId:i,animate:t,navigation:o}),(0,e.of)(Object.assign(Object.assign({},o),{animate:t,lastUserExpectedNavigation:r}))}))),g=l.pipe((0,t.filter)((e=>"cfi"===e.type)),(0,t.map)((({data:{animate:e,cfi:t}})=>{const i=n.getNavigationForCfi(t);return h.log(Se,"goToCfi",{cfi:t,animate:e,navigation:i}),Object.assign(Object.assign({},i),{animate:e,lastUserExpectedNavigation:{type:"navigate-from-cfi",data:t}})}))),u=l.pipe((0,t.filter)((e=>"chapterPage"===e.type)),(0,t.switchMap)((({data:{pageIndex:t}})=>{const o=i.getFocusedSpineItem();if(o){const i=n.getNavigationForPage(t,o);return(0,e.of)(Object.assign(Object.assign({},i),{lastUserExpectedNavigation:void 0,animate:!0}))}return e.EMPTY}))),p=l.pipe((0,t.filter)((e=>"pageIndex"===e.type)),(0,t.filter)((e=>{var t;return"reflowable"!==(null===(t=a.getManifest())||void 0===t?void 0:t.renditionLayout)||(h.warn("This method only works for pre-paginated content"),!1)})),(0,t.switchMap)((({data:{pageIndex:t}})=>(0,e.of)(Object.assign(Object.assign({},n.getNavigationForPage(t)),{lastUserExpectedNavigation:void 0,animate:!0}))))),m=h.measurePerformance("turnTo",10,((t,{allowSpineItemChange:n=!0}={})=>{const o=i.getFocusedSpineItem();if(!o)return e.EMPTY;const a=r.getSpineItemFromPosition(t)||o;return a!==o?n?"before"===i.comparePositionOf(a,o)?(0,e.of)(Object.assign(Object.assign({},t),{lastUserExpectedNavigation:{type:"navigate-from-next-item"},animate:!0})):(0,e.of)(Object.assign(Object.assign({},t),{lastUserExpectedNavigation:{type:"navigate-from-previous-item"},animate:!0})):e.EMPTY:(0,e.of)(Object.assign(Object.assign({},t),{lastUserExpectedNavigation:void 0,animate:!0}))})),f=l.pipe((0,t.filter)((e=>"leftPage"===e.type)),(0,t.withLatestFrom)(o),(0,t.switchMap)((([{data:{allowSpineItemChange:e}},t])=>{const i=n.getNavigationForLeftPage(t);return h.log(Se,"turnLeft"),m(i,{allowSpineItemChange:e})}))),v=l.pipe((0,t.filter)((e=>"rightPage"===e.type)),(0,t.withLatestFrom)(o),(0,t.switchMap)((([{data:{allowSpineItemChange:e}},t])=>{const i=n.getNavigationForRightPage(t);return h.log(Se,"turnRight"),m(i,{allowSpineItemChange:e})}))),b=(0,e.merge)(c,d,u,f,v,(0,e.merge)(g,p)).pipe((0,t.withLatestFrom)(o),(0,t.filter)((([e,t])=>n.areNavigationDifferent(e,t))),(0,t.map)((([e])=>e)));return{destroy:()=>{},adjustReadingOffset:e=>!1,turnLeft:({allowSpineItemChange:e=!0}={})=>l.next({type:"leftPage",data:{allowSpineItemChange:e}}),turnRight:({allowSpineItemChange:e=!0}={})=>{l.next({type:"rightPage",data:{allowSpineItemChange:e}})},goToCfi:(e,t={animate:!0})=>l.next({type:"cfi",data:Object.assign({cfi:e},t)}),goToPageOfCurrentChapter:e=>l.next({type:"chapterPage",data:{pageIndex:e}}),goToSpineItem:(e,t={animate:!0})=>{l.next({type:"spineItem",data:Object.assign({indexOrId:e},t)})},goToUrl:e=>l.next({type:"url",data:e}),goToPage:e=>l.next({type:"pageIndex",data:{pageIndex:e}}),$:{state$:s.asObservable(),navigation$:b}}})({context:i,element:u,navigator:v,currentNavigationSubject$:f,spineItemManager:n,locator:l}),P=[w,x,S],I=(0,e.merge)(...P.map((({$:{state$:e}})=>e)));let $;const O=h.measurePerformance("adjustReadingOffset",2,(({x:e,y:t},n)=>{m=void 0;const o=P.reduce(((n,i)=>i.adjustReadingOffset({x:e,y:t})||n),!1);o||(i.isRTL()?u.style.transform=`translate3d(${e}px, -${t}px, 0)`:u.style.transform=`translate3d(-${e}px, -${t}px, 0)`),n.forEach((e=>{"onViewportOffsetAdjust"===e.name&&e.fn()}))}),{disable:!0}),j=t=>{const n=o.getInfo().beginCfi;let r=f.value;if("scrollable"===i.getSettings().computedPageTurnMode)r=w.getNavigationForPosition(y());else if("navigate-from-cfi"===(null==$?void 0:$.type))r=v.getNavigationForCfi($.data),h.log(Pe,"adjustNavigation","navigate-from-cfi","use last cfi");else if("navigate-from-next-item"===(null==$?void 0:$.type))r=v.getNavigationForLastPage(t),h.log(Pe,"adjustNavigation","navigate-from-next-item",{});else if("navigate-from-previous-item"===(null==$?void 0:$.type))r=v.getNavigationForPage(0,t),h.log(Pe,"adjustNavigation","navigate-from-previous-item",{});else if("navigate-from-anchor"===(null==$?void 0:$.type)){const e=$.data;r=v.getNavigationForAnchor(e,t)}else if(n)r=v.getNavigationForCfi(n),h.log(Pe,"adjustNavigation","use last cfi");else{const e=o.getInfo().beginPageIndex||0;r=v.getNavigationForPage(e,t),h.log(Pe,"adjustNavigation","use guess strategy",{})}const a=v.arePositionsDifferent(r,f.value);return h.log(Pe,"adjustNavigation",{areDifferent:a,offsetInSpineItem:0,expectedSpineOffset:r,currentNavigationPosition:f.value,lastUserExpectedNavigation:$}),a&&b.next({position:r,animate:!1}),(0,e.of)({previousNavigationPosition:f.value,adjustedSpinePosition:r,areDifferent:a})};p.subscribe((()=>{m=void 0}));const T=i.$.settings$.pipe(a(["computedPageTurnDirection","computedPageTurnMode"]),(0,t.distinctUntilChanged)(c),(0,t.skip)(1));(0,e.merge)(p,T).pipe((0,t.tap)((()=>{"scrollable"===i.getSettings().computedPageTurnMode?(u.style.removeProperty("transform"),u.style.removeProperty("transition"),u.style.overflow="scroll"):(u.style.removeProperty("overflow"),u.style.removeProperty("overflowY")),n.layout()}))).subscribe();const C=(0,e.merge)(x.$.navigation$.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{position:{x:e.x,y:e.y,spineItem:e.spineItem},animation:"snap",triggeredBy:"manual"})))),S.$.navigation$.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{position:{x:e.x,y:e.y,spineItem:e.spineItem},animation:!!e.animate&&"turn",triggeredBy:"manual"})))),b.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{triggeredBy:"adjust",animation:!!e.animate&&"turn"})))),w.$.navigation$.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{triggeredBy:"scroll",animation:!!e.animate&&"turn"}))))).pipe((0,t.map)((e=>("lastUserExpectedNavigation"in e&&($=e.lastUserExpectedNavigation),f.next(e.position),Object.assign(Object.assign({},e),{lastUserExpectedNavigation:$})))),(0,t.share)(),(0,t.takeUntil)(i.$.destroy$)),M=C.pipe((0,t.filter)((({triggeredBy:e})=>"scroll"!==e&&("scrollable"!==i.getSettings().computedPageTurnMode||"adjust"!==e)))),F=(0,e.merge)(x.$.moveToSubject$.asObservable().pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{animation:!1})))),M).pipe((0,t.map)((({animation:e,position:t})=>({type:"manualAdjust",shouldAnimate:!(!e||"turn"===e&&"none"===i.getSettings().computedPageTurnAnimation),animation:e,position:t}))),(0,t.share)()),L=(0,e.merge)(F).pipe((0,t.startWith)(void 0),(0,t.pairwise)(),(0,t.tap)((([e,t])=>{"manualAdjust"===(null==e?void 0:e.type)&&"manualAdjust"!==(null==t?void 0:t.type)&&(u.style.setProperty("transition","none"),u.style.setProperty("opacity","1"))})),(0,t.switchMap)((([,n])=>{if("manualAdjust"!==(null==n?void 0:n.type))return e.EMPTY;const o="snap"===n.animation?i.getSettings().computedSnapAnimationDuration:i.getSettings().computedPageTurnAnimationDuration,r="snap"===n.animation?"slide":i.getSettings().computedPageTurnAnimation;return(0,e.of)(n).pipe(n.shouldAnimate?(0,t.delay)(1,e.animationFrameScheduler):e.identity,(0,t.tap)((e=>{e.shouldAnimate?"fade"===r?(u.style.setProperty("transition",`opacity ${o/2}ms`),u.style.setProperty("opacity","0")):"snap"!==n.animation&&"slide"!==r||(u.style.setProperty("transition",`transform ${o}ms`),u.style.setProperty("opacity","1")):(u.style.setProperty("transition","none"),u.style.setProperty("opacity","1"))})),(0,t.withLatestFrom)(d),(0,t.tap)((([e,t])=>{"fade"!==r&&O(e.position,t)})),n.shouldAnimate?(0,t.delay)(o/2,e.animationFrameScheduler):e.identity,(0,t.tap)((([e,t])=>{"fade"===r&&(O(e.position,t),u.style.setProperty("opacity","1"))})),n.shouldAnimate?(0,t.delay)(o/2,e.animationFrameScheduler):e.identity,(0,t.tap)((([e,t])=>{"fade"===r&&O(e.position,t)})),(0,t.takeUntil)(I.pipe((0,t.filter)((e=>"start"===e)),(0,t.skip)(1))))})),(0,t.share)(),(0,t.takeUntil)(i.$.destroy$)),R=(0,e.merge)((0,e.merge)(F).pipe((0,t.map)((()=>"start"))),(0,e.merge)(L).pipe((0,t.map)((()=>"end")))),N=(0,e.combineLatest)([...P.map((({$:{state$:e}})=>e)),R]).pipe((0,t.map)((e=>e.every((e=>"end"===e))?"free":"busy")),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1),(e=>(e.pipe((0,t.takeUntil)(i.$.destroy$)).subscribe(),e))),k=N.pipe((0,t.filter)((e=>"free"===e)),(0,e.take)(1)),D=n.$.layout$.pipe((0,t.switchMap)((()=>k.pipe((0,t.switchMap)((()=>{const t=n.getFocusedSpineItem();return t?j(t):e.EMPTY})),(0,t.takeUntil)(C)))),(0,t.share)());return{destroy:()=>{p.complete(),b.complete(),f.complete(),P.forEach((e=>e.destroy()))},layout:()=>p.next(),getCurrentNavigationPosition:()=>f.value,getCurrentViewportPosition:y,turnLeft:S.turnLeft,turnRight:S.turnRight,goToPage:S.goToPage,goToSpineItem:S.goToSpineItem,goToUrl:S.goToUrl,goToCfi:S.goToCfi,goToPageOfCurrentChapter:S.goToPageOfCurrentChapter,adjustNavigation:j,moveTo:x.moveTo,getLastUserExpectedNavigation:()=>$,element:u,$:{state$:N,navigation$:C,navigationAdjustedAfterLayout$:D,currentNavigationPosition$:f.asObservable()}}},$e=(e,t)=>{const n=e.createElement("div");return n.style.cssText="\n height: 100%;\n position: relative;\n ",n.className="prose-reader-viewport-navigator",t.getValue().reduce(((e,t)=>"viewportNavigator.onBeforeContainerCreated"===t.name?t.fn(e):e),n)};var Oe=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const Ee=n=>{var{containerElement:i,hooks:o}=n,r=Oe(n,["containerElement","hooks"]);const a=new e.BehaviorSubject({supportedPageTurnAnimation:["fade","none","slide"],supportedPageTurnMode:["controlled","scrollable"],supportedPageTurnDirection:["horizontal","vertical"],supportedComputedPageTurnDirection:["horizontal","vertical"]}),s=new e.Subject,l=new e.Subject,d=new e.Subject,g=new e.BehaviorSubject(o||[]),u=new e.Subject,p=new e.Subject,m=new e.BehaviorSubject({x:0,y:0}),f=new e.BehaviorSubject("free"),b=T(r),y=(({context:n})=>{const i=new e.Subject,o=new e.Subject;let r=[];const a=new e.BehaviorSubject([]);let s;const l=()=>{const e=n.getManifest(),t=[],i="pre-paginated"===(null==e?void 0:e.renditionLayout),s=e?(e=>{var t;const n=null===(t=e.guide)||void 0===t?void 0:t.find((e=>"cover"===e.type));return e.spineItems.findIndex((e=>null==n?void 0:n.href.endsWith(e.path)))})(e):void 0;a.value.reduce(((e,o,r)=>{const l=s===r;let c=n.getPageSize().width,d="none";const g=e.edgeX%n.getVisibleAreaRect().width==0,u=r===a.value.length-1;if(n.shouldDisplaySpread()){!i&&o.isReflowable&&r!==a.value.length-1&&(c=2*n.getPageSize().width),!i&&o.isReflowable&&r===a.value.length-1&&g&&(c=2*n.getPageSize().width);const e=g&&u&&i;o.item.pageSpreadRight&&g&&!n.isRTL()||o.item.pageSpreadLeft&&g&&n.isRTL()?(d="before",c=2*n.getPageSize().width):e&&(d=n.isRTL()?"before":"after",c=2*n.getPageSize().width),i&&l&&(c=2*n.getPageSize().width)}const{width:p,height:m}=o.layout({minimumWidth:c,blankPagePosition:d,spreadPosition:n.shouldDisplaySpread()?g?n.isRTL()?"right":"left":n.isRTL()?"left":"right":"none"});if("vertical"===n.getSettings().computedPageTurnDirection){const i=g?e.edgeY:e.edgeY-n.getVisibleAreaRect().height,r=g?0:e.edgeX;n.isRTL(),o.adjustPositionOfElement({top:i,left:r});const a=p+r,s=m+i;return t.push({leftStart:r,leftEnd:a,topStart:i,topEnd:s,height:m,width:p}),{edgeX:a,edgeY:s}}n.isRTL()?o.adjustPositionOfElement({right:e.edgeX,top:0}):o.adjustPositionOfElement({left:e.edgeX,top:0});const f=p+e.edgeX;return t.push({leftStart:e.edgeX,leftEnd:f,topStart:e.edgeY,topEnd:m,height:m,width:p}),{edgeX:f,edgeY:0}}),{edgeX:0,edgeY:0});const l=r.some(((e,n)=>!c(e,t[n])));r=t,h.log("spineItemManager","layout",{hasLayoutChanges:l,itemLayoutInformation:r}),o.next(l)},d=h.measurePerformance("loadContents",10,(e=>{var t,i;const[o,r]=e,s=(null===(t=n.getLoadOptions())||void 0===t?void 0:t.numberOfAdjacentSpineItemToPreLoad)||0,l="pre-paginated"===(null===(i=n.getManifest())||void 0===i?void 0:i.renditionLayout),c="scrollable"===n.getSettings().computedPageTurnMode;a.value.forEach(((e,t)=>{t<o&&!l&&c||t<o-s||t>r+s?e.unloadContent():e.loadContent()}))})),g=e=>"number"==typeof e?a.value[e]:a.value.find((({item:t})=>t.id===e)),u=h.measurePerformance("getAbsolutePositionOf",10,(e=>{n.getSettings().computedPageTurnDirection;const t="number"==typeof e?e:a.value.indexOf(e);return r[t]&&r[t]||{leftStart:0,leftEnd:0,topStart:0,topEnd:0,width:0,height:0}}),{disable:!0}),p=()=>void 0!==s?a.value[s]:void 0,m=e=>{if(!e)return;const t=a.value.indexOf(e);return t<0?void 0:t},f=h.measurePerformance("getSpineItemAtPosition",10,(e=>{const t=a.value.find((t=>{const{leftStart:i,leftEnd:o,topEnd:r,topStart:a}=u(t),s=e.x>=i&&e.x<o;return"horizontal"===n.getSettings().computedPageTurnDirection?s:s&&e.y>=a&&e.y<r}));return 0!==e.x||t?t:a.value[0]}),{disable:!0}),v=()=>{a.value.forEach((e=>e.destroy()))};return{destroyItems:v,add:e=>{a.value.push(e),e.$.contentLayout$.pipe((0,t.takeUntil)(n.$.destroy$)).subscribe((()=>{l()})),e.$.loaded$.pipe((0,t.tap)((()=>{e.isUsingVerticalWriting()&&n.setHasVerticalWriting()})),(0,t.takeUntil)(n.$.destroy$)).subscribe(),e.load()},get:g,getAll:()=>a.value,getLength:()=>a.value.length,layout:l,focus:e=>{const t="number"==typeof e?g(e):e;if(!t)return;const n=a.value.indexOf(t);n!==s&&(s=n,i.next({data:t}))},loadContents:d,comparePositionOf:(e,t)=>a.value.indexOf(e)>a.value.indexOf(t)?"after":"before",getAbsolutePositionOf:u,getSpineItemAtPosition:f,getFocusedSpineItem:p,getFocusedSpineItemIndex:()=>{const e=p();return e&&m(e)},getSpineItemIndex:m,destroy:()=>{v(),i.complete(),o.complete()},$:{focus$:i.asObservable(),layout$:o.asObservable(),itemIsReady$:a.asObservable().pipe((0,t.switchMap)((n=>{const i=n.map((e=>e.$.isReady$.pipe((0,t.map)((t=>({item:e.item,isReady:t}))))));return(0,e.merge)(...i)})))}}})({context:b}),x=v({context:b,spineItemManager:y}),w=je(i),S=Te(i),P=ye({context:b}),I=(({spineItemManager:e,context:t,spineItemLocator:n})=>{const i=h.measurePerformance("getSpineItemPositionFromSpinePosition",10,((n,i)=>{const{leftEnd:o,leftStart:r,topStart:a,topEnd:s}=e.getAbsolutePositionOf(i);return t.isRTL()?{x:o-n.x-t.getPageSize().width,y:Math.max(0,n.y-a)}:{x:Math.max(0,n.x-r),y:Math.max(0,n.y-a)}}),{disable:!0}),o=(n,i)=>{const{leftEnd:o,leftStart:r,topStart:a,topEnd:s}=e.getAbsolutePositionOf(i);return t.isRTL()?{x:o-n.x-t.getPageSize().width,y:a+n.y}:{x:r+n.x,y:a+n.y}},r=h.measurePerformance("getSpineItemFromOffset",10,(t=>e.getSpineItemAtPosition(t)),{disable:!0});return{getSpinePositionFromSpineItemPosition:o,getSpinePositionFromSpineItem:e=>o({x:0,y:0},e),getSpinePositionFromSpineItemAnchor:(e,t)=>{const i=n.getSpineItemOffsetFromAnchor(e,t);return o({x:i,y:0},t)},getSpineItemPositionFromSpinePosition:i,getSpineItemFromPosition:r,getSpineItemFromIframe:t=>e.getAll().find((e=>e.spineItemFrame.getFrameElement()===t)),getSpineItemPageIndexFromNode:(t,i,o)=>{if("number"==typeof o){const r=e.get(o);return r?n.getSpineItemPageIndexFromNode(t,i||0,r):void 0}return n.getSpineItemPageIndexFromNode(t,i||0,o)},getSpineItemsFromReadingOrderPosition:n=>{var i;const o=r(n)||e.getFocusedSpineItem(),a=e.getSpineItemIndex(o);if(void 0===a)return;let s=n;t.shouldDisplaySpread()&&(s={x:n.x+t.getPageSize().width,y:n.y});const l=null!==(i=e.getSpineItemIndex(r(s)||e.getFocusedSpineItem()))&&void 0!==i?i:a,[c=a,d=a]=[a,l].sort(((e,t)=>e-t));return{begin:a,beginPosition:n,end:l,endPosition:s,left:c,right:d}}}})({context:b,spineItemManager:y,spineItemLocator:P}),$=(({spineItemManager:e,spineItemLocator:t})=>{const n=e=>`|[prose~anchor~${encodeURIComponent(e.item.id)}]`,i=h.measurePerformance("getCfi",10,((e,i)=>{var r,a,s;const l=t.getFirstNodeOrRangeAtPage(e,i),c=null===(s=null===(a=null===(r=i.spineItemFrame.getManipulableFrame())||void 0===r?void 0:r.frame)||void 0===a?void 0:a.contentWindow)||void 0===s?void 0:s.document,d=n(i),g=`|[prose~offset~${(null==l?void 0:l.offset)||0}]`;return l&&c?ue.generate(l.node,0,`${d}${g}`):o(i)})),o=e=>`epubcfi(/0${n(e)}) `,r=t=>{const{itemId:n}=pe(t);if(n){const{itemId:n}=pe(t);return(n?e.get(n):void 0)||e.get(0)}};return{getSpineItemFromCfi:r,getCfiMetaInformation:t=>{const n=r(t);if(n)return{spineItemIndex:e.getSpineItemIndex(n)}},getCfi:i,getRootCfi:o,resolveCfi:t=>{var n,i,o;if(!t)return;const a=r(t),s=e.getSpineItemIndex(a)||0;if(!a)return;const{cleanedCfi:l,offset:c}=pe(t),d=new ue(l,{}),g=null===(o=null===(i=null===(n=a.spineItemFrame.getManipulableFrame())||void 0===n?void 0:n.frame)||void 0===i?void 0:i.contentWindow)||void 0===o?void 0:o.document;if(g)try{const{node:e,offset:t}=d.resolve(g,{});return{node:e,offset:null!=c?c:t,spineItemIndex:s}}catch(e){return h.error(e),{spineItemIndex:s}}return{spineItemIndex:s}},generateFromRange:({startNode:e,start:t,end:n,endNode:i},o)=>({start:ue.generate(e,t,`|[prose~anchor~${encodeURIComponent(o.id)}]`),end:ue.generate(i,n,`|[prose~anchor~${encodeURIComponent(o.id)}]`)})}})({spineItemManager:y,context:b,spineItemLocator:P}),O=u.asObservable(),E=ve({ownerDocument:w.ownerDocument,iframeEventBridgeElement:S,context:b,pagination:x,spineItemManager:y,hooks$:g,navigation$:O,spineLocator:I,spineItemLocator:P,cfiLocator:$,navigationAdjusted$:p.asObservable(),viewportState$:f.asObservable(),currentNavigationPosition$:m.asObservable()}),j=Ie({context:b,pagination:x,spineItemManager:y,parentElement:w,cfiLocator:$,spineLocator:I,hooks$:g,spine:E});i.appendChild(w),w.appendChild(S),j.$.state$.subscribe(f),j.$.navigation$.subscribe(u),j.$.navigationAdjustedAfterLayout$.subscribe(p),j.$.currentNavigationPosition$.subscribe(m);const C=()=>{const e={width:i.offsetWidth,height:i.offsetHeight},t=e.width,n=t;w.style.setProperty("overflow","hidden"),w.style.height=e.height-0-0+"px",w.style.width=n-0+"px";const o=w.getBoundingClientRect();b.setVisibleAreaRect(o.x,o.y,n,e.height),j.layout(),E.layout()};E.$.$.pipe((0,t.tap)((e=>{"onSelectionChange"===e.type&&d.next(e.data)})),(0,t.takeUntil)(l)).subscribe(),j.$.navigationAdjustedAfterLayout$.pipe((0,e.switchMap)((({adjustedSpinePosition:e})=>E.adjustPagination(e).pipe((0,t.takeUntil)(O)))),(0,t.takeUntil)(b.$.destroy$)).subscribe(),(0,e.merge)(b.$.load$,b.$.settings$,b.$.hasVerticalWriting$).pipe((0,t.mapTo)(void 0),(0,t.withLatestFrom)(b.$.hasVerticalWriting$),(0,t.map)((([,e])=>{const t=b.getSettings(),n=b.getManifest();return{hasVerticalWriting:e,renditionFlow:null==n?void 0:n.renditionFlow,renditionLayout:null==n?void 0:n.renditionLayout,computedPageTurnMode:t.computedPageTurnMode}})),(0,t.distinctUntilChanged)(c),(0,t.map)((({hasVerticalWriting:e,renditionFlow:t,renditionLayout:n,computedPageTurnMode:i})=>Object.assign(Object.assign({},a.value),{supportedPageTurnMode:"scrolled-continuous"===t?["scrollable"]:b.areAllItemsPrePaginated()?["controlled","scrollable"]:["controlled"],supportedPageTurnAnimation:"scrolled-continuous"===t||"scrollable"===i?["none"]:e?["fade","none"]:["fade","none","slide"],supportedPageTurnDirection:"scrollable"===i?["vertical"]:"reflowable"===n?["horizontal"]:["horizontal","vertical"]}))),(0,t.takeUntil)(l)).subscribe(a);return{context:b,registerHook:(e,t)=>{g.next([...g.getValue(),{name:e,fn:t}])},spine:E,viewportNavigator:j,manipulateSpineItems:E.manipulateSpineItems,manipulateSpineItem:E.manipulateSpineItem,manipulateContainer:e=>{e(w)},moveTo:j.moveTo,turnLeft:j.turnLeft,turnRight:j.turnRight,goToPageOfCurrentChapter:j.goToPageOfCurrentChapter,goToPage:j.goToPage,goToUrl:j.goToUrl,goToCfi:j.goToCfi,goToSpineItem:j.goToSpineItem,getFocusedSpineItemIndex:y.getFocusedSpineItemIndex,getSpineItem:y.get,getSpineItems:y.getAll,getAbsolutePositionOf:y.getAbsolutePositionOf,getSelection:E.getSelection,isSelecting:E.isSelecting,normalizeEventForViewport:E.normalizeEventForViewport,getCfiMetaInformation:E.cfiLocator.getCfiMetaInformation,resolveCfi:E.cfiLocator.resolveCfi,generateCfi:E.cfiLocator.generateFromRange,locator:E.locator,getCurrentNavigationPosition:j.getCurrentNavigationPosition,getCurrentViewportPosition:j.getCurrentViewportPosition,layout:C,load:(e,t={})=>{b.getManifest()?h.warn("loading a new book is not supported yet"):(h.log("load",{manifest:e,loadOptions:t}),b.load(e,t),C(),t.cfi?j.goToCfi(t.cfi,{animate:!1}):j.goToSpineItem(0,{animate:!1}),s.next())},destroy:()=>{g.next([]),g.complete(),x.destroy(),b.destroy(),j.destroy(),E.destroy(),w.remove(),S.remove(),s.complete(),a.complete(),d.complete(),l.next(),l.complete()},setSettings:b.setSettings,$:{pagination$:x.$.info$,settings$:b.$.settings$,state$:a.asObservable(),ready$:s.asObservable(),selection$:d.asObservable(),viewportState$:j.$.state$,layout$:E.$.layout$,itemsCreated$:E.$.itemsCreated$,itemsBeforeDestroy$:E.$.itemsBeforeDestroy$,itemIsReady$:y.$.itemIsReady$,destroy$:l},__debug:{pagination:x,context:b,spineItemManager:y}}},je=e=>{const t=e.ownerDocument.createElement("div");return t.style.cssText="\n background-color: white;\n position: relative;\n ",t.className="prose-reader-reader",t},Te=e=>{const t=e.ownerDocument.createElement("div");return t.id="proseReaderIframeEventBridgeElement",t.style.cssText="\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n z-index: -1;\n ",t};var Ce=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const Me=e=>Ce(void 0,void 0,void 0,(function*(){return new Promise(((t,n)=>{const i=window.indexedDB.open(e);i.onerror=function(e){n(e)},i.onsuccess=function(){var e;t((e=i.result,{put:(t,n)=>new Promise(((i,o)=>{const r=e.transaction(["store"],"readwrite");r.onerror=function(e){o(e)},r.oncomplete=function(){i()};const a=r.objectStore("store").put(n,t);a.onsuccess=()=>{i()},a.onerror=e=>{o(e)}})),keys:()=>new Promise(((t,n)=>{const i=e.transaction(["store"],"readonly");i.onerror=function(e){n(e)};const o=i.objectStore("store").openKeyCursor(),r=[];o.onsuccess=()=>{const e=o.result;e?(r.push(e.key),e.continue()):t(r)},o.onerror=()=>{n(o.error)}})),get:t=>new Promise(((n,i)=>{const o=e.transaction(["store"],"readwrite"),r=o.objectStore("store").get(t);r.onsuccess=()=>{let e=r.result;void 0===e&&(e=null),n(e)},o.onerror=function(){i(r.error)}})),remove:t=>new Promise(((n,i)=>{const o=e.transaction(["store"],"readwrite"),r=o.objectStore("store").delete(t);o.onerror=function(){i(r.error)},o.oncomplete=function(){n()},o.onabort=function(){var e;const t=r.error?r.error:null===(e=r.transaction)||void 0===e?void 0:e.error;i(t)}}))}))},i.onupgradeneeded=()=>{i.result.createObjectStore("store")}}))}));var Fe=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};var Le=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const Re=navigator.userAgent.indexOf("")>-1&&navigator.userAgent.indexOf("Chrome")<=-1;var Ne=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const ke=(e,t)=>{const n=e.ownerDocument.createElement("div");return n.classList.add("prose-reader-enhancer-loading-container"),n.style.cssText=`\n height: 100%;\n width: 100%;\n max-width: ${t.getVisibleAreaRect().width}px;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: absolute;\n left: 0;\n top: 0;\n color: rgb(202, 202, 202);\n -background-color: white;\n `,n},De=({container:e,item:t})=>{const n=e.ownerDocument.createElement("div");n.innerText="prose",n.style.cssText="\n font-size: 4em;\n ";const i=e.ownerDocument.createElement("div");return i.innerText=`loading ${t.id}`,i.style.cssText="\n font-size: 1.2em;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n max-width: 300px;\n width: 80%;\n ",e.appendChild(n),e.appendChild(i),e};var Ae=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const Ue=e=>{const{context:t,manipulateContainer:n,manipulateSpineItems:i,getFocusedSpineItemIndex:o,getCurrentNavigationPosition:r,getSpineItem:a,locator:s,getAbsolutePositionOf:l,generateCfi:c,resolveCfi:d,getCfiMetaInformation:g,spine:u}=e;return Ae(e,["context","manipulateContainer","manipulateSpineItems","getFocusedSpineItemIndex","getCurrentNavigationPosition","getSpineItem","locator","getAbsolutePositionOf","generateCfi","resolveCfi","getCfiMetaInformation","spine"])},Be=O((e=>t=>{const n=e(t),i=(e,t,n)=>e+t*n,o=(e,t,i)=>{const{height:o,width:r}=i.getElementDimensions(),{topStart:a,leftStart:s}=n.getAbsolutePositionOf(i);return"vertical"===e.getSettings().computedPageTurnDirection?Math.max(0,Math.min(1,(t.y-a+e.getVisibleAreaRect().height)/o)):Math.max(0,Math.min(1,(t.x-s+e.getVisibleAreaRect().width)/r))};return Object.assign(Object.assign({},n),{progression:{getPercentageEstimate:(e,t,n,r,a,s)=>{var l,c,d,g,u,p;const m="pre-paginated"===(null===(l=e.getManifest())||void 0===l?void 0:l.renditionLayout),f=(null===(c=e.getManifest())||void 0===c?void 0:c.spineItems.length)||0,h=(null===(d=e.getManifest())||void 0===d?void 0:d.spineItems.slice(0,t).reduce(((e,t)=>e+t.progressionWeight),0))||0,v=(null===(u=null===(g=e.getManifest())||void 0===g?void 0:g.spineItems[t])||void 0===u?void 0:u.progressionWeight)||0;let b=(r+1)*(v/n);m||!s.isReflowable||s.isReady()||(b=0);let y=h+b;return"scrolled-continuous"===(null===(p=e.getManifest())||void 0===p?void 0:p.renditionFlow)&&(b=s.isReady()?o(e,a,s):0,y=i(h,v,b)),t===f-1&&r===n-1&&y>.99?1:y},getScrollPercentageWithinItem:o}})}),(n=>i=>{const o=n(i),r={},a=()=>o.getSpineItems().map((e=>(e=>{const t=e.spineItemFrame.getWritingMode(),{width:n,height:i}=e.getElementDimensions(),r=o.context.getSettings();return"vertical"===r.pageTurnDirection&&"scrollable"===r.pageTurnMode?1:"vertical-rl"===t?y(i,o.context.getPageSize().height):y(n,o.context.getPageSize().width)})(e)),0);o.$.itemsCreated$.pipe((0,t.tap)((e=>e.forEach((({item:e})=>{r[e.id]=(e=>{const t=o.context.getManifest();return e&&t&&S(t,e)})(e)})))),(0,t.takeUntil)(o.$.destroy$)).subscribe();const s=o.$.pagination$.pipe((0,t.map)((e=>{var t;const n=o.context,i=void 0!==e.beginSpineItemIndex?o.getSpineItem(e.beginSpineItemIndex):void 0,a=void 0!==e.endSpineItemIndex?o.getSpineItem(e.endSpineItemIndex):void 0;return{beginPageIndexInChapter:e.beginPageIndex,beginNumberOfPagesInChapter:e.beginNumberOfPages,beginChapterInfo:i?r[i.item.id]:void 0,beginSpineItemIndex:e.beginSpineItemIndex,beginCfi:e.beginCfi,beginSpineItemReadingDirection:null==i?void 0:i.getReadingDirection(),endChapterInfo:a?r[a.item.id]:void 0,endPageIndexInChapter:e.endPageIndex,endNumberOfPagesInChapter:e.endNumberOfPages,endSpineItemIndex:e.endSpineItemIndex,endSpineItemReadingDirection:null==a?void 0:a.getReadingDirection(),endCfi:e.endCfi,percentageEstimateOfBook:a?o.progression.getPercentageEstimate(n,null!==(t=e.endSpineItemIndex)&&void 0!==t?t:0,e.endNumberOfPages,e.endPageIndex||0,o.getCurrentViewportPosition(),a):0,isUsingSpread:n.shouldDisplaySpread()}})),(0,t.distinctUntilChanged)(c)),l=o.$.layout$.pipe((0,t.debounceTime)(10,e.animationFrameScheduler),(0,t.withLatestFrom)(o.$.pagination$),(0,t.map)((()=>{const e=a();return{numberOfPagesPerItems:e,numberOfTotalPages:e.reduce(((e,t)=>e+t),0)}})),(0,t.distinctUntilChanged)(c),(0,t.startWith)({numberOfPagesPerItems:[],numberOfTotalPages:0})),d=(0,e.combineLatest)([s,l]).pipe((0,t.map)((([e,t])=>{var n,i;return Object.assign(Object.assign(Object.assign({},e),t),{beginAbsolutePageIndex:t.numberOfPagesPerItems.slice(0,e.beginSpineItemIndex).reduce(((e,t)=>e+t),null!==(n=e.beginPageIndexInChapter)&&void 0!==n?n:0),endAbsolutePageIndex:t.numberOfPagesPerItems.slice(0,e.endSpineItemIndex).reduce(((e,t)=>e+t),null!==(i=e.endPageIndexInChapter)&&void 0!==i?i:0)})})),(0,t.tap)((e=>{w.log("pagination",e)})),(0,t.shareReplay)(1),(0,t.takeUntil)(o.$.destroy$));return Object.assign(Object.assign({},o),{$:Object.assign(Object.assign({},o.$),{pagination$:d})})}),(e=>t=>{const n=e(t),i=e=>{"ArrowRight"===e.key&&n.turnRight(),"ArrowLeft"===e.key&&n.turnLeft()};document.addEventListener("keyup",i),n.registerHook("item.onLoad",(({frame:e})=>{var t;return null===(t=e.contentDocument)||void 0===t||t.addEventListener("keyup",i),()=>{var t;null===(t=e.contentDocument)||void 0===t||t.removeEventListener("keyup",i)}}));return Object.assign(Object.assign({},n),{destroy:()=>{document.removeEventListener("keyup",i),n.destroy()}})}),(n=>i=>{var o;const{theme:r}=i,a=n(i),s=new e.BehaviorSubject(null!==(o=i.theme)&&void 0!==o?o:"bright"),l=()=>{const e=I.find((e=>e.name===s.value));return`\n body {\n ${void 0!==e?`background-color: ${e.backgroundColor} !important;`:""}\n }\n ${(null==e?void 0:e.foregroundColor)?`\n body * {\n \n color: ${e.foregroundColor};\n }\n `:""}\n `},c=({container:e})=>{const t=I.find((e=>e.name===s.value));return t&&e.style.setProperty("background-color",t.backgroundColor),()=>{}};return a.registerHook("item.onLoad",(({removeStyle:e,addStyle:t})=>{e("prose-reader-theme"),t("prose-reader-theme",l())})),a.$.itemsCreated$.pipe((0,t.tap)((e=>e.map((({element:e})=>c({container:e}))))),(0,t.takeUntil)(a.$.destroy$)).subscribe(),s.pipe((0,t.tap)((()=>{a.manipulateSpineItems((({removeStyle:e,addStyle:t,container:n})=>(e("prose-reader-theme"),t("prose-reader-theme",l()),c({container:n}),!1)))})),(0,t.takeUntil)(a.$.destroy$)).subscribe(),Object.assign(Object.assign({},a),{theme:{set:e=>{e!==s.value&&s.next(e)},get:()=>s.value,$:{theme$:s.asObservable()}}})}),(e=>t=>{const n=e(t),i=()=>{var e,t;const i=n.getFocusedSpineItemIndex()||0,{end:o=i}=n.locator.getSpineItemsFromReadingOrderPosition(n.getCurrentNavigationPosition())||{},r=o+1;r<(null!==(t=null===(e=n.context.getManifest())||void 0===e?void 0:e.spineItems.length)&&void 0!==t?t:0)&&n.goToSpineItem(r)},o=()=>{const e=n.getFocusedSpineItemIndex()||0,{begin:t=e}=n.locator.getSpineItemsFromReadingOrderPosition(n.getCurrentNavigationPosition())||{},i=t-1;i>=0&&n.goToSpineItem(i)};return Object.assign(Object.assign({},n),{goToLeftSpineItem:()=>n.context.isRTL()?i():o(),goToRightSpineItem:()=>n.context.isRTL()?o():i()})}),(e=>t=>{const n=e(t);return n.manipulateContainer((e=>(e.addEventListener("scroll",(()=>{"controlled"===n.context.getSettings().computedPageTurnMode&&e.scrollTo(0,0)})),false))),n.registerHook("item.onLoad",(({frame:e})=>{var t;null===(t=e.contentDocument)||void 0===t||t.body.setAttribute("tabindex","-1")})),n}),(e=>t=>{const n=e(t),i=new IntersectionObserver((e=>{e.forEach((e=>{var t;const n=e.target,i=Array.from((null===(t=n.contentDocument)||void 0===t?void 0:t.body.getElementsByTagName("audio"))||[]);e.isIntersecting?i.forEach((e=>{e.hasAttribute("autoplay")&&e.paused&&e.readyState>=2&&e.play().catch(console.error)})):i.forEach((e=>{e.pause(),e.currentTime=0}))}))}),{threshold:.01}),o=new IntersectionObserver((e=>{e.forEach((e=>{if("video"===e.target.tagName){const t=e.target;e.isIntersecting?t.hasAttribute("autoplay")&&t.paused&&t.readyState>=2&&t.play().catch(console.error):(t.pause(),t.currentTime=0)}}))}),{threshold:.5});n.registerHook("item.onLoad",(({frame:e})=>{var t;i.observe(e);const n=null===(t=e.contentDocument)||void 0===t?void 0:t.body.getElementsByTagName("video"),r=Array.from(n||[]).map((e=>(o.observe(e),()=>o.unobserve(e))));return()=>{i.unobserve(e),r.forEach((e=>e()))}}));return Object.assign(Object.assign({},n),{destroy:()=>{i.disconnect(),o.disconnect(),n.destroy()}})}),(t=>n=>{const i=t(n),o=(t=>{const n=new e.BehaviorSubject(!1);let i,o={x:0,y:0},r={x:0,y:0},a=1,s=1;const l=()=>{a=s},c=e=>{const t=null==i?void 0:i.querySelector("img"),n=Math.ceil(100*(e<1?a-(1-e):a+(e-1)))/100,r=Math.max(n,1);n<1&&(o={x:0,y:0}),null==t||t.style.setProperty("transform",`translate3d(${o.x}px, ${o.y}px, 0px) scale3d(${r}, ${r}, 1)`),s=r};return{enter:e=>{n.next(!0),o={x:0,y:0},a=1,s=1,t.manipulateContainer((t=>{i=t.ownerDocument.createElement("div"),i.style.cssText="\n top: 0;\n left: 0;\n display: block;\n position: absolute;\n z-index: 1;\n background: black;\n width: 100%;\n height: 100%;\n ";const n=e.cloneNode();return n.src=e.src,n.style.setProperty("height","100%"),n.style.setProperty("width","100%"),n.style.setProperty("object-fit","contain"),n.style.setProperty("pointer-events","none"),i.appendChild(n),t.appendChild(i),!1})),c(1.2),l()},exit:()=>{s=1,t.manipulateContainer((()=>(null==i||i.remove(),i=void 0,!1))),n.next(!1)},move:(e,{isFirst:t,isLast:n})=>{const s=null==i?void 0:i.querySelector("img");if(t&&(r={x:0,y:0}),e){const t=e.x-((null==r?void 0:r.x)||0),n=e.y-((null==r?void 0:r.y)||0);o={x:o.x+t,y:o.y+n},null==s||s.style.setProperty("transform",`translate3d(${o.x}px, ${o.y}px, 0px) scale3d(${a}, ${a}, 1)`),r=e}n&&(r=void 0)},scale:c,setCurrentScaleAsBase:l,getScaleValue:()=>s,isZooming:()=>n.value,destroy:()=>{null==i||i.remove(),i=void 0,n.complete()},isZooming$:n.asObservable()}})(i),r=(t=>{const n=new e.BehaviorSubject(!1);let i=1,o=1;const r=()=>{s(0-i),o=1,i=1},a=()=>{i=o},s=e=>{const n=Math.ceil(100*(e<1?i-(1-e):i+(e-1)))/100,r=Math.max(n,1),a=t.spine.element.getBoundingClientRect().width/t.spine.element.offsetWidth,s=t.viewportNavigator.element.scrollTop;t.spine.element.style.transform=`scale(${r})`,t.viewportNavigator.element.scrollLeft=E({newScale:r,oldScale:a,pageSize:t.viewportNavigator.element.clientWidth,screenSize:t.spine.element.offsetWidth,scrollOffset:t.viewportNavigator.element.scrollLeft}),t.viewportNavigator.element.scrollTop=E({newScale:r,oldScale:a,pageSize:t.viewportNavigator.element.clientHeight,screenSize:t.spine.element.offsetHeight,scrollOffset:s}),o=r};return{enter:()=>{r(),t.spine.element.style.transformOrigin="0 0",n.next(!0),s(1),a()},exit:()=>{r(),n.next(!1)},move:(e,t)=>{},scale:s,setCurrentScaleAsBase:a,getScaleValue:()=>o,isZooming:()=>n.value,destroy:()=>{n.complete()},isZooming$:n.asObservable()}})(i),a=new e.BehaviorSubject(void 0),s=()=>"scrollable"===i.context.getSettings().computedPageTurnMode;return Object.assign(Object.assign({},i),{destroy:()=>{o.destroy(),r.destroy(),a.complete(),i.destroy()},zoom:{enter:e=>{var t;if(null===(t=null==a?void 0:a.value)||void 0===t||t.exit(),s())return r.enter(),void(null==a||a.next(r));e?(o.enter(e),null==a||a.next(o)):h.warn("You should specify an element to zoom at")},exit:()=>{var e;null===(e=a.value)||void 0===e||e.exit()},move:(e,t)=>{var n;null===(n=a.value)||void 0===n||n.move(e,t)},isZooming:()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.isZooming())||!1},getScaleValue:()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.getScaleValue())||1},scale:e=>{var t;(null===(t=a.value)||void 0===t?void 0:t.isZooming())?a.value.scale(e):h.warn("You need to start zoom before being able to call this fn")},isUsingScrollableZoom:s,setCurrentScaleAsBase:()=>{var e;null===(e=a.value)||void 0===e||e.setCurrentScaleAsBase()},$:{isZooming$:a.pipe((0,e.switchMap)((t=>(null==t?void 0:t.isZooming$)||(0,e.of)(!1))))}}})}),(n=>i=>{var{pageHorizontalMargin:o=24,pageVerticalMargin:r=24}=i,s=g(i,["pageHorizontalMargin","pageVerticalMargin"]);const l=n(s),d=new e.BehaviorSubject({pageHorizontalMargin:o,pageVerticalMargin:r});let u;l.registerHook("onViewportOffsetAdjust",(()=>{let e=!1;l.manipulateSpineItems((({frame:t})=>(!e&&t&&(t.getBoundingClientRect().left,e=!0),false)))})),l.registerHook("item.onLayoutBeforeMeasurment",(({frame:e,minimumWidth:t,item:n,isImageType:i})=>{var o,r;const{pageHorizontalMargin:a=0,pageVerticalMargin:s=0}=d.value,c=l.context.getPageSize();if("reflowable"===n.renditionLayout&&e.getIsReady()&&!i()&&!e.getViewportDimensions()){let n=c.width-2*a;const i=c.height-2*s;let l=c.width-2*a,d=2*a;e.isUsingVerticalWriting()&&(l=t-2*a,n=i,d=2*s),null===(o=e.getManipulableFrame())||void 0===o||o.removeStyle("prose-layout-enhancer-css"),null===(r=e.getManipulableFrame())||void 0===r||r.addStyle("prose-layout-enhancer-css",`\n body {\n width: ${l}px !important;\n margin: ${s}px ${a}px !important;\n column-gap: ${d}px !important;\n column-width: ${n}px !important;\n height: ${i}px !important;\n }\n img, video, audio, object, svg {\n max-width: ${n}px !important;\n max-height: ${i}px !important;\n }\n table {\n max-width: ${n}px !important;\n }\n td {\n max-width: ${n}px;\n }\n `)}})),"container"===s.layoutAutoResize&&(u=new ResizeObserver((()=>{null==l||l.layout()})),u.observe(s.containerElement));const p=(n=>{let i;n.manipulateContainer((e=>(i=e.ownerDocument.createElement("div"),i.style.cssText="\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n visibility: hidden;\n ",e.appendChild(i),!1)));const o=n=>(0,e.scheduled)(n,e.animationFrameScheduler).pipe((0,t.tap)((()=>{null==i||i.style.setProperty("visibility","hidden")}))),r=n.$.viewportState$.pipe((0,t.filter)((e=>"free"===e))),a=n.$.viewportState$.pipe((0,t.filter)((e=>"busy"===e))).pipe((0,t.tap)((()=>{null==i||i.style.setProperty("visibility","visible")}))),s=o(r).pipe((0,t.take)(1));return n.context.$.settings$.pipe((0,t.map)((()=>n.context.getSettings().computedPageTurnMode)),(0,t.distinctUntilChanged)()).pipe((0,t.switchMap)((n=>"controlled"===n?a.pipe((0,t.switchMap)((()=>s))):o((0,e.of)(void 0)))),(0,t.takeUntil)(n.$.destroy$))})(l);return p.subscribe(),d.pipe(a(["pageHorizontalMargin","pageVerticalMargin"]),(0,t.distinctUntilChanged)(c),(0,t.skip)(1),(0,t.tap)((()=>{l.spine.layout()})),(0,t.takeUntil)(l.$.destroy$)).subscribe(),Object.assign(Object.assign({},l),{destroy:()=>{l.destroy(),null==u||u.disconnect()},setSettings:e=>{var{pageVerticalMargin:t,pageHorizontalMargin:n}=e,i=g(e,["pageVerticalMargin","pageHorizontalMargin"]);void 0===n&&void 0===t||d.next({pageHorizontalMargin:null!=n?n:d.value.pageHorizontalMargin,pageVerticalMargin:null!=t?t:d.value.pageVerticalMargin}),l.setSettings(i)},$:Object.assign(Object.assign({},l.$),{settings$:(0,e.combineLatest)([l.$.settings$,d.asObservable()]).pipe((0,t.map)((([e,t])=>Object.assign(Object.assign({},e),t))))})})}),(e=>t=>{const n=e(t);return Object.assign(Object.assign({},n),{utils:{isOrIsWithinValidLink:e=>{if("object"==typeof(t=e)&&t&&"nodeType"in t&&(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE&&"innerText"in t){const t="a"===e.nodeName?e:e.closest("a");if(null==t?void 0:t.getAttribute("href"))return!0}var t;return!1}}})}),(n=>i=>{const o=n(i),r=(n=>{let i=Date.now().toString();const o=new e.Subject,r=e=>{var t,i;if("string"==typeof e||"object"==typeof e){const i="object"==typeof e?e.id:void 0;return null===(t=n.getManifest())||void 0===t?void 0:t.spineItems.find((e=>e.id===i))}return null===(i=n.getManifest())||void 0===i?void 0:i.spineItems[e]},a=(e,t)=>{o.next({id:e,data:t})};o.asObservable().pipe((0,t.mergeMap)((({id:n,data:o})=>{const a=r(n);return a?(0,e.from)((0,e.forkJoin)([Me("prose-reader"),(0,e.from)(o.blob())])).pipe((0,t.switchMap)((([t,n])=>(0,e.from)(t.put(`${i}_${a.id}`,n)))),(0,t.catchError)((t=>(h.error(t),e.EMPTY)))):e.EMPTY})),(0,t.takeUntil)(n.$.destroy$)).subscribe();const s=n.$.load$.pipe((0,t.tap)((()=>{i=Date.now().toString()})));return(0,e.merge)(s).pipe((0,t.switchMap)((()=>(h.log("Cleanup up old cache..."),(0,e.from)(Me("prose-reader")).pipe((0,t.switchMap)((n=>(0,e.from)(n.keys()).pipe((0,t.map)((e=>e.filter((e=>!e.toString().startsWith(i))))),(0,t.switchMap)((t=>{const i=t.map((e=>n.remove(e)));return(0,e.from)(Promise.all(i))}))))),(0,t.catchError)((t=>(h.error(t),e.EMPTY))))))),(0,t.takeUntil)(n.$.destroy$)).subscribe(),{get:(e,t)=>Fe(void 0,void 0,void 0,(function*(){const n=r(e);if(!n)return new Response("Item not found",{status:404});const o=yield Me("prose-reader"),s=yield o.get(`${i}_${n.id}`);if(s)return new Response(s,{status:200});const l=t&&(yield t(n))||(yield fetch(n.href));return a(n,l.clone()),l})),destroy:()=>{o.complete()}}})(o.context);o.registerHook("item.onGetResource",(e=>t=>Le(void 0,void 0,void 0,(function*(){return r.get(t,e)}))));return Object.assign(Object.assign({},o),{destroy:()=>{r.destroy(),o.destroy()},load:(e,t)=>{o.load(e,Object.assign({},t))}})}),(e=>t=>{const n=e(t),i=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?e.target.removeAttribute("tab-index"):e.target.setAttribute("tab-index","-1")}))}),{});return n.registerHook("item.onLoad",(({addStyle:e,frame:t})=>{var n;e("prose-reader-accessibility","\n :focus-visible {\n \n outline: -webkit-focus-ring-color auto 1px;\n }\n ");const o=null===(n=t.contentDocument)||void 0===n?void 0:n.body.querySelectorAll("a");return null==o||o.forEach((e=>{i.observe(e)})),()=>{null==o||o.forEach((e=>{i.unobserve(e)}))}})),Object.assign({},n)}),(t=>n=>{const i=t(n),o=new e.Subject;return i.registerHook("item.onLoad",(({frame:e})=>{e.contentDocument&&Array.from(e.contentDocument.querySelectorAll("a")).forEach((e=>e.addEventListener("click",(t=>{t.target&&"style"in t.target&&"ELEMENT_NODE"in t.target&&(h.warn("prevented click on",e,t),t.preventDefault(),(e=>{var t;if(!e.href)return;const n=new URL(e.href),o=`${n.origin}${n.pathname}`;(null===(t=i.context.getManifest())||void 0===t?void 0:t.spineItems.some((e=>e.href===o)))&&i.goToUrl(n)})(e),o.next({event:"linkClicked",data:e}))}))))})),Object.assign(Object.assign({},i),{$:Object.assign(Object.assign({},i.$),{links$:o.asObservable()})})}),(n=>i=>{var{fontScale:a=1,lineHeight:s="publisher",fontWeight:l="publisher",fontJustification:c="publisher"}=i,d=o(i,["fontScale","lineHeight","fontWeight","fontJustification"]);const g=new e.BehaviorSubject({fontScale:a,lineHeight:s,fontWeight:l,fontJustification:c}),u=n(d),p=()=>`\n \n body {\n ${1!==g.value.fontScale?`font-size: ${g.value.fontScale}em !important;`:""}\n ${"publisher"!==g.value.lineHeight?`line-height: ${g.value.lineHeight} !important;`:""}\n ${"publisher"!==g.value.fontWeight?`font-weight: ${g.value.fontWeight} !important;`:""}\n ${"publisher"!==g.value.fontJustification?`text-align: ${g.value.fontJustification} !important;`:""}\n }\n `;u.registerHook("item.onLoad",(({removeStyle:e,addStyle:t,item:n})=>{"pre-paginated"!==n.renditionLayout&&(e("prose-reader-fonts"),t("prose-reader-fonts",p()))}));return g.asObservable().pipe((n=>n.pipe((0,t.pairwise)(),(0,e.map)((([e,t])=>t.fontScale!==e.fontScale||t.lineHeight!==e.lineHeight)))),(0,t.tap)((e=>{u.manipulateSpineItems((({removeStyle:t,addStyle:n,item:i})=>("pre-paginated"!==i.renditionLayout&&(t("prose-reader-fonts"),n("prose-reader-fonts",p())),e)))})),(0,e.takeUntil)(u.$.destroy$)).subscribe(),Object.assign(Object.assign({},u),{setSettings:e=>{const{fontJustification:t=g.value.fontJustification,fontScale:n=g.value.fontScale,fontWeight:i=g.value.fontWeight,lineHeight:a=g.value.lineHeight}=e,s=o(e,["fontJustification","fontScale","fontWeight","lineHeight"]);r(e,["fontJustification","fontScale","fontWeight","lineHeight"])&&g.next({fontJustification:t,fontScale:n,fontWeight:i,lineHeight:a}),u.setSettings(s)},$:Object.assign(Object.assign({},u.$),{settings$:(0,e.combineLatest)([u.$.settings$,g]).pipe((0,e.map)((([e,t])=>Object.assign(Object.assign({},e),t))))})})}),(e=>t=>{const n=[{name:"viewportNavigator.onBeforeContainerCreated",fn:e=>(e.style.cssText=`\n ${e.style.cssText}\n -webkit-transform-style: preserve-3d;\n `,e)},{name:"item.onBeforeContainerCreated",fn:e=>(e.style.cssText=`\n ${e.style.cssText}\n -webkit-transform-style: preserve-3d;\n -webkit-backface-visibility: hidden;\n `,e)}];return e(Object.assign(Object.assign({},t),Re&&{hooks:[...t.hooks||[],...n]}))}),(n=>i=>{var{loadingElementCreate:o=De}=i,r=Ne(i,["loadingElementCreate"]);const a=n(r),s=a.$.itemsCreated$.pipe((0,t.switchMap)((t=>(t=>(0,e.of)(t.reduce(((e,{item:t,element:n})=>{const i=o({container:ke(n,a.context),item:t});return n.appendChild(i),Object.assign(Object.assign({},e),{[t.id]:i})}),{})))(t))),(0,t.shareReplay)(1),(0,t.takeUntil)(a.context.$.destroy$));return s.pipe((0,t.switchMap)((n=>(0,e.merge)((0,e.of)(n),(e=>a.$.itemsBeforeDestroy$.pipe((0,t.map)((()=>(Object.values(e).forEach((e=>e.remove())),{})))))(n)))),(0,t.switchMap)((n=>(0,e.merge)((n=>(0,e.combineLatest)([a.$.layout$,a.theme.$.theme$]).pipe((0,t.map)((([,e])=>({width:a.context.getVisibleAreaRect().width,theme:e}))),(0,t.distinctUntilChanged)(c),(0,t.tap)((({width:e,theme:t})=>{Object.values(n).forEach((n=>{n.style.setProperty("max-width",`${e}px`),n.style.setProperty("color","sepia"===t?"#939393":"rgb(202, 202, 202)")}))}))))(n),(e=>a.$.itemIsReady$.pipe((0,t.tap)((({item:t,isReady:n})=>{var i;null===(i=e[t.id])||void 0===i||i.style.setProperty("visibility",n?"hidden":"visible")}))))(n)))),(0,t.takeUntil)(a.$.destroy$)).subscribe(),Object.assign(Object.assign({},a),{loading:{$:{items$:s}}})}));function ze(e,t){if(!t){const t=Be(Ee);return Ue(t(e))}const n=O(Be,t)(Ee);return Ue(n(e))}})();var o=exports;for(var r in i)o[r]=i[r];i.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
1
+ (()=>{var e={36:(e,t)=>{(()=>{"use strict";var e={d:(t,n)=>{for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},n={};e.r(n),e.d(n,{detectContentType:()=>o,getUrlExtension:()=>i,parseContentType:()=>r});const i=e=>{var t,n;return(null===(n=null===(t=e.split(/[#?]/)[0])||void 0===t?void 0:t.split(".").pop())||void 0===n?void 0:n.trim())||""},o=e=>{switch(i(e)){case"png":return"image/png";case"jpg":return"image/jpg";case"jpeg":return"image/jpeg";case"txt":return"text/plain";case"webp":return"image/webp"}},r=e=>{if(e.length)return e.indexOf(";")?e.substring(0,e.indexOf(";")):e};var a=t;for(var s in n)a[s]=n[s];n.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})})()}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{Report:()=>h,compose:()=>$,composeEnhancer:()=>O,createReader:()=>ze,groupBy:()=>d,isShallowEqual:()=>c});const e=require("rxjs"),t=require("rxjs/operators");var o=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const r=(e,t)=>t.some((t=>t in e)),a=e=>(0,t.map)((t=>Object.entries(t).reduce(((t,[n,i])=>e.includes(n)?Object.assign(Object.assign({},t),{[n]:i}):t),{}))),s=Object.prototype.hasOwnProperty,l=(e,t)=>e===t&&(0!==e||0!==t||1/e==1/t),c=(e,t,n)=>{if(e===t)return!0;if("object"!=typeof e||null===e)return!1;if("object"!=typeof t||null===t)return!1;const i=Object.keys(e),o=Object.keys(t);if(i.length!==o.length)return!1;const r=n&&"function"==typeof n.customEqual?n.customEqual:l;for(let n=0;n<i.length;n++){const o=i[n]||"";if(!s.call(t,o)||!r(e[o],t[o]))return!1}return!0},d=(e,t)=>e.reduce(((e,n)=>{const i=t(n);return e[i]||(e[i]=[]),e[i].push(n),e}),{});var g=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const u="@prose-reader/core",p=e=>`[${e}]`,m=(e,t=0)=>{let n=0;const i=performance.now();return()=>{n++;const o=performance.now();h.logMetric({name:`${e} - tick ${n}`,duration:o-i},t)}},f=e=>({log:(...t)=>{window.__PROSE_READER_DEBUG&&(e?console.log(p(u),p(e),...t):console.log(p(u),...t))},warn:(...t)=>{window.__PROSE_READER_DEBUG&&(e?console.warn(p(u),p(e),...t):console.warn(p(u),...t))},error:(...e)=>{console.error(...e)},time:m,logMetric:(e,t=0)=>{window.__PROSE_READER_DEBUG&&(e.duration<=t||console.warn("[prose-reader] [metric] ",`${e.name} took ${e.duration}ms which is above the ${t}ms target for this function`))},measurePerformance:(e,t=10,n,{disable:i}={})=>i||!window.__PROSE_READER_DEBUG?n:(...i)=>{const o=performance.now(),r=n(...i);if(r&&r.then)return r.then((n=>{const i=performance.now();return h.logMetric({name:e,duration:i-o},t),n}));const a=performance.now();return h.logMetric({name:e,duration:a-o},t),r}}),h=Object.assign(Object.assign({},f()),{namespace:e=>f(e)}),v=({context:t})=>{const n=new e.BehaviorSubject({beginPageIndex:void 0,beginNumberOfPages:0,beginCfi:void 0,beginSpineItemIndex:void 0,endPageIndex:void 0,endNumberOfPages:0,endCfi:void 0,endSpineItemIndex:void 0}),i=e=>({numberOfPages:(e=>{const n=e.spineItemFrame.getWritingMode(),{width:i,height:o}=e.getElementDimensions();return"vertical-rl"===n?y(o,t.getPageSize().height):y(i,t.getPageSize().width)})(e.spineItem),pageIndex:e.pageIndex,cfi:e.cfi});return{destroy:()=>{n.complete()},updateBeginAndEnd:h.measurePerformance("pagination updateBeginAndEnd",1,((e,t)=>{const o=i(e),r=i(t),a={beginPageIndex:o.pageIndex,beginNumberOfPages:o.numberOfPages,beginCfi:o.cfi,beginSpineItemIndex:e.spineItemIndex,endPageIndex:r.pageIndex,endNumberOfPages:r.numberOfPages,endCfi:r.cfi,endSpineItemIndex:t.spineItemIndex};n.next(Object.assign(Object.assign({},n.value),a))}),{disable:!0}),getInfo:()=>n.value,$:{info$:n.asObservable().pipe((0,e.distinctUntilChanged)(c))}}},b=(e,t,n)=>{const i=n-e,o=n*(t*e)/n;return Math.max(0,Math.min(i,o))},y=(e,t)=>0===(t||0)||0===(e||0)?1:Math.floor(Math.max(1,e/t)),x=(e,t,n)=>{const i=y(n,t),o=[...Array(i)].map(((e,n)=>n*t));return e>=i*t?o[o.length-1]||0:o.find((n=>e<n+t))||0},w=h.namespace("paginationEnhancer"),S=(e,t)=>{const{path:n}=t;return P(n,e.nav.toc)},P=(e,t)=>t.reduce(((t,n)=>{const i=n.path.indexOf("#"),o=i>0?n.path.substr(0,i):n.path;if(e.endsWith(o))return{title:n.title,path:n.path};const r=P(e,n.contents);return r?{subChapter:r,title:n.title,path:n.path}:t}),void 0),I=[{name:"bright",backgroundColor:"white"},{name:"sepia",backgroundColor:"#eaddc7",foregroundColor:"black"},{name:"night",backgroundColor:"#191717",foregroundColor:"#f1ebeb"}];function $(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...n)=>t(e(...n))))}function O(...e){return $(...e)}const E=({newScale:e,oldScale:t,screenSize:n,scrollOffset:i})=>{const o=n*e/2-n+n/2,r=e/t,a=i-(n*t/2-n+n/2);return Math.max(o+a*r,0)},j=(e,t,n)=>{var i;t.computedPageTurnDirection=t.pageTurnDirection,t.computedPageTurnAnimation=t.pageTurnAnimation,t.computedPageTurnMode="controlled","scrolled-continuous"===(null==e?void 0:e.renditionFlow)?(t.computedPageTurnMode="scrollable",t.computedPageTurnDirection="vertical"):e&&"scrollable"===t.pageTurnMode&&("pre-paginated"!==e.renditionLayout||(null==(i=e)?void 0:i.spineItems.some((e=>"reflowable"===e.renditionLayout))))?(h.warn(`pageTurnMode ${t.pageTurnMode} incompatible with current book, switching back to default`),t.computedPageTurnAnimation="none",t.computedPageTurnMode="controlled"):"scrollable"===t.pageTurnMode&&(t.computedPageTurnMode="scrollable",t.computedPageTurnDirection="vertical"),n&&"slide"===t.computedPageTurnAnimation&&(h.warn(`pageTurnAnimation ${t.computedPageTurnAnimation} incompatible with current book, switching back to default`),t.computedPageTurnAnimation="none"),"scrollable"===t.computedPageTurnMode?(t.computedPageTurnAnimationDuration=0,t.computedPageTurnAnimation="none"):t.computedPageTurnAnimationDuration=void 0!==t.pageTurnAnimationDuration?t.pageTurnAnimationDuration:300},T=n=>{let i,o;const r=new e.BehaviorSubject(!1),a=new e.Subject,s={width:0,height:0,x:0,y:0},l=new e.Subject,d=(n=>{const i=Object.assign({forceSinglePageMode:!1,pageTurnAnimation:"none",computedPageTurnAnimation:"none",pageTurnDirection:"horizontal",computedPageTurnDirection:"horizontal",pageTurnAnimationDuration:void 0,computedPageTurnAnimationDuration:0,pageTurnMode:"controlled",computedPageTurnMode:"controlled",computedSnapAnimationDuration:300,navigationSnapThreshold:.3,numberOfAdjacentSpineItemToPreLoad:0},n);j(void 0,i,!1);const o=new e.BehaviorSubject(i);return{getSettings:()=>o.value,setSettings:(e,t)=>{if(0===Object.keys(e).length)return;const n=Object.assign(Object.assign({},o.value),e);j(t.manifest,n,t.hasVerticalWritingSubject),o.next(n)},recompute:e=>{const t=Object.assign({},o.value);j(e.manifest,t,e.hasVerticalWritingSubject),o.next(t)},destroy:()=>{o.complete()},$:{settings$:o.asObservable().pipe((0,t.distinctUntilChanged)(c))}}})(n),g=()=>{const{height:e,width:t}=s,n=t>e;return!d.getSettings().forceSinglePageMode&&("scrolled-continuous"!==(null==i?void 0:i.renditionFlow)&&(!n&&"portrait"===(null==i?void 0:i.renditionSpread)||n&&(void 0===(null==i?void 0:i.renditionSpread)||"auto"===(null==i?void 0:i.renditionSpread)||"landscape"===(null==i?void 0:i.renditionSpread)||"both"===(null==i?void 0:i.renditionSpread))))};r.pipe((0,t.skip)(1),(0,t.distinctUntilChanged)(),(0,t.tap)((()=>{d.recompute({manifest:i,hasVerticalWritingSubject:r.value})})),(0,t.takeUntil)(l)).subscribe();return{load:(e,t)=>{i=e,o=t,d.recompute({manifest:i,hasVerticalWritingSubject:r.value}),a.next(e)},isRTL:()=>"rtl"===(null==i?void 0:i.readingDirection),areAllItemsPrePaginated:()=>C(i),destroy:()=>{d.destroy(),a.complete(),l.next(),l.complete(),r.complete()},getLoadOptions:()=>o,getCalculatedInnerMargin:()=>0,getVisibleAreaRect:()=>s,shouldDisplaySpread:g,setHasVerticalWriting:()=>r.next(!0),setVisibleAreaRect:(e,t,n,i)=>{s.width=n,s.height=i-0-0,s.x=e,s.y=t},getManifest:()=>i,getReadingDirection:()=>null==i?void 0:i.readingDirection,getPageSize:()=>({width:g()?s.width/2:s.width,height:s.height}),getSettings:d.getSettings,setSettings:e=>d.setSettings(e,{hasVerticalWritingSubject:r.value,manifest:i}),$:{hasVerticalWriting$:r.asObservable().pipe((0,t.distinctUntilChanged)()),destroy$:l.asObservable(),settings$:d.$.settings$,load$:a.asObservable()}}},C=e=>!(null==e?void 0:e.spineItems.some((e=>"reflowable"===e.renditionLayout))),M="__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT",F=[".xhtml",".html",".htm"],L=e=>t=>{if(e&&e.contentDocument&&e.contentDocument.head){const n=e.contentDocument.getElementById(t);n&&n.remove()}},R=e=>(t,n,i=!1)=>{if(e&&e.contentDocument&&e.contentDocument.head){const o=document.createElement("style");o.id=t,o.innerHTML=n,i?e.contentDocument.head.prepend(o):e.contentDocument.head.appendChild(o)}},N=(e,t)=>{const n=new RegExp(t+"\\s*=\\s*([0-9.]+)","i"),i=e.match(n)||[],o=i[1]||"0";return i&&parseFloat(o)||0},k=h.measurePerformance("SpineItemFrame createFrame",1/0,(()=>{const t=document.createElement("iframe");return t.frameBorder="no",t.tabIndex=0,t.setAttribute("sandbox","allow-same-origin allow-scripts"),t.scrolling="no",t.style.cssText="\n visibility: hidden;\n overflow: hidden;\n background-color: transparent;\n border: 0px none transparent;\n padding: 0px;\n transition: opacity 300ms;\n opacity: 0;\n ",(0,e.of)(t)})),A=e=>({frame:e,removeStyle:L(e),addStyle:R(e)});var D=n(36),U=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const B=(e,t)=>U(void 0,void 0,void 0,(function*(){if("string"==typeof e)return e;const n=(0,D.parseContentType)(e.headers.get("Content-Type")||"")||(0,D.detectContentType)(t.href);if(["image/jpg","image/jpeg","image/png","image/webp"].some((e=>e===n))){const n=yield(e=>{const t=new FileReader;return new Promise((n=>{t.addEventListener("load",(function(){n(t.result)}),!1),t.readAsDataURL(e)}))})(yield e.blob());return`\n <html>\n <head>\n ${"reflowable"!==t.renditionLayout?'<meta name="viewport" content="width=device-width, minimum-scale=0.1">':""}\n </head>\n <body style="margin: 0px;" tab-index="-1;">\n <img\n src="${n}"\n style="max-width: 100%;height:100%;object-fit:contain;"\n >\n </body>\n </html>\n `}if(["text/plain"].some((e=>e===n))){return`\n <!DOCTYPE html>\n <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">\n <head>\n <style>\n pre {\n white-space: pre;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n </style>\n </head>\n <body>\n <pre>${yield e.text()}</pre>\n </body>\n </html>\n `}return yield e.text()})),z=e=>"item.onLoad"===e.name,V=({item:n,parent:i,fetchResource:o,hooks$:r,context:a,viewportState$:s})=>{const l=new e.Subject,c=new e.Subject,d=new e.Subject,g=new e.BehaviorSubject(void 0),u=new e.BehaviorSubject(!1),p=new e.BehaviorSubject(!1);let m,f=[];const v=e=>(e.pipe((0,t.takeUntil)(a.$.destroy$)).subscribe(),e),b=s.pipe((0,t.filter)((e=>"free"===e)),(0,t.take)(1)),y=d.asObservable().pipe((0,t.withLatestFrom)(g),(0,t.filter)((([e,t])=>!!t)),(0,t.map)((([,e])=>{f.forEach((e=>{e&&"unsubscribe"in e?e.unsubscribe():e&&e()})),f=[],null==e||e.remove(),g.next(void 0)})),(0,t.share)(),(0,t.takeUntil)(l)),x=c.asObservable().pipe((0,t.withLatestFrom)(u),(0,t.filter)((([e,t])=>!t)),(0,t.exhaustMap)((()=>k().pipe((0,t.mergeMap)((e=>b.pipe((0,t.mapTo)(e)))),(0,t.mergeMap)((r=>{if(i.appendChild(r),g.next(r),!o&&n.href.startsWith(window.location.origin)&&(n.mediaType&&["application/xhtml+xml","application/xml","text/html","text/xml"].includes(n.mediaType)||!n.mediaType&&F.some((e=>n.href.endsWith(e)))))return null==r||r.setAttribute("src",n.href),(0,e.of)(r);{const i=o||(()=>fetch(n.href));return(0,e.from)(i(n)).pipe((0,t.mergeMap)((e=>(e=>B(e,n))(e))),(0,t.tap)((e=>{null==r||r.setAttribute("srcdoc",e)})),(0,t.map)((()=>r)))}})),(0,t.mergeMap)((i=>i?(i.setAttribute("sandbox","allow-same-origin allow-scripts"),(0,e.fromEvent)(i,"load").pipe((0,t.take)(1),(0,t.withLatestFrom)(r),(0,t.mergeMap)((([t,o])=>{var r,s;const l=null===(r=i.contentDocument)||void 0===r?void 0:r.body;if(!l)return h.error(`Something went wrong on iframe load ${n.id}`),e.EMPTY;i.setAttribute("role","main"),(null==i?void 0:i.contentDocument)&&l&&(m=null===(s=null==i?void 0:i.contentWindow)||void 0===s?void 0:s.getComputedStyle(l)),"scrollable"!==a.getSettings().computedPageTurnMode&&i.setAttribute("tab-index","0");const c=A(i);return f=o.filter(z).map((e=>{const t=e.fn(Object.assign(Object.assign({},c),{item:n}));return t&&"subscribe"in t?t.subscribe():t})),(0,e.of)(i)})))):e.EMPTY)),(0,t.takeUntil)(d)))),(0,t.share)(),v,(0,t.takeUntil)(l)),w=x.pipe((0,t.switchMap)((n=>{var i;return(0,e.from)((null===(i=null==n?void 0:n.contentDocument)||void 0===i?void 0:i.fonts.ready)||(0,e.of)(void 0)).pipe((0,t.takeUntil)(d))})),(0,t.share)(),v,(0,t.takeUntil)(l));return(0,e.merge)(x.pipe((0,t.mapTo)(!0)),d.pipe((0,t.mapTo)(!1))).pipe((0,t.distinctUntilChanged)(),(0,t.takeUntil)(l)).subscribe(u),(0,e.merge)(w.pipe((0,t.mapTo)(!0)),d.pipe((0,t.mapTo)(!1))).pipe((0,t.distinctUntilChanged)(),(0,t.takeUntil)(l)).subscribe(p),y.subscribe(),{load:()=>c.next(),unload:()=>d.next(),destroy:()=>{c.complete(),d.complete(),g.complete(),l.next(),l.complete(),p.complete(),u.complete()},getComputedStyleAfterLoad:()=>m,$:{load$:c.asObservable(),unload$:d.asObservable(),loaded$:x,isLoaded$:u.asObservable(),isReady$:p.asObservable().pipe((0,t.distinctUntilChanged)()),ready$:w,unloaded$:y,frameElement$:g}}};const W=h.measurePerformance("getFirstVisibleNodeForViewport",1,((e,t)=>{const n=H("body"in e?e.body:e,t),i="createRange"in e?e:e.ownerDocument;if(n){let e,o=0;const r=i.createRange();return Array.from(n.childNodes).some((n=>{r.selectNodeContents(n);const a=function(e,t){return Array.from(e).find((e=>{const n=_(e,t);return"before"!==n&&"after"!==n}))}(r.getClientRects(),t);if(a){e=r.cloneRange();const t=(s=i,l=Math.ceil(a.left),c=Math.ceil(a.top),"caretPositionFromPoint"in s?s.caretPositionFromPoint(l,c):void 0!==s.caretRangeFromPoint?s.caretRangeFromPoint(l,c):void 0);return t&&"startContainer"in t&&t.startContainer===e.startContainer&&(o=t.startOffset),t&&"offsetNode"in t&&t.offsetNode===e.startContainer&&(o=t.offset),!0}var s,l,c;return!1})),e?{node:e.startContainer,offset:o}:{node:n,offset:0}}})),H=(e,t)=>{let n;const i=_(e.getBoundingClientRect(),t);return"before"!==i&&"after"!==i&&(n=e),Array.from(e.children).some((e=>{const i=H(e,t);return!!i&&(n=i,!0)})),n};function _(e,{left:t,right:n}){return e.left<=t&&e.right<=t?"before":e.left<=t&&e.right>t&&e.right<=n?"partially-before":e.left<=n&&e.right>n?"partially-after":e.left>n?"after":"within"}const Y=e=>{var t,n,i,o,r;if((null==e?void 0:e.target)&&(null===(n=null===(t=null==e?void 0:e.target)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.defaultView)){const t=null===(o=null===(i=null==e?void 0:e.target)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(t.PointerEvent)return e instanceof t.PointerEvent}if((null==e?void 0:e.view)&&(null===(r=null==e?void 0:e.view)||void 0===r?void 0:r.window)){const t=null==e?void 0:e.view;if(t.PointerEvent)return e instanceof t.PointerEvent}return!1},X=e=>{var t,n,i,o,r;if(Y(e))return!1;if((null==e?void 0:e.target)&&(null===(n=null===(t=null==e?void 0:e.target)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.defaultView)){const t=null===(o=null===(i=null==e?void 0:e.target)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(t.MouseEvent)return e instanceof t.MouseEvent}if((null==e?void 0:e.view)&&(null===(r=null==e?void 0:e.view)||void 0===r?void 0:r.window)){const t=null==e?void 0:e.view;if(t.MouseEvent)return e instanceof t.MouseEvent}return!1};var J=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const q=[...["pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],...["mousedown","mouseup","mouseenter","mouseleave","mousemove","mouseout","mouseover"]],G=({item:n,context:i,parentElement:o,iframeEventBridgeElement:r,hooks$:a,viewportState$:s})=>{var l;const c=new e.Subject,d=Z(o,n,a),g=K(o,n),u=(()=>{const t={x:void 0,y:void 0},n=new e.Subject;let i=!1;return{track:e=>{var o,r,a;t.x=void 0,t.y=void 0,null===(o=e.contentDocument)||void 0===o||o.addEventListener("mousedown",(e=>{i=!0,t.x=e.x,t.y=e.y,n.next({event:"fingermove",data:{x:e.x,y:e.y}})})),null===(r=e.contentDocument)||void 0===r||r.addEventListener("mouseup",(()=>{i=!1,t.x=void 0,t.y=void 0,n.next({event:"fingerout",data:void 0})})),null===(a=e.contentDocument)||void 0===a||a.addEventListener("mousemove",(e=>{i&&n.next({event:"fingermove",data:{x:e.x,y:e.y}})}))},getFingerPositionInIframe:()=>void 0===t.x||void 0===t.y?void 0:t,destroy:()=>{},$:n.asObservable()}})(),p=(()=>{let t,n=!1;const i=new e.Subject,o=["mouseup","pointerup"];return{track:e=>{var r,a;t=e,o.forEach((t=>{var i;null===(i=e.contentWindow)||void 0===i||i.addEventListener(t,(()=>{n=!1}))})),null===(r=e.contentDocument)||void 0===r||r.addEventListener("selectionchange",(()=>{var e;i.next({event:"selectionchange",data:(null===(e=null==t?void 0:t.contentWindow)||void 0===e?void 0:e.getSelection())||null})})),null===(a=e.contentWindow)||void 0===a||a.addEventListener("selectstart",(()=>{n=!0}))},destroy:()=>{},isSelecting:()=>n,getSelection:()=>{var e;const n=null===(e=null==t?void 0:t.contentWindow)||void 0===e?void 0:e.getSelection();if((null==n?void 0:n.anchorNode)&&"None"!==n.type&&"Caret"!==n.type)return n},$:i.asObservable()}})(),m=Q(r,u,p),f=(({item:n,parent:i,fetchResource:o,context:r,hooks$:a,viewportState$:s})=>{const l=new e.Subject,{$:{unload$:c,loaded$:d,isLoaded$:g,isReady$:u,unloaded$:p,frameElement$:m,ready$:f},load:h,unload:v,destroy:b,getComputedStyleAfterLoad:y}=V({context:r,hooks$:a,item:n,parent:i,fetchResource:o,viewportState$:s}),x=new e.BehaviorSubject(!1),w=new e.BehaviorSubject(!1);g.subscribe(x),u.subscribe(w);const S=()=>{var e;return null===(e=y())||void 0===e?void 0:e.writingMode},P=(0,e.merge)(p.pipe((0,t.map)((()=>({isFirstLayout:!1})))),f.pipe((0,t.map)((()=>({isFirstLayout:!0})))));return{getIsLoaded:()=>x.value,getIsReady:()=>w.value,getViewportDimensions:()=>{const e=m.getValue();if(e&&(null==e?void 0:e.contentDocument)){const t=e.contentDocument.querySelector("meta[name='viewport']");if(t){const e=t.getAttribute("content");if(e){const t=N(e,"width"),n=N(e,"height");return t>0&&n>0?{width:t,height:n}:void 0}}}},getFrameElement:()=>m.getValue(),getHtmlFromResource:e=>B(e,n),load:h,unload:v,staticLayout:e=>{const t=m.getValue();t&&(t.style.width=`${e.width}px`,t.style.height=`${e.height}px`,"scrollable"!==r.getSettings().computedPageTurnMode&&t.setAttribute("tab-index","0"))},getManipulableFrame:()=>{const e=m.getValue();if(x.value&&e)return A(e)},getReadingDirection:()=>{var e;if("vertical-rl"===S())return"rtl";const t=null===(e=y())||void 0===e?void 0:e.direction;return["ltr","rtl"].includes(t||"")?t:void 0},isUsingVerticalWriting:()=>{var e;return!!(null===(e=S())||void 0===e?void 0:e.startsWith("vertical"))},getWritingMode:S,destroy:()=>{v(),b(),l.next(),l.complete()},$:{unload$:c,unloaded$:p,loaded$:d,ready$:f,isReady$:w.asObservable(),contentLayoutChange$:P}}})({parent:d,item:n,context:i,fetchResource:null===(l=i.getLoadOptions())||void 0===l?void 0:l.fetchResource,hooks$:a.asObservable().pipe((0,t.map)((e=>[...e,...m]))),viewportState$:s});let h;d.appendChild(g),o.appendChild(d);const v=()=>{var e;return!!(null===(e=n.mediaType)||void 0===e?void 0:e.startsWith("image/"))},b=()=>{var e;const{width:t,height:n}=i.getPageSize(),o=f.getViewportDimensions(),r=null===(e=f.getManipulableFrame())||void 0===e?void 0:e.frame;if(d&&(null==r?void 0:r.contentDocument)&&(null==r?void 0:r.contentWindow)&&o){const e=t/o.width;return{computedScale:Math.min(e,n/o.height),computedWidthScale:e,viewportDimensions:o}}return Object.assign({computedScale:1,computedWidthScale:1},o)},y=()=>{h=void 0},x=f.$.contentLayoutChange$.pipe((0,t.withLatestFrom)(f.$.isReady$),(0,t.map)((([e,t])=>({isFirstLayout:e.isFirstLayout,isReady:t}))));return{load:()=>{y()},layout:({height:e,width:t})=>{d.style.width=`${t}px`,d.style.height=`${e}px`,y()},adjustPositionOfElement:({right:e,left:t,top:n})=>{void 0!==e?d.style.right=`${e}px`:d.style.removeProperty("right"),void 0!==t?d.style.left=`${t}px`:d.style.removeProperty("left"),void 0!==n?d.style.top=`${n}px`:d.style.removeProperty("top")},getElementDimensions:()=>{if(h)return h;const e=d.getBoundingClientRect(),t=Object.assign(Object.assign({},e),{width:Math.round(10*e.width)/10,height:Math.round(10*e.height)/10});return h=t,h},getHtmlFromResource:f.getHtmlFromResource,getResource:()=>J(void 0,void 0,void 0,(function*(){const e=i.getLoadOptions(),t=a.getValue().reduce(((e,t)=>"item.onGetResource"===t.name?t.fn(e):e),(t=>(null==e?void 0:e.fetchResource)?e.fetchResource(n):fetch(n.href)));return yield t(n)})),translateFramePositionIntoPage:e=>{var t;const{left:n=0,top:i=0}=(null===(t=f.getFrameElement())||void 0===t?void 0:t.getBoundingClientRect())||{},{computedScale:o=1}=b()||{};return{clientX:e.clientX*o+n,clientY:e.clientY*o+i}},setLayoutDirty:y,injectStyle:e=>{var t,n;null===(t=f.getManipulableFrame())||void 0===t||t.removeStyle("prose-reader-css"),null===(n=f.getManipulableFrame())||void 0===n||n.addStyle("prose-reader-css",e)},loadContent:()=>f.load(),unloadContent:()=>f.unload(),spineItemFrame:f,element:d,isReflowable:!1,getBoundingRectOfElementFromSelector:e=>{var t,n,i,o,r;const a=null===(t=f.getManipulableFrame())||void 0===t?void 0:t.frame;if(a&&e)return e.startsWith("#")?null===(i=null===(n=a.contentDocument)||void 0===n?void 0:n.getElementById(e.replace("#","")))||void 0===i?void 0:i.getBoundingClientRect():null===(r=null===(o=a.contentDocument)||void 0===o?void 0:o.querySelector(e))||void 0===r?void 0:r.getBoundingClientRect()},getViewPortInformation:b,isImageType:v,isReady:f.getIsReady,destroy:()=>{c.next(),d.remove(),null==f||f.destroy(),u.destroy(),p.destroy(),c.complete()},isUsingVerticalWriting:()=>{var e;return null===(e=f.getWritingMode())||void 0===e?void 0:e.startsWith("vertical")},getReadingDirection:()=>f.getReadingDirection()||i.getReadingDirection(),manipulateSpineItem:e=>{const t=f.getManipulableFrame();return e(t?Object.assign(Object.assign({},t),{container:d,item:n,overlayElement:g}):{container:d,item:n,frame:void 0,removeStyle:()=>{},addStyle:()=>{},overlayElement:g})},executeOnLayoutBeforeMeasurmentHook:e=>a.getValue().forEach((t=>{"item.onLayoutBeforeMeasurment"===t.name&&t.fn(Object.assign({frame:f,container:d,item:n,isImageType:v},e))})),selectionTracker:p,fingerTracker:u,$:{contentLayout$:x,loaded$:f.$.loaded$,isReady$:f.$.isReady$}}},Z=(e,t,n)=>{const i=e.ownerDocument.createElement("div");return i.classList.add("spineItem"),i.classList.add(`spineItem-${t.renditionLayout}`),i.style.cssText="\n position: absolute;\n overflow: hidden;\n ",n.getValue().reduce(((e,t)=>"item.onBeforeContainerCreated"===t.name?t.fn(e):e),i)},K=(e,t)=>{const n=e.ownerDocument.createElement("div");return n.classList.add("spineItemOverlay"),n.classList.add(`spineItemOverlay-${t.renditionLayout}`),n.style.cssText="\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background-color: transparent;\n ",n},Q=(e,t,n)=>[{name:"item.onLoad",fn:({frame:i})=>{const o=q.map((t=>{var n;const o=t=>{let n=t;Y(t)&&(n=new PointerEvent(t.type,t)),X(t)&&(n=new MouseEvent(t.type,t)),n!==t&&(((e,t)=>{Object.defineProperty(e,M,{value:t,enumerable:!0})})(n,t),e.dispatchEvent(n))};return null===(n=i.contentDocument)||void 0===n||n.addEventListener(t,o),()=>{var e;null===(e=i.contentDocument)||void 0===e||e.removeEventListener(t,o)}}));return n.track(i),t.track(i),()=>{o.forEach((e=>e()))}}}],ee=({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r})=>{const a=G({context:t,item:e,parentElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}),s=a.spineItemFrame,l=({blankPagePosition:e,minimumWidth:n,spreadPosition:i})=>{var o;const{width:r,height:l}=t.getPageSize(),{viewportDimensions:c,computedScale:d}=a.getViewPortInformation(),g=t.getVisibleAreaRect(),u=null===(o=s.getManipulableFrame())||void 0===o?void 0:o.frame;if((null==s?void 0:s.getIsLoaded())&&(null==u?void 0:u.contentDocument)&&(null==u?void 0:u.contentWindow)){const o=r,l=g.height+t.getCalculatedInnerMargin(),p=te(Object.assign(Object.assign({},(()=>{const e=t.getPageSize(),n=e.width;return{columnHeight:e.height,columnWidth:n}})()),{enableTouch:"scrollable"!==t.getSettings().computedPageTurnMode,spreadPosition:i}),c);if(null==u||u.style.setProperty("visibility","visible"),null==u||u.style.setProperty("opacity","1"),c){a.injectStyle(p),s.staticLayout({width:c.width,height:c.height}),null==u||u.style.setProperty("--scale",`${d}`),null==u||u.style.setProperty("position","absolute"),null==u||u.style.setProperty("top","50%"),"left"===i?(null==u||u.style.setProperty("right","0"),null==u||u.style.removeProperty("left")):"before"===e&&t.isRTL()?(null==u||u.style.setProperty("right","50%"),null==u||u.style.removeProperty("left")):"right"===i?(null==u||u.style.setProperty("left","0"),null==u||u.style.removeProperty("right")):(null==u||u.style.setProperty("left","before"===e?t.isRTL()?"25%":"75%":"after"===e?t.isRTL()?"75%":"25%":"50%"),null==u||u.style.removeProperty("right"));const o="none"!==i?"0":"-50%",r="right"===i&&"before"!==e?"left":"left"===i||"before"===e&&t.isRTL()?"right":"center";null==u||u.style.setProperty("transform",`translate(${o}, -50%) scale(${d})`),null==u||u.style.setProperty("transform-origin",`${r} center`),a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n})}else a.injectStyle(p),s.staticLayout({width:o,height:l}),"before"===e?t.isRTL()?null==u||u.style.setProperty("margin-right",`${r}px`):null==u||u.style.setProperty("margin-left",`${r}px`):(null==u||u.style.removeProperty("margin-left"),null==u||u.style.removeProperty("margin-right"));return a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),a.layout({width:n,height:l}),{width:n,height:l}}return a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),a.layout({width:n,height:l}),{width:n,height:l}};return Object.assign(Object.assign({},a),{layout:e=>l(e)})},te=({columnWidth:e,enableTouch:t,spreadPosition:n},i)=>`\n body {\n \n }\n body {\n margin: 0;\n ${i?"":`\n display: flex;\n justify-content: ${"left"===n?"flex-end":"right"===n?"flex-start":"center"};\n `}\n }\n \n html, body {\n height: 100%;\n width: 100%;\n }\n \n html, body {\n -max-width: ${e}px !important;\n }\n \n html, body {\n ${t?"\n touch-action: none\n ":""}\n }\n \n img {\n user-select: none;\n -webkit-user-drag: none;\n -khtml-user-drag: none;\n -moz-user-drag: none;\n -o-user-drag: none;\n user-drag: none;\n \n display: flex;\n \n ${i?"":"\n -width: 100%;\n max-width: 100%;\n height:100%;\n object-fit:contain;\n "}\n }\n `,ne=({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r})=>{const a=G({context:t,item:e,parentElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}),s=a.spineItemFrame;let l;return Object.assign(Object.assign({},a),{isReflowable:!0,layout:({blankPagePosition:e,minimumWidth:n})=>{var i,o,r,c,d,g,u,p;const{width:m,height:f}=t.getPageSize();null===(o=null===(i=s.getManipulableFrame())||void 0===i?void 0:i.frame)||void 0===o||o.style.setProperty("width",`${m}px`),null===(c=null===(r=s.getManipulableFrame())||void 0===r?void 0:r.frame)||void 0===c||c.style.setProperty("height",`${f}px`);const h=s.getViewportDimensions(),v=t.getVisibleAreaRect(),b=null===(d=s.getManipulableFrame())||void 0===d?void 0:d.frame,y="pre-paginated"===(null===(g=t.getManifest())||void 0===g?void 0:g.renditionLayout);if((null==s?void 0:s.getIsLoaded())&&(null==b?void 0:b.contentDocument)&&(null==b?void 0:b.contentWindow)){let i=m,o=v.height+t.getCalculatedInnerMargin();if(null==b||b.style.setProperty("visibility","visible"),null==b||b.style.setProperty("opacity","1"),h){const i=Math.min(m/h.width,f/h.height);a.injectStyle(ie()),a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),s.staticLayout({width:h.width,height:h.height}),null==b||b.style.setProperty("--scale",`${i}`),null==b||b.style.setProperty("position","absolute"),null==b||b.style.setProperty("top","50%"),null==b||b.style.setProperty("left","before"===e?t.isRTL()?"25%":"75%":"after"===e?t.isRTL()?"75%":"25%":"50%"),null==b||b.style.setProperty("transform",`translate(-50%, -50%) scale(${i})`),null==b||b.style.setProperty("transform-origin","center center")}else{const e=a.isImageType()?oe({isScrollable:"scrolled-continuous"===(null===(u=t.getManifest())||void 0===u?void 0:u.renditionFlow),enableTouch:"scrollable"!==t.getSettings().computedPageTurnMode}):re(((e,n)=>{const i=t.getPageSize();let o=i.width-0;const r=i.height-0;let a=i.width-0;return e&&(a=n-0,o=r),{columnHeight:r,columnWidth:o,width:a}})(s.isUsingVerticalWriting(),n));if(a.injectStyle(e),a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n}),s.isUsingVerticalWriting()){o=Math.ceil(b.contentDocument.documentElement.scrollHeight/f)*f,s.staticLayout({width:n,height:o})}else if("scrolled-continuous"===(null===(p=t.getManifest())||void 0===p?void 0:p.renditionFlow))o=b.contentDocument.documentElement.scrollHeight,l=o,s.staticLayout({width:n,height:o});else{const e=Math.ceil(b.contentDocument.documentElement.scrollWidth/m);i=y?m:e*m,s.staticLayout({width:i,height:o})}}return i%n==0?null==b||b.style.setProperty("margin-left","0px"):(i+=m,t.isRTL()&&!a.isUsingVerticalWriting()&&(null==b||b.style.setProperty("margin-left",`${m}px`))),a.layout({width:i,height:o}),{width:i,height:o}}a.executeOnLayoutBeforeMeasurmentHook({minimumWidth:n});const x=l||f;return a.layout({width:n,height:x}),{width:n,height:x}}})},ie=()=>"\n html {\n width: 100%;\n height: 100%;\n }\n body {\n width: 100%;\n height: 100%;\n margin: 0;\n }\n \n html, body {\n touch-action: none;\n }\n img {\n display: flex;\n max-width: 100%;\n max-height: 100%;\n margin: 0 auto;\n }\n ",oe=({isScrollable:e,enableTouch:t})=>`\n \n html, body {\n width: 100%;\n margin: 0;\n padding: 0;\n ${t?"\n touch-action: none\n ":""}\n }\n ${e?"\n img {\n height: auto !important;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n \n width: 100%;\n \n display: block;\n }\n ":""}\n `,re=({width:e,columnHeight:t,columnWidth:n})=>`\n parsererror {\n display: none !important;\n }\n \n html, body {\n margin: 0;\n padding: 0 !important;\n -max-width: ${n}px !important;\n }\n \n body {\n padding: 0 !important;\n width: ${e}px !important;\n height: ${t}px !important;\n overflow-y: hidden;\n column-gap: 0px !important;\n column-width: ${n}px !important;\n column-fill: auto !important;\n word-wrap: break-word;\n box-sizing: border-box;\n }\n body {\n margin: 0;\n }\n body:focus-visible {\n \n outline: none;\n }\n \n html, body {\n touch-action: none;\n }\n \n * {\n -max-width: ${n}px !important;\n }\n \n img, video, audio, object, svg {\n max-width: 100%;\n max-width: ${n}px !important;\n max-height: ${t}px !important;\n -pointer-events: none;\n -webkit-column-break-inside: avoid;\n page-break-inside: avoid;\n break-inside: avoid;\n }\n figure {\n d-max-width: ${n}px !important;\n }\n img {\n object-fit: contain;\n break-inside: avoid;\n box-sizing: border-box;\n d-max-width: ${n}px !important;\n }\n \n table {\n max-width: ${n}px !important;\n table-layout: fixed;\n }\n td {\n max-width: ${n}px;\n }\n `,ae=Node.ELEMENT_NODE,se=Node.TEXT_NODE,le=Node.CDATA_SECTION_NODE;function ce(e,t,n){let i,o,r,a=0,s=0,l=!0;for(o=0;o<e.length;o++)if(r=e[o],r.nodeType===ae){if(i||l?(a+=2,l=!1):a++,t===r)return"img"===r.tagName.toLowerCase()?{count:a,offset:n}:{count:a};s=0,i=!0}else{if((null==r?void 0:r.nodeType)!==se&&(null==r?void 0:r.nodeType)!==le)continue;if((i||l)&&(a++,l=!1),t===r)return{count:a,offset:n+s};s+=r.textContent.length,i=!1}throw new Error("The specified node was not found in the array of siblings")}function de(e,t){const n="number"==typeof e,i="number"==typeof t;return n||i?!n&&i?-1:n&&!i?1:(e||0)-(t||0):0}function ge(e,t){if(!e&&!t)return 0;if(!e&&t)return-1;if(e&&!t)return 1;const n=(e.y||0)-(t.y||0);return n||(e.x||0)-(t.x||0)}class ue{constructor(e,t){this.isRange=!1,this.opts=Object.assign({flattenRange:!1,stricter:!0},t||{}),this.cfi=e,this.parts=[];const n=(e=e.trim()).match(/^epubcfi\((.*)\)$/);if(!n)throw new Error("Not a valid CFI");if(n.length<2)return;let i,o,r;e=n[1]||"";let a=[],s=0;for(;e.length;){if(({parsed:i,offset:o,newDoc:r}=this.parse(e)),!i||null===o)throw new Error("Parsing failed");if(s&&r)throw new Error("CFI is a range that spans multiple documents. This is not allowed");a.push(i),(r||e.length-o<=0)&&(2===s?this.to=a:this.parts.push(a),a=[]),","===(e=e.slice(o))[0]&&(0===s?(a.length&&this.parts.push(a),a=[]):1===s&&(a.length&&(this.from=a),a=[]),e=e.slice(1),s++)}this.from&&this.from.length&&(!this.opts.flattenRange&&this.to&&this.to.length?this.isRange=!0:(this.parts=this.parts.concat(this.from),delete this.from,delete this.to)),this.opts.stricter&&this.removeIllegalOpts()}removeIllegalOpts(e){if(!e)if(this.from){if(this.removeIllegalOpts(this.from),!this.to)return;e=this.to}else e=this.parts;let t,n,i,o;for(t=0;t<e.length;t++)for(i=e[t],n=0;n<i.length-1;n++)o=i[n],delete o.temporal,delete o.spatial,delete o.offset,delete o.textLocationAssertion}static generatePart(e,t,n){let i,o="";for(;e.parentNode;)i=ce(e.parentNode.childNodes,e,t),!o&&i.offset&&(o=":"+i.offset),o="/"+i.count+(e.id?"["+(e.id.replace(/[\[\]\^,();]/g,"^$&")+"]"):"")+o,e=e.parentNode;return o}static generate(e,t,n){let i;if(Array.isArray(e)){const t=[];for(const i of e)t.push(this.generatePart(i.node,i.offset,n));i=t.join("!")}else i=this.generatePart(e,t,n);return n&&(i+=n),"epubcfi("+i+")"}static toParsed(e){return e.isRange?e.getFrom():e.get()}static comparePath(e,t){const n=Math.max(e.length,t.length);let i,o,r,a;for(i=0;i<n;i++){if(o=e[i],r=t[i],!o)return-1;if(!r)return 1;if(a=this.compareParts(o,r),a)return a}return 0}static sort(e){e.sort(((e,t)=>this.compare(e,t)))}static compare(e,t){let n=e.get(),i=t.get();if(e.isRange||t.isRange){if(e.isRange&&t.isRange){const e=this.comparePath(n.from,i.from);return e||this.comparePath(n.to,i.to)}return e.isRange&&(n=n.from),t.isRange&&(i=i.from),this.comparePath(n,i)}return this.comparePath(n,i)}static compareParts(e,t){const n=Math.max(e.length,t.length);let i,o,r,a;for(i=0;i<n;i++){if(o=e[i],r=t[i],!o)return-1;if(!r)return 1;if(a=o.nodeIndex-r.nodeIndex,a)return a;if(0===o.nodeIndex)return 0;if(!(i<n-1)){if(o.nodeIndex%2==0){if(a=de(o.temporal,r.temporal),a)return a;if(a=ge(o.spatial,r.spatial),a)return a}if(a=(o.offset||0)-(r.offset||0),a)return a}}return 0}decodeEntities(e,t){try{const n=e.createElement("textarea");return n.innerHTML=t,n.value||""}catch(e){return t}}trueLength(e,t){return this.decodeEntities(e,t).length}getFrom(){if(!this.isRange)throw new Error("Trying to get beginning of non-range CFI");if(!this.from)return this.deepClone(this.parts);const e=this.deepClone(this.parts);return e[e.length-1]=e[e.length-1].concat(this.from),e}getTo(){if(!this.isRange)throw new Error("Trying to get end of non-range CFI");const e=this.deepClone(this.parts);return e[e.length-1]=e[e.length-1].concat(this.to),e}get(){return this.isRange?{from:this.getFrom(),to:this.getTo(),isRange:!0}:this.deepClone(this.parts)}parseSideBias(e,t){if(!t)return;const n=t.trim().match(/^(.*);s=([ba])$/);!n||n.length<3?"object"==typeof e.textLocationAssertion?e.textLocationAssertion.post=t:e.textLocationAssertion=t:(n[1]&&("object"==typeof e.textLocationAssertion?e.textLocationAssertion.post=n[1]:e.textLocationAssertion=n[1]),"a"===n[2]?e.sideBias="after":e.sideBias="before")}parseSpatialRange(e){if(!e)return;const t=e.trim().match(/^([\d\.]+):([\d\.]+)$/);if(!t||t.length<3)return;const n={x:parseInt(t[1]),y:parseInt(t[2])};return"number"==typeof n.x&&"number"==typeof n.y?n:void 0}parse(e){const t={},n=/[\d]/;let i,o,r,a,s,l,c=!1,d=!1;for(l=0;l<=e.length;l++)if(a=l<e.length?e[l]:"","^"!==a||s){if("/"===o){if(a.match(n)){i?i+=a:i=a,s=!1;continue}i&&(t.nodeIndex=parseInt(i),i=null),r=o,o=null}if(":"===o){if(a.match(n)){i?i+=a:i=a,s=!1;continue}i&&(t.offset=parseInt(i),i=null),r=o,o=null}if("@"===o){let e=!1;if(a.match(n)||"."===a||":"===a?":"===a&&(c?e=!0:c=!0):e=!0,!e){i?i+=a:i=a,s=!1;continue}r=o,o=null,i&&c&&(t.spatial=this.parseSpatialRange(i)),i=null}if("~"===o){if(a.match(n)||"."===a){i?i+=a:i=a,s=!1;continue}i&&(t.temporal=parseFloat(i)),r=o,o=null,i=null}if(!o){if("!"===a){l++,o=a;break}if(","===a)break;if("/"===a){if(d)break;d=!0,r=o,o=a,s=!1;continue}if(":"===a||"~"===a||"@"===a){if(this.opts.stricter){if(":"===a&&(void 0!==t.temporal||void 0!==t.spatial))break;if(("~"===a||"@"===a)&&void 0!==t.offset)break}r=o,o=a,s=!1,c=!1;continue}if("["===a&&!s&&":"===r){r=o,o="[",s=!1;continue}if("["===a&&!s&&"/"===r){r=o,o="nodeID",s=!1;continue}}"["!==o?("nodeID"!==o||("]"!==a||s?i?i+=a:i=a:(r=o,o=null,t.nodeID=i,i=null)),s=!1):("]"!==a||s?","!==a||s?i?i+=a:i=a:(t.textLocationAssertion={},i&&(t.textLocationAssertion.pre=i),i=null):(r=o,o=null,this.parseSideBias(t,i),i=null),s=!1)}else s=!0;if(!t.nodeIndex&&0!==t.nodeIndex)throw new Error("Missing child node index in CFI");return{parsed:t,offset:l,newDoc:"!"===o}}getChildNodeByCFIIndex(e,t,n,i){const o=t.childNodes;if(!o.length)return{node:t,offset:0};if(n<=0)return{node:o[0],relativeToNode:"before",offset:0};let r,a,s,l=0;for(a=0;a<o.length;a++)switch(s=o[a],s.nodeType){case ae:if(l%2==0){if(l+=2,l>=n)return"img"===s.tagName.toLowerCase()&&i?{node:s,offset:i}:{node:s,offset:0}}else{if(l+=1,l===n)return"img"===s.tagName.toLowerCase()&&i?{node:s,offset:i}:{node:s,offset:0};if(l>n)return r?{node:r,offset:this.trueLength(e,r.textContent)}:{node:t,offset:0}}r=s;break;case se:case le:if(0!==l&&l%2!=0||(l+=1),l===n){const t=this.trueLength(e,s.textContent);if(!(i>=t))return{node:s,offset:i};i-=t}r=s;break;default:continue}if(n>l){const n={relativeToNode:"after",offset:0};return n.node=r||t,this.isTextNode(n.node)&&(n.offset=this.trueLength(e,n.node.textContent.length)),n}}isTextNode(e){return!!e&&(e.nodeType===se||e.nodeType===le)}correctOffset(e,t,n,i){let o,r=t;if("string"==typeof i?o=this.decodeEntities(e,i):(i.pre=this.decodeEntities(e,i.pre),i.post=this.decodeEntities(e,i.post),o=i.pre+"."+i.post),!this.isTextNode(t))return{node:t,offset:0};for(;this.isTextNode(r.previousSibling);)r=r.previousSibling;const a=r;let s;const l=[];let c="",d=0;for(;this.isTextNode(r)&&(s=this.decodeEntities(e,r.textContent),l[d]=s.length,c+=s,r.nextSibling);)r=r.nextSibling,d++;const g=i.pre?i.pre.length:0,u=function(e,t,n){n=n||0;const i=[];let o,r=0;do{if(o=e.match(t),!o)break;i.push(o.index+n),r+=o.index+o.length,e=e.slice(o.index+o.length)}while(r<e.length);return i}(c,new RegExp(o),g);if(!u.length)return{node:t,offset:n};let p=function(e,t){let n,i,o,r;for(o=0;o<e.length;o++)r=Math.abs(e[o]-t),(!o||r<n)&&(r=n,i=e[o]);return i}(u,n);if(r===t&&p===n)return{node:t,offset:n};for(d=0,r=a;p>=l[d];){if(p-=l[d],p<0)return{node:t,offset:n};const e=[];if(!r.nextSibling||d+1>=e.length)return{node:t,offset:n};d++,r=r.nextSibling}return{node:r,offset:p}}resolveNode(e,t,n,i){if(i=Object.assign({},i||{}),!n)throw new Error("Missing DOM argument");let o;if(0===e&&(o=n.querySelector("package")),!o)for(const e of n.childNodes)if(e.nodeType===ae){o=e;break}if(o=n,!o)throw new Error("Document incompatible with CFIs");let r,a,s=o,l=0;for(r=t.length-1;r>=0;r--)if(a=t[r],!i.ignoreIDs&&a.nodeID&&(s=n.getElementById(a.nodeID))){l=r+1;break}s||(s=o);let c={node:s,offset:0};for(r=l;r<t.length;r++)a=t[r],a&&(c=this.getChildNodeByCFIIndex(n,c.node,a.nodeIndex,a.offset),a.textLocationAssertion&&(c=this.correctOffset(n,c.node,a.offset,a.textLocationAssertion)));return c}resolveURI(e,t,n){if(n=n||{},e<0||e>this.parts.length-2)throw new Error("index is out of bounds");const i=this.parts[e];if(!i)throw new Error("Missing CFI part for index: "+e);let o=this.resolveNode(e,i,t,n).node;const r=o.tagName.toLowerCase();if("itemref"===r&&"spine"===o.parentNode.tagName.toLowerCase()){const e=o.getAttribute("idref");if(!e)throw new Error("Referenced node had not 'idref' attribute");if(o=t.getElementById(e),!o)throw new Error("Specified node is missing from manifest");const n=o.getAttribute("href");if(!n)throw new Error("Manifest item is missing href attribute");return n}if("iframe"===r||"embed"===r){const e=o.getAttribute("src");if(!e)throw new Error(r+" element is missing 'src' attribute");return e}if("object"===r){const e=o.getAttribute("data");if(!e)throw new Error(r+" element is missing 'data' attribute");return e}if("image"===r||"use"===r){const e=o.getAttribute("xlink:href");if(!e)throw new Error(r+" element is missing 'xlink:href' attribute");return e}throw new Error("No URI found")}deepClone(e){return JSON.parse(JSON.stringify(e))}resolveLocation(e,t){const n=t.length-1,i=t[n];if(!i)throw new Error("Missing CFI part for index: "+n);const o=this.resolveNode(n,i,e),r=this.deepClone(i[i.length-1]);return delete r.nodeIndex,r.offset||delete o.offset,Object.assign(Object.assign({},r),o)}resolveLast(e,t){if(t=Object.assign({range:!1},t||{}),!this.isRange)return this.resolveLocation(e,this.parts);if(t.range){const t=e.createRange(),n=this.getFrom();"before"===n.relativeToNode?t.setStartBefore(n.node,n.offset):"after"===n.relativeToNode?t.setStartAfter(n.node,n.offset):t.setStart(n.node,n.offset);const i=this.getTo();return"before"===i.relativeToNode?t.setEndBefore(i.node,i.offset):"after"===i.relativeToNode?t.setEndAfter(i.node,i.offset):t.setEnd(i.node,i.offset),t}return{from:this.resolveLocation(e,this.getFrom()),to:this.resolveLocation(e,this.getTo()),isRange:!0}}resolve(e,t){return this.resolveLast(e,t)}}const pe=e=>{var t,n;const[i]=(null===(t=e.match(/\|(\[prose\~anchor[^\]]*\])+/gi))||void 0===t?void 0:t.map((e=>e.replace(/\|\[prose\~anchor\~/,"").replace(/\]/,""))))||[],[o]=(null===(n=e.match(/\|(\[prose\~offset[^\]]*\])+/gi))||void 0===n?void 0:n.map((e=>e.replace(/\|\[prose\~offset\~/,"").replace(/\]/,""))))||[],r=e.replace(/\|(\[prose\~[^\]]*\~[^\]]*\])+/gi,""),a=parseInt(o||"");return{cleanedCfi:r,itemId:i?decodeURIComponent(i):i,offset:isNaN(a)?void 0:a}},me=(e,t)=>{const n=e.toString();return{toString:()=>n,getAnchorCfi:()=>{if(e.anchorNode)return ue.generate(e.anchorNode,e.anchorOffset,`|[prose~anchor~${encodeURIComponent(t.id)}]`)},getFocusCfi:()=>{if(e.focusNode)return ue.generate(e.focusNode,e.focusOffset,`|[prose~anchor~${encodeURIComponent(t.id)}]`)}}};var fe=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const he=h.namespace("spine"),ve=({ownerDocument:n,context:i,pagination:o,iframeEventBridgeElement:r,spineItemManager:a,hooks$:s,spineItemLocator:l,spineLocator:c,cfiLocator:d,navigation$:g,navigationAdjusted$:u,currentNavigationPosition$:p,viewportState$:m})=>{const f=new e.Subject,v=new e.Subject,b=new e.Subject,y=be(n,s),x=(({iframeEventBridgeElement:e,locator:t})=>({normalizeEventForViewport:n=>{var i;const o=n.target===e,r=(e=>e.__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT)(n),a=null===(i=null==r?void 0:r.view)||void 0===i?void 0:i.frameElement;if(!o||!r||!a)return n;const s=t.getSpineItemFromIframe(a);if(!s)return n;if(Y(n)){const{clientX:e,clientY:t}=s.translateFramePositionIntoPage(n),i=new PointerEvent(n.type,Object.assign(Object.assign({},n),{clientX:e,clientY:t}));return Object.defineProperty(i,"target",{value:r.target,enumerable:!0}),i}if(X(n)){const{clientX:e,clientY:t}=s.translateFramePositionIntoPage(n),i=new MouseEvent(n.type,Object.assign(Object.assign({},n),{clientX:e,clientY:t}));return Object.defineProperty(i,"target",{value:r.target,enumerable:!0}),i}if((e=>{var t,n,i,o,r;if((null==e?void 0:e.target)&&(null===(n=null===(t=null==e?void 0:e.target)||void 0===t?void 0:t.ownerDocument)||void 0===n?void 0:n.defaultView)){const t=null===(o=null===(i=null==e?void 0:e.target)||void 0===i?void 0:i.ownerDocument)||void 0===o?void 0:o.defaultView;if(t.TouchEvent)return e instanceof t.TouchEvent}if((null==e?void 0:e.view)&&(null===(r=null==e?void 0:e.view)||void 0===r?void 0:r.window)){const t=null==e?void 0:e.view;if(t.TouchEvent)return e instanceof t.TouchEvent}return!1})(n)){const e=Array.from(n.touches).map((e=>{const{clientX:t,clientY:n}=s.translateFramePositionIntoPage(e);return new Touch({identifier:e.identifier,target:e.target,clientX:t,clientY:n})})),t=new TouchEvent(n.type,{touches:e,changedTouches:e,targetTouches:e});return Object.defineProperty(t,"target",{value:r.target,enumerable:!0}),t}return n}}))({context:i,spineItemManager:a,iframeEventBridgeElement:r,locator:c});let w;i.$.load$.pipe((0,t.tap)((()=>{var e;v.next(),a.destroyItems(),null===(e=i.getManifest())||void 0===e||e.spineItems.map((e=>fe(void 0,void 0,void 0,(function*(){const t=(({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r})=>{let a;return a="pre-paginated"===e.renditionLayout?ee({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}):ne({item:e,context:t,containerElement:n,iframeEventBridgeElement:i,hooks$:o,viewportState$:r}),Object.assign({item:e},a)})({item:e,containerElement:y,iframeEventBridgeElement:r,context:i,hooks$:s,viewportState$:m});a.add(t)})))),f.next(a.getAll())})),(0,t.takeUntil)(i.$.destroy$)).subscribe();const S=m.pipe((0,t.filter)((e=>"free"===e)),(0,t.take)(1)),P=e=>S.pipe((0,t.tap)(he.measurePerformance("adjustPagination",1,(()=>{var t,n;const i=c.getSpineItemsFromReadingOrderPosition(e),r=i?a.get(i.begin):void 0,s=i?a.get(i.end):void 0,g=o.getInfo().beginCfi,u=o.getInfo().endCfi,p=o.getInfo().beginSpineItemIndex!==(null==i?void 0:i.begin)||void 0===g||(null==g?void 0:g.startsWith("epubcfi(/0")),m=o.getInfo().endSpineItemIndex!==(null==i?void 0:i.end)||void 0===u||(null==u?void 0:u.startsWith("epubcfi(/0"));if(r&&s&&i){const e=c.getSpineItemPositionFromSpinePosition(i.beginPosition,r),f=l.getSpineItemPageIndexFromPosition(e,r),h=c.getSpineItemPositionFromSpinePosition(i.endPosition,s),v=l.getSpineItemPageIndexFromPosition(h,s);o.updateBeginAndEnd({spineItem:r,spineItemIndex:null!==(t=a.getSpineItemIndex(r))&&void 0!==t?t:0,pageIndex:l.getSpineItemPageIndexFromPosition(e,r),cfi:p?d.getCfi(f,r):g,options:{isAtEndOfChapter:!1}},{spineItem:s,spineItemIndex:null!==(n=a.getSpineItemIndex(s))&&void 0!==n?n:0,pageIndex:l.getSpineItemPageIndexFromPosition(h,s),cfi:m?d.getCfi(v,s):u,options:{isAtEndOfChapter:!1}})}}),{disable:!0})));(0,e.merge)(a.$.focus$.pipe((0,t.tap)((n=>{const i=n.data,o=i.fingerTracker.$,r=i.selectionTracker.$;null==w||w.unsubscribe(),w=(0,e.merge)(r.pipe((0,t.filter)((e=>"selectionchange"===e.event)),(0,t.tap)((e=>{b.next({type:"onSelectionChange",data:e.data?me(e.data,i.item):null})}))),r.pipe((0,t.filter)((({event:e})=>"selectstart"===e)),(0,t.switchMap)((n=>o.pipe((0,t.filter)((({event:e})=>"fingermove"===e)),(0,t.debounce)((()=>(0,e.interval)(1e3))),(0,t.takeUntil)(o.pipe((0,t.filter)((({event:e})=>"fingerout"===e)),(0,t.tap)((()=>{})))),(0,t.tap)((({data:e})=>{}))))))).subscribe()})),(0,t.catchError)((t=>(h.error(t),e.EMPTY))),(0,t.takeUntil)(i.$.destroy$))).subscribe();const I=g.pipe((0,t.tap)((e=>{var t,n;const r=he.time("navigation",1),s=a.getFocusedSpineItem(),g=c.getSpineItemsFromReadingOrderPosition(e.position);let u=g?a.get(g.begin):void 0,p=g?a.get(g.end):void 0;u=u||s,p=p||s;const m=e.position.spineItem||u;if(m&&m!==s?a.focus(m):m||a.focus(0),m&&u&&p&&g){const r=e.lastUserExpectedNavigation,f=null!==(t=a.getSpineItemIndex(u))&&void 0!==t?t:0,h=c.getSpineItemPositionFromSpinePosition(g.beginPosition,u),v=l.getSpineItemPageIndexFromPosition(h,u),b=c.getSpineItemPositionFromSpinePosition(g.endPosition,p),y=l.getSpineItemPageIndexFromPosition(b,p),x=null!==(n=a.getSpineItemIndex(p))&&void 0!==n?n:0;o.updateBeginAndEnd({spineItem:u,spineItemIndex:f,pageIndex:v,cfi:"navigate-from-cfi"===(null==r?void 0:r.type)&&m===u?r.data:"adjust"===e.triggeredBy&&"controlled"===i.getSettings().computedPageTurnMode?o.getInfo().beginCfi:(o.getInfo().beginSpineItemIndex,d.getRootCfi(u)),options:{isAtEndOfChapter:!1}},{spineItem:p,spineItemIndex:x,pageIndex:y,cfi:"navigate-from-cfi"===(null==r?void 0:r.type)&&m===p?r.data:"adjust"===e.triggeredBy&&"controlled"===i.getSettings().computedPageTurnMode?o.getInfo().endCfi:(o.getInfo().endSpineItemIndex,d.getRootCfi(p)),options:{isAtEndOfChapter:!1}}),he.log("navigation$",{spineItemHasChanged:m!==s,item:m,spineItemToFocus:m,index:a.getSpineItemIndex(m),offset:e,endSpineItem:p,beginSpineItem:u,lastExpectedNavigation:r,spineItemsFromPosition:g})}r()})),(0,t.share)(),(0,t.takeUntil)(i.$.destroy$));return I.pipe((0,t.switchMap)((e=>P(e.position).pipe((0,t.takeUntil)(a.$.layout$)))),(0,t.takeUntil)(i.$.destroy$)).subscribe(),(0,e.merge)(I,u).pipe((0,t.switchMap)((()=>S.pipe((0,t.withLatestFrom)(p),(0,t.map)((([,e])=>{const t=a.getFocusedSpineItemIndex();if(he.log("update contents",{focusedSpineItemIndex:t}),void 0===t)return;const{begin:n=t,end:i=t}=c.getSpineItemsFromReadingOrderPosition(e)||{};n!==t&&i!==t?(h.warn("Current viewport is not in sync with focus item, load from focus item rather than viewport"),a.loadContents([t,t])):a.loadContents([n,i])})),(0,t.take)(1)))),(0,t.takeUntil)(i.$.destroy$)).subscribe(),{element:y,locator:c,spineItemLocator:l,cfiLocator:d,normalizeEventForViewport:x.normalizeEventForViewport,manipulateSpineItems:e=>{let t=!1;a.getAll().forEach(((n,i)=>{t=n.manipulateSpineItem((t=>e(Object.assign({index:i},t))))||t})),t&&a.layout()},manipulateSpineItem:(e,t)=>{var n;null===(n=a.get(e))||void 0===n||n.manipulateSpineItem(t)},destroy:()=>{f.complete(),v.next(),v.complete(),b.complete(),a.destroy(),null==w||w.unsubscribe(),y.remove()},adjustPagination:P,isSelecting:()=>{var e;return null===(e=a.getFocusedSpineItem())||void 0===e?void 0:e.selectionTracker.isSelecting()},getSelection:()=>{var e;return null===(e=a.getFocusedSpineItem())||void 0===e?void 0:e.selectionTracker.getSelection()},$:{$:b.asObservable(),layout$:a.$.layout$,itemsCreated$:f.asObservable(),itemsBeforeDestroy$:v.asObservable()}}},be=(e,t)=>{const n=e.createElement("div");return n.style.cssText="\n height: 100%;\n position: relative;\n ",n.className="prose-reader-spine",t.getValue().reduce(((e,t)=>"spine.onBeforeContainerCreated"===t.name?t.fn(e):e),n)},ye=({context:e})=>{const t=(t,n)=>{const{width:i,height:o}=n.getElementDimensions(),r=n.getReadingDirection();if(n.isUsingVerticalWriting()){return{x:0,y:b(e.getPageSize().height,t,o)}}const a=b(e.getPageSize().width,t,i);return"rtl"===r?{x:i-a-e.getPageSize().width,y:0}:{x:a,y:0}},n=(t,n)=>{const{width:i,height:r}=n.getElementDimensions(),a=n.getReadingDirection(),s=e.getPageSize().width,l=e.getPageSize().height;let c=Math.min(i,Math.max(0,t.x));if("rtl"===a&&(c=i-c-e.getPageSize().width),n.isUsingVerticalWriting()){const e=y(r,l);return o(t.y,l,e)}{const e=y(i,s);return o(c,s,e)}},i=(t,n,i)=>{var o;let r;if("img"===(null==t?void 0:t.nodeName)||""===(null==t?void 0:t.textContent)&&t.nodeType===Node.ELEMENT_NODE)r=t.getBoundingClientRect().x;else if(t){const e=t?((e,t)=>{var n;if(e.nodeType!==Node.CDATA_SECTION_NODE&&e.nodeType!==Node.DOCUMENT_TYPE_NODE){const i=null===(n=e.ownerDocument)||void 0===n?void 0:n.createRange();null==i||i.selectNodeContents(e);try{t<=((null==i?void 0:i.endOffset)||0)&&(null==i||i.setStart(e,t||0))}catch(e){h.error(e)}return i}})(t,n):void 0;r=(null==e?void 0:e.getBoundingClientRect().x)||r}const a=(null===(o=i.getElementDimensions())||void 0===o?void 0:o.width)||0,s=e.getPageSize().width;if(r){return{x:x(r,s,a),y:0}}},o=(e,t,n)=>{const i=[...Array(n)].map(((e,n)=>n*t));return e<=0?0:e>=n*t?n-1:Math.max(0,i.findIndex((n=>e<n+t)))};return{getSpineItemPositionFromNode:i,getSpineItemPositionFromPageIndex:t,getSpineItemOffsetFromAnchor:(t,n)=>{var i;const o=(null===(i=n.getElementDimensions())||void 0===i?void 0:i.width)||0,r=e.getPageSize().width,a=n.getBoundingRectOfElementFromSelector(t),s=(null==a?void 0:a.x)||0;return x(s,r,o)},getSpineItemPageIndexFromPosition:n,getSpineItemPageIndexFromNode:(e,t,o)=>{const r=i(e,t,o);return r?n(r,o):void 0},getSpineItemClosestPositionFromUnsafePosition:(t,n)=>{const{width:i,height:o}=n.getElementDimensions();return{x:x(t.x,e.getPageSize().width,i),y:x(t.y,e.getPageSize().height,o)}},getFirstNodeOrRangeAtPage:(n,i)=>{var o,r,a;const s=e.getPageSize(),l=null===(r=null===(o=i.spineItemFrame)||void 0===o?void 0:o.getManipulableFrame())||void 0===r?void 0:r.frame;if((null===(a=null==l?void 0:l.contentWindow)||void 0===a?void 0:a.document)&&null!==l.contentWindow.document.body){const{x:e,y:o}=t(n,i),r={left:e,right:e+s.width,top:o,bottom:o+s.height};return W(l.contentWindow.document,r)}}}},xe="spineNavigator",we=({context:e,spineItemManager:t,cfiLocator:n,locator:i})=>{const o=(({context:e})=>{const t=ye({context:e}),n=(e,n)=>t.getSpineItemPositionFromPageIndex(e,n);return{getNavigationForLeftPage:(n,i)=>{let o={x:n.x-e.getPageSize().width,y:n.y};return i.isUsingVerticalWriting()&&(o={x:n.x,y:n.y+e.getPageSize().height}),t.getSpineItemClosestPositionFromUnsafePosition(o,i)},getNavigationForRightPage:(n,i)=>{let o={x:n.x+e.getPageSize().width,y:n.y};return i.isUsingVerticalWriting()&&(o={x:n.x,y:n.y-e.getPageSize().height}),t.getSpineItemClosestPositionFromUnsafePosition(o,i)},getNavigationForLastPage:t=>{if(t.isUsingVerticalWriting()){const i=e.getPageSize().height,o=y(t.getElementDimensions().height,i);return n(o-1,t)}{const i=e.getPageSize().width,o=y(t.getElementDimensions().width,i);return n(o-1,t)}},getNavigationForPage:n,getNavigationForPosition:(e,n)=>t.getSpineItemClosestPositionFromUnsafePosition(n,e),getNavigationFromNode:(e,n,i)=>t.getSpineItemPositionFromNode(n,i,e)||{x:0,y:0}}})({context:e}),r=(e,t)=>e.x!==t.x||e.y!==t.y,a=h.measurePerformance("spineNavigator wrapPositionWithSafeEdge",1,(n=>{const i=t.get(t.getLength()-1),o=t.getAbsolutePositionOf(i||0),r=o.leftEnd-e.getPageSize().width,a=o.topEnd-e.getPageSize().height;return{x:Math.min(Math.max(0,n.x),r),y:Math.min(Math.max(0,n.y),a)}}),{disable:!0}),s=({x:t,y:n})=>({x:t%e.getVisibleAreaRect().width!=0?t-e.getPageSize().width:t,y:n}),l=n=>{const s=e.getSettings().computedPageTurnDirection,l=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem();if(!l)return n;const c=i.getSpineItemPositionFromSpinePosition(n,l),d=o.getNavigationForRightPage(c,l);if(!c.outsideOfBoundaries&&r(d,c)){return i.getSpinePositionFromSpineItemPosition(d,l)}return a(e.isRTL()?"horizontal"===s?{x:n.x-e.getPageSize().width,y:0}:{y:n.y+e.getPageSize().height,x:0}:"horizontal"===s?{x:n.x+e.getPageSize().width,y:0}:{y:n.y+e.getPageSize().height,x:0})},c=n=>{const s=e.getSettings().computedPageTurnDirection,l=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem(),c=Object.assign(Object.assign({},n),{spineItem:l});if(!l)return c;const d=i.getSpineItemPositionFromSpinePosition(n,l),g=o.getNavigationForLeftPage(d,l);if(!d.outsideOfBoundaries&&r(g,d)){return i.getSpinePositionFromSpineItemPosition(g,l)}return a(e.isRTL()?"horizontal"===s?{x:n.x+e.getPageSize().width,y:0}:{y:n.y-e.getPageSize().height,x:0}:"horizontal"===s?{x:n.x-e.getPageSize().width,y:0}:{y:n.y-e.getPageSize().height,x:0})},d=(e,t)=>{const n=i.getSpinePositionFromSpineItemAnchor(e,t);return s(n)},g=e=>{const t=i.getSpineItemFromPosition(e);if(t){const n=i.getSpineItemPositionFromSpinePosition(e,t),r=o.getNavigationForPosition(t,n),a=i.getSpinePositionFromSpineItemPosition(r,t);return s(a)}return{x:0,y:0}};return{getNavigationForCfi:e=>{const t=n.getSpineItemFromCfi(e),{node:r,offset:a=0}=n.resolveCfi(e)||{};if(t){const e=r?o.getNavigationFromNode(t,r,a):{x:0,y:0},n=i.getSpinePositionFromSpineItemPosition(e,t);return Object.assign(Object.assign({},s(n)),{spineItem:t})}return h.warn(xe,`unable to detect item id from cfi ${e}`),{x:0,y:0}},getNavigationForPage:(t,n)=>{if(!n){const n=t*e.getPageSize().width;return g({x:n,y:0})}const r=o.getNavigationForPage(t,n),a=i.getSpinePositionFromSpineItemPosition(r,n);return s(a)},getNavigationForLastPage:e=>{const t=o.getNavigationForLastPage(e),n=i.getSpinePositionFromSpineItemPosition(t,e);return s(n)},getNavigationForSpineIndexOrId:e=>{const n=t.get(e);if(n){const e=i.getSpinePositionFromSpineItem(n);return Object.assign(Object.assign({},s(e)),{spineItem:n})}return{x:0,y:0}},getNavigationForRightPage:n=>{const o=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem();let r=l(n);if((null==o?void 0:o.isUsingVerticalWriting())&&n.x===r.x)return s(r);if(e.shouldDisplaySpread()){if((null==o?void 0:o.isUsingVerticalWriting())&&n.x!==r.x)return s(a(e.isRTL()?Object.assign(Object.assign({},r),{x:r.x-e.getPageSize().width}):Object.assign(Object.assign({},r),{x:r.x+e.getPageSize().width})));if("vertical"===e.getSettings().computedPageTurnDirection&&n.y!==r.y)return s(r);r=l(r)}return s(r)},getNavigationForLeftPage:n=>{const o=i.getSpineItemFromPosition(n)||t.getFocusedSpineItem();let r=c(n);if((null==o?void 0:o.isUsingVerticalWriting())&&n.x===r.x)return s(r);if(e.shouldDisplaySpread()){if((null==o?void 0:o.isUsingVerticalWriting())&&n.x!==r.x)return s(a(e.isRTL()?Object.assign(Object.assign({},r),{x:r.x+e.getPageSize().width}):Object.assign(Object.assign({},r),{x:r.x-e.getPageSize().width})));if("vertical"===e.getSettings().computedPageTurnDirection&&n.y!==r.y)return s(r);r=c(r)}return s(r)},getNavigationForUrl:n=>{var i;let o;try{o=n instanceof URL?n:new URL(n)}catch(e){h.error(e)}if(o){const n=`${o.origin}${o.pathname}`,r=null===(i=e.getManifest())||void 0===i?void 0:i.spineItems.find((e=>e.href===n));if(r){const e=t.get(r.id);if(e){const t=d(o.hash,e);return Object.assign(Object.assign({},s(t)),{url:o})}}}},getNavigationForAnchor:d,getNavigationForPosition:g,getMostPredominantNavigationForPosition:t=>{const n=e.getSettings().computedPageTurnDirection,i="horizontal"===n?t.x+.5*e.getVisibleAreaRect().width:0,o="horizontal"===n?0:t.y+.5*e.getVisibleAreaRect().height,r=a({x:i,y:o});return g(r)},wrapPositionWithSafeEdge:a,isNavigationGoingForwardFrom:(t,n)=>"vertical"===e.getSettings().computedPageTurnDirection?t.y>n.y:t.x>n.x,areNavigationDifferent:(e,t)=>r(e,t)||!!e.spineItem&&!!t.spineItem&&e.spineItem!==t.spineItem,arePositionsDifferent:r}},Se="manualViewportNavigator",Pe="viewportNavigator",Ie=({spineItemManager:n,context:i,pagination:o,parentElement:r,cfiLocator:s,spineLocator:l,hooks$:d,spine:g})=>{const u=$e(r.ownerDocument,d);u.appendChild(g.element);const p=new e.Subject;let m;const f=new e.BehaviorSubject({x:-1,y:0}),v=we({context:i,spineItemManager:n,cfiLocator:s,locator:l}),b=new e.Subject;r.appendChild(u);const y=h.measurePerformance("viewportNavigator getCurrentViewportPosition",1,(()=>{if(m&&(null==m||m.x,Math.abs(u.getBoundingClientRect().x)),"scrollable"===i.getSettings().computedPageTurnMode)return w.getCurrentViewportPosition();const{x:e,y:t}=u.getBoundingClientRect(),n={x:~~(10*Math.abs(e))/10,y:~~(10*Math.abs(t))/10};return m=n,m})),x=(({getCurrentViewportPosition:n,navigator:i,spineItemManager:o,locator:r,context:a,currentNavigationSubject$:s})=>{const l=new e.Subject,c=new e.BehaviorSubject("end");let d={x:0,y:0},g={x:0,y:0};const u=new e.Subject,p=h.measurePerformance("panViewportNavigator moveTo",5,((e,{final:t,start:o}={})=>{if("scrollable"===a.getSettings().computedPageTurnMode)return void h.warn("pan control is not available on free page turn mode");const r=a.getSettings().computedPageTurnDirection;o&&(c.next("start"),d={x:0,y:0},g=n());let l=s.value;if(e){const t=e.x-((null==d?void 0:d.x)||0),n=e.y-((null==d?void 0:d.y)||0);l=i.wrapPositionWithSafeEdge({x:"horizontal"===r?a.isRTL()?g.x+t:g.x-t:0,y:"horizontal"===r?0:g.y-n}),d=e}else l=n();if(g=l,t)return d={x:0,y:0},m({from:s.value,to:l,pan:g}),void c.next("end");u.next({position:l})}),{disable:!1}),m=e=>{l.next({type:"snap",data:e})},f=h.measurePerformance("turnTo",10,((e,{allowSpineItemChange:t=!0}={})=>{const n=o.getFocusedSpineItem();if(!n)return;const i=r.getSpineItemFromPosition(e)||n;return i!==n&&t?"before"===o.comparePositionOf(i,n)?{type:"navigate-from-next-item"}:{type:"navigate-from-previous-item"}:void 0})),v=l.pipe((0,t.filter)((e=>"snap"===e.type)),(0,e.withLatestFrom)(a.$.settings$),(0,t.switchMap)((([{data:{from:t,to:n}},{navigationSnapThreshold:o}])=>{const r=a.getSettings().computedPageTurnDirection,s=i.isNavigationGoingForwardFrom(n,t)?1-o:o,l="horizontal"===r?n.x+a.getVisibleAreaRect().width*s:0,c="horizontal"===r?0:n.y+a.getVisibleAreaRect().height*s,d=i.wrapPositionWithSafeEdge({x:l,y:c}),g=i.getNavigationForPosition(d),u=f(g);return(0,e.of)(Object.assign(Object.assign({},g),{lastUserExpectedNavigation:u}))})));return{moveTo:p,destroy:()=>{u.complete(),c.complete()},adjustReadingOffset:e=>!1,$:{moveToSubject$:u,state$:c.asObservable(),navigation$:(0,e.merge)(v)}}})({context:i,element:u,navigator:v,spineItemManager:n,locator:l,getCurrentViewportPosition:y,currentNavigationSubject$:f}),w=(({context:n,element:i,navigator:o,currentNavigationSubject$:r,spine:a})=>{let s=!1;const l=(c=(0,e.fromEvent)(i,"scroll"),n.$.settings$.pipe((0,t.map)((()=>n.getSettings().computedPageTurnMode)),(0,t.distinctUntilChanged)(),(0,t.switchMap)((t=>(0,e.iif)((()=>"controlled"===t),e.EMPTY,c))))).pipe((e=>e.pipe((0,t.filter)((()=>!s||(s=!1,!1))))),(0,t.share)(),(0,t.takeUntil)(n.$.destroy$));var c;const d=({x:e,y:t})=>{const n=a.element.getBoundingClientRect().width/a.element.offsetWidth;return{x:E({newScale:1,oldScale:n,screenSize:i.clientWidth,pageSize:a.element.scrollWidth,scrollOffset:e}),y:E({newScale:1,oldScale:n,screenSize:i.clientHeight,pageSize:a.element.scrollHeight,scrollOffset:t})}},g=e=>o.getMostPredominantNavigationForPosition(e),u=l.pipe((0,t.debounceTime)(200,e.animationFrameScheduler),(0,t.withLatestFrom)(r),(0,t.switchMap)((()=>{const t=g(d({x:i.scrollLeft,y:i.scrollTop}));return(0,e.of)({position:t,animate:!1,lastUserExpectedNavigation:void 0})})),(0,t.share)()),p=l.pipe((0,t.debounceTime)(200,e.animationFrameScheduler),(0,t.share)(),(0,t.takeUntil)(n.$.destroy$)),m=(0,e.merge)(l.pipe((0,t.map)((()=>"start")),(0,t.distinctUntilChanged)()),p.pipe((0,t.map)((()=>"end")))).pipe((0,t.startWith)("end"));return{destroy:()=>{},adjustReadingOffset:({x:e,y:t})=>"scrollable"===n.getSettings().computedPageTurnMode&&(s=!0,i.scrollTo({left:e,top:t}),!0),getNavigationForPosition:g,getCurrentViewportPosition:()=>d({x:i.scrollLeft,y:i.scrollTop}),$:{state$:m,navigation$:u}}})({context:i,element:u,navigator:v,currentNavigationSubject$:f,spine:g,spineItemManager:n}),S=(({navigator:n,spineItemManager:i,currentNavigationSubject$:o,locator:r,context:a})=>{const s=new e.BehaviorSubject("end"),l=new e.Subject,c=l.pipe((0,t.filter)((e=>"url"===e.type)),(0,t.switchMap)((({data:t})=>{const i=n.getNavigationForUrl(t);return i?(0,e.of)(Object.assign(Object.assign({},i),{animate:!0,lastUserExpectedNavigation:{type:"navigate-from-anchor",data:i.url.hash}})):e.EMPTY}))),d=l.pipe((0,t.filter)((e=>"spineItem"===e.type)),(0,t.switchMap)((({data:{animate:t,indexOrId:i}})=>{const o=n.getNavigationForSpineIndexOrId(i),r={type:"navigate-from-previous-item"};return h.log(Se,"goToSpineItem",{indexOrId:i,animate:t,navigation:o}),(0,e.of)(Object.assign(Object.assign({},o),{animate:t,lastUserExpectedNavigation:r}))}))),g=l.pipe((0,t.filter)((e=>"cfi"===e.type)),(0,t.map)((({data:{animate:e,cfi:t}})=>{const i=n.getNavigationForCfi(t);return h.log(Se,"goToCfi",{cfi:t,animate:e,navigation:i}),Object.assign(Object.assign({},i),{animate:e,lastUserExpectedNavigation:{type:"navigate-from-cfi",data:t}})}))),u=l.pipe((0,t.filter)((e=>"chapterPage"===e.type)),(0,t.switchMap)((({data:{pageIndex:t}})=>{const o=i.getFocusedSpineItem();if(o){const i=n.getNavigationForPage(t,o);return(0,e.of)(Object.assign(Object.assign({},i),{lastUserExpectedNavigation:void 0,animate:!0}))}return e.EMPTY}))),p=l.pipe((0,t.filter)((e=>"pageIndex"===e.type)),(0,t.filter)((e=>{var t;return"reflowable"!==(null===(t=a.getManifest())||void 0===t?void 0:t.renditionLayout)||(h.warn("This method only works for pre-paginated content"),!1)})),(0,t.switchMap)((({data:{pageIndex:t}})=>(0,e.of)(Object.assign(Object.assign({},n.getNavigationForPage(t)),{lastUserExpectedNavigation:void 0,animate:!0}))))),m=h.measurePerformance("turnTo",10,((t,{allowSpineItemChange:n=!0}={})=>{const o=i.getFocusedSpineItem();if(!o)return e.EMPTY;const a=r.getSpineItemFromPosition(t)||o;return a!==o?n?"before"===i.comparePositionOf(a,o)?(0,e.of)(Object.assign(Object.assign({},t),{lastUserExpectedNavigation:{type:"navigate-from-next-item"},animate:!0})):(0,e.of)(Object.assign(Object.assign({},t),{lastUserExpectedNavigation:{type:"navigate-from-previous-item"},animate:!0})):e.EMPTY:(0,e.of)(Object.assign(Object.assign({},t),{lastUserExpectedNavigation:void 0,animate:!0}))})),f=l.pipe((0,t.filter)((e=>"leftPage"===e.type)),(0,t.withLatestFrom)(o),(0,t.switchMap)((([{data:{allowSpineItemChange:e}},t])=>{const i=n.getNavigationForLeftPage(t);return h.log(Se,"turnLeft"),m(i,{allowSpineItemChange:e})}))),v=l.pipe((0,t.filter)((e=>"rightPage"===e.type)),(0,t.withLatestFrom)(o),(0,t.switchMap)((([{data:{allowSpineItemChange:e}},t])=>{const i=n.getNavigationForRightPage(t);return h.log(Se,"turnRight"),m(i,{allowSpineItemChange:e})}))),b=(0,e.merge)(c,d,u,f,v,(0,e.merge)(g,p)).pipe((0,t.withLatestFrom)(o),(0,t.filter)((([e,t])=>n.areNavigationDifferent(e,t))),(0,t.map)((([e])=>e)));return{destroy:()=>{},adjustReadingOffset:e=>!1,turnLeft:({allowSpineItemChange:e=!0}={})=>l.next({type:"leftPage",data:{allowSpineItemChange:e}}),turnRight:({allowSpineItemChange:e=!0}={})=>{l.next({type:"rightPage",data:{allowSpineItemChange:e}})},goToCfi:(e,t={animate:!0})=>l.next({type:"cfi",data:Object.assign({cfi:e},t)}),goToPageOfCurrentChapter:e=>l.next({type:"chapterPage",data:{pageIndex:e}}),goToSpineItem:(e,t={animate:!0})=>{l.next({type:"spineItem",data:Object.assign({indexOrId:e},t)})},goToUrl:e=>l.next({type:"url",data:e}),goToPage:e=>l.next({type:"pageIndex",data:{pageIndex:e}}),$:{state$:s.asObservable(),navigation$:b}}})({context:i,element:u,navigator:v,currentNavigationSubject$:f,spineItemManager:n,locator:l}),P=[w,x,S],I=(0,e.merge)(...P.map((({$:{state$:e}})=>e)));let $;const O=h.measurePerformance("adjustReadingOffset",2,(({x:e,y:t},n)=>{m=void 0;const o=P.reduce(((n,i)=>i.adjustReadingOffset({x:e,y:t})||n),!1);o||(i.isRTL()?u.style.transform=`translate3d(${e}px, -${t}px, 0)`:u.style.transform=`translate3d(-${e}px, -${t}px, 0)`),n.forEach((e=>{"onViewportOffsetAdjust"===e.name&&e.fn()}))}),{disable:!0}),j=t=>{const n=o.getInfo().beginCfi;let r=f.value;if("scrollable"===i.getSettings().computedPageTurnMode)r=w.getNavigationForPosition(y());else if("navigate-from-cfi"===(null==$?void 0:$.type))r=v.getNavigationForCfi($.data),h.log(Pe,"adjustNavigation","navigate-from-cfi","use last cfi");else if("navigate-from-next-item"===(null==$?void 0:$.type))r=v.getNavigationForLastPage(t),h.log(Pe,"adjustNavigation","navigate-from-next-item",{});else if("navigate-from-previous-item"===(null==$?void 0:$.type))r=v.getNavigationForPage(0,t),h.log(Pe,"adjustNavigation","navigate-from-previous-item",{});else if("navigate-from-anchor"===(null==$?void 0:$.type)){const e=$.data;r=v.getNavigationForAnchor(e,t)}else if(n)r=v.getNavigationForCfi(n),h.log(Pe,"adjustNavigation","use last cfi");else{const e=o.getInfo().beginPageIndex||0;r=v.getNavigationForPage(e,t),h.log(Pe,"adjustNavigation","use guess strategy",{})}const a=v.arePositionsDifferent(r,f.value);return h.log(Pe,"adjustNavigation",{areDifferent:a,offsetInSpineItem:0,expectedSpineOffset:r,currentNavigationPosition:f.value,lastUserExpectedNavigation:$}),a&&b.next({position:r,animate:!1}),(0,e.of)({previousNavigationPosition:f.value,adjustedSpinePosition:r,areDifferent:a})};p.subscribe((()=>{m=void 0}));const T=i.$.settings$.pipe(a(["computedPageTurnDirection","computedPageTurnMode","numberOfAdjacentSpineItemToPreLoad"]),(0,t.distinctUntilChanged)(c),(0,t.skip)(1));(0,e.merge)(p,T).pipe((0,t.tap)((()=>{"scrollable"===i.getSettings().computedPageTurnMode?(u.style.removeProperty("transform"),u.style.removeProperty("transition"),u.style.overflow="scroll"):(u.style.removeProperty("overflow"),u.style.removeProperty("overflowY")),n.layout()}))).subscribe();const C=(0,e.merge)(x.$.navigation$.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{position:{x:e.x,y:e.y,spineItem:e.spineItem},animation:"snap",triggeredBy:"manual"})))),S.$.navigation$.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{position:{x:e.x,y:e.y,spineItem:e.spineItem},animation:!!e.animate&&"turn",triggeredBy:"manual"})))),b.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{triggeredBy:"adjust",animation:!!e.animate&&"turn"})))),w.$.navigation$.pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{triggeredBy:"scroll",animation:!!e.animate&&"turn"}))))).pipe((0,t.map)((e=>("lastUserExpectedNavigation"in e&&($=e.lastUserExpectedNavigation),f.next(e.position),Object.assign(Object.assign({},e),{lastUserExpectedNavigation:$})))),(0,t.share)(),(0,t.takeUntil)(i.$.destroy$)),M=C.pipe((0,t.filter)((({triggeredBy:e})=>"scroll"!==e&&("scrollable"!==i.getSettings().computedPageTurnMode||"adjust"!==e)))),F=(0,e.merge)(x.$.moveToSubject$.asObservable().pipe((0,t.map)((e=>Object.assign(Object.assign({},e),{animation:!1})))),M).pipe((0,t.map)((({animation:e,position:t})=>({type:"manualAdjust",shouldAnimate:!(!e||"turn"===e&&"none"===i.getSettings().computedPageTurnAnimation),animation:e,position:t}))),(0,t.share)()),L=(0,e.merge)(F).pipe((0,t.startWith)(void 0),(0,t.pairwise)(),(0,t.tap)((([e,t])=>{"manualAdjust"===(null==e?void 0:e.type)&&"manualAdjust"!==(null==t?void 0:t.type)&&(u.style.setProperty("transition","none"),u.style.setProperty("opacity","1"))})),(0,t.switchMap)((([,n])=>{if("manualAdjust"!==(null==n?void 0:n.type))return e.EMPTY;const o="snap"===n.animation?i.getSettings().computedSnapAnimationDuration:i.getSettings().computedPageTurnAnimationDuration,r="snap"===n.animation?"slide":i.getSettings().computedPageTurnAnimation;return(0,e.of)(n).pipe(n.shouldAnimate?(0,t.delay)(1,e.animationFrameScheduler):e.identity,(0,t.tap)((e=>{e.shouldAnimate?"fade"===r?(u.style.setProperty("transition",`opacity ${o/2}ms`),u.style.setProperty("opacity","0")):"snap"!==n.animation&&"slide"!==r||(u.style.setProperty("transition",`transform ${o}ms`),u.style.setProperty("opacity","1")):(u.style.setProperty("transition","none"),u.style.setProperty("opacity","1"))})),(0,t.withLatestFrom)(d),(0,t.tap)((([e,t])=>{"fade"!==r&&O(e.position,t)})),n.shouldAnimate?(0,t.delay)(o/2,e.animationFrameScheduler):e.identity,(0,t.tap)((([e,t])=>{"fade"===r&&(O(e.position,t),u.style.setProperty("opacity","1"))})),n.shouldAnimate?(0,t.delay)(o/2,e.animationFrameScheduler):e.identity,(0,t.tap)((([e,t])=>{"fade"===r&&O(e.position,t)})),(0,t.takeUntil)(I.pipe((0,t.filter)((e=>"start"===e)),(0,t.skip)(1))))})),(0,t.share)(),(0,t.takeUntil)(i.$.destroy$)),R=(0,e.merge)((0,e.merge)(F).pipe((0,t.map)((()=>"start"))),(0,e.merge)(L).pipe((0,t.map)((()=>"end")))),N=(0,e.combineLatest)([...P.map((({$:{state$:e}})=>e)),R]).pipe((0,t.map)((e=>e.every((e=>"end"===e))?"free":"busy")),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1),(e=>(e.pipe((0,t.takeUntil)(i.$.destroy$)).subscribe(),e))),k=N.pipe((0,t.filter)((e=>"free"===e)),(0,e.take)(1)),A=g.$.layout$.pipe((0,t.switchMap)((()=>k.pipe((0,t.switchMap)((()=>{const t=n.getFocusedSpineItem();return t?j(t):e.EMPTY})),(0,t.takeUntil)(C)))),(0,t.share)());return{destroy:()=>{p.complete(),b.complete(),f.complete(),P.forEach((e=>e.destroy()))},layout:()=>p.next(),getCurrentNavigationPosition:()=>f.value,getCurrentViewportPosition:y,turnLeft:S.turnLeft,turnRight:S.turnRight,goToPage:S.goToPage,goToSpineItem:S.goToSpineItem,goToUrl:S.goToUrl,goToCfi:S.goToCfi,goToPageOfCurrentChapter:S.goToPageOfCurrentChapter,adjustNavigation:j,moveTo:x.moveTo,getLastUserExpectedNavigation:()=>$,element:u,$:{state$:N,navigation$:C,navigationAdjustedAfterLayout$:A,currentNavigationPosition$:f.asObservable()}}},$e=(e,t)=>{const n=e.createElement("div");return n.style.cssText="\n height: 100%;\n position: relative;\n ",n.className="prose-reader-viewport-navigator",t.getValue().reduce(((e,t)=>"viewportNavigator.onBeforeContainerCreated"===t.name?t.fn(e):e),n)};var Oe=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const Ee=n=>{var{containerElement:i,hooks:o}=n,r=Oe(n,["containerElement","hooks"]);const a=new e.BehaviorSubject({supportedPageTurnAnimation:["fade","none","slide"],supportedPageTurnMode:["controlled","scrollable"],supportedPageTurnDirection:["horizontal","vertical"],supportedComputedPageTurnDirection:["horizontal","vertical"]}),s=new e.Subject,l=new e.Subject,d=new e.Subject,g=new e.BehaviorSubject(o||[]),u=new e.Subject,p=new e.Subject,m=new e.BehaviorSubject({x:0,y:0}),f=new e.BehaviorSubject("free"),b=T(r),y=(({context:n})=>{const i=new e.Subject,o=new e.Subject;let r=[];const a=new e.BehaviorSubject([]);let s;const l=()=>{const e=n.getManifest(),t=[],i="pre-paginated"===(null==e?void 0:e.renditionLayout),s=e?(e=>{var t;const n=null===(t=e.guide)||void 0===t?void 0:t.find((e=>"cover"===e.type));return e.spineItems.findIndex((e=>null==n?void 0:n.href.endsWith(e.path)))})(e):void 0;a.value.reduce(((e,o,r)=>{const l=s===r;let c=n.getPageSize().width,d="none";const g=e.edgeX%n.getVisibleAreaRect().width==0,u=r===a.value.length-1;if(n.shouldDisplaySpread()){!i&&o.isReflowable&&r!==a.value.length-1&&(c=2*n.getPageSize().width),!i&&o.isReflowable&&r===a.value.length-1&&g&&(c=2*n.getPageSize().width);const e=g&&u&&i;o.item.pageSpreadRight&&g&&!n.isRTL()||o.item.pageSpreadLeft&&g&&n.isRTL()?(d="before",c=2*n.getPageSize().width):e&&(d=n.isRTL()?"before":"after",c=2*n.getPageSize().width),i&&l&&(c=2*n.getPageSize().width)}const{width:p,height:m}=o.layout({minimumWidth:c,blankPagePosition:d,spreadPosition:n.shouldDisplaySpread()?g?n.isRTL()?"right":"left":n.isRTL()?"left":"right":"none"});if("vertical"===n.getSettings().computedPageTurnDirection){const i=g?e.edgeY:e.edgeY-n.getVisibleAreaRect().height,r=g?0:e.edgeX;n.isRTL(),o.adjustPositionOfElement({top:i,left:r});const a=p+r,s=m+i;return t.push({leftStart:r,leftEnd:a,topStart:i,topEnd:s,height:m,width:p}),{edgeX:a,edgeY:s}}n.isRTL()?o.adjustPositionOfElement({right:e.edgeX,top:0}):o.adjustPositionOfElement({left:e.edgeX,top:0});const f=p+e.edgeX;return t.push({leftStart:e.edgeX,leftEnd:f,topStart:e.edgeY,topEnd:m,height:m,width:p}),{edgeX:f,edgeY:0}}),{edgeX:0,edgeY:0});const l=r.some(((e,n)=>!c(e,t[n])));r=t,h.log("spineItemManager","layout",{hasLayoutChanges:l,itemLayoutInformation:r}),o.next(l)},d=h.measurePerformance("loadContents",10,(e=>{var t;const[i,o]=e,r=n.getSettings().numberOfAdjacentSpineItemToPreLoad,s="pre-paginated"===(null===(t=n.getManifest())||void 0===t?void 0:t.renditionLayout),l="scrollable"===n.getSettings().computedPageTurnMode;a.value.forEach(((e,t)=>{t<i&&!s&&l||t<i-r||t>o+r?e.unloadContent():e.loadContent()}))})),g=e=>"number"==typeof e?a.value[e]:a.value.find((({item:t})=>t.id===e)),u=h.measurePerformance("getAbsolutePositionOf",10,(e=>{n.getSettings().computedPageTurnDirection;const t="number"==typeof e?e:a.value.indexOf(e);return r[t]&&r[t]||{leftStart:0,leftEnd:0,topStart:0,topEnd:0,width:0,height:0}}),{disable:!0}),p=()=>void 0!==s?a.value[s]:void 0,m=e=>{if(!e)return;const t=a.value.indexOf(e);return t<0?void 0:t},f=h.measurePerformance("getSpineItemAtPosition",10,(e=>{const t=a.value.find((t=>{const{leftStart:i,leftEnd:o,topEnd:r,topStart:a}=u(t),s=e.x>=i&&e.x<o;return"horizontal"===n.getSettings().computedPageTurnDirection?s:s&&e.y>=a&&e.y<r}));return 0!==e.x||t?t:a.value[0]}),{disable:!0}),v=()=>{a.value.forEach((e=>e.destroy()))};return{destroyItems:v,add:e=>{a.value.push(e),e.$.contentLayout$.pipe((0,t.takeUntil)(n.$.destroy$)).subscribe((()=>{l()})),e.$.loaded$.pipe((0,t.tap)((()=>{e.isUsingVerticalWriting()&&n.setHasVerticalWriting()})),(0,t.takeUntil)(n.$.destroy$)).subscribe(),e.load()},get:g,getAll:()=>a.value,getLength:()=>a.value.length,layout:l,focus:e=>{const t="number"==typeof e?g(e):e;if(!t)return;const n=a.value.indexOf(t);n!==s&&(s=n,i.next({data:t}))},loadContents:d,comparePositionOf:(e,t)=>a.value.indexOf(e)>a.value.indexOf(t)?"after":"before",getAbsolutePositionOf:u,getSpineItemAtPosition:f,getFocusedSpineItem:p,getFocusedSpineItemIndex:()=>{const e=p();return e&&m(e)},getSpineItemIndex:m,destroy:()=>{v(),i.complete(),o.complete()},$:{focus$:i.asObservable(),layout$:o.asObservable(),itemIsReady$:a.asObservable().pipe((0,t.switchMap)((n=>{const i=n.map((e=>e.$.isReady$.pipe((0,t.map)((t=>({item:e.item,isReady:t}))))));return(0,e.merge)(...i)})))}}})({context:b}),x=v({context:b,spineItemManager:y}),w=je(i),S=Te(i),P=ye({context:b}),I=(({spineItemManager:e,context:t,spineItemLocator:n})=>{const i=h.measurePerformance("getSpineItemPositionFromSpinePosition",10,((n,i)=>{const{leftEnd:o,leftStart:r,topStart:a,topEnd:s}=e.getAbsolutePositionOf(i);return t.isRTL()?{x:o-n.x-t.getPageSize().width,y:Math.max(0,n.y-a)}:{x:Math.max(0,n.x-r),y:Math.max(0,n.y-a)}}),{disable:!0}),o=(n,i)=>{const{leftEnd:o,leftStart:r,topStart:a,topEnd:s}=e.getAbsolutePositionOf(i);return t.isRTL()?{x:o-n.x-t.getPageSize().width,y:a+n.y}:{x:r+n.x,y:a+n.y}},r=h.measurePerformance("getSpineItemFromOffset",10,(t=>e.getSpineItemAtPosition(t)),{disable:!0});return{getSpinePositionFromSpineItemPosition:o,getSpinePositionFromSpineItem:e=>o({x:0,y:0},e),getSpinePositionFromSpineItemAnchor:(e,t)=>{const i=n.getSpineItemOffsetFromAnchor(e,t);return o({x:i,y:0},t)},getSpineItemPositionFromSpinePosition:i,getSpineItemFromPosition:r,getSpineItemFromIframe:t=>e.getAll().find((e=>e.spineItemFrame.getFrameElement()===t)),getSpineItemPageIndexFromNode:(t,i,o)=>{if("number"==typeof o){const r=e.get(o);return r?n.getSpineItemPageIndexFromNode(t,i||0,r):void 0}return n.getSpineItemPageIndexFromNode(t,i||0,o)},getSpineItemsFromReadingOrderPosition:n=>{var i;const o=r(n)||e.getFocusedSpineItem(),a=e.getSpineItemIndex(o);if(void 0===a)return;let s=n;t.shouldDisplaySpread()&&(s={x:n.x+t.getPageSize().width,y:n.y});const l=null!==(i=e.getSpineItemIndex(r(s)||e.getFocusedSpineItem()))&&void 0!==i?i:a,[c=a,d=a]=[a,l].sort(((e,t)=>e-t));return{begin:a,beginPosition:n,end:l,endPosition:s,left:c,right:d}}}})({context:b,spineItemManager:y,spineItemLocator:P}),$=(({spineItemManager:e,spineItemLocator:t})=>{const n=e=>`|[prose~anchor~${encodeURIComponent(e.item.id)}]`,i=h.measurePerformance("getCfi",10,((e,i)=>{var r,a,s;const l=t.getFirstNodeOrRangeAtPage(e,i),c=null===(s=null===(a=null===(r=i.spineItemFrame.getManipulableFrame())||void 0===r?void 0:r.frame)||void 0===a?void 0:a.contentWindow)||void 0===s?void 0:s.document,d=n(i),g=`|[prose~offset~${(null==l?void 0:l.offset)||0}]`;return l&&c?ue.generate(l.node,0,`${d}${g}`):o(i)})),o=e=>`epubcfi(/0${n(e)}) `,r=t=>{const{itemId:n}=pe(t);if(n){const{itemId:n}=pe(t);return(n?e.get(n):void 0)||e.get(0)}};return{getSpineItemFromCfi:r,getCfiMetaInformation:t=>{const n=r(t);if(n)return{spineItemIndex:e.getSpineItemIndex(n)}},getCfi:i,getRootCfi:o,resolveCfi:t=>{var n,i,o;if(!t)return;const a=r(t),s=e.getSpineItemIndex(a)||0;if(!a)return;const{cleanedCfi:l,offset:c}=pe(t),d=new ue(l,{}),g=null===(o=null===(i=null===(n=a.spineItemFrame.getManipulableFrame())||void 0===n?void 0:n.frame)||void 0===i?void 0:i.contentWindow)||void 0===o?void 0:o.document;if(g)try{const{node:e,offset:t}=d.resolve(g,{});return{node:e,offset:null!=c?c:t,spineItemIndex:s}}catch(e){return h.error(e),{spineItemIndex:s}}return{spineItemIndex:s}},generateFromRange:({startNode:e,start:t,end:n,endNode:i},o)=>({start:ue.generate(e,t,`|[prose~anchor~${encodeURIComponent(o.id)}]`),end:ue.generate(i,n,`|[prose~anchor~${encodeURIComponent(o.id)}]`)})}})({spineItemManager:y,context:b,spineItemLocator:P}),O=u.asObservable(),E=ve({ownerDocument:w.ownerDocument,iframeEventBridgeElement:S,context:b,pagination:x,spineItemManager:y,hooks$:g,navigation$:O,spineLocator:I,spineItemLocator:P,cfiLocator:$,navigationAdjusted$:p.asObservable(),viewportState$:f.asObservable(),currentNavigationPosition$:m.asObservable()}),j=Ie({context:b,pagination:x,spineItemManager:y,parentElement:w,cfiLocator:$,spineLocator:I,hooks$:g,spine:E});i.appendChild(w),w.appendChild(S),j.$.state$.subscribe(f),j.$.navigation$.subscribe(u),j.$.navigationAdjustedAfterLayout$.subscribe(p),j.$.currentNavigationPosition$.subscribe(m);const C=()=>{const e={width:i.offsetWidth,height:i.offsetHeight},t=e.width,n=t;w.style.setProperty("overflow","hidden"),w.style.height=e.height-0-0+"px",w.style.width=n-0+"px";const o=w.getBoundingClientRect();b.setVisibleAreaRect(o.x,o.y,n,e.height),j.layout()};E.$.$.pipe((0,t.tap)((e=>{"onSelectionChange"===e.type&&d.next(e.data)})),(0,t.takeUntil)(l)).subscribe(),j.$.navigationAdjustedAfterLayout$.pipe((0,e.switchMap)((({adjustedSpinePosition:e})=>E.adjustPagination(e).pipe((0,t.takeUntil)(O)))),(0,t.takeUntil)(b.$.destroy$)).subscribe(),(0,e.merge)(b.$.load$,b.$.settings$,b.$.hasVerticalWriting$).pipe((0,t.mapTo)(void 0),(0,t.withLatestFrom)(b.$.hasVerticalWriting$),(0,t.map)((([,e])=>{const t=b.getSettings(),n=b.getManifest();return{hasVerticalWriting:e,renditionFlow:null==n?void 0:n.renditionFlow,renditionLayout:null==n?void 0:n.renditionLayout,computedPageTurnMode:t.computedPageTurnMode}})),(0,t.distinctUntilChanged)(c),(0,t.map)((({hasVerticalWriting:e,renditionFlow:t,renditionLayout:n,computedPageTurnMode:i})=>Object.assign(Object.assign({},a.value),{supportedPageTurnMode:"scrolled-continuous"===t?["scrollable"]:b.areAllItemsPrePaginated()?["controlled","scrollable"]:["controlled"],supportedPageTurnAnimation:"scrolled-continuous"===t||"scrollable"===i?["none"]:e?["fade","none"]:["fade","none","slide"],supportedPageTurnDirection:"scrollable"===i?["vertical"]:"reflowable"===n?["horizontal"]:["horizontal","vertical"]}))),(0,t.takeUntil)(l)).subscribe(a);return{context:b,registerHook:(e,t)=>{g.next([...g.getValue(),{name:e,fn:t}])},spine:E,viewportNavigator:j,manipulateSpineItems:E.manipulateSpineItems,manipulateSpineItem:E.manipulateSpineItem,manipulateContainer:e=>{e(w)},moveTo:j.moveTo,turnLeft:j.turnLeft,turnRight:j.turnRight,goToPageOfCurrentChapter:j.goToPageOfCurrentChapter,goToPage:j.goToPage,goToUrl:j.goToUrl,goToCfi:j.goToCfi,goToSpineItem:j.goToSpineItem,getFocusedSpineItemIndex:y.getFocusedSpineItemIndex,getSpineItem:y.get,getSpineItems:y.getAll,getAbsolutePositionOf:y.getAbsolutePositionOf,getSelection:E.getSelection,isSelecting:E.isSelecting,normalizeEventForViewport:E.normalizeEventForViewport,getCfiMetaInformation:E.cfiLocator.getCfiMetaInformation,resolveCfi:E.cfiLocator.resolveCfi,generateCfi:E.cfiLocator.generateFromRange,locator:E.locator,getCurrentNavigationPosition:j.getCurrentNavigationPosition,getCurrentViewportPosition:j.getCurrentViewportPosition,layout:C,load:(e,t={})=>{b.getManifest()?h.warn("loading a new book is not supported yet"):(h.log("load",{manifest:e,loadOptions:t}),b.load(e,t),C(),t.cfi?j.goToCfi(t.cfi,{animate:!1}):j.goToSpineItem(0,{animate:!1}),s.next())},destroy:()=>{g.next([]),g.complete(),x.destroy(),b.destroy(),j.destroy(),E.destroy(),w.remove(),S.remove(),s.complete(),a.complete(),d.complete(),l.next(),l.complete()},setSettings:b.setSettings,$:{pagination$:x.$.info$,settings$:b.$.settings$,state$:a.asObservable(),ready$:s.asObservable(),selection$:d.asObservable(),viewportState$:j.$.state$,layout$:E.$.layout$,itemsCreated$:E.$.itemsCreated$,itemsBeforeDestroy$:E.$.itemsBeforeDestroy$,itemIsReady$:y.$.itemIsReady$,destroy$:l},__debug:{pagination:x,context:b,spineItemManager:y}}},je=e=>{const t=e.ownerDocument.createElement("div");return t.style.cssText="\n background-color: white;\n position: relative;\n ",t.className="prose-reader-reader",t},Te=e=>{const t=e.ownerDocument.createElement("div");return t.id="proseReaderIframeEventBridgeElement",t.style.cssText="\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n z-index: -1;\n ",t};var Ce=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const Me=e=>Ce(void 0,void 0,void 0,(function*(){return new Promise(((t,n)=>{const i=window.indexedDB.open(e);i.onerror=function(e){n(e)},i.onsuccess=function(){var e;t((e=i.result,{put:(t,n)=>new Promise(((i,o)=>{const r=e.transaction(["store"],"readwrite");r.onerror=function(e){o(e)},r.oncomplete=function(){i()};const a=r.objectStore("store").put(n,t);a.onsuccess=()=>{i()},a.onerror=e=>{o(e)}})),keys:()=>new Promise(((t,n)=>{const i=e.transaction(["store"],"readonly");i.onerror=function(e){n(e)};const o=i.objectStore("store").openKeyCursor(),r=[];o.onsuccess=()=>{const e=o.result;e?(r.push(e.key),e.continue()):t(r)},o.onerror=()=>{n(o.error)}})),get:t=>new Promise(((n,i)=>{const o=e.transaction(["store"],"readwrite"),r=o.objectStore("store").get(t);r.onsuccess=()=>{let e=r.result;void 0===e&&(e=null),n(e)},o.onerror=function(){i(r.error)}})),remove:t=>new Promise(((n,i)=>{const o=e.transaction(["store"],"readwrite"),r=o.objectStore("store").delete(t);o.onerror=function(){i(r.error)},o.oncomplete=function(){n()},o.onabort=function(){var e;const t=r.error?r.error:null===(e=r.transaction)||void 0===e?void 0:e.error;i(t)}}))}))},i.onupgradeneeded=()=>{i.result.createObjectStore("store")}}))}));var Fe=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};var Le=function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};const Re=navigator.userAgent.indexOf("")>-1&&navigator.userAgent.indexOf("Chrome")<=-1;var Ne=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const ke=(e,t)=>{const n=e.ownerDocument.createElement("div");return n.classList.add("prose-reader-enhancer-loading-container"),n.style.cssText=`\n height: 100%;\n width: 100%;\n max-width: ${t.getVisibleAreaRect().width}px;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: absolute;\n left: 0;\n top: 0;\n color: rgb(202, 202, 202);\n -background-color: white;\n `,n},Ae=({container:e,item:t})=>{const n=e.ownerDocument.createElement("div");n.innerText="prose",n.style.cssText="\n font-size: 4em;\n ";const i=e.ownerDocument.createElement("div");return i.innerText=`loading ${t.id}`,i.style.cssText="\n font-size: 1.2em;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n max-width: 300px;\n width: 80%;\n ",e.appendChild(n),e.appendChild(i),e};var De=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]])}return n};const Ue=e=>{const{context:t,manipulateContainer:n,manipulateSpineItems:i,getFocusedSpineItemIndex:o,getCurrentNavigationPosition:r,getSpineItem:a,locator:s,getAbsolutePositionOf:l,generateCfi:c,resolveCfi:d,getCfiMetaInformation:g,spine:u}=e;return De(e,["context","manipulateContainer","manipulateSpineItems","getFocusedSpineItemIndex","getCurrentNavigationPosition","getSpineItem","locator","getAbsolutePositionOf","generateCfi","resolveCfi","getCfiMetaInformation","spine"])},Be=O((e=>t=>{const n=e(t),i=(e,t,n)=>e+t*n,o=(e,t,i)=>{const{height:o,width:r}=i.getElementDimensions(),{topStart:a,leftStart:s}=n.getAbsolutePositionOf(i);return"vertical"===e.getSettings().computedPageTurnDirection?Math.max(0,Math.min(1,(t.y-a+e.getVisibleAreaRect().height)/o)):Math.max(0,Math.min(1,(t.x-s+e.getVisibleAreaRect().width)/r))};return Object.assign(Object.assign({},n),{progression:{getPercentageEstimate:(e,t,n,r,a,s)=>{var l,c,d,g,u,p;const m="pre-paginated"===(null===(l=e.getManifest())||void 0===l?void 0:l.renditionLayout),f=(null===(c=e.getManifest())||void 0===c?void 0:c.spineItems.length)||0,h=(null===(d=e.getManifest())||void 0===d?void 0:d.spineItems.slice(0,t).reduce(((e,t)=>e+t.progressionWeight),0))||0,v=(null===(u=null===(g=e.getManifest())||void 0===g?void 0:g.spineItems[t])||void 0===u?void 0:u.progressionWeight)||0;let b=(r+1)*(v/n);m||!s.isReflowable||s.isReady()||(b=0);let y=h+b;return"scrolled-continuous"===(null===(p=e.getManifest())||void 0===p?void 0:p.renditionFlow)&&(b=s.isReady()?o(e,a,s):0,y=i(h,v,b)),t===f-1&&r===n-1&&y>.99?1:y},getScrollPercentageWithinItem:o}})}),(n=>i=>{const o=n(i),r={},a=()=>o.getSpineItems().map((e=>(e=>{const t=e.spineItemFrame.getWritingMode(),{width:n,height:i}=e.getElementDimensions(),r=o.context.getSettings();return"vertical"===r.pageTurnDirection&&"scrollable"===r.pageTurnMode?1:"vertical-rl"===t?y(i,o.context.getPageSize().height):y(n,o.context.getPageSize().width)})(e)),0);o.$.itemsCreated$.pipe((0,t.tap)((e=>e.forEach((({item:e})=>{r[e.id]=(e=>{const t=o.context.getManifest();return e&&t&&S(t,e)})(e)})))),(0,t.takeUntil)(o.$.destroy$)).subscribe();const s=o.$.pagination$.pipe((0,t.map)((e=>{var t;const n=o.context,i=void 0!==e.beginSpineItemIndex?o.getSpineItem(e.beginSpineItemIndex):void 0,a=void 0!==e.endSpineItemIndex?o.getSpineItem(e.endSpineItemIndex):void 0;return{beginPageIndexInChapter:e.beginPageIndex,beginNumberOfPagesInChapter:e.beginNumberOfPages,beginChapterInfo:i?r[i.item.id]:void 0,beginSpineItemIndex:e.beginSpineItemIndex,beginCfi:e.beginCfi,beginSpineItemReadingDirection:null==i?void 0:i.getReadingDirection(),endChapterInfo:a?r[a.item.id]:void 0,endPageIndexInChapter:e.endPageIndex,endNumberOfPagesInChapter:e.endNumberOfPages,endSpineItemIndex:e.endSpineItemIndex,endSpineItemReadingDirection:null==a?void 0:a.getReadingDirection(),endCfi:e.endCfi,percentageEstimateOfBook:a?o.progression.getPercentageEstimate(n,null!==(t=e.endSpineItemIndex)&&void 0!==t?t:0,e.endNumberOfPages,e.endPageIndex||0,o.getCurrentViewportPosition(),a):0,isUsingSpread:n.shouldDisplaySpread()}})),(0,t.distinctUntilChanged)(c)),l=o.$.layout$.pipe((0,t.debounceTime)(10,e.animationFrameScheduler),(0,t.withLatestFrom)(o.$.pagination$),(0,t.map)((()=>{const e=a();return{numberOfPagesPerItems:e,numberOfTotalPages:e.reduce(((e,t)=>e+t),0)}})),(0,t.distinctUntilChanged)(c),(0,t.startWith)({numberOfPagesPerItems:[],numberOfTotalPages:0})),d=(0,e.combineLatest)([s,l]).pipe((0,t.map)((([e,t])=>{var n,i;return Object.assign(Object.assign(Object.assign({},e),t),{beginAbsolutePageIndex:t.numberOfPagesPerItems.slice(0,e.beginSpineItemIndex).reduce(((e,t)=>e+t),null!==(n=e.beginPageIndexInChapter)&&void 0!==n?n:0),endAbsolutePageIndex:t.numberOfPagesPerItems.slice(0,e.endSpineItemIndex).reduce(((e,t)=>e+t),null!==(i=e.endPageIndexInChapter)&&void 0!==i?i:0)})})),(0,t.tap)((e=>{w.log("pagination",e)})),(0,t.shareReplay)(1),(0,t.takeUntil)(o.$.destroy$));return Object.assign(Object.assign({},o),{$:Object.assign(Object.assign({},o.$),{pagination$:d})})}),(e=>t=>{const n=e(t),i=e=>{"ArrowRight"===e.key&&n.turnRight(),"ArrowLeft"===e.key&&n.turnLeft()};document.addEventListener("keyup",i),n.registerHook("item.onLoad",(({frame:e})=>{var t;return null===(t=e.contentDocument)||void 0===t||t.addEventListener("keyup",i),()=>{var t;null===(t=e.contentDocument)||void 0===t||t.removeEventListener("keyup",i)}}));return Object.assign(Object.assign({},n),{destroy:()=>{document.removeEventListener("keyup",i),n.destroy()}})}),(n=>i=>{var o;const{theme:r}=i,a=n(i),s=new e.BehaviorSubject(null!==(o=i.theme)&&void 0!==o?o:"bright"),l=()=>{const e=I.find((e=>e.name===s.value));return`\n body {\n ${void 0!==e?`background-color: ${e.backgroundColor} !important;`:""}\n }\n ${(null==e?void 0:e.foregroundColor)?`\n body * {\n \n color: ${e.foregroundColor};\n }\n `:""}\n `},c=({container:e})=>{const t=I.find((e=>e.name===s.value));return t&&e.style.setProperty("background-color",t.backgroundColor),()=>{}};return a.registerHook("item.onLoad",(({removeStyle:e,addStyle:t})=>{e("prose-reader-theme"),t("prose-reader-theme",l())})),a.$.itemsCreated$.pipe((0,t.tap)((e=>e.map((({element:e})=>c({container:e}))))),(0,t.takeUntil)(a.$.destroy$)).subscribe(),s.pipe((0,t.tap)((()=>{a.manipulateSpineItems((({removeStyle:e,addStyle:t,container:n})=>(e("prose-reader-theme"),t("prose-reader-theme",l()),c({container:n}),!1)))})),(0,t.takeUntil)(a.$.destroy$)).subscribe(),Object.assign(Object.assign({},a),{theme:{set:e=>{e!==s.value&&s.next(e)},get:()=>s.value,$:{theme$:s.asObservable()}}})}),(e=>t=>{const n=e(t),i=()=>{var e,t;const i=n.getFocusedSpineItemIndex()||0,{end:o=i}=n.locator.getSpineItemsFromReadingOrderPosition(n.getCurrentNavigationPosition())||{},r=o+1;r<(null!==(t=null===(e=n.context.getManifest())||void 0===e?void 0:e.spineItems.length)&&void 0!==t?t:0)&&n.goToSpineItem(r)},o=()=>{const e=n.getFocusedSpineItemIndex()||0,{begin:t=e}=n.locator.getSpineItemsFromReadingOrderPosition(n.getCurrentNavigationPosition())||{},i=t-1;i>=0&&n.goToSpineItem(i)};return Object.assign(Object.assign({},n),{goToLeftSpineItem:()=>n.context.isRTL()?i():o(),goToRightSpineItem:()=>n.context.isRTL()?o():i()})}),(e=>t=>{const n=e(t);return n.manipulateContainer((e=>(e.addEventListener("scroll",(()=>{"controlled"===n.context.getSettings().computedPageTurnMode&&e.scrollTo(0,0)})),false))),n.registerHook("item.onLoad",(({frame:e})=>{var t;null===(t=e.contentDocument)||void 0===t||t.body.setAttribute("tabindex","-1")})),n}),(e=>t=>{const n=e(t),i=new IntersectionObserver((e=>{e.forEach((e=>{var t;const n=e.target,i=Array.from((null===(t=n.contentDocument)||void 0===t?void 0:t.body.getElementsByTagName("audio"))||[]);e.isIntersecting?i.forEach((e=>{e.hasAttribute("autoplay")&&e.paused&&e.readyState>=2&&e.play().catch(console.error)})):i.forEach((e=>{e.pause(),e.currentTime=0}))}))}),{threshold:.01}),o=new IntersectionObserver((e=>{e.forEach((e=>{if("video"===e.target.tagName){const t=e.target;e.isIntersecting?t.hasAttribute("autoplay")&&t.paused&&t.readyState>=2&&t.play().catch(console.error):(t.pause(),t.currentTime=0)}}))}),{threshold:.5});n.registerHook("item.onLoad",(({frame:e})=>{var t;i.observe(e);const n=null===(t=e.contentDocument)||void 0===t?void 0:t.body.getElementsByTagName("video"),r=Array.from(n||[]).map((e=>(o.observe(e),()=>o.unobserve(e))));return()=>{i.unobserve(e),r.forEach((e=>e()))}}));return Object.assign(Object.assign({},n),{destroy:()=>{i.disconnect(),o.disconnect(),n.destroy()}})}),(t=>n=>{const i=t(n),o=(t=>{const n=new e.BehaviorSubject(!1);let i,o={x:0,y:0},r={x:0,y:0},a=1,s=1;const l=()=>{a=s},c=e=>{const t=null==i?void 0:i.querySelector("img"),n=Math.ceil(100*(e<1?a-(1-e):a+(e-1)))/100,r=Math.max(n,1);n<1&&(o={x:0,y:0}),null==t||t.style.setProperty("transform",`translate3d(${o.x}px, ${o.y}px, 0px) scale3d(${r}, ${r}, 1)`),s=r};return{enter:e=>{n.next(!0),o={x:0,y:0},a=1,s=1,t.manipulateContainer((t=>{i=t.ownerDocument.createElement("div"),i.style.cssText="\n top: 0;\n left: 0;\n display: block;\n position: absolute;\n z-index: 1;\n background: black;\n width: 100%;\n height: 100%;\n ";const n=e.cloneNode();return n.src=e.src,n.style.setProperty("height","100%"),n.style.setProperty("width","100%"),n.style.setProperty("object-fit","contain"),n.style.setProperty("pointer-events","none"),i.appendChild(n),t.appendChild(i),!1})),c(1.2),l()},exit:()=>{s=1,t.manipulateContainer((()=>(null==i||i.remove(),i=void 0,!1))),n.next(!1)},move:(e,{isFirst:t,isLast:n})=>{const s=null==i?void 0:i.querySelector("img");if(t&&(r={x:0,y:0}),e){const t=e.x-((null==r?void 0:r.x)||0),n=e.y-((null==r?void 0:r.y)||0);o={x:o.x+t,y:o.y+n},null==s||s.style.setProperty("transform",`translate3d(${o.x}px, ${o.y}px, 0px) scale3d(${a}, ${a}, 1)`),r=e}n&&(r=void 0)},scale:c,setCurrentScaleAsBase:l,getScaleValue:()=>s,isZooming:()=>n.value,destroy:()=>{null==i||i.remove(),i=void 0,n.complete()},isZooming$:n.asObservable()}})(i),r=(t=>{const n=new e.BehaviorSubject(!1);let i=1,o=1;const r=()=>{s(0-i),o=1,i=1},a=()=>{i=o},s=e=>{const n=Math.ceil(100*(e<1?i-(1-e):i+(e-1)))/100,r=Math.max(n,1),a=t.spine.element.getBoundingClientRect().width/t.spine.element.offsetWidth,s=t.viewportNavigator.element.scrollTop;t.spine.element.style.transform=`scale(${r})`,t.viewportNavigator.element.scrollLeft=E({newScale:r,oldScale:a,pageSize:t.viewportNavigator.element.clientWidth,screenSize:t.spine.element.offsetWidth,scrollOffset:t.viewportNavigator.element.scrollLeft}),t.viewportNavigator.element.scrollTop=E({newScale:r,oldScale:a,pageSize:t.viewportNavigator.element.clientHeight,screenSize:t.spine.element.offsetHeight,scrollOffset:s}),o=r};return{enter:()=>{r(),t.spine.element.style.transformOrigin="0 0",n.next(!0),s(1),a()},exit:()=>{r(),n.next(!1)},move:(e,t)=>{},scale:s,setCurrentScaleAsBase:a,getScaleValue:()=>o,isZooming:()=>n.value,destroy:()=>{n.complete()},isZooming$:n.asObservable()}})(i),a=new e.BehaviorSubject(void 0),s=()=>"scrollable"===i.context.getSettings().computedPageTurnMode;return Object.assign(Object.assign({},i),{destroy:()=>{o.destroy(),r.destroy(),a.complete(),i.destroy()},zoom:{enter:e=>{var t;if(null===(t=null==a?void 0:a.value)||void 0===t||t.exit(),s())return r.enter(),void(null==a||a.next(r));e?(o.enter(e),null==a||a.next(o)):h.warn("You should specify an element to zoom at")},exit:()=>{var e;null===(e=a.value)||void 0===e||e.exit()},move:(e,t)=>{var n;null===(n=a.value)||void 0===n||n.move(e,t)},isZooming:()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.isZooming())||!1},getScaleValue:()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.getScaleValue())||1},scale:e=>{var t;(null===(t=a.value)||void 0===t?void 0:t.isZooming())?a.value.scale(e):h.warn("You need to start zoom before being able to call this fn")},isUsingScrollableZoom:s,setCurrentScaleAsBase:()=>{var e;null===(e=a.value)||void 0===e||e.setCurrentScaleAsBase()},$:{isZooming$:a.pipe((0,e.switchMap)((t=>(null==t?void 0:t.isZooming$)||(0,e.of)(!1))))}}})}),(n=>i=>{var{pageHorizontalMargin:o=24,pageVerticalMargin:r=24}=i,s=g(i,["pageHorizontalMargin","pageVerticalMargin"]);const l=n(s),d=new e.BehaviorSubject({pageHorizontalMargin:o,pageVerticalMargin:r});let u;l.registerHook("onViewportOffsetAdjust",(()=>{let e=!1;l.manipulateSpineItems((({frame:t})=>(!e&&t&&(t.getBoundingClientRect().left,e=!0),false)))})),l.registerHook("item.onLayoutBeforeMeasurment",(({frame:e,minimumWidth:t,item:n,isImageType:i})=>{var o,r;const{pageHorizontalMargin:a=0,pageVerticalMargin:s=0}=d.value,c=l.context.getPageSize();if("reflowable"===n.renditionLayout&&e.getIsReady()&&!i()&&!e.getViewportDimensions()){let n=c.width-2*a;const i=c.height-2*s;let l=c.width-2*a,d=2*a;e.isUsingVerticalWriting()&&(l=t-2*a,n=i,d=2*s),null===(o=e.getManipulableFrame())||void 0===o||o.removeStyle("prose-layout-enhancer-css"),null===(r=e.getManipulableFrame())||void 0===r||r.addStyle("prose-layout-enhancer-css",`\n body {\n width: ${l}px !important;\n margin: ${s}px ${a}px !important;\n column-gap: ${d}px !important;\n column-width: ${n}px !important;\n height: ${i}px !important;\n }\n img, video, audio, object, svg {\n max-width: ${n}px !important;\n max-height: ${i}px !important;\n }\n table {\n max-width: ${n}px !important;\n }\n td {\n max-width: ${n}px;\n }\n `)}})),"container"===s.layoutAutoResize&&(u=new ResizeObserver((()=>{null==l||l.layout()})),u.observe(s.containerElement));const p=(n=>{let i;n.manipulateContainer((e=>(i=e.ownerDocument.createElement("div"),i.style.cssText="\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n visibility: hidden;\n ",e.appendChild(i),!1)));const o=n=>(0,e.scheduled)(n,e.animationFrameScheduler).pipe((0,t.tap)((()=>{null==i||i.style.setProperty("visibility","hidden")}))),r=n.$.viewportState$.pipe((0,t.filter)((e=>"free"===e))),a=n.$.viewportState$.pipe((0,t.filter)((e=>"busy"===e))).pipe((0,t.tap)((()=>{null==i||i.style.setProperty("visibility","visible")}))),s=o(r).pipe((0,t.take)(1));return n.context.$.settings$.pipe((0,t.map)((()=>n.context.getSettings().computedPageTurnMode)),(0,t.distinctUntilChanged)()).pipe((0,t.switchMap)((n=>"controlled"===n?a.pipe((0,t.switchMap)((()=>s))):o((0,e.of)(void 0)))),(0,t.takeUntil)(n.$.destroy$))})(l);return p.subscribe(),d.pipe(a(["pageHorizontalMargin","pageVerticalMargin"]),(0,t.distinctUntilChanged)(c),(0,t.skip)(1),(0,t.tap)((()=>{l.layout()})),(0,t.takeUntil)(l.$.destroy$)).subscribe(),Object.assign(Object.assign({},l),{destroy:()=>{l.destroy(),null==u||u.disconnect()},setSettings:e=>{var{pageVerticalMargin:t,pageHorizontalMargin:n}=e,i=g(e,["pageVerticalMargin","pageHorizontalMargin"]);void 0===n&&void 0===t||d.next({pageHorizontalMargin:null!=n?n:d.value.pageHorizontalMargin,pageVerticalMargin:null!=t?t:d.value.pageVerticalMargin}),l.setSettings(i)},$:Object.assign(Object.assign({},l.$),{settings$:(0,e.combineLatest)([l.$.settings$,d.asObservable()]).pipe((0,t.map)((([e,t])=>Object.assign(Object.assign({},e),t))))})})}),(e=>t=>{const n=e(t);return Object.assign(Object.assign({},n),{utils:{isOrIsWithinValidLink:e=>{if("object"==typeof(t=e)&&t&&"nodeType"in t&&(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE&&"innerText"in t){const t="a"===e.nodeName?e:e.closest("a");if(null==t?void 0:t.getAttribute("href"))return!0}var t;return!1}}})}),(n=>i=>{const o=n(i),r=(n=>{let i=Date.now().toString();const o=new e.Subject,r=e=>{var t,i;if("string"==typeof e||"object"==typeof e){const i="object"==typeof e?e.id:void 0;return null===(t=n.getManifest())||void 0===t?void 0:t.spineItems.find((e=>e.id===i))}return null===(i=n.getManifest())||void 0===i?void 0:i.spineItems[e]},a=(e,t)=>{o.next({id:e,data:t})};o.asObservable().pipe((0,t.mergeMap)((({id:n,data:o})=>{const a=r(n);return a?(0,e.from)((0,e.forkJoin)([Me("prose-reader"),(0,e.from)(o.blob())])).pipe((0,t.switchMap)((([t,n])=>(0,e.from)(t.put(`${i}_${a.id}`,n)))),(0,t.catchError)((t=>(h.error(t),e.EMPTY)))):e.EMPTY})),(0,t.takeUntil)(n.$.destroy$)).subscribe();const s=n.$.load$.pipe((0,t.tap)((()=>{i=Date.now().toString()})));return(0,e.merge)(s).pipe((0,t.switchMap)((()=>(h.log("Cleanup up old cache..."),(0,e.from)(Me("prose-reader")).pipe((0,t.switchMap)((n=>(0,e.from)(n.keys()).pipe((0,t.map)((e=>e.filter((e=>!e.toString().startsWith(i))))),(0,t.switchMap)((t=>{const i=t.map((e=>n.remove(e)));return(0,e.from)(Promise.all(i))}))))),(0,t.catchError)((t=>(h.error(t),e.EMPTY))))))),(0,t.takeUntil)(n.$.destroy$)).subscribe(),{get:(e,t)=>Fe(void 0,void 0,void 0,(function*(){const n=r(e);if(!n)return new Response("Item not found",{status:404});const o=yield Me("prose-reader"),s=yield o.get(`${i}_${n.id}`);if(s)return new Response(s,{status:200});const l=t&&(yield t(n))||(yield fetch(n.href));return a(n,l.clone()),l})),destroy:()=>{o.complete()}}})(o.context);o.registerHook("item.onGetResource",(e=>t=>Le(void 0,void 0,void 0,(function*(){return r.get(t,e)}))));return Object.assign(Object.assign({},o),{destroy:()=>{r.destroy(),o.destroy()},load:(e,t)=>{o.load(e,Object.assign({},t))}})}),(e=>t=>{const n=e(t),i=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?e.target.removeAttribute("tab-index"):e.target.setAttribute("tab-index","-1")}))}),{});return n.registerHook("item.onLoad",(({addStyle:e,frame:t})=>{var n;e("prose-reader-accessibility","\n :focus-visible {\n \n outline: -webkit-focus-ring-color auto 1px;\n }\n ");const o=null===(n=t.contentDocument)||void 0===n?void 0:n.body.querySelectorAll("a");return null==o||o.forEach((e=>{i.observe(e)})),()=>{null==o||o.forEach((e=>{i.unobserve(e)}))}})),Object.assign({},n)}),(t=>n=>{const i=t(n),o=new e.Subject;return i.registerHook("item.onLoad",(({frame:e})=>{e.contentDocument&&Array.from(e.contentDocument.querySelectorAll("a")).forEach((e=>e.addEventListener("click",(t=>{t.target&&"style"in t.target&&"ELEMENT_NODE"in t.target&&(h.warn("prevented click on",e,t),t.preventDefault(),(e=>{var t;if(!e.href)return;const n=new URL(e.href),o=`${n.origin}${n.pathname}`;(null===(t=i.context.getManifest())||void 0===t?void 0:t.spineItems.some((e=>e.href===o)))&&i.goToUrl(n)})(e),o.next({event:"linkClicked",data:e}))}))))})),Object.assign(Object.assign({},i),{$:Object.assign(Object.assign({},i.$),{links$:o.asObservable()})})}),(n=>i=>{var{fontScale:a=1,lineHeight:s="publisher",fontWeight:l="publisher",fontJustification:c="publisher"}=i,d=o(i,["fontScale","lineHeight","fontWeight","fontJustification"]);const g=new e.BehaviorSubject({fontScale:a,lineHeight:s,fontWeight:l,fontJustification:c}),u=n(d),p=()=>`\n \n body {\n ${1!==g.value.fontScale?`font-size: ${g.value.fontScale}em !important;`:""}\n ${"publisher"!==g.value.lineHeight?`line-height: ${g.value.lineHeight} !important;`:""}\n ${"publisher"!==g.value.fontWeight?`font-weight: ${g.value.fontWeight} !important;`:""}\n ${"publisher"!==g.value.fontJustification?`text-align: ${g.value.fontJustification} !important;`:""}\n }\n `;u.registerHook("item.onLoad",(({removeStyle:e,addStyle:t,item:n})=>{"pre-paginated"!==n.renditionLayout&&(e("prose-reader-fonts"),t("prose-reader-fonts",p()))}));return g.asObservable().pipe((n=>n.pipe((0,t.pairwise)(),(0,e.map)((([e,t])=>t.fontScale!==e.fontScale||t.lineHeight!==e.lineHeight)))),(0,t.tap)((e=>{u.manipulateSpineItems((({removeStyle:t,addStyle:n,item:i})=>("pre-paginated"!==i.renditionLayout&&(t("prose-reader-fonts"),n("prose-reader-fonts",p())),e)))})),(0,e.takeUntil)(u.$.destroy$)).subscribe(),Object.assign(Object.assign({},u),{setSettings:e=>{const{fontJustification:t=g.value.fontJustification,fontScale:n=g.value.fontScale,fontWeight:i=g.value.fontWeight,lineHeight:a=g.value.lineHeight}=e,s=o(e,["fontJustification","fontScale","fontWeight","lineHeight"]);r(e,["fontJustification","fontScale","fontWeight","lineHeight"])&&g.next({fontJustification:t,fontScale:n,fontWeight:i,lineHeight:a}),u.setSettings(s)},$:Object.assign(Object.assign({},u.$),{settings$:(0,e.combineLatest)([u.$.settings$,g]).pipe((0,e.map)((([e,t])=>Object.assign(Object.assign({},e),t))))})})}),(e=>t=>{const n=[{name:"viewportNavigator.onBeforeContainerCreated",fn:e=>(e.style.cssText=`\n ${e.style.cssText}\n -webkit-transform-style: preserve-3d;\n `,e)},{name:"item.onBeforeContainerCreated",fn:e=>(e.style.cssText=`\n ${e.style.cssText}\n -webkit-transform-style: preserve-3d;\n -webkit-backface-visibility: hidden;\n `,e)}];return e(Object.assign(Object.assign({},t),Re&&{hooks:[...t.hooks||[],...n]}))}),(n=>i=>{var{loadingElementCreate:o=Ae}=i,r=Ne(i,["loadingElementCreate"]);const a=n(r),s=a.$.itemsCreated$.pipe((0,t.switchMap)((t=>(t=>(0,e.of)(t.reduce(((e,{item:t,element:n})=>{const i=o({container:ke(n,a.context),item:t});return n.appendChild(i),Object.assign(Object.assign({},e),{[t.id]:i})}),{})))(t))),(0,t.shareReplay)(1),(0,t.takeUntil)(a.context.$.destroy$));return s.pipe((0,t.switchMap)((n=>(0,e.merge)((0,e.of)(n),(e=>a.$.itemsBeforeDestroy$.pipe((0,t.map)((()=>(Object.values(e).forEach((e=>e.remove())),{})))))(n)))),(0,t.switchMap)((n=>(0,e.merge)((n=>(0,e.combineLatest)([a.$.layout$,a.theme.$.theme$]).pipe((0,t.map)((([,e])=>({width:a.context.getVisibleAreaRect().width,theme:e}))),(0,t.distinctUntilChanged)(c),(0,t.tap)((({width:e,theme:t})=>{Object.values(n).forEach((n=>{n.style.setProperty("max-width",`${e}px`),n.style.setProperty("color","sepia"===t?"#939393":"rgb(202, 202, 202)")}))}))))(n),(e=>a.$.itemIsReady$.pipe((0,t.tap)((({item:t,isReady:n})=>{var i;null===(i=e[t.id])||void 0===i||i.style.setProperty("visibility",n?"hidden":"visible")}))))(n)))),(0,t.takeUntil)(a.$.destroy$)).subscribe(),Object.assign(Object.assign({},a),{loading:{$:{items$:s}}})}));function ze(e,t){if(!t){const t=Be(Ee);return Ue(t(e))}const n=O(Be,t)(Ee);return Ue(n(e))}})();var o=exports;for(var r in i)o[r]=i[r];i.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
package/dist/reader.d.ts CHANGED
@@ -6,6 +6,6 @@ declare type ContextSettings = Parameters<Context[`setSettings`]>[0];
6
6
  export declare type CreateReaderOptions = {
7
7
  hooks?: Hook[];
8
8
  containerElement: HTMLElement;
9
- } & Pick<ContextSettings, `forceSinglePageMode` | `pageTurnAnimation` | `pageTurnDirection` | `pageTurnMode` | `navigationSnapThreshold`>;
9
+ } & Pick<ContextSettings, `forceSinglePageMode` | `pageTurnAnimation` | `pageTurnDirection` | `pageTurnMode` | `navigationSnapThreshold` | `numberOfAdjacentSpineItemToPreLoad`>;
10
10
  export declare const createReader: ({ containerElement, hooks: initialHooks, ...settings }: CreateReaderOptions) => Reader;
11
11
  export { Reader };
@@ -6,6 +6,7 @@ export declare type PublicSettings = {
6
6
  pageTurnDirection: `vertical` | `horizontal`;
7
7
  pageTurnMode: `controlled` | `scrollable`;
8
8
  navigationSnapThreshold: number;
9
+ numberOfAdjacentSpineItemToPreLoad: number;
9
10
  };
10
11
  declare type InnerSettings = PublicSettings & {
11
12
  computedPageTurnMode: PublicSettings[`pageTurnMode`];
@@ -23,7 +23,7 @@ export declare const createNavigationResolver: ({ context, spineItemManager, cfi
23
23
  locator: ReturnType<typeof createLocationResolver>;
24
24
  }) => {
25
25
  getNavigationForCfi: (cfi: string) => ViewportNavigationEntry;
26
- getNavigationForPage: (pageIndex: number, spineItem?: SpineItem | undefined) => ViewportNavigationEntry;
26
+ getNavigationForPage: (pageIndex: number, spineItem?: SpineItem) => ViewportNavigationEntry;
27
27
  getNavigationForLastPage: (spineItem: SpineItem) => ViewportNavigationEntry;
28
28
  getNavigationForSpineIndexOrId: (indexOrId: number | string) => ViewportNavigationEntry;
29
29
  getNavigationForRightPage: (position: SpineItemPosition) => ViewportNavigationEntry;
@@ -11,8 +11,7 @@ declare type ContextSettings = Parameters<Context[`setSettings`]>[0];
11
11
  declare type ViewportNavigator = ReturnType<typeof createViewportNavigator>;
12
12
  export declare type LoadOptions = {
13
13
  cfi?: string;
14
- fetchResource?: ((item: Manifest[`spineItems`][number]) => Promise<Response>);
15
- numberOfAdjacentSpineItemToPreLoad?: number;
14
+ fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>;
16
15
  };
17
16
  export declare type Reader = {
18
17
  context: Context;
@@ -26,7 +26,6 @@ export declare type Spine = {
26
26
  index: number;
27
27
  }) => RequireLayout) => void;
28
28
  manipulateSpineItem: (id: string, cb: Parameters<SpineItem[`manipulateSpineItem`]>[0]) => void;
29
- layout: () => void;
30
29
  destroy: () => void;
31
30
  isSelecting: () => boolean | undefined;
32
31
  getSelection: () => Selection | undefined;
@@ -3,7 +3,7 @@ export declare type ViewportPosition = {
3
3
  x: number;
4
4
  y: number;
5
5
  };
6
- export { LoadOptions, Reader } from './Reader';
6
+ export { LoadOptions, Reader } from "./Reader";
7
7
  declare global {
8
8
  interface Window {
9
9
  __PROSE_READER_DEBUG?: boolean;
@@ -1,4 +1,4 @@
1
- export declare const isHtmlElement: (element?: Element | Node | EventTarget | null | undefined) => element is HTMLElement;
1
+ export declare const isHtmlElement: (element?: Element | Node | null | EventTarget) => element is HTMLElement;
2
2
  declare type ViewPort = {
3
3
  left: number;
4
4
  right: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/core",
3
- "version": "0.0.46",
3
+ "version": "0.0.48",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -13,12 +13,12 @@
13
13
  "build": "NODE_ENV=development webpack build --config ./webpack.config.js && yarn build-types",
14
14
  "build-types": "yarn tsc --declaration --noEmit false --emitDeclarationOnly",
15
15
  "build:prod": "NODE_ENV=production webpack build --config ./webpack.config.js",
16
- "lint": "eslint '**/*.{js,ts,tsx}'",
16
+ "lint": "prettier -w . && eslint --fix . --ext .ts,.tsx,.js,.jsx",
17
17
  "test": "jest",
18
18
  "tsc": "tsc"
19
19
  },
20
20
  "dependencies": {
21
- "@prose-reader/shared": "^0.0.6"
21
+ "@prose-reader/shared": "^0.0.7"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "rxjs": "*"
@@ -26,11 +26,7 @@
26
26
  "devDependencies": {
27
27
  "@typescript-eslint/eslint-plugin": "^5.0.0",
28
28
  "@typescript-eslint/parser": "^5.0.0",
29
- "concurrently": "^6.5.1",
30
- "eslint": "^7.32.0",
31
- "eslint-config-standard": "^16.0.3",
32
- "eslint-plugin-import": "^2.25.2",
33
- "eslint-plugin-jest": "^25.3.2",
29
+ "concurrently": "^7.4.0",
34
30
  "html-webpack-plugin": "^5.5.0",
35
31
  "terser-webpack-plugin": "^5.3.0",
36
32
  "ts-loader": "^9.2.8",
@@ -39,5 +35,5 @@
39
35
  "webpack-bundle-analyzer": "^4.5.0",
40
36
  "webpack-cli": "^4.9.1"
41
37
  },
42
- "gitHead": "fe0faae4e663ef215fe9ecb047076aab5d2dfd4a"
38
+ "gitHead": "1f28c007ad5b72e6a131e77aa3438b652d0203c2"
43
39
  }