@prose-reader/react-reader 1.200.0 → 1.201.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.
package/dist/index.js CHANGED
@@ -300,7 +300,7 @@ const Q = k.ActionTrigger, S = () => {
300
300
  e.action && /* @__PURE__ */ n(A.ActionTrigger, { children: e.action.label }),
301
301
  ((t = e.meta) == null ? void 0 : t.closable) && /* @__PURE__ */ n(A.CloseTrigger, {})
302
302
  ] });
303
- } }) }), vn = "@prose-reader/react-reader", kn = "1.199.0", Sn = m(
303
+ } }) }), vn = "@prose-reader/react-reader", kn = "1.200.0", Sn = m(
304
304
  ({
305
305
  open: e,
306
306
  setOpen: t
@@ -1,2 +1,2 @@
1
- (function(b,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("reactjrx"),require("rxjs"),require("@chakra-ui/react"),require("react-icons/lu"),require("react-dom"),require("react-icons/bs"),require("@prose-reader/core"),require("react-icons/rx"),require("react-icons/hi"),require("rc-slider"),require("rc-slider/assets/index.css"),require("react-icons/io"),require("react-icons/md")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","reactjrx","rxjs","@chakra-ui/react","react-icons/lu","react-dom","react-icons/bs","@prose-reader/core","react-icons/rx","react-icons/hi","rc-slider","rc-slider/assets/index.css","react-icons/io","react-icons/md"],e):(b=typeof globalThis<"u"?globalThis:b||self,e(b["prose-react-reader"]={},b.jsxRuntime,b.React,b.reactjrx,b.rxjs,b.react,b.lu,b.reactDom,b.bs,b.core,b.rx,b.hi,b.RcSlider,null,b.io,b.md))})(this,function(b,e,d,f,u,s,x,J,H,j,N,R,ee,qe,Q,G){"use strict";function oe(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const l=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(n,t,l.get?l:{enumerable:!0,get:()=>o[t]})}}return n.default=o,Object.freeze(n)}const w=oe(d),F=d.createContext({reader:void 0,quickMenuSignal:f.signal({default:!1})}),ne=d.memo(({children:o,reader:n,quickMenuOpen:t,onQuickMenuOpenChange:l})=>{const[,r]=f.useSignal({default:t}),i=f.useLiveRef(l),c=d.useMemo(()=>({quickMenuSignal:r,reader:n}),[r,n]);return d.useEffect(()=>{r.setValue(t)},[t,r]),f.useSubscribe(()=>r.subject.pipe(u.tap(i.current)),[r,i]),e.jsx(F.Provider,{value:c,children:o})}),se=w.forwardRef(function(n,t){return e.jsx(s.IconButton,{variant:"ghost","aria-label":"Close",ref:t,...n,children:n.children??e.jsx(x.LuX,{})})}),D=w.forwardRef(function(n,t){const{children:l,portalled:r=!0,portalRef:i,backdrop:c=!0,...g}=n;return e.jsxs(s.Portal,{disabled:!r,container:i,children:[c&&e.jsx(s.Dialog.Backdrop,{}),e.jsx(s.Dialog.Positioner,{children:e.jsx(s.Dialog.Content,{ref:t,...g,asChild:!1,children:l})})]})}),B=w.forwardRef(function(n,t){return e.jsx(s.Dialog.CloseTrigger,{position:"absolute",top:"2",insetEnd:"2",...n,asChild:!0,children:e.jsx(se,{size:"sm",ref:t,children:n.children})})}),z=s.Dialog.Root,E=s.Dialog.Footer,A=s.Dialog.Header,L=s.Dialog.Body;s.Dialog.Backdrop;const M=s.Dialog.Title;s.Dialog.Description,s.Dialog.Trigger;const m=s.Dialog.ActionTrigger,T=()=>{const{reader:o}=d.useContext(F);return o},K=o=>!!o&&"__PROSE_READER_ENHANCER_SEARCH"in o,q=o=>!!o&&"__PROSE_READER_ENHANCER_BOOKMARKS"in o,W=o=>!!o&&"__PROSE_READER_ENHANCER_ANNOTATIONS"in o,te=d.memo(({onNavigate:o})=>{const n=T(),t=W(n)?n:void 0,l=f.useObserve(()=>t==null?void 0:t.annotations.highlights$.pipe(u.switchMap(i=>t.pagination.locate(i))),[t]),r=(i,c)=>{var g;return e.jsx(s.List.Item,{children:e.jsxs(s.Link,{href:"#",onClick:()=>{o(),n==null||n.navigation.goToCfi(i.cfi??"")},children:[(i.contents??[])[0]?e.jsx(s.List.Indicator,{asChild:!0,children:e.jsx(x.LuNotebookPen,{})}):e.jsx(s.List.Indicator,{asChild:!0,visibility:"hidden",children:e.jsx(x.LuNotebookPen,{})}),e.jsxs(s.Stack,{gap:0,children:[e.jsx(s.Text,{lineClamp:2,fontSize:"md",children:i.selectionAsText?i.selectionAsText??"":e.jsx("i",{children:e.jsx("b",{children:"unknown (not loaded)"})})}),e.jsx(s.Text,{fontStyle:"italic",fontWeight:"bold",fontSize:"sm",children:`Book page: ${((g=i.meta)==null?void 0:g.absolutePageIndex)!==void 0?i.meta.absolutePageIndex+1:"unknown (not loaded)"}`})]})]})},c)};return e.jsx(s.List.Root,{overflowY:"auto",gap:3,pt:4,variant:"plain",children:l==null?void 0:l.map((i,c)=>r(i,c))})}),le=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{height:"100%",children:[e.jsx(A,{children:e.jsx(M,{children:"Annotations"})}),e.jsx(L,{flex:1,children:e.jsx(te,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),re=d.memo(()=>{const o=T(),n=q(o)?o:void 0,t=f.useObserve(()=>o==null?void 0:o.spine.element$,[o]),l=f.useObserve(()=>n==null?void 0:n.bookmarks.pages$,[n]),r=f.useObserve(()=>n==null?void 0:n.bookmarks.bookmarks$,[n]),i=f.useObserve(()=>o==null?void 0:o.pagination.locate(r??[]),[o,r]);return t?e.jsx(e.Fragment,{children:J.createPortal(l==null?void 0:l.map(({isBookmarkable:c,absolutePosition:{left:g,top:p,width:a}},k)=>{const h=i==null?void 0:i.find(C=>{var S;return((S=C.meta)==null?void 0:S.absolutePageIndex)===k});return c?e.jsx(s.Presence,{present:!0,lazyMount:!0,animationName:{_open:"fade-in",_closed:"fade-out"},animationDuration:"moderate",children:e.jsx(s.Box,{"data-bookmark-area":!0,position:"absolute",left:g+a,transform:"translateX(-100%)",top:p,p:2,children:h?e.jsx(s.IconButton,{"aria-label":"bookmark",opacity:.5,_hover:{opacity:1},onClick:()=>{h&&(n==null||n.bookmarks.delete(h==null?void 0:h.id))},size:"lg",variant:"ghost",_icon:{boxSize:"36px"},children:e.jsx(H.BsBookmarkXFill,{})}):e.jsx(s.IconButton,{"aria-label":"bookmark",onClick:()=>{n==null||n.bookmarks.bookmark(k)},size:"lg",bgColor:"white",opacity:.5,_hover:{opacity:1},variant:"ghost",_icon:{boxSize:"36px"},children:e.jsx(H.BsBookmarkPlus,{})})})},k):null}),t)}):null}),ie=d.memo(({onNavigate:o})=>{const n=T(),t=q(n)?n:void 0,l=f.useObserve(()=>t==null?void 0:t.bookmarks.bookmarks$.pipe(u.switchMap(i=>t.pagination.locate(i))),[t]),r=(i,c)=>{var g,p,a,k,h;return e.jsxs(s.List.Item,{justifyContent:"space-between",alignItems:"center",children:[e.jsx(s.Link,{href:"#",onClick:()=>{o(),n==null||n.navigation.goToCfi(i.cfi??"")},children:e.jsxs(s.Stack,{gap:0,children:[e.jsx(s.Text,{fontSize:"md",children:`Book page: ${((g=i.meta)==null?void 0:g.absolutePageIndex)!==void 0?i.meta.absolutePageIndex+1:"unknown"}`}),e.jsx(s.Text,{fontStyle:"italic",fontWeight:"bold",fontSize:"sm",truncate:!0,lineClamp:2,children:(a=(p=i.meta)==null?void 0:p.startNode)!=null&&a.textContent?(h=(k=i.meta)==null?void 0:k.startNode)==null?void 0:h.textContent:"..."})]})}),e.jsx(s.Button,{colorPalette:"red",variant:"solid",size:"xs",onClick:()=>{t==null||t.bookmarks.delete(i.id)},children:"Delete"})]},c)};return e.jsx(s.List.Root,{overflowY:"auto",gap:3,variant:"plain",overflow:"auto",children:l==null?void 0:l.map((i,c)=>r(i,c))})}),ae=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{height:"100%",children:[e.jsx(A,{children:e.jsx(M,{children:"Bookmarks"})}),e.jsx(L,{children:e.jsx(ie,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),V=s.createToaster({placement:"bottom-end",pauseOnPageIdle:!0}),ce=()=>e.jsx(s.Portal,{children:e.jsx(s.Toaster,{toaster:V,insetInline:{mdDown:"4"},children:o=>{var n;return e.jsxs(s.Toast.Root,{width:{md:"sm"},children:[o.type==="loading"?e.jsx(s.Spinner,{size:"sm",color:"blue.solid"}):e.jsx(s.Toast.Indicator,{}),e.jsxs(s.Stack,{gap:"1",flex:"1",maxWidth:"100%",children:[o.title&&e.jsx(s.Toast.Title,{children:o.title}),o.description&&e.jsx(s.Toast.Description,{children:o.description})]}),o.action&&e.jsx(s.Toast.ActionTrigger,{children:o.action.label}),((n=o.meta)==null?void 0:n.closable)&&e.jsx(s.Toast.CloseTrigger,{})]})}})}),de="@prose-reader/react-reader",he="1.199.0",ge=d.memo(({open:o,setOpen:n})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:t=>n(t.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{children:[e.jsx(A,{children:e.jsx(M,{children:"Help"})}),e.jsxs(L,{overflowY:"auto",flex:1,children:[e.jsx(s.Heading,{mb:2,as:"h3",size:"lg",children:"Shortcuts"}),e.jsxs(s.HStack,{mb:1,children:[e.jsx(s.Kbd,{children:e.jsx(x.LuArrowBigRight,{})})," ",e.jsx(s.Text,{children:"Navigate to right page"})]}),e.jsxs(s.HStack,{mb:1,children:[e.jsx(s.Kbd,{children:e.jsx(x.LuArrowBigLeft,{})})," ",e.jsx(s.Text,{children:"Navigate to left page"})]}),e.jsx(s.Heading,{mb:2,mt:4,as:"h3",size:"lg",children:"About"}),e.jsxs(s.Text,{children:[de," version: ",he]})]}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),O=()=>{const o=T();return f.useObserve(()=>o?u.combineLatest([o.pagination.state$,o.context.state$]).pipe(u.map(([n,t])=>{var r;const l=(r=t.manifest)==null?void 0:r.spineItems.every(i=>{var c;return(c=i.mediaType)==null?void 0:c.startsWith("image/")});return{...n,hasChapters:!t.isFullyPrePaginated&&!l}})):u.NEVER,[o])},pe=()=>{const o=O(),n=Math.floor(((o==null?void 0:o.percentageEstimateOfBook)??0)*100),t=n>0?n:1;return(o==null?void 0:o.percentageEstimateOfBook)===void 0?null:e.jsx(s.Box,{position:"absolute",right:0,bottom:0,p:2,color:"black",children:e.jsxs(s.Text,{fontSize:"sm",children:[t," %"]})})},fe=()=>{const[o,n]=d.useState(new Date);return d.useEffect(()=>{const t=setInterval(()=>{n(new Date)},6e4);return()=>clearInterval(t)},[]),o},ue=o=>{const n=fe();return e.jsx(s.Text,{fontSize:"xs",...o,children:n.toLocaleTimeString(navigator.language,{hour:"2-digit",minute:"2-digit"})})},Y=()=>{const{quickMenuSignal:o}=d.useContext(F);return[f.useSignalValue(o),o.setValue,o]},be=()=>{const[o]=Y();return e.jsx(s.Box,{position:"absolute",left:0,bottom:0,p:2,color:o?void 0:"colorPalette.contrast",children:e.jsx(ue,{})})},ke=()=>{const o=T();f.useSubscribe(()=>o==null?void 0:o.links$.subscribe(n=>{if(n.type==="click"&&j.isHtmlTagElement(n.target,"a")){if(!n.target.href)return;const t=new URL(n.target.href);window.location.host!==t.host&&confirm("You are going to be redirected to external link")&&window.open(n.target.href,"__blank")}}),[o])},$=f.signal({default:void 0}),Ce=()=>{const o=T();f.useSubscribe(()=>o==null?void 0:o.zoom.isZooming$.pipe(u.switchMap(n=>{if(!n)return u.EMPTY;const t=new u.Subject;return $.setValue({key:"zoom",title:"Zooming",duration:999999,abort:t}),u.NEVER.pipe(u.finalize(()=>{t.next(),t.complete()}))})),[o])},Se=()=>{const o=T();f.useSubscribe(()=>o==null?void 0:o.settings.values$.pipe(u.map(({fontScale:n})=>n),u.distinctUntilChanged(),u.skip(1),u.tap(n=>{$.setValue({key:"fontScaleChange",title:"Font size changed",description:`${n*100} %`})})),[o])},ve=()=>{Se(),Ce(),f.useSubscribe(()=>$.subject.pipe(u.filter(f.isDefined),u.mergeMap(o=>{const n=o.duration??3e3,t=V.create({title:o.title,description:o.description,duration:n}),l=$.subject.pipe(u.skip(1),u.filter(r=>!!o.key&&(r==null?void 0:r.key)===o.key));return u.merge(u.timer(n),o.abort??u.NEVER,l).pipe(u.first(),u.finalize(()=>{V.dismiss(t)}))})))},xe=w.forwardRef(function(n,t){const{showArrow:l,children:r,portalled:i=!0,content:c,portalRef:g,...p}=n;return e.jsxs(s.Popover.Root,{...p,positioning:{...p.positioning,gutter:4},children:[e.jsx(s.Popover.Trigger,{asChild:!0,children:r}),e.jsx(s.Portal,{disabled:!i,container:g,children:e.jsx(s.Popover.Positioner,{children:e.jsxs(s.Popover.Content,{width:"auto",px:"2",py:"1",textStyle:"xs",rounded:"sm",ref:t,children:[l&&e.jsx(s.Popover.Arrow,{children:e.jsx(s.Popover.ArrowTip,{})}),c]})})})]})}),Te=w.forwardRef(function(n,t){const{children:l,...r}=n;return e.jsx(xe,{content:l,...r,ref:t,children:e.jsx(s.IconButton,{variant:"ghost","aria-label":"info",size:"2xs",colorPalette:"gray",children:e.jsx(R.HiOutlineInformationCircle,{})})})}),Ie=w.forwardRef(function(n,t){return e.jsx(s.Progress.Track,{...n,ref:t,children:e.jsx(s.Progress.Range,{})})});w.forwardRef(function(n,t){const{children:l,info:r,...i}=n;return e.jsxs(s.Progress.Label,{...i,ref:t,children:[l,r&&e.jsx(Te,{children:r})]})});const Pe=s.Progress.Root,ye=s.Progress.ValueText,U=()=>{const o=O(),n=(o==null?void 0:o.numberOfTotalPages)===1,t=((o==null?void 0:o.beginNumberOfPagesInSpineItem)??0)>1,l=((o==null?void 0:o.endNumberOfPagesInSpineItem)??0)>1,r=(o!=null&&o.hasChapters?o==null?void 0:o.beginPageIndexInSpineItem:o==null?void 0:o.beginAbsolutePageIndex)??0,i=(o!=null&&o.hasChapters?o==null?void 0:o.endPageIndexInSpineItem:o==null?void 0:o.endAbsolutePageIndex)??0,[c=0,g=0]=[r,i].sort((k,h)=>k-h),p=(o==null?void 0:o.beginPageIndexInSpineItem)!==(o==null?void 0:o.endPageIndexInSpineItem)||(o==null?void 0:o.beginSpineItemIndex)!==(o==null?void 0:o.endSpineItemIndex),a=o!=null&&o.hasChapters?o==null?void 0:o.beginNumberOfPagesInSpineItem:o==null?void 0:o.numberOfTotalPages;return{hasOnlyOnePage:n,beginPageIndex:r,endPageIndex:i,isBeginWithinChapter:t,isEndWithinChapter:l,beginAndEndAreDifferent:p,totalApproximatePages:a,leftPageIndex:c,rightPageIndex:g}},we=()=>{const o=O(),{hasOnlyOnePage:n,leftPageIndex:t,rightPageIndex:l,totalApproximatePages:r,beginAndEndAreDifferent:i}=U(),c=Math.round(((o==null?void 0:o.percentageEstimateOfBook)??0)*100),g=a=>a!=null&&a.subChapter?`${a.title} / ${g(a.subChapter)}`:(a==null?void 0:a.title)||"",p=g(o==null?void 0:o.beginChapterInfo);return e.jsxs(s.Stack,{alignItems:"center",gap:1,maxW:"100%",overflow:"auto",children:[e.jsx(Pe,{value:c,size:"xs",width:150,children:e.jsxs(s.HStack,{justifyContent:"space-between",children:[e.jsx(Ie,{width:110}),e.jsx(ye,{children:`${c}%`})]})}),e.jsx(s.Text,{truncate:!0,maxWidth:"100%",fontSize:"sm",mt:1,children:p?`Chapter: ${p}`:" "}),!n&&e.jsxs(s.HStack,{children:[e.jsx(s.Text,{fontSize:"xs",children:i?`${t+1} - ${l+1} of ${r}`:`${t+1} of ${r}`}),!!(o!=null&&o.hasChapters)&&e.jsxs(e.Fragment,{children:[e.jsx(s.Text,{children:"-"}),e.jsxs(s.Text,{fontSize:"xs",children:["(",((o==null?void 0:o.beginAbsolutePageIndex)??0)+1,")"]})]})]})]})},X=d.memo(({children:o,position:n,...t})=>e.jsx(s.Presence,{display:"flex",flexDirection:"row",width:"100%",position:"absolute",...n==="bottom"?{bottom:0}:{top:0},animationName:n==="bottom"?{_open:"slide-from-bottom, fade-in",_closed:"slide-to-bottom, fade-out"}:{_open:"slide-from-top, fade-in",_closed:"slide-to-top, fade-out"},animationDuration:"moderate",bgColor:"bg.panel",alignItems:"center",justifyContent:"center",shadow:"md",p:4,...t,children:o})),Oe=s.chakra(ee),De=d.memo(o=>e.jsx(s.Box,{display:"contents",css:{"--bg":"colors.bg","--bg-emphasized":"colors.bg.emphasized","--color-solid":"colors.colorPalette.solid"},children:e.jsx(Oe,{keyboard:!1,style:{padding:0},css:{"& > .rc-slider-handle:focus-visible":{boxShadow:"0 0 0 2px var(--color-solid) !important"},"& > .rc-slider-handle:active":{boxShadow:"0 0 5px var(--color-solid) !important"},"& > .rc-slider-handle.rc-slider-handle-dragging":{boxShadow:"0 0 0 3px var(--color-solid) !important"}},styles:{rail:{height:"8px",top:"50%",transform:"translateY(-50%)",backgroundColor:"var(--bg-emphasized)"},track:{height:"8px",top:"50%",transform:"translateY(-50%)",backgroundColor:"var(--color-solid)"},handle:{width:"24px",height:"24px",top:"50%",borderColor:"var(--color-solid)",transform:`translate(${o.reverse?"50%":"-50%"}, -50%)`,backgroundColor:"var(--bg)",marginTop:"0px"}},...o})})),Be=()=>{const o=O(),n=o==null?void 0:o.isUsingSpread,{beginPageIndex:t,totalApproximatePages:l=0}=U(),r=n?Math.floor((t||0)/2):t,[i,c]=f.useSignal({default:r||0}),g=0,p=Math.max(0,n?Math.floor((l-1)/2):l-1);return d.useEffect(()=>{c.setValue(r||0)},[r,c]),{value:i,valueSignal:c,min:g,max:p}},ze=o=>{const n=T(),t=O(),{manifest:l}=f.useObserve(()=>n==null?void 0:n.context.state$,[n])??{},r=(l==null?void 0:l.readingDirection)==="rtl",i=t==null?void 0:t.isUsingSpread,{totalApproximatePages:c=0,isBeginWithinChapter:g}=U(),p=1,a=g,{value:k,valueSignal:h,min:C,max:S}=Be(),P=d.useCallback(y=>{const[v=0]=Array.isArray(y)?y:[y];h.setValue(v);const _=i?Math.floor(v)*2:Math.floor(v);a?n==null||n.navigation.goToPageOfSpineItem({pageIndex:_,spineItemId:n.pagination.getState().beginSpineItemIndex??0,animation:!1}):n==null||n.navigation.goToAbsolutePageIndex({absolutePageIndex:_,animation:!1})},[n,i,h,a]);return f.useSubscribe(()=>n==null?void 0:n.navigation.throttleLock({duration:100,trigger:h.subject}),[n,h]),c===1||i&&c===2?e.jsx(s.Box,{style:o.style}):e.jsx(De,{value:[k],max:S,min:C,reverse:r,step:p,onChange:P,...o})},Ee=d.memo(({open:o,onItemClick:n})=>{const t=T(),l=f.useObserve(()=>t==null?void 0:t.navigation.state$,[t]),r=f.useObserve(()=>t==null?void 0:t.settings.values$,[t]),i=(r==null?void 0:r.computedPageTurnDirection)==="vertical",[c,g]=d.useState(!0);return e.jsx(X,{present:o,position:"bottom",children:e.jsxs(s.Stack,{flex:1,overflow:"auto",children:[e.jsxs(s.HStack,{flex:1,alignItems:"center",justifyContent:"center",children:[e.jsx(s.IconButton,{"aria-label":"left",size:"lg",variant:"ghost",flexShrink:0,onClick:()=>t==null?void 0:t.navigation.goToLeftOrTopSpineItem(),disabled:!(l!=null&&l.canGoLeftSpineItem)&&!(l!=null&&l.canGoTopSpineItem),children:i?e.jsx(N.RxDoubleArrowUp,{}):e.jsx(N.RxDoubleArrowLeft,{})}),e.jsxs(s.Stack,{flex:1,maxW:400,gap:2,alignItems:"center",overflow:"auto",px:4,children:[e.jsx(we,{}),e.jsx(ze,{style:{width:"100%",maxWidth:"300px",height:"35px"}})]}),e.jsx(s.IconButton,{"aria-label":"right",size:"lg",flexShrink:0,variant:"ghost",disabled:!(l!=null&&l.canGoRightSpineItem)&&!(l!=null&&l.canGoBottomSpineItem),onClick:()=>{t==null||t.navigation.goToRightOrBottomSpineItem()},children:i?e.jsx(N.RxDoubleArrowDown,{}):e.jsx(N.RxDoubleArrowRight,{})})]}),e.jsx(s.HStack,{alignItems:"center",justifyContent:"center",children:e.jsxs(s.Collapsible.Root,{open:c,flex:1,onOpenChange:({open:p})=>{g(p)},children:[e.jsx(s.Collapsible.Trigger,{paddingY:"3",width:"100%",display:"flex",justifyContent:"center",children:e.jsx(x.LuChevronDown,{style:{transform:c?"rotate(0deg)":"rotate(180deg)"}})}),e.jsxs(s.Collapsible.Content,{display:"flex",justifyContent:"center",children:[e.jsx(s.IconButton,{"aria-label":"Help",size:"lg",variant:"ghost",onClick:()=>n("help"),children:e.jsx(x.LuCircleHelp,{})}),e.jsx(s.IconButton,{"aria-label":"Table of contents",size:"lg",variant:"ghost",onClick:()=>n("toc"),children:e.jsx(x.LuTableOfContents,{})}),K(t)&&e.jsx(s.IconButton,{"aria-label":"Search",size:"lg",variant:"ghost",onClick:()=>n("search"),children:e.jsx(x.LuSearch,{})}),q(t)&&e.jsx(s.IconButton,{"aria-label":"Search",size:"lg",variant:"ghost",onClick:()=>n("bookmarks"),children:e.jsx(H.BsBookmarks,{})}),W(t)&&e.jsx(s.IconButton,{"aria-label":"Search",size:"lg",variant:"ghost",onClick:()=>n("annotations"),children:e.jsx(x.LuNotebookPen,{})})]})]})})]})})}),Ae=()=>{const[o,n]=d.useState(!1),t=d.useCallback(()=>document.fullscreenElement?document.exitFullscreen().catch(console.error).then(()=>{n(!1)}):document.documentElement.requestFullscreen({navigationUI:"hide"}).catch(console.error).then(()=>{n(!0)}),[]);return d.useEffect(()=>{function l(){n(!!document.fullscreenElement)}return document.addEventListener("fullscreenchange",l),()=>{document.removeEventListener("fullscreenchange",l)}},[]),{isFullscreen:o,onToggleFullscreenClick:t}},Le=d.memo(({open:o,onItemClick:n})=>{const t=T(),l=f.useObserve(()=>t==null?void 0:t.context.manifest$,[t]),{isFullscreen:r,onToggleFullscreenClick:i}=Ae();return e.jsxs(X,{present:o,position:"top",height:"80px",justifyContent:"space-between",children:[e.jsx(s.IconButton,{"aria-label":"left",size:"lg",variant:"ghost",flexShrink:0,onClick:()=>n("back"),children:e.jsx(Q.IoIosArrowBack,{})}),e.jsx(s.Stack,{flex:1,maxW:600,gap:1,alignItems:"center",overflow:"auto",px:4,children:e.jsx(s.Text,{truncate:!0,maxWidth:"100%",children:l==null?void 0:l.title})}),e.jsxs(s.HStack,{children:[e.jsx(s.IconButton,{"aria-label":"right",size:"lg",flexShrink:0,variant:"ghost",onClick:()=>n("more"),children:e.jsx(Q.IoMdMore,{})}),e.jsx(s.IconButton,{"aria-label":"right",size:"lg",flexShrink:0,variant:"ghost",onClick:i,children:r?e.jsx(G.MdFullscreenExit,{}):e.jsx(G.MdFullscreen,{})})]})]})}),Me=d.memo(({onItemClick:o})=>{const[n]=Y();return e.jsxs(e.Fragment,{children:[e.jsx(Le,{open:n,onItemClick:o}),e.jsx(Ee,{open:n,onItemClick:o})]})}),me=d.memo(({contextText:o="",startOffset:n=0,text:t,cfi:l="#",onClick:r,absolutePageIndex:i})=>{const g=o.substring(Math.max(n-15,0),Math.max(n,0)),p=o.substring(Math.min(n+t.length,o.length-1),Math.min(n+t.length+15,o.length-1));return e.jsxs(s.Link,{href:l,style:{margin:5,overflow:"hidden"},onClick:a=>{a.preventDefault(),r(l)},display:"flex",flexDirection:"column",alignItems:"flex-start",gap:0,children:[e.jsxs(s.Text,{lineClamp:1,as:"cite",style:{display:"block"},children:['"',g,e.jsx("b",{children:t}),p,'"']}),e.jsx(s.Text,{fontSize:"sm",color:"gray.500",style:{textDecoration:"none"},children:`Book page: ${i!==void 0?i+1:"unknown (not loaded)"}`})]})}),_e=d.memo(({onNavigate:o})=>{const[n,t]=d.useState(""),l=T(),r=K(l)?l:void 0,i=h=>{t(h.target.value)},c=d.useCallback(h=>{o(),l==null||l.navigation.goToCfi(h)},[l,o]),g=f.useObserve(()=>r==null?void 0:r.search.search(n).pipe(u.map(h=>({type:"end",data:h})),u.startWith({type:"start"})),[l,n]),p=(g==null?void 0:g.type)==="start",a=(g==null?void 0:g.type)==="end"?g.data:[],k=f.useObserve(()=>l==null?void 0:l.pagination.locate(a.slice(0,100)),[a]);return e.jsxs(s.Stack,{flex:1,height:"100%",children:[e.jsx(s.Box,{px:4,children:e.jsx(s.Input,{placeholder:"Type something...",value:n,onChange:i,borderRadius:0})}),e.jsxs(s.Box,{px:4,pb:4,mt:2,flex:1,style:{overflow:"hidden",overflowY:"auto"},children:[p&&e.jsx(s.Text,{children:"Searching ..."}),!p&&a.length===0&&e.jsx("p",{children:"There are no results"}),!p&&a.length>=0&&e.jsxs(s.Stack,{children:[e.jsxs(s.Heading,{as:"h2",size:"md",children:[a.length," result(s)"]}),e.jsx(s.Stack,{gap:0,children:k==null?void 0:k.map((h,C)=>{var S,P,I,y,v,_,Z;return e.jsx(me,{contextText:((I=(P=(S=h.meta)==null?void 0:S.range)==null?void 0:P.startContainer.parentElement)==null?void 0:I.textContent)??"",pageIndex:(y=h.meta)==null?void 0:y.itemPageIndex,startOffset:((_=(v=h.meta)==null?void 0:v.range)==null?void 0:_.startOffset)??0,text:n,cfi:h.cfi,onClick:c,absolutePageIndex:(Z=h.meta)==null?void 0:Z.absolutePageIndex},C)})})]})]})]})}),Ne=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{height:"100%",children:[e.jsx(A,{children:e.jsx(M,{children:"Search"})}),e.jsx(L,{flex:1,children:e.jsx(_e,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),$e=d.memo(({onNavigate:o})=>{const n=T(),{manifest:t,assumedRenditionLayout:l}=f.useObserve(()=>n==null?void 0:n.context.state$,[n])??{},{nav:r}=t??{},i=O();r!=null&&r.toc;const{beginSpineItemIndex:c,beginPageIndexInSpineItem:g}=i??{},p=(l==="reflowable"?g:c)||0;console.log({assumedRenditionLayout:l,currentSpineItemOrChapterPageIndex:p});let a=i==null?void 0:i.beginChapterInfo;for(;a!=null&&a.subChapter;)a=a==null?void 0:a.subChapter;const k=(h,C,S)=>e.jsxs(d.Fragment,{children:[e.jsx(s.List.Item,{pl:4*(S+1),style:{display:"flex",alignItems:"center"},children:e.jsxs(s.Link,{onClick:()=>{o(),n==null||n.navigation.goToUrl(h.href)},href:"#",children:[(a==null?void 0:a.path)===h.path&&e.jsx(s.List.Indicator,{asChild:!0,children:e.jsx(x.LuCircleCheck,{})}),(a==null?void 0:a.path)!==h.path&&e.jsx(s.List.Indicator,{asChild:!0,visibility:"hidden",children:e.jsx(x.LuCircleCheck,{})}),e.jsxs(s.Stack,{gap:0,children:[e.jsx(s.Text,{fontSize:"md",children:h.title||h.path}),(a==null?void 0:a.path)===h.path&&e.jsx(s.Text,{fontStyle:"italic",fontWeight:"bold",fontSize:"sm",children:`Currently on page ${p+1}`})]})]})}),h.contents.length>0&&e.jsx(s.List.Root,{as:"div",gap:2,children:h.contents.map((P,I)=>k(P,I,S+1))})]},C);return e.jsx(s.List.Root,{gap:3,overflowY:"auto",py:4,flex:1,children:r==null?void 0:r.toc.map((h,C)=>k(h,C,0))})}),He=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{children:[e.jsx(A,{children:e.jsx(M,{children:"Table of Contents"})}),e.jsx(L,{overflowY:"auto",flex:1,children:e.jsx($e,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),Fe=({enableFloatingTime:o=!0,enableFloatingProgress:n=!0,onItemClick:t})=>{const[l,r]=d.useState(!1),[i,c]=d.useState(!1),[g,p]=d.useState(!1),[a,k]=d.useState(!1),[h,C]=d.useState(!1),[S,P]=Y(),I=d.useCallback(()=>{r(!1),c(!1),p(!1),k(!1),C(!1),P(!1)},[P]),y=d.useCallback(v=>{v==="annotations"?k(!0):v==="search"?p(!0):v==="help"?c(!0):v==="toc"?r(!0):v==="bookmarks"&&C(!0),t==null||t(v)},[t]);return ke(),ve(),e.jsxs(e.Fragment,{children:[n&&e.jsx(s.Presence,{present:!S,animationName:{_open:"fade-in",_closed:"fade-out"},animationDuration:"moderate",children:e.jsx(pe,{})}),e.jsx(Me,{onItemClick:y}),e.jsx(re,{}),e.jsx(ge,{open:i,setOpen:c}),e.jsx(He,{open:l,setOpen:r,onNavigate:I}),e.jsx(Ne,{open:g,setOpen:p,onNavigate:I}),e.jsx(le,{open:a,setOpen:k,onNavigate:I}),e.jsx(ae,{open:h,setOpen:C,onNavigate:I}),e.jsx(s.Presence,{present:o||S,animationName:{_open:"fade-in",_closed:"fade-out"},animationDuration:"slow",overflow:"hidden",children:e.jsx(be,{})}),e.jsx(ce,{})]})};b.ReactReader=Fe,b.ReactReaderProvider=ne,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
1
+ (function(b,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("reactjrx"),require("rxjs"),require("@chakra-ui/react"),require("react-icons/lu"),require("react-dom"),require("react-icons/bs"),require("@prose-reader/core"),require("react-icons/rx"),require("react-icons/hi"),require("rc-slider"),require("rc-slider/assets/index.css"),require("react-icons/io"),require("react-icons/md")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","reactjrx","rxjs","@chakra-ui/react","react-icons/lu","react-dom","react-icons/bs","@prose-reader/core","react-icons/rx","react-icons/hi","rc-slider","rc-slider/assets/index.css","react-icons/io","react-icons/md"],e):(b=typeof globalThis<"u"?globalThis:b||self,e(b["prose-react-reader"]={},b.jsxRuntime,b.React,b.reactjrx,b.rxjs,b.react,b.lu,b.reactDom,b.bs,b.core,b.rx,b.hi,b.RcSlider,null,b.io,b.md))})(this,function(b,e,d,f,u,s,x,J,H,j,N,R,ee,qe,Q,G){"use strict";function oe(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const l=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(n,t,l.get?l:{enumerable:!0,get:()=>o[t]})}}return n.default=o,Object.freeze(n)}const w=oe(d),F=d.createContext({reader:void 0,quickMenuSignal:f.signal({default:!1})}),ne=d.memo(({children:o,reader:n,quickMenuOpen:t,onQuickMenuOpenChange:l})=>{const[,r]=f.useSignal({default:t}),i=f.useLiveRef(l),c=d.useMemo(()=>({quickMenuSignal:r,reader:n}),[r,n]);return d.useEffect(()=>{r.setValue(t)},[t,r]),f.useSubscribe(()=>r.subject.pipe(u.tap(i.current)),[r,i]),e.jsx(F.Provider,{value:c,children:o})}),se=w.forwardRef(function(n,t){return e.jsx(s.IconButton,{variant:"ghost","aria-label":"Close",ref:t,...n,children:n.children??e.jsx(x.LuX,{})})}),D=w.forwardRef(function(n,t){const{children:l,portalled:r=!0,portalRef:i,backdrop:c=!0,...g}=n;return e.jsxs(s.Portal,{disabled:!r,container:i,children:[c&&e.jsx(s.Dialog.Backdrop,{}),e.jsx(s.Dialog.Positioner,{children:e.jsx(s.Dialog.Content,{ref:t,...g,asChild:!1,children:l})})]})}),B=w.forwardRef(function(n,t){return e.jsx(s.Dialog.CloseTrigger,{position:"absolute",top:"2",insetEnd:"2",...n,asChild:!0,children:e.jsx(se,{size:"sm",ref:t,children:n.children})})}),z=s.Dialog.Root,E=s.Dialog.Footer,A=s.Dialog.Header,L=s.Dialog.Body;s.Dialog.Backdrop;const M=s.Dialog.Title;s.Dialog.Description,s.Dialog.Trigger;const m=s.Dialog.ActionTrigger,T=()=>{const{reader:o}=d.useContext(F);return o},K=o=>!!o&&"__PROSE_READER_ENHANCER_SEARCH"in o,q=o=>!!o&&"__PROSE_READER_ENHANCER_BOOKMARKS"in o,W=o=>!!o&&"__PROSE_READER_ENHANCER_ANNOTATIONS"in o,te=d.memo(({onNavigate:o})=>{const n=T(),t=W(n)?n:void 0,l=f.useObserve(()=>t==null?void 0:t.annotations.highlights$.pipe(u.switchMap(i=>t.pagination.locate(i))),[t]),r=(i,c)=>{var g;return e.jsx(s.List.Item,{children:e.jsxs(s.Link,{href:"#",onClick:()=>{o(),n==null||n.navigation.goToCfi(i.cfi??"")},children:[(i.contents??[])[0]?e.jsx(s.List.Indicator,{asChild:!0,children:e.jsx(x.LuNotebookPen,{})}):e.jsx(s.List.Indicator,{asChild:!0,visibility:"hidden",children:e.jsx(x.LuNotebookPen,{})}),e.jsxs(s.Stack,{gap:0,children:[e.jsx(s.Text,{lineClamp:2,fontSize:"md",children:i.selectionAsText?i.selectionAsText??"":e.jsx("i",{children:e.jsx("b",{children:"unknown (not loaded)"})})}),e.jsx(s.Text,{fontStyle:"italic",fontWeight:"bold",fontSize:"sm",children:`Book page: ${((g=i.meta)==null?void 0:g.absolutePageIndex)!==void 0?i.meta.absolutePageIndex+1:"unknown (not loaded)"}`})]})]})},c)};return e.jsx(s.List.Root,{overflowY:"auto",gap:3,pt:4,variant:"plain",children:l==null?void 0:l.map((i,c)=>r(i,c))})}),le=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{height:"100%",children:[e.jsx(A,{children:e.jsx(M,{children:"Annotations"})}),e.jsx(L,{flex:1,children:e.jsx(te,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),re=d.memo(()=>{const o=T(),n=q(o)?o:void 0,t=f.useObserve(()=>o==null?void 0:o.spine.element$,[o]),l=f.useObserve(()=>n==null?void 0:n.bookmarks.pages$,[n]),r=f.useObserve(()=>n==null?void 0:n.bookmarks.bookmarks$,[n]),i=f.useObserve(()=>o==null?void 0:o.pagination.locate(r??[]),[o,r]);return t?e.jsx(e.Fragment,{children:J.createPortal(l==null?void 0:l.map(({isBookmarkable:c,absolutePosition:{left:g,top:p,width:a}},k)=>{const h=i==null?void 0:i.find(C=>{var S;return((S=C.meta)==null?void 0:S.absolutePageIndex)===k});return c?e.jsx(s.Presence,{present:!0,lazyMount:!0,animationName:{_open:"fade-in",_closed:"fade-out"},animationDuration:"moderate",children:e.jsx(s.Box,{"data-bookmark-area":!0,position:"absolute",left:g+a,transform:"translateX(-100%)",top:p,p:2,children:h?e.jsx(s.IconButton,{"aria-label":"bookmark",opacity:.5,_hover:{opacity:1},onClick:()=>{h&&(n==null||n.bookmarks.delete(h==null?void 0:h.id))},size:"lg",variant:"ghost",_icon:{boxSize:"36px"},children:e.jsx(H.BsBookmarkXFill,{})}):e.jsx(s.IconButton,{"aria-label":"bookmark",onClick:()=>{n==null||n.bookmarks.bookmark(k)},size:"lg",bgColor:"white",opacity:.5,_hover:{opacity:1},variant:"ghost",_icon:{boxSize:"36px"},children:e.jsx(H.BsBookmarkPlus,{})})})},k):null}),t)}):null}),ie=d.memo(({onNavigate:o})=>{const n=T(),t=q(n)?n:void 0,l=f.useObserve(()=>t==null?void 0:t.bookmarks.bookmarks$.pipe(u.switchMap(i=>t.pagination.locate(i))),[t]),r=(i,c)=>{var g,p,a,k,h;return e.jsxs(s.List.Item,{justifyContent:"space-between",alignItems:"center",children:[e.jsx(s.Link,{href:"#",onClick:()=>{o(),n==null||n.navigation.goToCfi(i.cfi??"")},children:e.jsxs(s.Stack,{gap:0,children:[e.jsx(s.Text,{fontSize:"md",children:`Book page: ${((g=i.meta)==null?void 0:g.absolutePageIndex)!==void 0?i.meta.absolutePageIndex+1:"unknown"}`}),e.jsx(s.Text,{fontStyle:"italic",fontWeight:"bold",fontSize:"sm",truncate:!0,lineClamp:2,children:(a=(p=i.meta)==null?void 0:p.startNode)!=null&&a.textContent?(h=(k=i.meta)==null?void 0:k.startNode)==null?void 0:h.textContent:"..."})]})}),e.jsx(s.Button,{colorPalette:"red",variant:"solid",size:"xs",onClick:()=>{t==null||t.bookmarks.delete(i.id)},children:"Delete"})]},c)};return e.jsx(s.List.Root,{overflowY:"auto",gap:3,variant:"plain",overflow:"auto",children:l==null?void 0:l.map((i,c)=>r(i,c))})}),ae=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{height:"100%",children:[e.jsx(A,{children:e.jsx(M,{children:"Bookmarks"})}),e.jsx(L,{children:e.jsx(ie,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),V=s.createToaster({placement:"bottom-end",pauseOnPageIdle:!0}),ce=()=>e.jsx(s.Portal,{children:e.jsx(s.Toaster,{toaster:V,insetInline:{mdDown:"4"},children:o=>{var n;return e.jsxs(s.Toast.Root,{width:{md:"sm"},children:[o.type==="loading"?e.jsx(s.Spinner,{size:"sm",color:"blue.solid"}):e.jsx(s.Toast.Indicator,{}),e.jsxs(s.Stack,{gap:"1",flex:"1",maxWidth:"100%",children:[o.title&&e.jsx(s.Toast.Title,{children:o.title}),o.description&&e.jsx(s.Toast.Description,{children:o.description})]}),o.action&&e.jsx(s.Toast.ActionTrigger,{children:o.action.label}),((n=o.meta)==null?void 0:n.closable)&&e.jsx(s.Toast.CloseTrigger,{})]})}})}),de="@prose-reader/react-reader",he="1.200.0",ge=d.memo(({open:o,setOpen:n})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:t=>n(t.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{children:[e.jsx(A,{children:e.jsx(M,{children:"Help"})}),e.jsxs(L,{overflowY:"auto",flex:1,children:[e.jsx(s.Heading,{mb:2,as:"h3",size:"lg",children:"Shortcuts"}),e.jsxs(s.HStack,{mb:1,children:[e.jsx(s.Kbd,{children:e.jsx(x.LuArrowBigRight,{})})," ",e.jsx(s.Text,{children:"Navigate to right page"})]}),e.jsxs(s.HStack,{mb:1,children:[e.jsx(s.Kbd,{children:e.jsx(x.LuArrowBigLeft,{})})," ",e.jsx(s.Text,{children:"Navigate to left page"})]}),e.jsx(s.Heading,{mb:2,mt:4,as:"h3",size:"lg",children:"About"}),e.jsxs(s.Text,{children:[de," version: ",he]})]}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),O=()=>{const o=T();return f.useObserve(()=>o?u.combineLatest([o.pagination.state$,o.context.state$]).pipe(u.map(([n,t])=>{var r;const l=(r=t.manifest)==null?void 0:r.spineItems.every(i=>{var c;return(c=i.mediaType)==null?void 0:c.startsWith("image/")});return{...n,hasChapters:!t.isFullyPrePaginated&&!l}})):u.NEVER,[o])},pe=()=>{const o=O(),n=Math.floor(((o==null?void 0:o.percentageEstimateOfBook)??0)*100),t=n>0?n:1;return(o==null?void 0:o.percentageEstimateOfBook)===void 0?null:e.jsx(s.Box,{position:"absolute",right:0,bottom:0,p:2,color:"black",children:e.jsxs(s.Text,{fontSize:"sm",children:[t," %"]})})},fe=()=>{const[o,n]=d.useState(new Date);return d.useEffect(()=>{const t=setInterval(()=>{n(new Date)},6e4);return()=>clearInterval(t)},[]),o},ue=o=>{const n=fe();return e.jsx(s.Text,{fontSize:"xs",...o,children:n.toLocaleTimeString(navigator.language,{hour:"2-digit",minute:"2-digit"})})},Y=()=>{const{quickMenuSignal:o}=d.useContext(F);return[f.useSignalValue(o),o.setValue,o]},be=()=>{const[o]=Y();return e.jsx(s.Box,{position:"absolute",left:0,bottom:0,p:2,color:o?void 0:"colorPalette.contrast",children:e.jsx(ue,{})})},ke=()=>{const o=T();f.useSubscribe(()=>o==null?void 0:o.links$.subscribe(n=>{if(n.type==="click"&&j.isHtmlTagElement(n.target,"a")){if(!n.target.href)return;const t=new URL(n.target.href);window.location.host!==t.host&&confirm("You are going to be redirected to external link")&&window.open(n.target.href,"__blank")}}),[o])},$=f.signal({default:void 0}),Ce=()=>{const o=T();f.useSubscribe(()=>o==null?void 0:o.zoom.isZooming$.pipe(u.switchMap(n=>{if(!n)return u.EMPTY;const t=new u.Subject;return $.setValue({key:"zoom",title:"Zooming",duration:999999,abort:t}),u.NEVER.pipe(u.finalize(()=>{t.next(),t.complete()}))})),[o])},Se=()=>{const o=T();f.useSubscribe(()=>o==null?void 0:o.settings.values$.pipe(u.map(({fontScale:n})=>n),u.distinctUntilChanged(),u.skip(1),u.tap(n=>{$.setValue({key:"fontScaleChange",title:"Font size changed",description:`${n*100} %`})})),[o])},ve=()=>{Se(),Ce(),f.useSubscribe(()=>$.subject.pipe(u.filter(f.isDefined),u.mergeMap(o=>{const n=o.duration??3e3,t=V.create({title:o.title,description:o.description,duration:n}),l=$.subject.pipe(u.skip(1),u.filter(r=>!!o.key&&(r==null?void 0:r.key)===o.key));return u.merge(u.timer(n),o.abort??u.NEVER,l).pipe(u.first(),u.finalize(()=>{V.dismiss(t)}))})))},xe=w.forwardRef(function(n,t){const{showArrow:l,children:r,portalled:i=!0,content:c,portalRef:g,...p}=n;return e.jsxs(s.Popover.Root,{...p,positioning:{...p.positioning,gutter:4},children:[e.jsx(s.Popover.Trigger,{asChild:!0,children:r}),e.jsx(s.Portal,{disabled:!i,container:g,children:e.jsx(s.Popover.Positioner,{children:e.jsxs(s.Popover.Content,{width:"auto",px:"2",py:"1",textStyle:"xs",rounded:"sm",ref:t,children:[l&&e.jsx(s.Popover.Arrow,{children:e.jsx(s.Popover.ArrowTip,{})}),c]})})})]})}),Te=w.forwardRef(function(n,t){const{children:l,...r}=n;return e.jsx(xe,{content:l,...r,ref:t,children:e.jsx(s.IconButton,{variant:"ghost","aria-label":"info",size:"2xs",colorPalette:"gray",children:e.jsx(R.HiOutlineInformationCircle,{})})})}),Ie=w.forwardRef(function(n,t){return e.jsx(s.Progress.Track,{...n,ref:t,children:e.jsx(s.Progress.Range,{})})});w.forwardRef(function(n,t){const{children:l,info:r,...i}=n;return e.jsxs(s.Progress.Label,{...i,ref:t,children:[l,r&&e.jsx(Te,{children:r})]})});const Pe=s.Progress.Root,ye=s.Progress.ValueText,U=()=>{const o=O(),n=(o==null?void 0:o.numberOfTotalPages)===1,t=((o==null?void 0:o.beginNumberOfPagesInSpineItem)??0)>1,l=((o==null?void 0:o.endNumberOfPagesInSpineItem)??0)>1,r=(o!=null&&o.hasChapters?o==null?void 0:o.beginPageIndexInSpineItem:o==null?void 0:o.beginAbsolutePageIndex)??0,i=(o!=null&&o.hasChapters?o==null?void 0:o.endPageIndexInSpineItem:o==null?void 0:o.endAbsolutePageIndex)??0,[c=0,g=0]=[r,i].sort((k,h)=>k-h),p=(o==null?void 0:o.beginPageIndexInSpineItem)!==(o==null?void 0:o.endPageIndexInSpineItem)||(o==null?void 0:o.beginSpineItemIndex)!==(o==null?void 0:o.endSpineItemIndex),a=o!=null&&o.hasChapters?o==null?void 0:o.beginNumberOfPagesInSpineItem:o==null?void 0:o.numberOfTotalPages;return{hasOnlyOnePage:n,beginPageIndex:r,endPageIndex:i,isBeginWithinChapter:t,isEndWithinChapter:l,beginAndEndAreDifferent:p,totalApproximatePages:a,leftPageIndex:c,rightPageIndex:g}},we=()=>{const o=O(),{hasOnlyOnePage:n,leftPageIndex:t,rightPageIndex:l,totalApproximatePages:r,beginAndEndAreDifferent:i}=U(),c=Math.round(((o==null?void 0:o.percentageEstimateOfBook)??0)*100),g=a=>a!=null&&a.subChapter?`${a.title} / ${g(a.subChapter)}`:(a==null?void 0:a.title)||"",p=g(o==null?void 0:o.beginChapterInfo);return e.jsxs(s.Stack,{alignItems:"center",gap:1,maxW:"100%",overflow:"auto",children:[e.jsx(Pe,{value:c,size:"xs",width:150,children:e.jsxs(s.HStack,{justifyContent:"space-between",children:[e.jsx(Ie,{width:110}),e.jsx(ye,{children:`${c}%`})]})}),e.jsx(s.Text,{truncate:!0,maxWidth:"100%",fontSize:"sm",mt:1,children:p?`Chapter: ${p}`:" "}),!n&&e.jsxs(s.HStack,{children:[e.jsx(s.Text,{fontSize:"xs",children:i?`${t+1} - ${l+1} of ${r}`:`${t+1} of ${r}`}),!!(o!=null&&o.hasChapters)&&e.jsxs(e.Fragment,{children:[e.jsx(s.Text,{children:"-"}),e.jsxs(s.Text,{fontSize:"xs",children:["(",((o==null?void 0:o.beginAbsolutePageIndex)??0)+1,")"]})]})]})]})},X=d.memo(({children:o,position:n,...t})=>e.jsx(s.Presence,{display:"flex",flexDirection:"row",width:"100%",position:"absolute",...n==="bottom"?{bottom:0}:{top:0},animationName:n==="bottom"?{_open:"slide-from-bottom, fade-in",_closed:"slide-to-bottom, fade-out"}:{_open:"slide-from-top, fade-in",_closed:"slide-to-top, fade-out"},animationDuration:"moderate",bgColor:"bg.panel",alignItems:"center",justifyContent:"center",shadow:"md",p:4,...t,children:o})),Oe=s.chakra(ee),De=d.memo(o=>e.jsx(s.Box,{display:"contents",css:{"--bg":"colors.bg","--bg-emphasized":"colors.bg.emphasized","--color-solid":"colors.colorPalette.solid"},children:e.jsx(Oe,{keyboard:!1,style:{padding:0},css:{"& > .rc-slider-handle:focus-visible":{boxShadow:"0 0 0 2px var(--color-solid) !important"},"& > .rc-slider-handle:active":{boxShadow:"0 0 5px var(--color-solid) !important"},"& > .rc-slider-handle.rc-slider-handle-dragging":{boxShadow:"0 0 0 3px var(--color-solid) !important"}},styles:{rail:{height:"8px",top:"50%",transform:"translateY(-50%)",backgroundColor:"var(--bg-emphasized)"},track:{height:"8px",top:"50%",transform:"translateY(-50%)",backgroundColor:"var(--color-solid)"},handle:{width:"24px",height:"24px",top:"50%",borderColor:"var(--color-solid)",transform:`translate(${o.reverse?"50%":"-50%"}, -50%)`,backgroundColor:"var(--bg)",marginTop:"0px"}},...o})})),Be=()=>{const o=O(),n=o==null?void 0:o.isUsingSpread,{beginPageIndex:t,totalApproximatePages:l=0}=U(),r=n?Math.floor((t||0)/2):t,[i,c]=f.useSignal({default:r||0}),g=0,p=Math.max(0,n?Math.floor((l-1)/2):l-1);return d.useEffect(()=>{c.setValue(r||0)},[r,c]),{value:i,valueSignal:c,min:g,max:p}},ze=o=>{const n=T(),t=O(),{manifest:l}=f.useObserve(()=>n==null?void 0:n.context.state$,[n])??{},r=(l==null?void 0:l.readingDirection)==="rtl",i=t==null?void 0:t.isUsingSpread,{totalApproximatePages:c=0,isBeginWithinChapter:g}=U(),p=1,a=g,{value:k,valueSignal:h,min:C,max:S}=Be(),P=d.useCallback(y=>{const[v=0]=Array.isArray(y)?y:[y];h.setValue(v);const _=i?Math.floor(v)*2:Math.floor(v);a?n==null||n.navigation.goToPageOfSpineItem({pageIndex:_,spineItemId:n.pagination.getState().beginSpineItemIndex??0,animation:!1}):n==null||n.navigation.goToAbsolutePageIndex({absolutePageIndex:_,animation:!1})},[n,i,h,a]);return f.useSubscribe(()=>n==null?void 0:n.navigation.throttleLock({duration:100,trigger:h.subject}),[n,h]),c===1||i&&c===2?e.jsx(s.Box,{style:o.style}):e.jsx(De,{value:[k],max:S,min:C,reverse:r,step:p,onChange:P,...o})},Ee=d.memo(({open:o,onItemClick:n})=>{const t=T(),l=f.useObserve(()=>t==null?void 0:t.navigation.state$,[t]),r=f.useObserve(()=>t==null?void 0:t.settings.values$,[t]),i=(r==null?void 0:r.computedPageTurnDirection)==="vertical",[c,g]=d.useState(!0);return e.jsx(X,{present:o,position:"bottom",children:e.jsxs(s.Stack,{flex:1,overflow:"auto",children:[e.jsxs(s.HStack,{flex:1,alignItems:"center",justifyContent:"center",children:[e.jsx(s.IconButton,{"aria-label":"left",size:"lg",variant:"ghost",flexShrink:0,onClick:()=>t==null?void 0:t.navigation.goToLeftOrTopSpineItem(),disabled:!(l!=null&&l.canGoLeftSpineItem)&&!(l!=null&&l.canGoTopSpineItem),children:i?e.jsx(N.RxDoubleArrowUp,{}):e.jsx(N.RxDoubleArrowLeft,{})}),e.jsxs(s.Stack,{flex:1,maxW:400,gap:2,alignItems:"center",overflow:"auto",px:4,children:[e.jsx(we,{}),e.jsx(ze,{style:{width:"100%",maxWidth:"300px",height:"35px"}})]}),e.jsx(s.IconButton,{"aria-label":"right",size:"lg",flexShrink:0,variant:"ghost",disabled:!(l!=null&&l.canGoRightSpineItem)&&!(l!=null&&l.canGoBottomSpineItem),onClick:()=>{t==null||t.navigation.goToRightOrBottomSpineItem()},children:i?e.jsx(N.RxDoubleArrowDown,{}):e.jsx(N.RxDoubleArrowRight,{})})]}),e.jsx(s.HStack,{alignItems:"center",justifyContent:"center",children:e.jsxs(s.Collapsible.Root,{open:c,flex:1,onOpenChange:({open:p})=>{g(p)},children:[e.jsx(s.Collapsible.Trigger,{paddingY:"3",width:"100%",display:"flex",justifyContent:"center",children:e.jsx(x.LuChevronDown,{style:{transform:c?"rotate(0deg)":"rotate(180deg)"}})}),e.jsxs(s.Collapsible.Content,{display:"flex",justifyContent:"center",children:[e.jsx(s.IconButton,{"aria-label":"Help",size:"lg",variant:"ghost",onClick:()=>n("help"),children:e.jsx(x.LuCircleHelp,{})}),e.jsx(s.IconButton,{"aria-label":"Table of contents",size:"lg",variant:"ghost",onClick:()=>n("toc"),children:e.jsx(x.LuTableOfContents,{})}),K(t)&&e.jsx(s.IconButton,{"aria-label":"Search",size:"lg",variant:"ghost",onClick:()=>n("search"),children:e.jsx(x.LuSearch,{})}),q(t)&&e.jsx(s.IconButton,{"aria-label":"Search",size:"lg",variant:"ghost",onClick:()=>n("bookmarks"),children:e.jsx(H.BsBookmarks,{})}),W(t)&&e.jsx(s.IconButton,{"aria-label":"Search",size:"lg",variant:"ghost",onClick:()=>n("annotations"),children:e.jsx(x.LuNotebookPen,{})})]})]})})]})})}),Ae=()=>{const[o,n]=d.useState(!1),t=d.useCallback(()=>document.fullscreenElement?document.exitFullscreen().catch(console.error).then(()=>{n(!1)}):document.documentElement.requestFullscreen({navigationUI:"hide"}).catch(console.error).then(()=>{n(!0)}),[]);return d.useEffect(()=>{function l(){n(!!document.fullscreenElement)}return document.addEventListener("fullscreenchange",l),()=>{document.removeEventListener("fullscreenchange",l)}},[]),{isFullscreen:o,onToggleFullscreenClick:t}},Le=d.memo(({open:o,onItemClick:n})=>{const t=T(),l=f.useObserve(()=>t==null?void 0:t.context.manifest$,[t]),{isFullscreen:r,onToggleFullscreenClick:i}=Ae();return e.jsxs(X,{present:o,position:"top",height:"80px",justifyContent:"space-between",children:[e.jsx(s.IconButton,{"aria-label":"left",size:"lg",variant:"ghost",flexShrink:0,onClick:()=>n("back"),children:e.jsx(Q.IoIosArrowBack,{})}),e.jsx(s.Stack,{flex:1,maxW:600,gap:1,alignItems:"center",overflow:"auto",px:4,children:e.jsx(s.Text,{truncate:!0,maxWidth:"100%",children:l==null?void 0:l.title})}),e.jsxs(s.HStack,{children:[e.jsx(s.IconButton,{"aria-label":"right",size:"lg",flexShrink:0,variant:"ghost",onClick:()=>n("more"),children:e.jsx(Q.IoMdMore,{})}),e.jsx(s.IconButton,{"aria-label":"right",size:"lg",flexShrink:0,variant:"ghost",onClick:i,children:r?e.jsx(G.MdFullscreenExit,{}):e.jsx(G.MdFullscreen,{})})]})]})}),Me=d.memo(({onItemClick:o})=>{const[n]=Y();return e.jsxs(e.Fragment,{children:[e.jsx(Le,{open:n,onItemClick:o}),e.jsx(Ee,{open:n,onItemClick:o})]})}),me=d.memo(({contextText:o="",startOffset:n=0,text:t,cfi:l="#",onClick:r,absolutePageIndex:i})=>{const g=o.substring(Math.max(n-15,0),Math.max(n,0)),p=o.substring(Math.min(n+t.length,o.length-1),Math.min(n+t.length+15,o.length-1));return e.jsxs(s.Link,{href:l,style:{margin:5,overflow:"hidden"},onClick:a=>{a.preventDefault(),r(l)},display:"flex",flexDirection:"column",alignItems:"flex-start",gap:0,children:[e.jsxs(s.Text,{lineClamp:1,as:"cite",style:{display:"block"},children:['"',g,e.jsx("b",{children:t}),p,'"']}),e.jsx(s.Text,{fontSize:"sm",color:"gray.500",style:{textDecoration:"none"},children:`Book page: ${i!==void 0?i+1:"unknown (not loaded)"}`})]})}),_e=d.memo(({onNavigate:o})=>{const[n,t]=d.useState(""),l=T(),r=K(l)?l:void 0,i=h=>{t(h.target.value)},c=d.useCallback(h=>{o(),l==null||l.navigation.goToCfi(h)},[l,o]),g=f.useObserve(()=>r==null?void 0:r.search.search(n).pipe(u.map(h=>({type:"end",data:h})),u.startWith({type:"start"})),[l,n]),p=(g==null?void 0:g.type)==="start",a=(g==null?void 0:g.type)==="end"?g.data:[],k=f.useObserve(()=>l==null?void 0:l.pagination.locate(a.slice(0,100)),[a]);return e.jsxs(s.Stack,{flex:1,height:"100%",children:[e.jsx(s.Box,{px:4,children:e.jsx(s.Input,{placeholder:"Type something...",value:n,onChange:i,borderRadius:0})}),e.jsxs(s.Box,{px:4,pb:4,mt:2,flex:1,style:{overflow:"hidden",overflowY:"auto"},children:[p&&e.jsx(s.Text,{children:"Searching ..."}),!p&&a.length===0&&e.jsx("p",{children:"There are no results"}),!p&&a.length>=0&&e.jsxs(s.Stack,{children:[e.jsxs(s.Heading,{as:"h2",size:"md",children:[a.length," result(s)"]}),e.jsx(s.Stack,{gap:0,children:k==null?void 0:k.map((h,C)=>{var S,P,I,y,v,_,Z;return e.jsx(me,{contextText:((I=(P=(S=h.meta)==null?void 0:S.range)==null?void 0:P.startContainer.parentElement)==null?void 0:I.textContent)??"",pageIndex:(y=h.meta)==null?void 0:y.itemPageIndex,startOffset:((_=(v=h.meta)==null?void 0:v.range)==null?void 0:_.startOffset)??0,text:n,cfi:h.cfi,onClick:c,absolutePageIndex:(Z=h.meta)==null?void 0:Z.absolutePageIndex},C)})})]})]})]})}),Ne=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{height:"100%",children:[e.jsx(A,{children:e.jsx(M,{children:"Search"})}),e.jsx(L,{flex:1,children:e.jsx(_e,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),$e=d.memo(({onNavigate:o})=>{const n=T(),{manifest:t,assumedRenditionLayout:l}=f.useObserve(()=>n==null?void 0:n.context.state$,[n])??{},{nav:r}=t??{},i=O();r!=null&&r.toc;const{beginSpineItemIndex:c,beginPageIndexInSpineItem:g}=i??{},p=(l==="reflowable"?g:c)||0;console.log({assumedRenditionLayout:l,currentSpineItemOrChapterPageIndex:p});let a=i==null?void 0:i.beginChapterInfo;for(;a!=null&&a.subChapter;)a=a==null?void 0:a.subChapter;const k=(h,C,S)=>e.jsxs(d.Fragment,{children:[e.jsx(s.List.Item,{pl:4*(S+1),style:{display:"flex",alignItems:"center"},children:e.jsxs(s.Link,{onClick:()=>{o(),n==null||n.navigation.goToUrl(h.href)},href:"#",children:[(a==null?void 0:a.path)===h.path&&e.jsx(s.List.Indicator,{asChild:!0,children:e.jsx(x.LuCircleCheck,{})}),(a==null?void 0:a.path)!==h.path&&e.jsx(s.List.Indicator,{asChild:!0,visibility:"hidden",children:e.jsx(x.LuCircleCheck,{})}),e.jsxs(s.Stack,{gap:0,children:[e.jsx(s.Text,{fontSize:"md",children:h.title||h.path}),(a==null?void 0:a.path)===h.path&&e.jsx(s.Text,{fontStyle:"italic",fontWeight:"bold",fontSize:"sm",children:`Currently on page ${p+1}`})]})]})}),h.contents.length>0&&e.jsx(s.List.Root,{as:"div",gap:2,children:h.contents.map((P,I)=>k(P,I,S+1))})]},C);return e.jsx(s.List.Root,{gap:3,overflowY:"auto",py:4,flex:1,children:r==null?void 0:r.toc.map((h,C)=>k(h,C,0))})}),He=d.memo(({open:o,setOpen:n,onNavigate:t})=>e.jsx(z,{lazyMount:!0,placement:"center",open:o,onOpenChange:l=>n(l.open),size:{mdDown:"full",md:"lg"},scrollBehavior:"inside",children:e.jsxs(D,{children:[e.jsx(A,{children:e.jsx(M,{children:"Table of Contents"})}),e.jsx(L,{overflowY:"auto",flex:1,children:e.jsx($e,{onNavigate:t})}),e.jsx(E,{children:e.jsx(m,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",children:"Cancel"})})}),e.jsx(B,{})]})})),Fe=({enableFloatingTime:o=!0,enableFloatingProgress:n=!0,onItemClick:t})=>{const[l,r]=d.useState(!1),[i,c]=d.useState(!1),[g,p]=d.useState(!1),[a,k]=d.useState(!1),[h,C]=d.useState(!1),[S,P]=Y(),I=d.useCallback(()=>{r(!1),c(!1),p(!1),k(!1),C(!1),P(!1)},[P]),y=d.useCallback(v=>{v==="annotations"?k(!0):v==="search"?p(!0):v==="help"?c(!0):v==="toc"?r(!0):v==="bookmarks"&&C(!0),t==null||t(v)},[t]);return ke(),ve(),e.jsxs(e.Fragment,{children:[n&&e.jsx(s.Presence,{present:!S,animationName:{_open:"fade-in",_closed:"fade-out"},animationDuration:"moderate",children:e.jsx(pe,{})}),e.jsx(Me,{onItemClick:y}),e.jsx(re,{}),e.jsx(ge,{open:i,setOpen:c}),e.jsx(He,{open:l,setOpen:r,onNavigate:I}),e.jsx(Ne,{open:g,setOpen:p,onNavigate:I}),e.jsx(le,{open:a,setOpen:k,onNavigate:I}),e.jsx(ae,{open:h,setOpen:C,onNavigate:I}),e.jsx(s.Presence,{present:o||S,animationName:{_open:"fade-in",_closed:"fade-out"},animationDuration:"slow",overflow:"hidden",children:e.jsx(be,{})}),e.jsx(ce,{})]})};b.ReactReader=Fe,b.ReactReaderProvider=ne,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=index.umd.cjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prose-reader/react-reader",
3
3
  "private": false,
4
- "version": "1.200.0",
4
+ "version": "1.201.0",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
@@ -49,5 +49,5 @@
49
49
  "optional": true
50
50
  }
51
51
  },
52
- "gitHead": "f34e8e4e3a5a16823475b9cfdd70f0534ed110c8"
52
+ "gitHead": "bf5a124e26d14cd42d88e623a85f010c08cc44e8"
53
53
  }