@prose-reader/core 1.310.0 → 1.312.0

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,9 +1,9 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@prose-reader/shared"),require("rxjs"),require("rxjs/operators"),require("@prose-reader/cfi")):typeof define==`function`&&define.amd?define([`exports`,`@prose-reader/shared`,`rxjs`,`rxjs/operators`,`@prose-reader/cfi`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`prose-reader-core`]={},e._prose_reader_shared,e.rxjs,e.rxjs_operators,e._prose_reader_cfi))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var a=t.Report.namespace(`@prose-reader/core`,void 0,{color:`#98cde7`}),o=[`pointercancel`,`pointerdown`,`pointerenter`,`pointerleave`,`pointermove`,`pointerout`,`pointerover`,`pointerup`];function s(e,t,n){let r=String(n);e.getAttribute(t)!==r&&e.setAttribute(t,r)}function c(e,t){e.hasAttribute(t)&&e.removeAttribute(t)}function l(e,t,n){e[t]!==n&&(e[t]=n)}function u(e,t,n){e.getPropertyValue(t)!==n&&e.setProperty(t,n)}function d(e,t){e.getPropertyValue(t)!==``&&e.removeProperty(t)}function f(e,t,n){if(`caretPositionFromPoint`in e)return e.caretPositionFromPoint(t,n);if(`caretRangeFromPoint`in e&&e.caretRangeFromPoint!==void 0)return e.caretRangeFromPoint(t,n)}var p=(e,t)=>{let n=`createRange`in e?e:e.ownerDocument;if(!n)return;let r=`body`in e?m(e.body,t):m(e,t);if(r){let e,i=0,a=n.createRange();return Array.from(r.childNodes).some(r=>{a.selectNodeContents(r);let o=g(a.getClientRects(),t);if(o){e=a.cloneRange();let t=f(n,Math.ceil(o.left),Math.ceil(o.top));return t&&`startContainer`in t&&t.startContainer===e.startContainer&&(i=t.startOffset),t&&`offsetNode`in t&&t.offsetNode===e.startContainer&&(i=t.offset),!0}return!1}),e?{node:e.startContainer,offset:i}:{node:r,offset:0}}},m=(e,t)=>{let n=h(e.getBoundingClientRect(),t),r;n!==`before`&&n!==`after`&&(r=e);for(let n of e.children){let e=m(n,t);if(e)return e}return r};function h(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`}function g(e,t){return Array.from(e).find(e=>{let n=h(e,t);return n!==`before`&&n!==`after`})}var _=(e,t)=>{if(e.nodeType!==Node.CDATA_SECTION_NODE&&e.nodeType!==Node.DOCUMENT_TYPE_NODE){let n=e.ownerDocument?.createRange();n?.selectNodeContents(e);try{t<=(n?.endOffset||0)&&n?.setStart(e,t||0)}catch(e){a.error(e)}return n}},v=e=>{if(e?.target&&(e?.target)?.ownerDocument?.defaultView){let t=(e?.target)?.ownerDocument?.defaultView;if(t.PointerEvent&&e instanceof t.PointerEvent)return!0}if(e?.view?.window){let t=e?.view;if(t.PointerEvent&&e instanceof t.PointerEvent)return!0}return!!o.includes(e.type)},y=e=>{if(v(e))return!1;if(e?.target&&(e?.target)?.ownerDocument?.defaultView){let t=(e?.target)?.ownerDocument?.defaultView;if(t.MouseEvent)return e instanceof t.MouseEvent}if(e?.view?.window){let t=e?.view;if(t.MouseEvent)return e instanceof t.MouseEvent}return!1},b=e=>{if(e?.target&&(e?.target)?.ownerDocument?.defaultView){let t=(e?.target)?.ownerDocument?.defaultView;if(t.TouchEvent)return e instanceof t.TouchEvent}if(e?.view?.window){let t=e?.view;if(t.TouchEvent)return e instanceof t.TouchEvent}return!1},ee=()=>document.createElement(`div`),x=e=>{let t=[`img`,`video`,`audio`,`source`,`link`,`script`].join(`,`);return Array.from(e?.querySelectorAll(t)||[])},te=e=>{if(x(e).forEach(t=>{let n=t.getAttribute(`src`)||t.getAttribute(`href`);n?.startsWith(`blob:`)&&e?.defaultView?.URL.revokeObjectURL(n)}),e){let t=Array.from(e.styleSheets||[]);for(let n of t){let t=(()=>{try{return Array.from(n.cssRules||[])}catch(e){return a.warn(`Error getting rules for sheet: ${n.href}`,e),[]}})();for(let n of t)if(e.defaultView&&n instanceof e.defaultView.CSSFontFaceRule){let t=n.style.getPropertyValue(`src`).match(/blob:[^,\s'")]+/g);t&&t.forEach(t=>{e?.defaultView?.URL.revokeObjectURL(t)})}}}};function ne(e,t,n=[]){if(typeof e!=`object`||!e)return!1;for(let n of t)if(!(n in e))return!1;for(let t of n)if(t in e&&typeof e[t]!=`function`)return!1;return!0}function re(e){return ne(e,[`nodeType`],[])&&e.nodeType===Node.ELEMENT_NODE}function ie(e,t){return re(e)&&e.tagName.toLowerCase()===t.toLowerCase()}function ae(e){return ne(e,[`startContainer`,`endContainer`,`startOffset`,`endOffset`,`collapsed`,`commonAncestorContainer`],[`setStart`,`setEnd`,`selectNodeContents`])}var S=(e,t,n,r)=>{let i=e.createElement(`style`);return i.id=t,i.textContent=n,r?e.head.prepend(i):e.head.appendChild(i),()=>{C(e,t)}},C=(e,t)=>{if(e?.head){let n=e.getElementById(t);n&&n.remove()}},w=(e,t)=>{let n=RegExp(`${t}\\s*=\\s*([^,\\s]+)`,`i`);return e.match(n)?.[1]?.trim().toLowerCase()},T=(e,t)=>{let n=w(e,t);if(!n)return 0;let r=Number.parseFloat(n);return Number.isFinite(r)?r:0},oe=(e,t,n,r)=>{e?.contentDocument?.head&&S(e.contentDocument,t,n,r)},se=(e,t)=>{e?.contentDocument&&C(e.contentDocument,t)},E=(e,t,n,r)=>{if(!e)return;let i=e?.contentDocument?.getElementById(t);if(i){i.textContent!==n&&(i.textContent=n);return}oe(e,t,n,r)},D=e=>{if(e?.contentDocument){let t=e.contentDocument.querySelector(`meta[name='viewport']`);if(t){let e=t.getAttribute(`content`);if(e){let t=w(e,`width`),n=w(e,`height`),r=T(e,`width`),i=T(e,`height`);return r>0&&i>0?{hasViewport:!0,widthToken:t,heightToken:n,width:r,height:i}:{hasViewport:!0,widthToken:t,heightToken:n}}}}return{hasViewport:!1}},ce=e=>e.pipe((0,n.switchMap)(e=>e.src===`about:blank`&&e.contentDocument?.readyState===`complete`&&e.contentDocument.body?(0,n.of)(e):(0,n.fromEvent)(e,`load`).pipe((0,n.take)(1),(0,n.map)(()=>e)))),le=e=>e.pipe((0,n.switchMap)(e=>{let t=e?.contentDocument?.fonts.ready;return t?(0,n.from)(t).pipe((0,n.map)(()=>e)):(0,n.of)(e)})),ue=e=>t=>{let n=e(t),r=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting?c(e.target,`tab-index`):s(e.target,`tab-index`,`-1`)})},{}),i=new Map;return n.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{i.get(e)?.(),i.delete(e);let t=n.spineItemsManager.get(e);if(!t)return;let a=t.renderer.getDocumentFrame();if(!a)return;E(a,`prose-reader-accessibility`,`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@prose-reader/shared"),require("rxjs"),require("rxjs/operators"),require("@prose-reader/cfi")):typeof define==`function`&&define.amd?define([`exports`,`@prose-reader/shared`,`rxjs`,`rxjs/operators`,`@prose-reader/cfi`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`prose-reader-core`]={},e._prose_reader_shared,e.rxjs,e.rxjs_operators,e._prose_reader_cfi))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var a=t.Report.namespace(`@prose-reader/core`,void 0,{color:`#98cde7`}),o=[`pointercancel`,`pointerdown`,`pointerenter`,`pointerleave`,`pointermove`,`pointerout`,`pointerover`,`pointerup`];function s(e,t,n){let r=String(n);e.getAttribute(t)!==r&&e.setAttribute(t,r)}function c(e,t){e.hasAttribute(t)&&e.removeAttribute(t)}function l(e,t,n){e[t]!==n&&(e[t]=n)}function u(e,t,n){e.getPropertyValue(t)!==n&&e.setProperty(t,n)}function d(e,t){e.getPropertyValue(t)!==``&&e.removeProperty(t)}function f(e,t,n){if(`caretPositionFromPoint`in e)return e.caretPositionFromPoint(t,n);if(`caretRangeFromPoint`in e&&e.caretRangeFromPoint!==void 0)return e.caretRangeFromPoint(t,n)}var p=(e,t)=>{let n=`createRange`in e?e:e.ownerDocument;if(!n)return;let r=`body`in e?m(e.body,t):m(e,t);if(r){let e,i=0,a=n.createRange();return Array.from(r.childNodes).some(r=>{a.selectNodeContents(r);let o=g(a.getClientRects(),t);if(o){e=a.cloneRange();let t=f(n,Math.ceil(o.left),Math.ceil(o.top));return t&&`startContainer`in t&&t.startContainer===e.startContainer&&(i=t.startOffset),t&&`offsetNode`in t&&t.offsetNode===e.startContainer&&(i=t.offset),!0}return!1}),e?{node:e.startContainer,offset:i}:{node:r,offset:0}}},m=(e,t)=>{let n=h(e.getBoundingClientRect(),t),r;n!==`before`&&n!==`after`&&(r=e);for(let n of e.children){let e=m(n,t);if(e)return e}return r};function h(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`}function g(e,t){return Array.from(e).find(e=>{let n=h(e,t);return n!==`before`&&n!==`after`})}var _=(e,t)=>{if(e.nodeType!==Node.CDATA_SECTION_NODE&&e.nodeType!==Node.DOCUMENT_TYPE_NODE){let n=e.ownerDocument?.createRange();n?.selectNodeContents(e);try{t<=(n?.endOffset||0)&&n?.setStart(e,t||0)}catch(e){a.error(e)}return n}},v=e=>{if(e?.target&&(e?.target)?.ownerDocument?.defaultView){let t=(e?.target)?.ownerDocument?.defaultView;if(t.PointerEvent&&e instanceof t.PointerEvent)return!0}if(e?.view?.window){let t=e?.view;if(t.PointerEvent&&e instanceof t.PointerEvent)return!0}return!!o.includes(e.type)},ee=e=>{if(v(e))return!1;if(e?.target&&(e?.target)?.ownerDocument?.defaultView){let t=(e?.target)?.ownerDocument?.defaultView;if(t.MouseEvent)return e instanceof t.MouseEvent}if(e?.view?.window){let t=e?.view;if(t.MouseEvent)return e instanceof t.MouseEvent}return!1},y=e=>{if(e?.target&&(e?.target)?.ownerDocument?.defaultView){let t=(e?.target)?.ownerDocument?.defaultView;if(t.TouchEvent)return e instanceof t.TouchEvent}if(e?.view?.window){let t=e?.view;if(t.TouchEvent)return e instanceof t.TouchEvent}return!1},te=()=>document.createElement(`div`),ne=e=>{let t=[`img`,`video`,`audio`,`source`,`link`,`script`].join(`,`);return Array.from(e?.querySelectorAll(t)||[])},re=e=>{if(ne(e).forEach(t=>{let n=t.getAttribute(`src`)||t.getAttribute(`href`);n?.startsWith(`blob:`)&&e?.defaultView?.URL.revokeObjectURL(n)}),e){let t=Array.from(e.styleSheets||[]);for(let n of t){let t=(()=>{try{return Array.from(n.cssRules||[])}catch(e){return a.warn(`Error getting rules for sheet: ${n.href}`,e),[]}})();for(let n of t)if(e.defaultView&&n instanceof e.defaultView.CSSFontFaceRule){let t=n.style.getPropertyValue(`src`).match(/blob:[^,\s'")]+/g);t&&t.forEach(t=>{e?.defaultView?.URL.revokeObjectURL(t)})}}}};function ie(e,t,n=[]){if(typeof e!=`object`||!e)return!1;for(let n of t)if(!(n in e))return!1;for(let t of n)if(t in e&&typeof e[t]!=`function`)return!1;return!0}function b(e){return ie(e,[`nodeType`],[])&&e.nodeType===Node.ELEMENT_NODE}function ae(e,t){return b(e)&&e.tagName.toLowerCase()===t.toLowerCase()}function oe(e){return ie(e,[`startContainer`,`endContainer`,`startOffset`,`endOffset`,`collapsed`,`commonAncestorContainer`],[`setStart`,`setEnd`,`selectNodeContents`])}var x=(e,t,n,r)=>{let i=e.createElement(`style`);return i.id=t,i.textContent=n,r?e.head.prepend(i):e.head.appendChild(i),()=>{S(e,t)}},S=(e,t)=>{if(e?.head){let n=e.getElementById(t);n&&n.remove()}},se=(e,t)=>{let n=RegExp(`${t}\\s*=\\s*([^,\\s]+)`,`i`);return e.match(n)?.[1]?.trim().toLowerCase()},ce=(e,t)=>{let n=se(e,t);if(!n)return 0;let r=Number.parseFloat(n);return Number.isFinite(r)?r:0},le=(e,t,n,r)=>{e?.contentDocument?.head&&x(e.contentDocument,t,n,r)},ue=(e,t)=>{e?.contentDocument&&S(e.contentDocument,t)},C=(e,t,n,r)=>{if(!e)return;let i=e?.contentDocument?.getElementById(t);if(i){i.textContent!==n&&(i.textContent=n);return}le(e,t,n,r)},w=e=>{if(e?.contentDocument){let t=e.contentDocument.querySelector(`meta[name='viewport']`);if(t){let e=t.getAttribute(`content`);if(e){let t=se(e,`width`),n=se(e,`height`),r=ce(e,`width`),i=ce(e,`height`);return r>0&&i>0?{hasViewport:!0,widthToken:t,heightToken:n,width:r,height:i}:{hasViewport:!0,widthToken:t,heightToken:n}}}}return{hasViewport:!1}},de=e=>e.pipe((0,n.switchMap)(e=>e.src===`about:blank`&&e.contentDocument?.readyState===`complete`&&e.contentDocument.body?(0,n.of)(e):(0,n.fromEvent)(e,`load`).pipe((0,n.take)(1),(0,n.map)(()=>e)))),fe=e=>e.pipe((0,n.switchMap)(e=>{let t=e?.contentDocument?.fonts.ready;return t?(0,n.from)(t).pipe((0,n.map)(()=>e)):(0,n.of)(e)})),pe=e=>t=>{let n=e(t),r=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting?c(e.target,`tab-index`):s(e.target,`tab-index`,`-1`)})},{}),i=new Map;return n.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{i.get(e)?.(),i.delete(e);let t=n.spineItemsManager.get(e);if(!t)return;let a=t.renderer.getDocumentFrame();if(!a)return;C(a,`prose-reader-accessibility`,`
2
2
  :focus-visible {
3
3
 
4
4
  outline: -webkit-focus-ring-color auto 1px;
5
5
  }
6
- `);let o=a.contentDocument?.body.querySelectorAll(`a`);o?.forEach(e=>{r.observe(e)}),i.set(e,()=>{o?.forEach(e=>{r.unobserve(e)})})}),n.hookManager.register(`item.onDocumentUnload`,async({itemId:e})=>{i.get(e)?.(),i.delete(e)}),{...n}},de=e=>t=>{let r=e(t);return r.context.watch(`rootElement`).pipe((0,n.takeUntil)(r.context.destroy$)).subscribe(e=>{e&&e.addEventListener(`scroll`,()=>{r.settings.values.computedPageTurnMode===`controlled`&&e.scrollTo(0,0)})}),r.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{let t=r.spineItemsManager.get(e)?.renderer.getDocumentFrame();t&&t.contentDocument?.body&&s(t.contentDocument.body,`tabindex`,`-1`)}),r},fe=({position:e,frameElement:t})=>{let n=t.getBoundingClientRect(),r=n.width/t.offsetWidth,i=n.height/t.offsetHeight,{left:a=0,top:o=0}=n;return{clientX:e.clientX*r+a,clientY:e.clientY*i+o}},pe=(e,t,n,r)=>{let i=t?.view?.frameElement;if(!t||!i)return e;let a=n.getSpineItemFromIframe(i),o=i,{height:s,width:c}=r.pageSize;if(!a||!(o instanceof HTMLIFrameElement))return e;if(v(e)){let{clientX:n,clientY:r}=fe({position:e,frameElement:o,pageHeight:s,pageWidth:c}),i=new PointerEvent(e.type,{...e,pointerId:e.pointerId,clientX:n,clientY:r});return Object.defineProperty(i,"target",{value:t.target,enumerable:!0}),i}if(y(e)){let{clientX:n,clientY:r}=fe({position:e,frameElement:o,pageHeight:s,pageWidth:c}),i=new MouseEvent(e.type,{...e,clientX:n,clientY:r});return Object.defineProperty(i,"target",{value:t.target,enumerable:!0}),i}if(b(e)){let n=Array.from(e.touches).map(e=>{let{clientX:t,clientY:n}=fe({position:e,frameElement:o,pageHeight:s,pageWidth:c});return new Touch({identifier:e.identifier,target:e.target,clientX:t,clientY:n})}),r=new TouchEvent(e.type,{touches:n,changedTouches:n,targetTouches:n});return Object.defineProperty(r,"target",{value:t.target,enumerable:!0}),r}return e},me=[`pointercancel`,`pointerdown`,`pointerenter`,`pointerleave`,`pointermove`,`pointerout`,`pointerover`,`pointerup`],he=e=>t=>{let n=e(t),r=new Map;return n.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{r.get(e)?.(),r.delete(e);let t=n.spineItemsManager.get(e),i=t?.renderer.getDocumentFrame();if(!i||!t)return;let a=me.map(e=>{let t=e=>{let t=e;if(v(e)&&(t=new PointerEvent(e.type,e)),t!==e){let r=pe(t,e,n.spine.locator,n.viewport);n.context.value.rootElement?.dispatchEvent(r)}};return i.contentDocument?.addEventListener(e,t),()=>{i.contentDocument?.removeEventListener(e,t)}});r.set(e,()=>{a.forEach(e=>{e()})})}),n.hookManager.register(`item.onDocumentUnload`,async({itemId:e})=>{r.get(e)?.(),r.delete(e)}),n},ge=e=>{let t=new FileReader;return new Promise(n=>{t.addEventListener(`load`,()=>{n(t.result)},!1),t.readAsDataURL(e)})},_e=(e,t)=>Object.entries(e).reduce((e,[n,r])=>t.includes(n)?{...e,[n]:r}:e,{}),ve=e=>(0,r.map)(t=>_e(t,e)),O=e=>n=>n.pipe(ve(e),(0,r.distinctUntilChanged)(t.isShallowEqual));function k(e){return new n.Observable(t=>{let n=new ResizeObserver(e=>{t.next(e)});return n.observe(e),()=>{n.disconnect()}})}var A=e=>t=>t.pipe((0,r.switchMap)(t=>e.pipe((0,r.first)(),(0,r.map)(()=>t)))),ye=e=>{let t,r=e.subscribe(e=>{t={result:e}});return()=>(r.unsubscribe(),t?(0,n.of)(t.result):e)};function be(){return new n.Observable(e=>{if(window.requestIdleCallback){let t=window.requestIdleCallback(()=>{e.next(),e.complete()});return()=>cancelIdleCallback(t)}let t=setTimeout(()=>{e.next(),e.complete()},1);return()=>clearTimeout(t)})}function xe(e){return(0,n.defer)(()=>be().pipe((0,r.switchMap)(e)))}var Se=(e,t)=>new n.Observable(n=>{let r=new MutationObserver(e=>{n.next(e)});return r.observe(e,t),()=>r.disconnect()});function Ce(e,t){return new n.Observable(n=>{let r=new IntersectionObserver(e=>{n.next(e)},t);return r.observe(e),()=>{r.disconnect()}})}var we=class{constructor(e,i){this.settingsManager=i;let a=(0,t.shallowMergeIfDefined)(this.getDefaultSettings(),e);this.outputSettings=this.computeOutputSettings(a),this.inputSettings=(0,t.shallowMergeIfDefined)(this.getDefaultSettings(),e),this.outputSettingsUpdateSubject=new n.Subject,this.values$=(0,n.combineLatest)([this.settingsManager.values$,this.outputSettingsUpdateSubject.pipe((0,r.startWith)(this.outputSettings))]).pipe((0,r.map)(([e,t])=>({...e,...t})),(0,r.shareReplay)(1)),this.values$.subscribe()}_prepareUpdate(e){let n=this.getCleanedParentInputSettings(e),r=this.settingsManager._prepareUpdate(n),i=(0,t.shallowMergeIfDefined)(this.inputSettings,e),a=this.computeOutputSettings(i),o=this.hasSettingsChanged(a);return{hasChanged:o||r.hasChanged,commit:()=>(this.inputSettings=i,this.outputSettings=a,!r.hasChanged&&o&&this.outputSettingsUpdateSubject.next(a),{...r.commit(),...a})}}update(e){let{commit:t}=this._prepareUpdate(e);t()}get values(){return{...this.settingsManager.values,...this.outputSettings}}watch(e){return Array.isArray(e)?this.values$.pipe(O(e)):this.values$.pipe((0,r.map)(t=>t[e]),(0,r.distinctUntilChanged)(t.isShallowEqual))}destroy(){this.outputSettingsUpdateSubject.complete()}},Te=class extends we{computeOutputSettings(e){return e}hasSettingsChanged(e){return!(0,t.isShallowEqual)(this.outputSettings,e)}getCleanedParentInputSettings(e){let{fontJustification:t,fontScale:n,fontWeight:r,lineHeight:i,...a}=e;return a}getDefaultSettings(){return{fontScale:1,fontWeight:`publisher`,lineHeight:`publisher`,fontJustification:`publisher`}}},Ee=e=>t=>{let{fontScale:i,lineHeight:a,fontWeight:o,fontJustification:s}=t,c=new n.Subject,l=e(t),u=new Te({fontScale:i,lineHeight:a,fontWeight:o,fontJustification:s},l.settings),d=()=>`
6
+ `);let o=a.contentDocument?.body.querySelectorAll(`a`);o?.forEach(e=>{r.observe(e)}),i.set(e,()=>{o?.forEach(e=>{r.unobserve(e)})})}),n.hookManager.register(`item.onDocumentUnload`,async({itemId:e})=>{i.get(e)?.(),i.delete(e)}),{...n}},me=e=>t=>{let r=e(t);return r.context.watch(`rootElement`).pipe((0,n.takeUntil)(r.context.destroy$)).subscribe(e=>{e&&e.addEventListener(`scroll`,()=>{r.settings.values.computedPageTurnMode===`controlled`&&e.scrollTo(0,0)})}),r.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{let t=r.spineItemsManager.get(e)?.renderer.getDocumentFrame();t&&t.contentDocument?.body&&s(t.contentDocument.body,`tabindex`,`-1`)}),r},T=({position:e,frameElement:t})=>{let n=t.getBoundingClientRect(),r=n.width/t.offsetWidth,i=n.height/t.offsetHeight,{left:a=0,top:o=0}=n;return{clientX:e.clientX*r+a,clientY:e.clientY*i+o}},he=(e,t,n,r)=>{let i=t?.view?.frameElement;if(!t||!i)return e;let a=n.getSpineItemFromIframe(i),o=i,{height:s,width:c}=r.pageSize;if(!a||!(o instanceof HTMLIFrameElement))return e;if(v(e)){let{clientX:n,clientY:r}=T({position:e,frameElement:o,pageHeight:s,pageWidth:c}),i=new PointerEvent(e.type,{...e,pointerId:e.pointerId,clientX:n,clientY:r});return Object.defineProperty(i,"target",{value:t.target,enumerable:!0}),i}if(ee(e)){let{clientX:n,clientY:r}=T({position:e,frameElement:o,pageHeight:s,pageWidth:c}),i=new MouseEvent(e.type,{...e,clientX:n,clientY:r});return Object.defineProperty(i,"target",{value:t.target,enumerable:!0}),i}if(y(e)){let n=Array.from(e.touches).map(e=>{let{clientX:t,clientY:n}=T({position:e,frameElement:o,pageHeight:s,pageWidth:c});return new Touch({identifier:e.identifier,target:e.target,clientX:t,clientY:n})}),r=new TouchEvent(e.type,{touches:n,changedTouches:n,targetTouches:n});return Object.defineProperty(r,"target",{value:t.target,enumerable:!0}),r}return e},ge=[`pointercancel`,`pointerdown`,`pointerenter`,`pointerleave`,`pointermove`,`pointerout`,`pointerover`,`pointerup`],_e=e=>t=>{let n=e(t),r=new Map;return n.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{r.get(e)?.(),r.delete(e);let t=n.spineItemsManager.get(e),i=t?.renderer.getDocumentFrame();if(!i||!t)return;let a=ge.map(e=>{let t=e=>{let t=e;if(v(e)&&(t=new PointerEvent(e.type,e)),t!==e){let r=he(t,e,n.spine.locator,n.viewport);n.context.value.rootElement?.dispatchEvent(r)}};return i.contentDocument?.addEventListener(e,t),()=>{i.contentDocument?.removeEventListener(e,t)}});r.set(e,()=>{a.forEach(e=>{e()})})}),n.hookManager.register(`item.onDocumentUnload`,async({itemId:e})=>{r.get(e)?.(),r.delete(e)}),n},ve=e=>{let t=new FileReader;return new Promise(n=>{t.addEventListener(`load`,()=>{n(t.result)},!1),t.readAsDataURL(e)})},ye=(e,t)=>Object.entries(e).reduce((e,[n,r])=>t.includes(n)?{...e,[n]:r}:e,{}),be=e=>(0,r.map)(t=>ye(t,e)),E=e=>n=>n.pipe(be(e),(0,r.distinctUntilChanged)(t.isShallowEqual));function D(e){return new n.Observable(t=>{let n=new ResizeObserver(e=>{t.next(e)});return n.observe(e),()=>{n.disconnect()}})}var O=e=>t=>t.pipe((0,r.switchMap)(t=>e.pipe((0,r.first)(),(0,r.map)(()=>t)))),xe=e=>{let t,r=e.subscribe(e=>{t={result:e}});return()=>(r.unsubscribe(),t?(0,n.of)(t.result):e)};function Se(){return new n.Observable(e=>{if(window.requestIdleCallback){let t=window.requestIdleCallback(()=>{e.next(),e.complete()});return()=>cancelIdleCallback(t)}let t=setTimeout(()=>{e.next(),e.complete()},1);return()=>clearTimeout(t)})}function Ce(e){return(0,n.defer)(()=>Se().pipe((0,r.switchMap)(e)))}var we=(e,t)=>new n.Observable(n=>{let r=new MutationObserver(e=>{n.next(e)});return r.observe(e,t),()=>r.disconnect()});function Te(e,t){return new n.Observable(n=>{let r=new IntersectionObserver(e=>{n.next(e)},t);return r.observe(e),()=>{r.disconnect()}})}var Ee=class{constructor(e,i){this.settingsManager=i;let a=(0,t.shallowMergeIfDefined)(this.getDefaultSettings(),e);this.outputSettings=this.computeOutputSettings(a),this.inputSettings=(0,t.shallowMergeIfDefined)(this.getDefaultSettings(),e),this.outputSettingsUpdateSubject=new n.Subject,this.values$=(0,n.combineLatest)([this.settingsManager.values$,this.outputSettingsUpdateSubject.pipe((0,r.startWith)(this.outputSettings))]).pipe((0,r.map)(([e,t])=>({...e,...t})),(0,r.shareReplay)(1)),this.values$.subscribe()}_prepareUpdate(e){let n=this.getCleanedParentInputSettings(e),r=this.settingsManager._prepareUpdate(n),i=(0,t.shallowMergeIfDefined)(this.inputSettings,e),a=this.computeOutputSettings(i),o=this.hasSettingsChanged(a);return{hasChanged:o||r.hasChanged,commit:()=>(this.inputSettings=i,this.outputSettings=a,!r.hasChanged&&o&&this.outputSettingsUpdateSubject.next(a),{...r.commit(),...a})}}update(e){let{commit:t}=this._prepareUpdate(e);t()}get values(){return{...this.settingsManager.values,...this.outputSettings}}watch(e){return Array.isArray(e)?this.values$.pipe(E(e)):this.values$.pipe((0,r.map)(t=>t[e]),(0,r.distinctUntilChanged)(t.isShallowEqual))}destroy(){this.outputSettingsUpdateSubject.complete()}},De=class extends Ee{computeOutputSettings(e){return e}hasSettingsChanged(e){return!(0,t.isShallowEqual)(this.outputSettings,e)}getCleanedParentInputSettings(e){let{fontJustification:t,fontScale:n,fontWeight:r,lineHeight:i,...a}=e;return a}getDefaultSettings(){return{fontScale:1,fontWeight:`publisher`,lineHeight:`publisher`,fontJustification:`publisher`}}},Oe=e=>t=>{let{fontScale:i,lineHeight:a,fontWeight:o,fontJustification:s}=t,c=new n.Subject,l=e(t),u=new De({fontScale:i,lineHeight:a,fontWeight:o,fontJustification:s},l.settings),d=()=>`
7
7
 
8
8
  body {
9
9
  ${u.values.fontScale===1?``:`font-size: ${u.values.fontScale}em !important;`}
@@ -11,7 +11,7 @@
11
11
  ${u.values.fontWeight===`publisher`?``:`font-weight: ${u.values.fontWeight} !important;`}
12
12
  ${u.values.fontJustification===`publisher`?``:`text-align: ${u.values.fontJustification} !important;`}
13
13
  }
14
- `;return l.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{let t=l.spineItemsManager.get(e);if(t?.renditionLayout!==`pre-paginated`){let e=t?.renderer.getDocumentFrame();e&&E(e,`prose-reader-fonts`,d())}}),u.values$.pipe(e=>e.pipe((0,r.pairwise)(),(0,n.map)(([e,t])=>t.fontScale!==e.fontScale||t.lineHeight!==e.lineHeight)),(0,r.tap)(e=>{l.spineItemsManager.items.forEach(e=>{if(e.renditionLayout!==`pre-paginated`){let t=e.renderer.getDocumentFrame();t&&E(t,`prose-reader-fonts`,d())}}),e&&l.layout()}),(0,n.takeUntil)(l.$.destroy$)).subscribe(),{...l,destroy:()=>{c.complete(),u.destroy(),l.destroy()},settings:u}},De=e=>t=>{let r=e(t),i=e=>(0,n.fromEvent)(e,`keyup`).pipe((0,n.map)(e=>{let{pageTurnDirection:t,computedPageTurnMode:n}=r.settings.values;if(n===`scrollable`)return e;if(t===`horizontal`){if(e.key===`ArrowRight`)return r.navigation.turnRight();if(e.key===`ArrowLeft`)return r.navigation.turnLeft()}if(t===`vertical`){if(e.key===`ArrowDown`)return r.navigation.turnRight();if(e.key===`ArrowUp`)return r.navigation.turnLeft()}return e}));return i(document).pipe((0,n.takeUntil)(r.$.destroy$)).subscribe(),r.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.watch(`isLoaded`).pipe((0,n.switchMap)(()=>{let t=e.renderer.getDocumentFrame();return t instanceof HTMLIFrameElement&&t?.contentDocument?i(t.contentDocument):n.EMPTY}))))),(0,n.takeUntil)(r.$.destroy$)).subscribe(),r},Oe=e=>e.spine.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.watch(`isLoaded`).pipe((0,n.switchMap)(()=>{let t=e.renderer.getDocumentFrame();return!t||!t?.contentDocument?n.NEVER:(0,n.merge)(...Array.from(t.contentDocument.querySelectorAll(`a`)).map(e=>(0,n.fromEvent)(e,`click`)))}))))),(0,n.tap)(e=>{e.preventDefault()}),(0,n.share)()),j=class extends n.Observable{constructor(e){super(e=>this.stateSubject.pipe((0,n.takeUntil)(this._destroy$)).subscribe(e)),this._destroy$=new n.Subject,this.destroy$=this._destroy$.asObservable(),this.stateSubject=new n.BehaviorSubject(e),this.state$=this.stateSubject.asObservable()}next(e){this.stateSubject.next(e)}mergeCompare(e){let n={...this.value,...e};(0,t.isShallowEqual)(this.value,n)||this.stateSubject.next(n)}watch(e){return Array.isArray(e)?this.stateSubject.pipe(O(e)):this.stateSubject.pipe((0,n.map)(t=>t[e]),(0,n.distinctUntilChanged)(t.isShallowEqual))}get value(){return this.stateSubject.value}destroy(){this.stateSubject.complete(),this._destroy$.complete()}},ke=class e extends j{static{this.DOCUMENT_CONTAINER_CLASS_NAME=`prose-reader-document-container`}constructor(e){super({state:`idle`,error:void 0,documentContainer:void 0}),this.triggerSubject=new n.Subject,this.context=e.context,this.settings=e.settings,this.hookManager=e.hookManager,this.item=e.item,this.containerElement=e.containerElement,this.resourcesHandler=e.resourcesHandler,this.viewport=e.viewport;let t=this.triggerSubject.pipe((0,n.filter)(e=>e.type===`unload`)),r=this.triggerSubject.pipe((0,n.filter)(e=>e.type===`load`));this.loaded$=r.pipe((0,n.mergeMap)(()=>this.value.state===`loaded`||this.value.state===`loading`?n.EMPTY:(this.mergeCompare({state:`loading`,error:void 0}),this.onCreateDocument().pipe((0,n.first)()).pipe((0,n.mergeMap)(e=>(this.hookManager.execute(`item.onDocumentCreated`,{itemId:this.item.id,documentContainer:e}),this.onLoadDocument().pipe((0,n.endWith)(null),(0,n.first)()).pipe(A(this.context.bridgeEvent.viewportFree$),(0,n.switchMap)(()=>this.hookManager.fromExecuteAsync(`item.onDocumentLoad`,this.item.id,{itemId:this.item.id,documentContainer:e}))))),(0,n.map)(()=>{this.mergeCompare({state:`loaded`,error:void 0})}),(0,n.takeUntil)(t)))),(0,n.share)()),this.unloaded$=t.pipe((0,n.mergeMap)(()=>this.value.state===`unloading`||this.value.state===`idle`?n.EMPTY:(this.mergeCompare({state:`unloading`,error:void 0}),this.context.bridgeEvent.viewportFree$.pipe((0,n.first)(),(0,n.switchMap)(()=>{let e=this.value.documentContainer;return(0,n.from)(e?this.hookManager.executeAsync(`item.onDocumentUnload`,this.item.id,{itemId:this.item.id,documentContainer:e}).then(()=>null):Promise.resolve(null)).pipe((0,n.switchMap)(()=>this.onUnload()),(0,n.endWith)(null),(0,n.first)(),(0,n.catchError)(e=>(a.error(`Error unloading document`,e),(0,n.of)(null))))}),(0,n.map)(()=>{this.mergeCompare({state:`idle`,error:void 0})}),(0,n.takeUntil)(r)))),(0,n.share)()),(0,n.merge)(this.loaded$,this.unloaded$).pipe((0,n.catchError)(e=>(this.mergeCompare({state:`error`,error:e}),n.EMPTY)),(0,n.takeUntil)(this.destroy$)).subscribe()}setDocumentContainer(t){t.classList.add(e.DOCUMENT_CONTAINER_CLASS_NAME),this.mergeCompare({documentContainer:t})}attach(){this.documentContainer&&this.containerElement.appendChild(this.documentContainer)}detach(){this.documentContainer?.remove(),this.mergeCompare({documentContainer:void 0})}get isLoaded$(){return this.state$.pipe((0,n.map)(e=>e.state===`loaded`))}load(){this.triggerSubject.next({type:`load`})}unload(){this.triggerSubject.next({type:`unload`})}renderHeadless(){let e=new n.Subject;return(0,n.defer)(()=>this.onRenderHeadless({release:e})).pipe((0,n.endWith)(void 0),(0,n.first)(),(0,n.map)(t=>{if(t)return{doc:t,release:()=>{e.next(void 0)}}}),(0,n.finalize)(()=>{e.complete()}),(0,n.catchError)(e=>(a.error(e),(0,n.of)(void 0))))}layout(e){return this.onLayout(e)}destroy(){this.unload(),this.stateSubject.complete(),super.destroy()}get documentContainer(){return this.value.documentContainer}get writingMode(){}get readingDirection(){}get renditionLayout(){let e=this.item.renditionLayout;if(e)return e;let t=this.getDocumentFrame();if(t){let{hasViewport:e}=D(t);if(e)return`pre-paginated`}return this.context.manifest?.renditionLayout??`reflowable`}},Ae=e=>new URL(e.href),M=class{constructor(e,t){this.item=e,this.settings=t}async getResource(){return await(0,n.lastValueFrom)(this.settings.values.getResource?.(this.item)??(0,n.of)(void 0))??Ae(this.item)}async fetchResource(){let e=await this.getResource();return e instanceof Response?e:e instanceof URL?fetch(e):e}},je=(e,t)=>{let n=e.startsWith(`file://`),r=n?e.replace(`file://`,`http://`):e,i=new URL(t,r).toString();return n?i.replace(`http://`,`file://`):i},Me=async(e,t,n,r,i)=>{if(!e||!e.defaultView)return;let a=t.sheet;if(a)try{let t=Array.from(a.cssRules||[]);for(let o=0;o<t.length;o++){let s=t[o];if(e.defaultView&&s instanceof e.defaultView.CSSFontFaceRule){let t=s.style.getPropertyValue(`src`);if(t.match(/url\(['"]?([^'"]+)['"]?\)/g)){let c=t.split(`,`).map(e=>e.trim()),l=await Promise.all(c.map(async t=>{if(t.startsWith(`local(`))return t;let a=t.match(/url\(['"]?([^'"]+)['"]?\)/);if(!a)return t;let o=a[1]??``,s=r.manifest?.items.find(({href:e})=>`${je(n,o).toLowerCase()}`.endsWith(`${e.toLowerCase()}`));if(s){let n=new M(s,i);try{let r=await n.getResource();if(r instanceof Response){let n=await r.blob(),i=e.defaultView?.URL.createObjectURL(n);return t.replace(a[0],`url("${i}")`)}}catch(e){console.error(`Error loading font:`,e)}}return t})),u=s.cssText.replace(/src:\s*[^;]+;/,`src: ${l.join(`, `)};`);a.deleteRule(o),a.insertRule(u,o)}}}}catch(e){console.error(`Could not access stylesheet rules:`,e)}},Ne=(e,t,r,i,a)=>{let o=t.getAttribute(`src`)||t.getAttribute(`href`);if(!o)return(0,n.of)(null);let s=i.manifest?.items.find(({href:e})=>`${je(r,o).toLowerCase()}`.endsWith(`${e.toLowerCase()}`));return s?(0,n.from)(new M(s,a).getResource()).pipe((0,n.mergeMap)(e=>e instanceof Response?(0,n.from)(e.blob()):(0,n.of)(void 0)),(0,n.mergeMap)(o=>{if(!o)return(0,n.of)(null);let s=e?.defaultView?.URL.createObjectURL(o)??``;if(t.hasAttribute(`src`))t.setAttribute(`src`,s);else if(t.hasAttribute(`href`)&&(t.setAttribute(`href`,s),e?.defaultView&&t instanceof e.defaultView.HTMLLinkElement))return new n.Observable(n=>{t.onload=async()=>{try{t.sheet&&await Me(e,t,r,i,a),n.next(),n.complete()}catch(e){n.error(e)}},t.onerror=n.error});return(0,n.of)(null)})):(0,n.of)(null)},Pe=({settings:e,item:r,context:i})=>a=>a.pipe((0,n.switchMap)(a=>{let o=x(a.contentDocument),s=(0,t.getParentPath)(r.href),c=o.map(t=>Ne(a.contentDocument,t,s,i,e));return c.length===0?(0,n.of)(a):(0,n.combineLatest)(c).pipe((0,n.map)(()=>a))})),Fe=e=>{te(e?.contentDocument)},Ie=async(e,n)=>{if(typeof e==`string`)return new Blob([e],{type:`text/html`});let r=(0,t.parseContentType)(e.headers.get(`Content-Type`)||``)||(0,t.detectMimeTypeFromName)(n.href);if([`image/jpg`,`image/jpeg`,`image/png`,`image/webp`].some(e=>e===r)){let t=await e.blob(),r=URL.createObjectURL(t),i=await createImageBitmap(t),{width:a,height:o}={width:i.width,height:i.height};return i.close(),new Blob([`
14
+ `;return l.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{let t=l.spineItemsManager.get(e);if(t?.renditionLayout!==`pre-paginated`){let e=t?.renderer.getDocumentFrame();e&&C(e,`prose-reader-fonts`,d())}}),u.values$.pipe(e=>e.pipe((0,r.pairwise)(),(0,n.map)(([e,t])=>t.fontScale!==e.fontScale||t.lineHeight!==e.lineHeight)),(0,r.tap)(e=>{l.spineItemsManager.items.forEach(e=>{if(e.renditionLayout!==`pre-paginated`){let t=e.renderer.getDocumentFrame();t&&C(t,`prose-reader-fonts`,d())}}),e&&l.layout()}),(0,n.takeUntil)(l.$.destroy$)).subscribe(),{...l,destroy:()=>{c.complete(),u.destroy(),l.destroy()},settings:u}},ke=e=>t=>{let r=e(t),i=e=>(0,n.fromEvent)(e,`keyup`).pipe((0,n.map)(e=>{let{pageTurnDirection:t,computedPageTurnMode:n}=r.settings.values;if(n===`scrollable`)return e;if(t===`horizontal`){if(e.key===`ArrowRight`)return r.navigation.turnRight();if(e.key===`ArrowLeft`)return r.navigation.turnLeft()}if(t===`vertical`){if(e.key===`ArrowDown`)return r.navigation.turnRight();if(e.key===`ArrowUp`)return r.navigation.turnLeft()}return e}));return i(document).pipe((0,n.takeUntil)(r.$.destroy$)).subscribe(),r.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.watch(`isLoaded`).pipe((0,n.switchMap)(()=>{let t=e.renderer.getDocumentFrame();return t instanceof HTMLIFrameElement&&t?.contentDocument?i(t.contentDocument):n.EMPTY}))))),(0,n.takeUntil)(r.$.destroy$)).subscribe(),r},Ae=e=>e.spine.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.watch(`isLoaded`).pipe((0,n.switchMap)(()=>{let t=e.renderer.getDocumentFrame();return!t||!t?.contentDocument?n.NEVER:(0,n.merge)(...Array.from(t.contentDocument.querySelectorAll(`a`)).map(e=>(0,n.fromEvent)(e,`click`)))}))))),(0,n.tap)(e=>{e.preventDefault()}),(0,n.share)()),k=class extends n.Observable{constructor(e){super(e=>this.stateSubject.pipe((0,n.takeUntil)(this._destroy$)).subscribe(e)),this._destroy$=new n.Subject,this.destroy$=this._destroy$.asObservable(),this.stateSubject=new n.BehaviorSubject(e),this.state$=this.stateSubject.asObservable()}next(e){this.stateSubject.next(e)}mergeCompare(e){let n={...this.value,...e};(0,t.isShallowEqual)(this.value,n)||this.stateSubject.next(n)}watch(e){return Array.isArray(e)?this.stateSubject.pipe(E(e)):this.stateSubject.pipe((0,n.map)(t=>t[e]),(0,n.distinctUntilChanged)(t.isShallowEqual))}get value(){return this.stateSubject.value}destroy(){this.stateSubject.complete(),this._destroy$.complete()}},A=class e extends k{static{this.DOCUMENT_CONTAINER_CLASS_NAME=`prose-reader-document-container`}constructor(e){super({state:`idle`,error:void 0,documentContainer:void 0}),this.triggerSubject=new n.Subject,this.context=e.context,this.settings=e.settings,this.hookManager=e.hookManager,this.item=e.item,this.containerElement=e.containerElement,this.resourcesHandler=e.resourcesHandler,this.viewport=e.viewport;let t=this.triggerSubject.pipe((0,n.filter)(e=>e.type===`unload`)),r=this.triggerSubject.pipe((0,n.filter)(e=>e.type===`load`));this.loaded$=r.pipe((0,n.mergeMap)(()=>this.value.state===`loaded`||this.value.state===`loading`?n.EMPTY:(this.mergeCompare({state:`loading`,error:void 0}),this.onCreateDocument().pipe((0,n.first)()).pipe((0,n.mergeMap)(e=>(this.hookManager.execute(`item.onDocumentCreated`,{itemId:this.item.id,documentContainer:e}),this.onLoadDocument().pipe((0,n.endWith)(null),(0,n.first)()).pipe(O(this.context.bridgeEvent.viewportFree$),(0,n.switchMap)(()=>this.hookManager.fromExecuteAsync(`item.onDocumentLoad`,this.item.id,{itemId:this.item.id,documentContainer:e}))))),(0,n.map)(()=>{this.mergeCompare({state:`loaded`,error:void 0})}),(0,n.takeUntil)(t)))),(0,n.share)()),this.unloaded$=t.pipe((0,n.mergeMap)(()=>this.value.state===`unloading`||this.value.state===`idle`?n.EMPTY:(this.mergeCompare({state:`unloading`,error:void 0}),this.context.bridgeEvent.viewportFree$.pipe((0,n.first)(),(0,n.switchMap)(()=>{let e=this.value.documentContainer;return(0,n.from)(e?this.hookManager.executeAsync(`item.onDocumentUnload`,this.item.id,{itemId:this.item.id,documentContainer:e}).then(()=>null):Promise.resolve(null)).pipe((0,n.switchMap)(()=>this.onUnload()),(0,n.endWith)(null),(0,n.first)(),(0,n.catchError)(e=>(a.error(`Error unloading document`,e),(0,n.of)(null))))}),(0,n.map)(()=>{this.mergeCompare({state:`idle`,error:void 0})}),(0,n.takeUntil)(r)))),(0,n.share)()),(0,n.merge)(this.loaded$,this.unloaded$).pipe((0,n.catchError)(e=>(this.mergeCompare({state:`error`,error:e}),n.EMPTY)),(0,n.takeUntil)(this.destroy$)).subscribe()}setDocumentContainer(t){t.classList.add(e.DOCUMENT_CONTAINER_CLASS_NAME),this.mergeCompare({documentContainer:t})}attach(){this.documentContainer&&this.containerElement.appendChild(this.documentContainer)}detach(){this.documentContainer?.remove(),this.mergeCompare({documentContainer:void 0})}get isLoaded$(){return this.state$.pipe((0,n.map)(e=>e.state===`loaded`))}load(){this.triggerSubject.next({type:`load`})}unload(){this.triggerSubject.next({type:`unload`})}renderHeadless(){let e=new n.Subject;return(0,n.defer)(()=>this.onRenderHeadless({release:e})).pipe((0,n.endWith)(void 0),(0,n.first)(),(0,n.map)(t=>{if(t)return{doc:t,release:()=>{e.next(void 0)}}}),(0,n.finalize)(()=>{e.complete()}),(0,n.catchError)(e=>(a.error(e),(0,n.of)(void 0))))}layout(e){return this.onLayout(e)}destroy(){this.unload(),this.stateSubject.complete(),super.destroy()}get documentContainer(){return this.value.documentContainer}get writingMode(){}get readingDirection(){}get renditionLayout(){let e=this.item.renditionLayout;if(e)return e;let t=this.getDocumentFrame();if(t){let{hasViewport:e}=w(t);if(e)return`pre-paginated`}return this.context.manifest?.renditionLayout??`reflowable`}},je=e=>new URL(e.href),j=class{constructor(e,t){this.item=e,this.settings=t}async getResource(){return await(0,n.lastValueFrom)(this.settings.values.getResource?.(this.item)??(0,n.of)(void 0))??je(this.item)}async fetchResource(){let e=await this.getResource();return e instanceof Response?e:e instanceof URL?fetch(e):e}},Me=(e,t)=>{let n=e.startsWith(`file://`),r=n?e.replace(`file://`,`http://`):e,i=new URL(t,r).toString();return n?i.replace(`http://`,`file://`):i},Ne=async(e,t,n,r,i)=>{if(!e||!e.defaultView)return;let a=t.sheet;if(a)try{let t=Array.from(a.cssRules||[]);for(let o=0;o<t.length;o++){let s=t[o];if(e.defaultView&&s instanceof e.defaultView.CSSFontFaceRule){let t=s.style.getPropertyValue(`src`);if(t.match(/url\(['"]?([^'"]+)['"]?\)/g)){let c=t.split(`,`).map(e=>e.trim()),l=await Promise.all(c.map(async t=>{if(t.startsWith(`local(`))return t;let a=t.match(/url\(['"]?([^'"]+)['"]?\)/);if(!a)return t;let o=a[1]??``,s=r.manifest?.items.find(({href:e})=>`${Me(n,o).toLowerCase()}`.endsWith(`${e.toLowerCase()}`));if(s){let n=new j(s,i);try{let r=await n.getResource();if(r instanceof Response){let n=await r.blob(),i=e.defaultView?.URL.createObjectURL(n);return t.replace(a[0],`url("${i}")`)}}catch(e){console.error(`Error loading font:`,e)}}return t})),u=s.cssText.replace(/src:\s*[^;]+;/,`src: ${l.join(`, `)};`);a.deleteRule(o),a.insertRule(u,o)}}}}catch(e){console.error(`Could not access stylesheet rules:`,e)}},Pe=(e,t,r,i,a)=>{let o=t.getAttribute(`src`)||t.getAttribute(`href`);if(!o)return(0,n.of)(null);let s=i.manifest?.items.find(({href:e})=>`${Me(r,o).toLowerCase()}`.endsWith(`${e.toLowerCase()}`));return s?(0,n.from)(new j(s,a).getResource()).pipe((0,n.mergeMap)(e=>e instanceof Response?(0,n.from)(e.blob()):(0,n.of)(void 0)),(0,n.mergeMap)(o=>{if(!o)return(0,n.of)(null);let s=e?.defaultView?.URL.createObjectURL(o)??``;if(t.hasAttribute(`src`))t.setAttribute(`src`,s);else if(t.hasAttribute(`href`)&&(t.setAttribute(`href`,s),e?.defaultView&&t instanceof e.defaultView.HTMLLinkElement))return new n.Observable(n=>{t.onload=async()=>{try{t.sheet&&await Ne(e,t,r,i,a),n.next(),n.complete()}catch(e){n.error(e)}},t.onerror=n.error});return(0,n.of)(null)})):(0,n.of)(null)},Fe=({settings:e,item:r,context:i})=>a=>a.pipe((0,n.switchMap)(a=>{let o=ne(a.contentDocument),s=(0,t.getParentPath)(r.href),c=o.map(t=>Pe(a.contentDocument,t,s,i,e));return c.length===0?(0,n.of)(a):(0,n.combineLatest)(c).pipe((0,n.map)(()=>a))})),Ie=e=>{re(e?.contentDocument)},Le=async(e,n)=>{if(typeof e==`string`)return new Blob([e],{type:`text/html`});let r=(0,t.parseContentType)(e.headers.get(`Content-Type`)||``)||(0,t.detectMimeTypeFromName)(n.href);if([`image/jpg`,`image/jpeg`,`image/png`,`image/webp`].some(e=>e===r)){let t=await e.blob(),r=URL.createObjectURL(t),i=await createImageBitmap(t),{width:a,height:o}={width:i.width,height:i.height};return i.close(),new Blob([`
15
15
  <html>
16
16
  <head>
17
17
  ${n.renditionLayout===`pre-paginated`?`<meta name="viewport" content="width=${a}, height=${o}">`:``}
@@ -39,7 +39,7 @@
39
39
  <pre>${t}</pre>
40
40
  </body>
41
41
  </html>
42
- `],{type:`text/html`})}return await e.blob()},Le=[`.txt`,`.jpg`,`.jpeg`,`.png`,`.webp`],Re=[`text/plain`,`image/jpg`,`image/jpeg`,`image/png`,`image/webp`],N=e=>{let t=e?.getAttribute(`src`);t?.startsWith(`blob:`)&&URL.revokeObjectURL(t)},ze=({item:e,resourcesHandler:t})=>{let r=(e,t)=>{N(e);let n=URL.createObjectURL(t);e.setAttribute(`src`,n)};return i=>i.pipe((0,n.switchMap)(i=>(0,n.from)(t.getResource()).pipe((0,n.switchMap)(o=>{let s=Le.some(t=>e.href.endsWith(t))||e.mediaType&&Re.includes(e.mediaType);return o instanceof URL&&e.href.startsWith(window.location.origin)&&!s?(N(i),i?.setAttribute(`src`,o.href),(0,n.of)(i)):(o instanceof URL?(0,n.from)(t.fetchResource()):(0,n.of)(o)).pipe((0,n.switchMap)(t=>{if(!(t instanceof Response))throw Error(`Invalid resource`);return Ie(t,e)}),(0,n.tap)(e=>{r(i,e)}),(0,n.map)(()=>i),(0,n.catchError)(t=>(a.error(`Error while trying to fetch or load resource for item ${e.id}`,o),a.error(t),(0,n.of)(i))))}))))},Be=()=>{let e=document.createElement(`iframe`);return e.frameBorder=`no`,e.tabIndex=0,e.setAttribute(`sandbox`,`
42
+ `],{type:`text/html`})}return await e.blob()},Re=[`.txt`,`.jpg`,`.jpeg`,`.png`,`.webp`],ze=[`text/plain`,`image/jpg`,`image/jpeg`,`image/png`,`image/webp`],Be=e=>{let t=e?.getAttribute(`src`);t?.startsWith(`blob:`)&&URL.revokeObjectURL(t)},Ve=({item:e,resourcesHandler:t})=>{let r=(e,t)=>{Be(e);let n=URL.createObjectURL(t);e.setAttribute(`src`,n)};return i=>i.pipe((0,n.switchMap)(i=>(0,n.from)(t.getResource()).pipe((0,n.switchMap)(o=>{let s=Re.some(t=>e.href.endsWith(t))||e.mediaType&&ze.includes(e.mediaType);return o instanceof URL&&e.href.startsWith(window.location.origin)&&!s?(Be(i),i?.setAttribute(`src`,o.href),(0,n.of)(i)):(o instanceof URL?(0,n.from)(t.fetchResource()):(0,n.of)(o)).pipe((0,n.switchMap)(t=>{if(!(t instanceof Response))throw Error(`Invalid resource`);return Le(t,e)}),(0,n.tap)(e=>{r(i,e)}),(0,n.map)(()=>i),(0,n.catchError)(t=>(a.error(`Error while trying to fetch or load resource for item ${e.id}`,o),a.error(t),(0,n.of)(i))))}))))},He=()=>{let e=document.createElement(`iframe`);return e.frameBorder=`no`,e.tabIndex=0,e.setAttribute(`sandbox`,`
43
43
  allow-same-origin
44
44
  allow-scripts
45
45
  allow-top-navigation-to-custom-protocols
@@ -48,7 +48,7 @@
48
48
  background-color: transparent;
49
49
  border: 0px none transparent;
50
50
  padding: 0px;
51
- `,e.setAttribute(`role`,`main`),e},Ve=`body{margin:0}html,body{width:100%;height:100%}html[data-prose-reader-html-renderer-has-viewport-dimensions=false] body{display:flex}html[data-prose-reader-html-renderer-has-viewport-dimensions=false][data-prose-reader-html-renderer-spread-position=left] body{justify-content:flex-end}html[data-prose-reader-html-renderer-has-viewport-dimensions=false][data-prose-reader-html-renderer-spread-position=right] body{justify-content:flex-start}html[data-prose-reader-html-renderer-has-viewport-dimensions=false][data-prose-reader-html-renderer-spread-position=none] body{justify-content:center}:not(html.prose-reader-html-renderer-touch-enabled),:not(html.prose-reader-html-renderer-touch-enabled) body{touch-action:none}img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;display:flex}html[data-prose-reader-html-renderer-has-viewport-dimensions=false] img{object-fit:contain;max-width:100%;height:100%}`,He=({pageHeight:e,pageWidth:t,frameElement:n})=>{let r=D(n),i=r.width,a=r.height;!i&&r.widthToken===`device-width`&&(i=t),!a&&r.heightToken===`device-height`&&(a=e),!a&&(i||r.widthToken===`device-width`)&&(a=e),!i&&(a||r.heightToken===`device-height`)&&(i=t);let o=r.hasViewport&&i&&a?{...r,width:i,height:a}:r;if(n?.contentDocument&&n.contentWindow&&o){let n=t/(o.width??1);return{computedScale:Math.min(n,e/(o.height??1)),computedWidthScale:n,viewportDimensions:o}}},Ue=new WeakMap,P=(e,t,n)=>{e.style.getPropertyValue(t)!==n&&e.style.setProperty(t,n)},F=(e,t)=>{e.style.getPropertyValue(t)!==``&&e.style.removeProperty(t)},We=(e,t)=>{let n=`${t.width}px`,r=`${t.height}px`;e.style.width!==n&&(e.style.width=n),e.style.height!==r&&(e.style.height=r)},Ge=(e,t,n)=>{let r=e.contentDocument?.documentElement;r&&r.getAttribute(t)!==n&&r.setAttribute(t,n)},Ke=({hasViewportDimensions:e,viewportWidth:t,viewportHeight:n,computedScale:r,spreadPosition:i,blankPagePosition:a,isRTL:o,pageWidth:s,pageHeight:c})=>[e?`1`:`0`,t??``,n??``,r,i,a,o?`1`:`0`,s,c].join(`|`),qe=({frameElement:e,viewportDimensions:t,computedScale:n,spreadPosition:r,blankPagePosition:i,isRTL:a,pageWidth:o})=>{if(t){P(e,`position`,`absolute`),P(e,`top`,`50%`),i===`before`?r===`left`?(P(e,`left`,a?`0`:`50%`),F(e,`right`)):r===`right`?(P(e,`right`,a?`50%`:`0`),F(e,`left`)):(P(e,`left`,a?`25%`:`75%`),F(e,`right`)):r===`left`?(P(e,`right`,`0`),F(e,`left`)):r===`right`?(P(e,`left`,`0`),F(e,`right`)):(P(e,`left`,i===`after`?a?`75%`:`25%`:`50%`),F(e,`right`));let t=r===`none`?`-50%`:`0`,o=i===`before`?r===`left`?`left`:r===`right`?`right`:`center`:r===`right`?`left`:r===`left`?`right`:`center`;P(e,`transform`,`translate(${t}, -50%) scale(${n})`),P(e,`transform-origin`,`${o} center`);return}i===`before`?a?P(e,`margin-right`,`${o}px`):P(e,`margin-left`,`${o}px`):(F(e,`margin-left`),F(e,`margin-right`))},Je=({minPageSpread:e,blankPagePosition:t,spreadPosition:n,pageHeight:r,pageWidth:i,frameElement:a,isRTL:o})=>{let s=e*i;if(a?.contentDocument&&a?.contentWindow){let{viewportDimensions:e,computedScale:c=1}=He({frameElement:a,pageHeight:r,pageWidth:i})??{},l=!!e,u=i,d=r,f=Ke({hasViewportDimensions:l,viewportWidth:e?.width,viewportHeight:e?.height,computedScale:c,spreadPosition:n,blankPagePosition:t,isRTL:o,pageWidth:i,pageHeight:r});return Ue.get(a)===f?{width:s,height:d}:(Ue.set(a,f),Ge(a,`data-prose-reader-html-renderer-has-viewport-dimensions`,l.toString()),e?We(a,{width:e.width??1,height:e.height??1}):We(a,{width:u,height:d}),qe({frameElement:a,viewportDimensions:e,computedScale:c,spreadPosition:n,blankPagePosition:t,isRTL:o,pageWidth:i}),{width:s,height:d})}return{width:s,height:r}},Ye=()=>`
51
+ `,e.setAttribute(`role`,`main`),e},Ue=`body{margin:0}html,body{width:100%;height:100%}html[data-prose-reader-html-renderer-has-viewport-dimensions=false] body{display:flex}html[data-prose-reader-html-renderer-has-viewport-dimensions=false][data-prose-reader-html-renderer-spread-position=left] body{justify-content:flex-end}html[data-prose-reader-html-renderer-has-viewport-dimensions=false][data-prose-reader-html-renderer-spread-position=right] body{justify-content:flex-start}html[data-prose-reader-html-renderer-has-viewport-dimensions=false][data-prose-reader-html-renderer-spread-position=none] body{justify-content:center}:not(html.prose-reader-html-renderer-touch-enabled),:not(html.prose-reader-html-renderer-touch-enabled) body{touch-action:none}img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;display:flex}html[data-prose-reader-html-renderer-has-viewport-dimensions=false] img{object-fit:contain;max-width:100%;height:100%}`,We=({pageHeight:e,pageWidth:t,frameElement:n})=>{let r=w(n),i=r.width,a=r.height;!i&&r.widthToken===`device-width`&&(i=t),!a&&r.heightToken===`device-height`&&(a=e),!a&&(i||r.widthToken===`device-width`)&&(a=e),!i&&(a||r.heightToken===`device-height`)&&(i=t);let o=r.hasViewport&&i&&a?{...r,width:i,height:a}:r;if(n?.contentDocument&&n.contentWindow&&o){let n=t/(o.width??1);return{computedScale:Math.min(n,e/(o.height??1)),computedWidthScale:n,viewportDimensions:o}}},Ge=new WeakMap,M=(e,t,n)=>{e.style.getPropertyValue(t)!==n&&e.style.setProperty(t,n)},N=(e,t)=>{e.style.getPropertyValue(t)!==``&&e.style.removeProperty(t)},Ke=(e,t)=>{let n=`${t.width}px`,r=`${t.height}px`;e.style.width!==n&&(e.style.width=n),e.style.height!==r&&(e.style.height=r)},qe=(e,t,n)=>{let r=e.contentDocument?.documentElement;r&&r.getAttribute(t)!==n&&r.setAttribute(t,n)},Je=({hasViewportDimensions:e,viewportWidth:t,viewportHeight:n,computedScale:r,spreadPosition:i,blankPagePosition:a,isRTL:o,pageWidth:s,pageHeight:c})=>[e?`1`:`0`,t??``,n??``,r,i,a,o?`1`:`0`,s,c].join(`|`),Ye=({frameElement:e,viewportDimensions:t,computedScale:n,spreadPosition:r,blankPagePosition:i,isRTL:a,pageWidth:o})=>{if(t){M(e,`position`,`absolute`),M(e,`top`,`50%`),i===`before`?r===`left`?(M(e,`left`,a?`0`:`50%`),N(e,`right`)):r===`right`?(M(e,`right`,a?`50%`:`0`),N(e,`left`)):(M(e,`left`,a?`25%`:`75%`),N(e,`right`)):r===`left`?(M(e,`right`,`0`),N(e,`left`)):r===`right`?(M(e,`left`,`0`),N(e,`right`)):(M(e,`left`,i===`after`?a?`75%`:`25%`:`50%`),N(e,`right`));let t=r===`none`?`-50%`:`0`,o=i===`before`?r===`left`?`left`:r===`right`?`right`:`center`:r===`right`?`left`:r===`left`?`right`:`center`;M(e,`transform`,`translate(${t}, -50%) scale(${n})`),M(e,`transform-origin`,`${o} center`);return}i===`before`?a?M(e,`margin-right`,`${o}px`):M(e,`margin-left`,`${o}px`):(N(e,`margin-left`),N(e,`margin-right`))},Xe=({minPageSpread:e,blankPagePosition:t,spreadPosition:n,pageHeight:r,pageWidth:i,frameElement:a,isRTL:o})=>{let s=e*i;if(a?.contentDocument&&a?.contentWindow){let{viewportDimensions:e,computedScale:c=1}=We({frameElement:a,pageHeight:r,pageWidth:i})??{},l=!!e,u=i,d=r,f=Je({hasViewportDimensions:l,viewportWidth:e?.width,viewportHeight:e?.height,computedScale:c,spreadPosition:n,blankPagePosition:t,isRTL:o,pageWidth:i,pageHeight:r});return Ge.get(a)===f?{width:s,height:d}:(Ge.set(a,f),qe(a,`data-prose-reader-html-renderer-has-viewport-dimensions`,l.toString()),e?Ke(a,{width:e.width??1,height:e.height??1}):Ke(a,{width:u,height:d}),Ye({frameElement:a,viewportDimensions:e,computedScale:c,spreadPosition:n,blankPagePosition:t,isRTL:o,pageWidth:i}),{width:s,height:d})}return{width:s,height:r}},Ze=()=>`
52
52
  body {
53
53
  margin: 0;
54
54
  }
@@ -65,7 +65,7 @@
65
65
  html, body {
66
66
  touch-action: none;
67
67
  }
68
- `,Xe=({isScrollable:e,enableTouch:t})=>`
68
+ `,Qe=({isScrollable:e,enableTouch:t})=>`
69
69
 
70
70
  html, body {
71
71
  width: 100%;
@@ -87,7 +87,7 @@
87
87
  display: block;
88
88
  }
89
89
  `:``}
90
- `,Ze=({width:e,columnHeight:t,columnWidth:n})=>`
90
+ `,$e=({width:e,columnHeight:t,columnWidth:n})=>`
91
91
  parsererror {
92
92
  display: none !important;
93
93
  }
@@ -151,14 +151,14 @@
151
151
  td {
152
152
  max-width: ${n}px;
153
153
  }
154
- `,Qe=({isUsingVerticalWriting:e,minimumWidth:t,pageHeight:n,pageWidth:r})=>{let i=r-0,a=n-0,o=r-0;return e&&(o=t-0,i=a),{columnHeight:a,columnWidth:i,width:o}},I=(e,t)=>{u(e.style,`width`,`${t.width}px`),u(e.style,`height`,`${t.height}px`)},$e=({pageHeight:e,pageWidth:t,frameElement:n,manifest:r,renditionFlow:i,minPageSpread:a,isRTL:o,blankPagePosition:s,isImageType:c,enableTouch:l,isUsingVerticalWriting:f})=>{let p=a*t,m=r?.renditionLayout===`reflowable`&&i===`scrolled-continuous`,h=m?Math.min(400,e):e;u(n.style,`width`,`${t}px`),m?d(n.style,`height`):u(n.style,`height`,`${h}px`);let{viewportDimensions:g,computedScale:_=1}=He({frameElement:n,pageHeight:h,pageWidth:t})??{},v=r?.renditionLayout===`pre-paginated`;if(n?.contentDocument&&n?.contentWindow&&n.contentDocument.body){let e=t,r=h;if(g?.hasViewport)E(n,`prose-reader-html-renderer-framce-css`,Ye()),I(n,{width:g.width??1,height:g.height??1}),u(n.style,`position`,`absolute`),u(n.style,`top`,`50%`),u(n.style,`left`,s===`before`?o?`25%`:`75%`:s===`after`?o?`75%`:`25%`:`50%`),u(n.style,`transform`,`translate(-50%, -50%) scale(${_})`),u(n.style,`transform-origin`,`center center`);else if(E(n,`prose-reader-css`,c?Xe({isScrollable:i===`scrolled-continuous`,enableTouch:l}):Ze(Qe({isUsingVerticalWriting:f,minimumWidth:p,pageHeight:h,pageWidth:t})),!0),f)r=Math.ceil(n.contentDocument.documentElement.scrollHeight/h)*h,I(n,{width:p,height:r});else if(i===`scrolled-continuous`)r=n.contentDocument.body.scrollHeight,I(n,{width:p,height:r});else{let i=Math.ceil(n.contentDocument.documentElement.scrollWidth/t);e=v?t:i*t,I(n,{width:e,height:r})}return e%p===0?u(n.style,`margin-left`,`0px`):(e+=t,o&&!f&&u(n.style,`margin-left`,`${t}px`)),{width:e,height:r}}},et=class extends ke{constructor(...e){super(...e),this.isPrePaginated=()=>this.item.renditionLayout===`pre-paginated`||!this.item.renditionLayout&&this.context.manifest?.renditionLayout===`pre-paginated`,this.isImageType=()=>!!(this.item.mediaType??(0,t.detectMimeTypeFromName)(this.item.href))?.startsWith(`image/`)}onCreateDocument(){let e=Be();return this.setDocumentContainer(e),(0,n.of)(e)}onLoadDocument(){let e=this.getFrameElement();if(!e)throw Error(`invalid frame`);return(0,n.of)(e).pipe(ze({item:this.item,resourcesHandler:this.resourcesHandler,settings:this.settings}),A(this.context.bridgeEvent.viewportFree$),(0,n.tap)(e=>{this.prepareFrameForAttach(e),this.attach()}),ce,(0,n.tap)(e=>{this.isPrePaginated()?E(e,`prose-reader-css`,Ve):this.isImageType()}),Pe({context:this.context,item:this.item,settings:this.settings}),le,(0,n.tap)(e=>{this.revealFrameAfterReady(e)}))}onUnload(){let e=this.getFrameElement();return Fe(e),N(e),this.detach(),n.EMPTY}onLayout({minPageSpread:e,blankPagePosition:t,spreadPosition:r}){let{width:i,height:a}=this.viewport.pageSize,o=this.getFrameElement();if(!o)return(0,n.of)(void 0);let c=this.settings.values.computedPageTurnMode===`scrollable`;if(o.contentDocument?.documentElement&&(s(o.contentDocument.documentElement,`data-prose-reader-html-renderer-spread-position`,r),c?o.contentDocument?.documentElement.classList.add(`prose-reader-html-renderer-touch-enabled`):o.contentDocument?.documentElement.classList.remove(`prose-reader-html-renderer-touch-enabled`)),this.isPrePaginated())return(0,n.of)(Je({blankPagePosition:t,frameElement:o,isRTL:this.context.isRTL(),minPageSpread:e,pageHeight:a,pageWidth:i,spreadPosition:r}));let l=!!this.writingMode?.startsWith(`vertical`),u=this.isImageType();return(0,n.of)($e({pageHeight:a,pageWidth:i,frameElement:o,manifest:this.context.manifest,renditionFlow:this.item.renditionFlow??this.context.manifest?.renditionFlow,blankPagePosition:t,isUsingVerticalWriting:l,isRTL:this.context.isRTL(),minPageSpread:e,isImageType:u,enableTouch:this.settings.values.computedPageTurnMode===`scrollable`}))}onRenderHeadless(){return(0,n.from)(this.resourcesHandler.fetchResource()).pipe((0,n.switchMap)(e=>{if(e instanceof Response){let t=e.headers.get(`content-type`)??``;if([`application/xhtml+xml`,`application/xml`,`text/html`,`text/xml`].includes(t))return(0,n.from)(e.text()).pipe((0,n.map)(e=>new DOMParser().parseFromString(e,t)))}return(0,n.of)(void 0)}))}getFrameElement(){let e=this.documentContainer;if(e instanceof HTMLIFrameElement)return e}prepareFrameForAttach(e){e.style.setProperty(`visibility`,`hidden`),e.style.setProperty(`pointer-events`,`none`),e.style.setProperty(`contain`,`layout paint size`),e.style.setProperty(`display`,`block`)}revealFrameAfterReady(e){e.style.removeProperty(`visibility`),e.style.removeProperty(`pointer-events`),e.style.removeProperty(`contain`)}getComputedStyleAfterLoad(){let e=this.getFrameElement(),t=e?.contentDocument?.body;if(t)return e?.contentWindow?.getComputedStyle(t)}get writingMode(){if(!this.isImageType())return this.getComputedStyleAfterLoad()?.writingMode}get readingDirection(){if(this.writingMode===`vertical-rl`)return`rtl`;switch(this.getComputedStyleAfterLoad()?.direction){case`ltr`:case`inherit`:case`initial`:return`ltr`;case`rtl`:return`rtl`;default:return}}getDocumentFrame(){return this.getFrameElement()}},tt=e=>t=>{let r=e({...t,getRenderer(e){return t.getRenderer?.(e)??(e=>new et(e))}}),i=Oe(r);return i.pipe((0,n.takeUntil)(r.$.destroy$)).subscribe(),{...r,links$:i}};function L(e){return e!=null}var R=class{constructor(e){this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.width=e.width,this.height=e.height,this.x=e.x,this.y=e.y}},z=class{constructor(e){this.__symbol=Symbol(`SpineItemPosition`),this.x=e.x,this.y=e.y}},B=class{constructor(e){this.__symbol=Symbol(`SpineItemPagePosition`),this.x=e.x,this.y=e.y}},nt=class extends R{constructor(...e){super(...e),this.__symbol=`SpineItemPageLayout`}},V=class extends R{constructor(...e){super(...e),this.__symbol=`SpineItemSpineLayout`}},rt=class extends R{constructor(...e){super(...e),this.__symbol=`SpineItemPageSpineLayout`}},H=class{constructor(e){this.x=e.x,this.y=e.y}},U=class e extends H{constructor(...e){super(...e),this.__symbol=`SpinePosition`}static from(t){return new e(t)}},W=class e extends H{constructor(...e){super(...e),this.__symbol=`UnboundSpinePosition`}static from(t){return new e(t)}},it=(e,t)=>{let n=t.getBoundingClientRect(),{x:r,y:i}=e,{left:a,top:o}=n,s=n.width/t.offsetWidth,c=n.height/t.offsetHeight,l=r-a,u=i-o;return{x:l/s,y:u/c}},at=(e,t)=>new W(it(e,t)),ot=e=>({getSpinePositionFromClientPosition:t=>e.spine.element?at(t,e.spine.element):void 0}),st=e=>{let t,i=e.context.watch(`rootElement`).pipe((0,r.switchMap)(e=>e?new n.Observable(()=>(t=e.ownerDocument.createElement(`div`),t.style.cssText=`
154
+ `,et=({isUsingVerticalWriting:e,minimumWidth:t,pageHeight:n,pageWidth:r})=>{let i=r-0,a=n-0,o=r-0;return e&&(o=t-0,i=a),{columnHeight:a,columnWidth:i,width:o}},P=(e,t)=>{u(e.style,`width`,`${t.width}px`),u(e.style,`height`,`${t.height}px`)},tt=({pageHeight:e,pageWidth:t,frameElement:n,manifest:r,renditionFlow:i,minPageSpread:a,isRTL:o,blankPagePosition:s,isImageType:c,enableTouch:l,isUsingVerticalWriting:f})=>{let p=a*t,m=r?.renditionLayout===`reflowable`&&i===`scrolled-continuous`,h=m?Math.min(400,e):e;u(n.style,`width`,`${t}px`),m?d(n.style,`height`):u(n.style,`height`,`${h}px`);let{viewportDimensions:g,computedScale:_=1}=We({frameElement:n,pageHeight:h,pageWidth:t})??{},v=r?.renditionLayout===`pre-paginated`;if(n?.contentDocument&&n?.contentWindow&&n.contentDocument.body){let e=t,r=h;if(g?.hasViewport)C(n,`prose-reader-html-renderer-framce-css`,Ze()),P(n,{width:g.width??1,height:g.height??1}),u(n.style,`position`,`absolute`),u(n.style,`top`,`50%`),u(n.style,`left`,s===`before`?o?`25%`:`75%`:s===`after`?o?`75%`:`25%`:`50%`),u(n.style,`transform`,`translate(-50%, -50%) scale(${_})`),u(n.style,`transform-origin`,`center center`);else if(C(n,`prose-reader-css`,c?Qe({isScrollable:i===`scrolled-continuous`,enableTouch:l}):$e(et({isUsingVerticalWriting:f,minimumWidth:p,pageHeight:h,pageWidth:t})),!0),f)r=Math.ceil(n.contentDocument.documentElement.scrollHeight/h)*h,P(n,{width:p,height:r});else if(i===`scrolled-continuous`)r=n.contentDocument.body.scrollHeight,P(n,{width:p,height:r});else{let i=Math.ceil(n.contentDocument.documentElement.scrollWidth/t);e=v?t:i*t,P(n,{width:e,height:r})}return e%p===0?u(n.style,`margin-left`,`0px`):(e+=t,o&&!f&&u(n.style,`margin-left`,`${t}px`)),{width:e,height:r}}},nt=class extends A{constructor(...e){super(...e),this.isPrePaginated=()=>this.item.renditionLayout===`pre-paginated`||!this.item.renditionLayout&&this.context.manifest?.renditionLayout===`pre-paginated`,this.isImageType=()=>!!(this.item.mediaType??(0,t.detectMimeTypeFromName)(this.item.href))?.startsWith(`image/`)}onCreateDocument(){let e=He();return this.setDocumentContainer(e),(0,n.of)(e)}onLoadDocument(){let e=this.getFrameElement();if(!e)throw Error(`invalid frame`);return(0,n.of)(e).pipe(Ve({item:this.item,resourcesHandler:this.resourcesHandler,settings:this.settings}),O(this.context.bridgeEvent.viewportFree$),(0,n.tap)(e=>{this.prepareFrameForAttach(e),this.attach()}),de,(0,n.tap)(e=>{this.isPrePaginated()?C(e,`prose-reader-css`,Ue):this.isImageType()}),Fe({context:this.context,item:this.item,settings:this.settings}),fe,(0,n.tap)(e=>{this.revealFrameAfterReady(e)}))}onUnload(){let e=this.getFrameElement();return Ie(e),Be(e),this.detach(),n.EMPTY}onLayout({minPageSpread:e,blankPagePosition:t,spreadPosition:r}){let{width:i,height:a}=this.viewport.pageSize,o=this.getFrameElement();if(!o)return(0,n.of)(void 0);let c=this.settings.values.computedPageTurnMode===`scrollable`;if(o.contentDocument?.documentElement&&(s(o.contentDocument.documentElement,`data-prose-reader-html-renderer-spread-position`,r),c?o.contentDocument?.documentElement.classList.add(`prose-reader-html-renderer-touch-enabled`):o.contentDocument?.documentElement.classList.remove(`prose-reader-html-renderer-touch-enabled`)),this.isPrePaginated())return(0,n.of)(Xe({blankPagePosition:t,frameElement:o,isRTL:this.context.isRTL(),minPageSpread:e,pageHeight:a,pageWidth:i,spreadPosition:r}));let l=!!this.writingMode?.startsWith(`vertical`),u=this.isImageType();return(0,n.of)(tt({pageHeight:a,pageWidth:i,frameElement:o,manifest:this.context.manifest,renditionFlow:this.item.renditionFlow??this.context.manifest?.renditionFlow,blankPagePosition:t,isUsingVerticalWriting:l,isRTL:this.context.isRTL(),minPageSpread:e,isImageType:u,enableTouch:this.settings.values.computedPageTurnMode===`scrollable`}))}onRenderHeadless(){return(0,n.from)(this.resourcesHandler.fetchResource()).pipe((0,n.switchMap)(e=>{if(e instanceof Response){let t=e.headers.get(`content-type`)??``;if([`application/xhtml+xml`,`application/xml`,`text/html`,`text/xml`].includes(t))return(0,n.from)(e.text()).pipe((0,n.map)(e=>new DOMParser().parseFromString(e,t)))}return(0,n.of)(void 0)}))}getFrameElement(){let e=this.documentContainer;if(e instanceof HTMLIFrameElement)return e}prepareFrameForAttach(e){e.style.setProperty(`visibility`,`hidden`),e.style.setProperty(`pointer-events`,`none`),e.style.setProperty(`contain`,`layout paint size`),e.style.setProperty(`display`,`block`)}revealFrameAfterReady(e){e.style.removeProperty(`visibility`),e.style.removeProperty(`pointer-events`),e.style.removeProperty(`contain`)}getComputedStyleAfterLoad(){let e=this.getFrameElement(),t=e?.contentDocument?.body;if(t)return e?.contentWindow?.getComputedStyle(t)}get writingMode(){if(!this.isImageType())return this.getComputedStyleAfterLoad()?.writingMode}get readingDirection(){if(this.writingMode===`vertical-rl`)return`rtl`;switch(this.getComputedStyleAfterLoad()?.direction){case`ltr`:case`inherit`:case`initial`:return`ltr`;case`rtl`:return`rtl`;default:return}}getDocumentFrame(){return this.getFrameElement()}},rt=e=>t=>{let r=e({...t,getRenderer(e){return t.getRenderer?.(e)??(e=>new nt(e))}}),i=Ae(r);return i.pipe((0,n.takeUntil)(r.$.destroy$)).subscribe(),{...r,links$:i}};function F(e){return e!=null}var I=class{constructor(e){this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.width=e.width,this.height=e.height,this.x=e.x,this.y=e.y}},L=class{constructor(e){this.__symbol=Symbol(`SpineItemPosition`),this.x=e.x,this.y=e.y}},R=class{constructor(e){this.__symbol=Symbol(`SpineItemPagePosition`),this.x=e.x,this.y=e.y}},it=class extends I{constructor(...e){super(...e),this.__symbol=`SpineItemPageLayout`}},z=class extends I{constructor(...e){super(...e),this.__symbol=`SpineItemSpineLayout`}},at=class extends I{constructor(...e){super(...e),this.__symbol=`SpineItemPageSpineLayout`}},B=class{constructor(e){this.x=e.x,this.y=e.y}},V=class e extends B{constructor(...e){super(...e),this.__symbol=`SpinePosition`}static from(t){return new e(t)}},H=class e extends B{constructor(...e){super(...e),this.__symbol=`UnboundSpinePosition`}static from(t){return new e(t)}},ot=(e,t)=>{let n=t.getBoundingClientRect(),{x:r,y:i}=e,{left:a,top:o}=n,s=n.width/t.offsetWidth,c=n.height/t.offsetHeight,l=r-a,u=i-o;return{x:l/s,y:u/c}},st=(e,t)=>new H(ot(e,t)),ct=e=>({getSpinePositionFromClientPosition:t=>e.spine.element?st(t,e.spine.element):void 0}),lt=e=>{let t,i=e.context.watch(`rootElement`).pipe((0,r.switchMap)(e=>e?new n.Observable(()=>(t=e.ownerDocument.createElement(`div`),t.style.cssText=`
155
155
  position: absolute;
156
156
  left: 0;
157
157
  top: 0;
158
158
  width: 100%;
159
159
  height: 100%;
160
160
  visibility: hidden;
161
- `,e.appendChild(t),()=>{t?.remove(),t=void 0})):n.NEVER)),a=e=>(0,n.scheduled)(e,n.animationFrameScheduler).pipe((0,r.tap)(()=>{t&&u(t.style,`visibility`,`hidden`)})),o=e.context.bridgeEvent.viewportBusy$.pipe((0,r.tap)(()=>{t&&u(t.style,`visibility`,`visible`)})),s=a(e.viewportFree$).pipe((0,r.take)(1));return(0,n.merge)(i,e.settings.values$.pipe((0,r.map)(()=>e.settings.values.computedPageTurnMode),(0,r.distinctUntilChanged)()).pipe((0,r.switchMap)(e=>e===`controlled`?o.pipe((0,r.switchMap)(()=>s)):a((0,n.of)(void 0))),(0,r.takeUntil)(e.$.destroy$)))},ct=`@prose-reader/core`,lt=0,ut=200,G=`prose-reader`,dt=`${G}-style`,ft=`data-${G}-id`,pt=`${G}-viewport`,mt=`${G}-scroll-navigator`,ht=`${G}-spine-item`,gt=`--${G}-absolute-viewport-width`,_t=`--${G}-absolute-viewport-height`,vt=`${G}-enhancer-loading`,yt=`${vt}-container`,bt=`${vt}-logo`,xt=`${vt}-details`,St=({container:e,item:t})=>{let n=e.ownerDocument.createElement(`div`);n.classList.add(yt);let r=n.ownerDocument.createElement(`div`);r.classList.add(bt),r.innerText=`prose`;let i=n.ownerDocument.createElement(`div`);return i.classList.add(xt),i.setAttribute(`data-details-element`,`true`),i.innerText=`loading ${t.id}`,n.appendChild(r),n.appendChild(i),n},Ct=e=>e===`sepia`?`#939393`:`rgb(202, 202, 202)`,wt=({loadingElement:e,theme:t})=>{u(e.style,`color`,Ct(t))},Tt=e=>{let t=new WeakMap;return e.hookManager.register(`item.onBeforeContainerAttach`,({element:n,item:r})=>{u(n.style,`z-index`,`0`);let i=St({container:n,item:r});wt({loadingElement:i,theme:e.theme.get()}),t.set(n,i),n.appendChild(i)}),(0,n.merge)(e.spineItemsObserver.states$.pipe((0,r.tap)(({item:e,isError:n,error:r})=>{if(!n)return;let i=t.get(e.containerElement);if(!i)return;let a=i.querySelector(`[data-details-element]`);a instanceof HTMLElement&&l(a,`innerText`,r?.toString()??`Unknown error`)})),e.theme.$.theme$.pipe((0,r.tap)(n=>{for(let r of e.spineItemsManager.items){let e=t.get(r.containerElement);e&&wt({loadingElement:e,theme:n})}})))},Et=e=>{e.hookManager.register(`item.onDocumentLoad`,async({itemId:t})=>{let n=e.spineItemsManager.get(t)?.renderer.getDocumentFrame();n&&s(n,`scrolling`,`no`)})},Dt=e=>{e.hookManager.register(`item.onAfterLayout`,({item:t,blankPagePosition:n,minimumWidth:r})=>{let i=e.spineItemsManager.get(t.id),a=i?.renderer.getDocumentFrame();if(i?.renditionLayout!==`reflowable`||!(a instanceof HTMLIFrameElement))return;let{hasViewport:o}=D(a),{width:s}=e.viewport.pageSize,c=i?.renderer.getDocumentFrame();o&&n===`none`&&s<r&&c instanceof HTMLIFrameElement&&u(c.style,`left`,e.context.isRTL()?`75%`:`25%`)})},Ot=e=>e.spineItemsObserver.states$.pipe((0,n.tap)(({item:e,isReady:t,isDirty:n})=>{e.containerElement.dataset.isDirty=n.toString(),e.containerElement.dataset.isReady=t.toString()})),kt=class extends we{computeOutputSettings(e){return e}hasSettingsChanged(e){return!(0,t.isShallowEqual)(this.outputSettings,e)}getCleanedParentInputSettings(e){let{layoutAutoResize:t,pageHorizontalMargin:n,pageVerticalMargin:r,layoutLayerTransition:i,...a}=e;return a}getDefaultSettings(){return{layoutAutoResize:`container`,pageHorizontalMargin:24,pageVerticalMargin:24,layoutLayerTransition:!0}}},At=({manifest:e,spreadMode:t})=>e?.renditionFlow===`scrolled-continuous`?!1:t,jt=e=>e===void 0||e===`auto`||e===`landscape`||e===`both`,Mt=({manifest:e,viewport:t})=>{let n=t.width>t.height;return!!(!n&&e?.renditionSpread===`portrait`||n&&jt(e?.renditionSpread))},Nt=({manifest:e,viewport:t})=>At({manifest:e,spreadMode:Mt({manifest:e,viewport:t})}),Pt=e=>(0,n.combineLatest)([e.viewport.watch([`width`,`height`]),e.context.watch(`manifest`)]).pipe((0,n.tap)(([t,n])=>e.settings.update({spreadMode:Mt({manifest:n,viewport:t})}))),Ft=e=>i=>{let{pageHorizontalMargin:a,pageVerticalMargin:o,layoutAutoResize:c,layoutLayerTransition:l}=i,d=e(i),f=new kt({pageHorizontalMargin:a,pageVerticalMargin:o,layoutAutoResize:c,layoutLayerTransition:l},d.settings);d.hookManager.register(`onViewportOffsetAdjust`,()=>{for(let e of d.spineItemsManager.items){let t=e.renderer.getDocumentFrame();if(t){t.getBoundingClientRect().left;break}}}),d.hookManager.register(`item.onBeforeLayout`,({item:e})=>{let n=d.spineItemsManager.get(e.id),r=!!(e.mediaType??(0,t.detectMimeTypeFromName)(e.href))?.startsWith(`image/`),{pageHorizontalMargin:i=0,pageVerticalMargin:a=0}=f.values,o=d.viewport.pageSize;if(n?.renditionLayout===`reflowable`&&!r){let e=o.width-i*2,t=o.height-a*2,r=o.width-i*2,s=i*2;n.isUsingVerticalWriting()&&(r=o.width-i*2,e=t,s=a*2);let c=n?.renderer.getDocumentFrame();c&&E(c,`prose-layout-enhancer-css`,`
161
+ `,e.appendChild(t),()=>{t?.remove(),t=void 0})):n.NEVER)),a=e=>(0,n.scheduled)(e,n.animationFrameScheduler).pipe((0,r.tap)(()=>{t&&u(t.style,`visibility`,`hidden`)})),o=e.context.bridgeEvent.viewportBusy$.pipe((0,r.tap)(()=>{t&&u(t.style,`visibility`,`visible`)})),s=a(e.viewportFree$).pipe((0,r.take)(1));return(0,n.merge)(i,e.settings.values$.pipe((0,r.map)(()=>e.settings.values.computedPageTurnMode),(0,r.distinctUntilChanged)()).pipe((0,r.switchMap)(e=>e===`controlled`?o.pipe((0,r.switchMap)(()=>s)):a((0,n.of)(void 0))),(0,r.takeUntil)(e.$.destroy$)))},ut=`@prose-reader/core`,dt=0,ft=200,U=`prose-reader`,pt=`${U}-style`,mt=`data-${U}-id`,ht=`${U}-viewport`,gt=`${U}-scroll-navigator`,_t=`${U}-spine-item`,W=`--${U}-absolute-viewport-width`,G=`--${U}-absolute-viewport-height`,vt=`${U}-enhancer-loading`,yt=`${vt}-container`,bt=`${vt}-logo`,xt=`${vt}-details`,St=({container:e,item:t})=>{let n=e.ownerDocument.createElement(`div`);n.classList.add(yt);let r=n.ownerDocument.createElement(`div`);r.classList.add(bt),r.innerText=`prose`;let i=n.ownerDocument.createElement(`div`);return i.classList.add(xt),i.setAttribute(`data-details-element`,`true`),i.innerText=`loading ${t.id}`,n.appendChild(r),n.appendChild(i),n},Ct=e=>e===`sepia`?`#939393`:`rgb(202, 202, 202)`,wt=({loadingElement:e,theme:t})=>{u(e.style,`color`,Ct(t))},Tt=e=>{let t=new WeakMap;return e.hookManager.register(`item.onBeforeContainerAttach`,({element:n,item:r})=>{u(n.style,`z-index`,`0`);let i=St({container:n,item:r});wt({loadingElement:i,theme:e.theme.get()}),t.set(n,i),n.appendChild(i)}),(0,n.merge)(e.spineItemsObserver.states$.pipe((0,r.tap)(({item:e,isError:n,error:r})=>{if(!n)return;let i=t.get(e.containerElement);if(!i)return;let a=i.querySelector(`[data-details-element]`);a instanceof HTMLElement&&l(a,`innerText`,r?.toString()??`Unknown error`)})),e.theme.$.theme$.pipe((0,r.tap)(n=>{for(let r of e.spineItemsManager.items){let e=t.get(r.containerElement);e&&wt({loadingElement:e,theme:n})}})))},Et=e=>{e.hookManager.register(`item.onDocumentLoad`,async({itemId:t})=>{let n=e.spineItemsManager.get(t)?.renderer.getDocumentFrame();n&&s(n,`scrolling`,`no`)})},Dt=e=>{e.hookManager.register(`item.onAfterLayout`,({item:t,blankPagePosition:n,minimumWidth:r})=>{let i=e.spineItemsManager.get(t.id),a=i?.renderer.getDocumentFrame();if(i?.renditionLayout!==`reflowable`||!(a instanceof HTMLIFrameElement))return;let{hasViewport:o}=w(a),{width:s}=e.viewport.pageSize,c=i?.renderer.getDocumentFrame();o&&n===`none`&&s<r&&c instanceof HTMLIFrameElement&&u(c.style,`left`,e.context.isRTL()?`75%`:`25%`)})},Ot=e=>e.spineItemsObserver.states$.pipe((0,n.tap)(({item:e,isReady:t,isDirty:n})=>{e.containerElement.dataset.isDirty=n.toString(),e.containerElement.dataset.isReady=t.toString()})),kt=class extends Ee{computeOutputSettings(e){return e}hasSettingsChanged(e){return!(0,t.isShallowEqual)(this.outputSettings,e)}getCleanedParentInputSettings(e){let{layoutAutoResize:t,pageHorizontalMargin:n,pageVerticalMargin:r,layoutLayerTransition:i,...a}=e;return a}getDefaultSettings(){return{layoutAutoResize:`container`,pageHorizontalMargin:24,pageVerticalMargin:24,layoutLayerTransition:!0}}},At=({manifest:e,spreadMode:t})=>e?.renditionFlow===`scrolled-continuous`?!1:t,jt=e=>e===void 0||e===`auto`||e===`landscape`||e===`both`,Mt=({manifest:e,viewport:t})=>{let n=t.width>t.height;return!!(!n&&e?.renditionSpread===`portrait`||n&&jt(e?.renditionSpread))},Nt=({manifest:e,viewport:t})=>At({manifest:e,spreadMode:Mt({manifest:e,viewport:t})}),Pt=e=>(0,n.combineLatest)([e.viewport.watch([`width`,`height`]),e.context.watch(`manifest`)]).pipe((0,n.tap)(([t,n])=>e.settings.update({spreadMode:Mt({manifest:n,viewport:t})}))),Ft=e=>i=>{let{pageHorizontalMargin:a,pageVerticalMargin:o,layoutAutoResize:c,layoutLayerTransition:l}=i,d=e(i),f=new kt({pageHorizontalMargin:a,pageVerticalMargin:o,layoutAutoResize:c,layoutLayerTransition:l},d.settings);d.hookManager.register(`onViewportOffsetAdjust`,()=>{for(let e of d.spineItemsManager.items){let t=e.renderer.getDocumentFrame();if(t){t.getBoundingClientRect().left;break}}}),d.hookManager.register(`item.onBeforeLayout`,({item:e})=>{let n=d.spineItemsManager.get(e.id),r=!!(e.mediaType??(0,t.detectMimeTypeFromName)(e.href))?.startsWith(`image/`),{pageHorizontalMargin:i=0,pageVerticalMargin:a=0}=f.values,o=d.viewport.pageSize;if(n?.renditionLayout===`reflowable`&&!r){let e=o.width-i*2,t=o.height-a*2,r=o.width-i*2,s=i*2;n.isUsingVerticalWriting()&&(r=o.width-i*2,e=t,s=a*2);let c=n?.renderer.getDocumentFrame();c&&C(c,`prose-layout-enhancer-css`,`
162
162
  body {
163
163
  width: ${r}px !important;
164
164
  margin: ${a}px ${i}px !important;
@@ -176,7 +176,7 @@
176
176
  td {
177
177
  max-width: ${e}px;
178
178
  }
179
- `)}}),Dt(d),Et(d),d.hookManager.register(`item.onDocumentCreated`,({documentContainer:e})=>{u(e.style,`opacity`,`0`),f.values.layoutLayerTransition&&u(e.style,`transition`,`opacity 800ms`)}),d.hookManager.register(`item.onBeforeLayout`,({item:e})=>{let t=d.spineItemsManager.get(e.id)?.renderer.documentContainer;d.settings.values.computedPageTurnMode!==`scrollable`&&t&&s(t,`tab-index`,`0`)});let p=d.spineItemsObserver.states$.pipe((0,r.filter)(({isReady:e})=>e),(0,r.tap)(({item:e})=>{let t=e.renderer.documentContainer;t&&u(t.style,`opacity`,`1`)})),m=f.values$.pipe((0,r.filter)(({layoutAutoResize:e})=>e===`container`),(0,r.switchMap)(()=>d.context.watch(`rootElement`)),(0,r.filter)(L),(0,r.switchMap)(e=>k(e)),(0,r.debounceTime)(100),(0,r.filter)(L),(0,r.tap)(()=>{d?.layout()})),h=st(d);f.watch([`pageHorizontalMargin`,`pageVerticalMargin`]).pipe((0,r.skip)(1),(0,r.tap)(()=>{d.layout()}),(0,r.takeUntil)(d.$.destroy$)).subscribe();let g=d.spine.pages.pipe((0,r.shareReplay)({refCount:!0,bufferSize:1}));return(0,n.merge)(p,h,m,g,Ot(d),Pt(d),Tt(d)).pipe((0,r.takeUntil)(d.$.destroy$)).subscribe(),{...d,destroy:()=>{f.destroy(),d.destroy()},settings:f,layout$:d.spine.layout$,layoutInfo$:g,coordinates:ot(d)}},It=e=>t=>{let n=e(t),r=new IntersectionObserver(e=>{e.forEach(e=>{let t=e.target,n=Array.from(t.contentDocument?.body.getElementsByTagName(`audio`)||[]);e.isIntersecting?n.forEach(e=>{e.hasAttribute(`autoplay`)&&e.paused&&e.readyState>=2&&e.play().catch(console.error)}):n.forEach(e=>{e.pause(),e.currentTime=0})})},{threshold:.01}),i=new IntersectionObserver(e=>{e.forEach(e=>{if(e.target.tagName===`video`){let 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}),a=new Map;n.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{a.get(e)?.(),a.delete(e);let t=n.spineItemsManager.get(e)?.renderer.getDocumentFrame();if(!t)return;r.observe(t);let o=t.contentDocument?.body.getElementsByTagName(`video`),s=Array.from(o||[]).map(e=>(i.observe(e),()=>i.unobserve(e)));a.set(e,()=>{r.unobserve(t),s.forEach(e=>{e()})})}),n.hookManager.register(`item.onDocumentUnload`,async({itemId:e})=>{a.get(e)?.(),a.delete(e)});let o=()=>{r.disconnect(),i.disconnect(),a.clear(),n.destroy()};return{...n,destroy:o}},Lt=e=>t=>t.pipe((0,n.switchMap)(t=>e.pipe((0,n.filter)(e=>e===`free`),(0,n.first)(),(0,n.map)(()=>t)))),Rt=({navigation$:e,navigationState$:t})=>e.pipe(Lt(t)),zt=e=>Rt(e).pipe((0,n.skip)(1)),Bt=e=>t=>t.pipe((0,n.takeUntil)(zt(e))),Vt=e=>e.navigation.navigation$.pipe((0,n.filter)(e=>e.triggeredBy===`user`),Lt(e.navigation.navigationState$),(0,n.map)(t=>{let n=t.requestedPosition,r=t.requestedVisibleArea;return n&&r?e.navigation.navigationResolver.getBoundaryForPosition(n,r):void 0}),(0,n.filter)(e=>e!==void 0),(0,n.map)(e=>({boundary:e})),(0,n.share)()),Ht=(e,t)=>e.links$.pipe((0,n.tap)(n=>{if(!ie(n.target,`a`)||n.type!==`click`)return;let r=new URL(n.target.href),i=`${r.origin}${r.pathname}`;e.context.manifest?.spineItems.some(e=>e.href===i)&&t.goToUrl(r)})),K=a.namespace(`navigation`),Ut=({position:e,spineItem:t,pageHeight:n,pageWidth:r,spineItemLocator:i})=>{let a=new z({x:e.x-r,y:e.y});return t.isUsingVerticalWriting()&&(a=new z({x:e.x,y:e.y+n})),i.getSpineItemClosestPositionFromUnsafePosition(a,t)},Wt=({position:e,navigationResolver:t,computedPageTurnDirection:n,spineItemsManager:r,spineLocator:i,viewport:a})=>{let o=n,s=i.getSpineItemFromPosition(e)||r.get(0),c=e;if(!s)return c;let l=i.getSpineItemPositionFromSpinePosition(e,s),u=Ut({position:l,spineItem:s,pageHeight:a.pageSize.height,pageWidth:a.pageSize.width,spineItemLocator:i.spineItemLocator});return t.arePositionsDifferent(u,l)?i.getSpinePositionFromSpineItemPosition({spineItemPosition:u,spineItem:s}):o===`horizontal`?new W({x:e.x-a.pageSize.width,y:0}):new W({y:e.y-a.pageSize.height,x:0})},Gt=({position:e,spineItem:t,context:n,navigationResolver:r,spineItemsManager:i,spineLocator:a,computedPageTurnDirection:o,viewport:s,settings:c})=>{if(c.values.computedPageTurnMode===`scrollable`&&o===`vertical`)return new W({x:e.x,y:e.y-s.pageSize.height});let l=Wt({position:e,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});if(t?.isUsingVerticalWriting()&&e.x===l.x)return r.getAdjustedPositionForSpread(l);if(c.values.computedSpreadMode){if(t?.isUsingVerticalWriting()&&e.x!==l.x)return r.getAdjustedPositionForSpread(n.isRTL()?new W({x:l.x+s.pageSize.width,y:l.y}):new W({x:l.x-s.pageSize.width,y:l.y}));if(o===`vertical`&&e.y!==l.y)return r.getAdjustedPositionForSpread(l);let c=Wt({position:l,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});return r.getAdjustedPositionForSpread(c)}return r.getAdjustedPositionForSpread(l)},Kt=({position:e,spineItem:t,pageHeight:n,pageWidth:r,spineItemLocator:i})=>{let a=new z({x:e.x+r,y:e.y});return t.isUsingVerticalWriting()&&(a=new z({x:e.x,y:e.y-n})),i.getSpineItemClosestPositionFromUnsafePosition(a,t)},qt=({position:e,navigationResolver:t,computedPageTurnDirection:n,spineItemsManager:r,spineLocator:i,viewport:a})=>{let o=n,s=i.getSpineItemFromPosition(e)||r.get(0),c=e;if(!s)return c;let l=i.getSpineItemPositionFromSpinePosition(e,s),u=Kt({position:l,spineItem:s,pageHeight:a.pageSize.height,pageWidth:a.pageSize.width,spineItemLocator:i.spineItemLocator});return t.arePositionsDifferent(u,l)?i.getSpinePositionFromSpineItemPosition({spineItemPosition:u,spineItem:s}):o===`horizontal`?new W({x:e.x+a.pageSize.width,y:0}):new W({y:e.y+a.pageSize.height,x:0})},Jt=({position:e,spineItem:t,context:n,navigationResolver:r,spineItemsManager:i,spineLocator:a,computedPageTurnDirection:o,viewport:s,settings:c})=>{if(c.values.computedPageTurnMode===`scrollable`&&o===`vertical`)return new W({x:e.x,y:e.y+s.pageSize.height});let l=qt({position:e,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});if(t?.isUsingVerticalWriting()&&e.x===l.x)return r.getAdjustedPositionForSpread(l);if(c.values.computedSpreadMode){if(t?.isUsingVerticalWriting()&&e.x!==l.x)return r.getAdjustedPositionForSpread(n.isRTL()?new W({x:l.x-s.pageSize.width,y:l.y}):new W({x:l.x+s.pageSize.width,y:l.y}));if(o===`vertical`&&e.y!==l.y)return r.getAdjustedPositionForSpread(l);let c=qt({position:l,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});return r.getAdjustedPositionForSpread(c)}return r.getAdjustedPositionForSpread(l)},Yt=class{constructor(e){this.reader=e,this.movingLastDelta={x:0,y:0},this.movingLastPosition=new U({x:0,y:0}),this.unlock=void 0}turnRight(){return this.turnRightOrBottom()}turnLeft(){return this.turnLeftOrTop()}turnTop(){return this.turnLeftOrTop()}turnBottom(){return this.turnRightOrBottom()}turnRightOrBottom(){let e=this.reader.navigation.getNavigation(),t=this.reader.spineItemsManager.get(e.spineItem);if(!t)return;let n=Jt({context:this.reader.context,navigationResolver:this.reader.navigation.navigationResolver,position:e.position,computedPageTurnDirection:this.reader.settings.values.computedPageTurnDirection,spineItem:t,spineItemsManager:this.reader.spineItemsManager,spineLocator:this.reader.spine.locator,viewport:this.reader.viewport,settings:this.reader.settings});return this.reader.navigation.navigate({position:n})}turnLeftOrTop(){let e=this.reader.navigation.getNavigation(),t=this.reader.spineItemsManager.get(e.spineItem);if(!t)return;let n=Gt({context:this.reader.context,navigationResolver:this.reader.navigation.navigationResolver,position:e.position,computedPageTurnDirection:this.reader.settings.values.computedPageTurnDirection,spineItem:t,spineItemsManager:this.reader.spineItemsManager,spineLocator:this.reader.spine.locator,viewport:this.reader.viewport,settings:this.reader.settings});return this.reader.navigation.navigate({position:n})}goToCfi(e,t={animate:!0}){return this.reader.navigation.navigate({animation:t.animate?`turn`:!1,cfi:e})}goToSpineItem({indexOrId:e,...t}){let n=this.reader.spineItemsManager.get(e);if(n===void 0){K.warn(`goToSpineItem`,`Ignore navigation to ${e} since the item does not exist`);return}this.reader.navigation.navigate({spineItem:n.index,...t})}goToNextSpineItem(){let{endIndex:e=0}=this.reader.spine.locator.getVisibleSpineItemsFromPosition({position:this.reader.navigation.getNavigation().position,threshold:{type:`percentage`,value:.5}})||{};this.goToSpineItem({indexOrId:e+1})}goToPreviousSpineItem(){let{beginIndex:e=0}=this.reader.spine.locator.getVisibleSpineItemsFromPosition({position:this.reader.navigation.getNavigation().position,threshold:{type:`percentage`,value:.5}})??{};this.goToSpineItem({indexOrId:e-1})}goToUrl(e){this.reader.navigation.navigate({url:e,animation:!1})}goToRightSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`vertical`){K.warn(`You cannot call this navigation method on vertical direction`);return}return this.reader.context.isRTL()?this.goToPreviousSpineItem():this.goToNextSpineItem()}goToRightOrBottomSpineItem(){return this.reader.settings.values.computedPageTurnDirection===`vertical`?this.goToBottomSpineItem():this.goToRightSpineItem()}goToLeftOrTopSpineItem(){return this.reader.settings.values.computedPageTurnDirection===`vertical`?this.goToTopSpineItem():this.goToLeftSpineItem()}goToLeftSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`vertical`){K.warn(`You cannot call this navigation method on vertical direction`);return}return this.reader.context.isRTL()?this.goToNextSpineItem():this.goToPreviousSpineItem()}goToTopSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`horizontal`){K.warn(`You cannot call this navigation method on horizontal direction`);return}return this.goToPreviousSpineItem()}goToBottomSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`horizontal`){K.warn(`You cannot call this navigation method on horizontal direction`);return}return this.goToNextSpineItem()}goToPageOfSpineItem({pageIndex:e,spineItemId:t,...n}){let r=this.reader.navigation.navigationResolver.getNavigationForSpineItemPage({pageIndex:e,spineItemId:t});K.debug(`.goToPageOfSpineItem()`,{pageIndex:e,spineItemId:t,...n,position:r}),this.reader.navigation.navigate({position:r,...n})}goToAbsolutePageIndex({absolutePageIndex:e,...t}){let n=this.reader.spine.pages.fromAbsolutePageIndex(e);if(K.debug(`.goToAbsolutePageIndex()`,{absolutePageIndex:e,...t,foundInfo:n}),n){let e=this.reader.navigation.navigationResolver.getNavigationForSpineItemPage({pageIndex:n.pageIndex,spineItemId:n.itemIndex});return this.reader.navigation.navigate({position:e,...t})}}},Xt=class extends j{constructor(e){super({lastDelta:{x:0,y:0},lastPosition:new U({x:0,y:0}),lastStartPosition:new U({x:0,y:0}),isStarted:!1}),this.reader=e,this.unlock=void 0}start(e){this.unlock?.(),this.unlock=this.reader.navigation.lock(),this.mergeCompare({isStarted:!0,lastDelta:e,lastStartPosition:this.reader.navigation.controlledNavigationController.viewportPosition,lastPosition:this.reader.navigation.controlledNavigationController.viewportPosition})}stop(e){this.panMoveTo(e),this.mergeCompare({isStarted:!1}),this.unlock?.()}panMoveTo(e){if(this.reader.settings.values.computedPageTurnMode===`scrollable`){K.warn(`pan control is not available on free page turn mode`);return}if(!this.value.isStarted){K.error(`Pan navigator is not started`);return}let t=this.reader.settings.values.computedPageTurnDirection,n=this.reader.navigation.getNavigation().position;if(e){let r=this.reader.viewport.absoluteViewport.width/this.reader.viewport.relativeViewport.width,i=Math.floor(e.x)-(this.value.lastDelta?.x||0),a=Math.floor(e.y)-(this.value.lastDelta?.y||0);n=new U({x:Math.floor(t===`horizontal`?this.value.lastPosition.x-i/r:0),y:Math.floor(t===`horizontal`?0:this.value.lastPosition.y-a/r)}),this.mergeCompare({lastDelta:e})}else n=this.value.lastPosition;this.mergeCompare({lastPosition:n}),this.reader.navigation.navigate({position:n,animation:!1})}},q=class{constructor(){this.isDestroyed=!1,this.destroySubject=new n.Subject,this.destroy$=this.destroySubject.asObservable()}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.destroySubject.next(),this.destroySubject.complete())}},Zt=500,Qt=class extends q{constructor(e,t){super(),this.scrollNavigationController=e,this.lock=t,this.navigationSubject=new n.Subject,this.navigation$=this.navigationSubject.asObservable(),(0,n.merge)(this.scrollNavigationController.userScroll$.pipe((0,n.exhaustMap)(e=>{let t=this.lock();return(0,n.merge)(this.scrollNavigationController.userScroll$,(0,n.of)(e)).pipe((0,n.debounceTime)(Zt,n.animationFrameScheduler),(0,n.first)(),(0,n.tap)(()=>{let e=this.scrollNavigationController.fromScrollPosition(this.scrollNavigationController.scrollPosition);this.navigationSubject.next({animation:!1,type:`scroll`,position:e})}),(0,n.finalize)(()=>{t()}))}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}},$t=e=>e.pagination.state$.pipe((0,n.withLatestFrom)(e.context.manifest$,e.settings.values$),(0,n.map)(([e,{spineItems:t,readingDirection:n},{computedPageTurnDirection:r}])=>{let i=t.length??0,a=e.beginSpineItemIndex===0,o=e.endSpineItemIndex===Math.max(i-1,0),s=e.endSpineItemIndex===Math.max(i-1,0),c=e.beginSpineItemIndex===0,l=e.beginPageIndexInSpineItem===0,u=e.endPageIndexInSpineItem===e.endNumberOfPagesInSpineItem-1;return{canTurnLeft:r===`vertical`?!1:!l,canTurnRight:r===`vertical`?!1:!u,canGoTopSpineItem:r===`vertical`&&!a,canGoBottomSpineItem:r===`vertical`&&!o,canGoLeftSpineItem:r!==`vertical`&&(n===`ltr`&&!a||n===`rtl`&&!s),canGoRightSpineItem:r!==`vertical`&&(n===`ltr`&&!o||n===`rtl`&&!c)}}),(0,n.distinctUntilChanged)(t.isShallowEqual)),en=({reader:e,duration:t})=>r=>{let i,a=()=>{i?.(),i=void 0};return r.pipe((0,n.tap)(()=>{i||=e?.navigation.lock()}),(0,n.throttleTime)(t,void 0,{trailing:!0,leading:!0}),(0,n.tap)(a),(0,n.finalize)(a))},tn=e=>t=>{let r=e(t),i=$t(r),a=Vt(r),o=new Yt(r),s=new Xt(r),c=new Qt(r.navigation.scrollNavigationController,r.navigation.lock);(0,n.merge)(Ht(r,o),c.navigation$.pipe((0,n.tap)(e=>{r.navigation.navigate(e)}))).pipe((0,n.takeUntil)(r.$.destroy$)).subscribe();let l=e=>{let{cfi:t,...n}=e;r.load(n),t&&o.goToCfi(t,{animate:!1})},u=()=>{c.destroy(),r.destroy()};return{...r,load:l,destroy:u,navigation:{...r.navigation,state$:i,outOfSpineBoundary$:a,throttleLock:({duration:e,trigger:t})=>t.pipe(en({duration:e,reader:r})),panNavigator:s,turnBottom:o.turnBottom.bind(o),turnTop:o.turnTop.bind(o),turnLeftOrTop:o.turnLeftOrTop.bind(o),turnRightOrBottom:o.turnRightOrBottom.bind(o),turnLeft:o.turnLeft.bind(o),turnRight:o.turnRight.bind(o),goToCfi:o.goToCfi.bind(o),goToUrl:o.goToUrl.bind(o),goToSpineItem:o.goToSpineItem.bind(o),goToNextSpineItem:o.goToNextSpineItem.bind(o),goToPreviousSpineItem:o.goToPreviousSpineItem.bind(o),goToLeftOrTopSpineItem:o.goToLeftOrTopSpineItem.bind(o),goToRightOrBottomSpineItem:o.goToRightOrBottomSpineItem.bind(o),goToTopSpineItem:o.goToTopSpineItem.bind(o),goToBottomSpineItem:o.goToBottomSpineItem.bind(o),goToLeftSpineItem:o.goToLeftSpineItem.bind(o),goToRightSpineItem:o.goToRightSpineItem.bind(o),goToPageOfSpineItem:o.goToPageOfSpineItem.bind(o),goToAbsolutePageIndex:o.goToAbsolutePageIndex.bind(o)}}},nn=(e,t)=>{if(`cfi`in t){let{itemIndex:n,...r}=e.cfi.parseCfi(t.cfi);return{...t,...r,itemIndex:n,node:null}}let n=e.spineItemsManager.get(t);if(!n)throw Error(`Spine item not found`);let r=e.cfi.generateRootCfi(n.item);return{...e.cfi.parseCfi(r),cfi:r,itemIndex:n.index,node:null}},rn=(e,t)=>{let r=e?.itemPageIndex,{itemIndex:i,...a}=t.cfi.parseCfi(e.cfi),o=t.spineItemsManager.get(i);return o?be().pipe((0,n.withLatestFrom)(o.isReady$),(0,n.map)(([,n])=>{let{node:s=null,offset:c,range:l}=n?t.cfi.resolveCfi({cfi:e.cfi}):{};o.renditionLayout!==`pre-paginated`&&s&&(r=t.spine.locator.spineItemLocator.getSpineItemPageIndexFromNode(s,c??0,o)??r);let u=e?.absolutePageIndex;return r===void 0&&(r=0),u=t.spine.locator._getAbsolutePageIndexFromPageIndex({pageIndex:r,spineItemOrId:o})??e?.absolutePageIndex,{...e,...a,range:l,itemIndex:i,node:s,startOffset:c,absolutePageIndex:u,itemPageIndex:r}})):(0,n.of)({...e,itemIndex:i,...a})},an=class{constructor(e){this.reader=e,this.locatorsByKey=new Map,this.deregisterMemoizedStream=e=>{let t=this.locatorsByKey.get(e);t&&(t.observerCount--,t.observerCount===0&&this.locatorsByKey.delete(e))},this.locate=(e,t)=>{let r={resource:e,meta:nn(this.reader,e)};return xe(()=>{let i=this.reader.spineItemsManager.get(r.meta.itemIndex??0),a=i?.renditionLayout===`reflowable`,o=t.mode===`shallow`||!a||!i?()=>{}:this.reader.spine.spineItemsLoader.forceOpen([i.index]),s=`cfi`in e?e.cfi:void 0,c=s?this.locatorsByKey.get(s):void 0,l=e=>e.pipe((0,n.finalize)(()=>{s&&this.deregisterMemoizedStream(s),setTimeout(()=>{o()},1e3)}));if(s&&c)return c.observerCount++,l(c.consolidate$.pipe((0,n.map)(({resource:e,meta:t})=>({resource:e,meta:t}))));let u=this.reader.spine.layout$.pipe((0,n.debounceTime)(10),(0,n.startWith)(r),(0,n.switchScan)(e=>rn(e.meta,this.reader).pipe((0,n.map)(t=>({...e,meta:t}))),r),(0,n.shareReplay)({refCount:!0,bufferSize:1}));return s&&this.locatorsByKey.set(s,{observerCount:1,consolidate$:u}),l(u)})}}locateResource(e,t){return Array.isArray(e)?xe(()=>(0,n.combineLatest)(e.map(e=>this.locate(e,t??{}))).pipe((0,n.defaultIfEmpty)([]))):this.locate(e,t??{})}},on=a.namespace(`spine`),sn=({position:e,pageSize:t})=>new rt({...e,left:e.x,top:e.y,width:t.width,height:t.height,bottom:e.y+t.height,right:e.x+t.width}),cn=10,ln=e=>{let{spineItem:t,...n}=e;if(!e.spineItem.value.isLoaded)return{...n,firstVisibleNode:void 0};let r=(e.spineItem.renderer?.getDocumentFrame())?.contentWindow?.document;return!r||r.body===null?{...n,firstVisibleNode:void 0}:{...n,firstVisibleNode:p(r,e.layout)}},un=e=>new n.Observable(t=>{if(e.length===0){t.next([]),t.complete();return}let n,r=0,i=Array(e.length),a=()=>{n!==void 0&&(cancelAnimationFrame(n),n=void 0)},o=()=>{n=void 0;let a=0;for(;r<e.length&&a<cn;){let t=e[r];if(!t){r=e.length;break}i[r]=ln(t),r+=1,a+=1}if(r>=e.length){t.next(i),t.complete();return}s()},s=()=>{n=requestAnimationFrame(o)};return s(),()=>{a()}}),J=class e extends j{constructor(t,r,i,a,o,s){super({pages:[]}),this.spineLayout=t,this.spineItemsManager=r,this.spineItemLocator=i,this.context=a,this.locator=o,this.viewport=s,this.fromSpineItemPageIndex=(t,n)=>e.fromSpineItemPageIndex(this.value,t,n),this.fromNextPageWithinSameSpineItem=t=>e.fromNextPageWithinSameSpineItem(this.value,t),this.fromAbsolutePageIndex=t=>e.fromAbsolutePageIndex(this.value,t),this.observeFromAbsolutePageIndex=e=>this.pipe((0,n.map)(()=>this.fromAbsolutePageIndex(e))),this.layout$=t.layout$.pipe((0,n.withLatestFrom)(s),(0,n.switchMap)(([,{pageSize:e}])=>un(r.items.reduce((t,n,r)=>{for(let a=0;a<n.numberOfPages;a+=1){let s=i.getSpineItemPositionFromPageIndex({spineItem:n,pageIndex:a}),c=o.getSpinePositionFromSpineItemPosition({spineItem:n,spineItemPosition:s}),l=t.length;t.push({absoluteLayout:sn({pageSize:e,position:c}),layout:new nt({left:s.x,right:s.x+e.width,top:s.y,bottom:s.y+e.height,width:e.width,height:e.height,x:s.x,y:s.y}),itemIndex:r,absolutePageIndex:l,spineItem:n,pageIndex:a})}return t},[]))),(0,n.map)(e=>(on.info(`Pages layout`,e),{pages:e})),(0,n.share)()),this.layout$.pipe((0,n.takeUntil)(this.destroy$)).subscribe(this.next.bind(this))}static{this.fromSpineItemPageIndex=(e,t,n)=>{let r=typeof t==`number`?t:t.index;return e.pages.find(e=>e.itemIndex===r&&e.pageIndex===n)}}static{this.fromNextPageWithinSameSpineItem=(t,n)=>e.fromSpineItemPageIndex(t,n.itemIndex,n.pageIndex+1)}static{this.fromAbsolutePageIndex=(e,t)=>e.pages.find(e=>e.absolutePageIndex===t)}},Y=e=>{let t=e.indexOf(`#`);return t>=0?e.substring(0,t):e},dn=e=>{if(!e)return;let t=e.indexOf(`#`);if(!(t<0))return e.substring(t+1)||void 0},fn=e=>{try{return decodeURIComponent(e)}catch{return e}},pn=(e,t=[])=>e.flatMap(e=>{let n=[...t,{title:e.title,path:e.path}];return[{chain:n,href:e.href||e.path,anchorId:dn(e.href)??dn(e.path)},...pn(e.contents,n)]}),mn=e=>{let t=new Map;return e.spineItems.forEach((e,n)=>{t.has(e.href)||t.set(e.href,n)}),t},hn=(e,t)=>{let n=mn(t);return pn(e).map(e=>{let t=Y(e.href),r=n.get(t)??-1;return{...e,hrefWithoutAnchor:t,spineItemIndex:r}})},gn=({manifest:e,tocIndex:t})=>{let n=new Map;t.forEach((e,t)=>{let r=n.get(e.hrefWithoutAnchor);if(r){r.push(t);return}n.set(e.hrefWithoutAnchor,[t])});let r=new Map,i=new Map;for(let a of e.spineItems){if(r.has(a.href))continue;let e=Y(a.href),o=i.get(e);if(!o){let r=[];for(let[t,i]of n)_n(e,t)&&r.push(...i);r.sort((e,t)=>e-t),o=r.map(e=>t[e]),i.set(e,o)}r.set(a.href,o)}return r},_n=(e,t)=>e===t||e.endsWith(t)||t.endsWith(e),vn=(e,t)=>{let n=e.endsWith(t),r=e.substring(0,e.lastIndexOf(`/`)),i=t.substring(0,t.lastIndexOf(`/`)),a=r!==``&&r.endsWith(i);return n||a},yn=e=>{let[t,...n]=e;if(!t)return;let r={title:t.title,path:t.path},i=r;for(let e of n){let t={title:e.title,path:e.path};i.subChapter=t,i=t}return r},bn=({doc:e,node:t,offset:n})=>{let r=e.createRange();if(t.nodeType===Node.TEXT_NODE||t.nodeType===Node.CDATA_SECTION_NODE||t.nodeType===Node.COMMENT_NODE){let e=t,i=Math.max(0,Math.min(n,e.length));r.setStart(e,i)}else{let e=t.childNodes.length,i=Math.max(0,Math.min(n,e));r.setStart(t,i)}return r.collapse(!0),r},xn=({rangeToTest:e,upperBoundRange:t})=>e.compareBoundaryPoints(Range.START_TO_START,t)<0,Sn=e=>{let t=e.createRange(),n=e.body??e.documentElement;if(n)return t.selectNodeContents(n),t.collapse(!1),t},Cn=({anchorNode:e,nextPageNode:t})=>e===t||e.contains(t),wn=({node:e,offset:t,candidates:n,spineItem:r,nextPageEntry:i})=>{if(!e||t===void 0||!r||n.length===0)return;let a=r.renderer.getDocumentFrame()?.contentDocument;if(!a||e.ownerDocument!==a)return;let o=i?.firstVisibleNode?.node,s=i?.firstVisibleNode?.offset,c=i?o!==void 0&&s!==void 0&&o.ownerDocument===a?bn({doc:a,node:o,offset:s}):void 0:Sn(a);if(!c)return;let l=i!==void 0&&o!==void 0&&o.ownerDocument===a,u,d,f;for(let e of n){if(!e.anchorId){f=e.chain;continue}let t=a.getElementById(fn(e.anchorId));if(!t||l&&Cn({anchorNode:t,nextPageNode:o}))continue;let n=a.createRange();n.setStartBefore(t),n.collapse(!0),xn({rangeToTest:n,upperBoundRange:c})&&(!d||n.compareBoundaryPoints(Range.START_TO_START,d)>0)&&(u=e.chain,d=n)}let p=u??f;return p?yn(p):void 0},Tn=({candidate:e,hrefHasAnchor:t})=>{if(t||!e.anchorId)return!1;let n=e.chain[e.chain.length-1],r=e.chain[e.chain.length-2];return!n||!r?!1:Y(n.path)===Y(r.path)},En=({href:e,tocIndex:t,manifest:n})=>{let r=Y(e),i=e.includes(`#`),a=n.spineItems.findIndex(e=>e.href===r),o;for(let e of t)vn(r,e.hrefWithoutAnchor)&&(a<e.spineItemIndex||Tn({candidate:e,hrefHasAnchor:i})||(o=e.chain));return o},Dn=(e,t,n)=>{let{href:r}=n,i=En({href:r,tocIndex:t,manifest:e});return i?yn(i):void 0},On=(e,t)=>e?e.spineItems.reduce((n,r)=>(n[r.id]=Dn(e,t,r),n),{}):{},kn=(e,t,n)=>e+t*n,An=(e,t,n)=>{let{height:r,width:i}=n.layoutInfo,{top:a,left:o}=e.spine.getSpineItemSpineLayoutInfo(n);return e.settings.values.computedPageTurnDirection===`vertical`?Math.max(0,Math.min(1,(t.y-a+e.viewport.absoluteViewport.height)/r)):Math.max(0,Math.min(1,(t.x-o+e.viewport.absoluteViewport.width)/i))},jn=(e,t,r,i,a,o)=>a.isReady$.pipe((0,n.first)(),(0,n.withLatestFrom)(e.layoutInfo$),(0,n.map)(([n,s])=>{let c=o.renditionLayout===`pre-paginated`,l=o.spineItems.length||0,u=o.spineItems.slice(0,t).reduce((e,t)=>e+(t.progressionWeight??0),0)||0,d=e.spineItemsManager.getSpineItemIndex(a)??0,f=o.spineItems.length??0,p=s.pages.filter(e=>e.itemIndex===d).length??0,m=o.spineItems[t]?.progressionWeight??(d+1)/f,h=(r+1)*(m/p);!c&&a.renditionLayout===`reflowable`&&!n&&(h=0);let g=u+h;return o.renditionFlow===`scrolled-continuous`&&(h=n?An(e,i,a):0,g=kn(u,m,h)),t===l-1&&r===p-1&&g>.99?1:g})),Mn=e=>{if(e?.item.pageSpreadLeft)return`left`;if(e?.item.pageSpreadRight)return`right`},Nn=(e,t)=>{let n=Mn(e),r=Mn(t);return n!==void 0&&r!==void 0&&n!==r},Pn=({item:e,nextItem:t,previousItem:n})=>Nn(e,n)||Nn(e,t),Fn={tocCandidatesBySpineHref:new Map,chaptersInfo:{}},In=({beginItem:e,endItem:t,paginationInfo:n,chaptersData:r,pagesState:i,spineItems:a})=>{let o=e&&n.beginPageIndexInSpineItem!==void 0?J.fromSpineItemPageIndex(i,e.index,n.beginPageIndexInSpineItem):void 0,s=o?J.fromNextPageWithinSameSpineItem(i,o):void 0,c=t&&n.endPageIndexInSpineItem!==void 0?J.fromSpineItemPageIndex(i,t.index,n.endPageIndexInSpineItem):void 0,l=c?J.fromNextPageWithinSameSpineItem(i,c):void 0,u=e?wn({node:o?.firstVisibleNode?.node,offset:o?.firstVisibleNode?.offset,candidates:r.tocCandidatesBySpineHref.get(e.item.href)??[],spineItem:e,nextPageEntry:s}):void 0,d=t?wn({node:c?.firstVisibleNode?.node,offset:c?.firstVisibleNode?.offset,candidates:r.tocCandidatesBySpineHref.get(t.item.href)??[],spineItem:t,nextPageEntry:l}):void 0;return{beginChapterInfo:u??(e?r.chaptersInfo[e.item.id]:void 0),beginHasAdjacentSpreadPage:Pn({item:e,nextItem:e===void 0?void 0:a[e.index+1],previousItem:e===void 0?void 0:a[e.index-1]}),beginSpineItemReadingDirection:e?.readingDirection,beginAbsolutePageIndex:o?.absolutePageIndex,endChapterInfo:d??(t?r.chaptersInfo[t.item.id]:void 0),endHasAdjacentSpreadPage:Pn({item:t,nextItem:t===void 0?void 0:a[t.index+1],previousItem:t===void 0?void 0:a[t.index-1]}),endSpineItemReadingDirection:t?.readingDirection,endAbsolutePageIndex:c?.absolutePageIndex}},Ln=({items:e,pagesState:t})=>{let n=e.map(()=>0);for(let e of t.pages)n[e.itemIndex]=(n[e.itemIndex]??0)+1;return{numberOfPagesPerItems:n,numberOfTotalPages:t.pages.length}},Rn=(e,t)=>e.numberOfTotalPages!==t.numberOfTotalPages||e.numberOfPagesPerItems.length!==t.numberOfPagesPerItems.length?!1:e.numberOfPagesPerItems.every((e,n)=>e===t.numberOfPagesPerItems[n]),zn=({reader:e,paginationInfo:t,navigationPosition:r,manifest:i})=>{let a=e.spineItemsManager.get(t.endSpineItemIndex);return a?jn(e,t.endSpineItemIndex??0,t.endPageIndexInSpineItem||0,r,a,i):(0,n.of)(0)},Bn=e=>e.context.manifest$.pipe((0,n.map)(e=>{if(!e)return Fn;let t=hn(e.nav?.toc??[],e);return{tocCandidatesBySpineHref:gn({manifest:e,tocIndex:t}),chaptersInfo:On(e,t)}})),Vn=e=>({beginSpineItemIndex:e.beginSpineItemIndex,beginPageIndexInSpineItem:e.beginPageIndexInSpineItem,endSpineItemIndex:e.endSpineItemIndex,endPageIndexInSpineItem:e.endPageIndexInSpineItem}),Hn=e=>{let r=e.pagination.state$,i=e.spine.pages.layout$,a=Bn(e).pipe((0,n.shareReplay)({bufferSize:1,refCount:!0})),o=(0,n.combineLatest)([r.pipe((0,n.map)(Vn),(0,n.distinctUntilChanged)(t.isShallowEqual)),a,i,e.spineItemsManager.items$]).pipe((0,n.map)(([e,t,n,r])=>In({beginItem:e.beginSpineItemIndex===void 0?void 0:r[e.beginSpineItemIndex],endItem:e.endSpineItemIndex===void 0?void 0:r[e.endSpineItemIndex],paginationInfo:e,chaptersData:t,pagesState:n,spineItems:r})),(0,n.shareReplay)({bufferSize:1,refCount:!0})),s=(0,n.combineLatest)([r,e.settings.watch([`computedSpreadMode`]).pipe((0,n.map)(e=>e.computedSpreadMode??!1),(0,n.distinctUntilChanged)()),o,(0,n.combineLatest)([i,e.spineItemsManager.items$]).pipe((0,n.map)(([e,t])=>Ln({items:t,pagesState:e})),(0,n.distinctUntilChanged)(Rn))]).pipe((0,n.map)(([e,t,n,r])=>({...e,...n,isUsingSpread:t,...r}))),c=Rt(e.navigation).pipe((0,n.map)(({position:e})=>e),(0,n.distinctUntilChanged)(t.isShallowEqual));return(0,n.combineLatest)([s,(0,n.combineLatest)([r,e.layout$,c,e.context.manifest$]).pipe((0,n.switchMap)(([t,n,r,i])=>zn({reader:e,paginationInfo:t,navigationPosition:r,manifest:i})),(0,n.map)(e=>({percentageEstimateOfBook:e})))]).pipe((0,n.map)(([e,t])=>({...e,...t})),(0,n.distinctUntilChanged)(t.isShallowEqual),(0,n.auditTime)(5))},Un=e=>t=>{let r=e(t),i=new n.BehaviorSubject({...r.pagination.state,beginChapterInfo:void 0,beginHasAdjacentSpreadPage:!1,beginCfi:void 0,beginPageIndexInSpineItem:void 0,isUsingSpread:!1,beginAbsolutePageIndex:0,endAbsolutePageIndex:0,numberOfTotalPages:0,beginSpineItemReadingDirection:void 0,beginSpineItemIndex:void 0,endCfi:void 0,endChapterInfo:void 0,endHasAdjacentSpreadPage:!1,endSpineItemReadingDirection:void 0,percentageEstimateOfBook:0}),o=new an(r),s=Hn(r).pipe((0,n.tap)(e=>a.log(`Pagination`,e))).subscribe(i);return{...r,locateResource:o.locateResource.bind(o),destroy:()=>{s.unsubscribe(),r.destroy()},pagination:{...r.pagination,get state(){return i.value},get state$(){return i}}}},Wn=e=>({put:(t,n)=>new Promise((r,i)=>{let a=e.transaction([`store`],`readwrite`);a.onerror=e=>{i(e)},a.oncomplete=()=>{r()};let o=a.objectStore(`store`).put(n,t);o.onsuccess=()=>{r()},o.onerror=e=>{i(e)}}),keys:()=>new Promise((t,n)=>{let r=e.transaction([`store`],`readonly`);r.onerror=e=>{n(e)};let i=r.objectStore(`store`).openKeyCursor(),a=[];i.onsuccess=()=>{let e=i.result;if(!e){t(a);return}a.push(e.key),e.continue()},i.onerror=()=>{n(i.error)}}),get:t=>new Promise((n,r)=>{let i=e.transaction([`store`],`readwrite`),a=i.objectStore(`store`).get(t);a.onsuccess=()=>{let e=a.result;e===void 0&&(e=null),n(e)},i.onerror=()=>{r(a.error)}}),remove:t=>new Promise((n,r)=>{let i=e.transaction([`store`],`readwrite`),a=i.objectStore(`store`).delete(t);i.onerror=()=>{r(a.error)},i.oncomplete=()=>{n()},i.onabort=()=>{r(a.error?a.error:a.transaction?.error)}})}),Gn=async e=>new Promise((t,n)=>{let r=window.indexedDB.open(e);r.onerror=e=>{n(e)},r.onsuccess=()=>{t(Wn(r.result))},r.onupgradeneeded=()=>{r.result.createObjectStore(`store`)}}),Kn=e=>{let t=Date.now().toString(),i=new n.Subject,o=t=>{if(typeof t==`string`||typeof t==`object`){let n=typeof t==`object`?t.id:t;return e.manifest?.spineItems.find(e=>e.id===n)}return e.manifest?.spineItems[t]},s=async(e,n)=>{let r=o(e);if(!r)return new Response(`Item not found`,{status:404});let i=await(await Gn(`prose-reader`)).get(`${t}_${r.id}`);if(i)return new Response(i,{status:200});let a=n&&await n(r)||await fetch(r.href);return c(r,a.clone()),a},c=(e,t)=>{i.next({id:e,data:t})};return i.asObservable().pipe((0,r.mergeMap)(({id:e,data:i})=>{let s=o(e);return s?(0,n.from)((0,n.forkJoin)([Gn(`prose-reader`),(0,n.from)(i.blob())])).pipe((0,r.switchMap)(([e,r])=>(0,n.from)(e.put(`${t}_${s.id}`,r))),(0,r.catchError)(e=>(a.error(e),n.EMPTY))):n.EMPTY}),(0,r.takeUntil)(e.destroy$)).subscribe(),(0,n.merge)(e.manifest$.pipe((0,r.tap)(()=>{t=Date.now().toString()}))).pipe((0,r.switchMap)(()=>(a.debug(`Cleanup up old cache...`),(0,n.from)(Gn(`prose-reader`)).pipe((0,r.switchMap)(e=>(0,n.from)(e.keys()).pipe((0,r.map)(e=>e.filter(e=>!e.toString().startsWith(t))),(0,r.switchMap)(t=>{let r=t.map(t=>e.remove(t));return(0,n.from)(Promise.all(r))}))),(0,r.catchError)(e=>(a.error(e),n.EMPTY))))),(0,r.takeUntil)(e.destroy$)).subscribe(),{get:s,destroy:()=>{i.complete()}}},qn=e=>t=>{let n=e(t),r=Kn(n.context),i=()=>{r.destroy(),n.destroy()};return{...n,destroy:i}},Jn=(e,t)=>{let n=e.node.ownerDocument?.createRange(),r=e.node.compareDocumentPosition(t.node);if(n){try{if(r&Node.DOCUMENT_POSITION_PRECEDING)n.setStart(t.node,t.offset||0),n.setEnd(e.node,e.offset||0);else if(r&Node.DOCUMENT_POSITION_FOLLOWING)n.setStart(e.node,e.offset||0),n.setEnd(t.node,t.offset||0);else{let r=Math.min(e.offset||0,t.offset||0),i=Math.max(e.offset||0,t.offset||0);n.setStart(e.node,r),n.setEnd(e.node,i)}}catch(n){a.warn(`Failed to create range from selection`,n,{anchor:e,focus:t})}return n}},Yn=({selection:e,spineItem:t})=>{let{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:o}=e;if(!(!n||!i))try{return Jn({node:n,offset:r},{node:i,offset:o})}catch(n){a.warn(`Failed to create range from selection`,n,{selection:e,spineItem:t});return}},Xn=class extends q{constructor(e){super();let t=e.contentDocument||e.contentWindow?.document;if(!t)this.selectionChange$=n.NEVER,this.selectionOver$=n.NEVER;else{let r=Se(t.body,{childList:!0,subtree:!0}).pipe((0,n.filter)(e=>!!e.find(e=>e.type===`childList`&&e.removedNodes.length))),i=e.parentElement?Se(e.parentElement,{childList:!0}).pipe((0,n.filter)(t=>!!t.find(t=>Array.from(t.removedNodes).includes(e)))):(0,n.of)(null);this.selectionChange$=(0,n.merge)((0,n.fromEvent)(t,`selectionchange`),r).pipe((0,n.map)(()=>t.getSelection()),(0,n.takeUntil)((0,n.merge)(i,this.destroy$)),(0,n.endWith)(null)),this.selectionOver$=(0,n.fromEvent)(t,`pointerdown`).pipe((0,n.switchMap)(()=>(0,n.merge)((0,n.fromEvent)(t,`pointerup`),(0,n.fromEvent)(t,`pointercancel`),(0,n.fromEvent)(t,`contextmenu`)).pipe((0,n.first)(),(0,n.delay)(0),(0,n.map)(e=>{let n=t.getSelection();return n&&!n.isCollapsed?[e,n]:void 0}),(0,n.filter)(L))),(0,n.takeUntil)((0,n.merge)(i,this.destroy$)))}}},Zn=e=>e.watch(`isLoaded`).pipe((0,n.switchMap)(()=>{let t=e.renderer.getDocumentFrame(),r=t?.contentDocument||t?.contentWindow?.document;if(!t||!r)return n.NEVER;let i=new Xn(t);return(0,n.merge)(i.selectionChange$.pipe((0,n.map)(e=>{if(e?.toString())return{type:`change`,selection:e}})),i.selectionOver$.pipe((0,n.map)(([e,t])=>({type:`over`,event:e,selection:t})))).pipe((0,n.takeUntil)(e.unloaded$),(0,n.endWith)(void 0),(0,n.finalize)(()=>{i.destroy()}))}),(0,n.distinctUntilChanged)()),Qn=e=>t=>{let r=e(t),i,a=r.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>{let t=r.spineItemsManager.getSpineItemIndex(e)??0;return Zn(e).pipe((0,n.map)(e=>{if(e)return{...e,itemIndex:t}}))}))),(0,n.startWith)(void 0),(0,n.distinctUntilChanged)(),(0,n.tap)(e=>{i=e}),(0,n.shareReplay)({refCount:!0,bufferSize:1})),o=a,s=a.pipe((0,n.map)(e=>!!e),(0,n.distinctUntilChanged)(),(0,n.filter)(e=>e),(0,n.share)()),c=s.pipe((0,n.switchMap)(()=>o),(0,n.distinctUntilChanged)(),(0,n.filter)(e=>!e),(0,n.share)()),l=a.pipe((0,n.filter)(e=>e?.type===`over`),(0,n.share)()),u=r.context.watch(`rootElement`).pipe((0,n.filter)(L),(0,n.switchMap)(e=>(0,n.fromEvent)(e,`pointerdown`)),(0,n.withLatestFrom)(o),(0,n.map)(([,e])=>e),(0,n.startWith)(void 0),(0,n.shareReplay)({refCount:!0,bufferSize:1}));return(0,n.merge)(o,u).pipe((0,n.takeUntil)(r.$.destroy$)).subscribe(),{...r,selection:{selection$:o,selectionStart$:s,selectionEnd$:c,selectionOver$:l,lastSelectionOnPointerdown$:u,getSelection:()=>i,createOrderedRangeFromSelection:Yn}}},$n=[{name:`bright`,backgroundColor:`white`},{name:`sepia`,backgroundColor:`#eaddc7`,foregroundColor:`black`},{name:`night`,backgroundColor:`#191717`,foregroundColor:`#f1ebeb`}],er=e=>t=>{let i=e(t),a=new n.BehaviorSubject(t.theme??`bright`),o=()=>{let e=$n.find(e=>e.name===a.value);return`
179
+ `)}}),Dt(d),Et(d),d.hookManager.register(`item.onDocumentCreated`,({documentContainer:e})=>{u(e.style,`opacity`,`0`),f.values.layoutLayerTransition&&u(e.style,`transition`,`opacity 800ms`)}),d.hookManager.register(`item.onBeforeLayout`,({item:e})=>{let t=d.spineItemsManager.get(e.id)?.renderer.documentContainer;d.settings.values.computedPageTurnMode!==`scrollable`&&t&&s(t,`tab-index`,`0`)});let p=d.spineItemsObserver.states$.pipe((0,r.filter)(({isReady:e})=>e),(0,r.tap)(({item:e})=>{let t=e.renderer.documentContainer;t&&u(t.style,`opacity`,`1`)})),m=f.values$.pipe((0,r.filter)(({layoutAutoResize:e})=>e===`container`),(0,r.switchMap)(()=>d.context.watch(`rootElement`)),(0,r.filter)(F),(0,r.switchMap)(e=>D(e)),(0,r.debounceTime)(100),(0,r.filter)(F),(0,r.tap)(()=>{d?.layout()})),h=lt(d);f.watch([`pageHorizontalMargin`,`pageVerticalMargin`]).pipe((0,r.skip)(1),(0,r.tap)(()=>{d.layout()}),(0,r.takeUntil)(d.$.destroy$)).subscribe();let g=d.spine.pages.pipe((0,r.shareReplay)({refCount:!0,bufferSize:1}));return(0,n.merge)(p,h,m,g,Ot(d),Pt(d),Tt(d)).pipe((0,r.takeUntil)(d.$.destroy$)).subscribe(),{...d,destroy:()=>{f.destroy(),d.destroy()},settings:f,layout$:d.spine.layout$,layoutInfo$:g,coordinates:ct(d)}},It=e=>t=>{let n=e(t),r=new IntersectionObserver(e=>{e.forEach(e=>{let t=e.target,n=Array.from(t.contentDocument?.body.getElementsByTagName(`audio`)||[]);e.isIntersecting?n.forEach(e=>{e.hasAttribute(`autoplay`)&&e.paused&&e.readyState>=2&&e.play().catch(console.error)}):n.forEach(e=>{e.pause(),e.currentTime=0})})},{threshold:.01}),i=new IntersectionObserver(e=>{e.forEach(e=>{if(e.target.tagName===`video`){let 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}),a=new Map;n.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{a.get(e)?.(),a.delete(e);let t=n.spineItemsManager.get(e)?.renderer.getDocumentFrame();if(!t)return;r.observe(t);let o=t.contentDocument?.body.getElementsByTagName(`video`),s=Array.from(o||[]).map(e=>(i.observe(e),()=>i.unobserve(e)));a.set(e,()=>{r.unobserve(t),s.forEach(e=>{e()})})}),n.hookManager.register(`item.onDocumentUnload`,async({itemId:e})=>{a.get(e)?.(),a.delete(e)});let o=()=>{r.disconnect(),i.disconnect(),a.clear(),n.destroy()};return{...n,destroy:o}},Lt=e=>t=>t.pipe((0,n.switchMap)(t=>e.pipe((0,n.filter)(e=>e===`free`),(0,n.first)(),(0,n.map)(()=>t)))),Rt=({navigation$:e,navigationState$:t})=>e.pipe(Lt(t)),zt=e=>Rt(e).pipe((0,n.skip)(1)),Bt=e=>t=>t.pipe((0,n.takeUntil)(zt(e))),Vt=e=>e.navigation.navigation$.pipe((0,n.filter)(e=>e.triggeredBy===`user`),Lt(e.navigation.navigationState$),(0,n.map)(t=>{let n=t.requestedPosition,r=t.requestedVisibleArea;return n&&r?e.navigation.navigationResolver.getBoundaryForPosition(n,r):void 0}),(0,n.filter)(e=>e!==void 0),(0,n.map)(e=>({boundary:e})),(0,n.share)()),Ht=(e,t)=>e.links$.pipe((0,n.tap)(n=>{if(!ae(n.target,`a`)||n.type!==`click`)return;let r=new URL(n.target.href),i=`${r.origin}${r.pathname}`;e.context.manifest?.spineItems.some(e=>e.href===i)&&t.goToUrl(r)})),K=a.namespace(`navigation`),Ut=({position:e,spineItem:t,pageHeight:n,pageWidth:r,spineItemLocator:i})=>{let a=new L({x:e.x-r,y:e.y});return t.isUsingVerticalWriting()&&(a=new L({x:e.x,y:e.y+n})),i.getSpineItemClosestPositionFromUnsafePosition(a,t)},Wt=({position:e,navigationResolver:t,computedPageTurnDirection:n,spineItemsManager:r,spineLocator:i,viewport:a})=>{let o=n,s=i.getSpineItemFromPosition(e)||r.get(0),c=e;if(!s)return c;let l=i.getSpineItemPositionFromSpinePosition(e,s),u=Ut({position:l,spineItem:s,pageHeight:a.pageSize.height,pageWidth:a.pageSize.width,spineItemLocator:i.spineItemLocator});return t.arePositionsDifferent(u,l)?i.getSpinePositionFromSpineItemPosition({spineItemPosition:u,spineItem:s}):o===`horizontal`?new H({x:e.x-a.pageSize.width,y:0}):new H({y:e.y-a.pageSize.height,x:0})},Gt=({position:e,spineItem:t,context:n,navigationResolver:r,spineItemsManager:i,spineLocator:a,computedPageTurnDirection:o,viewport:s,settings:c})=>{if(c.values.computedPageTurnMode===`scrollable`&&o===`vertical`)return new H({x:e.x,y:e.y-s.pageSize.height});let l=Wt({position:e,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});if(t?.isUsingVerticalWriting()&&e.x===l.x)return r.getAdjustedPositionForSpread(l);if(c.values.computedSpreadMode){if(t?.isUsingVerticalWriting()&&e.x!==l.x)return r.getAdjustedPositionForSpread(n.isRTL()?new H({x:l.x+s.pageSize.width,y:l.y}):new H({x:l.x-s.pageSize.width,y:l.y}));if(o===`vertical`&&e.y!==l.y)return r.getAdjustedPositionForSpread(l);let c=Wt({position:l,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});return r.getAdjustedPositionForSpread(c)}return r.getAdjustedPositionForSpread(l)},Kt=({position:e,spineItem:t,pageHeight:n,pageWidth:r,spineItemLocator:i})=>{let a=new L({x:e.x+r,y:e.y});return t.isUsingVerticalWriting()&&(a=new L({x:e.x,y:e.y-n})),i.getSpineItemClosestPositionFromUnsafePosition(a,t)},qt=({position:e,navigationResolver:t,computedPageTurnDirection:n,spineItemsManager:r,spineLocator:i,viewport:a})=>{let o=n,s=i.getSpineItemFromPosition(e)||r.get(0),c=e;if(!s)return c;let l=i.getSpineItemPositionFromSpinePosition(e,s),u=Kt({position:l,spineItem:s,pageHeight:a.pageSize.height,pageWidth:a.pageSize.width,spineItemLocator:i.spineItemLocator});return t.arePositionsDifferent(u,l)?i.getSpinePositionFromSpineItemPosition({spineItemPosition:u,spineItem:s}):o===`horizontal`?new H({x:e.x+a.pageSize.width,y:0}):new H({y:e.y+a.pageSize.height,x:0})},Jt=({position:e,spineItem:t,context:n,navigationResolver:r,spineItemsManager:i,spineLocator:a,computedPageTurnDirection:o,viewport:s,settings:c})=>{if(c.values.computedPageTurnMode===`scrollable`&&o===`vertical`)return new H({x:e.x,y:e.y+s.pageSize.height});let l=qt({position:e,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});if(t?.isUsingVerticalWriting()&&e.x===l.x)return r.getAdjustedPositionForSpread(l);if(c.values.computedSpreadMode){if(t?.isUsingVerticalWriting()&&e.x!==l.x)return r.getAdjustedPositionForSpread(n.isRTL()?new H({x:l.x-s.pageSize.width,y:l.y}):new H({x:l.x+s.pageSize.width,y:l.y}));if(o===`vertical`&&e.y!==l.y)return r.getAdjustedPositionForSpread(l);let c=qt({position:l,viewport:s,navigationResolver:r,computedPageTurnDirection:o,spineItemsManager:i,spineLocator:a});return r.getAdjustedPositionForSpread(c)}return r.getAdjustedPositionForSpread(l)},Yt=class{constructor(e){this.reader=e,this.movingLastDelta={x:0,y:0},this.movingLastPosition=new V({x:0,y:0}),this.unlock=void 0}turnRight(){return this.turnRightOrBottom()}turnLeft(){return this.turnLeftOrTop()}turnTop(){return this.turnLeftOrTop()}turnBottom(){return this.turnRightOrBottom()}turnRightOrBottom(){let e=this.reader.navigation.getNavigation(),t=this.reader.spineItemsManager.get(e.spineItem);if(!t)return;let n=Jt({context:this.reader.context,navigationResolver:this.reader.navigation.navigationResolver,position:e.position,computedPageTurnDirection:this.reader.settings.values.computedPageTurnDirection,spineItem:t,spineItemsManager:this.reader.spineItemsManager,spineLocator:this.reader.spine.locator,viewport:this.reader.viewport,settings:this.reader.settings});return this.reader.navigation.navigate({position:n})}turnLeftOrTop(){let e=this.reader.navigation.getNavigation(),t=this.reader.spineItemsManager.get(e.spineItem);if(!t)return;let n=Gt({context:this.reader.context,navigationResolver:this.reader.navigation.navigationResolver,position:e.position,computedPageTurnDirection:this.reader.settings.values.computedPageTurnDirection,spineItem:t,spineItemsManager:this.reader.spineItemsManager,spineLocator:this.reader.spine.locator,viewport:this.reader.viewport,settings:this.reader.settings});return this.reader.navigation.navigate({position:n})}goToCfi(e,t={animate:!0}){return this.reader.navigation.navigate({animation:t.animate?`turn`:!1,cfi:e})}goToSpineItem({indexOrId:e,...t}){let n=this.reader.spineItemsManager.get(e);if(n===void 0){K.warn(`goToSpineItem`,`Ignore navigation to ${e} since the item does not exist`);return}this.reader.navigation.navigate({spineItem:n.index,...t})}goToNextSpineItem(){let{endIndex:e=0}=this.reader.spine.locator.getVisibleSpineItemsFromPosition({position:this.reader.navigation.getNavigation().position,threshold:{type:`percentage`,value:.5}})||{};this.goToSpineItem({indexOrId:e+1})}goToPreviousSpineItem(){let{beginIndex:e=0}=this.reader.spine.locator.getVisibleSpineItemsFromPosition({position:this.reader.navigation.getNavigation().position,threshold:{type:`percentage`,value:.5}})??{};this.goToSpineItem({indexOrId:e-1})}goToUrl(e){this.reader.navigation.navigate({url:e,animation:!1})}goToRightSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`vertical`){K.warn(`You cannot call this navigation method on vertical direction`);return}return this.reader.context.isRTL()?this.goToPreviousSpineItem():this.goToNextSpineItem()}goToRightOrBottomSpineItem(){return this.reader.settings.values.computedPageTurnDirection===`vertical`?this.goToBottomSpineItem():this.goToRightSpineItem()}goToLeftOrTopSpineItem(){return this.reader.settings.values.computedPageTurnDirection===`vertical`?this.goToTopSpineItem():this.goToLeftSpineItem()}goToLeftSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`vertical`){K.warn(`You cannot call this navigation method on vertical direction`);return}return this.reader.context.isRTL()?this.goToNextSpineItem():this.goToPreviousSpineItem()}goToTopSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`horizontal`){K.warn(`You cannot call this navigation method on horizontal direction`);return}return this.goToPreviousSpineItem()}goToBottomSpineItem(){if(this.reader.settings.values.computedPageTurnDirection===`horizontal`){K.warn(`You cannot call this navigation method on horizontal direction`);return}return this.goToNextSpineItem()}goToPageOfSpineItem({pageIndex:e,spineItemId:t,...n}){let r=this.reader.navigation.navigationResolver.getNavigationForSpineItemPage({pageIndex:e,spineItemId:t});K.debug(`.goToPageOfSpineItem()`,{pageIndex:e,spineItemId:t,...n,position:r}),this.reader.navigation.navigate({position:r,...n})}goToAbsolutePageIndex({absolutePageIndex:e,...t}){let n=this.reader.spine.pages.fromAbsolutePageIndex(e);if(K.debug(`.goToAbsolutePageIndex()`,{absolutePageIndex:e,...t,foundInfo:n}),n){let e=this.reader.navigation.navigationResolver.getNavigationForSpineItemPage({pageIndex:n.pageIndex,spineItemId:n.itemIndex});return this.reader.navigation.navigate({position:e,...t})}}},Xt=class extends k{constructor(e){super({lastDelta:{x:0,y:0},lastPosition:new V({x:0,y:0}),lastStartPosition:new V({x:0,y:0}),isStarted:!1}),this.reader=e,this.unlock=void 0}start(e){this.unlock?.(),this.unlock=this.reader.navigation.lock(),this.mergeCompare({isStarted:!0,lastDelta:e,lastStartPosition:this.reader.navigation.controlledNavigationController.viewportPosition,lastPosition:this.reader.navigation.controlledNavigationController.viewportPosition})}stop(e){this.panMoveTo(e),this.mergeCompare({isStarted:!1}),this.unlock?.()}panMoveTo(e){if(this.reader.settings.values.computedPageTurnMode===`scrollable`){K.warn(`pan control is not available on free page turn mode`);return}if(!this.value.isStarted){K.error(`Pan navigator is not started`);return}let t=this.reader.settings.values.computedPageTurnDirection,n=this.reader.navigation.getNavigation().position;if(e){let r=this.reader.viewport.absoluteViewport.width/this.reader.viewport.relativeViewport.width,i=Math.floor(e.x)-(this.value.lastDelta?.x||0),a=Math.floor(e.y)-(this.value.lastDelta?.y||0);n=new V({x:Math.floor(t===`horizontal`?this.value.lastPosition.x-i/r:0),y:Math.floor(t===`horizontal`?0:this.value.lastPosition.y-a/r)}),this.mergeCompare({lastDelta:e})}else n=this.value.lastPosition;this.mergeCompare({lastPosition:n}),this.reader.navigation.navigate({position:n,animation:!1})}},q=class{constructor(){this.isDestroyed=!1,this.destroySubject=new n.Subject,this.destroy$=this.destroySubject.asObservable()}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.destroySubject.next(),this.destroySubject.complete())}},Zt=500,Qt=class extends q{constructor(e,t){super(),this.scrollNavigationController=e,this.lock=t,this.navigationSubject=new n.Subject,this.navigation$=this.navigationSubject.asObservable(),(0,n.merge)(this.scrollNavigationController.userScroll$.pipe((0,n.exhaustMap)(e=>{let t=this.lock();return(0,n.merge)(this.scrollNavigationController.userScroll$,(0,n.of)(e)).pipe((0,n.debounceTime)(Zt,n.animationFrameScheduler),(0,n.first)(),(0,n.tap)(()=>{let e=this.scrollNavigationController.fromScrollPosition(this.scrollNavigationController.scrollPosition);this.navigationSubject.next({animation:!1,type:`scroll`,position:e})}),(0,n.finalize)(()=>{t()}))}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}},$t=e=>e.pagination.state$.pipe((0,n.withLatestFrom)(e.context.manifest$,e.settings.values$),(0,n.map)(([e,{spineItems:t,readingDirection:n},{computedPageTurnDirection:r}])=>{let i=t.length??0,a=e.beginSpineItemIndex===0,o=e.endSpineItemIndex===Math.max(i-1,0),s=e.endSpineItemIndex===Math.max(i-1,0),c=e.beginSpineItemIndex===0,l=e.beginPageIndexInSpineItem===0,u=e.endPageIndexInSpineItem===e.endNumberOfPagesInSpineItem-1;return{canTurnLeft:r===`vertical`?!1:!l,canTurnRight:r===`vertical`?!1:!u,canGoTopSpineItem:r===`vertical`&&!a,canGoBottomSpineItem:r===`vertical`&&!o,canGoLeftSpineItem:r!==`vertical`&&(n===`ltr`&&!a||n===`rtl`&&!s),canGoRightSpineItem:r!==`vertical`&&(n===`ltr`&&!o||n===`rtl`&&!c)}}),(0,n.distinctUntilChanged)(t.isShallowEqual)),en=({reader:e,duration:t})=>r=>{let i,a=()=>{i?.(),i=void 0};return r.pipe((0,n.tap)(()=>{i||=e?.navigation.lock()}),(0,n.throttleTime)(t,void 0,{trailing:!0,leading:!0}),(0,n.tap)(a),(0,n.finalize)(a))},tn=e=>t=>{let r=e(t),i=$t(r),a=Vt(r),o=new Yt(r),s=new Xt(r),c=new Qt(r.navigation.scrollNavigationController,r.navigation.lock);(0,n.merge)(Ht(r,o),c.navigation$.pipe((0,n.tap)(e=>{r.navigation.navigate(e)}))).pipe((0,n.takeUntil)(r.$.destroy$)).subscribe();let l=e=>{let{cfi:t,...n}=e;r.load(n),t&&o.goToCfi(t,{animate:!1})},u=()=>{c.destroy(),r.destroy()};return{...r,load:l,destroy:u,navigation:{...r.navigation,state$:i,outOfSpineBoundary$:a,throttleLock:({duration:e,trigger:t})=>t.pipe(en({duration:e,reader:r})),panNavigator:s,turnBottom:o.turnBottom.bind(o),turnTop:o.turnTop.bind(o),turnLeftOrTop:o.turnLeftOrTop.bind(o),turnRightOrBottom:o.turnRightOrBottom.bind(o),turnLeft:o.turnLeft.bind(o),turnRight:o.turnRight.bind(o),goToCfi:o.goToCfi.bind(o),goToUrl:o.goToUrl.bind(o),goToSpineItem:o.goToSpineItem.bind(o),goToNextSpineItem:o.goToNextSpineItem.bind(o),goToPreviousSpineItem:o.goToPreviousSpineItem.bind(o),goToLeftOrTopSpineItem:o.goToLeftOrTopSpineItem.bind(o),goToRightOrBottomSpineItem:o.goToRightOrBottomSpineItem.bind(o),goToTopSpineItem:o.goToTopSpineItem.bind(o),goToBottomSpineItem:o.goToBottomSpineItem.bind(o),goToLeftSpineItem:o.goToLeftSpineItem.bind(o),goToRightSpineItem:o.goToRightSpineItem.bind(o),goToPageOfSpineItem:o.goToPageOfSpineItem.bind(o),goToAbsolutePageIndex:o.goToAbsolutePageIndex.bind(o)}}},nn=(e,t)=>{if(`cfi`in t){let{itemIndex:n,...r}=e.cfi.parseCfi(t.cfi);return{...t,...r,itemIndex:n,node:null}}let n=e.spineItemsManager.get(t);if(!n)throw Error(`Spine item not found`);let r=e.cfi.generateRootCfi(n.item);return{...e.cfi.parseCfi(r),cfi:r,itemIndex:n.index,node:null}},rn=(e,t)=>{let r=e?.itemPageIndex,{itemIndex:i,...a}=t.cfi.parseCfi(e.cfi),o=t.spineItemsManager.get(i);return o?Se().pipe((0,n.withLatestFrom)(o.isReady$),(0,n.map)(([,n])=>{let{node:s=null,offset:c,range:l}=n?t.cfi.resolveCfi({cfi:e.cfi}):{};o.renditionLayout!==`pre-paginated`&&s&&(r=t.spine.locator.spineItemLocator.getSpineItemPageIndexFromNode(s,c??0,o)??r);let u=e?.absolutePageIndex;return r===void 0&&(r=0),u=t.spine.locator._getAbsolutePageIndexFromPageIndex({pageIndex:r,spineItemOrId:o})??e?.absolutePageIndex,{...e,...a,range:l,itemIndex:i,node:s,startOffset:c,absolutePageIndex:u,itemPageIndex:r}})):(0,n.of)({...e,itemIndex:i,...a})},an=class{constructor(e){this.reader=e,this.locatorsByKey=new Map,this.deregisterMemoizedStream=e=>{let t=this.locatorsByKey.get(e);t&&(t.observerCount--,t.observerCount===0&&this.locatorsByKey.delete(e))},this.locate=(e,t)=>{let r={resource:e,meta:nn(this.reader,e)};return Ce(()=>{let i=this.reader.spineItemsManager.get(r.meta.itemIndex??0),a=i?.renditionLayout===`reflowable`,o=t.mode===`shallow`||!a||!i?()=>{}:this.reader.spine.spineItemsLoader.forceOpen([i.index]),s=`cfi`in e?e.cfi:void 0,c=s?this.locatorsByKey.get(s):void 0,l=e=>e.pipe((0,n.finalize)(()=>{s&&this.deregisterMemoizedStream(s),setTimeout(()=>{o()},1e3)}));if(s&&c)return c.observerCount++,l(c.consolidate$.pipe((0,n.map)(({resource:e,meta:t})=>({resource:e,meta:t}))));let u=this.reader.spine.layout$.pipe((0,n.debounceTime)(10),(0,n.startWith)(r),(0,n.switchScan)(e=>rn(e.meta,this.reader).pipe((0,n.map)(t=>({...e,meta:t}))),r),(0,n.shareReplay)({refCount:!0,bufferSize:1}));return s&&this.locatorsByKey.set(s,{observerCount:1,consolidate$:u}),l(u)})}}locateResource(e,t){return Array.isArray(e)?Ce(()=>(0,n.combineLatest)(e.map(e=>this.locate(e,t??{}))).pipe((0,n.defaultIfEmpty)([]))):this.locate(e,t??{})}},on=a.namespace(`spine`),sn=({position:e,pageSize:t})=>new at({...e,left:e.x,top:e.y,width:t.width,height:t.height,bottom:e.y+t.height,right:e.x+t.width}),cn=10,ln=e=>{let{spineItem:t,...n}=e;if(!e.spineItem.value.isLoaded)return{...n,firstVisibleNode:void 0};let r=(e.spineItem.renderer?.getDocumentFrame())?.contentWindow?.document;return!r||r.body===null?{...n,firstVisibleNode:void 0}:{...n,firstVisibleNode:p(r,e.layout)}},un=e=>new n.Observable(t=>{if(e.length===0){t.next([]),t.complete();return}let n,r=0,i=Array(e.length),a=()=>{n!==void 0&&(cancelAnimationFrame(n),n=void 0)},o=()=>{n=void 0;let a=0;for(;r<e.length&&a<cn;){let t=e[r];if(!t){r=e.length;break}i[r]=ln(t),r+=1,a+=1}if(r>=e.length){t.next(i),t.complete();return}s()},s=()=>{n=requestAnimationFrame(o)};return s(),()=>{a()}}),J=class e extends k{constructor(t,r,i,a,o,s){super({pages:[]}),this.spineLayout=t,this.spineItemsManager=r,this.spineItemLocator=i,this.context=a,this.locator=o,this.viewport=s,this.fromSpineItemPageIndex=(t,n)=>e.fromSpineItemPageIndex(this.value,t,n),this.fromNextPageWithinSameSpineItem=t=>e.fromNextPageWithinSameSpineItem(this.value,t),this.fromAbsolutePageIndex=t=>e.fromAbsolutePageIndex(this.value,t),this.observeFromAbsolutePageIndex=e=>this.pipe((0,n.map)(()=>this.fromAbsolutePageIndex(e))),this.layout$=t.layout$.pipe((0,n.withLatestFrom)(s),(0,n.switchMap)(([,{pageSize:e}])=>un(r.items.reduce((t,n,r)=>{for(let a=0;a<n.numberOfPages;a+=1){let s=i.getSpineItemPositionFromPageIndex({spineItem:n,pageIndex:a}),c=o.getSpinePositionFromSpineItemPosition({spineItem:n,spineItemPosition:s}),l=t.length;t.push({absoluteLayout:sn({pageSize:e,position:c}),layout:new it({left:s.x,right:s.x+e.width,top:s.y,bottom:s.y+e.height,width:e.width,height:e.height,x:s.x,y:s.y}),itemIndex:r,absolutePageIndex:l,spineItem:n,pageIndex:a})}return t},[]))),(0,n.map)(e=>(on.info(`Pages layout`,e),{pages:e})),(0,n.share)()),this.layout$.pipe((0,n.takeUntil)(this.destroy$)).subscribe(this.next.bind(this))}static{this.fromSpineItemPageIndex=(e,t,n)=>{let r=typeof t==`number`?t:t.index;return e.pages.find(e=>e.itemIndex===r&&e.pageIndex===n)}}static{this.fromNextPageWithinSameSpineItem=(t,n)=>e.fromSpineItemPageIndex(t,n.itemIndex,n.pageIndex+1)}static{this.fromAbsolutePageIndex=(e,t)=>e.pages.find(e=>e.absolutePageIndex===t)}},Y=e=>{let t=e.indexOf(`#`);return t>=0?e.substring(0,t):e},dn=e=>{if(!e)return;let t=e.indexOf(`#`);if(!(t<0))return e.substring(t+1)||void 0},fn=e=>{try{return decodeURIComponent(e)}catch{return e}},pn=(e,t=[])=>e.flatMap(e=>{let n=[...t,{title:e.title,path:e.path}];return[{chain:n,href:e.href||e.path,anchorId:dn(e.href)??dn(e.path)},...pn(e.contents,n)]}),mn=e=>{let t=new Map;return e.spineItems.forEach((e,n)=>{t.has(e.href)||t.set(e.href,n)}),t},hn=(e,t)=>{let n=mn(t);return pn(e).map(e=>{let t=Y(e.href),r=n.get(t)??-1;return{...e,hrefWithoutAnchor:t,spineItemIndex:r}})},gn=({manifest:e,tocIndex:t})=>{let n=new Map;t.forEach((e,t)=>{let r=n.get(e.hrefWithoutAnchor);if(r){r.push(t);return}n.set(e.hrefWithoutAnchor,[t])});let r=new Map,i=new Map;for(let a of e.spineItems){if(r.has(a.href))continue;let e=Y(a.href),o=i.get(e);if(!o){let r=[];for(let[t,i]of n)_n(e,t)&&r.push(...i);r.sort((e,t)=>e-t),o=r.map(e=>t[e]),i.set(e,o)}r.set(a.href,o)}return r},_n=(e,t)=>e===t||e.endsWith(t)||t.endsWith(e),vn=(e,t)=>{let n=e.endsWith(t),r=e.substring(0,e.lastIndexOf(`/`)),i=t.substring(0,t.lastIndexOf(`/`)),a=r!==``&&r.endsWith(i);return n||a},yn=e=>{let[t,...n]=e;if(!t)return;let r={title:t.title,path:t.path},i=r;for(let e of n){let t={title:e.title,path:e.path};i.subChapter=t,i=t}return r},bn=({doc:e,node:t,offset:n})=>{let r=e.createRange();if(t.nodeType===Node.TEXT_NODE||t.nodeType===Node.CDATA_SECTION_NODE||t.nodeType===Node.COMMENT_NODE){let e=t,i=Math.max(0,Math.min(n,e.length));r.setStart(e,i)}else{let e=t.childNodes.length,i=Math.max(0,Math.min(n,e));r.setStart(t,i)}return r.collapse(!0),r},xn=({rangeToTest:e,upperBoundRange:t})=>e.compareBoundaryPoints(Range.START_TO_START,t)<0,Sn=e=>{let t=e.createRange(),n=e.body??e.documentElement;if(n)return t.selectNodeContents(n),t.collapse(!1),t},Cn=({anchorNode:e,nextPageNode:t})=>e===t||e.contains(t),wn=({node:e,offset:t,candidates:n,spineItem:r,nextPageEntry:i})=>{if(!e||t===void 0||!r||n.length===0)return;let a=r.renderer.getDocumentFrame()?.contentDocument;if(!a||e.ownerDocument!==a)return;let o=i?.firstVisibleNode?.node,s=i?.firstVisibleNode?.offset,c=i?o!==void 0&&s!==void 0&&o.ownerDocument===a?bn({doc:a,node:o,offset:s}):void 0:Sn(a);if(!c)return;let l=i!==void 0&&o!==void 0&&o.ownerDocument===a,u,d,f;for(let e of n){if(!e.anchorId){f=e.chain;continue}let t=a.getElementById(fn(e.anchorId));if(!t||l&&Cn({anchorNode:t,nextPageNode:o}))continue;let n=a.createRange();n.setStartBefore(t),n.collapse(!0),xn({rangeToTest:n,upperBoundRange:c})&&(!d||n.compareBoundaryPoints(Range.START_TO_START,d)>0)&&(u=e.chain,d=n)}let p=u??f;return p?yn(p):void 0},Tn=({candidate:e,hrefHasAnchor:t})=>{if(t||!e.anchorId)return!1;let n=e.chain[e.chain.length-1],r=e.chain[e.chain.length-2];return!n||!r?!1:Y(n.path)===Y(r.path)},En=({href:e,tocIndex:t,manifest:n})=>{let r=Y(e),i=e.includes(`#`),a=n.spineItems.findIndex(e=>e.href===r),o;for(let e of t)vn(r,e.hrefWithoutAnchor)&&(a<e.spineItemIndex||Tn({candidate:e,hrefHasAnchor:i})||(o=e.chain));return o},Dn=(e,t,n)=>{let{href:r}=n,i=En({href:r,tocIndex:t,manifest:e});return i?yn(i):void 0},On=(e,t)=>e?e.spineItems.reduce((n,r)=>(n[r.id]=Dn(e,t,r),n),{}):{},kn=(e,t,n)=>e+t*n,An=(e,t,n)=>{let{height:r,width:i}=n.layoutInfo,{top:a,left:o}=e.spine.getSpineItemSpineLayoutInfo(n);return e.settings.values.computedPageTurnDirection===`vertical`?Math.max(0,Math.min(1,(t.y-a+e.viewport.absoluteViewport.height)/r)):Math.max(0,Math.min(1,(t.x-o+e.viewport.absoluteViewport.width)/i))},jn=(e,t,r,i,a,o)=>a.isReady$.pipe((0,n.first)(),(0,n.withLatestFrom)(e.layoutInfo$),(0,n.map)(([n,s])=>{let c=o.renditionLayout===`pre-paginated`,l=o.spineItems.length||0,u=o.spineItems.slice(0,t).reduce((e,t)=>e+(t.progressionWeight??0),0)||0,d=e.spineItemsManager.getSpineItemIndex(a)??0,f=o.spineItems.length??0,p=s.pages.filter(e=>e.itemIndex===d).length??0,m=o.spineItems[t]?.progressionWeight??(d+1)/f,h=(r+1)*(m/p);!c&&a.renditionLayout===`reflowable`&&!n&&(h=0);let g=u+h;return o.renditionFlow===`scrolled-continuous`&&(h=n?An(e,i,a):0,g=kn(u,m,h)),t===l-1&&r===p-1&&g>.99?1:g})),Mn=e=>e?(0,t.getItemSpreadPosition)(e.item):void 0,Nn=({item:e,nextItem:t,previousItem:n,readingDirection:r})=>{let i=Mn(e);if(i===void 0)return!1;let a=Mn(i===(r===`rtl`?`right`:`left`)?t:n);return a!==void 0&&a!==i},Pn={tocCandidatesBySpineHref:new Map,chaptersInfo:{}},Fn=({beginItem:e,endItem:t,paginationInfo:n,chaptersData:r,pagesState:i,spineItems:a})=>{let o=e&&n.beginPageIndexInSpineItem!==void 0?J.fromSpineItemPageIndex(i,e.index,n.beginPageIndexInSpineItem):void 0,s=o?J.fromNextPageWithinSameSpineItem(i,o):void 0,c=t&&n.endPageIndexInSpineItem!==void 0?J.fromSpineItemPageIndex(i,t.index,n.endPageIndexInSpineItem):void 0,l=c?J.fromNextPageWithinSameSpineItem(i,c):void 0,u=e?wn({node:o?.firstVisibleNode?.node,offset:o?.firstVisibleNode?.offset,candidates:r.tocCandidatesBySpineHref.get(e.item.href)??[],spineItem:e,nextPageEntry:s}):void 0,d=t?wn({node:c?.firstVisibleNode?.node,offset:c?.firstVisibleNode?.offset,candidates:r.tocCandidatesBySpineHref.get(t.item.href)??[],spineItem:t,nextPageEntry:l}):void 0;return{beginChapterInfo:u??(e?r.chaptersInfo[e.item.id]:void 0),beginHasAdjacentSpreadPage:Nn({item:e,nextItem:e===void 0?void 0:a[e.index+1],previousItem:e===void 0?void 0:a[e.index-1],readingDirection:e?.readingDirection}),beginSpineItemReadingDirection:e?.readingDirection,beginAbsolutePageIndex:o?.absolutePageIndex,endChapterInfo:d??(t?r.chaptersInfo[t.item.id]:void 0),endHasAdjacentSpreadPage:Nn({item:t,nextItem:t===void 0?void 0:a[t.index+1],previousItem:t===void 0?void 0:a[t.index-1],readingDirection:t?.readingDirection}),endSpineItemReadingDirection:t?.readingDirection,endAbsolutePageIndex:c?.absolutePageIndex}},In=({items:e,pagesState:t})=>{let n=e.map(()=>0);for(let e of t.pages)n[e.itemIndex]=(n[e.itemIndex]??0)+1;return{numberOfPagesPerItems:n,numberOfTotalPages:t.pages.length}},Ln=(e,t)=>e.numberOfTotalPages!==t.numberOfTotalPages||e.numberOfPagesPerItems.length!==t.numberOfPagesPerItems.length?!1:e.numberOfPagesPerItems.every((e,n)=>e===t.numberOfPagesPerItems[n]),Rn=({reader:e,paginationInfo:t,navigationPosition:r,manifest:i})=>{let a=e.spineItemsManager.get(t.endSpineItemIndex);return a?jn(e,t.endSpineItemIndex??0,t.endPageIndexInSpineItem||0,r,a,i):(0,n.of)(0)},zn=e=>e.context.manifest$.pipe((0,n.map)(e=>{if(!e)return Pn;let t=hn(e.nav?.toc??[],e);return{tocCandidatesBySpineHref:gn({manifest:e,tocIndex:t}),chaptersInfo:On(e,t)}})),Bn=e=>({beginSpineItemIndex:e.beginSpineItemIndex,beginPageIndexInSpineItem:e.beginPageIndexInSpineItem,endSpineItemIndex:e.endSpineItemIndex,endPageIndexInSpineItem:e.endPageIndexInSpineItem}),Vn=e=>{let r=e.pagination.state$,i=e.spine.pages.layout$,a=zn(e).pipe((0,n.shareReplay)({bufferSize:1,refCount:!0})),o=(0,n.combineLatest)([r.pipe((0,n.map)(Bn),(0,n.distinctUntilChanged)(t.isShallowEqual)),a,i,e.spineItemsManager.items$]).pipe((0,n.map)(([e,t,n,r])=>Fn({beginItem:e.beginSpineItemIndex===void 0?void 0:r[e.beginSpineItemIndex],endItem:e.endSpineItemIndex===void 0?void 0:r[e.endSpineItemIndex],paginationInfo:e,chaptersData:t,pagesState:n,spineItems:r})),(0,n.shareReplay)({bufferSize:1,refCount:!0})),s=(0,n.combineLatest)([r,e.settings.watch([`computedSpreadMode`]).pipe((0,n.map)(e=>e.computedSpreadMode??!1),(0,n.distinctUntilChanged)()),o,(0,n.combineLatest)([i,e.spineItemsManager.items$]).pipe((0,n.map)(([e,t])=>In({items:t,pagesState:e})),(0,n.distinctUntilChanged)(Ln))]).pipe((0,n.map)(([e,t,n,r])=>({...e,...n,isUsingSpread:t,...r}))),c=Rt(e.navigation).pipe((0,n.map)(({position:e})=>e),(0,n.distinctUntilChanged)(t.isShallowEqual));return(0,n.combineLatest)([s,(0,n.combineLatest)([r,e.layout$,c,e.context.manifest$]).pipe((0,n.switchMap)(([t,n,r,i])=>Rn({reader:e,paginationInfo:t,navigationPosition:r,manifest:i})),(0,n.map)(e=>({percentageEstimateOfBook:e})))]).pipe((0,n.map)(([e,t])=>({...e,...t})),(0,n.distinctUntilChanged)(t.isShallowEqual),(0,n.auditTime)(5))},Hn=e=>t=>{let r=e(t),i=new n.BehaviorSubject({...r.pagination.state,beginChapterInfo:void 0,beginHasAdjacentSpreadPage:!1,beginCfi:void 0,beginPageIndexInSpineItem:void 0,isUsingSpread:!1,beginAbsolutePageIndex:0,endAbsolutePageIndex:0,numberOfTotalPages:0,beginSpineItemReadingDirection:void 0,beginSpineItemIndex:void 0,endCfi:void 0,endChapterInfo:void 0,endHasAdjacentSpreadPage:!1,endSpineItemReadingDirection:void 0,percentageEstimateOfBook:0}),o=new an(r),s=Vn(r).pipe((0,n.tap)(e=>a.log(`Pagination`,e))).subscribe(i);return{...r,locateResource:o.locateResource.bind(o),destroy:()=>{s.unsubscribe(),r.destroy()},pagination:{...r.pagination,get state(){return i.value},get state$(){return i}}}},Un=e=>({put:(t,n)=>new Promise((r,i)=>{let a=e.transaction([`store`],`readwrite`);a.onerror=e=>{i(e)},a.oncomplete=()=>{r()};let o=a.objectStore(`store`).put(n,t);o.onsuccess=()=>{r()},o.onerror=e=>{i(e)}}),keys:()=>new Promise((t,n)=>{let r=e.transaction([`store`],`readonly`);r.onerror=e=>{n(e)};let i=r.objectStore(`store`).openKeyCursor(),a=[];i.onsuccess=()=>{let e=i.result;if(!e){t(a);return}a.push(e.key),e.continue()},i.onerror=()=>{n(i.error)}}),get:t=>new Promise((n,r)=>{let i=e.transaction([`store`],`readwrite`),a=i.objectStore(`store`).get(t);a.onsuccess=()=>{let e=a.result;e===void 0&&(e=null),n(e)},i.onerror=()=>{r(a.error)}}),remove:t=>new Promise((n,r)=>{let i=e.transaction([`store`],`readwrite`),a=i.objectStore(`store`).delete(t);i.onerror=()=>{r(a.error)},i.oncomplete=()=>{n()},i.onabort=()=>{r(a.error?a.error:a.transaction?.error)}})}),Wn=async e=>new Promise((t,n)=>{let r=window.indexedDB.open(e);r.onerror=e=>{n(e)},r.onsuccess=()=>{t(Un(r.result))},r.onupgradeneeded=()=>{r.result.createObjectStore(`store`)}}),Gn=e=>{let t=Date.now().toString(),i=new n.Subject,o=t=>{if(typeof t==`string`||typeof t==`object`){let n=typeof t==`object`?t.id:t;return e.manifest?.spineItems.find(e=>e.id===n)}return e.manifest?.spineItems[t]},s=async(e,n)=>{let r=o(e);if(!r)return new Response(`Item not found`,{status:404});let i=await(await Wn(`prose-reader`)).get(`${t}_${r.id}`);if(i)return new Response(i,{status:200});let a=n&&await n(r)||await fetch(r.href);return c(r,a.clone()),a},c=(e,t)=>{i.next({id:e,data:t})};return i.asObservable().pipe((0,r.mergeMap)(({id:e,data:i})=>{let s=o(e);return s?(0,n.from)((0,n.forkJoin)([Wn(`prose-reader`),(0,n.from)(i.blob())])).pipe((0,r.switchMap)(([e,r])=>(0,n.from)(e.put(`${t}_${s.id}`,r))),(0,r.catchError)(e=>(a.error(e),n.EMPTY))):n.EMPTY}),(0,r.takeUntil)(e.destroy$)).subscribe(),(0,n.merge)(e.manifest$.pipe((0,r.tap)(()=>{t=Date.now().toString()}))).pipe((0,r.switchMap)(()=>(a.debug(`Cleanup up old cache...`),(0,n.from)(Wn(`prose-reader`)).pipe((0,r.switchMap)(e=>(0,n.from)(e.keys()).pipe((0,r.map)(e=>e.filter(e=>!e.toString().startsWith(t))),(0,r.switchMap)(t=>{let r=t.map(t=>e.remove(t));return(0,n.from)(Promise.all(r))}))),(0,r.catchError)(e=>(a.error(e),n.EMPTY))))),(0,r.takeUntil)(e.destroy$)).subscribe(),{get:s,destroy:()=>{i.complete()}}},Kn=e=>t=>{let n=e(t),r=Gn(n.context),i=()=>{r.destroy(),n.destroy()};return{...n,destroy:i}},qn=(e,t)=>{let n=e.node.ownerDocument?.createRange(),r=e.node.compareDocumentPosition(t.node);if(n){try{if(r&Node.DOCUMENT_POSITION_PRECEDING)n.setStart(t.node,t.offset||0),n.setEnd(e.node,e.offset||0);else if(r&Node.DOCUMENT_POSITION_FOLLOWING)n.setStart(e.node,e.offset||0),n.setEnd(t.node,t.offset||0);else{let r=Math.min(e.offset||0,t.offset||0),i=Math.max(e.offset||0,t.offset||0);n.setStart(e.node,r),n.setEnd(e.node,i)}}catch(n){a.warn(`Failed to create range from selection`,n,{anchor:e,focus:t})}return n}},Jn=({selection:e,spineItem:t})=>{let{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:o}=e;if(!(!n||!i))try{return qn({node:n,offset:r},{node:i,offset:o})}catch(n){a.warn(`Failed to create range from selection`,n,{selection:e,spineItem:t});return}},Yn=class extends q{constructor(e){super();let t=e.contentDocument||e.contentWindow?.document;if(!t)this.selectionChange$=n.NEVER,this.selectionOver$=n.NEVER;else{let r=we(t.body,{childList:!0,subtree:!0}).pipe((0,n.filter)(e=>!!e.find(e=>e.type===`childList`&&e.removedNodes.length))),i=e.parentElement?we(e.parentElement,{childList:!0}).pipe((0,n.filter)(t=>!!t.find(t=>Array.from(t.removedNodes).includes(e)))):(0,n.of)(null);this.selectionChange$=(0,n.merge)((0,n.fromEvent)(t,`selectionchange`),r).pipe((0,n.map)(()=>t.getSelection()),(0,n.takeUntil)((0,n.merge)(i,this.destroy$)),(0,n.endWith)(null)),this.selectionOver$=(0,n.fromEvent)(t,`pointerdown`).pipe((0,n.switchMap)(()=>(0,n.merge)((0,n.fromEvent)(t,`pointerup`),(0,n.fromEvent)(t,`pointercancel`),(0,n.fromEvent)(t,`contextmenu`)).pipe((0,n.first)(),(0,n.delay)(0),(0,n.map)(e=>{let n=t.getSelection();return n&&!n.isCollapsed?[e,n]:void 0}),(0,n.filter)(F))),(0,n.takeUntil)((0,n.merge)(i,this.destroy$)))}}},Xn=e=>e.watch(`isLoaded`).pipe((0,n.switchMap)(()=>{let t=e.renderer.getDocumentFrame(),r=t?.contentDocument||t?.contentWindow?.document;if(!t||!r)return n.NEVER;let i=new Yn(t);return(0,n.merge)(i.selectionChange$.pipe((0,n.map)(e=>{if(e?.toString())return{type:`change`,selection:e}})),i.selectionOver$.pipe((0,n.map)(([e,t])=>({type:`over`,event:e,selection:t})))).pipe((0,n.takeUntil)(e.unloaded$),(0,n.endWith)(void 0),(0,n.finalize)(()=>{i.destroy()}))}),(0,n.distinctUntilChanged)()),Zn=e=>t=>{let r=e(t),i,a=r.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>{let t=r.spineItemsManager.getSpineItemIndex(e)??0;return Xn(e).pipe((0,n.map)(e=>{if(e)return{...e,itemIndex:t}}))}))),(0,n.startWith)(void 0),(0,n.distinctUntilChanged)(),(0,n.tap)(e=>{i=e}),(0,n.shareReplay)({refCount:!0,bufferSize:1})),o=a,s=a.pipe((0,n.map)(e=>!!e),(0,n.distinctUntilChanged)(),(0,n.filter)(e=>e),(0,n.share)()),c=s.pipe((0,n.switchMap)(()=>o),(0,n.distinctUntilChanged)(),(0,n.filter)(e=>!e),(0,n.share)()),l=a.pipe((0,n.filter)(e=>e?.type===`over`),(0,n.share)()),u=r.context.watch(`rootElement`).pipe((0,n.filter)(F),(0,n.switchMap)(e=>(0,n.fromEvent)(e,`pointerdown`)),(0,n.withLatestFrom)(o),(0,n.map)(([,e])=>e),(0,n.startWith)(void 0),(0,n.shareReplay)({refCount:!0,bufferSize:1}));return(0,n.merge)(o,u).pipe((0,n.takeUntil)(r.$.destroy$)).subscribe(),{...r,selection:{selection$:o,selectionStart$:s,selectionEnd$:c,selectionOver$:l,lastSelectionOnPointerdown$:u,getSelection:()=>i,createOrderedRangeFromSelection:Jn}}},Qn=[{name:`bright`,backgroundColor:`white`},{name:`sepia`,backgroundColor:`#eaddc7`,foregroundColor:`black`},{name:`night`,backgroundColor:`#191717`,foregroundColor:`#f1ebeb`}],$n=e=>t=>{let i=e(t),a=new n.BehaviorSubject(t.theme??`bright`),o=()=>{let e=Qn.find(e=>e.name===a.value);return`
180
180
  body {
181
181
  ${e===void 0?``:`background-color: ${e.backgroundColor} !important;`}
182
182
  }
@@ -186,19 +186,19 @@
186
186
  color: ${e.foregroundColor};
187
187
  }
188
188
  `:``}
189
- `},s=({container:e})=>{let t=$n.find(e=>e.name===a.value);return t&&u(e.style,`background-color`,t.backgroundColor),()=>{}},c=()=>{i.spineItemsManager.items.forEach(e=>{let t=e.renderer.getDocumentFrame();t&&E(t,`prose-reader-theme`,o()),s({container:e.element})})};return i.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{let t=i.spineItemsManager.get(e);if(t?.renditionLayout!==`pre-paginated`){let e=t?.renderer.getDocumentFrame();e&&E(e,`prose-reader-theme`,o())}}),i.spineItemsManager.items$.pipe((0,r.tap)(e=>e.map(({element:e})=>s({container:e}))),(0,r.takeUntil)(i.$.destroy$)).subscribe(),a.pipe((0,r.tap)(()=>{c()}),(0,r.takeUntil)(i.$.destroy$)).subscribe(),{...i,theme:{set:e=>{e!==a.value&&a.next(e)},get:()=>a.value,$:{theme$:a.asObservable()}}}},tr=e=>t=>{let n=e(t),r=e=>!!(re(e)&&(e.nodeName===`a`?e:e.closest(`a`))?.getAttribute(`href`)),i=(e,t,r)=>{let i=r.replace("${id}",n.id);return S(e,`${t}-${n.id}`,i)};return{...n,utils:{isOrIsWithinValidLink:r,injectScopedCSS:i}}};navigator.userAgent.indexOf(``)>-1&&navigator.userAgent.indexOf(`Chrome`);var nr=e=>t=>e(t),rr=(e,t,n)=>{let{clientWidth:r,clientHeight:i}=n.value.element,a={maxX:0,minX:r*(1-t),maxY:0,minY:i*(1-t)};return{x:Math.min(Math.max(e.x,a.minX),a.maxX),y:Math.min(Math.max(e.y,a.minY),a.maxY)}},ir=(e,t,n)=>{u(n.style,`transform-origin`,`0 0`);let r=`translate3d(${t.x}px, ${t.y}px, 0px)`,i=`scale(${e})`;u(n.style,`transform`,`${r} ${i}`)},ar=(e,t,n,r)=>{let i=t/e,a=n.clientWidth,o=n.clientHeight,s=a/2-r.x,c=o/2-r.y;return{x:r.x+s*(1-i),y:r.y+c*(1-i)}},or=class{constructor(e){this.x=e.x,this.y=e.y}},sr=class extends or{},cr=class extends or{constructor(...e){super(...e),this.__symbol=Symbol(`UnboundScrollPosition`)}},lr=class extends j{constructor(e,t,r,i,a){super({element:void 0}),this.viewport=e,this.settings=t,this.hookManager=r,this.spine=i,this.context=a,this.navigateSubject=new n.Subject,this.scrollingSubject=new n.BehaviorSubject(!1),this.applyNavigationPosition=({position:e})=>{let t=this.value.element;if(!t)return;let r=this.fromSpinePosition(e);Math.round(r.x)===t.scrollLeft&&Math.round(r.y)===t.scrollTop||(this.scrollingSubject.next(!0),t.scrollTo({left:r.x,top:r.y,behavior:`instant`}),(0,n.timer)(1).pipe((0,n.tap)(()=>{this.scrollingSubject.next(!1)}),(0,n.takeUntil)((0,n.merge)(this.scrollingSubject.pipe((0,n.skip)(1)),this.destroy$))).subscribe(),this.hookManager.execute(`onViewportOffsetAdjust`,void 0))},this.isActive=()=>this.settings.values.computedPageTurnMode===`scrollable`,this.getNavigationVisibleArea=()=>this.viewport.relativeViewport;let o=this.context.pipe(O([`rootElement`]),(0,n.tap)(({rootElement:e})=>{if(!e)return;let t=document.createElement(`div`);t.setAttribute(`data-${mt}`,``),t.appendChild(this.viewport.value.element),e.appendChild(t),this.update({element:t})})),s=(0,n.combineLatest)([t.watch([`computedPageTurnMode`]),this.watch(`element`)]).pipe((0,n.tap)(([{computedPageTurnMode:e},t])=>{t&&(e===`scrollable`?u(t.style,`display`,`block`):u(t.style,`display`,`contents`))})),c=this.navigateSubject.pipe((0,n.tap)(this.applyNavigationPosition));this.isNavigating$=this.scrollingSubject.asObservable();let l=(0,n.combineLatest)([(0,n.merge)(i.element$.pipe((0,n.filter)(L),(0,n.switchMap)(e=>k(e))),i.element$.pipe((0,n.filter)(L),(0,n.switchMap)(e=>(0,n.fromEvent)(e,`scroll`))),i.spineItemsObserver.itemResize$).pipe((0,n.switchMap)(()=>(0,n.timer)(10).pipe((0,n.map)(()=>!1),(0,n.startWith)(!0))),(0,n.distinctUntilChanged)(),(0,n.startWith)(!1)),this.isNavigating$]).pipe((0,n.map)(([e,t])=>e||t),(0,n.shareReplay)(1));this.userScroll$=this.watch(`element`).pipe((0,n.filter)(L),(0,n.switchMap)(e=>t.watch([`computedPageTurnMode`]).pipe((0,n.switchMap)(({computedPageTurnMode:t})=>t===`controlled`?n.NEVER:(0,n.fromEvent)(e,`scroll`).pipe((0,n.withLatestFrom)(l),(0,n.filter)(([,e])=>!e),(0,n.map)(([e])=>e))))),(0,n.share)()),(0,n.merge)(o,s,c).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}update(e){this.mergeCompare(e)}navigate(e){this.navigateSubject.next(e)}fromScrollPosition(e){let t=this.viewport.scaleFactor;return new W({x:e.x/t,y:e.y/t})}fromSpinePosition(e){let t=this.viewport.scaleFactor;return new sr({x:e.x*t,y:e.y*t})}get scrollPosition(){let e=this.value.element;return new sr({x:e?.scrollLeft??0,y:e?.scrollTop??0})}},ur=(e,t,n,r,i)=>{let a=e.clientWidth,o=e.clientHeight,s=e.scrollLeft,c=e.scrollTop,l=s+a/2-r,u=c+o/2-i,d=n/t,f=l*d,p=u*d;return new cr({x:f-a/2+r,y:p-o/2+i})},dr=(e,t)=>{let n=t.viewport,r=t.navigation.scrollNavigationController,i=n.value.element,a=r.value.element,o=r.value.element,c=Math.round(n.scaleFactor*100)/100,l=i.offsetLeft,d=i.offsetTop,f=ur(a??ee(),c,e,l,d),p=e<1?`down`:`up`;o&&s(o,`data-${G}-zooming-direction`,p),e<1?u(i.style,`transform-origin`,`top`):e>1&&u(i.style,`transform-origin`,`${l}px ${d}px`),u(i.style,`transform`,`scale(${e})`);let m=r.fromScrollPosition(f);t.navigation.navigate({position:m})},X=200,fr=class extends j{constructor(e){super({isZooming:!1,currentScale:1,currentPosition:{x:0,y:0}}),this.reader=e,this.enterSubject=new n.Subject,this.exitSubject=new n.Subject,(0,n.merge)(this.enterSubject.pipe((0,n.switchMap)(e=>{let{scale:t=1,animate:r=!1}=e??{},i=this.reader.viewport.value.element;s(this.viewport.element,`data-${G}-zooming`,`true`);let a=this.scrollNavigationController.value.element;return a&&s(a,`data-${G}-zooming`,this.isControlled?`false`:`true`),r&&this.isControlled&&u(i.style,`transition`,`transform ${X}ms`),this.mergeCompare({isZooming:!0,currentScale:1,currentPosition:{x:0,y:0}}),this.updateZoom(t),t!==1&&this.isControlled?(0,n.timer)(e?.animate?X:0).pipe((0,n.tap)(()=>{this.reader.layout()})):n.EMPTY})),this.exitSubject.pipe((0,n.switchMap)(e=>{let t=this.reader.viewport.value.element;s(this.viewport.element,`data-${G}-zooming`,`false`);let r=this.scrollNavigationController.value.element;return r&&(c(r,`data-${G}-zooming-direction`),s(r,`data-${G}-zooming`,`false`)),e?.animate&&this.isControlled&&u(t.style,`transition`,`transform ${X}ms`),this.updateZoom(1,{x:0,y:0}),d(t.style,`transform`),this.mergeCompare({isZooming:!1}),(0,n.timer)(e?.animate?X:0).pipe((0,n.tap)(()=>{let e=this.reader.viewport.value.element;d(e.style,`transform-origin`),d(e.style,`transition`),this.isControlled&&this.reader.layout()}),(0,n.takeUntil)(this.enterSubject))}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}enter(e){this.enterSubject.next(e)}exit(e){this.exitSubject.next(e)}move(e,t){this.isControlled&&(d(this.viewport.element.style,`transition`),this.updateZoom(this.value.currentScale,e,{constraints:t?.constrain===`within-viewport`?(...e)=>rr(...e,this.reader.viewport):void 0}))}scaleAt(e,t){if(!this.value.isZooming)return;d(this.viewport.element.style,`transition`);let n=Math.ceil(e*100)/100;this.updateZoom(n,void 0,{constraints:t?.constrain===`within-viewport`?(...e)=>rr(...e,this.reader.viewport):void 0})}updateZoom(e,t,n){if(this.isControlled){let r=t||ar(this.value.currentScale,e,this.viewport.element,this.value.currentPosition),i=n?.constraints?.(r,e)??r;return this.applyZoom(e,i),this.mergeCompare({currentScale:e,currentPosition:i})}this.applyZoom(e,t??this.value.currentPosition),this.mergeCompare({currentScale:e})}applyZoom(e,t){this.isControlled?ir(e,t,this.viewport.element):dr(e,this.reader),this.reader.viewport.layout()}get isControlled(){return this.reader.settings.values.computedPageTurnMode===`controlled`}get scrollNavigationController(){return this.reader.navigation.scrollNavigationController}get viewport(){return this.reader.viewport.value}},pr=e=>t=>{let n=e(t),r=new fr(n),i=()=>{r.destroy(),n.destroy()},a=r;return{...n,destroy:i,zoom:{enter:r.enter.bind(r),scaleAt:r.scaleAt.bind(r),move:r.move.bind(r),exit:r.exit.bind(r),state$:a,get state(){return r.value}}}},mr=e=>(0,i.generate)({spineIndex:e.index,spineId:e.id}),hr=({nodeOrRange:e,offset:t,item:n})=>{let r=`ownerDocument`in e?e.ownerDocument:e.startContainer.ownerDocument;return!r?.documentElement||e===r?mr(n):ae(e)?(0,i.generate)({start:{node:e.startContainer,offset:e.startOffset,spineIndex:n.index,spineId:n.id},end:{node:e.endContainer,offset:e.endOffset,spineIndex:n.index,spineId:n.id}}):(0,i.generate)({node:e,offset:t,spineIndex:n.index,spineId:n.id})},gr=({spineItem:e,pageNode:t})=>hr({nodeOrRange:t.node,offset:t.offset,item:e}).trim(),_r=(e,t)=>hr({nodeOrRange:e,item:t}),vr=e=>e.index.toString(),yr=e=>e[0]?.index===6&&e.length>1,br=e=>(0,i.isIndirectionOnly)((0,i.parse)(e)),xr=e=>Array.isArray(e)?e[0]&&yr(e[0])?e[0]:void 0:e.parent[0]&&yr(e.parent[0])?e.parent[0]:void 0,Sr=e=>{let t=(0,i.parse)(e),n=((xr(t)??[])[1]?.index??2)/2-1,r=(0,i.isParsedCfiRange)(t);return{isCfiRange:r,itemIndex:n,offset:(r?t.end.at(-1)?.at(-1)?.offset:t.at(-1)?.at(-1)?.offset)??0}},Cr=({cfi:e,spineItemsManager:t})=>{let{itemIndex:n,...r}=Sr(e),o=t.get(n);if(!o)return{...r,itemIndex:n,node:null};let s=o.renderer.getDocumentFrame();if(s instanceof HTMLIFrameElement){let t=s.contentWindow?.document;if(t)try{let a=(0,i.resolve)(e,t,{throwOnError:!0});return{...r,itemIndex:n,node:a.isRange?a.node?.startContainer??null:a.node??null,isCfiRange:a.isRange,range:a.isRange?a.node:void 0,offset:Array.isArray(a.offset)?a.offset.at(-1):a.offset,spineItem:o}}catch(t){return a.warn(`Error resolving cfi: ${e}.`),a.warn(t),{...r,spineItem:o,itemIndex:n,node:null}}}return{...r,itemIndex:n,spineItem:o,node:null}},wr=class{constructor(e,t){this.hookManager=e,this.spineItemsManager=t,this.transformForResolve=e=>{let{finalParams:t}=this.hookManager.executeSequential(`cfi.beforeResolve`,{cfi:e},(e,t)=>({cfi:t??e.cfi}));return t.cfi},this.parseCfi=e=>Sr(this.transformForResolve(e)),this.getSpineItemFromCfi=e=>{let{itemIndex:t}=this.parseCfi(e);if(t!==void 0)return this.spineItemsManager.get(t)},this.isRootCfi=e=>br(e),this.generateRootCfi=e=>this.transformGeneratedCfi({cfi:mr(e),spineItem:e}),this.generateCfiForSpineItemPage=({spineItem:e,pageNode:t})=>this.transformGeneratedCfi({cfi:gr({spineItem:e,pageNode:t}),spineItem:e}),this.generateCfiFromRange=(e,t)=>this.transformGeneratedCfi({cfi:_r(e,t),spineItem:t}),this.resolveCfi=e=>Cr({...e,cfi:this.transformForResolve(e.cfi),spineItemsManager:this.spineItemsManager})}transformGeneratedCfi(e){let{finalParams:t}=this.hookManager.executeSequential(`cfi.afterGenerate`,e,(e,t)=>({...e,cfi:t??e.cfi}));return t.cfi}},Tr=e=>e?.spineItems.every(t=>(t.renditionLayout??e.renditionLayout)===`pre-paginated`),Er=class{constructor(){this.navigationSubject=new n.ReplaySubject(1),this.positionSubject=new n.ReplaySubject(1),this.viewportStateSubject=new n.BehaviorSubject(`free`),this.paginationSubject=new n.ReplaySubject(1),this.pagination$=this.paginationSubject.asObservable(),this.viewportState$=this.viewportStateSubject.asObservable(),this.viewportFree$=this.viewportState$.pipe((0,n.filter)(e=>e===`free`)),this.viewportBusy$=this.viewportState$.pipe((0,n.filter)(e=>e===`busy`)),this.navigation$=this.navigationSubject.asObservable(),this.position$=this.positionSubject.asObservable()}},Dr=class extends j{constructor(){super({assumedRenditionLayout:`reflowable`}),this.bridgeEvent=new Er,this.manifest$=this.pipe((0,r.map)(e=>e.manifest),(0,r.filter)(L),(0,r.distinctUntilChanged)()),this.isRTL=()=>this.value.manifest?.readingDirection===`rtl`}update(e){let t=this.value,n=e.manifest??t.manifest,r={...t,...e,...e.manifest&&{isFullyPrePaginated:Tr(n),assumedRenditionLayout:n?.renditionLayout??`reflowable`}};this.mergeCompare(r)}get manifest(){return this.value.manifest}get readingDirection(){return this.manifest?.readingDirection}},Or=class extends j{constructor(e,r){super({supportedPageTurnAnimation:[`fade`,`none`,`slide`],supportedPageTurnMode:[`controlled`,`scrollable`],supportedPageTurnDirection:[`horizontal`,`vertical`],supportedComputedPageTurnDirection:[`horizontal`,`vertical`]}),(0,n.combineLatest)([e.watch([`manifest`,`hasVerticalWriting`]),r.watch([`computedPageTurnMode`])]).pipe((0,n.map)(([{manifest:e,hasVerticalWriting:t},{computedPageTurnMode:n}])=>({hasVerticalWriting:t,renditionFlow:e?.renditionFlow,renditionLayout:e?.renditionLayout,computedPageTurnMode:n})),(0,n.distinctUntilChanged)(t.isShallowEqual),(0,n.map)(({hasVerticalWriting:e,renditionFlow:t,renditionLayout:n,computedPageTurnMode:r})=>({...this.value,supportedPageTurnMode:t===`scrolled-continuous`?[`scrollable`]:[`controlled`,`scrollable`],supportedPageTurnAnimation:t===`scrolled-continuous`||r===`scrollable`?[`none`]:e?[`fade`,`none`]:[`fade`,`none`,`slide`],supportedPageTurnDirection:r===`scrollable`?[`vertical`]:n===`reflowable`?[`horizontal`]:[`horizontal`,`vertical`]})),(0,n.takeUntil)(this.destroy$)).subscribe(this.next.bind(this))}},kr=class{constructor(){this._hooks=[],this._hookExecutions=[]}getHooks(e){return this._hooks.filter(t=>e===t.name)}deregister(e){return this._hooks=this._hooks.filter(t=>t!==e),this.destroy(e.name,void 0,e)}register(e,t){let n={name:e,runFn:t};return this._hooks.push(n),()=>{this.deregister(n)}}execute(e,t){return this.getHooks(e).map(e=>e.runFn(t))}async executeAsync(e,t,r,i){let a=this.getHooks(e);if(a.length===0)return Promise.resolve([]);let o=a.map(r=>{let i=new AbortController;return{name:e,id:t,ref:r,abortController:i,destroyFn:()=>(i.abort(),(0,n.of)(void 0))}});this._hookExecutions.push(...o);let s=e=>{this._hookExecutions=this._hookExecutions.filter(t=>t!==e)},c=()=>{for(let e of o)this._hookExecutions.includes(e)&&(e.abortController.abort(),s(e))};i?.aborted?c():i?.addEventListener(`abort`,c,{once:!0});let l=o.map(async e=>{let t={...r,signal:e.abortController.signal};try{return await Promise.resolve(),await e.ref.runFn(t)}finally{s(e)}});try{return await Promise.all(l)}finally{i?.removeEventListener(`abort`,c)}}fromExecuteAsync(e,t,r){return new n.Observable(n=>{let i=new AbortController;return this.executeAsync(e,t,r,i.signal).then(e=>{n.next(e),n.complete()},e=>n.error(e)),()=>{i.abort()}})}executeSequential(e,t,n){let r=t,i=this.getHooks(e).map(e=>{let t=e.runFn(r);return r=n(r,t),t});return{finalParams:r,results:i}}destroy(e,t,r){let i=this._hookExecutions.filter(n=>r&&n.ref===r||e===n.name&&(!t||t&&t===n.id));return this._hookExecutions=this._hookExecutions.filter(e=>!i.includes(e)),(0,n.combineLatest)(i.map(({destroyFn:e})=>e()))}},Ar=`[data-prose-reader-spine-item][data-is-ready=false]{pointer-events:none;-webkit-user-select:none;user-select:none}.prose-reader-enhancer-loading-container{width:100%;height:100%;max-width:var(--prose-reader-absolute-viewport-width,100%);text-align:center;color:#cacaca;z-index:1;background-color:#fff;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}[data-prose-reader-spine-item][data-is-ready=true] .prose-reader-enhancer-loading-container{visibility:hidden;z-index:0}.prose-reader-enhancer-loading-logo{font-size:4em}.prose-reader-enhancer-loading-details{text-overflow:ellipsis;white-space:nowrap;width:80%;max-width:300px;font-size:1.2em;overflow:hidden}[data-prose-reader-scroll-navigator][data-prose-reader-zooming=true]{overflow:scroll}[data-prose-reader-scroll-navigator][data-prose-reader-zooming=true][data-prose-reader-zooming-direction=down]{overflow-x:auto}[data-prose-reader-scroll-navigator]{width:100%;height:100%;position:relative;overflow:hidden scroll}[data-prose-reader-viewport]{background-color:#fff;width:100%;height:100%;position:relative}`,jr=e=>({x:-e.x,y:-e.y}),Mr=e=>e instanceof DOMMatrix?new U({x:-e.e,y:-e.f}):new U({x:-e.x,y:-e.y}),Nr=a.namespace(`navigation/ControlledNavigationController`),Pr=class extends q{constructor(e,r,i,a,o){super(),this.settings=e,this.hookManager=r,this.context=i,this.spine=a,this.viewport=o,this.navigateSubject=new n.Subject,this.element$=new n.BehaviorSubject(document.createElement(`div`)),this.isActive=()=>this.settings.values.computedPageTurnMode===`controlled`,this.getNavigationVisibleArea=()=>this.viewport.absoluteViewport;let s=this.spine.element$.pipe((0,n.filter)(L),(0,n.withLatestFrom)(this.element$),(0,n.tap)(([e,t])=>{t.style.cssText=`
189
+ `},s=({container:e})=>{let t=Qn.find(e=>e.name===a.value);return t&&u(e.style,`background-color`,t.backgroundColor),()=>{}},c=()=>{i.spineItemsManager.items.forEach(e=>{let t=e.renderer.getDocumentFrame();t&&C(t,`prose-reader-theme`,o()),s({container:e.element})})};return i.hookManager.register(`item.onDocumentLoad`,async({itemId:e})=>{let t=i.spineItemsManager.get(e);if(t?.renditionLayout!==`pre-paginated`){let e=t?.renderer.getDocumentFrame();e&&C(e,`prose-reader-theme`,o())}}),i.spineItemsManager.items$.pipe((0,r.tap)(e=>e.map(({element:e})=>s({container:e}))),(0,r.takeUntil)(i.$.destroy$)).subscribe(),a.pipe((0,r.tap)(()=>{c()}),(0,r.takeUntil)(i.$.destroy$)).subscribe(),{...i,theme:{set:e=>{e!==a.value&&a.next(e)},get:()=>a.value,$:{theme$:a.asObservable()}}}},er=e=>t=>{let n=e(t),r=e=>!!(b(e)&&(e.nodeName===`a`?e:e.closest(`a`))?.getAttribute(`href`)),i=(e,t,r)=>{let i=r.replace("${id}",n.id);return x(e,`${t}-${n.id}`,i)};return{...n,utils:{isOrIsWithinValidLink:r,injectScopedCSS:i}}};navigator.userAgent.indexOf(``)>-1&&navigator.userAgent.indexOf(`Chrome`);var tr=e=>t=>e(t),nr=(e,t,n)=>{let{clientWidth:r,clientHeight:i}=n.value.element,a={maxX:0,minX:r*(1-t),maxY:0,minY:i*(1-t)};return{x:Math.min(Math.max(e.x,a.minX),a.maxX),y:Math.min(Math.max(e.y,a.minY),a.maxY)}},rr=(e,t,n)=>{u(n.style,`transform-origin`,`0 0`);let r=`translate3d(${t.x}px, ${t.y}px, 0px)`,i=`scale(${e})`;u(n.style,`transform`,`${r} ${i}`)},ir=(e,t,n,r)=>{let i=t/e,a=n.clientWidth,o=n.clientHeight,s=a/2-r.x,c=o/2-r.y;return{x:r.x+s*(1-i),y:r.y+c*(1-i)}},ar=class{constructor(e){this.x=e.x,this.y=e.y}},or=class extends ar{},sr=class extends ar{constructor(...e){super(...e),this.__symbol=Symbol(`UnboundScrollPosition`)}},cr=class extends k{constructor(e,t,r,i,a){super({element:void 0}),this.viewport=e,this.settings=t,this.hookManager=r,this.spine=i,this.context=a,this.navigateSubject=new n.Subject,this.scrollingSubject=new n.BehaviorSubject(!1),this.applyNavigationPosition=({position:e})=>{let t=this.value.element;if(!t)return;let r=this.fromSpinePosition(e);Math.round(r.x)===t.scrollLeft&&Math.round(r.y)===t.scrollTop||(this.scrollingSubject.next(!0),t.scrollTo({left:r.x,top:r.y,behavior:`instant`}),(0,n.timer)(1).pipe((0,n.tap)(()=>{this.scrollingSubject.next(!1)}),(0,n.takeUntil)((0,n.merge)(this.scrollingSubject.pipe((0,n.skip)(1)),this.destroy$))).subscribe(),this.hookManager.execute(`onViewportOffsetAdjust`,void 0))},this.isActive=()=>this.settings.values.computedPageTurnMode===`scrollable`,this.getNavigationVisibleArea=()=>this.viewport.relativeViewport;let o=this.context.pipe(E([`rootElement`]),(0,n.tap)(({rootElement:e})=>{if(!e)return;let t=document.createElement(`div`);t.setAttribute(`data-${gt}`,``),t.appendChild(this.viewport.value.element),e.appendChild(t),this.update({element:t})})),s=(0,n.combineLatest)([t.watch([`computedPageTurnMode`]),this.watch(`element`)]).pipe((0,n.tap)(([{computedPageTurnMode:e},t])=>{t&&(e===`scrollable`?u(t.style,`display`,`block`):u(t.style,`display`,`contents`))})),c=this.navigateSubject.pipe((0,n.tap)(this.applyNavigationPosition));this.isNavigating$=this.scrollingSubject.asObservable();let l=(0,n.combineLatest)([(0,n.merge)(i.element$.pipe((0,n.filter)(F),(0,n.switchMap)(e=>D(e))),i.element$.pipe((0,n.filter)(F),(0,n.switchMap)(e=>(0,n.fromEvent)(e,`scroll`))),i.spineItemsObserver.itemResize$).pipe((0,n.switchMap)(()=>(0,n.timer)(10).pipe((0,n.map)(()=>!1),(0,n.startWith)(!0))),(0,n.distinctUntilChanged)(),(0,n.startWith)(!1)),this.isNavigating$]).pipe((0,n.map)(([e,t])=>e||t),(0,n.shareReplay)(1));this.userScroll$=this.watch(`element`).pipe((0,n.filter)(F),(0,n.switchMap)(e=>t.watch([`computedPageTurnMode`]).pipe((0,n.switchMap)(({computedPageTurnMode:t})=>t===`controlled`?n.NEVER:(0,n.fromEvent)(e,`scroll`).pipe((0,n.withLatestFrom)(l),(0,n.filter)(([,e])=>!e),(0,n.map)(([e])=>e))))),(0,n.share)()),(0,n.merge)(o,s,c).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}update(e){this.mergeCompare(e)}navigate(e){this.navigateSubject.next(e)}fromScrollPosition(e){let t=this.viewport.scaleFactor;return new H({x:e.x/t,y:e.y/t})}fromSpinePosition(e){let t=this.viewport.scaleFactor;return new or({x:e.x*t,y:e.y*t})}get scrollPosition(){let e=this.value.element;return new or({x:e?.scrollLeft??0,y:e?.scrollTop??0})}},lr=(e,t,n,r,i)=>{let a=e.clientWidth,o=e.clientHeight,s=e.scrollLeft,c=e.scrollTop,l=s+a/2-r,u=c+o/2-i,d=n/t,f=l*d,p=u*d;return new sr({x:f-a/2+r,y:p-o/2+i})},ur=(e,t)=>{let n=t.viewport,r=t.navigation.scrollNavigationController,i=n.value.element,a=r.value.element,o=r.value.element,c=Math.round(n.scaleFactor*100)/100,l=i.offsetLeft,d=i.offsetTop,f=lr(a??te(),c,e,l,d),p=e<1?`down`:`up`;o&&s(o,`data-${U}-zooming-direction`,p),e<1?u(i.style,`transform-origin`,`top`):e>1&&u(i.style,`transform-origin`,`${l}px ${d}px`),u(i.style,`transform`,`scale(${e})`);let m=r.fromScrollPosition(f);t.navigation.navigate({position:m})},X=200,dr=class extends k{constructor(e){super({isZooming:!1,currentScale:1,currentPosition:{x:0,y:0}}),this.reader=e,this.enterSubject=new n.Subject,this.exitSubject=new n.Subject,(0,n.merge)(this.enterSubject.pipe((0,n.switchMap)(e=>{let{scale:t=1,animate:r=!1}=e??{},i=this.reader.viewport.value.element;s(this.viewport.element,`data-${U}-zooming`,`true`);let a=this.scrollNavigationController.value.element;return a&&s(a,`data-${U}-zooming`,this.isControlled?`false`:`true`),r&&this.isControlled&&u(i.style,`transition`,`transform ${X}ms`),this.mergeCompare({isZooming:!0,currentScale:1,currentPosition:{x:0,y:0}}),this.updateZoom(t),t!==1&&this.isControlled?(0,n.timer)(e?.animate?X:0).pipe((0,n.tap)(()=>{this.reader.layout()})):n.EMPTY})),this.exitSubject.pipe((0,n.switchMap)(e=>{let t=this.reader.viewport.value.element;s(this.viewport.element,`data-${U}-zooming`,`false`);let r=this.scrollNavigationController.value.element;return r&&(c(r,`data-${U}-zooming-direction`),s(r,`data-${U}-zooming`,`false`)),e?.animate&&this.isControlled&&u(t.style,`transition`,`transform ${X}ms`),this.updateZoom(1,{x:0,y:0}),d(t.style,`transform`),this.mergeCompare({isZooming:!1}),(0,n.timer)(e?.animate?X:0).pipe((0,n.tap)(()=>{let e=this.reader.viewport.value.element;d(e.style,`transform-origin`),d(e.style,`transition`),this.isControlled&&this.reader.layout()}),(0,n.takeUntil)(this.enterSubject))}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}enter(e){this.enterSubject.next(e)}exit(e){this.exitSubject.next(e)}move(e,t){this.isControlled&&(d(this.viewport.element.style,`transition`),this.updateZoom(this.value.currentScale,e,{constraints:t?.constrain===`within-viewport`?(...e)=>nr(...e,this.reader.viewport):void 0}))}scaleAt(e,t){if(!this.value.isZooming)return;d(this.viewport.element.style,`transition`);let n=Math.ceil(e*100)/100;this.updateZoom(n,void 0,{constraints:t?.constrain===`within-viewport`?(...e)=>nr(...e,this.reader.viewport):void 0})}updateZoom(e,t,n){if(this.isControlled){let r=t||ir(this.value.currentScale,e,this.viewport.element,this.value.currentPosition),i=n?.constraints?.(r,e)??r;return this.applyZoom(e,i),this.mergeCompare({currentScale:e,currentPosition:i})}this.applyZoom(e,t??this.value.currentPosition),this.mergeCompare({currentScale:e})}applyZoom(e,t){this.isControlled?rr(e,t,this.viewport.element):ur(e,this.reader),this.reader.viewport.layout()}get isControlled(){return this.reader.settings.values.computedPageTurnMode===`controlled`}get scrollNavigationController(){return this.reader.navigation.scrollNavigationController}get viewport(){return this.reader.viewport.value}},fr=e=>t=>{let n=e(t),r=new dr(n),i=()=>{r.destroy(),n.destroy()},a=r;return{...n,destroy:i,zoom:{enter:r.enter.bind(r),scaleAt:r.scaleAt.bind(r),move:r.move.bind(r),exit:r.exit.bind(r),state$:a,get state(){return r.value}}}},pr=e=>(0,i.generate)({spineIndex:e.index,spineId:e.id}),mr=({nodeOrRange:e,offset:t,item:n})=>{let r=`ownerDocument`in e?e.ownerDocument:e.startContainer.ownerDocument;return!r?.documentElement||e===r?pr(n):oe(e)?(0,i.generate)({start:{node:e.startContainer,offset:e.startOffset,spineIndex:n.index,spineId:n.id},end:{node:e.endContainer,offset:e.endOffset,spineIndex:n.index,spineId:n.id}}):(0,i.generate)({node:e,offset:t,spineIndex:n.index,spineId:n.id})},hr=({spineItem:e,pageNode:t})=>mr({nodeOrRange:t.node,offset:t.offset,item:e}).trim(),gr=(e,t)=>mr({nodeOrRange:e,item:t}),_r=e=>e.index.toString(),vr=e=>e[0]?.index===6&&e.length>1,yr=e=>(0,i.isIndirectionOnly)((0,i.parse)(e)),br=e=>Array.isArray(e)?e[0]&&vr(e[0])?e[0]:void 0:e.parent[0]&&vr(e.parent[0])?e.parent[0]:void 0,xr=e=>{let t=(0,i.parse)(e),n=((br(t)??[])[1]?.index??2)/2-1,r=(0,i.isParsedCfiRange)(t);return{isCfiRange:r,itemIndex:n,offset:(r?t.end.at(-1)?.at(-1)?.offset:t.at(-1)?.at(-1)?.offset)??0}},Sr=({cfi:e,spineItemsManager:t})=>{let{itemIndex:n,...r}=xr(e),o=t.get(n);if(!o)return{...r,itemIndex:n,node:null};let s=o.renderer.getDocumentFrame();if(s instanceof HTMLIFrameElement){let t=s.contentWindow?.document;if(t)try{let a=(0,i.resolve)(e,t,{throwOnError:!0});return{...r,itemIndex:n,node:a.isRange?a.node?.startContainer??null:a.node??null,isCfiRange:a.isRange,range:a.isRange?a.node:void 0,offset:Array.isArray(a.offset)?a.offset.at(-1):a.offset,spineItem:o}}catch(t){return a.warn(`Error resolving cfi: ${e}.`),a.warn(t),{...r,spineItem:o,itemIndex:n,node:null}}}return{...r,itemIndex:n,spineItem:o,node:null}},Cr=class{constructor(e,t){this.hookManager=e,this.spineItemsManager=t,this.transformForResolve=e=>{let{finalParams:t}=this.hookManager.executeSequential(`cfi.beforeResolve`,{cfi:e},(e,t)=>({cfi:t??e.cfi}));return t.cfi},this.parseCfi=e=>xr(this.transformForResolve(e)),this.getSpineItemFromCfi=e=>{let{itemIndex:t}=this.parseCfi(e);if(t!==void 0)return this.spineItemsManager.get(t)},this.isRootCfi=e=>yr(e),this.generateRootCfi=e=>this.transformGeneratedCfi({cfi:pr(e),spineItem:e}),this.generateCfiForSpineItemPage=({spineItem:e,pageNode:t})=>this.transformGeneratedCfi({cfi:hr({spineItem:e,pageNode:t}),spineItem:e}),this.generateCfiFromRange=(e,t)=>this.transformGeneratedCfi({cfi:gr(e,t),spineItem:t}),this.resolveCfi=e=>Sr({...e,cfi:this.transformForResolve(e.cfi),spineItemsManager:this.spineItemsManager})}transformGeneratedCfi(e){let{finalParams:t}=this.hookManager.executeSequential(`cfi.afterGenerate`,e,(e,t)=>({...e,cfi:t??e.cfi}));return t.cfi}},wr=e=>e?.spineItems.every(t=>(t.renditionLayout??e.renditionLayout)===`pre-paginated`),Tr=class{constructor(){this.navigationSubject=new n.ReplaySubject(1),this.positionSubject=new n.ReplaySubject(1),this.viewportStateSubject=new n.BehaviorSubject(`free`),this.paginationSubject=new n.ReplaySubject(1),this.pagination$=this.paginationSubject.asObservable(),this.viewportState$=this.viewportStateSubject.asObservable(),this.viewportFree$=this.viewportState$.pipe((0,n.filter)(e=>e===`free`)),this.viewportBusy$=this.viewportState$.pipe((0,n.filter)(e=>e===`busy`)),this.navigation$=this.navigationSubject.asObservable(),this.position$=this.positionSubject.asObservable()}},Er=class extends k{constructor(){super({assumedRenditionLayout:`reflowable`}),this.bridgeEvent=new Tr,this.manifest$=this.pipe((0,r.map)(e=>e.manifest),(0,r.filter)(F),(0,r.distinctUntilChanged)()),this.isRTL=()=>this.value.manifest?.readingDirection===`rtl`}update(e){let t=this.value,n=e.manifest??t.manifest,r={...t,...e,...e.manifest&&{isFullyPrePaginated:wr(n),assumedRenditionLayout:n?.renditionLayout??`reflowable`}};this.mergeCompare(r)}get manifest(){return this.value.manifest}get readingDirection(){return this.manifest?.readingDirection}},Dr=class extends k{constructor(e,r){super({supportedPageTurnAnimation:[`fade`,`none`,`slide`],supportedPageTurnMode:[`controlled`,`scrollable`],supportedPageTurnDirection:[`horizontal`,`vertical`],supportedComputedPageTurnDirection:[`horizontal`,`vertical`]}),(0,n.combineLatest)([e.watch([`manifest`,`hasVerticalWriting`]),r.watch([`computedPageTurnMode`])]).pipe((0,n.map)(([{manifest:e,hasVerticalWriting:t},{computedPageTurnMode:n}])=>({hasVerticalWriting:t,renditionFlow:e?.renditionFlow,renditionLayout:e?.renditionLayout,computedPageTurnMode:n})),(0,n.distinctUntilChanged)(t.isShallowEqual),(0,n.map)(({hasVerticalWriting:e,renditionFlow:t,renditionLayout:n,computedPageTurnMode:r})=>({...this.value,supportedPageTurnMode:t===`scrolled-continuous`?[`scrollable`]:[`controlled`,`scrollable`],supportedPageTurnAnimation:t===`scrolled-continuous`||r===`scrollable`?[`none`]:e?[`fade`,`none`]:[`fade`,`none`,`slide`],supportedPageTurnDirection:r===`scrollable`?[`vertical`]:n===`reflowable`?[`horizontal`]:[`horizontal`,`vertical`]})),(0,n.takeUntil)(this.destroy$)).subscribe(this.next.bind(this))}},Or=class{constructor(){this._hooks=[],this._hookExecutions=[]}getHooks(e){return this._hooks.filter(t=>e===t.name)}deregister(e){return this._hooks=this._hooks.filter(t=>t!==e),this.destroy(e.name,void 0,e)}register(e,t){let n={name:e,runFn:t};return this._hooks.push(n),()=>{this.deregister(n)}}execute(e,t){return this.getHooks(e).map(e=>e.runFn(t))}async executeAsync(e,t,r,i){let a=this.getHooks(e);if(a.length===0)return Promise.resolve([]);let o=a.map(r=>{let i=new AbortController;return{name:e,id:t,ref:r,abortController:i,destroyFn:()=>(i.abort(),(0,n.of)(void 0))}});this._hookExecutions.push(...o);let s=e=>{this._hookExecutions=this._hookExecutions.filter(t=>t!==e)},c=()=>{for(let e of o)this._hookExecutions.includes(e)&&(e.abortController.abort(),s(e))};i?.aborted?c():i?.addEventListener(`abort`,c,{once:!0});let l=o.map(async e=>{let t={...r,signal:e.abortController.signal};try{return await Promise.resolve(),await e.ref.runFn(t)}finally{s(e)}});try{return await Promise.all(l)}finally{i?.removeEventListener(`abort`,c)}}fromExecuteAsync(e,t,r){return new n.Observable(n=>{let i=new AbortController;return this.executeAsync(e,t,r,i.signal).then(e=>{n.next(e),n.complete()},e=>n.error(e)),()=>{i.abort()}})}executeSequential(e,t,n){let r=t,i=this.getHooks(e).map(e=>{let t=e.runFn(r);return r=n(r,t),t});return{finalParams:r,results:i}}destroy(e,t,r){let i=this._hookExecutions.filter(n=>r&&n.ref===r||e===n.name&&(!t||t&&t===n.id));return this._hookExecutions=this._hookExecutions.filter(e=>!i.includes(e)),(0,n.combineLatest)(i.map(({destroyFn:e})=>e()))}},kr=`[data-prose-reader-spine-item][data-is-ready=false]{pointer-events:none;-webkit-user-select:none;user-select:none}.prose-reader-enhancer-loading-container{width:100%;height:100%;max-width:var(--prose-reader-absolute-viewport-width,100%);text-align:center;color:#cacaca;z-index:1;background-color:#fff;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}[data-prose-reader-spine-item][data-is-ready=true] .prose-reader-enhancer-loading-container{visibility:hidden;z-index:0}.prose-reader-enhancer-loading-logo{font-size:4em}.prose-reader-enhancer-loading-details{text-overflow:ellipsis;white-space:nowrap;width:80%;max-width:300px;font-size:1.2em;overflow:hidden}[data-prose-reader-scroll-navigator][data-prose-reader-zooming=true]{overflow:scroll}[data-prose-reader-scroll-navigator][data-prose-reader-zooming=true][data-prose-reader-zooming-direction=down]{overflow-x:auto}[data-prose-reader-scroll-navigator]{width:100%;height:100%;position:relative;overflow:hidden scroll}[data-prose-reader-viewport]{background-color:#fff;width:100%;height:100%;position:relative}`,Ar=e=>({x:-e.x,y:-e.y}),jr=e=>e instanceof DOMMatrix?new V({x:-e.e,y:-e.f}):new V({x:-e.x,y:-e.y}),Mr=a.namespace(`navigation/ControlledNavigationController`),Nr=class extends q{constructor(e,r,i,a,o){super(),this.settings=e,this.hookManager=r,this.context=i,this.spine=a,this.viewport=o,this.navigateSubject=new n.Subject,this.element$=new n.BehaviorSubject(document.createElement(`div`)),this.isActive=()=>this.settings.values.computedPageTurnMode===`controlled`,this.getNavigationVisibleArea=()=>this.viewport.absoluteViewport;let s=this.spine.element$.pipe((0,n.filter)(F),(0,n.withLatestFrom)(this.element$),(0,n.tap)(([e,t])=>{t.style.cssText=`
190
190
  height: 100%;
191
191
  width: 100%;
192
192
  position: relative;
193
- `,t.className=`${G}-controlled-navigator`,t.innerHTML=``,t.appendChild(e),this.viewport.value.element.appendChild(t),this.element$.next(t)})),c=(0,n.combineLatest)([e.watch([`computedPageTurnDirection`,`computedPageTurnMode`,`numberOfAdjacentSpineItemToPreLoad`]),this.element$]).pipe((0,n.tap)(([,t])=>{e.values.computedPageTurnMode===`scrollable`?u(t.style,`display`,`contents`):u(t.style,`display`,`block`)}));this.layout$=c.pipe((0,n.tap)(()=>{Nr.info(`layout`,e.values)}),(0,n.share)()),this.isNavigating$=this.navigateSubject.pipe((0,n.distinctUntilChanged)((e,n)=>(0,t.isShallowEqual)(e.position,n.position)),(0,n.map)(({animation:t,position:n})=>(Nr.info(`Navigation requested`,{animation:t,position:n}),{type:`manualAdjust`,shouldAnimate:!(!t||t===`turn`&&e.values.computedPageTurnAnimation===`none`),animation:t,position:n})),(0,n.switchMap)(t=>{let r=this.element$.getValue();return u(r.style,`transition`,`none`),u(r.style,`opacity`,`1`),(0,n.merge)((0,n.of)(!0),(0,n.of)(null).pipe((0,n.mergeMap)(()=>{if(t?.type!==`manualAdjust`)return(0,n.of)(!1);let r=t.animation===`snap`?e.values.snapAnimationDuration:e.values.computedPageTurnAnimationDuration,i=t.animation===`snap`?`slide`:e.values.computedPageTurnAnimation;return(0,n.of)(t).pipe(t.shouldAnimate?(0,n.delay)(1,n.animationFrameScheduler):n.identity,(0,n.tap)(e=>{let n=this.element$.getValue();e.shouldAnimate?i===`fade`?(u(n.style,`transition`,`opacity ${r/2}ms`),u(n.style,`opacity`,`0`)):(t.animation===`snap`||i===`slide`)&&(u(n.style,`transition`,`transform ${r}ms`),u(n.style,`opacity`,`1`)):(u(n.style,`transition`,`none`),u(n.style,`opacity`,`1`))}),(0,n.tap)(e=>{i!==`fade`&&this.applyNavigationPosition(e.position)}),t.shouldAnimate?(0,n.delay)(r/2,n.animationFrameScheduler):n.identity,(0,n.tap)(e=>{let t=this.element$.getValue();i===`fade`&&(this.applyNavigationPosition(e.position),u(t.style,`opacity`,`1`))}),t.shouldAnimate?(0,n.delay)(r/2,n.animationFrameScheduler):n.identity,(0,n.tap)(e=>{i===`fade`&&this.applyNavigationPosition(e.position)}))}),(0,n.map)(()=>!1)))}),(0,n.startWith)(!1),(0,n.shareReplay)(1)),(0,n.merge)(s,this.isNavigating$,this.layout$).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}applyNavigationPosition(e){let t=this.element$.getValue(),n=jr(e);u(t.style,`transform`,`translate(${n.x}px, ${n.y}px)`),this.hookManager.execute(`onViewportOffsetAdjust`,void 0)}navigate(e){this.navigateSubject.next(e)}get viewportPosition(){let e=this.element$.getValue(),t=window.getComputedStyle(e),n=t.transform||t.webkitTransform;return!n||n===`none`?new U({x:0,y:0}):Mr(new DOMMatrix(n))}},Fr=()=>e=>e.pipe((0,n.map)(({navigation:e,pagination:t,...n})=>({navigation:{...e,paginationBeginCfi:t.beginCfi},...n}))),Ir=(e,t,r)=>e.bridgeEvent.pagination$.pipe((0,n.withLatestFrom)(t),(0,n.filter)(([e,t])=>e.navigationId===t.id),(0,n.switchMap)(([e,t])=>(r.spineItemsManager.get(t.spineItem)?.isReady$.pipe((0,n.first)())??(0,n.of)(!1)).pipe((0,n.filter)(e=>e),(0,n.map)(()=>({pagination:e,navigation:t})))),Fr(),(0,n.distinctUntilChanged)((e,t)=>e.navigation.paginationBeginCfi===t.navigation.paginationBeginCfi),(0,n.map)(({navigation:e})=>({...e,meta:{triggeredBy:`pagination`},requestedPosition:e.position}))),Lr=({navigationResolver:e,getNavigationVisibleArea:t})=>r=>r.pipe((0,n.map)(([n,r])=>{let i=n.position,a=i?t():void 0,o=i&&a?e.clampPositionInSpine(i,a):void 0;return{previousNavigation:r,navigation:{type:`api`,meta:{triggeredBy:`user`},id:Symbol(`user`),animation:`turn`,...n,requestedPosition:i,requestedVisibleArea:a,position:o}}})),Rr=({navigationResolver:e})=>t=>t.pipe((0,n.map)(t=>{if(t.navigation.cfi){let n=e.getNavigationForCfi(t.navigation.cfi);if(n)return{...t,navigation:{...t.navigation,position:n}}}return t})),zr=({navigation:e,previousNavigation:t,settings:n})=>e.directionFromLastNavigation?e.directionFromLastNavigation:e.url!==void 0||e.cfi!==void 0?`anchor`:t.spineItem===void 0||e.spineItem||!e.position?`forward`:n.values.computedPageTurnDirection===`vertical`?e.position.y>t.position.y||e.position.y===t.position.y&&t.directionFromLastNavigation!==`backward`?`forward`:`backward`:Math.abs(e.position.x)>Math.abs(t.position.x)||e.position.x===t.position.x&&t.directionFromLastNavigation!==`backward`?`forward`:`backward`,Br=({context:e,settings:t})=>r=>r.pipe((0,n.map)(({navigation:n,previousNavigation:r})=>{let i=zr({context:e,navigation:n,previousNavigation:r,settings:t});return{previousNavigation:r,navigation:{...n,directionFromLastNavigation:i},direction:i}})),Vr=({spineItemsManager:e,navigationResolver:t,settings:r,viewport:i})=>a=>a.pipe((0,n.map)(({navigation:n,...a})=>{let o=e.get(n.spineItem);if(n.position)return r.values.computedPageTurnMode===`scrollable`?{navigation:{...n,position:n.position},...a}:{navigation:{...n,position:t.clampPositionInSpine(n.position,i.absoluteViewport)},...a};if(!o)return{navigation:{...n,position:a.previousNavigation.position},...a};let s=t.getNavigationForSpineIndexOrId(o),c=r.values.computedPageTurnMode===`scrollable`?new W({x:s.x+a.previousNavigation.position.x,y:s.y}):t.clampPositionInSpine(s,i.absoluteViewport);return{navigation:{...n,position:c},...a}})),Hr=({settings:e,spineItemsManager:t,navigationResolver:r,spineLocator:i,cfi:a})=>o=>{let s=n=>{let{position:o,spineItem:s,cfi:c,directionFromLastNavigation:l}=n,{navigationSnapThreshold:u,computedPageTurnMode:d}=e.values;if(s!==void 0){let e=t.get(s);if(e)return e}if(typeof s==`number`)return s>t.items.length-1?t.get(t.items.length-1):t.get(0);if(c){let e=a.getSpineItemFromCfi(c);if(e)return e}if(o&&d===`controlled`){let{beginIndex:e,endIndex:n}=i.getVisibleSpineItemsFromPosition({position:o,threshold:u,restrictToScreen:!1})??{},a=(l===`forward`||l===`anchor`?n:e)??e,s=t.get(a);if(!s)return;let{endPageIndex:c,beginPageIndex:d}=i.getVisiblePagesFromViewportPosition({position:o,spineItem:s,threshold:u,restrictToScreen:!1})??{},f=(l===`forward`||l===`anchor`?c:d)??0,p=r.getNavigationForSpineItemPage({pageIndex:f,spineItemId:s}),m=i.getVisibleSpineItemsFromPosition({position:p,threshold:u,restrictToScreen:!1}),h=l===`forward`||l===`anchor`?m?.beginIndex:m?.endIndex;return t.get(h)}return o&&d===`scrollable`?i.getSpineItemFromPosition(o):t.get(0)};return o.pipe((0,n.map)(({navigation:e,...n})=>{let r=s(e);return{navigation:{...e,spineItem:t.getSpineItemIndex(r)},...n}}))},Ur=({spine:e})=>t=>t.pipe((0,n.switchMap)(({navigation:t,...r})=>{let i=e.getSpineItemSpineLayoutInfo(t.spineItem),a=e.spineItemsManager.get(t.spineItem);return(a?.isReady$??(0,n.of)(!1)).pipe((0,n.first)(),(0,n.map)(e=>({navigation:{...t,spineItemHeight:i?.height,spineItemWidth:i?.width,spineItemLeft:i.left,spineItemTop:i.top,spineItemIsUsingVerticalWriting:a?.isUsingVerticalWriting(),spineItemIsReady:e},...r})))})),Wr=({settings:e,spineItemsManager:t,spineLocator:r,navigationResolver:i})=>a=>{let o=n=>{let{navigationSnapThreshold:a,computedPageTurnMode:o}=e.values,s=t.get(n.spineItem);if(!(!s||!n.position)){if(o===`controlled`){let{endPageIndex:e,beginPageIndex:t}=r.getVisiblePagesFromViewportPosition({position:n.position,spineItem:s,threshold:a,restrictToScreen:!1})??{},o=(n.directionFromLastNavigation===`forward`||n.directionFromLastNavigation===`anchor`?e:t)??0,c=i.getNavigationForSpineItemPage({pageIndex:o,spineItemId:s}),l=r.getVisiblePagesFromViewportPosition({position:c,spineItem:s,threshold:{type:`percentage`,value:0},restrictToScreen:!0}),u=(n.directionFromLastNavigation===`forward`||n.directionFromLastNavigation===`anchor`?l?.beginPageIndex:l?.endPageIndex)??0;return r.spineItemLocator.getSpineItemPositionFromPageIndex({pageIndex:u,spineItem:s})}return r.getSpineItemPositionFromSpinePosition(n.position,s)}};return a.pipe((0,n.map)(({navigation:e,...t})=>({navigation:{...e,positionInSpineItem:o(e)},...t})))},Gr=({navigationResolver:e})=>t=>t.pipe((0,n.map)(t=>{if(t.navigation.url){let n=e.getNavigationForUrl(t.navigation.url);if(n)return{...t,navigation:{...t.navigation,position:n.position,spineItem:n.spineItemId}}}return t})),Kr=class{constructor(){this.isLockedSubject=new n.BehaviorSubject(0),this.isLocked$=this.isLockedSubject.pipe((0,n.map)(e=>!!e),(0,n.distinctUntilChanged)())}lock(){let e=!1;return this.isLockedSubject.next(this.isLockedSubject.getValue()+1),()=>{e||(e=!0,this.isLockedSubject.next(this.isLockedSubject.getValue()-1))}}},qr=({spineLocator:e,navigation:t,navigationResolver:r,spineItemsManager:i,spine:a,cfiManager:o})=>{let s=i.get(t.spineItem);return s?s.isReady$.pipe((0,n.first)(),(0,n.map)(n=>{let i=a.getSpineItemSpineLayoutInfo(s),c=e.isPositionWithinSpineItem(t.position,s),l=i.width-(t.spineItemWidth??0),u=i.height-(t.spineItemHeight??0),d=l!==0||u!==0;if(t.url!==void 0&&(l||u||n&&!t.spineItemIsReady)){let e=r.getNavigationForUrl(t.url);if(e)return e.position}let f=t.cfi??t.paginationBeginCfi;if(f!==void 0&&!o.isRootCfi(f)&&(l||u||n&&!t.spineItemIsReady)){let e=r.getNavigationForCfi(f);if(e)return e}if(c&&d&&t.directionFromLastNavigation===`backward`){let e=new z({x:(t.positionInSpineItem?.x??0)+l,y:(t.positionInSpineItem?.y??0)+u});return r.getNavigationFromSpineItemPosition({spineItem:s,spineItemPosition:e})}if(t.positionInSpineItem&&t.spineItemHeight&&t.spineItemWidth){let n=e.spineItemLocator.getSpineItemPageIndexFromPosition({itemWidth:t.spineItemWidth,itemHeight:t.spineItemHeight,isUsingVerticalWriting:!!t.spineItemIsUsingVerticalWriting,position:t.positionInSpineItem});return r.getNavigationForSpineItemPage({pageIndex:n,spineItemId:s})}return c?r.getNavigationForPosition(t.position):r.getNavigationForSpineIndexOrId(s)})):(0,n.of)(new U({x:0,y:0}))},Jr=({navigation:e,spineLocator:t,spineItemsManager:n,settings:r,navigationResolver:i,spine:a})=>{let{spineItem:o}=e,s=n.get(o);if(!s)return new U({x:0,y:0});let{height:c,top:l}=a.getSpineItemSpineLayoutInfo(s),u=t.isPositionWithinSpineItem(e.position,s),d=e.positionInSpineItem??new z({y:0,x:0});if(r.values.computedPageTurnDirection===`vertical`){if(l===e.spineItemTop&&c===e.spineItemHeight&&u)return e.position;if(l===e.spineItemTop&&c===e.spineItemHeight&&!u)return i.getNavigationForSpineIndexOrId(s);if(l!==e.spineItemTop){let n=t.getSafeSpineItemPositionFromUnsafeSpineItemPosition(e.positionInSpineItem??new z({x:0,y:0}),s);return t.getSpinePositionFromSpineItemPosition({spineItemPosition:n,spineItem:s})}if(l===e.spineItemTop&&c!==e.spineItemHeight){let n=(e.spineItemHeight??d.y)-d.y,r=new z({y:e.directionFromLastNavigation===`backward`?c-n:d.y,x:e.position.x});if(u){let e=t.getSafeSpineItemPositionFromUnsafeSpineItemPosition(r,s);return t.getSpinePositionFromSpineItemPosition({spineItemPosition:e,spineItem:s})}if(!u){if(!(e.position.y<l)){let r=new z({y:c-n,x:e.position.x});return t.getSpinePositionFromSpineItemPosition({spineItemPosition:t.getSafeSpineItemPositionFromUnsafeSpineItemPosition(r,s),spineItem:s})}return i.getNavigationForSpineIndexOrId(s)}}}return e.position},Yr=({navigation:e,spineItemsManager:t,settings:r,spineLocator:i,navigationResolver:a,spine:o,cfiManager:s})=>r.values.computedPageTurnMode===`scrollable`?(0,n.of)(Jr({navigation:e,spineLocator:i,navigationResolver:a,settings:r,spineItemsManager:t,spine:o})):qr({navigation:e,spineLocator:i,navigationResolver:a,spineItemsManager:t,spine:o,cfiManager:s}),Xr=({settings:e,navigationResolver:t,context:r,spine:i,cfiManager:a})=>o=>o.pipe((0,n.switchMap)(o=>Yr({spineLocator:i.locator,navigation:o.navigation,navigationResolver:t,settings:e,spineItemsManager:i.spineItemsManager,spineItemLocator:i.locator.spineItemLocator,context:r,spine:i,cfiManager:a}).pipe((0,n.map)(e=>({...o,navigation:{...o.navigation,position:e}}))))),Zr=a.namespace(`navigation/InternalNavigator`),Qr=(e,t)=>e===t||!!e&&!!t&&e.x===t.x&&e.y===t.y,$r=(e,t)=>e===t||!!e&&!!t&&e.width===t.width&&e.height===t.height,ei=(e,t)=>e.id===t.id&&Qr(e.position,t.position)&&Qr(e.requestedPosition,t.requestedPosition)&&$r(e.requestedVisibleArea,t.requestedVisibleArea),ti=class extends q{constructor(e,t,r,i,a,o,s,c,l,u){super(),this.settings=e,this.context=t,this.userNavigation$=r,this.getActiveNavigationModeController=i,this.navigationModeLayout$=a,this.navigationResolver=o,this.spine=s,this.viewport=c,this.cfiManager=l,this.isUserInteractionLocked$=u,this.navigationSubject=new n.BehaviorSubject({animation:!1,position:new U({x:0,y:0}),meta:{triggeredBy:`user`},requestedPosition:new U({x:0,y:0}),spineItemIsReady:!1,type:`api`,id:Symbol(`init`)}),this.navigation$=this.navigationSubject.pipe((0,n.map)(({position:e,id:t,requestedPosition:n,requestedVisibleArea:r,meta:i})=>({position:e,id:t,requestedPosition:n,requestedVisibleArea:r,triggeredBy:i.triggeredBy})),(0,n.distinctUntilChanged)(ei),(0,n.shareReplay)(1)),this.locker=new Kr;let d=r.pipe((0,n.withLatestFrom)(this.navigationSubject),Lr({navigationResolver:o,getNavigationVisibleArea:()=>i().getNavigationVisibleArea()}),Gr({navigationResolver:o}),Rr({navigationResolver:o}),Br({context:t,settings:e}),Hr({context:t,cfi:l,navigationResolver:o,settings:e,spineItemsManager:s.spineItemsManager,spineLocator:s.locator}),Wr({navigationResolver:o,settings:e,spineItemsManager:s.spineItemsManager,spineLocator:s.locator}),Ur({spine:s})).pipe(Vr({navigationResolver:o,spineItemsManager:s.spineItemsManager,settings:e,viewport:c}),(0,n.withLatestFrom)(u),(0,n.switchMap)(([r,i])=>{let a=r.navigation.cfi||r.navigation.url||e.values.computedPageTurnMode===`scrollable`||i;return(0,n.of)(r).pipe(a?n.identity:Xr({navigationResolver:o,settings:e,spine:s,context:t,cfiManager:l}))}),Wr({spineItemsManager:s.spineItemsManager,spineLocator:s.locator,settings:e,navigationResolver:o}),(0,n.map)(e=>e.navigation),(0,n.share)()),f=d.pipe((0,n.withLatestFrom)(u),(0,n.filter)(([,e])=>e),(0,n.switchMap)(([e])=>{let t=this.locker.lock();return u.pipe((0,n.filter)(e=>!e),(0,n.first)(),(0,n.map)(()=>({navigation:{...e,animation:`snap`}})),(0,n.finalize)(()=>{t()}),(0,n.takeUntil)(d))}),(0,n.share)());(0,n.merge)((0,n.merge)((0,n.merge)(a,s.layout$).pipe((0,n.switchMap)(()=>(0,n.of)(null).pipe((0,n.switchMap)(()=>u.pipe((0,n.filter)(e=>!e),(0,n.first)())),(0,n.map)(()=>({navigation:{...this.navigationSubject.getValue(),animation:!1}})),(0,n.takeUntil)((0,n.merge)(f,d))))),f).pipe(Xr({navigationResolver:o,settings:e,context:t,spine:s,cfiManager:l}),(0,n.map)(({navigation:e})=>({navigation:{...e,meta:{triggeredBy:`restoration`},requestedPosition:e.position}})),Hr({context:t,cfi:l,navigationResolver:o,settings:e,spineItemsManager:s.spineItemsManager,spineLocator:s.locator}),Ur({spine:s}),Wr({spineItemsManager:s.spineItemsManager,spineLocator:s.locator,settings:e,navigationResolver:o}),(0,n.map)(({navigation:e})=>e),(0,n.share)()),d,Ir(t,this.navigationSubject,s)).pipe((0,n.withLatestFrom)(this.navigationSubject),e=>e.pipe((0,n.tap)(([e])=>{let t=e.type===`scroll`,n=e.meta.triggeredBy===`pagination`,r=e.meta.triggeredBy===`restoration`;if(t&&!r||n)return;let i={position:e.position,animation:e.animation};this.getActiveNavigationModeController().navigate(i)})),e=>e.pipe((0,n.tap)(([e,t])=>{Zr.info(`navigation updated from ${e.meta.triggeredBy} of type ${e.type}`,{previousNavigation:t,currentNavigation:e}),this.navigationSubject.next(e)})),(0,n.takeUntil)(this.destroy$)).subscribe()}get navigation(){return this.navigationSubject.getValue()}},Z=(e,t,n)=>{let r=n-e,i=t*e*n/(n||1);return Math.max(0,Math.min(r,i))},ni=(e,t)=>(t||0)===0||(e||0)===0?1:Math.floor(Math.max(1,e/t)),ri=(e,t,n)=>{let r=ni(n,t),i=[...Array(r)].map((e,n)=>n*t);return e>=r*t?i[i.length-1]||0:i.find(n=>e<n+t)||0},ii=(e,t,n)=>{let r=[...Array(n)].map((e,n)=>n*t);return e<=0||n===0?0:e>=n*t?n-1:r.findIndex(n=>e<n+t)??0},ai=({itemWidth:e,itemHeight:t,spineItemPosition:n})=>new z({x:Math.min(e,Math.max(0,n.x)),y:Math.min(t,Math.max(0,n.y))}),oi=({itemHeight:e,itemWidth:t,isUsingVerticalWriting:n,pageWidth:r,pageHeight:i,pageTurnDirection:a,pageTurnMode:o})=>a===`vertical`&&o===`scrollable`?1:n||a===`vertical`?ni(e,i):ni(t,r),si=({itemWidth:e,itemHeight:t,position:n,isUsingVerticalWriting:r,pageWidth:i,pageHeight:a,pageTurnDirection:o,pageTurnMode:s,isRTL:c})=>{let l=ai({spineItemPosition:n,itemHeight:t,itemWidth:e}).x,u=oi({isUsingVerticalWriting:r,itemHeight:t,itemWidth:e,pageWidth:i,pageHeight:a,pageTurnDirection:o,pageTurnMode:s});if(r)return ii(n.y,a,u);let d=ii(l,i,u);return c?u-1-d:d},ci=({pageIndex:e,itemLayout:t,context:n,isUsingVerticalWriting:r,viewport:i})=>{if(r)return new z({x:0,y:Z(i.pageSize.height,e,t.height)});let a=Z(i.pageSize.width,e,t.width);return n.isRTL()?new z({x:t.width-a-i.pageSize.width,y:0}):new z({x:a,y:0})},li=({context:e,settings:t,viewport:n})=>{let r=(e,t,r)=>{let i;e?.nodeName===`img`||e?.textContent===``&&e.nodeType===Node.ELEMENT_NODE?i=e.getBoundingClientRect().x:e&&(i=(e?_(e,t):void 0)?.getBoundingClientRect().x||i);let a=r.layoutInfo?.width||0,o=n.pageSize.width;if(i!==void 0)return new z({x:ri(i,o,a),y:0})};return{getSpineItemPositionFromNode:r,getSpineItemPositionFromPageIndex:({pageIndex:t,spineItem:r})=>ci({context:e,isUsingVerticalWriting:!!r.isUsingVerticalWriting(),itemLayout:r.layoutInfo,pageIndex:t,viewport:n}),getSpineItemPageIndexFromPosition:r=>si({...r,isRTL:e.isRTL(),pageWidth:n.pageSize.width,pageHeight:n.pageSize.height,pageTurnDirection:t.values.computedPageTurnDirection,pageTurnMode:t.values.pageTurnMode}),getSpineItemPageIndexFromNode:(i,a,o)=>{let s=r(i,a,o),{height:c,width:l}=o.layoutInfo;return s?si({isUsingVerticalWriting:!!o.isUsingVerticalWriting(),position:s,itemHeight:c,itemWidth:l,isRTL:e.isRTL(),pageWidth:n.pageSize.width,pageHeight:n.pageSize.height,pageTurnDirection:t.values.computedPageTurnDirection,pageTurnMode:t.values.pageTurnMode}):void 0},getSpineItemClosestPositionFromUnsafePosition:(e,t)=>{let{width:r,height:i}=t.layoutInfo;return new z({x:ri(e.x,n.pageSize.width,r),y:ri(e.y,n.pageSize.height,i)})},getSpineItemPagePositionFromSpineItemPosition:(t,r,i)=>{let{width:a,height:o}=i.layoutInfo,s=n.pageSize.width,c=n.pageSize.height;if(i.isUsingVerticalWriting()){let e=Z(c,r,o);return new B({x:t.x,y:t.y-e})}let l=Z(s,r,a);if(e.isRTL()){let e=a-(r+1)*s;return new B({x:t.x-Math.max(0,e),y:t.y})}return new B({x:t.x-l,y:t.y})}}},ui=({context:e,settings:t,viewport:n})=>{let r=li({context:e,settings:t,viewport:n});return{getNavigationForLastPage:e=>{let t=e.numberOfPages;return r.getSpineItemPositionFromPageIndex({pageIndex:t-1,spineItem:e})},getNavigationForPosition:(e,t)=>r.getSpineItemClosestPositionFromUnsafePosition(t,e),getNavigationFromNode:(e,t,n)=>r.getSpineItemPositionFromNode(t,n,e)||new z({x:0,y:0})}},di=({size:e,isRTL:t,spineItemsManager:n,spine:r})=>{let i=n.get(n.items.length-1);if(!i)return;let a=r.getSpineItemSpineLayoutInfo(i),o=Math.max(0,a.bottom-e.height);if(t){let t=n.get(0),i=t?r.getSpineItemSpineLayoutInfo(t).right:0;return{xMin:a.left,xMax:Math.max(0,i-e.width),yMin:0,yMax:o}}return{xMin:0,xMax:Math.max(0,a.right-e.width),yMin:0,yMax:o}},fi=({position:e,size:t,isRTL:n,spineItemsManager:r,spine:i})=>{let a=di({size:t,isRTL:n,spineItemsManager:r,spine:i});if(!a)return new W({x:0,y:0});let o=Math.min(Math.max(a.yMin,e.y),a.yMax);return new W({x:n?Math.max(a.xMin,Math.min(a.xMax,e.x)):Math.min(Math.max(a.xMin,e.x),a.xMax),y:o})},pi=({position:e,size:t,isRTL:n,spineItemsManager:r,spine:i})=>{let a=di({size:t,isRTL:n,spineItemsManager:r,spine:i});if(a){if(e.y<a.yMin)return`start`;if(e.y>a.yMax)return`end`;if(n){if(e.x>a.xMax)return`start`;if(e.x<a.xMin)return`end`}else{if(e.x<a.xMin)return`start`;if(e.x>a.xMax)return`end`}}},Q=({position:e,pageSizeWidth:t,visibleAreaRectWidth:n})=>{let{x:r,y:i}=e,a=r%n===0?r:r-t;return e instanceof W?new W({x:a,y:i}):new U({x:a,y:i})},mi=({viewportPosition:e,spineLocator:t,spineItemNavigationResolver:n,viewport:r})=>{let i=t.getSpineItemFromPosition(e);if(i){let a=t.getSpineItemPositionFromSpinePosition(e,i),o=n.getNavigationForPosition(i,a);return Q({position:t.getSpinePositionFromSpineItemPosition({spineItemPosition:o,spineItem:i}),pageSizeWidth:r.pageSize.width,visibleAreaRectWidth:r.absoluteViewport.width})}return new U({x:0,y:0})},hi=({pageIndex:e,spineItemsManager:t,spineItemId:n,spineLocator:r,spineItemNavigationResolver:i,viewport:a})=>{let o=t.get(n);if(!o)return mi({viewportPosition:new U({x:e*a.pageSize.width,y:0}),spineItemNavigationResolver:i,spineLocator:r,viewport:a});let s=r.spineItemLocator.getSpineItemPositionFromPageIndex({pageIndex:e,spineItem:o});return Q({position:r.getSpinePositionFromSpineItemPosition({spineItemPosition:s,spineItem:o}),pageSizeWidth:a.pageSize.width,visibleAreaRectWidth:a.absoluteViewport.width})},gi=(e,t)=>{if(t&&t instanceof HTMLIFrameElement){let n=t.contentDocument,r=e.trim();if(!n||r.length===0)return;if(r.startsWith(`#`)){let e=r.slice(1);return e.length===0?void 0:n.getElementById(e)}try{return n.querySelector(r)}catch{return}}},_i=({anchor:e,spineItem:t,spine:n})=>{let r=gi(e,t.renderer.getDocumentFrame());return r?n.spineItemLocator.getSpineItemPositionFromNode(r,0,t)?.x??0:0},vi=({anchor:e,spineItem:t,spineLocator:n,spine:r})=>{let i=_i({anchor:e,spineItem:t,spine:r});return n.getSpinePositionFromSpineItemPosition({spineItemPosition:new z({x:i,y:0}),spineItem:t})},yi=({anchor:e,spineItem:t,spineLocator:n,spine:r,pageSizeWidth:i,visibleAreaRectWidth:a})=>Q({position:vi({anchor:e,spineItem:t,spineLocator:n,spine:r}),pageSizeWidth:i,visibleAreaRectWidth:a}),bi=({spine:e,spineItemsManager:t,spineLocator:n,url:r,context:i,pageSizeWidth:a,visibleAreaRectWidth:o})=>{try{let s=r instanceof URL?r:new URL(r),c=`${s.origin}${s.pathname}`,l=i.manifest?.spineItems.find(e=>e.href===c);if(l){let r=t.get(l.id);if(r)return{position:Q({position:yi({anchor:s.hash,spineItem:r,spine:e,spineLocator:n,pageSizeWidth:a,visibleAreaRectWidth:o}),pageSizeWidth:a,visibleAreaRectWidth:o}),spineItemId:l.id}}return}catch(e){console.error(e);return}},xi=({spineItem:e,spineItemPosition:t,spineLocator:n,spineItemLocator:r,viewport:i})=>{let a=r.getSpineItemClosestPositionFromUnsafePosition(t,e);return Q({position:n.getSpinePositionFromSpineItemPosition({spineItemPosition:a,spineItem:e}),pageSizeWidth:i.pageSize.width,visibleAreaRectWidth:i.absoluteViewport.width})},Si=`spineNavigator`,Ci=({context:e,spineItemsManager:t,locator:n,settings:r,spine:i,viewport:o,cfi:s})=>{let c=ui({context:e,settings:r,viewport:o});return{getNavigationForUrl:r=>bi({context:e,spineItemsManager:t,spineLocator:n,url:r,pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width,spine:i}),getNavigationForSpineItemPage:e=>hi({...e,spineItemsManager:t,spineItemNavigationResolver:c,spineLocator:n,viewport:o}),getNavigationFromSpineItemPosition:e=>xi({...e,spineItemLocator:n.spineItemLocator,spineLocator:n,viewport:o}),getNavigationForCfi:e=>{let{node:t,offset:r=0,spineItem:i}=s.resolveCfi({cfi:e});if(!i){a.warn(Si,`unable to detect item id from cfi ${e}`);return}let l=t?c.getNavigationFromNode(i,t,r):new z({x:0,y:0});return Q({position:n.getSpinePositionFromSpineItemPosition({spineItemPosition:l,spineItem:i}),pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width})},getNavigationForLastPage:e=>{let t=c.getNavigationForLastPage(e);return Q({position:n.getSpinePositionFromSpineItemPosition({spineItemPosition:t,spineItem:e}),pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width})},getNavigationForSpineIndexOrId:e=>{let r=t.get(e);return r?Q({position:n.getSpinePositionFromSpineItem(r),pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width}):new U({x:0,y:0})},getNavigationForPosition:e=>mi({viewportPosition:e,spineItemNavigationResolver:c,spineLocator:n,viewport:o}),getMostPredominantNavigationForPosition:a=>{let s=r.values.computedPageTurnDirection,l=.5;return mi({spineItemNavigationResolver:c,spineLocator:n,viewportPosition:fi({position:new U({x:s===`horizontal`?a.x+o.absoluteViewport.width*l:0,y:s===`horizontal`?0:a.y+o.absoluteViewport.height*l}),size:o.absoluteViewport,isRTL:e.isRTL(),spineItemsManager:t,spine:i}),viewport:o})},clampPositionInSpine:(n,r)=>fi({position:n,size:r,isRTL:e.isRTL(),spineItemsManager:t,spine:i}),getBoundaryForPosition:(n,r=o.absoluteViewport)=>pi({position:n,size:r,isRTL:e.isRTL(),spineItemsManager:t,spine:i}),isNavigationGoingForwardFrom:(e,t)=>r.values.computedPageTurnDirection===`vertical`?e.y>t.y:e.x>t.x,arePositionsDifferent:(e,t)=>e.x!==t.x||e.y!==t.y,getAdjustedPositionForSpread:e=>Q({position:e,pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width}),spineItemNavigator:c}},wi=({spineItemsManager:e,context:r,hookManager:i,spine:o,settings:s,viewport:c,cfi:l})=>{let u=new n.Subject,d=u.asObservable(),f=new Kr,p=l,m=Ci({cfi:p,context:r,settings:s,spineItemsManager:e,locator:o.locator,spine:o,viewport:c}),h=new Pr(s,i,r,o,c),g=new lr(c,s,i,o,r),_=[g,h],v=new ti(s,r,d,()=>_.find(e=>e.isActive())??h,(0,n.merge)(..._.flatMap(e=>e.layout$?[e.layout$]:[])),m,o,c,p,f.isLocked$),y=(0,n.combineLatest)([..._.map(e=>e.isNavigating$),f.isLocked$,v.locker.isLocked$]).pipe((0,n.map)(e=>e.some(e=>e)?`busy`:`free`),(0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),b=v.navigation$.pipe((0,n.map)(({position:e})=>e),(0,n.distinctUntilChanged)(t.isShallowEqual),(0,n.shareReplay)(1));return{destroy:()=>{_.forEach(e=>{e.destroy()}),v.destroy()},getNavigation:()=>v.navigation,internalNavigator:v,scrollNavigationController:g,controlledNavigationController:h,navigationState$:y,navigate:e=>{a.info(`User navigation`,e),u.next(e)},lock:()=>f.lock(),isLocked$:f.isLocked$,navigationResolver:m,navigation$:v.navigation$,position$:b}},Ti=class extends j{constructor(e,t){super({beginPageIndexInSpineItem:void 0,beginNumberOfPagesInSpineItem:0,beginCfi:void 0,beginSpineItemIndex:void 0,endPageIndexInSpineItem:void 0,endNumberOfPagesInSpineItem:0,endCfi:void 0,endSpineItemIndex:void 0,navigationId:void 0}),this.context=e,this.spineItemsManager=t}update(e){this.mergeCompare(e)}},Ei=class extends q{constructor(e,t,r,i,a,o,s){super(),this.context=e,this.pagination=t,this.spineItemsManager=r,this.spine=i,this.spineItemLocator=a,this.isNavigationLocked$=o,this.cfi=s;let c=(0,n.merge)(this.context.bridgeEvent.navigation$,i.layout$).pipe((0,n.switchMap)(()=>{let e=({spineItem:e,position:t})=>this.spine.locator.getVisiblePagesFromViewportPosition({spineItem:e,position:t,threshold:{type:`percentage`,value:.5}});return this.isNavigationLocked$.pipe((0,n.filter)(e=>!e),(0,n.take)(1),(0,n.withLatestFrom)(this.context.bridgeEvent.navigation$),(0,n.tap)(([,t])=>{let{position:n}=t,r=this.pagination.value,{beginIndex:i,endIndex:a}=this.spine.locator.getVisibleSpineItemsFromPosition({position:n,threshold:{type:`percentage`,value:.5}})??{},o=this.spineItemsManager.get(i),s=this.spineItemsManager.get(a);if(!o||!s)return;let c=r.beginCfi,l=r.endCfi,{beginPageIndex:u=0}=e({spineItem:o,position:n})??{},{endPageIndex:d=0}=e({spineItem:s,position:n})??{},f=c===void 0||this.cfi.isRootCfi(c)||r.beginSpineItemIndex!==i,p=r.endSpineItemIndex!==a||l===void 0||this.cfi.isRootCfi(l),m=f?this.cfi.generateRootCfi(o.item):c,h=p?this.cfi.generateRootCfi(s.item):l,g=o.numberOfPages,_=s.numberOfPages;this.pagination.update({beginCfi:m,beginNumberOfPagesInSpineItem:g,beginPageIndexInSpineItem:u,beginSpineItemIndex:i,endCfi:h,endNumberOfPagesInSpineItem:_,endPageIndexInSpineItem:d,endSpineItemIndex:a,navigationId:t.id})}))}));(0,n.merge)(c,c.pipe(A(this.context.bridgeEvent.viewportFree$),(0,n.tap)(()=>{let{beginSpineItemIndex:e,endSpineItemIndex:t,beginPageIndexInSpineItem:n,endPageIndexInSpineItem:r}=this.pagination.value;if(n===void 0||r===void 0||e===void 0||t===void 0)return;let i=this.spineItemsManager.get(e),a=this.spineItemsManager.get(t);if(i===void 0||a===void 0)return;let o=this.spine.pages.fromSpineItemPageIndex(i,n),s=this.spine.pages.fromSpineItemPageIndex(a,r);this.pagination.update({beginCfi:o?.firstVisibleNode?this.cfi.generateCfiForSpineItemPage({spineItem:i.item,pageNode:o?.firstVisibleNode}):this.cfi.generateRootCfi(i.item),endCfi:s?.firstVisibleNode?this.cfi.generateCfiForSpineItemPage({spineItem:a.item,pageNode:s?.firstVisibleNode}):this.cfi.generateRootCfi(a.item)})}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}},Di=class extends q{constructor(e){super();let t={...this.getDefaultSettings(),...e};this.inputSettings=t,this.outputSettingsUpdateSubject=new n.Subject,this._settings$=this.outputSettingsUpdateSubject.asObservable().pipe((0,n.shareReplay)(1)),this._settings$.subscribe()}_prepareUpdate(e){let n=(0,t.shallowMergeIfDefined)(this.inputSettings,e),r=this.getOutputSettings(n),i=!(0,t.isShallowEqual)(this.outputSettings,r);return{hasChanged:i,state:r,commit:()=>(this.inputSettings=n,this.outputSettings=r,i&&this.outputSettingsUpdateSubject.next(r),r)}}update(e){let{commit:t}=this._prepareUpdate(e);t()}get values(){if(!this.outputSettings){let{commit:e}=this._prepareUpdate(this.inputSettings);return e()}return this.outputSettings}get values$(){if(!this.outputSettings){let{commit:e}=this._prepareUpdate(this.inputSettings);e()}return this._settings$}watch(e){return this.values$.pipe(ve(e),(0,n.distinctUntilChanged)(t.isShallowEqual))}destroy(){super.destroy(),this.outputSettingsUpdateSubject.complete()}},Oi=class extends Di{constructor(e,t){super(e),this.context=t,t.watch([`manifest`,`hasVerticalWriting`]).pipe((0,n.tap)(()=>this.update(this.values)),(0,n.takeUntil)(this.destroy$)).subscribe()}getComputedSettings(e){let t=this.context.manifest,n=this.context.value.hasVerticalWriting??!1,r={computedPageTurnDirection:e.pageTurnDirection,computedPageTurnAnimation:e.pageTurnAnimation,computedPageTurnMode:e.pageTurnMode,computedPageTurnAnimationDuration:0,computedSpreadMode:At({spreadMode:e.spreadMode,manifest:t})};return t?.renditionFlow===`scrolled-continuous`&&(r.computedPageTurnMode=`scrollable`),r.computedPageTurnMode===`scrollable`&&(r.computedPageTurnDirection=`vertical`),n&&r.computedPageTurnAnimation===`slide`&&(a.warn(`pageTurnAnimation ${r.computedPageTurnAnimation} incompatible with current book, switching back to default`),r.computedPageTurnAnimation=`none`),r.computedPageTurnMode===`scrollable`?(r.computedPageTurnAnimationDuration=0,r.computedPageTurnAnimation=`none`):r.computedPageTurnAnimationDuration=e.pageTurnAnimationDuration===void 0?300:e.pageTurnAnimationDuration,r}getOutputSettings(e){let t=this.getComputedSettings(e);return{...this.outputSettings,...e,...t}}getDefaultSettings(){return{spreadMode:!1,pageTurnAnimation:`slide`,pageTurnDirection:`horizontal`,pageTurnAnimationDuration:void 0,pageTurnMode:`controlled`,snapAnimationDuration:300,navigationSnapThreshold:{type:`pixels`,value:40},numberOfAdjacentSpineItemToPreLoad:3}}},ki=class extends ke{onUnload(){return n.EMPTY}onCreateDocument(){return(0,n.of)(document.createElement(`div`))}onLoadDocument(){return n.EMPTY}onLayout(){return(0,n.of)(void 0)}onRenderHeadless(){return n.EMPTY}getDocumentFrame(){}},Ai=class extends q{constructor(e,r,i,a,o,s,c){super(),this.item=e,this.containerElement=r,this.context=i,this.hookManager=a,this.renderer=o,this.settings=s,this.viewport=c,this.layoutTriggerSubject=new n.Subject,this.lastLayout=null,this.computeLayoutInformation=({isLastItem:e,horizontalOffset:n,spreadPosition:r})=>{let i=this.viewport.value.pageSize.width,a=`none`,o=n%this.viewport.absoluteViewport.width===0,s=this.context.manifest,c=Tr(s)??!1;if(this.settings.values.computedSpreadMode){!c&&this.renderer.renditionLayout===`reflowable`&&!e&&(i=this.viewport.value.pageSize.width*2),!c&&this.renderer.renditionLayout===`reflowable`&&e&&o&&(i=this.viewport.value.pageSize.width*2);let n=o&&e&&c,s=(0,t.getItemSpreadPosition)(this.item);s!==void 0&&s!==r?(a=`before`,i=this.viewport.value.pageSize.width*2):n&&(a=this.context.isRTL()?`before`:`after`,i=this.viewport.value.pageSize.width*2)}return{minimumWidth:i,blankPagePosition:a}},this.adjustPositionOfElement=({right:e,left:t,top:n})=>{e===void 0?d(this.containerElement.style,`right`):u(this.containerElement.style,`right`,`${e}px`),t===void 0?d(this.containerElement.style,`left`):u(this.containerElement.style,`left`,`${t}px`),n===void 0?d(this.containerElement.style,`top`):u(this.containerElement.style,`top`,`${n}px`)},this.updateContainerLayout=({minimumWidth:e,edgeX:r,edgeY:i})=>a=>a.pipe((0,n.map)(n=>{let{width:a,height:o}=((0,t.isShallowEqual)(this.lastLayout?.pageSize,this.viewport.pageSize)?this.lastLayout:void 0)??{},{width:s=a,height:c=o}=n??{},{width:l,height:d}=this.viewport.pageSize,f=this.validateDimension(s??l,l,e),p=this.settings.values.computedPageTurnMode===`scrollable`?c??d:this.validateDimension(c??d,d,d);return this.lastLayout={width:f,height:p,pageSize:this.viewport.pageSize},u(this.containerElement.style,`width`,`${f}px`),u(this.containerElement.style,`height`,`${p}px`),this.settings.values.computedPageTurnDirection===`vertical`?(this.adjustPositionOfElement({top:i,left:r}),{width:f,height:p}):(this.adjustPositionOfElement(this.context.isRTL()?{right:r,top:0}:{left:r,top:0}),{width:f,height:p})})),this.layout=e=>{let t=ye(this.didLayout$.pipe((0,n.first)()));return this.layoutTriggerSubject.next(e),t()};let l=this.layoutTriggerSubject.pipe((0,n.switchMap)(({spreadPosition:e,horizontalOffset:t,isLastItem:r,edgeX:i,edgeY:a})=>{let{blankPagePosition:o,minimumWidth:s}=this.computeLayoutInformation({horizontalOffset:t,isLastItem:r,spreadPosition:e});this.hookManager.execute(`item.onBeforeLayout`,{blankPagePosition:o,item:this.item,minimumWidth:s});let c=this.renderer.layout({blankPagePosition:o,minPageSpread:s/this.viewport.pageSize.width,minimumWidth:s,spreadPosition:e});return(0,n.merge)((0,n.of)({type:`start`}),c.pipe(this.updateContainerLayout({minimumWidth:s,edgeX:i,edgeY:a}),(0,n.map)(e=>(this.hookManager.execute(`item.onAfterLayout`,{blankPagePosition:o,item:this.item,minimumWidth:s}),{type:`end`,data:e}))))}),(0,n.share)());this.didLayout$=l.pipe((0,n.filter)(e=>e.type===`end`),(0,n.map)(e=>e.data),(0,n.share)())}validateDimension(e,t,n){if(e<=0)return n;let r=Math.ceil(Math.max(e,n)/t)*t;return Math.max(r,t)}get layoutInfo(){let e=this.containerElement.style;return{width:e.width?parseFloat(e.width):0,height:e.height?parseFloat(e.height):0}}},$=class extends j{constructor(e,t,i,a,o,s,c){super({isLoaded:!1,isReady:!1,isDirty:!1,isError:!1,error:void 0}),this.item=e,this.parentElement=t,this.context=i,this.settings=a,this.hookManager=o,this.index=s,this.viewport=c,this.load=()=>{this.renderer.load()},this.unload=()=>{this.renderer.unload()},this.markDirty=()=>{this.mergeCompare({isDirty:!0})},this.destroy=()=>{super.destroy(),this.containerElement.remove(),this.renderer.destroy()},this.isUsingVerticalWriting=()=>!!this.renderer.writingMode?.startsWith(`vertical`),this.layout=e=>this._layout.layout(e),this.containerElement=ji(t,e,o),t.appendChild(this.containerElement);let l=this.settings.values.getRenderer?.(e);this.resourcesHandler=new M(e,this.settings);let u={context:i,settings:a,hookManager:o,item:e,containerElement:this.containerElement,resourcesHandler:this.resourcesHandler,viewport:this.viewport};this.renderer=l?l(u):new ki(u),this._layout=new Ai(e,this.containerElement,i,o,this.renderer,this.settings,this.viewport);let d=this.renderer.state$.pipe((0,r.tap)(({state:e,error:t})=>{this.mergeCompare({isLoaded:e===`loaded`,isError:e===`error`,error:e===`error`?t:void 0})}));this.didLayout$=this._layout.didLayout$.pipe((0,r.tap)(()=>{this.mergeCompare({isDirty:!1,isReady:this.renderer.value.state===`loaded`})}),(0,r.share)()),(0,n.merge)(d,this.didLayout$).pipe((0,r.takeUntil)(this.destroy$)).subscribe()}get isReady$(){return this.watch(`isReady`)}get element(){return this.containerElement}get readingDirection(){return this.renderer.readingDirection}get loaded$(){return this.renderer.loaded$}get unloaded$(){return this.renderer.unloaded$}get renditionLayout(){return this.renderer.renditionLayout}get layoutInfo(){return this._layout.layoutInfo}get numberOfPages(){return oi({isUsingVerticalWriting:!!this.isUsingVerticalWriting(),itemHeight:this._layout.layoutInfo.height,itemWidth:this._layout.layoutInfo.width,pageWidth:this.viewport.pageSize.width,pageHeight:this.viewport.pageSize.height,pageTurnDirection:this.settings.values.computedPageTurnDirection,pageTurnMode:this.settings.values.pageTurnMode})}},ji=(e,t,n)=>{let r=e.ownerDocument.createElement(`div`);return r.setAttribute(`data-${ht}`,``),r.classList.add(`spineItem`),r.classList.add(`spineItem-${t.renditionLayout??`reflowable`}`),r.style.cssText=`
193
+ `,t.className=`${U}-controlled-navigator`,t.innerHTML=``,t.appendChild(e),this.viewport.value.element.appendChild(t),this.element$.next(t)})),c=(0,n.combineLatest)([e.watch([`computedPageTurnDirection`,`computedPageTurnMode`,`numberOfAdjacentSpineItemToPreLoad`]),this.element$]).pipe((0,n.tap)(([,t])=>{e.values.computedPageTurnMode===`scrollable`?u(t.style,`display`,`contents`):u(t.style,`display`,`block`)}));this.layout$=c.pipe((0,n.tap)(()=>{Mr.info(`layout`,e.values)}),(0,n.share)()),this.isNavigating$=this.navigateSubject.pipe((0,n.distinctUntilChanged)((e,n)=>(0,t.isShallowEqual)(e.position,n.position)),(0,n.map)(({animation:t,position:n})=>(Mr.info(`Navigation requested`,{animation:t,position:n}),{type:`manualAdjust`,shouldAnimate:!(!t||t===`turn`&&e.values.computedPageTurnAnimation===`none`),animation:t,position:n})),(0,n.switchMap)(t=>{let r=this.element$.getValue();return u(r.style,`transition`,`none`),u(r.style,`opacity`,`1`),(0,n.merge)((0,n.of)(!0),(0,n.of)(null).pipe((0,n.mergeMap)(()=>{if(t?.type!==`manualAdjust`)return(0,n.of)(!1);let r=t.animation===`snap`?e.values.snapAnimationDuration:e.values.computedPageTurnAnimationDuration,i=t.animation===`snap`?`slide`:e.values.computedPageTurnAnimation;return(0,n.of)(t).pipe(t.shouldAnimate?(0,n.delay)(1,n.animationFrameScheduler):n.identity,(0,n.tap)(e=>{let n=this.element$.getValue();e.shouldAnimate?i===`fade`?(u(n.style,`transition`,`opacity ${r/2}ms`),u(n.style,`opacity`,`0`)):(t.animation===`snap`||i===`slide`)&&(u(n.style,`transition`,`transform ${r}ms`),u(n.style,`opacity`,`1`)):(u(n.style,`transition`,`none`),u(n.style,`opacity`,`1`))}),(0,n.tap)(e=>{i!==`fade`&&this.applyNavigationPosition(e.position)}),t.shouldAnimate?(0,n.delay)(r/2,n.animationFrameScheduler):n.identity,(0,n.tap)(e=>{let t=this.element$.getValue();i===`fade`&&(this.applyNavigationPosition(e.position),u(t.style,`opacity`,`1`))}),t.shouldAnimate?(0,n.delay)(r/2,n.animationFrameScheduler):n.identity,(0,n.tap)(e=>{i===`fade`&&this.applyNavigationPosition(e.position)}))}),(0,n.map)(()=>!1)))}),(0,n.startWith)(!1),(0,n.shareReplay)(1)),(0,n.merge)(s,this.isNavigating$,this.layout$).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}applyNavigationPosition(e){let t=this.element$.getValue(),n=Ar(e);u(t.style,`transform`,`translate(${n.x}px, ${n.y}px)`),this.hookManager.execute(`onViewportOffsetAdjust`,void 0)}navigate(e){this.navigateSubject.next(e)}get viewportPosition(){let e=this.element$.getValue(),t=window.getComputedStyle(e),n=t.transform||t.webkitTransform;return!n||n===`none`?new V({x:0,y:0}):jr(new DOMMatrix(n))}},Pr=()=>e=>e.pipe((0,n.map)(({navigation:e,pagination:t,...n})=>({navigation:{...e,paginationBeginCfi:t.beginCfi},...n}))),Fr=(e,t,r)=>e.bridgeEvent.pagination$.pipe((0,n.withLatestFrom)(t),(0,n.filter)(([e,t])=>e.navigationId===t.id),(0,n.switchMap)(([e,t])=>(r.spineItemsManager.get(t.spineItem)?.isReady$.pipe((0,n.first)())??(0,n.of)(!1)).pipe((0,n.filter)(e=>e),(0,n.map)(()=>({pagination:e,navigation:t})))),Pr(),(0,n.distinctUntilChanged)((e,t)=>e.navigation.paginationBeginCfi===t.navigation.paginationBeginCfi),(0,n.map)(({navigation:e})=>({...e,meta:{triggeredBy:`pagination`},requestedPosition:e.position}))),Ir=({navigationResolver:e,getNavigationVisibleArea:t})=>r=>r.pipe((0,n.map)(([n,r])=>{let i=n.position,a=i?t():void 0,o=i&&a?e.clampPositionInSpine(i,a):void 0;return{previousNavigation:r,navigation:{type:`api`,meta:{triggeredBy:`user`},id:Symbol(`user`),animation:`turn`,...n,requestedPosition:i,requestedVisibleArea:a,position:o}}})),Lr=({navigationResolver:e})=>t=>t.pipe((0,n.map)(t=>{if(t.navigation.cfi){let n=e.getNavigationForCfi(t.navigation.cfi);if(n)return{...t,navigation:{...t.navigation,position:n}}}return t})),Rr=({navigation:e,previousNavigation:t,settings:n})=>e.directionFromLastNavigation?e.directionFromLastNavigation:e.url!==void 0||e.cfi!==void 0?`anchor`:t.spineItem===void 0||e.spineItem||!e.position?`forward`:n.values.computedPageTurnDirection===`vertical`?e.position.y>t.position.y||e.position.y===t.position.y&&t.directionFromLastNavigation!==`backward`?`forward`:`backward`:Math.abs(e.position.x)>Math.abs(t.position.x)||e.position.x===t.position.x&&t.directionFromLastNavigation!==`backward`?`forward`:`backward`,zr=({context:e,settings:t})=>r=>r.pipe((0,n.map)(({navigation:n,previousNavigation:r})=>{let i=Rr({context:e,navigation:n,previousNavigation:r,settings:t});return{previousNavigation:r,navigation:{...n,directionFromLastNavigation:i},direction:i}})),Br=({spineItemsManager:e,navigationResolver:t,settings:r,viewport:i})=>a=>a.pipe((0,n.map)(({navigation:n,...a})=>{let o=e.get(n.spineItem);if(n.position)return r.values.computedPageTurnMode===`scrollable`?{navigation:{...n,position:n.position},...a}:{navigation:{...n,position:t.clampPositionInSpine(n.position,i.absoluteViewport)},...a};if(!o)return{navigation:{...n,position:a.previousNavigation.position},...a};let s=t.getNavigationForSpineIndexOrId(o),c=r.values.computedPageTurnMode===`scrollable`?new H({x:s.x+a.previousNavigation.position.x,y:s.y}):t.clampPositionInSpine(s,i.absoluteViewport);return{navigation:{...n,position:c},...a}})),Vr=({settings:e,spineItemsManager:t,navigationResolver:r,spineLocator:i,cfi:a})=>o=>{let s=n=>{let{position:o,spineItem:s,cfi:c,directionFromLastNavigation:l}=n,{navigationSnapThreshold:u,computedPageTurnMode:d}=e.values;if(s!==void 0){let e=t.get(s);if(e)return e}if(typeof s==`number`)return s>t.items.length-1?t.get(t.items.length-1):t.get(0);if(c){let e=a.getSpineItemFromCfi(c);if(e)return e}if(o&&d===`controlled`){let{beginIndex:e,endIndex:n}=i.getVisibleSpineItemsFromPosition({position:o,threshold:u,restrictToScreen:!1})??{},a=(l===`forward`||l===`anchor`?n:e)??e,s=t.get(a);if(!s)return;let{endPageIndex:c,beginPageIndex:d}=i.getVisiblePagesFromViewportPosition({position:o,spineItem:s,threshold:u,restrictToScreen:!1})??{},f=(l===`forward`||l===`anchor`?c:d)??0,p=r.getNavigationForSpineItemPage({pageIndex:f,spineItemId:s}),m=i.getVisibleSpineItemsFromPosition({position:p,threshold:u,restrictToScreen:!1}),h=l===`forward`||l===`anchor`?m?.beginIndex:m?.endIndex;return t.get(h)}return o&&d===`scrollable`?i.getSpineItemFromPosition(o):t.get(0)};return o.pipe((0,n.map)(({navigation:e,...n})=>{let r=s(e);return{navigation:{...e,spineItem:t.getSpineItemIndex(r)},...n}}))},Hr=({spine:e})=>t=>t.pipe((0,n.switchMap)(({navigation:t,...r})=>{let i=e.getSpineItemSpineLayoutInfo(t.spineItem),a=e.spineItemsManager.get(t.spineItem);return(a?.isReady$??(0,n.of)(!1)).pipe((0,n.first)(),(0,n.map)(e=>({navigation:{...t,spineItemHeight:i?.height,spineItemWidth:i?.width,spineItemLeft:i.left,spineItemTop:i.top,spineItemIsUsingVerticalWriting:a?.isUsingVerticalWriting(),spineItemIsReady:e},...r})))})),Ur=({settings:e,spineItemsManager:t,spineLocator:r,navigationResolver:i})=>a=>{let o=n=>{let{navigationSnapThreshold:a,computedPageTurnMode:o}=e.values,s=t.get(n.spineItem);if(!(!s||!n.position)){if(o===`controlled`){let{endPageIndex:e,beginPageIndex:t}=r.getVisiblePagesFromViewportPosition({position:n.position,spineItem:s,threshold:a,restrictToScreen:!1})??{},o=(n.directionFromLastNavigation===`forward`||n.directionFromLastNavigation===`anchor`?e:t)??0,c=i.getNavigationForSpineItemPage({pageIndex:o,spineItemId:s}),l=r.getVisiblePagesFromViewportPosition({position:c,spineItem:s,threshold:{type:`percentage`,value:0},restrictToScreen:!0}),u=(n.directionFromLastNavigation===`forward`||n.directionFromLastNavigation===`anchor`?l?.beginPageIndex:l?.endPageIndex)??0;return r.spineItemLocator.getSpineItemPositionFromPageIndex({pageIndex:u,spineItem:s})}return r.getSpineItemPositionFromSpinePosition(n.position,s)}};return a.pipe((0,n.map)(({navigation:e,...t})=>({navigation:{...e,positionInSpineItem:o(e)},...t})))},Wr=({navigationResolver:e})=>t=>t.pipe((0,n.map)(t=>{if(t.navigation.url){let n=e.getNavigationForUrl(t.navigation.url);if(n)return{...t,navigation:{...t.navigation,position:n.position,spineItem:n.spineItemId}}}return t})),Gr=class{constructor(){this.isLockedSubject=new n.BehaviorSubject(0),this.isLocked$=this.isLockedSubject.pipe((0,n.map)(e=>!!e),(0,n.distinctUntilChanged)())}lock(){let e=!1;return this.isLockedSubject.next(this.isLockedSubject.getValue()+1),()=>{e||(e=!0,this.isLockedSubject.next(this.isLockedSubject.getValue()-1))}}},Kr=({spineLocator:e,navigation:t,navigationResolver:r,spineItemsManager:i,spine:a,cfiManager:o})=>{let s=i.get(t.spineItem);return s?s.isReady$.pipe((0,n.first)(),(0,n.map)(n=>{let i=a.getSpineItemSpineLayoutInfo(s),c=e.isPositionWithinSpineItem(t.position,s),l=i.width-(t.spineItemWidth??0),u=i.height-(t.spineItemHeight??0),d=l!==0||u!==0;if(t.url!==void 0&&(l||u||n&&!t.spineItemIsReady)){let e=r.getNavigationForUrl(t.url);if(e)return e.position}let f=t.cfi??t.paginationBeginCfi;if(f!==void 0&&!o.isRootCfi(f)&&(l||u||n&&!t.spineItemIsReady)){let e=r.getNavigationForCfi(f);if(e)return e}if(c&&d&&t.directionFromLastNavigation===`backward`){let e=new L({x:(t.positionInSpineItem?.x??0)+l,y:(t.positionInSpineItem?.y??0)+u});return r.getNavigationFromSpineItemPosition({spineItem:s,spineItemPosition:e})}if(t.positionInSpineItem&&t.spineItemHeight&&t.spineItemWidth){let n=e.spineItemLocator.getSpineItemPageIndexFromPosition({itemWidth:t.spineItemWidth,itemHeight:t.spineItemHeight,isUsingVerticalWriting:!!t.spineItemIsUsingVerticalWriting,position:t.positionInSpineItem});return r.getNavigationForSpineItemPage({pageIndex:n,spineItemId:s})}return c?r.getNavigationForPosition(t.position):r.getNavigationForSpineIndexOrId(s)})):(0,n.of)(new V({x:0,y:0}))},qr=({navigation:e,spineLocator:t,spineItemsManager:n,settings:r,navigationResolver:i,spine:a})=>{let{spineItem:o}=e,s=n.get(o);if(!s)return new V({x:0,y:0});let{height:c,top:l}=a.getSpineItemSpineLayoutInfo(s),u=t.isPositionWithinSpineItem(e.position,s),d=e.positionInSpineItem??new L({y:0,x:0});if(r.values.computedPageTurnDirection===`vertical`){if(l===e.spineItemTop&&c===e.spineItemHeight&&u)return e.position;if(l===e.spineItemTop&&c===e.spineItemHeight&&!u)return i.getNavigationForSpineIndexOrId(s);if(l!==e.spineItemTop){let n=t.getSafeSpineItemPositionFromUnsafeSpineItemPosition(e.positionInSpineItem??new L({x:0,y:0}),s);return t.getSpinePositionFromSpineItemPosition({spineItemPosition:n,spineItem:s})}if(l===e.spineItemTop&&c!==e.spineItemHeight){let n=(e.spineItemHeight??d.y)-d.y,r=new L({y:e.directionFromLastNavigation===`backward`?c-n:d.y,x:e.position.x});if(u){let e=t.getSafeSpineItemPositionFromUnsafeSpineItemPosition(r,s);return t.getSpinePositionFromSpineItemPosition({spineItemPosition:e,spineItem:s})}if(!u){if(!(e.position.y<l)){let r=new L({y:c-n,x:e.position.x});return t.getSpinePositionFromSpineItemPosition({spineItemPosition:t.getSafeSpineItemPositionFromUnsafeSpineItemPosition(r,s),spineItem:s})}return i.getNavigationForSpineIndexOrId(s)}}}return e.position},Jr=({navigation:e,spineItemsManager:t,settings:r,spineLocator:i,navigationResolver:a,spine:o,cfiManager:s})=>r.values.computedPageTurnMode===`scrollable`?(0,n.of)(qr({navigation:e,spineLocator:i,navigationResolver:a,settings:r,spineItemsManager:t,spine:o})):Kr({navigation:e,spineLocator:i,navigationResolver:a,spineItemsManager:t,spine:o,cfiManager:s}),Yr=({settings:e,navigationResolver:t,context:r,spine:i,cfiManager:a})=>o=>o.pipe((0,n.switchMap)(o=>Jr({spineLocator:i.locator,navigation:o.navigation,navigationResolver:t,settings:e,spineItemsManager:i.spineItemsManager,spineItemLocator:i.locator.spineItemLocator,context:r,spine:i,cfiManager:a}).pipe((0,n.map)(e=>({...o,navigation:{...o.navigation,position:e}}))))),Xr=a.namespace(`navigation/InternalNavigator`),Zr=(e,t)=>e===t||!!e&&!!t&&e.x===t.x&&e.y===t.y,Qr=(e,t)=>e===t||!!e&&!!t&&e.width===t.width&&e.height===t.height,$r=(e,t)=>e.id===t.id&&Zr(e.position,t.position)&&Zr(e.requestedPosition,t.requestedPosition)&&Qr(e.requestedVisibleArea,t.requestedVisibleArea),ei=class extends q{constructor(e,t,r,i,a,o,s,c,l,u){super(),this.settings=e,this.context=t,this.userNavigation$=r,this.getActiveNavigationModeController=i,this.navigationModeLayout$=a,this.navigationResolver=o,this.spine=s,this.viewport=c,this.cfiManager=l,this.isUserInteractionLocked$=u,this.navigationSubject=new n.BehaviorSubject({animation:!1,position:new V({x:0,y:0}),meta:{triggeredBy:`user`},requestedPosition:new V({x:0,y:0}),spineItemIsReady:!1,type:`api`,id:Symbol(`init`)}),this.navigation$=this.navigationSubject.pipe((0,n.map)(({position:e,id:t,requestedPosition:n,requestedVisibleArea:r,meta:i})=>({position:e,id:t,requestedPosition:n,requestedVisibleArea:r,triggeredBy:i.triggeredBy})),(0,n.distinctUntilChanged)($r),(0,n.shareReplay)(1)),this.locker=new Gr;let d=r.pipe((0,n.withLatestFrom)(this.navigationSubject),Ir({navigationResolver:o,getNavigationVisibleArea:()=>i().getNavigationVisibleArea()}),Wr({navigationResolver:o}),Lr({navigationResolver:o}),zr({context:t,settings:e}),Vr({context:t,cfi:l,navigationResolver:o,settings:e,spineItemsManager:s.spineItemsManager,spineLocator:s.locator}),Ur({navigationResolver:o,settings:e,spineItemsManager:s.spineItemsManager,spineLocator:s.locator}),Hr({spine:s})).pipe(Br({navigationResolver:o,spineItemsManager:s.spineItemsManager,settings:e,viewport:c}),(0,n.withLatestFrom)(u),(0,n.switchMap)(([r,i])=>{let a=r.navigation.cfi||r.navigation.url||e.values.computedPageTurnMode===`scrollable`||i;return(0,n.of)(r).pipe(a?n.identity:Yr({navigationResolver:o,settings:e,spine:s,context:t,cfiManager:l}))}),Ur({spineItemsManager:s.spineItemsManager,spineLocator:s.locator,settings:e,navigationResolver:o}),(0,n.map)(e=>e.navigation),(0,n.share)()),f=d.pipe((0,n.withLatestFrom)(u),(0,n.filter)(([,e])=>e),(0,n.switchMap)(([e])=>{let t=this.locker.lock();return u.pipe((0,n.filter)(e=>!e),(0,n.first)(),(0,n.map)(()=>({navigation:{...e,animation:`snap`}})),(0,n.finalize)(()=>{t()}),(0,n.takeUntil)(d))}),(0,n.share)());(0,n.merge)((0,n.merge)((0,n.merge)(a,s.layout$).pipe((0,n.switchMap)(()=>(0,n.of)(null).pipe((0,n.switchMap)(()=>u.pipe((0,n.filter)(e=>!e),(0,n.first)())),(0,n.map)(()=>({navigation:{...this.navigationSubject.getValue(),animation:!1}})),(0,n.takeUntil)((0,n.merge)(f,d))))),f).pipe(Yr({navigationResolver:o,settings:e,context:t,spine:s,cfiManager:l}),(0,n.map)(({navigation:e})=>({navigation:{...e,meta:{triggeredBy:`restoration`},requestedPosition:e.position}})),Vr({context:t,cfi:l,navigationResolver:o,settings:e,spineItemsManager:s.spineItemsManager,spineLocator:s.locator}),Hr({spine:s}),Ur({spineItemsManager:s.spineItemsManager,spineLocator:s.locator,settings:e,navigationResolver:o}),(0,n.map)(({navigation:e})=>e),(0,n.share)()),d,Fr(t,this.navigationSubject,s)).pipe((0,n.withLatestFrom)(this.navigationSubject),e=>e.pipe((0,n.tap)(([e])=>{let t=e.type===`scroll`,n=e.meta.triggeredBy===`pagination`,r=e.meta.triggeredBy===`restoration`;if(t&&!r||n)return;let i={position:e.position,animation:e.animation};this.getActiveNavigationModeController().navigate(i)})),e=>e.pipe((0,n.tap)(([e,t])=>{Xr.info(`navigation updated from ${e.meta.triggeredBy} of type ${e.type}`,{previousNavigation:t,currentNavigation:e}),this.navigationSubject.next(e)})),(0,n.takeUntil)(this.destroy$)).subscribe()}get navigation(){return this.navigationSubject.getValue()}},Z=(e,t,n)=>{let r=n-e,i=t*e*n/(n||1);return Math.max(0,Math.min(r,i))},ti=(e,t)=>(t||0)===0||(e||0)===0?1:Math.floor(Math.max(1,e/t)),Q=(e,t,n)=>{let r=ti(n,t),i=[...Array(r)].map((e,n)=>n*t);return e>=r*t?i[i.length-1]||0:i.find(n=>e<n+t)||0},ni=(e,t,n)=>{let r=[...Array(n)].map((e,n)=>n*t);return e<=0||n===0?0:e>=n*t?n-1:r.findIndex(n=>e<n+t)??0},ri=({itemWidth:e,itemHeight:t,spineItemPosition:n})=>new L({x:Math.min(e,Math.max(0,n.x)),y:Math.min(t,Math.max(0,n.y))}),ii=({itemHeight:e,itemWidth:t,isUsingVerticalWriting:n,pageWidth:r,pageHeight:i,pageTurnDirection:a,pageTurnMode:o})=>a===`vertical`&&o===`scrollable`?1:n||a===`vertical`?ti(e,i):ti(t,r),ai=({itemWidth:e,itemHeight:t,position:n,isUsingVerticalWriting:r,pageWidth:i,pageHeight:a,pageTurnDirection:o,pageTurnMode:s,isRTL:c})=>{let l=ri({spineItemPosition:n,itemHeight:t,itemWidth:e}).x,u=ii({isUsingVerticalWriting:r,itemHeight:t,itemWidth:e,pageWidth:i,pageHeight:a,pageTurnDirection:o,pageTurnMode:s});if(r)return ni(n.y,a,u);let d=ni(l,i,u);return c?u-1-d:d},oi=({pageIndex:e,itemLayout:t,context:n,isUsingVerticalWriting:r,viewport:i})=>{if(r)return new L({x:0,y:Z(i.pageSize.height,e,t.height)});let a=Z(i.pageSize.width,e,t.width);return n.isRTL()?new L({x:t.width-a-i.pageSize.width,y:0}):new L({x:a,y:0})},si=({context:e,settings:t,viewport:n})=>{let r=(e,t,r)=>{let i;e?.nodeName===`img`||e?.textContent===``&&e.nodeType===Node.ELEMENT_NODE?i=e.getBoundingClientRect().x:e&&(i=(e?_(e,t):void 0)?.getBoundingClientRect().x||i);let a=r.layoutInfo?.width||0,o=n.pageSize.width;if(i!==void 0)return new L({x:Q(i,o,a),y:0})};return{getSpineItemPositionFromNode:r,getSpineItemPositionFromPageIndex:({pageIndex:t,spineItem:r})=>oi({context:e,isUsingVerticalWriting:!!r.isUsingVerticalWriting(),itemLayout:r.layoutInfo,pageIndex:t,viewport:n}),getSpineItemPageIndexFromPosition:r=>ai({...r,isRTL:e.isRTL(),pageWidth:n.pageSize.width,pageHeight:n.pageSize.height,pageTurnDirection:t.values.computedPageTurnDirection,pageTurnMode:t.values.pageTurnMode}),getSpineItemPageIndexFromNode:(i,a,o)=>{let s=r(i,a,o),{height:c,width:l}=o.layoutInfo;return s?ai({isUsingVerticalWriting:!!o.isUsingVerticalWriting(),position:s,itemHeight:c,itemWidth:l,isRTL:e.isRTL(),pageWidth:n.pageSize.width,pageHeight:n.pageSize.height,pageTurnDirection:t.values.computedPageTurnDirection,pageTurnMode:t.values.pageTurnMode}):void 0},getSpineItemClosestPositionFromUnsafePosition:(e,t)=>{let{width:r,height:i}=t.layoutInfo;return new L({x:Q(e.x,n.pageSize.width,r),y:Q(e.y,n.pageSize.height,i)})},getSpineItemPagePositionFromSpineItemPosition:(t,r,i)=>{let{width:a,height:o}=i.layoutInfo,s=n.pageSize.width,c=n.pageSize.height;if(i.isUsingVerticalWriting()){let e=Z(c,r,o);return new R({x:t.x,y:t.y-e})}let l=Z(s,r,a);if(e.isRTL()){let e=a-(r+1)*s;return new R({x:t.x-Math.max(0,e),y:t.y})}return new R({x:t.x-l,y:t.y})}}},ci=({context:e,settings:t,viewport:n})=>{let r=si({context:e,settings:t,viewport:n});return{getNavigationForLastPage:e=>{let t=e.numberOfPages;return r.getSpineItemPositionFromPageIndex({pageIndex:t-1,spineItem:e})},getNavigationForPosition:(e,t)=>r.getSpineItemClosestPositionFromUnsafePosition(t,e),getNavigationFromNode:(e,t,n)=>r.getSpineItemPositionFromNode(t,n,e)||new L({x:0,y:0})}},li=({size:e,isRTL:t,spineItemsManager:n,spine:r})=>{let i=n.get(n.items.length-1);if(!i)return;let a=r.getSpineItemSpineLayoutInfo(i),o=Math.max(0,a.bottom-e.height);if(t){let t=n.get(0),i=t?r.getSpineItemSpineLayoutInfo(t).right:0;return{xMin:a.left,xMax:Math.max(0,i-e.width),yMin:0,yMax:o}}return{xMin:0,xMax:Math.max(0,a.right-e.width),yMin:0,yMax:o}},ui=({position:e,size:t,isRTL:n,spineItemsManager:r,spine:i})=>{let a=li({size:t,isRTL:n,spineItemsManager:r,spine:i});if(!a)return new H({x:0,y:0});let o=Math.min(Math.max(a.yMin,e.y),a.yMax);return new H({x:n?Math.max(a.xMin,Math.min(a.xMax,e.x)):Math.min(Math.max(a.xMin,e.x),a.xMax),y:o})},di=({position:e,size:t,isRTL:n,spineItemsManager:r,spine:i})=>{let a=li({size:t,isRTL:n,spineItemsManager:r,spine:i});if(a){if(e.y<a.yMin)return`start`;if(e.y>a.yMax)return`end`;if(n){if(e.x>a.xMax)return`start`;if(e.x<a.xMin)return`end`}else{if(e.x<a.xMin)return`start`;if(e.x>a.xMax)return`end`}}},$=({position:e,pageSizeWidth:t,visibleAreaRectWidth:n})=>{let{x:r,y:i}=e,a=r%n===0?r:r-t;return e instanceof H?new H({x:a,y:i}):new V({x:a,y:i})},fi=({viewportPosition:e,spineLocator:t,spineItemNavigationResolver:n,viewport:r})=>{let i=t.getSpineItemFromPosition(e);if(i){let a=t.getSpineItemPositionFromSpinePosition(e,i),o=n.getNavigationForPosition(i,a);return $({position:t.getSpinePositionFromSpineItemPosition({spineItemPosition:o,spineItem:i}),pageSizeWidth:r.pageSize.width,visibleAreaRectWidth:r.absoluteViewport.width})}return new V({x:0,y:0})},pi=({pageIndex:e,spineItemsManager:t,spineItemId:n,spineLocator:r,spineItemNavigationResolver:i,viewport:a})=>{let o=t.get(n);if(!o)return fi({viewportPosition:new V({x:e*a.pageSize.width,y:0}),spineItemNavigationResolver:i,spineLocator:r,viewport:a});let s=r.spineItemLocator.getSpineItemPositionFromPageIndex({pageIndex:e,spineItem:o});return $({position:r.getSpinePositionFromSpineItemPosition({spineItemPosition:s,spineItem:o}),pageSizeWidth:a.pageSize.width,visibleAreaRectWidth:a.absoluteViewport.width})},mi=(e,t)=>{if(t&&t instanceof HTMLIFrameElement){let n=t.contentDocument,r=e.trim();if(!n||r.length===0)return;if(r.startsWith(`#`)){let e=r.slice(1);return e.length===0?void 0:n.getElementById(e)}try{return n.querySelector(r)}catch{return}}},hi=({anchor:e,spineItem:t,spine:n})=>{let r=mi(e,t.renderer.getDocumentFrame());return r?n.spineItemLocator.getSpineItemPositionFromNode(r,0,t)?.x??0:0},gi=({anchor:e,spineItem:t,spineLocator:n,spine:r})=>{let i=hi({anchor:e,spineItem:t,spine:r});return n.getSpinePositionFromSpineItemPosition({spineItemPosition:new L({x:i,y:0}),spineItem:t})},_i=({anchor:e,spineItem:t,spineLocator:n,spine:r,pageSizeWidth:i,visibleAreaRectWidth:a})=>$({position:gi({anchor:e,spineItem:t,spineLocator:n,spine:r}),pageSizeWidth:i,visibleAreaRectWidth:a}),vi=({spine:e,spineItemsManager:t,spineLocator:n,url:r,context:i,pageSizeWidth:a,visibleAreaRectWidth:o})=>{try{let s=r instanceof URL?r:new URL(r),c=`${s.origin}${s.pathname}`,l=i.manifest?.spineItems.find(e=>e.href===c);if(l){let r=t.get(l.id);if(r)return{position:$({position:_i({anchor:s.hash,spineItem:r,spine:e,spineLocator:n,pageSizeWidth:a,visibleAreaRectWidth:o}),pageSizeWidth:a,visibleAreaRectWidth:o}),spineItemId:l.id}}return}catch(e){console.error(e);return}},yi=({spineItem:e,spineItemPosition:t,spineLocator:n,spineItemLocator:r,viewport:i})=>{let a=r.getSpineItemClosestPositionFromUnsafePosition(t,e);return $({position:n.getSpinePositionFromSpineItemPosition({spineItemPosition:a,spineItem:e}),pageSizeWidth:i.pageSize.width,visibleAreaRectWidth:i.absoluteViewport.width})},bi=`spineNavigator`,xi=({context:e,spineItemsManager:t,locator:n,settings:r,spine:i,viewport:o,cfi:s})=>{let c=ci({context:e,settings:r,viewport:o});return{getNavigationForUrl:r=>vi({context:e,spineItemsManager:t,spineLocator:n,url:r,pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width,spine:i}),getNavigationForSpineItemPage:e=>pi({...e,spineItemsManager:t,spineItemNavigationResolver:c,spineLocator:n,viewport:o}),getNavigationFromSpineItemPosition:e=>yi({...e,spineItemLocator:n.spineItemLocator,spineLocator:n,viewport:o}),getNavigationForCfi:e=>{let{node:t,offset:r=0,spineItem:i}=s.resolveCfi({cfi:e});if(!i){a.warn(bi,`unable to detect item id from cfi ${e}`);return}let l=t?c.getNavigationFromNode(i,t,r):new L({x:0,y:0});return $({position:n.getSpinePositionFromSpineItemPosition({spineItemPosition:l,spineItem:i}),pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width})},getNavigationForLastPage:e=>{let t=c.getNavigationForLastPage(e);return $({position:n.getSpinePositionFromSpineItemPosition({spineItemPosition:t,spineItem:e}),pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width})},getNavigationForSpineIndexOrId:e=>{let r=t.get(e);return r?$({position:n.getSpinePositionFromSpineItem(r),pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width}):new V({x:0,y:0})},getNavigationForPosition:e=>fi({viewportPosition:e,spineItemNavigationResolver:c,spineLocator:n,viewport:o}),getMostPredominantNavigationForPosition:a=>{let s=r.values.computedPageTurnDirection,l=.5;return fi({spineItemNavigationResolver:c,spineLocator:n,viewportPosition:ui({position:new V({x:s===`horizontal`?a.x+o.absoluteViewport.width*l:0,y:s===`horizontal`?0:a.y+o.absoluteViewport.height*l}),size:o.absoluteViewport,isRTL:e.isRTL(),spineItemsManager:t,spine:i}),viewport:o})},clampPositionInSpine:(n,r)=>ui({position:n,size:r,isRTL:e.isRTL(),spineItemsManager:t,spine:i}),getBoundaryForPosition:(n,r=o.absoluteViewport)=>di({position:n,size:r,isRTL:e.isRTL(),spineItemsManager:t,spine:i}),isNavigationGoingForwardFrom:(e,t)=>r.values.computedPageTurnDirection===`vertical`?e.y>t.y:e.x>t.x,arePositionsDifferent:(e,t)=>e.x!==t.x||e.y!==t.y,getAdjustedPositionForSpread:e=>$({position:e,pageSizeWidth:o.pageSize.width,visibleAreaRectWidth:o.absoluteViewport.width}),spineItemNavigator:c}},Si=({spineItemsManager:e,context:r,hookManager:i,spine:o,settings:s,viewport:c,cfi:l})=>{let u=new n.Subject,d=u.asObservable(),f=new Gr,p=l,m=xi({cfi:p,context:r,settings:s,spineItemsManager:e,locator:o.locator,spine:o,viewport:c}),h=new Nr(s,i,r,o,c),g=new cr(c,s,i,o,r),_=[g,h],v=new ei(s,r,d,()=>_.find(e=>e.isActive())??h,(0,n.merge)(..._.flatMap(e=>e.layout$?[e.layout$]:[])),m,o,c,p,f.isLocked$),ee=(0,n.combineLatest)([..._.map(e=>e.isNavigating$),f.isLocked$,v.locker.isLocked$]).pipe((0,n.map)(e=>e.some(e=>e)?`busy`:`free`),(0,n.distinctUntilChanged)(),(0,n.shareReplay)(1)),y=v.navigation$.pipe((0,n.map)(({position:e})=>e),(0,n.distinctUntilChanged)(t.isShallowEqual),(0,n.shareReplay)(1));return{destroy:()=>{_.forEach(e=>{e.destroy()}),v.destroy()},getNavigation:()=>v.navigation,internalNavigator:v,scrollNavigationController:g,controlledNavigationController:h,navigationState$:ee,navigate:e=>{a.info(`User navigation`,e),u.next(e)},lock:()=>f.lock(),isLocked$:f.isLocked$,navigationResolver:m,navigation$:v.navigation$,position$:y}},Ci=class extends k{constructor(e,t){super({beginPageIndexInSpineItem:void 0,beginNumberOfPagesInSpineItem:0,beginCfi:void 0,beginSpineItemIndex:void 0,endPageIndexInSpineItem:void 0,endNumberOfPagesInSpineItem:0,endCfi:void 0,endSpineItemIndex:void 0,navigationId:void 0}),this.context=e,this.spineItemsManager=t}update(e){this.mergeCompare(e)}},wi=class extends q{constructor(e,t,r,i,a,o,s){super(),this.context=e,this.pagination=t,this.spineItemsManager=r,this.spine=i,this.spineItemLocator=a,this.isNavigationLocked$=o,this.cfi=s;let c=(0,n.merge)(this.context.bridgeEvent.navigation$,i.layout$).pipe((0,n.switchMap)(()=>{let e=({spineItem:e,position:t})=>this.spine.locator.getVisiblePagesFromViewportPosition({spineItem:e,position:t,threshold:{type:`percentage`,value:.5}});return this.isNavigationLocked$.pipe((0,n.filter)(e=>!e),(0,n.take)(1),(0,n.withLatestFrom)(this.context.bridgeEvent.navigation$),(0,n.tap)(([,t])=>{let{position:n}=t,r=this.pagination.value,{beginIndex:i,endIndex:a}=this.spine.locator.getVisibleSpineItemsFromPosition({position:n,threshold:{type:`percentage`,value:.5}})??{},o=this.spineItemsManager.get(i),s=this.spineItemsManager.get(a);if(!o||!s)return;let c=r.beginCfi,l=r.endCfi,{beginPageIndex:u=0}=e({spineItem:o,position:n})??{},{endPageIndex:d=0}=e({spineItem:s,position:n})??{},f=c===void 0||this.cfi.isRootCfi(c)||r.beginSpineItemIndex!==i,p=r.endSpineItemIndex!==a||l===void 0||this.cfi.isRootCfi(l),m=f?this.cfi.generateRootCfi(o.item):c,h=p?this.cfi.generateRootCfi(s.item):l,g=o.numberOfPages,_=s.numberOfPages;this.pagination.update({beginCfi:m,beginNumberOfPagesInSpineItem:g,beginPageIndexInSpineItem:u,beginSpineItemIndex:i,endCfi:h,endNumberOfPagesInSpineItem:_,endPageIndexInSpineItem:d,endSpineItemIndex:a,navigationId:t.id})}))}));(0,n.merge)(c,c.pipe(O(this.context.bridgeEvent.viewportFree$),(0,n.tap)(()=>{let{beginSpineItemIndex:e,endSpineItemIndex:t,beginPageIndexInSpineItem:n,endPageIndexInSpineItem:r}=this.pagination.value;if(n===void 0||r===void 0||e===void 0||t===void 0)return;let i=this.spineItemsManager.get(e),a=this.spineItemsManager.get(t);if(i===void 0||a===void 0)return;let o=this.spine.pages.fromSpineItemPageIndex(i,n),s=this.spine.pages.fromSpineItemPageIndex(a,r);this.pagination.update({beginCfi:o?.firstVisibleNode?this.cfi.generateCfiForSpineItemPage({spineItem:i.item,pageNode:o?.firstVisibleNode}):this.cfi.generateRootCfi(i.item),endCfi:s?.firstVisibleNode?this.cfi.generateCfiForSpineItemPage({spineItem:a.item,pageNode:s?.firstVisibleNode}):this.cfi.generateRootCfi(a.item)})}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}},Ti=class extends q{constructor(e){super();let t={...this.getDefaultSettings(),...e};this.inputSettings=t,this.outputSettingsUpdateSubject=new n.Subject,this._settings$=this.outputSettingsUpdateSubject.asObservable().pipe((0,n.shareReplay)(1)),this._settings$.subscribe()}_prepareUpdate(e){let n=(0,t.shallowMergeIfDefined)(this.inputSettings,e),r=this.getOutputSettings(n),i=!(0,t.isShallowEqual)(this.outputSettings,r);return{hasChanged:i,state:r,commit:()=>(this.inputSettings=n,this.outputSettings=r,i&&this.outputSettingsUpdateSubject.next(r),r)}}update(e){let{commit:t}=this._prepareUpdate(e);t()}get values(){if(!this.outputSettings){let{commit:e}=this._prepareUpdate(this.inputSettings);return e()}return this.outputSettings}get values$(){if(!this.outputSettings){let{commit:e}=this._prepareUpdate(this.inputSettings);e()}return this._settings$}watch(e){return this.values$.pipe(be(e),(0,n.distinctUntilChanged)(t.isShallowEqual))}destroy(){super.destroy(),this.outputSettingsUpdateSubject.complete()}},Ei=class extends Ti{constructor(e,t){super(e),this.context=t,t.watch([`manifest`,`hasVerticalWriting`]).pipe((0,n.tap)(()=>this.update(this.values)),(0,n.takeUntil)(this.destroy$)).subscribe()}getComputedSettings(e){let t=this.context.manifest,n=this.context.value.hasVerticalWriting??!1,r={computedPageTurnDirection:e.pageTurnDirection,computedPageTurnAnimation:e.pageTurnAnimation,computedPageTurnMode:e.pageTurnMode,computedPageTurnAnimationDuration:0,computedSpreadMode:At({spreadMode:e.spreadMode,manifest:t})};return t?.renditionFlow===`scrolled-continuous`&&(r.computedPageTurnMode=`scrollable`),r.computedPageTurnMode===`scrollable`&&(r.computedPageTurnDirection=`vertical`),n&&r.computedPageTurnAnimation===`slide`&&(a.warn(`pageTurnAnimation ${r.computedPageTurnAnimation} incompatible with current book, switching back to default`),r.computedPageTurnAnimation=`none`),r.computedPageTurnMode===`scrollable`?(r.computedPageTurnAnimationDuration=0,r.computedPageTurnAnimation=`none`):r.computedPageTurnAnimationDuration=e.pageTurnAnimationDuration===void 0?300:e.pageTurnAnimationDuration,r}getOutputSettings(e){let t=this.getComputedSettings(e);return{...this.outputSettings,...e,...t}}getDefaultSettings(){return{spreadMode:!1,pageTurnAnimation:`slide`,pageTurnDirection:`horizontal`,pageTurnAnimationDuration:void 0,pageTurnMode:`controlled`,snapAnimationDuration:300,navigationSnapThreshold:{type:`pixels`,value:40},numberOfAdjacentSpineItemToPreLoad:3}}},Di=class extends A{onUnload(){return n.EMPTY}onCreateDocument(){return(0,n.of)(document.createElement(`div`))}onLoadDocument(){return n.EMPTY}onLayout(){return(0,n.of)(void 0)}onRenderHeadless(){return n.EMPTY}getDocumentFrame(){}},Oi=class extends q{constructor(e,r,i,a,o,s,c){super(),this.item=e,this.containerElement=r,this.context=i,this.hookManager=a,this.renderer=o,this.settings=s,this.viewport=c,this.layoutTriggerSubject=new n.Subject,this.lastLayout=null,this.computeLayoutInformation=({isLastItem:e,horizontalOffset:n,spreadPosition:r})=>{let i=this.viewport.value.pageSize.width,a=`none`,o=n%this.viewport.absoluteViewport.width===0,s=this.context.manifest,c=wr(s)??!1;if(this.settings.values.computedSpreadMode){!c&&this.renderer.renditionLayout===`reflowable`&&!e&&(i=this.viewport.value.pageSize.width*2),!c&&this.renderer.renditionLayout===`reflowable`&&e&&o&&(i=this.viewport.value.pageSize.width*2);let n=o&&e&&c,s=(0,t.getItemSpreadPosition)(this.item);s!==void 0&&s!==r?(a=`before`,i=this.viewport.value.pageSize.width*2):n&&(a=this.context.isRTL()?`before`:`after`,i=this.viewport.value.pageSize.width*2)}return{minimumWidth:i,blankPagePosition:a}},this.adjustPositionOfElement=({right:e,left:t,top:n})=>{e===void 0?d(this.containerElement.style,`right`):u(this.containerElement.style,`right`,`${e}px`),t===void 0?d(this.containerElement.style,`left`):u(this.containerElement.style,`left`,`${t}px`),n===void 0?d(this.containerElement.style,`top`):u(this.containerElement.style,`top`,`${n}px`)},this.updateContainerLayout=({minimumWidth:e,edgeX:r,edgeY:i})=>a=>a.pipe((0,n.map)(n=>{let{width:a,height:o}=((0,t.isShallowEqual)(this.lastLayout?.pageSize,this.viewport.pageSize)?this.lastLayout:void 0)??{},{width:s=a,height:c=o}=n??{},{width:l,height:d}=this.viewport.pageSize,f=this.validateDimension(s??l,l,e),p=this.settings.values.computedPageTurnMode===`scrollable`?c??d:this.validateDimension(c??d,d,d);return this.lastLayout={width:f,height:p,pageSize:this.viewport.pageSize},u(this.containerElement.style,`width`,`${f}px`),u(this.containerElement.style,`height`,`${p}px`),this.settings.values.computedPageTurnDirection===`vertical`?(this.adjustPositionOfElement({top:i,left:r}),{width:f,height:p}):(this.adjustPositionOfElement(this.context.isRTL()?{right:r,top:0}:{left:r,top:0}),{width:f,height:p})})),this.layout=e=>{let t=xe(this.didLayout$.pipe((0,n.first)()));return this.layoutTriggerSubject.next(e),t()};let l=this.layoutTriggerSubject.pipe((0,n.switchMap)(({spreadPosition:e,horizontalOffset:t,isLastItem:r,edgeX:i,edgeY:a})=>{let{blankPagePosition:o,minimumWidth:s}=this.computeLayoutInformation({horizontalOffset:t,isLastItem:r,spreadPosition:e});this.hookManager.execute(`item.onBeforeLayout`,{blankPagePosition:o,item:this.item,minimumWidth:s});let c=this.renderer.layout({blankPagePosition:o,minPageSpread:s/this.viewport.pageSize.width,minimumWidth:s,spreadPosition:e});return(0,n.merge)((0,n.of)({type:`start`}),c.pipe(this.updateContainerLayout({minimumWidth:s,edgeX:i,edgeY:a}),(0,n.map)(e=>(this.hookManager.execute(`item.onAfterLayout`,{blankPagePosition:o,item:this.item,minimumWidth:s}),{type:`end`,data:e}))))}),(0,n.share)());this.didLayout$=l.pipe((0,n.filter)(e=>e.type===`end`),(0,n.map)(e=>e.data),(0,n.share)())}validateDimension(e,t,n){if(e<=0)return n;let r=Math.ceil(Math.max(e,n)/t)*t;return Math.max(r,t)}get layoutInfo(){let e=this.containerElement.style;return{width:e.width?parseFloat(e.width):0,height:e.height?parseFloat(e.height):0}}},ki=class extends k{constructor(e,t,i,a,o,s,c){super({isLoaded:!1,isReady:!1,isDirty:!1,isError:!1,error:void 0}),this.item=e,this.parentElement=t,this.context=i,this.settings=a,this.hookManager=o,this.index=s,this.viewport=c,this.load=()=>{this.renderer.load()},this.unload=()=>{this.renderer.unload()},this.markDirty=()=>{this.mergeCompare({isDirty:!0})},this.destroy=()=>{super.destroy(),this.containerElement.remove(),this.renderer.destroy()},this.isUsingVerticalWriting=()=>!!this.renderer.writingMode?.startsWith(`vertical`),this.layout=e=>this._layout.layout(e),this.containerElement=Ai(t,e,o),t.appendChild(this.containerElement);let l=this.settings.values.getRenderer?.(e);this.resourcesHandler=new j(e,this.settings);let u={context:i,settings:a,hookManager:o,item:e,containerElement:this.containerElement,resourcesHandler:this.resourcesHandler,viewport:this.viewport};this.renderer=l?l(u):new Di(u),this._layout=new Oi(e,this.containerElement,i,o,this.renderer,this.settings,this.viewport);let d=this.renderer.state$.pipe((0,r.tap)(({state:e,error:t})=>{this.mergeCompare({isLoaded:e===`loaded`,isError:e===`error`,error:e===`error`?t:void 0})}));this.didLayout$=this._layout.didLayout$.pipe((0,r.tap)(()=>{this.mergeCompare({isDirty:!1,isReady:this.renderer.value.state===`loaded`})}),(0,r.share)()),(0,n.merge)(d,this.didLayout$).pipe((0,r.takeUntil)(this.destroy$)).subscribe()}get isReady$(){return this.watch(`isReady`)}get element(){return this.containerElement}get readingDirection(){return this.renderer.readingDirection}get loaded$(){return this.renderer.loaded$}get unloaded$(){return this.renderer.unloaded$}get renditionLayout(){return this.renderer.renditionLayout}get layoutInfo(){return this._layout.layoutInfo}get numberOfPages(){return ii({isUsingVerticalWriting:!!this.isUsingVerticalWriting(),itemHeight:this._layout.layoutInfo.height,itemWidth:this._layout.layoutInfo.width,pageWidth:this.viewport.pageSize.width,pageHeight:this.viewport.pageSize.height,pageTurnDirection:this.settings.values.computedPageTurnDirection,pageTurnMode:this.settings.values.pageTurnMode})}},Ai=(e,t,n)=>{let r=e.ownerDocument.createElement(`div`);return r.setAttribute(`data-${_t}`,``),r.classList.add(`spineItem`),r.classList.add(`spineItem-${t.renditionLayout??`reflowable`}`),r.style.cssText=`
194
194
  position: absolute;
195
195
  overflow: hidden;
196
- `,r.dataset.isReady=`false`,n.execute(`item.onBeforeContainerAttach`,{element:r,item:t}),r},Mi=class extends q{constructor(e,r,i,a,o,s){super(),this.context=e,this.spineItemsManager=r,this.spineLocator=i,this.settings=a,this.spineLayout=o,this.viewport=s,this.forcedOpenSubject=new n.BehaviorSubject(new Map);let c=this.forcedOpenSubject.pipe((0,n.map)(e=>Array.from(e.keys()).sort((e,t)=>e-t)),(0,n.distinctUntilChanged)(t.arrayEqual),(0,n.shareReplay)({bufferSize:1,refCount:!0}));(0,n.merge)(this.context.bridgeEvent.position$,this.viewport.layout$,this.spineLayout.layout$,c,a.watch([`numberOfAdjacentSpineItemToPreLoad`])).pipe((0,n.debounceTime)(100),A(this.context.bridgeEvent.viewportFree$),(0,n.withLatestFrom)(this.context.bridgeEvent.position$,c),(0,n.map)(([,e,t])=>{let{numberOfAdjacentSpineItemToPreLoad:n}=a.values,{beginIndex:o=0,endIndex:s=0}=i.getVisibleSpineItemsFromPosition({position:e,threshold:{type:`percentage`,value:0},useAbsoluteViewport:!1})||{},c=n===1/0?0:o-n,l=n===1/0?r.items.length-1:s+n,u=Array.from({length:l-c+1},(e,t)=>c+t),d=[...t,...u];r.items.forEach((e,t)=>{d.includes(t)?e.load():e.unload()})})).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}forceOpen(e){let t=e.map(e=>typeof e==`number`?e:e.index),n=e=>{let n=this.forcedOpenSubject.value;t.forEach(t=>{let r=n.get(t)||0,i=e?r+1:r-1;i<=0?n.delete(t):n.set(t,i)}),this.forcedOpenSubject.next(n)};return n(!0),()=>{this.isDestroyed||n(!1)}}destroy(){super.destroy(),this.forcedOpenSubject.complete()}},Ni=(e,t,n)=>{let r=(n.width-t.width)/2,i=(n.height-t.height)/2;return new W({x:e.x-r,y:e.y-i})},Pi=class e extends DOMRect{constructor(...e){super(...e),this.__symbol=Symbol(`ViewportPosition`)}static from(t,n){if(n){let r=t;return new e(r.x,r.y,n.width,n.height)}let r=t;return new e(r.x,r.y,r.width,r.height)}},Fi=class{constructor({width:e,height:t}){this.__symbol=Symbol(`AbsoluteViewport`),this.width=e,this.height=t}},Ii=class{constructor({width:e,height:t}){this.__symbol=Symbol(`RelativeViewport`),this.width=e,this.height=t}},Li=({pageIndex:e,spineItemOrId:t,spineItemsManager:n})=>{let r=n.items,i=n.get(t);if(!i)return;let{currentAbsolutePage:a}=r.reduce((t,n)=>{if(t.found)return t;let r=n.numberOfPages;return i===n&&e<=r-1?{currentAbsolutePage:t.currentAbsolutePage+e,found:!0}:{...t,currentAbsolutePage:t.currentAbsolutePage+r}},{currentAbsolutePage:0,found:!1});return a},Ri=({itemHeight:e,itemWidth:t,visibleWidthOfItem:n,visibleHeightOfItem:r,threshold:i})=>{let a=n/t,o=r/e;return i.type===`percentage`?a>=i.value&&o>=i.value:n>=i.value&&r>=i.value},zi=({visibleWidthOfItem:e,visibleHeightOfItem:t,threshold:n,viewportPosition:r})=>{let i=e/r.width,a=t/r.height;return n.type===`percentage`?a>=n.value&&i>=n.value:t>=n.value&&e>=n.value},Bi=({itemPosition:{bottom:e,left:t,right:n,top:r,width:i,height:a},threshold:o,viewportPosition:s,restrictToScreen:c})=>{let l=s.x,u=s.x+(s.width-1),d=s.y,f=Math.max(s.y+(s.height-1),0),p=Math.max(0,Math.min(n,u)-Math.max(t,l)),m=Math.max(0,Math.min(e,f)-Math.max(r,d));if(p<=0||m<=0)return{visible:!1};let h=zi({threshold:o,visibleHeightOfItem:m,visibleWidthOfItem:p,viewportPosition:s});return c?{visible:h}:{visible:Ri({itemHeight:a,itemWidth:i,threshold:o,visibleHeightOfItem:m,visibleWidthOfItem:p})||h}},Vi=({position:e,spineItemsManager:t,spineLayout:n})=>{let r=t.items.find(t=>{let{left:r,right:i,bottom:a,top:o}=n.getSpineItemSpineLayoutInfo(t),s=e.x>=r&&e.x<i,c=e.y>=o&&e.y<a;return s&&c});return e.x===0&&!r?t.items[0]:r},Hi=({spineItemPosition:e,itemLayout:{left:t,top:n}})=>new U({x:t+e.x,y:n+e.y}),Ui=({position:e,threshold:t,restrictToScreen:n,spineItemsManager:r,spineLayout:i,useAbsoluteViewport:a=!0,viewport:o})=>{let s=Vi({position:e,spineItemsManager:r,spineLayout:i})||r.get(0),c=r.items.reduce((r,s)=>{let c=i.getSpineItemSpineLayoutInfo(s),l=a?o.absoluteViewport:o.relativeViewport,u=Ni(e,o.absoluteViewport,l),{visible:d}=Bi({itemPosition:c,threshold:t,viewportPosition:Pi.from(u,l),restrictToScreen:n});return d?[...r,s]:r},[]),l=c[0]??s,u=c[c.length-1]??l;if(!l||!u)return;let d=r.getSpineItemIndex(l),f=r.getSpineItemIndex(u);return{beginIndex:d??0,endIndex:f??0}},Wi=({spineItemsManager:e,context:t,spineItemLocator:n,settings:r,spineLayout:i,viewport:a})=>{let o=(e,t)=>{let{left:n,top:r}=i.getSpineItemSpineLayoutInfo(t);return new z({x:Math.max(e.x-n,0),y:Math.max(e.y-r,0)})},s=e=>Hi({spineItemPosition:new z({x:0,y:0}),itemLayout:i.getSpineItemSpineLayoutInfo(e)}),c=t=>e.items.find(e=>e.renderer.getDocumentFrame()===t),l=(t,r,i)=>{if(typeof i==`number`){let a=e.get(i);return a?n.getSpineItemPageIndexFromNode(t,r||0,a):void 0}return n.getSpineItemPageIndexFromNode(t,r||0,i)},u=({position:e,threshold:t,spineItem:r,restrictToScreen:a,useAbsoluteViewport:o=!0,viewport:s})=>{let c=r.numberOfPages,l=Array.from(Array(c)).map((e,t)=>{let a=Hi({spineItemPosition:n.getSpineItemPositionFromPageIndex({pageIndex:t,spineItem:r}),itemLayout:i.getSpineItemSpineLayoutInfo(r)});return{index:t,absolutePosition:{width:s.pageSize.width,height:s.pageSize.height,left:a.x,top:a.y,bottom:a.y+s.pageSize.height,right:a.x+s.pageSize.width}}}).reduce((n,{absolutePosition:r,index:i})=>{let c=o?s.absoluteViewport:s.relativeViewport,l=Ni(e,s.absoluteViewport,c),{visible:u}=Bi({viewportPosition:Pi.from(l,c),restrictToScreen:a,threshold:t,itemPosition:r});return u?[...n,i]:n},[]),u=l[0],d=l[l.length-1]??u;if(!(u===void 0||d===void 0))return{beginPageIndex:u,endPageIndex:d}};return{getSpinePositionFromSpineItemPosition:({spineItem:e,spineItemPosition:t})=>Hi({itemLayout:i.getSpineItemSpineLayoutInfo(e),spineItemPosition:t}),_getAbsolutePageIndexFromPageIndex:n=>Li({...n,context:t,settings:r,spineItemsManager:e,spineLayout:i}),getSpineItemPagePositionFromSpinePosition:t=>{let r=Vi({position:t,spineItemsManager:e,spineLayout:i});if(!r)return;let s=o(t,r),c=n.getSpineItemPageIndexFromPosition({itemWidth:r.layoutInfo.width,itemHeight:r.layoutInfo.height,position:s,isUsingVerticalWriting:!!r.isUsingVerticalWriting()});return{spineItem:r,spineItemPageIndex:c,spineItemPagePosition:n.getSpineItemPagePositionFromSpineItemPosition(s,c,r),pageSize:a.value.pageSize}},getSpinePositionFromSpineItem:s,getSpineItemPositionFromSpinePosition:o,getSpineItemFromPosition:t=>Vi({position:t,spineItemsManager:e,spineLayout:i}),getSpineItemFromIframe:c,getSpineItemPageIndexFromNode:l,getVisibleSpineItemsFromPosition:t=>Ui({settings:r,spineItemsManager:e,spineLayout:i,viewport:a,...t}),getVisiblePagesFromViewportPosition:e=>u({...e,viewport:a}),isPositionWithinSpineItem:(e,t)=>{let{bottom:n,left:r,right:a,top:o}=i.getSpineItemSpineLayoutInfo(t);return e.x>=r&&e.x<=a&&e.y<=n&&e.y>=o},spineItemLocator:n,getSafeSpineItemPositionFromUnsafeSpineItemPosition:(e,t)=>{let{height:n,width:r}=i.getSpineItemSpineLayoutInfo(t);return new z({x:Math.min(Math.max(0,e.x),r),y:Math.min(Math.max(0,e.y),n)})}}},Gi=class extends q{constructor(e){super(),this.spineItemsManager=e,this.states$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.pipe((0,n.map)(t=>({item:e,...t})),(0,n.distinctUntilChanged)(t.isShallowEqual))))),(0,n.share)()),this.itemResize$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>k(e.element).pipe((0,n.map)(t=>({entries:t,item:e})))))),(0,n.share)()),this.itemLoad$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.loaded$.pipe((0,n.map)(()=>e))))),(0,n.share)()),this.itemUnload$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.unloaded$.pipe((0,n.map)(()=>e))))),(0,n.share)())}},Ki=class extends q{constructor(e,t,r,i,a){super(),this.spineItemsManager=e,this.spineItemsObserver=t,this.context=r,this.settings=i,this.viewport=a,this.externalLayoutTrigger=new n.Subject,this.spineItemsRelativeLayouts=[];let o=(0,n.merge)(t.itemLoad$,t.itemUnload$).pipe((0,n.map)(()=>({immediate:!1}))),s=(0,n.merge)(this.externalLayoutTrigger,o);this.layout$=s.pipe((0,n.tap)(()=>{this.spineItemsManager.items.forEach(e=>{e.markDirty()})}),(0,n.debounce)(e=>e.immediate?(0,n.of)(void 0):(0,n.timer)(50)),(0,n.switchMap)(()=>this.spineItemsManager.items.reduce((t,o,s)=>t.pipe((0,n.concatMap)(({horizontalOffset:t,verticalOffset:c})=>{let l=t%a.absoluteViewport.width===0,u=s===e.items.length-1,d=i.values.computedPageTurnDirection===`vertical`,f=r.isRTL(),p=this.getSpreadPosition(l,f),{edgeX:m,edgeY:h}=this.getStartEdges(d,l,t,c,a.absoluteViewport.height);return o.layout({spreadPosition:p,horizontalOffset:t,isLastItem:u,edgeX:m,edgeY:h}).pipe((0,n.map)(({width:e,height:t})=>{let n=this.createSpineItemLayout(d,f,m,h,e,t,a.absoluteViewport.width);return this.spineItemsRelativeLayouts[s]=n,{horizontalOffset:m+e,verticalOffset:d?h+t:0}}))})),(0,n.of)({horizontalOffset:0,verticalOffset:0}))),(0,n.takeUntil)(this.destroy$),(0,n.share)()),this.layout$.subscribe(),this.watchForVerticalWritingUpdate()}watchForVerticalWritingUpdate(){this.spineItemsObserver.itemLoad$.pipe((0,n.tap)(e=>{this.context.update({hasVerticalWriting:e.isUsingVerticalWriting()})}),(0,n.takeUntil)(this.destroy$)).subscribe()}layout(e={}){this.externalLayoutTrigger.next(e)}getSpineItemSpineLayoutInfo(e){let t=this.spineItemsManager.getSpineItemIndex(e)??0;return this.spineItemsRelativeLayouts[t]||new V({left:0,right:0,top:0,bottom:0,width:0,height:0,x:0,y:0})}get numberOfPages(){return this.spineItemsManager.items.reduce((e,t)=>e+t.numberOfPages,0)}destroy(){super.destroy(),this.externalLayoutTrigger.complete()}getSpreadPosition(e,t){return this.settings.values.computedSpreadMode?e?t?`right`:`left`:t?`left`:`right`:`none`}getStartEdges(e,t,n,r,i){return e?{edgeX:t?0:n,edgeY:t?r:r-i}:{edgeX:n,edgeY:0}}createSpineItemLayout(e,t,n,r,i,a,o){if(e)return new V({left:n,right:i+n,top:r,bottom:a+r,height:a,width:i,x:n,y:r});let s=t?o-n-i:n;return new V({right:t?o-n:n+i,left:s,x:s,top:r,bottom:a,height:a,width:i,y:r})}},qi=class extends q{constructor(e,t,i,a,o,s,c){super(),this.context=e,this.pagination=t,this.spineItemsManager=i,this.spineItemLocator=a,this.settings=o,this.hookManager=s,this.viewport=c,this.elementSubject=new n.BehaviorSubject(void 0),this.element$=this.elementSubject.asObservable(),this.spineItemsObserver=new Gi(i),this.spineLayout=new Ki(i,this.spineItemsObserver,e,o,c),this.locator=Wi({context:e,spineItemsManager:i,spineItemLocator:a,settings:o,spineLayout:this.spineLayout,viewport:c}),this.spineItemsLoader=new Mi(this.context,i,this.locator,o,this.spineLayout,this.viewport),this.pages=new J(this.spineLayout,this.spineItemsManager,this.spineItemLocator,this.context,this.locator,this.viewport);let l=e.watch(`rootElement`).pipe((0,r.filter)(L),(0,r.tap)(e=>{let t=e.ownerDocument.createElement(`div`);t.style.cssText=`
196
+ `,r.dataset.isReady=`false`,n.execute(`item.onBeforeContainerAttach`,{element:r,item:t}),r},ji=class extends q{constructor(e,r,i,a,o,s){super(),this.context=e,this.spineItemsManager=r,this.spineLocator=i,this.settings=a,this.spineLayout=o,this.viewport=s,this.forcedOpenSubject=new n.BehaviorSubject(new Map);let c=this.forcedOpenSubject.pipe((0,n.map)(e=>Array.from(e.keys()).sort((e,t)=>e-t)),(0,n.distinctUntilChanged)(t.arrayEqual),(0,n.shareReplay)({bufferSize:1,refCount:!0}));(0,n.merge)(this.context.bridgeEvent.position$,this.viewport.layout$,this.spineLayout.layout$,c,a.watch([`numberOfAdjacentSpineItemToPreLoad`])).pipe((0,n.debounceTime)(100),O(this.context.bridgeEvent.viewportFree$),(0,n.withLatestFrom)(this.context.bridgeEvent.position$,c),(0,n.map)(([,e,t])=>{let{numberOfAdjacentSpineItemToPreLoad:n}=a.values,{beginIndex:o=0,endIndex:s=0}=i.getVisibleSpineItemsFromPosition({position:e,threshold:{type:`percentage`,value:0},useAbsoluteViewport:!1})||{},c=n===1/0?0:o-n,l=n===1/0?r.items.length-1:s+n,u=Array.from({length:l-c+1},(e,t)=>c+t),d=[...t,...u];r.items.forEach((e,t)=>{d.includes(t)?e.load():e.unload()})})).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}forceOpen(e){let t=e.map(e=>typeof e==`number`?e:e.index),n=e=>{let n=this.forcedOpenSubject.value;t.forEach(t=>{let r=n.get(t)||0,i=e?r+1:r-1;i<=0?n.delete(t):n.set(t,i)}),this.forcedOpenSubject.next(n)};return n(!0),()=>{this.isDestroyed||n(!1)}}destroy(){super.destroy(),this.forcedOpenSubject.complete()}},Mi=(e,t,n)=>{let r=(n.width-t.width)/2,i=(n.height-t.height)/2;return new H({x:e.x-r,y:e.y-i})},Ni=class e extends DOMRect{constructor(...e){super(...e),this.__symbol=Symbol(`ViewportPosition`)}static from(t,n){if(n){let r=t;return new e(r.x,r.y,n.width,n.height)}let r=t;return new e(r.x,r.y,r.width,r.height)}},Pi=class{constructor({width:e,height:t}){this.__symbol=Symbol(`AbsoluteViewport`),this.width=e,this.height=t}},Fi=class{constructor({width:e,height:t}){this.__symbol=Symbol(`RelativeViewport`),this.width=e,this.height=t}},Ii=({pageIndex:e,spineItemOrId:t,spineItemsManager:n})=>{let r=n.items,i=n.get(t);if(!i)return;let{currentAbsolutePage:a}=r.reduce((t,n)=>{if(t.found)return t;let r=n.numberOfPages;return i===n&&e<=r-1?{currentAbsolutePage:t.currentAbsolutePage+e,found:!0}:{...t,currentAbsolutePage:t.currentAbsolutePage+r}},{currentAbsolutePage:0,found:!1});return a},Li=({itemHeight:e,itemWidth:t,visibleWidthOfItem:n,visibleHeightOfItem:r,threshold:i})=>{let a=n/t,o=r/e;return i.type===`percentage`?a>=i.value&&o>=i.value:n>=i.value&&r>=i.value},Ri=({visibleWidthOfItem:e,visibleHeightOfItem:t,threshold:n,viewportPosition:r})=>{let i=e/r.width,a=t/r.height;return n.type===`percentage`?a>=n.value&&i>=n.value:t>=n.value&&e>=n.value},zi=({itemPosition:{bottom:e,left:t,right:n,top:r,width:i,height:a},threshold:o,viewportPosition:s,restrictToScreen:c})=>{let l=s.x,u=s.x+(s.width-1),d=s.y,f=Math.max(s.y+(s.height-1),0),p=Math.max(0,Math.min(n,u)-Math.max(t,l)),m=Math.max(0,Math.min(e,f)-Math.max(r,d));if(p<=0||m<=0)return{visible:!1};let h=Ri({threshold:o,visibleHeightOfItem:m,visibleWidthOfItem:p,viewportPosition:s});return c?{visible:h}:{visible:Li({itemHeight:a,itemWidth:i,threshold:o,visibleHeightOfItem:m,visibleWidthOfItem:p})||h}},Bi=({position:e,spineItemsManager:t,spineLayout:n})=>{let r=t.items.find(t=>{let{left:r,right:i,bottom:a,top:o}=n.getSpineItemSpineLayoutInfo(t),s=e.x>=r&&e.x<i,c=e.y>=o&&e.y<a;return s&&c});return e.x===0&&!r?t.items[0]:r},Vi=({spineItemPosition:e,itemLayout:{left:t,top:n}})=>new V({x:t+e.x,y:n+e.y}),Hi=({position:e,threshold:t,restrictToScreen:n,spineItemsManager:r,spineLayout:i,useAbsoluteViewport:a=!0,viewport:o})=>{let s=Bi({position:e,spineItemsManager:r,spineLayout:i})||r.get(0),c=r.items.reduce((r,s)=>{let c=i.getSpineItemSpineLayoutInfo(s),l=a?o.absoluteViewport:o.relativeViewport,u=Mi(e,o.absoluteViewport,l),{visible:d}=zi({itemPosition:c,threshold:t,viewportPosition:Ni.from(u,l),restrictToScreen:n});return d?[...r,s]:r},[]),l=c[0]??s,u=c[c.length-1]??l;if(!l||!u)return;let d=r.getSpineItemIndex(l),f=r.getSpineItemIndex(u);return{beginIndex:d??0,endIndex:f??0}},Ui=({spineItemsManager:e,context:t,spineItemLocator:n,settings:r,spineLayout:i,viewport:a})=>{let o=(e,t)=>{let{left:n,top:r}=i.getSpineItemSpineLayoutInfo(t);return new L({x:Math.max(e.x-n,0),y:Math.max(e.y-r,0)})},s=e=>Vi({spineItemPosition:new L({x:0,y:0}),itemLayout:i.getSpineItemSpineLayoutInfo(e)}),c=t=>e.items.find(e=>e.renderer.getDocumentFrame()===t),l=(t,r,i)=>{if(typeof i==`number`){let a=e.get(i);return a?n.getSpineItemPageIndexFromNode(t,r||0,a):void 0}return n.getSpineItemPageIndexFromNode(t,r||0,i)},u=({position:e,threshold:t,spineItem:r,restrictToScreen:a,useAbsoluteViewport:o=!0,viewport:s})=>{let c=r.numberOfPages,l=Array.from(Array(c)).map((e,t)=>{let a=Vi({spineItemPosition:n.getSpineItemPositionFromPageIndex({pageIndex:t,spineItem:r}),itemLayout:i.getSpineItemSpineLayoutInfo(r)});return{index:t,absolutePosition:{width:s.pageSize.width,height:s.pageSize.height,left:a.x,top:a.y,bottom:a.y+s.pageSize.height,right:a.x+s.pageSize.width}}}).reduce((n,{absolutePosition:r,index:i})=>{let c=o?s.absoluteViewport:s.relativeViewport,l=Mi(e,s.absoluteViewport,c),{visible:u}=zi({viewportPosition:Ni.from(l,c),restrictToScreen:a,threshold:t,itemPosition:r});return u?[...n,i]:n},[]),u=l[0],d=l[l.length-1]??u;if(!(u===void 0||d===void 0))return{beginPageIndex:u,endPageIndex:d}};return{getSpinePositionFromSpineItemPosition:({spineItem:e,spineItemPosition:t})=>Vi({itemLayout:i.getSpineItemSpineLayoutInfo(e),spineItemPosition:t}),_getAbsolutePageIndexFromPageIndex:n=>Ii({...n,context:t,settings:r,spineItemsManager:e,spineLayout:i}),getSpineItemPagePositionFromSpinePosition:t=>{let r=Bi({position:t,spineItemsManager:e,spineLayout:i});if(!r)return;let s=o(t,r),c=n.getSpineItemPageIndexFromPosition({itemWidth:r.layoutInfo.width,itemHeight:r.layoutInfo.height,position:s,isUsingVerticalWriting:!!r.isUsingVerticalWriting()});return{spineItem:r,spineItemPageIndex:c,spineItemPagePosition:n.getSpineItemPagePositionFromSpineItemPosition(s,c,r),pageSize:a.value.pageSize}},getSpinePositionFromSpineItem:s,getSpineItemPositionFromSpinePosition:o,getSpineItemFromPosition:t=>Bi({position:t,spineItemsManager:e,spineLayout:i}),getSpineItemFromIframe:c,getSpineItemPageIndexFromNode:l,getVisibleSpineItemsFromPosition:t=>Hi({settings:r,spineItemsManager:e,spineLayout:i,viewport:a,...t}),getVisiblePagesFromViewportPosition:e=>u({...e,viewport:a}),isPositionWithinSpineItem:(e,t)=>{let{bottom:n,left:r,right:a,top:o}=i.getSpineItemSpineLayoutInfo(t);return e.x>=r&&e.x<=a&&e.y<=n&&e.y>=o},spineItemLocator:n,getSafeSpineItemPositionFromUnsafeSpineItemPosition:(e,t)=>{let{height:n,width:r}=i.getSpineItemSpineLayoutInfo(t);return new L({x:Math.min(Math.max(0,e.x),r),y:Math.min(Math.max(0,e.y),n)})}}},Wi=class extends q{constructor(e){super(),this.spineItemsManager=e,this.states$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.pipe((0,n.map)(t=>({item:e,...t})),(0,n.distinctUntilChanged)(t.isShallowEqual))))),(0,n.share)()),this.itemResize$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>D(e.element).pipe((0,n.map)(t=>({entries:t,item:e})))))),(0,n.share)()),this.itemLoad$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.loaded$.pipe((0,n.map)(()=>e))))),(0,n.share)()),this.itemUnload$=this.spineItemsManager.items$.pipe((0,n.switchMap)(e=>(0,n.merge)(...e.map(e=>e.unloaded$.pipe((0,n.map)(()=>e))))),(0,n.share)())}},Gi=class extends q{constructor(e,t,r,i,a){super(),this.spineItemsManager=e,this.spineItemsObserver=t,this.context=r,this.settings=i,this.viewport=a,this.externalLayoutTrigger=new n.Subject,this.spineItemsRelativeLayouts=[];let o=(0,n.merge)(t.itemLoad$,t.itemUnload$).pipe((0,n.map)(()=>({immediate:!1}))),s=(0,n.merge)(this.externalLayoutTrigger,o);this.layout$=s.pipe((0,n.tap)(()=>{this.spineItemsManager.items.forEach(e=>{e.markDirty()})}),(0,n.debounce)(e=>e.immediate?(0,n.of)(void 0):(0,n.timer)(50)),(0,n.switchMap)(()=>this.spineItemsManager.items.reduce((t,o,s)=>t.pipe((0,n.concatMap)(({horizontalOffset:t,verticalOffset:c})=>{let l=t%a.absoluteViewport.width===0,u=s===e.items.length-1,d=i.values.computedPageTurnDirection===`vertical`,f=r.isRTL(),p=this.getSpreadPosition(l,f),{edgeX:m,edgeY:h}=this.getStartEdges(d,l,t,c,a.absoluteViewport.height);return o.layout({spreadPosition:p,horizontalOffset:t,isLastItem:u,edgeX:m,edgeY:h}).pipe((0,n.map)(({width:e,height:t})=>{let n=this.createSpineItemLayout(d,f,m,h,e,t,a.absoluteViewport.width);return this.spineItemsRelativeLayouts[s]=n,{horizontalOffset:m+e,verticalOffset:d?h+t:0}}))})),(0,n.of)({horizontalOffset:0,verticalOffset:0}))),(0,n.takeUntil)(this.destroy$),(0,n.share)()),this.layout$.subscribe(),this.watchForVerticalWritingUpdate()}watchForVerticalWritingUpdate(){this.spineItemsObserver.itemLoad$.pipe((0,n.tap)(e=>{this.context.update({hasVerticalWriting:e.isUsingVerticalWriting()})}),(0,n.takeUntil)(this.destroy$)).subscribe()}layout(e={}){this.externalLayoutTrigger.next(e)}getSpineItemSpineLayoutInfo(e){let t=this.spineItemsManager.getSpineItemIndex(e)??0;return this.spineItemsRelativeLayouts[t]||new z({left:0,right:0,top:0,bottom:0,width:0,height:0,x:0,y:0})}get numberOfPages(){return this.spineItemsManager.items.reduce((e,t)=>e+t.numberOfPages,0)}destroy(){super.destroy(),this.externalLayoutTrigger.complete()}getSpreadPosition(e,t){return this.settings.values.computedSpreadMode?e?t?`right`:`left`:t?`left`:`right`:`none`}getStartEdges(e,t,n,r,i){return e?{edgeX:t?0:n,edgeY:t?r:r-i}:{edgeX:n,edgeY:0}}createSpineItemLayout(e,t,n,r,i,a,o){if(e)return new z({left:n,right:i+n,top:r,bottom:a+r,height:a,width:i,x:n,y:r});let s=t?o-n-i:n;return new z({right:t?o-n:n+i,left:s,x:s,top:r,bottom:a,height:a,width:i,y:r})}},Ki=class extends q{constructor(e,t,i,a,o,s,c){super(),this.context=e,this.pagination=t,this.spineItemsManager=i,this.spineItemLocator=a,this.settings=o,this.hookManager=s,this.viewport=c,this.elementSubject=new n.BehaviorSubject(void 0),this.element$=this.elementSubject.asObservable(),this.spineItemsObserver=new Wi(i),this.spineLayout=new Gi(i,this.spineItemsObserver,e,o,c),this.locator=Ui({context:e,spineItemsManager:i,spineItemLocator:a,settings:o,spineLayout:this.spineLayout,viewport:c}),this.spineItemsLoader=new ji(this.context,i,this.locator,o,this.spineLayout,this.viewport),this.pages=new J(this.spineLayout,this.spineItemsManager,this.spineItemLocator,this.context,this.locator,this.viewport);let l=e.watch(`rootElement`).pipe((0,r.filter)(F),(0,r.tap)(e=>{let t=e.ownerDocument.createElement(`div`);t.style.cssText=`
197
197
  height: 100%;
198
198
  position: relative;
199
- `,t.className=`${G}-spine`,this.elementSubject.next(t)}));(0,n.merge)((0,n.combineLatest)([this.context.manifest$,this.element$]).pipe((0,r.tap)(([e,t])=>{if(!t)return;this.spineItemsManager.destroyItems();let n=e.spineItems.map((e,n)=>new $(e,t,this.context,this.settings,this.hookManager,n,this.viewport));this.spineItemsManager.addMany(n)})),l).pipe((0,r.takeUntil)(this.destroy$)).subscribe()}get element(){return this.elementSubject.getValue()}layout(e){this.spineLayout.layout(e)}getSpineItemSpineLayoutInfo(e){return this.spineLayout.getSpineItemSpineLayoutInfo(e)}get layout$(){return this.pages.layout$}destroy(){super.destroy(),this.pages.destroy(),this.spineItemsLoader.destroy(),this.elementSubject.getValue()?.remove(),this.elementSubject.complete()}},Ji=class extends q{constructor(e,t){super(),this.context=e,this.settings=t,this.orderedSpineItemsSubject=new n.BehaviorSubject([]),this.items$=this.orderedSpineItemsSubject.asObservable()}get(e){return typeof e==`number`?this.orderedSpineItemsSubject.value[e]:typeof e==`string`?this.orderedSpineItemsSubject.value.find(({item:t})=>t.id===e):e}comparePositionOf(e,t){let n=this.getSpineItemIndex(e)??0,r=this.getSpineItemIndex(t)??0;return n>r?`after`:n===r?`same`:`before`}getSpineItemIndex(e){let t=e instanceof $?e:this.get(e);if(!t)return;let n=this.orderedSpineItemsSubject.value.indexOf(t);return n<0?void 0:n}addMany(e){this.orderedSpineItemsSubject.next([...this.orderedSpineItemsSubject.getValue(),...e])}get items(){return this.orderedSpineItemsSubject.value}destroyItems(){this.orderedSpineItemsSubject.value.forEach(e=>{e.destroy()})}},Yi=class extends j{constructor(e,t){let r=document.createElement(`div`);r.setAttribute(`data-${pt}`,``),super({element:r,pageSize:{width:1,height:1},width:1,height:1}),this.context=e,this.settingsManager=t,this.layoutSubject=new n.Subject,this.layout$=this.layoutSubject.asObservable(),(0,n.merge)(this.settingsManager.watch([`computedSpreadMode`]).pipe((0,n.tap)(()=>{this.mergeCompare({pageSize:this.calculatePageSize(this.value)})})),this.context.watch(`rootElement`).pipe((0,n.tap)(()=>{this.layout()}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}calculatePageSize(e){let{computedSpreadMode:t}=this.settingsManager.values;return{width:t?e.width/2:e.width,height:e.height}}syncAbsoluteViewportCssVariables(e){let{style:t}=this.value.element;e.width>0?u(t,gt,`${e.width}px`):d(t,gt),e.height>0?u(t,_t,`${e.height}px`):d(t,_t)}layout(){let e={width:this.value.element.clientWidth,height:this.value.element.clientHeight};this.syncAbsoluteViewportCssVariables(e),this.mergeCompare({pageSize:this.calculatePageSize(e),...e}),this.layoutSubject.next()}get absoluteViewport(){return new Fi({width:this.value.width,height:this.value.height})}get pageSize(){return this.value.pageSize}get scaleFactor(){let e=this.absoluteViewport;return e.width?(this.value.element.getBoundingClientRect()?.width||e.width)/e.width:1}get relativeViewport(){let e=this.absoluteViewport,t=this.scaleFactor;return new Ii({width:e.width/t,height:e.height/t})}destroy(){super.destroy(),this.layoutSubject.complete()}},Xi=`${dt}-core`,Zi=e=>{let t=crypto.randomUUID(),i=new n.Subject,o=new n.Subject,s=new kr,c=new Dr,l=new Oi(e,c),d=new Or(c,l),f=new Ji(c,l),p=new wr(s,f),m=new Yi(c,l),h=li({context:c,settings:l,viewport:m}),g=new Ti(c,f),_=new qi(c,g,f,h,l,s,m),v=wi({cfi:p,context:c,spineItemsManager:f,hookManager:s,spine:_,settings:l,viewport:m}),y=new Ei(c,g,f,_,h,v.isLocked$,p);v.navigationState$.subscribe(c.bridgeEvent.viewportStateSubject),v.navigation$.subscribe(c.bridgeEvent.navigationSubject),v.position$.subscribe(c.bridgeEvent.positionSubject),g.subscribe(c.bridgeEvent.paginationSubject);let b=(e={})=>{i.next(e)},ee=e=>{let{containerElement:n,manifest:r}=e;if(c.manifest){a.warn(`loading a new book is not supported yet`);return}a.log(`load`,{options:e});let i=Qi(n,t);c.update({manifest:r,rootElement:i}),b({immediate:!0})},x=l.watch([`computedSpreadMode`]).pipe((0,r.skip)(1),(0,r.tap)(()=>b())),te=(0,n.merge)(i.pipe((0,r.tap)(e=>{let t=c.value.rootElement;t&&(u(t.style,`overflow`,`hidden`),m.layout(),_.layout(e))}),(0,r.takeUntil)(o)),x).subscribe();return S(document,Xi,Ar),{id:t,context:c,spine:_,hookManager:s,cfi:p,navigation:v,spineItemsObserver:_.spineItemsObserver,spineItemsManager:f,layout:b,load:ee,destroy:()=>{C(document,Xi),te.unsubscribe(),f.destroy(),y.destroy(),l.destroy(),g.destroy(),c.destroy(),v.destroy(),_.destroy(),d.destroy(),o.next(),o.complete(),m.destroy()},pagination:{get state(){return g.value},get state$(){return g}},settings:l,renderHeadless:e=>f.get(e)?.renderer.renderHeadless()??(0,n.of)(void 0),viewport:m,viewportState$:c.bridgeEvent.viewportState$,viewportFree$:c.bridgeEvent.viewportFree$,state$:c.manifest$.pipe((0,r.map)(e=>e?`ready`:`idle`)),features:d,$:{destroy$:o}}},Qi=(e,t)=>(e.style.cssText=`
199
+ `,t.className=`${U}-spine`,this.elementSubject.next(t)}));(0,n.merge)((0,n.combineLatest)([this.context.manifest$,this.element$]).pipe((0,r.tap)(([e,t])=>{if(!t)return;this.spineItemsManager.destroyItems();let n=e.spineItems.map((e,n)=>new ki(e,t,this.context,this.settings,this.hookManager,n,this.viewport));this.spineItemsManager.addMany(n)})),l).pipe((0,r.takeUntil)(this.destroy$)).subscribe()}get element(){return this.elementSubject.getValue()}layout(e){this.spineLayout.layout(e)}getSpineItemSpineLayoutInfo(e){return this.spineLayout.getSpineItemSpineLayoutInfo(e)}get layout$(){return this.pages.layout$}destroy(){super.destroy(),this.pages.destroy(),this.spineItemsLoader.destroy(),this.elementSubject.getValue()?.remove(),this.elementSubject.complete()}},qi=class extends q{constructor(e,t){super(),this.context=e,this.settings=t,this.orderedSpineItemsSubject=new n.BehaviorSubject([]),this.items$=this.orderedSpineItemsSubject.asObservable()}get(e){return typeof e==`number`?this.orderedSpineItemsSubject.value[e]:typeof e==`string`?this.orderedSpineItemsSubject.value.find(({item:t})=>t.id===e):e}comparePositionOf(e,t){let n=this.getSpineItemIndex(e)??0,r=this.getSpineItemIndex(t)??0;return n>r?`after`:n===r?`same`:`before`}getSpineItemIndex(e){let t=e instanceof ki?e:this.get(e);if(!t)return;let n=this.orderedSpineItemsSubject.value.indexOf(t);return n<0?void 0:n}addMany(e){this.orderedSpineItemsSubject.next([...this.orderedSpineItemsSubject.getValue(),...e])}get items(){return this.orderedSpineItemsSubject.value}destroyItems(){this.orderedSpineItemsSubject.value.forEach(e=>{e.destroy()})}},Ji=class extends k{constructor(e,t){let r=document.createElement(`div`);r.setAttribute(`data-${ht}`,``),super({element:r,pageSize:{width:1,height:1},width:1,height:1}),this.context=e,this.settingsManager=t,this.layoutSubject=new n.Subject,this.layout$=this.layoutSubject.asObservable(),(0,n.merge)(this.settingsManager.watch([`computedSpreadMode`]).pipe((0,n.tap)(()=>{this.mergeCompare({pageSize:this.calculatePageSize(this.value)})})),this.context.watch(`rootElement`).pipe((0,n.tap)(()=>{this.layout()}))).pipe((0,n.takeUntil)(this.destroy$)).subscribe()}calculatePageSize(e){let{computedSpreadMode:t}=this.settingsManager.values;return{width:t?e.width/2:e.width,height:e.height}}syncAbsoluteViewportCssVariables(e){let{style:t}=this.value.element;e.width>0?u(t,W,`${e.width}px`):d(t,W),e.height>0?u(t,G,`${e.height}px`):d(t,G)}layout(){let e={width:this.value.element.clientWidth,height:this.value.element.clientHeight};this.syncAbsoluteViewportCssVariables(e),this.mergeCompare({pageSize:this.calculatePageSize(e),...e}),this.layoutSubject.next()}get absoluteViewport(){return new Pi({width:this.value.width,height:this.value.height})}get pageSize(){return this.value.pageSize}get scaleFactor(){let e=this.absoluteViewport;return e.width?(this.value.element.getBoundingClientRect()?.width||e.width)/e.width:1}get relativeViewport(){let e=this.absoluteViewport,t=this.scaleFactor;return new Fi({width:e.width/t,height:e.height/t})}destroy(){super.destroy(),this.layoutSubject.complete()}},Yi=`${pt}-core`,Xi=e=>{let t=crypto.randomUUID(),i=new n.Subject,o=new n.Subject,s=new Or,c=new Er,l=new Ei(e,c),d=new Dr(c,l),f=new qi(c,l),p=new Cr(s,f),m=new Ji(c,l),h=si({context:c,settings:l,viewport:m}),g=new Ci(c,f),_=new Ki(c,g,f,h,l,s,m),v=Si({cfi:p,context:c,spineItemsManager:f,hookManager:s,spine:_,settings:l,viewport:m}),ee=new wi(c,g,f,_,h,v.isLocked$,p);v.navigationState$.subscribe(c.bridgeEvent.viewportStateSubject),v.navigation$.subscribe(c.bridgeEvent.navigationSubject),v.position$.subscribe(c.bridgeEvent.positionSubject),g.subscribe(c.bridgeEvent.paginationSubject);let y=(e={})=>{i.next(e)},te=e=>{let{containerElement:n,manifest:r}=e;if(c.manifest){a.warn(`loading a new book is not supported yet`);return}a.log(`load`,{options:e});let i=Zi(n,t);c.update({manifest:r,rootElement:i}),y({immediate:!0})},ne=l.watch([`computedSpreadMode`]).pipe((0,r.skip)(1),(0,r.tap)(()=>y())),re=(0,n.merge)(i.pipe((0,r.tap)(e=>{let t=c.value.rootElement;t&&(u(t.style,`overflow`,`hidden`),m.layout(),_.layout(e))}),(0,r.takeUntil)(o)),ne).subscribe();return x(document,Yi,kr),{id:t,context:c,spine:_,hookManager:s,cfi:p,navigation:v,spineItemsObserver:_.spineItemsObserver,spineItemsManager:f,layout:y,load:te,destroy:()=>{S(document,Yi),re.unsubscribe(),f.destroy(),ee.destroy(),l.destroy(),g.destroy(),c.destroy(),v.destroy(),_.destroy(),d.destroy(),o.next(),o.complete(),m.destroy()},pagination:{get state(){return g.value},get state$(){return g}},settings:l,renderHeadless:e=>f.get(e)?.renderer.renderHeadless()??(0,n.of)(void 0),viewport:m,viewportState$:c.bridgeEvent.viewportState$,viewportFree$:c.bridgeEvent.viewportFree$,state$:c.manifest$.pipe((0,r.map)(e=>e?`ready`:`idle`)),features:d,$:{destroy$:o}}},Zi=(e,t)=>(e.style.cssText=`
200
200
  ${e.style.cssText}
201
201
  background-color: white;
202
202
  position: relative;
203
- `,e.classList.add(`${G}-reader`),e.setAttribute(ft,t),e.setAttribute(`data-prose-reader-container`,t),e),$i=Qn(De(nr(Ee(ue(qn(tr(pr(tn(tt(It(de(he(Un(Ft(er(Zi)))))))))))))))),ea=e=>t=>e(t),ta=5e3;e.AbstractSpinePosition=H,e.CSS_VAR_ABSOLUTE_VIEWPORT_HEIGHT=_t,e.CSS_VAR_ABSOLUTE_VIEWPORT_WIDTH=gt,e.CfiManager=wr,e.Context=Dr,e.ControlledNavigationController=Pr,e.DestroyableClass=q,e.DocumentRenderer=ke,e.Features=Or,e.HTML_ATTRIBUTE_DATA_READER_ID=ft,e.HTML_PREFIX=G,e.HTML_PREFIX_SCROLL_NAVIGATOR=mt,e.HTML_PREFIX_SPINE_ITEM=ht,e.HTML_PREFIX_VIEWPORT=pt,e.HTML_STYLE_PREFIX=dt,e.HookManager=kr,e.InternalNavigator=ti,e.LayoutEntry=R,e.Locker=Kr,e.PAGINATION_UPDATE_AFTER_VIEWPORT_ADJUSTMENT_DEBOUNCE=ut,e.PROSE_READER_NAMESPACE=ct,e.Pages=J,e.Pagination=Ti,e.PaginationController=Ei,e.ReactiveEntity=j,e.ResourceHandler=M,e.ResourcesLocator=an,e.ScrollNavigationController=lr,e.ScrollPosition=sr,e.SettingsManager=Di,e.Spine=qi,e.SpineItem=$,e.SpineItemPageLayout=nt,e.SpineItemPageSpineLayout=rt,e.SpineItemPosition=z,e.SpineItemSpineLayout=V,e.SpineItemsManager=Ji,e.SpineItemsObserver=Gi,e.SpinePosition=U,e.UnboundScrollPosition=cr,e.UnboundSpineItemPagePosition=B,e.UnboundSpinePosition=W,e.VIEWPORT_ADJUSTMENT_THROTTLE=lt,e.Viewport=Yi,e.consolidate=rn,e.createReader=$i,e.deferIdle=xe,e.deferNextResult=ye,e.generateCfiForSpineItemPage=gr,e.generateCfiFromRange=_r,e.generateRootCfi=mr,e.getAttributeValueFromString=T,e.getBase64FromBlob=ge,e.getFrameViewportInfo=D,e.getItemAnchor=vr,e.htmlEnhancer=tt,e.idle=be,e.injectCSS=S,e.injectCSSToFrame=oe,e.isDefined=L,e.isHtmlElement=re,e.isHtmlTagElement=ie,e.isRootCfi=br,Object.defineProperty(e,"isShallowEqual",{enumerable:!0,get:function(){return t.isShallowEqual}}),e.layoutEnhancer=Ft,e.mapKeysTo=ve,e.observeBookBoundaryReached=(e,{itemReadinessTimeoutMs:t=ta}={})=>Vt(e).pipe((0,n.switchMap)(r=>{if(r.boundary===`start`)return(0,n.of)(r);let i=e.spineItemsManager.items,a=i[i.length-1];return a?a.value.isReady?(0,n.of)(r):a.isReady$.pipe((0,n.filter)(Boolean),(0,n.first)(),(0,n.map)(()=>r),t===1/0?n.identity:(0,n.timeout)({first:t,with:()=>n.EMPTY}),Bt(e.navigation)):n.EMPTY}),(0,n.share)()),e.observeIntersection=Ce,e.observeMutation=Se,e.observeNextSettledNavigation=zt,e.observeResize=k,e.observeSettledNavigation=Rt,e.paginationEnhancer=Un,e.parseCfi=Sr,e.pick=_e,e.removeAttributeIfPresent=c,e.removeCSS=se,e.removeStylePropertyIfPresent=d,e.resolveCfi=Cr,e.rootEnhancer=ea,e.setAttributeIfChanged=s,e.setPropertyIfChanged=l,e.setStylePropertyIfChanged=u,e.shouldEnableSpreadModeForViewport=Mt,e.shouldUseComputedSpreadModeForViewport=Nt,e.spinePositionToSpineItemSpineLayout=sn,e.takeUntilNextNavigationSettled=Bt,e.upsertCSSToFrame=E,e.waitForFrameLoad=ce,e.waitForFrameReady=le,e.waitForNavigationSettled=Lt,e.waitForSwitch=A,e.watchKeys=O});
203
+ `,e.classList.add(`${U}-reader`),e.setAttribute(mt,t),e.setAttribute(`data-prose-reader-container`,t),e),Qi=Zn(ke(tr(Oe(pe(Kn(er(fr(tn(rt(It(me(_e(Hn(Ft($n(Xi)))))))))))))))),$i=e=>t=>e(t),ea=5e3;e.AbstractSpinePosition=B,e.CSS_VAR_ABSOLUTE_VIEWPORT_HEIGHT=G,e.CSS_VAR_ABSOLUTE_VIEWPORT_WIDTH=W,e.CfiManager=Cr,e.Context=Er,e.ControlledNavigationController=Nr,e.DestroyableClass=q,e.DocumentRenderer=A,e.Features=Dr,e.HTML_ATTRIBUTE_DATA_READER_ID=mt,e.HTML_PREFIX=U,e.HTML_PREFIX_SCROLL_NAVIGATOR=gt,e.HTML_PREFIX_SPINE_ITEM=_t,e.HTML_PREFIX_VIEWPORT=ht,e.HTML_STYLE_PREFIX=pt,e.HookManager=Or,e.InternalNavigator=ei,e.LayoutEntry=I,e.Locker=Gr,e.PAGINATION_UPDATE_AFTER_VIEWPORT_ADJUSTMENT_DEBOUNCE=ft,e.PROSE_READER_NAMESPACE=ut,e.Pages=J,e.Pagination=Ci,e.PaginationController=wi,e.ReactiveEntity=k,e.ResourceHandler=j,e.ResourcesLocator=an,e.ScrollNavigationController=cr,e.ScrollPosition=or,e.SettingsManager=Ti,e.Spine=Ki,e.SpineItem=ki,e.SpineItemPageLayout=it,e.SpineItemPageSpineLayout=at,e.SpineItemPosition=L,e.SpineItemSpineLayout=z,e.SpineItemsManager=qi,e.SpineItemsObserver=Wi,e.SpinePosition=V,e.UnboundScrollPosition=sr,e.UnboundSpineItemPagePosition=R,e.UnboundSpinePosition=H,e.VIEWPORT_ADJUSTMENT_THROTTLE=dt,e.Viewport=Ji,e.consolidate=rn,e.createReader=Qi,e.deferIdle=Ce,e.deferNextResult=xe,e.generateCfiForSpineItemPage=hr,e.generateCfiFromRange=gr,e.generateRootCfi=pr,e.getAttributeValueFromString=ce,e.getBase64FromBlob=ve,e.getFrameViewportInfo=w,e.getItemAnchor=_r,e.htmlEnhancer=rt,e.idle=Se,e.injectCSS=x,e.injectCSSToFrame=le,e.isDefined=F,e.isHtmlElement=b,e.isHtmlTagElement=ae,e.isRootCfi=yr,Object.defineProperty(e,"isShallowEqual",{enumerable:!0,get:function(){return t.isShallowEqual}}),e.layoutEnhancer=Ft,e.mapKeysTo=be,e.observeBookBoundaryReached=(e,{itemReadinessTimeoutMs:t=ea}={})=>Vt(e).pipe((0,n.switchMap)(r=>{if(r.boundary===`start`)return(0,n.of)(r);let i=e.spineItemsManager.items,a=i[i.length-1];return a?a.value.isReady?(0,n.of)(r):a.isReady$.pipe((0,n.filter)(Boolean),(0,n.first)(),(0,n.map)(()=>r),t===1/0?n.identity:(0,n.timeout)({first:t,with:()=>n.EMPTY}),Bt(e.navigation)):n.EMPTY}),(0,n.share)()),e.observeIntersection=Te,e.observeMutation=we,e.observeNextSettledNavigation=zt,e.observeResize=D,e.observeSettledNavigation=Rt,e.paginationEnhancer=Hn,e.parseCfi=xr,e.pick=ye,e.removeAttributeIfPresent=c,e.removeCSS=ue,e.removeStylePropertyIfPresent=d,e.resolveCfi=Sr,e.rootEnhancer=$i,e.setAttributeIfChanged=s,e.setPropertyIfChanged=l,e.setStylePropertyIfChanged=u,e.shouldEnableSpreadModeForViewport=Mt,e.shouldUseComputedSpreadModeForViewport=Nt,e.spinePositionToSpineItemSpineLayout=sn,e.takeUntilNextNavigationSettled=Bt,e.upsertCSSToFrame=C,e.waitForFrameLoad=de,e.waitForFrameReady=fe,e.waitForNavigationSettled=Lt,e.waitForSwitch=O,e.watchKeys=E});
204
204
  //# sourceMappingURL=index.umd.cjs.map