@prose-reader/react-reader 1.305.0 → 1.307.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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","Reader","Annotation","RuntimeAnnotation","EnhancerAPI","GesturesEnhancerAPI","createContext","Dispatch","SetStateAction","Signal","signal","Subject","ReaderNotification","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","PrivateContextType","uncontrolledFontSize","refitMenuOpen","onRefitMenuOpenChange","open","fontSizeMenuOpen","onFontSizeMenuOpenChange","notificationsSubject","quickMenuBottomBarBoundingBoxSignal","ResizeObserverEntry","fontSizeMin","fontSizeMax","_quickMenuOpen","_onQuickMenuOpenChange","selectedHighlight","highlight","selection","Selection","itemIndex","PublicContextType","reader","enableFloatingTime","enableFloatingProgress","onItemClick","item","quickMenuOpen","onQuickMenuOpenChange","fontSize","zoomMaxScale","onFontSizeChange","from","value","fontSizeScope","onFontSizeScopeChange","scope","fontSizeValues","Record","annotations","onAnnotationCreate","annotation","onAnnotationUpdate","Pick","onAnnotationDelete","id","ReaderContextType","getDefaultValue","prev","undefined","default","ReaderContext","isShallowEqual","pick","watchKeys","useContext","useObserve","ReaderContext","ReaderContextType","useReaderContextValue","keys","$","_c","context","t0","pipe","t1","value","t2","compareFn","defaultValue","t3","Symbol","for","data","useReaderContext","Presence","PresenceProps","memo","useSignalValue","useReaderContextValue","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","t0","$","_c","children","rest","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","quickMenuBottomBarBoundingBox","bottomBarHeight","borderBoxSize","blockSize","t2","_open","_closed","t3","t4","Reader","AnnotationsEnhancerAPI","AudioEnhancerAPI","GalleryEnhancerAPI","RefitEnhancerAPI","SearchEnhancerAPI","useReaderContextValue","useReader","$","_c","t0","Symbol","for","reader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasAnnotationsEnhancer","useReader","useReaderWithAnnotations","$","_c","reader","t0","undefined","readerWithBookmarks","Button","FaEdit","LuNotebookPen","useObserve","EMPTY","map","startWith","switchMap","FloatingMenu","useReaderContext","useReaderContextValue","useReaderWithAnnotations","AnnotateControls","$","_c","reader","context","t0","Symbol","for","selectedHighlight","t1","selection","selectionOver$","pipe","selectionEnd$","_temp","t2","defaultValue","t3","data","isOpen","t4","t5","getSelection","update","state","t6","t7","t8","t9","ButtonProps","IconButton","ChakraIconButton","React","LuX","CloseButtonProps","CloseButton","forwardRef","HTMLButtonElement","props","ref","$","_c","t0","children","t1","Drawer","ChakraDrawer","Portal","CloseButton","React","DrawerContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","offset","DrawerContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","t2","t3","t4","DrawerCloseTrigger","HTMLButtonElement","CloseTriggerProps","DrawerTrigger","Trigger","DrawerRoot","Root","DrawerFooter","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","DrawerDescription","Description","DrawerTitle","Title","DrawerActionTrigger","ActionTrigger","Box","Button","Stack","Text","Textarea","ComponentProps","memo","useCallback","useEffect","useState","useSubscribe","tap","truncateText","DrawerBackdrop","DrawerBody","DrawerContent","DrawerHeader","DrawerRoot","useReaderContext","useReaderContextValue","useReaderWithAnnotations","HIGHLIGHT_COLORS","const","AnnotationDrawer","$","_c","reader","t0","Symbol","for","selectedHighlight","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","context","highlight","selection","selectedColor","setSelectedColor","contents","setContents","isOpen","t1","update","_temp","onClose","t2","event","open","onOpenChange","highlightColor","highlightContent","notes","t3","t4","t5","annotations","highlightTap$","openDrawerOnTap","pipe","t6","highlight_0","state_0","state","onOpenDrawerOnTap","T0","t7","T1","T2","t8","t9","toString","t10","t11","map","color","border","t12","t13","t14","event_0","target","value","t15","t16","t17","annotation","createAnnotation","t18","id","t19","t20","t21","undefined","Dialog","ChakraDialog","Portal","React","CloseButton","DialogContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","backdrop","DialogContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","undefined","t2","t3","t4","t5","DialogCloseTrigger","HTMLButtonElement","CloseTriggerProps","DialogRoot","Root","DialogFooter","Footer","DialogHeader","Header","DialogBody","Body","DialogBackdrop","Backdrop","DialogTitle","Title","DialogDescription","Description","DialogTrigger","Trigger","DialogActionTrigger","ActionTrigger","isDefined","useObserve","filter","map","switchMap","hasAnnotationsEnhancer","useReader","useAnnotation","id","$","_c","reader","t0","undefined","readerWithAnnotations","t1","annotations","annotations$","pipe","items","find","item","item_0","locateResource","t2","Link","List","Stack","Text","LuNotebookPen","useReader","useAnnotation","AnnotationListItem","t0","$","_c","id","onNavigate","allowLeftIcon","t1","undefined","reader","data","annotation","t2","meta","node","textContent","range","toString","t3","navigation","goToCfi","cfi","t4","resource","notes","t5","absolutePageIndex","t6","t7","t8","t9","useObserve","switchMap","hasAnnotationsEnhancer","useReader","useAnnotations","$","_c","reader","t0","undefined","readerWithAnnotations","t1","t2","annotations","annotations$","pipe","highlights","locateResource","useAnnotations","useHighlights","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","List","AnnotationListItem","useHighlights","AnnotationsList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","useAnnotations","useBookmarks","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","resource","notes","List","AnnotationListItem","useBookmarks","BookmarksList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","Tabs","memo","useState","LuBookmark","LuNotebookPen","AnnotationsList","BookmarksList","AnnotationsDialogContent","t0","$","_c","onNavigate","defaultTab","tab","setTab","t1","Symbol","for","e","value","t2","t3","t4","t5","t6","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","AnnotationsDialogContent","AnnotationsDialog","t0","$","_c","openWith","setOpen","onNavigate","t1","t2","e","open","t3","Symbol","for","mdDown","md","t4","t5","t6","t7","t8","t9","useObserve","EMPTY","map","of","useReader","useSpineItem","t0","$","_c","absolutePageIndex","itemIndex","reader","t1","t2","undefined","spine","spineItemsManager","get","pages","observeFromAbsolutePageIndex","pipe","page","useObserve","NEVER","useSpineItem","useSpineItemReady","t0","$","_c","absolutePageIndex","itemIndex","t1","data","spineItem","t2","t3","isReady$","isReady","t4","Box","Presence","memo","useSpineItemReady","BOOKMARK_AREA_DATA_ATTRIBUTE","useAnnotations","BookmarkPageMarker","t0","$","_c","absolutePageIndex","left","top","width","t1","isReady","isItemReady","data","bookmarks","t2","find","bookmark","meta","isCfiRange","bookmarkForPage","markerSize","t3","t4","Symbol","for","_open","_closed","t5","t6","t7","t8","content","position","height","borderTop","borderLeft","t9","t10","memo","useObserve","useReader","BookmarkPageMarker","BookmarkPageMarkers","$","_c","reader","t0","layoutInfo$","t1","data","pages","t2","map","_temp","t3","pageIndex","absoluteLayout","left","top","width","useEffect","map","withLatestFrom","useReaderContext","useAnnotations","useReaderWithAnnotations","CONTINUE_TAP_GESTURE","BOOKMARK_CORNER_SIZE_PERCENT","isTopRightCornerPosition","position","containerSize","sizePercent","x","y","width","height","actualSize","Math","min","useBookmarkOnCornerTap","$","_c","reader","data","bookmarks","readerContext","t0","t1","unSub","gestures","hooks","register","t2","event$","pipe","annotations","candidates$","t3","context","candidates","page","spineItem","spineItemPageIndex","spineItemPagePosition","pageSize","hasTapOnTopRightCorner","pageEntry","spine","pages","fromSpineItemPageIndex","bookmarkForPage","find","bookmark","meta","absolutePageIndex","range","undefined","value","onAnnotationDelete","resource","id","canBookmarkPage","annotation","createAnnotation","onAnnotationCreate","useCallback","useSubscribe","map","withLatestFrom","useReaderWithAnnotations","usePreventInteractionOnSelection","$","_c","reader","t0","gestures","hooks","register","t1","event$","pipe","selection","lastSelectionOnPointerdown$","t2","t3","lastSelectionOnPointerdown","event","target","wasOrIsOnSelection","annotations","isTargetWithinHighlight","beforeTapGesture","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","useReaderContext","useReaderWithAnnotations","useSyncAnnotationsWithReader","$","_c","reader","context","t0","selectedHighlight$","pipe","_temp","annotations$","_temp2","annotationsWithSelected$","_temp3","annotations","update","syncAnnotationsWithReader","context_0","selectedHighlight","highlight","id","context_1","annotation","selected","AudioEnhancedReader","hasAudioEnhancer","useReader","useAudioReader","$","_c","reader","t0","undefined","AudioVisualizerState","useObserve","useAudioReader","useAudioVisualizer","t0","$","_c","enabled","undefined","audioReader","t1","audio","visualizer$","t2","data","visualizer","useObserve","distinctUntilChanged","map","useAudioReader","useIsCurrentAudioTrack","t0","$","_c","enabled","t1","trackId","undefined","audioReader","t2","audio","state$","pipe","state","currentTrack","id","t3","data","t4","isCurrentTrack","AudioVisualizerState","FALLBACK_TOP_COLOR","FALLBACK_BOTTOM_COLOR","MIN_BAR_HEIGHT","MAX_BAR_HEIGHT_RATIO","IDLE_LEVEL","EDGE_FADE_PORTION","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","DEFAULT_STATE_TEXTURE_AMOUNT","DEFAULT_VISUALIZER_STATE","levels","isActive","trackId","undefined","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_TEXTURE_AMOUNT","IDLE_LEVEL","clamp","value","min","max","Math","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","length","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","slice","centerBar","outerBars","reverse","resolveGradientColors","element","HTMLElement","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","AudioVisualizerState","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","EDGE_FADE_PORTION","MAX_BAR_HEIGHT_RATIO","MIN_BAR_HEIGHT","clamp","getDefaultDisplayBars","getMirroredDisplayBars","hasMeaningfulLevels","smoothstep","WaveSize","width","height","DrawWaveArgs","canvas","HTMLCanvasElement","size","visualizer","displayBarCount","displayedBars","fillStyle","CanvasGradient","drawWave","context","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","length","Array","from","easedBars","map","value","index","targetValue","easing","gap","Math","round","max","barWidth","floor","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","progress","centerDistance","abs","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","min","x","y","edgeFade","globalAlpha","beginPath","roundRect","fill","Box","useBreakpointValue","setPropertyIfChanged","setStylePropertyIfChanged","AudioVisualizerState","useCallback","useEffect","useRef","FALLBACK_BOTTOM_COLOR","FALLBACK_TOP_COLOR","drawWave","drawWaveFrame","getNormalizedDisplayBarCount","resolveGradientColors","DEFAULT_VISUALIZER","levels","isActive","trackId","undefined","AudioWaveCanvas","t0","$","_c","visualizer","t1","base","md","lg","xl","t2","displayBarCount","canvasRef","containerRef","frameRef","visualizerRef","t3","Symbol","for","displayedBarsRef","fillStyleRef","t4","width","height","sizeRef","t5","canvas","current","context","getContext","topColor","bottomColor","topVariable","topFallback","bottomVariable","bottomFallback","gradient","createLinearGradient","addColorStop","refreshFillStyle","t6","canvas_0","visualizer_0","size","displayedBars","fillStyle","t7","cancelAnimationFrame","stopAnimation","t8","tick","visualizer_1","requestAnimationFrame","startAnimation","t9","canvas_1","container","nextWidth","Math","max","clientWidth","nextHeight","clientHeight","pixelRatio","window","devicePixelRatio","nextCanvasWidth","round","nextCanvasHeight","style","context_0","setTransform","resizeCanvas","t10","t11","t12","t13","container_0","resizeObserver","ResizeObserver","observe","disconnect","t14","WebkitMaskImage","maskImage","SpineItem","CoreSpineItem","createPortal","useObserve","useAudioReader","useAudioVisualizer","useIsCurrentAudioTrack","AudioWaveCanvas","AudioSpineItem","t0","$","_c","item","audioReader","t1","audio","renderer","isAudioRenderer","audioRenderer","undefined","t2","watch","t3","data","audioDocumentContainer","t4","t5","id","enabled","trackId","isCurrentTrack","visualizer","t6","t7","t8","SpineItem","CoreSpineItem","memo","createPortal","AudioSpineItem","t0","$","_c","item","container","containerElement","t1","t2","t3","memo","createPortal","useObserve","useReader","SpineItem","Spine","t0","$","_c","children","reader","t1","spine","element$","t2","data","spineElement","t3","spineItemsManager","items$","t4","spineItems","t5","map","_temp","t6","t7","t8","item","index","c","_c","Toaster","ChakraToaster","Portal","Spinner","Stack","Toast","createToaster","ReturnType","toaster","placement","pauseOnPageIdle","$","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","action","label","meta","closable","isShallowEqual","ComponentProps","memo","useCallback","useEffect","signal","useConstant","useMemoCompare","useSignalValue","getDefaultValue","PrivateContextType","PublicContextType","ReaderContext","SignalProvider","t0","$","_c","children","props","valueSignal","_temp","t1","value","fontSizeMenuOpen","default","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","t2","open","update","uncontrolledOnFontSizeMenuOpenChange","t3","valueOrUpdater","old","_quickMenuOpen","_onQuickMenuOpenChange","t4","refitMenuOpen","uncontrolledRefitMenuOpen","t5","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","t6","t7","old_0","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t8","ReactReaderProvider","RadioGroup","ChakraRadioGroup","React","RadioProps","ItemProps","rootRef","Ref","HTMLDivElement","inputProps","InputHTMLAttributes","HTMLInputElement","Radio","forwardRef","props","ref","$","_c","children","rest","t0","t1","Symbol","for","t2","t3","Root","Slider","ChakraSlider","For","HStack","React","SliderProps","RootProps","marks","Array","value","label","ReactNode","showValue","memo","t0","$","_c","ref","rest","t1","t2","props","marksProp","t3","t4","t5","defaultValue","map","_temp","some","_temp2","hasMarkLabel","undefined","Symbol","for","t6","t7","t8","t9","SliderThumbs","_temp3","_","index","SliderMarksProps","SliderMarks","forwardRef","HTMLDivElement","length","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","value","references","const","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","Button","Fieldset","HStack","SliderValueChangeDetails","Stack","Tabs","TabsValueChangeDetails","ComponentProps","memo","useCallback","useEffect","useState","LuCheck","useLiveRef","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Radio","RadioGroup","Slider","useReaderContext","useReaderContextValue","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","SETTINGS_SCOPES_VALUES","map","item","value","SETTINGS_SCOPES_REFERENCES","flatMap","references","getScopeForReference","reference","undefined","find","includes","FontSizeControlsDialog","$","_c","context","t0","Symbol","for","fontSizeMenuOpen","onFontSizeMenuOpenChange","uncontrolledFontSize","fontSize","t1","fontSizeMin","fontSizeMax","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","tabValue","setTabValue","t2","scope","current","update","old","onFontUpdate","t3","scope_0","getValueForScope","t4","details","value_0","onScopeValueChange","t5","details_0","onTabValueChange","t6","details_1","value_1","onSliderValueChange","t7","t8","syncScopeChangeWithTabs","t9","e","open","t10","t11","t12","t13","t14","t15","_temp","t16","t17","scope_2","t18","t19","scope_3","label","t20","t21","t22","t23","t24","t25","scope_1","useCallback","useEffect","useSubscribe","map","useReader","useReaderContext","useReaderContextValue","SyncFontSettings","$","_c","reader","context","t0","Symbol","for","fontSize","uncontrolledFontSize","_fontSize","t1","t2","syncDownFontSize","timeout","setTimeout","settings","update","fontScale","clearTimeout","t3","values$","syncUpFontSize","pipe","_temp","subscribe","_fontSize_0","value","onFontSizeChange","old","useLayoutEffect","useMemo","useState","UseMeasureRect","Pick","DOMRectReadOnly","UseMeasureRef","Element","element","E","UseMeasureResult","defaultState","x","y","width","height","top","left","bottom","right","useMeasure","$","_c","setElement","rect","setRect","t0","Symbol","for","ResizeObserver","entries","contentRect","observer","t1","t2","observe","disconnect","t3","isShallowEqual","observeIntersection","SpineItem","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","NEVER","startWith","switchMap","throttleTime","UseMeasureRect","hasGalleryEnhancer","useReader","useAttachSnapshot","element","item","measures","$","_c","reader","t0","undefined","readerWithGalleryEnhancer","t1","itemLayoutChanged$","didLayout$","pipe","layoutInfo","trailing","isItemIntersecting$","HTMLElement","_temp2","t2","isVisible","innerHTML","gallery","snapshot","attachSnapshot","_temp","e","isIntersecting","entries","some","Box","Button","Text","SpineItem","memo","useObserve","useMeasure","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","useReader","useAttachSnapshot","GalleryItem","t0","$","_c","item","onNavigated","setElement","measures","element","reader","t1","t2","locateResource","mode","data","locatedResource","t3","navigation","goToSpineItem","indexOrId","t4","t5","Symbol","for","t6","meta","absolutePageIndex","t7","t8","GalleryDialog","open","setOpen","spineItemsManager","items$","items","e","mdDown","md","map","id","t9","t10","t11","t12","t13","Button","Heading","HStack","Kbd","Stack","Text","memo","LuArrowBigLeft","LuArrowBigRight","name","version","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","HelpDialog","t0","$","_c","open","setOpen","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","Reader","useObserve","combineLatest","map","NEVER","useReader","usePagination","$","_c","reader","t0","t1","pagination","state$","context","pipe","_temp2","data","_temp","item","mediaType","startsWith","state","isOnlyImages","manifest","spineItems","every","hasChapters","isFullyPrePaginated","Box","Presence","Text","useReaderContextValue","usePagination","ANIMATION_NAME_IN_OUT","_open","_closed","FloatingProgress","$","_c","t0","Symbol","for","enableFloatingProgress","quickMenuOpen","pagination","roundedProgress","Math","floor","percentageEstimateOfBook","displayableProgress","undefined","t1","t2","t3","Text","TextProps","useEffect","useState","useTime","$","_c","t0","Symbol","for","Date","time","setTime","t1","t2","interval","setInterval","clearInterval","TimeIndicator","props","toLocaleTimeString","navigator","language","hour","minute","Box","memo","TimeIndicator","FloatingTime","$","_c","t0","Symbol","for","useEffect","useState","useTransientValue","value","durationMs","$","_c","transientValue","setTransientValue","t0","t1","undefined","timeoutId","window","setTimeout","currentValue","Object","is","clearTimeout","Box","Presence","ExtraPaginationInfo","PaginationInfo","shouldUseComputedSpreadModeForViewport","watchKeys","Manifest","memo","MdScreenRotation","useObserve","combineLatest","debounceTime","distinctUntilChanged","map","NEVER","Observable","of","shareReplay","switchMap","useTransientValue","useReader","styles","HINT_TARGET_DEBOUNCE_MS","HINT_VISIBLE_MS","ANIMATION_NAME_IN_OUT","_open","_closed","_motionReduce","ANIMATION_DURATION_IN_OUT","base","ViewportDimensions","height","width","ViewportState","HintPagination","Pick","ReaderWithSpreadHintStreams","NonNullable","ReturnType","wouldRotationUseComputedSpreadMode","manifest","viewport","getSpreadRotationHintTargetKey","pagination","computedSpreadMode","viewportState","undefined","hasSpreadPair","beginHasAdjacentSpreadPage","endHasAdjacentSpreadPage","beginSpineItemIndex","beginPageIndexInSpineItem","endSpineItemIndex","endPageIndexInSpineItem","value","join","observeHintPagination","reader","state$","pipe","bufferSize","refCount","observeBeginSpineItemReady","pagination$","spineItemsManager","items$","spineItems","spineItem","isReady$","observeSpreadRotationHintTargetKey","beginSpineItemReady$","context","manifest$","settings","watch","viewportState$","isReady","useSpreadRotationHintTargetKey","$","_c","t0","t1","data","SpreadRotationHint","hintTargetKey","visibleHintKey","Symbol","for","pulse","t2","t3","isHtmlTagElement","useCallback","useSubscribe","useReader","useInterceptExternalLinks","$","_c","reader","t0","links$","subscribe","_temp","interceptExternalLinks","event","type","target","href","url","URL","window","location","host","response","confirm","open","NOTIFICATION_KEYS","fontScaleChange","useFontSizeNotifications","useCallback","isDefined","useSubscribe","filter","finalize","first","merge","mergeMap","NEVER","Observable","skip","switchMap","timer","toaster","useReaderContextValue","useFontSizeNotifications","useNotifications","$","_c","t0","Symbol","for","notificationsSubject","t1","pipe","notification","duration","toast$","subscriber","queueMicrotask","toastId","create","title","description","next","complete","t2","error","sameNotification$","n","key","toast","abort","dismiss","notifications","RcSlider","ComponentProps","memo","Box","chakra","ChakraRcSlider","ThemedSlider","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","padding","boxShadow","backgroundColor","opacity","borderColor","height","top","transform","t5","reverse","t6","rail","track","handle","width","marginTop","t7","AudioEnhancerState","useObserve","useAudioReader","useAudioState","$","_c","audioReader","t0","audio","state$","t1","data","audioState","HStack","IconButton","Stack","Text","ComponentProps","useCallback","useState","LuPause","LuPlay","useConstant","useSubscribe","BehaviorSubject","map","tap","ThemedSlider","useAudioReader","useAudioState","formatPlaybackTime","value","Number","isFinite","roundedValue","Math","floor","hours","minutes","seconds","part","String","padStart","join","AudioControlsSection","props","$","_c","audioReader","audioState","hasPlayableTrack","currentTrack","tracks","length","duration","displayDuration","max","knownDuration","undefined","hasKnownDuration","sliderMax","currentTime","min","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","_temp","t0","audio","state$","pipe","_temp2","currentTime_0","next","syncDownCurrentTime","t1","isPlaying","t2","toggle","t3","t4","t5","t6","nextValue","Array","isArray","t7","value_0","nextValue_0","setCurrentTime","t8","t9","t10","t11","t12","t13","t14","t15","state","useObserve","distinctUntilChanged","map","useAudioReader","useHasVisibleAudioTracks","$","_c","audioReader","t0","audio","visibleTrackIds$","pipe","_temp","t1","data","t2","hasVisibleAudioTracks","undefined","trackIds","length","Popover","ChakraPopover","IconButton","Portal","React","HiOutlineInformationCircle","ToggleTipProps","RootProps","showArrow","portalled","portalRef","RefObject","HTMLElement","content","ReactNode","ToggleTip","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","positioning","gutter","t2","t3","t4","t5","t6","t7","InfoTip","Partial","Symbol","for","Progress","ChakraProgress","InfoTip","React","ProgressBar","forwardRef","HTMLDivElement","TrackProps","props","ref","$","_c","t0","Symbol","for","t1","ProgressLabelProps","LabelProps","info","ReactNode","ProgressLabel","children","rest","ProgressRoot","Root","ProgressValueText","ValueText","usePagination","useNavigationContext","pagination","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","hasChapters","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","HStack","Stack","Text","ProgressBar","ProgressRoot","ProgressValueText","useNavigationContext","usePagination","PaginationInfoSection","$","_c","pagination","hasOnlyOnePage","leftPageIndex","rightPageIndex","totalApproximatePages","beginAndEndAreDifferent","t0","percentageEstimateOfBook","Math","round","progress","t1","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","title","chapterTitle","t2","Symbol","for","t3","t4","t5","t6","t7","t8","beginAbsolutePageIndex","hasChapters","t9","Presence","PresenceProps","memo","QuickBar","t0","$","_c","children","position","rest","t1","t2","bottom","top","_open","_closed","t3","Box","ComponentProps","useCallback","useEffect","signal","useObserve","useSignalState","useSubscribe","useReader","useNavigationContext","usePagination","ThemedSlider","useSliderValues","$","_c","pagination","isUsingSpread","beginPageIndex","currentRealPage","totalApproximatePages","t0","undefined","currentPage","Math","floor","t1","default","value","valueSignal","max","t2","t3","update","t4","min","Scrubber","props","reader","data","context","manifest","reverse","readingDirection","isBeginWithinChapter","isScrubberWithinChapter","values","Array","isArray","value_0","pageIndex","navigation","goToAbsolutePageIndex","absolutePageIndex","animation","goToPageOfSpineItem","spineItemId","state","beginSpineItemIndex","onChange","subject","throttleLock","duration","trigger","disabled","t5","style","t6","step","Box","Collapsible","HStack","IconButton","Stack","memo","useEffect","useRef","useState","BiFontSize","BsBookmarks","LuChevronDown","LuCircleHelp","LuGalleryHorizontal","LuNotebookPen","LuSearch","LuTableOfContents","LuZoomIn","LuZoomOut","MdOutlineFitScreen","RiGalleryView2","RxDoubleArrowDown","RxDoubleArrowLeft","RxDoubleArrowRight","RxDoubleArrowUp","useObserve","map","AudioControlsSection","useHasVisibleAudioTracks","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasSearchEnhancer","useReader","useReaderContextValue","PaginationInfoSection","QuickBar","Scrubber","BottomBar","t0","$","_c","open","onItemClick","boxRef","reader","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t2","navigation","state$","t3","data","t4","settings","values$","t5","t6","zoom","pipe","_temp","t7","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","t8","t9","current","resizeObserver","ResizeObserver","entries","entry","update","observe","disconnect","t10","t11","goToLeftOrTopSpineItem","t12","canGoLeftSpineItem","canGoTopSpineItem","t13","t14","t15","t16","width","maxWidth","height","t17","canGoRightSpineItem","canGoBottomSpineItem","t18","goToRightOrBottomSpineItem","t19","t20","t21","t22","t23","open_0","t24","transform","t25","t26","t27","t28","t29","t30","t31","t32","t33","exit","animate","enter","scale","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","state","currentScale","undefined","useCallback","useEffect","useState","screenfull","readFullscreenSupport","isEnabled","readFullscreenState","isFullscreen","useFullscreen","setIsFullscreen","isFullscreenSupported","setIsFullscreenSupported","syncFullscreenState","current","next","onToggleFullscreenClick","exit","request","document","documentElement","navigationUI","error","console","on","off","HStack","IconButton","Stack","Text","memo","IoIosArrowBack","IoMdMore","MdFullscreen","MdFullscreenExit","useObserve","useFullscreen","useReader","QuickBar","TopBar","t0","$","_c","open","onItemClick","reader","t1","context","manifest$","t2","data","manifest","isFullscreen","isFullscreenSupported","onToggleFullscreenClick","t3","t4","Symbol","for","t5","t6","title","t7","t8","t9","t10","t11","t12","t13","useReaderContextValue","useQuickMenu","$","_c","t0","Symbol","for","quickMenuOpen","onQuickMenuOpenChange","_quickMenuOpen","_onQuickMenuOpenChange","t1","t2","t3","const","memo","useReaderContextValue","BottomBar","TopBar","useQuickMenu","QuickMenu","t0","$","_c","onItemClick","quickMenuOpen","t1","Symbol","for","refitMenuOpen","fontSizeMenuOpen","selectedHighlight","t2","t3","t4","t5","t6","useCallback","useSubscribe","filter","tap","withLatestFrom","useReader","useQuickMenu","useQuickMenuToggleGesture","$","_c","onQuickMenuOpenChange","reader","t0","gestures","gestures$","pipe","_temp","selection","selection$","lastSelectionOnPointerdown$","t1","selectionOnPointerdown","_temp2","quickMenuToggleGesture","event","type","handled","val","Field","ChakraField","React","FieldProps","Omit","RootProps","label","ReactNode","helperText","errorText","optionalText","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","t2","t3","Button","Fieldset","Stack","RefitEnhancerOptions","memo","useObserve","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Field","Radio","RadioGroup","Slider","hasRefitEnhancer","useReader","useReaderContextValue","OptionValue","RefitDialog","$","_c","t0","Symbol","for","refitMenuOpen","onRefitMenuOpenChange","reader","t1","undefined","readerWithRefit","t2","refit","settings$","t3","data","refitSettings","t4","e","open","t5","t6","t7","e_0","value","update","viewportFit","customWidth","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","e_1","value_0","t18","t19","t20","t21","t22","t23","Link","Text","memo","SearchListItem","t0","$","_c","contextText","t1","startOffset","t2","text","cfi","t3","onClick","absolutePageIndex","undefined","t4","substring","Math","max","before","t5","length","min","after","t6","Symbol","for","margin","overflow","t7","e","preventDefault","t8","display","t9","t10","t11","textDecoration","t12","t13","t14","useConstant","useObserve","BehaviorSubject","distinctUntilChanged","map","merge","of","switchMap","timer","hasSearchEnhancer","useReader","DEBOUNCE_TIME","useSearch","$","_c","searchSubject","_temp","data","searchValue","reader","t0","undefined","readerWithSearch","t1","t2","pipe","value","type","const","search","_temp2","t3","next","bind","t4","t5","t6","setValue","status","Input","Stack","Text","React","memo","useCallback","useObserve","useReader","SearchListItem","useSearch","SearchDialogContent","t0","$","_c","onNavigate","reader","value","searchValue","setValue","status","data","t1","e","target","onValueChange","t2","navigation","cfi","goToCfi","onClick","t3","locateResource","slice","t4","consolidatedResults","t5","t6","Symbol","for","overflow","overflowY","t7","t8","length","t9","map","result","j","meta","range","startContainer","parentElement","textContent","itemPageIndex","startOffset","absolutePageIndex","t10","t11","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","SearchDialogContent","SearchDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","Link","List","Stack","Text","React","memo","LuCircleCheck","useObserve","useReader","usePagination","TableOfContentsDialogContent","t0","$","_c","onNavigate","reader","data","t1","context","manifest","undefined","nav","pagination","toc","absolutePageIndex","beginAbsolutePageIndex","currentSubChapter","beginChapterInfo","subChapter","buildTocForItem","tocItem","index","lvl","display","alignItems","navigation","goToUrl","href","path","title","contents","length","map","tocItem_0","index_0","t2","t3","t4","t5","t6","t7","tocItem_1","index_1","t8","Root","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","TableOfContentsDialogContent","TableOfContentsDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","useEffect","MAX_ZOOM_SCALE","useReader","useReaderContextValue","useZoomSettings","$","_c","reader","t0","Symbol","for","zoomMaxScale","t1","gestures","settings","syncSettingsWithGesturesEnhancer","update","t2","memo","useObserve","animationFrameScheduler","map","throttleTime","FloatingMenu","Slider","MAX_ZOOM_SCALE","useReader","useReaderContextValue","STEP","MIN","normalizeZoomValue","value","min","max","step","clamped","Math","stepped","round","ZoomControls","$","_c","t0","Symbol","for","zoomMaxScale","t1","undefined","reader","t2","zoom","state$","pipe","_temp","leading","trailing","t3","data","t4","zoomScaleValue","t5","_temp2","t6","t7","isZooming","t8","normalizedZoomScaleValue","t9","t10","t11","e","exit","scaleAt","constrain","t12","t13","state","currentScale","state_0","Box","BoxProps","Presence","ComponentProps","memo","useCallback","useState","AnnotateControls","AnnotationDrawer","AnnotationsDialog","BookmarkPageMarkers","useBookmarkOnCornerTap","usePreventInteractionOnSelection","useSyncAnnotationsWithReader","Spine","Toaster","ReactReaderProvider","useReaderContextValue","FontSizeControlsDialog","SyncFontSettings","GalleryDialog","HelpDialog","FloatingProgress","FloatingTime","SpreadRotationHint","useInterceptExternalLinks","useNotifications","QuickMenu","useQuickMenu","useQuickMenuToggleGesture","RefitDialog","SearchDialog","TableOfContentsDialog","useZoomSettings","ZoomControls","ANIMATION_NAME_IN_OUT","_open","_closed","BookmarksEffects","Effects","$","_c","t0","Symbol","for","InnerReactReader","children","rest","t1","enableFloatingTime","onItemClick","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","undefined","isGalleryOpen","setIsGalleryOpen","quickMenuOpen","setQuickMenuOpen","t2","onNavigate","t3","item","_onItemClick","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","open","t19","t20","t21","t22","t23","t24","ReactReader","props","slots","container","containerProps"],"sources":["../src/constants.ts","../src/context/context.ts","../src/context/useReaderContext.ts","../src/common/FloatingMenu.tsx","../src/context/useReader.ts","../src/annotations/useReaderWithAnnotations.ts","../src/annotations/AnnotateControls.tsx","../src/common/utils.ts","../src/components/ui/close-button.tsx","../src/components/ui/drawer.tsx","../src/annotations/AnnotationDrawer.tsx","../src/components/ui/dialog.tsx","../src/annotations/useAnnotation.ts","../src/annotations/AnnotationListItem.tsx","../src/annotations/useAnnotations.ts","../src/annotations/useHighlights.ts","../src/annotations/AnnotationsList.tsx","../src/annotations/bookmarks/useBookmarks.ts","../src/annotations/bookmarks/BookmarksList.tsx","../src/annotations/AnnotationsDialogContent.tsx","../src/annotations/AnnotationsDialog.tsx","../src/common/useSpineItem.ts","../src/common/useSpineItemReady.ts","../src/annotations/bookmarks/BookmarkPageMarker.tsx","../src/annotations/bookmarks/BookmarkPageMarkers.tsx","../src/annotations/bookmarks/useBookmarkOnCornerTap.ts","../src/annotations/usePreventInteractionOnSelection.ts","../src/annotations/useSyncAnnotationsWithReader.ts","../src/audio/useAudioReader.ts","../src/audio/useAudioVisualizer.ts","../src/audio/useIsCurrentAudioTrack.ts","../src/audio/wave/constants.ts","../src/audio/wave/shaping.ts","../src/audio/wave/drawWave.ts","../src/audio/wave/AudioWaveCanvas.tsx","../src/audio/AudioSpineItem.tsx","../src/common/SpineItem.tsx","../src/common/Spine.tsx","../src/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../package.json","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/common/useTransientValue.ts","../src/navigation/SpreadRotationHint.module.css","../src/navigation/SpreadRotationHint.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/fonts/useFontSizeNotifications.ts","../src/notifications/useNotifications.ts","../src/quickmenu/ThemedSlider.tsx","../src/audio/useAudioState.ts","../src/audio/AudioControlsSection.tsx","../src/audio/useHasVisibleAudioTracks.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/Scrubber.tsx","../src/quickmenu/BottomBar.tsx","../src/common/useFullscreen.ts","../src/quickmenu/TopBar.tsx","../src/quickmenu/useQuickMenu.ts","../src/quickmenu/QuickMenu.tsx","../src/quickmenu/useQuickMenuToggleGesture.ts","../src/components/ui/field.tsx","../src/refit/RefitDialog.tsx","../src/search/SearchListItem.tsx","../src/search/useSearch.ts","../src/search/SearchDialogContent.tsx","../src/search/SearchDialog.tsx","../src/toc/TableOfContentsDialogContent.tsx","../src/toc/TableOfContentsDialog.tsx","../src/zoom/useZoomSettings.ts","../src/zoom/ZoomControls.tsx","../src/ReactReader.tsx"],"sourcesContent":["export const BOOKMARK_AREA_DATA_ATTRIBUTE = `data-bookmark-area`\nexport const MAX_ZOOM_SCALE = 5\n","import type { Reader } from \"@prose-reader/core\"\nimport type {\n Annotation,\n RuntimeAnnotation,\n} from \"@prose-reader/enhancer-annotations\"\nimport type { EnhancerAPI as GesturesEnhancerAPI } from \"@prose-reader/enhancer-gestures\"\nimport { createContext, type Dispatch, type SetStateAction } from \"react\"\nimport { type Signal, signal } from \"reactjrx\"\nimport { Subject } from \"rxjs\"\nimport type { ReaderNotification } from \"../notifications/types\"\nimport type {\n PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nexport type PrivateContextType = {\n /**\n * Internal fallback values used for uncontrolled settings. This way the\n * Reader works as intended but:\n * - there are no persistent settings\n * - the settings are valid only for the current mount runtime\n */\n uncontrolledFontSize: number\n refitMenuOpen: boolean\n onRefitMenuOpenChange: (open: boolean) => void\n fontSizeMenuOpen: boolean\n onFontSizeMenuOpenChange: (open: boolean) => void\n notificationsSubject: Subject<ReaderNotification>\n quickMenuBottomBarBoundingBoxSignal: Signal<ResizeObserverEntry | undefined>\n fontSizeMin: number\n fontSizeMax: number\n _quickMenuOpen: boolean\n _onQuickMenuOpenChange: Dispatch<SetStateAction<boolean>>\n selectedHighlight:\n | {\n highlight?: RuntimeAnnotation\n selection?: {\n selection: Selection\n itemIndex: number\n }\n }\n | undefined\n}\n\nexport type PublicContextType = {\n reader: (Reader & GesturesEnhancerAPI) | undefined\n enableFloatingTime?: boolean\n enableFloatingProgress?: boolean\n onItemClick?: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n quickMenuOpen?: boolean\n onQuickMenuOpenChange?: Dispatch<SetStateAction<boolean>>\n fontSize?: number\n zoomMaxScale?: number\n onFontSizeChange?: (\n from: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | \"internal\",\n value: number,\n ) => void\n fontSizeScope?: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE\n onFontSizeScopeChange?: (scope: PROSE_REACT_READER_SETTINGS_SCOPE) => void\n fontSizeValues?: Record<\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n number | undefined\n >\n annotations?: Annotation[]\n onAnnotationCreate?: (annotation: Annotation) => void\n onAnnotationUpdate?: (\n annotation: Pick<Annotation, \"id\" | \"highlightColor\" | \"notes\">,\n ) => void\n onAnnotationDelete?: (id: string) => void\n}\n\nexport type ReaderContextType = PrivateContextType & PublicContextType\n\nexport const getDefaultValue = (): ReaderContextType => ({\n _quickMenuOpen: false,\n _onQuickMenuOpenChange: (prev) => prev,\n reader: undefined,\n quickMenuBottomBarBoundingBoxSignal: signal<ResizeObserverEntry | undefined>({\n default: undefined,\n }),\n notificationsSubject: new Subject<ReaderNotification>(),\n refitMenuOpen: false,\n onRefitMenuOpenChange: () => {},\n fontSizeMenuOpen: false,\n onFontSizeMenuOpenChange: () => {},\n fontSizeMin: 0.2,\n fontSizeMax: 5,\n uncontrolledFontSize: 1,\n enableFloatingProgress: true,\n selectedHighlight: undefined,\n})\n\nexport const ReaderContext = createContext(\n signal({ default: getDefaultValue() }),\n)\n","import { isShallowEqual, pick, watchKeys } from \"@prose-reader/core\"\nimport { useContext } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { ReaderContext, type ReaderContextType } from \"./context\"\n\nexport const useReaderContextValue = <T extends keyof ReaderContextType>(\n keys: T[],\n) => {\n const context = useContext(ReaderContext)\n\n return useObserve(\n () => context.pipe(watchKeys(keys)),\n {\n compareFn: isShallowEqual,\n defaultValue: pick(context.value, keys),\n },\n [],\n ).data\n}\n\nexport const useReaderContext = () => {\n return useContext(ReaderContext)\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSignalValue } from \"reactjrx\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS = 24\n\n// @todo use Popover\nexport const FloatingMenu = memo(\n ({\n children,\n ...rest\n }: {\n present: boolean\n children: React.ReactNode\n } & PresenceProps) => {\n const { quickMenuBottomBarBoundingBoxSignal } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"zoomMaxScale\",\n ])\n const quickMenuBottomBarBoundingBox = useSignalValue(\n quickMenuBottomBarBoundingBoxSignal,\n )\n const bottomBarHeight =\n quickMenuBottomBarBoundingBox?.borderBoxSize?.[0]?.blockSize ||\n SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS\n\n return (\n <Presence\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n position=\"absolute\"\n bottom={`calc(${bottomBarHeight}px + var(--chakra-spacing-4))`}\n right={4}\n backgroundColor=\"bg.panel\"\n shadow=\"sm\"\n borderRadius=\"md\"\n p={2}\n display=\"flex\"\n flexDirection=\"row\"\n gap={2}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport type { AnnotationsEnhancerAPI } from \"@prose-reader/enhancer-annotations\"\nimport type { AudioEnhancerAPI } from \"@prose-reader/enhancer-audio\"\nimport type { GalleryEnhancerAPI } from \"@prose-reader/enhancer-gallery\"\nimport type { RefitEnhancerAPI } from \"@prose-reader/enhancer-refit\"\nimport type { SearchEnhancerAPI } from \"@prose-reader/enhancer-search\"\nimport { useReaderContextValue } from \"./useReaderContext\"\n\nexport const useReader = () => {\n const { reader } = useReaderContextValue([\"reader\"])\n\n return reader\n}\n\nexport const hasSearchEnhancer = (\n reader?: Reader,\n): reader is Reader & SearchEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_SEARCH\" in reader\n}\n\nexport const hasAudioEnhancer = (\n reader?: Reader,\n): reader is Reader & AudioEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_AUDIO\" in reader\n}\n\nexport const hasAnnotationsEnhancer = (\n reader?: Reader,\n): reader is Reader & AnnotationsEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_ANNOTATIONS\" in reader\n}\n\nexport const hasGalleryEnhancer = (\n reader?: Reader,\n): reader is Reader & GalleryEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_GALLERY\" in reader\n}\n\nexport const hasRefitEnhancer = (\n reader?: Reader,\n): reader is Reader & RefitEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_REFIT\" in reader\n}\n","import { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useReaderWithAnnotations = () => {\n const reader = useReader()\n const readerWithBookmarks = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return readerWithBookmarks\n}\n","import { Button } from \"@chakra-ui/react\"\nimport { FaEdit } from \"react-icons/fa\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { EMPTY, map, startWith, switchMap } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const AnnotateControls = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n const { selectedHighlight } = useReaderContextValue([\"selectedHighlight\"])\n const { data: isOpen } = useObserve(\n () =>\n reader?.selection.selectionOver$.pipe(\n switchMap(() =>\n reader.selection.selectionEnd$.pipe(\n map(() => false),\n startWith(true),\n ),\n ),\n ) ?? EMPTY,\n { defaultValue: false },\n [reader],\n )\n\n return (\n <FloatingMenu present={isOpen && !selectedHighlight}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n const selection = reader?.selection.getSelection()\n\n if (!selection) return\n\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n selection,\n },\n }))\n }}\n >\n <FaEdit />\n Annotate\n </Button>\n <Button variant=\"outline\" size=\"sm\" disabled>\n <LuNotebookPen />\n Bookmark\n </Button>\n </FloatingMenu>\n )\n}\n","export const truncateText = (text: string, maxLength = 50): string => {\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength)}...`\n}\n","import type { ButtonProps } from \"@chakra-ui/react\"\nimport { IconButton as ChakraIconButton } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { LuX } from \"react-icons/lu\"\n\nexport type CloseButtonProps = ButtonProps\n\nexport const CloseButton = React.forwardRef<\n HTMLButtonElement,\n CloseButtonProps\n>(function CloseButton(props, ref) {\n return (\n <ChakraIconButton variant=\"ghost\" aria-label=\"Close\" ref={ref} {...props}>\n {props.children ?? <LuX />}\n </ChakraIconButton>\n )\n})\n","import { Drawer as ChakraDrawer, Portal } from \"@chakra-ui/react\"\nimport { CloseButton } from \"./close-button\"\nimport * as React from \"react\"\n\ninterface DrawerContentProps extends ChakraDrawer.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n offset?: ChakraDrawer.ContentProps[\"padding\"]\n}\n\nexport const DrawerContent = React.forwardRef<\n HTMLDivElement,\n DrawerContentProps\n>(function DrawerContent(props, ref) {\n const { children, portalled = true, portalRef, offset, ...rest } = props\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner padding={offset}>\n <ChakraDrawer.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n )\n})\n\nexport const DrawerCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n return (\n <ChakraDrawer.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref} />\n </ChakraDrawer.CloseTrigger>\n )\n})\n\nexport const DrawerTrigger = ChakraDrawer.Trigger\nexport const DrawerRoot = ChakraDrawer.Root\nexport const DrawerFooter = ChakraDrawer.Footer\nexport const DrawerHeader = ChakraDrawer.Header\nexport const DrawerBody = ChakraDrawer.Body\nexport const DrawerBackdrop = ChakraDrawer.Backdrop\nexport const DrawerDescription = ChakraDrawer.Description\nexport const DrawerTitle = ChakraDrawer.Title\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger\n","import { Box, Button, Stack, Text, Textarea } from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { tap } from \"rxjs\"\nimport { truncateText } from \"../common/utils\"\nimport {\n DrawerBackdrop,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerRoot,\n} from \"../components/ui/drawer\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nconst HIGHLIGHT_COLORS = [\n \"rgba(216, 191, 216, 1)\", // Light purple\n \"rgba(255, 225, 125, 1)\", // Soft yellow\n \"rgba(144, 238, 144, 1)\", // Light green\n \"rgba(173, 216, 230, 1)\", // Light blue\n \"rgba(255, 182, 193, 1)\", // Light pink\n] as const\n\nexport const AnnotationDrawer = memo(() => {\n const reader = useReaderWithAnnotations()\n const {\n selectedHighlight,\n onAnnotationCreate,\n onAnnotationUpdate,\n onAnnotationDelete,\n } = useReaderContextValue([\n \"selectedHighlight\",\n \"onAnnotationCreate\",\n \"onAnnotationUpdate\",\n \"onAnnotationDelete\",\n ])\n const context = useReaderContext()\n const { highlight, selection } = selectedHighlight ?? {}\n const [selectedColor, setSelectedColor] = useState<string>(\n HIGHLIGHT_COLORS[0],\n )\n const [contents, setContents] = useState<string>(\"\")\n const isOpen = !!(selection ?? highlight)\n\n const onClose = () => {\n context.update((state) => ({\n ...state,\n selectedHighlight: undefined,\n }))\n }\n\n const onOpenChange: ComponentProps<typeof DrawerRoot>[\"onOpenChange\"] = (\n event,\n ) => {\n if (!event.open) {\n onClose()\n }\n }\n\n const highlightColor = highlight?.highlightColor\n const highlightContent = highlight?.notes\n\n useEffect(() => {\n void isOpen\n\n setContents(\"\")\n }, [isOpen])\n\n useEffect(() => {\n setContents(highlightContent ?? \"\")\n }, [highlightContent])\n\n useEffect(() => {\n void isOpen\n\n if (highlightColor) {\n setSelectedColor(highlightColor)\n } else {\n setSelectedColor(HIGHLIGHT_COLORS[0])\n }\n }, [highlightColor, isOpen])\n\n const onOpenDrawerOnTap = useCallback(\n function openDrawerOnTap() {\n return reader?.annotations.highlightTap$.pipe(\n tap(({ highlight }) => {\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n highlight,\n },\n }))\n }),\n )\n },\n [reader, context],\n )\n\n useSubscribe(onOpenDrawerOnTap)\n\n return (\n <DrawerRoot placement=\"bottom\" onOpenChange={onOpenChange} open={isOpen}>\n <DrawerBackdrop />\n <DrawerContent>\n <DrawerHeader borderBottomWidth=\"1px\">\n {highlight\n ? \"Highlight\"\n : `Selection: \"${truncateText(selection?.selection?.toString() ?? \"\", 10)}\"`}\n </DrawerHeader>\n <DrawerBody gap={4} display=\"flex\" flexDirection=\"column\" pb={4}>\n <Stack>\n <Stack gap={2} flexDirection=\"row\">\n {HIGHLIGHT_COLORS.map((color) => (\n <Box\n bgColor={color}\n height={10}\n width={10}\n key={color}\n borderRadius=\"50%\"\n cursor=\"pointer\"\n {...(selectedColor === color && {\n border: \"4px solid white\",\n })}\n onClick={() => setSelectedColor(color)}\n />\n ))}\n </Stack>\n <Text>Annotation:</Text>\n <Textarea\n value={contents}\n onChange={(event) => setContents(event.target.value)}\n />\n </Stack>\n {!!selection && (\n <Button\n onClick={() => {\n onClose()\n\n const annotation = reader?.annotations.createAnnotation({\n ...selection,\n highlightColor: selectedColor,\n notes: contents,\n })\n\n if (annotation) {\n onAnnotationCreate?.(annotation)\n }\n }}\n >\n Highlight\n </Button>\n )}\n {!!highlight && (\n <Stack direction=\"row\">\n <Button\n flex={1}\n onClick={() => {\n onClose()\n\n onAnnotationUpdate?.({\n id: highlight.id,\n highlightColor: selectedColor,\n notes: contents,\n })\n }}\n >\n Update\n </Button>\n <Button\n flex={1}\n variant=\"surface\"\n onClick={() => {\n onClose()\n\n onAnnotationDelete?.(highlight.id)\n }}\n >\n Remove\n </Button>\n </Stack>\n )}\n </DrawerBody>\n </DrawerContent>\n </DrawerRoot>\n )\n})\n","import { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { CloseButton } from \"./close-button\"\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n backdrop?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(function DialogContent(props, ref) {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n )\n})\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref}>\n {props.children}\n </CloseButton>\n </ChakraDialog.CloseTrigger>\n )\n})\n\nexport const DialogRoot = ChakraDialog.Root\nexport const DialogFooter = ChakraDialog.Footer\nexport const DialogHeader = ChakraDialog.Header\nexport const DialogBody = ChakraDialog.Body\nexport const DialogBackdrop = ChakraDialog.Backdrop\nexport const DialogTitle = ChakraDialog.Title\nexport const DialogDescription = ChakraDialog.Description\nexport const DialogTrigger = ChakraDialog.Trigger\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger\n","import { isDefined, useObserve } from \"reactjrx\"\nimport { filter, map, switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotation = (id: string) => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n map((items) => items.find((item) => item.id === id)),\n filter(isDefined),\n switchMap((item) => readerWithAnnotations.locateResource(item)),\n ),\n [readerWithAnnotations],\n )\n}\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useReader } from \"../context/useReader\"\nimport { useAnnotation } from \"./useAnnotation\"\n\nexport const AnnotationListItem = ({\n id,\n onNavigate,\n allowLeftIcon = true,\n}: {\n id: string\n onNavigate: () => void\n allowLeftIcon?: boolean\n}) => {\n const reader = useReader()\n const { data: annotation } = useAnnotation(id)\n const textContent =\n annotation?.meta.range?.toString() || annotation?.meta.node?.textContent\n\n return (\n <List.Item>\n <Link\n href=\"#\"\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToCfi(annotation?.meta.cfi ?? \"\")\n }}\n >\n {annotation?.resource?.notes ? (\n <List.Indicator asChild>\n <LuNotebookPen />\n </List.Indicator>\n ) : allowLeftIcon ? (\n <List.Indicator asChild visibility=\"hidden\">\n <LuNotebookPen />\n </List.Indicator>\n ) : null}\n <Stack gap={0}>\n {textContent ? (\n <Text lineClamp={2} fontSize=\"md\">\n {textContent}\n </Text>\n ) : (\n <Text lineClamp={2} fontSize=\"md\" fontStyle=\"italic\">\n Page {(annotation?.meta.absolutePageIndex ?? 0) + 1}\n </Text>\n )}\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Book page: ${\n annotation?.meta?.absolutePageIndex !== undefined\n ? annotation.meta.absolutePageIndex + 1\n : \"unknown (not loaded)\"\n }`}</Text>\n </Stack>\n </Link>\n </List.Item>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotations = () => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n switchMap((highlights) => {\n return readerWithAnnotations.locateResource(highlights)\n }),\n ),\n [readerWithAnnotations],\n )\n}\n","import { useAnnotations } from \"./useAnnotations\"\n\nexport const useHighlights = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter((annotation) => annotation.meta.isCfiRange),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"./AnnotationListItem\"\nimport { useHighlights } from \"./useHighlights\"\n\nexport const AnnotationsList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useHighlights()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n />\n ))}\n </List.Root>\n )\n}\n","import { useAnnotations } from \"../useAnnotations\"\n\nexport const useBookmarks = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter(\n (annotation) => !annotation.meta.isCfiRange && !annotation.resource.notes,\n ),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"../AnnotationListItem\"\nimport { useBookmarks } from \"./useBookmarks\"\n\nexport const BookmarksList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useBookmarks()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n allowLeftIcon={false}\n />\n ))}\n </List.Root>\n )\n}\n","import { Tabs } from \"@chakra-ui/react\"\nimport { memo, useState } from \"react\"\nimport { LuBookmark, LuNotebookPen } from \"react-icons/lu\"\nimport { AnnotationsList } from \"./AnnotationsList\"\nimport { BookmarksList } from \"./bookmarks/BookmarksList\"\n\nexport const AnnotationsDialogContent = memo(\n ({\n onNavigate,\n defaultTab,\n }: {\n onNavigate: () => void\n defaultTab: \"bookmarks\" | \"annotations\" | undefined\n }) => {\n const [tab, setTab] = useState(defaultTab ?? \"bookmarks\")\n\n return (\n <Tabs.Root\n value={tab}\n onValueChange={(e) => setTab(e.value as \"bookmarks\" | \"annotations\")}\n >\n <Tabs.List>\n <Tabs.Trigger value=\"bookmarks\">\n <LuBookmark />\n Bookmarks\n </Tabs.Trigger>\n <Tabs.Trigger value=\"annotations\">\n <LuNotebookPen />\n Annotations\n </Tabs.Trigger>\n <Tabs.Indicator />\n </Tabs.List>\n <Tabs.Content value=\"bookmarks\">\n <BookmarksList onNavigate={onNavigate} />\n </Tabs.Content>\n <Tabs.Content value=\"annotations\">\n <AnnotationsList onNavigate={onNavigate} />\n </Tabs.Content>\n </Tabs.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { AnnotationsDialogContent } from \"./AnnotationsDialogContent\"\n\nexport const AnnotationsDialog = memo(\n ({\n openWith,\n setOpen,\n onNavigate,\n }: {\n openWith: \"bookmarks\" | \"annotations\" | undefined\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={!!openWith}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Annotations</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1}>\n <AnnotationsDialogContent\n onNavigate={onNavigate}\n defaultTab={openWith}\n />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useObserve } from \"reactjrx\"\nimport { EMPTY, map, of } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useSpineItem = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const reader = useReader()\n\n return useObserve(() => {\n if (!reader) return EMPTY\n\n if (itemIndex !== undefined)\n return of(reader.spine.spineItemsManager.get(itemIndex))\n\n if (absolutePageIndex !== undefined) {\n return reader.spine.pages\n .observeFromAbsolutePageIndex(absolutePageIndex)\n .pipe(\n map((page) => reader.spine.spineItemsManager.get(page?.itemIndex)),\n )\n }\n\n return EMPTY\n }, [itemIndex, absolutePageIndex, reader])\n}\n","import { useObserve } from \"reactjrx\"\nimport { NEVER } from \"rxjs\"\nimport { useSpineItem } from \"./useSpineItem\"\n\nexport const useSpineItemReady = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const { data: spineItem } = useSpineItem({ absolutePageIndex, itemIndex })\n const { data: isReady } = useObserve(\n () => (!spineItem ? NEVER : spineItem.isReady$),\n [spineItem],\n )\n\n return { spineItem, isReady }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSpineItemReady } from \"../../common/useSpineItemReady\"\nimport { BOOKMARK_AREA_DATA_ATTRIBUTE } from \"../../constants\"\nimport { useAnnotations } from \"../useAnnotations\"\n\nexport const BookmarkPageMarker = memo(\n ({\n absolutePageIndex,\n left,\n top,\n width,\n }: {\n absolutePageIndex: number\n left: number\n top: number\n width: number\n }) => {\n const { isReady: isItemReady } = useSpineItemReady({\n absolutePageIndex,\n })\n const { data: bookmarks } = useAnnotations()\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex === absolutePageIndex &&\n !bookmark.meta.isCfiRange,\n )\n\n /**\n * Stale bookmarks means we cannot assert at the moment whether the page is marked or not.\n * In this case we just hide the bookmark button. You may want to have different UX to handle\n * this case.\n *\n * This also avoid having a flash where you show an non bookmarked icon and right away change it with\n * a valid marked page icon.\n */\n if (!isItemReady) return null\n\n const markerSize = (width * 0.1) / 2\n\n return (\n <Presence\n present={!!bookmarkForPage}\n lazyMount\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n >\n <Box\n data-bookmark-area={BOOKMARK_AREA_DATA_ATTRIBUTE}\n position=\"absolute\"\n left={left + width}\n transform=\"translateX(-100%)\"\n pointerEvents=\"none\"\n top={top}\n width={markerSize}\n height={markerSize}\n _before={{\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n borderTop: `${markerSize}px solid #03030373`,\n borderLeft: `${markerSize}px solid transparent`,\n }}\n />\n </Presence>\n )\n },\n)\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../../context/useReader\"\nimport { BookmarkPageMarker } from \"./BookmarkPageMarker\"\n\nexport const BookmarkPageMarkers = memo(() => {\n const reader = useReader()\n const { data: pages } = useObserve(() => reader?.layoutInfo$, [reader])\n\n return (\n <>\n {pages?.pages.map(\n ({ absoluteLayout: { left, top, width } }, pageIndex) => (\n <BookmarkPageMarker\n key={pageIndex}\n absolutePageIndex={pageIndex}\n left={left}\n top={top}\n width={width}\n />\n ),\n )}\n </>\n )\n})\n","import { useEffect } from \"react\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderContext } from \"../../context/useReaderContext\"\nimport { useAnnotations } from \"../useAnnotations\"\nimport { useReaderWithAnnotations } from \"../useReaderWithAnnotations\"\n\nconst CONTINUE_TAP_GESTURE = true\nconst BOOKMARK_CORNER_SIZE_PERCENT = 10\n\nconst isTopRightCornerPosition = ({\n position,\n containerSize,\n sizePercent,\n}: {\n position: {\n x: number\n y: number\n }\n containerSize: {\n width: number\n height: number\n }\n sizePercent: number\n}) => {\n const actualSize =\n Math.min(containerSize.width, containerSize.height) * (sizePercent / 100)\n\n return (\n position.x > containerSize.width - actualSize && position.y < actualSize\n )\n}\n\nexport const useBookmarkOnCornerTap = () => {\n const reader = useReaderWithAnnotations()\n const { data: bookmarks } = useAnnotations()\n const readerContext = useReaderContext()\n\n useEffect(() => {\n if (!reader) return\n\n const unSub = reader.gestures.hooks.register(\n \"beforeTapGesture\",\n ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader?.annotations.candidates$),\n map(([context, candidates]) => {\n if (!context.page) return CONTINUE_TAP_GESTURE\n\n const {\n spineItem,\n spineItemPageIndex,\n spineItemPagePosition,\n pageSize,\n } = context.page\n\n const hasTapOnTopRightCorner = isTopRightCornerPosition({\n position: spineItemPagePosition,\n containerSize: pageSize,\n sizePercent: BOOKMARK_CORNER_SIZE_PERCENT,\n })\n\n if (hasTapOnTopRightCorner) {\n const pageEntry = reader.spine.pages.fromSpineItemPageIndex(\n spineItem,\n spineItemPageIndex,\n )\n\n if (!pageEntry) return CONTINUE_TAP_GESTURE\n\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex ===\n pageEntry.absolutePageIndex &&\n bookmark.meta.range === undefined,\n )\n\n if (bookmarkForPage) {\n readerContext.value.onAnnotationDelete?.(\n bookmarkForPage.resource.id,\n )\n\n return !CONTINUE_TAP_GESTURE\n }\n\n const canBookmarkPage = candidates?.[pageEntry.absolutePageIndex]\n\n if (canBookmarkPage) {\n const annotation = reader?.annotations.createAnnotation({\n absolutePageIndex: pageEntry.absolutePageIndex,\n })\n\n if (annotation) {\n readerContext.value.onAnnotationCreate?.(annotation)\n }\n\n return !CONTINUE_TAP_GESTURE\n }\n }\n\n return CONTINUE_TAP_GESTURE\n }),\n ),\n )\n\n return unSub\n }, [reader, bookmarks, readerContext])\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const usePreventInteractionOnSelection = () => {\n const reader = useReaderWithAnnotations()\n\n const beforeTapGesture = useCallback(\n () =>\n /**\n * Hook used to prevent some gestures from being handled.\n */\n reader?.gestures.hooks.register(\"beforeTapGesture\", ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader.selection.lastSelectionOnPointerdown$),\n map(([{ event }, lastSelectionOnPointerdown]) => {\n const target = event.event.target\n\n /**\n * In this case if we have a gesture on an annotation, we want to prevent\n * it.\n */\n const wasOrIsOnSelection =\n (target && reader.annotations.isTargetWithinHighlight(target)) ||\n lastSelectionOnPointerdown\n\n return !wasOrIsOnSelection\n }),\n ),\n ),\n [reader],\n )\n\n useSubscribe(beforeTapGesture)\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { combineLatest, distinctUntilChanged, map } from \"rxjs\"\nimport { useReaderContext } from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const useSyncAnnotationsWithReader = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n\n const syncAnnotationsWithReader = useCallback(() => {\n if (reader) {\n const selectedHighlight$ = context.pipe(\n map((context) => context.selectedHighlight?.highlight?.id),\n distinctUntilChanged(),\n )\n\n const annotations$ = context.pipe(\n map((context) => context.annotations ?? []),\n distinctUntilChanged(),\n )\n\n const annotationsWithSelected$ = combineLatest([\n annotations$,\n selectedHighlight$,\n ]).pipe(\n map(([annotations, selectedHighlight]) =>\n annotations.map((annotation) => ({\n ...annotation,\n selected: annotation.id === selectedHighlight,\n })),\n ),\n )\n\n reader.annotations.update({ annotations$: annotationsWithSelected$ })\n }\n }, [reader, context])\n\n useSubscribe(syncAnnotationsWithReader)\n}\n","import type { AudioEnhancedReader } from \"@prose-reader/enhancer-audio\"\nimport { hasAudioEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAudioReader = (): AudioEnhancedReader | undefined => {\n const reader = useReader()\n\n return hasAudioEnhancer(reader) ? reader : undefined\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioVisualizer = (enabled = true) => {\n const audioReader = useAudioReader()\n const { data: visualizer } = useObserve<AudioVisualizerState | undefined>(\n () => (enabled ? audioReader?.audio.visualizer$ : undefined),\n [enabled, audioReader],\n )\n\n return visualizer\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useIsCurrentAudioTrack = ({\n enabled = true,\n trackId,\n}: {\n enabled?: boolean\n trackId: string\n}) => {\n const audioReader = useAudioReader()\n const { data: isCurrentTrack = false } = useObserve(\n () =>\n enabled\n ? audioReader?.audio.state$.pipe(\n map((state) => state.currentTrack?.id === trackId),\n distinctUntilChanged(),\n )\n : undefined,\n [enabled, trackId, audioReader],\n )\n\n return isCurrentTrack\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\n\nexport const FALLBACK_TOP_COLOR = `#93c5fd`\nexport const FALLBACK_BOTTOM_COLOR = `#3b82f6`\nexport const MIN_BAR_HEIGHT = 1\nexport const MAX_BAR_HEIGHT_RATIO = 0.1\nexport const IDLE_LEVEL = 0.08\nexport const EDGE_FADE_PORTION = 0.25\nexport const CENTER_EMPHASIS_RATIO = 0.15\n\nexport const DEFAULT_STATE_BASE_LEVEL = 0.02\nexport const DEFAULT_STATE_PEAK_LEVEL = 0.145\nexport const DEFAULT_STATE_HILL_SPREAD = 0.52\nexport const DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO = 0.16\nexport const DEFAULT_STATE_OPACITY = 0.5\nexport const DEFAULT_STATE_TEXTURE_AMOUNT = 0.34\n\nexport const DEFAULT_VISUALIZER_STATE: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n","import {\n DEFAULT_STATE_BASE_LEVEL,\n DEFAULT_STATE_HILL_SPREAD,\n DEFAULT_STATE_PEAK_LEVEL,\n DEFAULT_STATE_TEXTURE_AMOUNT,\n IDLE_LEVEL,\n} from \"./constants\"\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport const smoothstep = (edge0: number, edge1: number, value: number) => {\n if (edge0 === edge1) return Number(value >= edge1)\n\n const normalized = clamp((value - edge0) / (edge1 - edge0), 0, 1)\n\n return normalized * normalized * (3 - 2 * normalized)\n}\n\nconst getDefaultTexture = (progress: number) => {\n const lowFrequency = Math.sin(progress * Math.PI * 6 + 0.8)\n const highFrequency = Math.sin(progress * Math.PI * 14 + 1.7)\n\n return clamp(0.5 + lowFrequency * 0.3 + highFrequency * 0.2, 0, 1)\n}\n\nexport const getDefaultDisplayBars = (numBars: number) =>\n Array.from({ length: numBars }, (_, index) => {\n const progress = numBars === 1 ? 0.5 : index / (numBars - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const hillProfile =\n 1 - smoothstep(DEFAULT_STATE_HILL_SPREAD, 1, centerDistance)\n const texture = getDefaultTexture(progress)\n const texturedHill =\n hillProfile *\n (1 -\n DEFAULT_STATE_TEXTURE_AMOUNT +\n texture * DEFAULT_STATE_TEXTURE_AMOUNT)\n\n return clamp(\n DEFAULT_STATE_BASE_LEVEL + DEFAULT_STATE_PEAK_LEVEL * texturedHill,\n 0,\n 1,\n )\n })\n\nconst getAverage = (values: number[]) => {\n if (values.length === 0) return 0\n\n return values.reduce((total, value) => total + value, 0) / values.length\n}\n\nexport const hasMeaningfulLevels = (values: number[]) =>\n values.some((value) => value > 0.001)\n\nexport const getNormalizedDisplayBarCount = (value: number) => {\n const safeValue = Math.max(1, Math.floor(value))\n\n return safeValue % 2 === 0 ? safeValue + 1 : safeValue\n}\n\nexport const getMirroredDisplayBars = (\n values: number[],\n displayBarCount: number,\n) => {\n const normalizedDisplayBarCount =\n getNormalizedDisplayBarCount(displayBarCount)\n const centerOutSeedCount = Math.floor(normalizedDisplayBarCount / 2) + 1\n\n const centerOutSeed = Array.from(\n { length: centerOutSeedCount },\n (_, index) => {\n const start = Math.floor((index * values.length) / centerOutSeedCount)\n const end = Math.max(\n start + 1,\n Math.floor(((index + 1) * values.length) / centerOutSeedCount),\n )\n const average = getAverage(values.slice(start, end))\n\n return clamp(average, 0, 1)\n },\n )\n\n const centerBar = centerOutSeed[0] ?? IDLE_LEVEL\n const outerBars = centerOutSeed.slice(1)\n\n return [...outerBars.slice().reverse(), centerBar, ...outerBars]\n}\n\nexport const resolveGradientColors = (\n element: HTMLElement,\n {\n topVariable,\n topFallback,\n bottomVariable,\n bottomFallback,\n }: {\n topVariable: string\n topFallback: string\n bottomVariable: string\n bottomFallback: string\n },\n) => {\n const styles = window.getComputedStyle(element)\n const topColor = styles.getPropertyValue(topVariable).trim() || topFallback\n const bottomColor =\n styles.getPropertyValue(bottomVariable).trim() || bottomFallback\n\n return {\n topColor,\n bottomColor,\n }\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport {\n CENTER_EMPHASIS_RATIO,\n DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO,\n DEFAULT_STATE_OPACITY,\n EDGE_FADE_PORTION,\n MAX_BAR_HEIGHT_RATIO,\n MIN_BAR_HEIGHT,\n} from \"./constants\"\nimport {\n clamp,\n getDefaultDisplayBars,\n getMirroredDisplayBars,\n hasMeaningfulLevels,\n smoothstep,\n} from \"./shaping\"\n\ntype WaveSize = {\n width: number\n height: number\n}\n\ntype DrawWaveArgs = {\n canvas: HTMLCanvasElement\n size: WaveSize\n visualizer: AudioVisualizerState\n displayBarCount: number\n displayedBars: number[]\n fillStyle: CanvasGradient | string\n}\n\nexport const drawWave = ({\n canvas,\n size,\n visualizer,\n displayBarCount,\n displayedBars,\n fillStyle,\n}: DrawWaveArgs) => {\n const context = canvas.getContext(`2d`)\n const { width, height } = size\n\n if (!context || width <= 0 || height <= 0) return displayedBars\n\n context.clearRect(0, 0, width, height)\n\n const hasPlayedLevels = hasMeaningfulLevels(visualizer.levels)\n const isDefaultState = !visualizer.isActive && !hasPlayedLevels\n const displayBars = isDefaultState\n ? getDefaultDisplayBars(displayBarCount)\n : getMirroredDisplayBars(visualizer.levels, displayBarCount)\n\n const nextDisplayedBars =\n displayedBars.length !== displayBars.length\n ? Array.from({ length: displayBars.length }, () => 0)\n : displayedBars\n\n const easedBars = visualizer.isActive\n ? nextDisplayedBars.map((value, index) => {\n const targetValue = displayBars[index] ?? 0\n const easing = 0.28\n\n return value + (targetValue - value) * easing\n })\n : [...displayBars]\n\n const gap = Math.round(\n clamp(width / Math.max(easedBars.length, 1) / 2.8, 1, 4),\n )\n const barWidth = Math.max(\n 2,\n Math.floor((width - gap * (easedBars.length - 1)) / easedBars.length),\n )\n const totalWidth = barWidth * easedBars.length + gap * (easedBars.length - 1)\n const startX = Math.max(0, (width - totalWidth) / 2)\n const centerY = height / 2\n const maxHeight = Math.max(\n MIN_BAR_HEIGHT,\n height *\n (isDefaultState\n ? DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO\n : MAX_BAR_HEIGHT_RATIO),\n )\n context.fillStyle = fillStyle\n\n for (const [index, rawValue] of easedBars.entries()) {\n const amplitude = clamp(rawValue, 0, 1)\n const progress =\n easedBars.length === 1 ? 0.5 : index / (easedBars.length - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const centerProfile = 1 - smoothstep(0, 1, centerDistance)\n const emphasizedAmplitude =\n (amplitude * (1 + CENTER_EMPHASIS_RATIO * centerProfile)) /\n (1 + CENTER_EMPHASIS_RATIO * centerProfile * amplitude)\n const heightProgress = isDefaultState\n ? amplitude\n : emphasizedAmplitude ** 1.15\n const barHeight = Math.max(MIN_BAR_HEIGHT, heightProgress * maxHeight)\n const barRadius = Math.min(barWidth / 2, barHeight / 2)\n const x = Math.round(startX + index * (barWidth + gap))\n const y = centerY - barHeight / 2\n const edgeFade =\n smoothstep(0, EDGE_FADE_PORTION, progress) *\n (1 - smoothstep(1 - EDGE_FADE_PORTION, 1, progress))\n\n context.globalAlpha = clamp(\n (isDefaultState\n ? DEFAULT_STATE_OPACITY\n : visualizer.isActive\n ? 0.95\n : 0.75) * edgeFade,\n 0,\n 1,\n )\n context.beginPath()\n context.roundRect(x, y, barWidth, barHeight, barRadius)\n context.fill()\n }\n\n context.globalAlpha = 1\n\n return easedBars\n}\n","import { Box, useBreakpointValue } from \"@chakra-ui/react\"\nimport {\n setPropertyIfChanged,\n setStylePropertyIfChanged,\n} from \"@prose-reader/core\"\nimport type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { FALLBACK_BOTTOM_COLOR, FALLBACK_TOP_COLOR } from \"./constants\"\nimport { drawWave as drawWaveFrame } from \"./drawWave\"\nimport { getNormalizedDisplayBarCount, resolveGradientColors } from \"./shaping\"\n\nconst DEFAULT_VISUALIZER: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n\nexport const AudioWaveCanvas = ({\n visualizer,\n}: {\n visualizer?: AudioVisualizerState\n}) => {\n const displayBarCount = getNormalizedDisplayBarCount(\n useBreakpointValue({\n base: 29,\n md: 35,\n lg: 41,\n xl: 49,\n }) ?? 29,\n )\n const canvasRef = useRef<HTMLCanvasElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const frameRef = useRef<number | undefined>(undefined)\n const visualizerRef = useRef<AudioVisualizerState>(\n visualizer ?? DEFAULT_VISUALIZER,\n )\n const displayedBarsRef = useRef<number[]>([])\n const fillStyleRef = useRef<CanvasGradient | string>(FALLBACK_BOTTOM_COLOR)\n const sizeRef = useRef({\n width: 0,\n height: 0,\n })\n\n /**\n * Cache the gradient outside the animation loop to avoid repeated\n * `getComputedStyle()` and gradient allocation during playback.\n *\n * Limitation: the resolved Chakra CSS variable colors are treated as static\n * for the current canvas size. Theme or palette changes after mount are not\n * picked up immediately; the gradient is refreshed on resize and remount.\n */\n const refreshFillStyle = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas || sizeRef.current.height <= 0) return\n\n const context = canvas.getContext(`2d`)\n\n if (!context) return\n\n const { topColor, bottomColor } = resolveGradientColors(canvas, {\n topVariable: `--audio-wave-top-color`,\n topFallback: FALLBACK_TOP_COLOR,\n bottomVariable: `--audio-wave-bottom-color`,\n bottomFallback: FALLBACK_BOTTOM_COLOR,\n })\n const gradient = context.createLinearGradient(\n 0,\n 0,\n 0,\n sizeRef.current.height,\n )\n\n gradient.addColorStop(0, topColor)\n gradient.addColorStop(1, bottomColor)\n\n fillStyleRef.current = gradient\n }, [])\n\n const drawWave = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas) return\n\n const visualizer = visualizerRef.current\n\n displayedBarsRef.current = drawWaveFrame({\n canvas,\n size: sizeRef.current,\n visualizer,\n displayBarCount,\n displayedBars: displayedBarsRef.current,\n fillStyle: fillStyleRef.current,\n })\n }, [displayBarCount])\n\n const stopAnimation = useCallback(() => {\n if (frameRef.current !== undefined) {\n cancelAnimationFrame(frameRef.current)\n frameRef.current = undefined\n }\n }, [])\n\n const startAnimation = useCallback(() => {\n if (frameRef.current !== undefined) return\n\n const tick = () => {\n const visualizer = visualizerRef.current\n\n if (!visualizer.isActive) {\n frameRef.current = undefined\n drawWave()\n\n return\n }\n\n drawWave()\n frameRef.current = requestAnimationFrame(tick)\n }\n\n frameRef.current = requestAnimationFrame(tick)\n }, [drawWave])\n\n const resizeCanvas = useCallback(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n\n if (!canvas || !container) return\n\n const nextWidth = Math.max(1, container.clientWidth)\n const nextHeight = Math.max(1, container.clientHeight)\n const pixelRatio = window.devicePixelRatio || 1\n const nextCanvasWidth = Math.round(nextWidth * pixelRatio)\n const nextCanvasHeight = Math.round(nextHeight * pixelRatio)\n\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n setPropertyIfChanged(canvas, `width`, nextCanvasWidth)\n setPropertyIfChanged(canvas, `height`, nextCanvasHeight)\n setStylePropertyIfChanged(canvas.style, `width`, `${nextWidth}px`)\n setStylePropertyIfChanged(canvas.style, `height`, `${nextHeight}px`)\n\n const context = canvas.getContext(`2d`)\n\n if (context) {\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0)\n }\n\n refreshFillStyle()\n drawWave()\n }, [drawWave, refreshFillStyle])\n\n useEffect(() => {\n visualizerRef.current = visualizer ?? DEFAULT_VISUALIZER\n\n if (visualizerRef.current.isActive) {\n startAnimation()\n return\n }\n\n stopAnimation()\n drawWave()\n }, [drawWave, startAnimation, stopAnimation, visualizer])\n\n useEffect(() => {\n const container = containerRef.current\n\n if (!container) return\n\n resizeCanvas()\n\n const resizeObserver = new ResizeObserver(() => {\n resizeCanvas()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n stopAnimation()\n resizeObserver.disconnect()\n }\n }, [resizeCanvas, stopAnimation])\n\n return (\n <Box\n ref={containerRef}\n position=\"absolute\"\n inset={0}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n px={8}\n py={12}\n pointerEvents=\"none\"\n css={{\n \"--audio-wave-top-color\": \"colors.colorPalette.emphasized\",\n \"--audio-wave-bottom-color\": \"colors.colorPalette.solid\",\n }}\n style={{\n WebkitMaskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n maskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n }}\n >\n <canvas ref={canvasRef} />\n </Box>\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioVisualizer } from \"./useAudioVisualizer\"\nimport { useIsCurrentAudioTrack } from \"./useIsCurrentAudioTrack\"\nimport { AudioWaveCanvas } from \"./wave/AudioWaveCanvas\"\n\n/**\n * Render only when there is a `renderer`. Meaning the item is loaded.\n * - Renders correct visualizer for current item.\n * - Renders default visualizer when item is not currently playing.\n */\nexport const AudioSpineItem = ({ item }: { item: CoreSpineItem }) => {\n const audioReader = useAudioReader()\n const isAudioRenderer = audioReader?.audio.isAudioRenderer(item.renderer)\n const audioRenderer = isAudioRenderer ? item.renderer : undefined\n const { data: audioDocumentContainer } = useObserve(\n () => audioRenderer?.watch(`documentContainer`),\n [audioRenderer, isAudioRenderer],\n )\n const isCurrentTrack = useIsCurrentAudioTrack({\n enabled: !!audioDocumentContainer,\n trackId: item.item.id,\n })\n const visualizer = useAudioVisualizer(isCurrentTrack)\n\n if (!audioDocumentContainer) return null\n\n return createPortal(\n <AudioWaveCanvas visualizer={isCurrentTrack ? visualizer : undefined} />,\n audioDocumentContainer,\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AudioSpineItem } from \"../audio/AudioSpineItem\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(<AudioSpineItem item={item} />, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n combineLatest,\n distinctUntilChanged,\n map,\n NEVER,\n startWith,\n switchMap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n throttleTime(100, undefined, { trailing: true }),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(\n map((entries) => entries.some((e) => e.isIntersecting)),\n startWith(false),\n distinctUntilChanged(),\n )\n\n return combineLatest([itemLayoutChanged$, isItemIntersecting$]).pipe(\n switchMap(([, isVisible]) => {\n if (!isVisible) {\n element.innerHTML = \"\"\n\n return NEVER\n }\n\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n {/* iframe nullifying overlay. Ensure there are no pointer interceptions, especially on iPadOS */}\n <Box position=\"absolute\" inset={0} zIndex={1} aria-hidden=\"true\" />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n zIndex={2}\n textAlign=\"center\"\n bgColor=\"bg.panel\"\n color=\"fg\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","{\n \"name\": \"@prose-reader/react-reader\",\n \"private\": false,\n \"version\": \"1.304.0\",\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./index.css\": \"./dist/index.css\"\n },\n \"files\": [\n \"/dist\"\n ],\n \"scripts\": {\n \"start\": \"vite build --watch --mode development\",\n \"build\": \"node ./scripts/check-enhancer-imports.mjs && tsc -b && vite build\",\n \"check:enhancers\": \"node ./scripts/check-enhancers.mjs\",\n \"test\": \"vitest run --coverage\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.0.0\",\n \"@types/react-dom\": \"^19.0.0\",\n \"@vitejs/plugin-react\": \"^6.0.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"typescript\": \"*\",\n \"vite\": \"^8\"\n },\n \"peerDependencies\": {\n \"@chakra-ui/react\": \"3.x\",\n \"@emotion/react\": \"11.x\",\n \"@prose-reader/core\": \"^1.169.0\",\n \"@prose-reader/enhancer-annotations\": \"^1.169.0\",\n \"@prose-reader/enhancer-audio\": \"^1.169.0\",\n \"@prose-reader/enhancer-gallery\": \"^1.169.0\",\n \"@prose-reader/enhancer-gestures\": \"^1.169.0\",\n \"@prose-reader/enhancer-refit\": \"^1.169.0\",\n \"@prose-reader/enhancer-search\": \"^1.169.0\",\n \"@prose-reader/shared\": \"^1.169.0\",\n \"rc-slider\": \"11.1.x\",\n \"react\": \"19.x || 18.x\",\n \"react-dom\": \"19.x || 18.x\",\n \"react-icons\": \"^5.4.0\",\n \"reactjrx\": \"1.x\",\n \"screenfull\": \"^6.0.2\"\n }\n}\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { useEffect, useState } from \"react\"\n\nexport const useTransientValue = <Value>(\n value: Value | undefined,\n durationMs: number,\n) => {\n const [transientValue, setTransientValue] = useState<Value | undefined>()\n\n useEffect(() => {\n if (value === undefined) {\n setTransientValue(undefined)\n\n return\n }\n\n setTransientValue(value)\n\n const timeoutId = window.setTimeout(() => {\n setTransientValue((currentValue) =>\n Object.is(currentValue, value) ? undefined : currentValue,\n )\n }, durationMs)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [durationMs, value])\n\n return transientValue\n}\n",".pulse {\n animation: pulse 900ms ease-in-out 1;\n transform-origin: center;\n}\n\n@keyframes pulse {\n 0% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n\n 40% {\n opacity: 1;\n transform: rotate(0deg) scale(1.12);\n }\n\n 48% {\n opacity: 1;\n transform: rotate(-7deg) scale(1.14);\n }\n\n 56% {\n opacity: 1;\n transform: rotate(7deg) scale(1.14);\n }\n\n 64% {\n opacity: 1;\n transform: rotate(-4deg) scale(1.12);\n }\n\n 72% {\n opacity: 1;\n transform: rotate(0deg) scale(1.08);\n }\n\n 100% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pulse {\n animation: none;\n }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport {\n type ExtraPaginationInfo,\n type PaginationInfo,\n shouldUseComputedSpreadModeForViewport,\n watchKeys,\n} from \"@prose-reader/core\"\nimport type { Manifest } from \"@prose-reader/shared\"\nimport { memo } from \"react\"\nimport { MdScreenRotation } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n NEVER,\n type Observable,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\"\nimport { useTransientValue } from \"../common/useTransientValue\"\nimport { useReader } from \"../context/useReader\"\nimport styles from \"./SpreadRotationHint.module.css\"\n\nconst HINT_TARGET_DEBOUNCE_MS = 100\nconst HINT_VISIBLE_MS = 900\n\nconst ANIMATION_NAME_IN_OUT = {\n _open: \"fade-in\",\n _closed: \"fade-out\",\n _motionReduce: \"none\",\n}\nconst ANIMATION_DURATION_IN_OUT = { base: \"moderate\", _motionReduce: \"0ms\" }\n\ntype ViewportDimensions = {\n height: number\n width: number\n}\n\ntype ViewportState = `busy` | `free`\n\ntype HintPagination = Pick<\n PaginationInfo & ExtraPaginationInfo,\n | `beginHasAdjacentSpreadPage`\n | `beginPageIndexInSpineItem`\n | `beginSpineItemIndex`\n | `endHasAdjacentSpreadPage`\n | `endPageIndexInSpineItem`\n | `endSpineItemIndex`\n>\n\ntype ReaderWithSpreadHintStreams = NonNullable<ReturnType<typeof useReader>>\n\nexport const wouldRotationUseComputedSpreadMode = ({\n manifest,\n viewport,\n}: {\n manifest: Manifest\n viewport: ViewportDimensions\n}) => {\n if (viewport.width === viewport.height) return false\n\n return shouldUseComputedSpreadModeForViewport({\n manifest,\n viewport: {\n height: viewport.width,\n width: viewport.height,\n },\n })\n}\n\nexport const getSpreadRotationHintTargetKey = ({\n manifest,\n pagination,\n computedSpreadMode,\n viewportState,\n viewport,\n}: {\n manifest: Manifest\n pagination: HintPagination\n computedSpreadMode: boolean\n viewportState: ViewportState\n viewport: ViewportDimensions\n}) => {\n if (viewportState !== `free`) return undefined\n if (computedSpreadMode) return undefined\n if (!wouldRotationUseComputedSpreadMode({ manifest, viewport })) {\n return undefined\n }\n\n const hasSpreadPair =\n pagination.beginHasAdjacentSpreadPage && pagination.endHasAdjacentSpreadPage\n\n if (!hasSpreadPair) return undefined\n\n return [\n pagination.beginSpineItemIndex,\n pagination.beginPageIndexInSpineItem,\n pagination.endSpineItemIndex,\n pagination.endPageIndexInSpineItem,\n ]\n .map((value) => value ?? `none`)\n .join(`:`)\n}\n\nconst observeHintPagination = (reader: ReaderWithSpreadHintStreams) =>\n reader.pagination.state$.pipe(\n watchKeys([\n `beginHasAdjacentSpreadPage`,\n `beginPageIndexInSpineItem`,\n `beginSpineItemIndex`,\n `endHasAdjacentSpreadPage`,\n `endPageIndexInSpineItem`,\n `endSpineItemIndex`,\n ]),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\nconst observeBeginSpineItemReady = ({\n pagination$,\n reader,\n}: {\n pagination$: Observable<HintPagination>\n reader: ReaderWithSpreadHintStreams\n}) =>\n combineLatest([pagination$, reader.spineItemsManager.items$]).pipe(\n map(([{ beginSpineItemIndex }, spineItems]) =>\n beginSpineItemIndex === undefined\n ? undefined\n : spineItems[beginSpineItemIndex],\n ),\n distinctUntilChanged(),\n switchMap((spineItem) => spineItem?.isReady$ ?? of(false)),\n )\n\nconst observeSpreadRotationHintTargetKey = (\n reader: ReaderWithSpreadHintStreams,\n) => {\n const pagination$ = observeHintPagination(reader)\n const beginSpineItemReady$ = observeBeginSpineItemReady({\n pagination$,\n reader,\n })\n\n return combineLatest([\n pagination$,\n reader.context.manifest$,\n reader.settings.watch([`computedSpreadMode`]),\n reader.viewportState$,\n reader.viewport.watch([`width`, `height`]),\n beginSpineItemReady$,\n ]).pipe(\n debounceTime(HINT_TARGET_DEBOUNCE_MS),\n map(\n ([pagination, manifest, settings, viewportState, viewport, isReady]) => {\n if (!isReady) return undefined\n\n return getSpreadRotationHintTargetKey({\n manifest,\n pagination,\n computedSpreadMode: settings.computedSpreadMode ?? false,\n viewportState,\n viewport,\n })\n },\n ),\n distinctUntilChanged(),\n )\n}\n\nconst useSpreadRotationHintTargetKey = () => {\n const reader = useReader()\n\n return useObserve(\n () => (reader ? observeSpreadRotationHintTargetKey(reader) : NEVER),\n [reader],\n ).data\n}\n\nexport const SpreadRotationHint = memo(() => {\n const hintTargetKey = useSpreadRotationHintTargetKey()\n const visibleHintKey = useTransientValue(hintTargetKey, HINT_VISIBLE_MS)\n\n return (\n <Presence\n present={visibleHintKey !== undefined}\n lazyMount\n unmountOnExit\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration={ANIMATION_DURATION_IN_OUT}\n >\n <Box\n key={visibleHintKey}\n aria-hidden\n position=\"absolute\"\n left=\"50%\"\n top=\"50%\"\n transform=\"translate(-50%, -50%)\"\n pointerEvents=\"none\"\n zIndex={2}\n data-spread-rotation-hint=\"true\"\n >\n <Box\n alignItems=\"center\"\n bg=\"bg.inverted/72\"\n borderRadius=\"full\"\n className={styles.pulse}\n color=\"fg.inverted\"\n display=\"flex\"\n height=\"68px\"\n justifyContent=\"center\"\n width=\"68px\"\n >\n <MdScreenRotation focusable={false} size={34} />\n </Box>\n </Box>\n </Presence>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","export const NOTIFICATION_KEYS = {\n fontScaleChange: \"fontScaleChange\",\n}\n\n/**\n * TODO for now we don't notify cause we can only changes from:\n * - settings (no notification, direct action)\n * - value change from controlled settings (user intent)\n */\nexport const useFontSizeNotifications = () => {\n // const reader = useReader()\n // const { notificationsSubject, fontSizeMenuOpen } = useReaderContextValue([\n // \"notificationsSubject\",\n // \"fontSizeMenuOpen\",\n // ])\n // useSubscribe(\n // () =>\n // fontSizeMenuOpen\n // ? EMPTY\n // : reader?.settings.values$.pipe(\n // map(({ fontScale }) => fontScale),\n // distinctUntilChanged(),\n // skip(1),\n // tap((fontScale) => {\n // notificationsSubject.next({\n // key: NOTIFICATION_KEYS.fontScaleChange,\n // title: \"Font size changed\",\n // description: `${fontScale * 100} %`,\n // })\n // }),\n // ),\n // [reader, notificationsSubject, fontSizeMenuOpen],\n // )\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import RcSlider from \"rc-slider\"\nimport { type ComponentProps, memo } from \"react\"\nimport \"rc-slider/assets/index.css\"\nimport { Box, chakra } from \"@chakra-ui/react\"\n\nconst ChakraRcSlider = chakra(RcSlider)\n\nexport const ThemedSlider = memo((props: ComponentProps<typeof RcSlider>) => {\n return (\n <Box\n display=\"contents\"\n css={{\n \"--bg\": \"colors.bg\",\n \"--bg-emphasized\": \"colors.bg.emphasized\",\n \"--color-solid\": \"colors.colorPalette.solid\",\n }}\n >\n <ChakraRcSlider\n keyboard={false}\n style={{\n padding: 0,\n }}\n css={{\n \"& > .rc-slider-handle:focus-visible\": {\n boxShadow: \"0 0 0 2px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle:active\": {\n boxShadow: \"0 0 5px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle.rc-slider-handle-dragging\": {\n boxShadow: \"0 0 0 3px var(--color-solid) !important\",\n },\n \"&.rc-slider-disabled\": {\n backgroundColor: \"transparent\",\n opacity: 0.5,\n },\n \"&.rc-slider-disabled > .rc-slider-rail\": {\n backgroundColor: \"var(--bg-emphasized)\",\n },\n \"&.rc-slider-disabled > .rc-slider-track\": {\n backgroundColor: \"var(--color-solid)\",\n },\n \"&.rc-slider-disabled > .rc-slider-handle\": {\n backgroundColor: \"var(--bg)\",\n borderColor: \"var(--color-solid)\",\n },\n }}\n styles={{\n rail: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--bg-emphasized)\",\n },\n track: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--color-solid)\",\n },\n handle: {\n width: \"24px\",\n height: \"24px\",\n top: \"50%\",\n borderColor: \"var(--color-solid)\",\n transform: `translate(${props.reverse ? \"50%\" : \"-50%\"}, -50%)`,\n backgroundColor: \"var(--bg)\",\n marginTop: \"0px\",\n },\n }}\n {...props}\n />\n </Box>\n )\n})\n","import type { AudioEnhancerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioState = () => {\n const audioReader = useAudioReader()\n const { data: audioState } = useObserve<AudioEnhancerState | undefined>(\n () => audioReader?.audio.state$,\n [audioReader],\n )\n\n return audioState\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useState } from \"react\"\nimport { LuPause, LuPlay } from \"react-icons/lu\"\nimport { useConstant, useSubscribe } from \"reactjrx\"\nimport { BehaviorSubject, map, tap } from \"rxjs\"\nimport { ThemedSlider } from \"../quickmenu/ThemedSlider\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioState } from \"./useAudioState\"\n\nconst formatPlaybackTime = (value: number) => {\n if (!Number.isFinite(value) || value < 0) return `00:00`\n\n const roundedValue = Math.floor(value)\n const hours = Math.floor(roundedValue / 3600)\n const minutes = Math.floor((roundedValue % 3600) / 60)\n const seconds = roundedValue % 60\n\n if (hours > 0) {\n return [hours, minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n }\n\n return [minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n}\n\nexport const AudioControlsSection = (props: ComponentProps<typeof HStack>) => {\n const audioReader = useAudioReader()\n const audioState = useAudioState()\n const hasPlayableTrack =\n !!audioState?.currentTrack || (audioState?.tracks.length ?? 0) > 0\n const duration = audioState?.duration\n const displayDuration = Math.max(0, duration ?? 0)\n const knownDuration =\n typeof duration === `number` && duration > 0 ? duration : undefined\n const hasKnownDuration = knownDuration !== undefined\n const sliderMax = knownDuration ?? 1\n const currentTime = hasKnownDuration\n ? Math.min(Math.max(0, audioState?.currentTime ?? 0), knownDuration)\n : 0\n const isSliderDisabled =\n !hasPlayableTrack || !!audioState?.isLoading || !hasKnownDuration\n const [draftCurrentTime, setDraftCurrentTime] = useState(currentTime)\n const isSeekingSubject = useConstant(() => new BehaviorSubject(false))\n\n /**\n * Keeps the slider synced with audio playback, except while the user is\n * actively dragging the thumb.\n *\n * During drag we display a local draft value and ignore playback updates to\n * avoid snapping back to the previously observed time. Once the user releases\n * the slider, the enhancer publishes the requested seek time immediately\n * before mutating the audio element, so unlocking this sync path is expected\n * to resume from the new target time. Any later native media updates are then\n * treated as normal playback progression rather than part of the drag UX.\n */\n const syncDownCurrentTime = useCallback(\n () =>\n audioReader?.audio.state$.pipe(\n map((state) => state.currentTime),\n tap((currentTime) => {\n if (isSeekingSubject.value) return\n\n setDraftCurrentTime(currentTime)\n isSeekingSubject.next(false)\n }),\n ),\n [audioReader, isSeekingSubject],\n )\n\n useSubscribe(syncDownCurrentTime)\n\n if (!audioState) {\n return null\n }\n\n return (\n <HStack\n width=\"100%\"\n maxW=\"100%\"\n gap={3}\n borderRadius=\"md\"\n bg=\"bg.muted\"\n px={3}\n py={2}\n {...props}\n >\n <IconButton\n aria-label={audioState.isPlaying ? \"Pause audio\" : \"Play audio\"}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n void audioReader?.audio.toggle()\n }}\n disabled={!hasPlayableTrack || audioState.isLoading}\n >\n {audioState.isPlaying ? <LuPause /> : <LuPlay />}\n </IconButton>\n <Stack gap={0} minW={0} flex={1}>\n <ThemedSlider\n value={draftCurrentTime}\n min={0}\n max={sliderMax}\n disabled={isSliderDisabled}\n onChange={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") return\n\n isSeekingSubject.next(true)\n setDraftCurrentTime(nextValue)\n }}\n onChangeComplete={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") {\n isSeekingSubject.next(false)\n\n return\n }\n\n setDraftCurrentTime(nextValue)\n audioReader?.audio.setCurrentTime(nextValue)\n isSeekingSubject.next(false)\n }}\n />\n <HStack justifyContent=\"space-between\" mt={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {audioState.isLoading\n ? `Loading audio...`\n : formatPlaybackTime(draftCurrentTime)}\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {formatPlaybackTime(displayDuration)}\n </Text>\n </HStack>\n </Stack>\n </HStack>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useHasVisibleAudioTracks = () => {\n const audioReader = useAudioReader()\n const { data: hasVisibleAudioTracks = false } = useObserve(\n () =>\n audioReader?.audio.visibleTrackIds$.pipe(\n map((trackIds) => trackIds.length > 0),\n distinctUntilChanged(),\n ),\n [audioReader],\n )\n\n return hasVisibleAudioTracks\n}\n","import { Popover as ChakraPopover, IconButton, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { HiOutlineInformationCircle } from \"react-icons/hi\"\n\nexport interface ToggleTipProps extends ChakraPopover.RootProps {\n showArrow?: boolean\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n content?: React.ReactNode\n}\n\nexport const ToggleTip = React.forwardRef<HTMLDivElement, ToggleTipProps>(\n function ToggleTip(props, ref) {\n const {\n showArrow,\n children,\n portalled = true,\n content,\n portalRef,\n ...rest\n } = props\n\n return (\n <ChakraPopover.Root\n {...rest}\n positioning={{ ...rest.positioning, gutter: 4 }}\n >\n <ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content\n width=\"auto\"\n px=\"2\"\n py=\"1\"\n textStyle=\"xs\"\n rounded=\"sm\"\n ref={ref}\n >\n {showArrow && (\n <ChakraPopover.Arrow>\n <ChakraPopover.ArrowTip />\n </ChakraPopover.Arrow>\n )}\n {content}\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n </ChakraPopover.Root>\n )\n },\n)\n\nexport const InfoTip = React.forwardRef<\n HTMLDivElement,\n Partial<ToggleTipProps>\n>(function InfoTip(props, ref) {\n const { children, ...rest } = props\n return (\n <ToggleTip content={children} {...rest} ref={ref}>\n <IconButton\n variant=\"ghost\"\n aria-label=\"info\"\n size=\"2xs\"\n colorPalette=\"gray\"\n >\n <HiOutlineInformationCircle />\n </IconButton>\n </ToggleTip>\n )\n})\n","import { Progress as ChakraProgress } from \"@chakra-ui/react\"\nimport { InfoTip } from \"./toggle-tip\"\nimport * as React from \"react\"\n\nexport const ProgressBar = React.forwardRef<\n HTMLDivElement,\n ChakraProgress.TrackProps\n>(function ProgressBar(props, ref) {\n return (\n <ChakraProgress.Track {...props} ref={ref}>\n <ChakraProgress.Range />\n </ChakraProgress.Track>\n )\n})\n\nexport interface ProgressLabelProps extends ChakraProgress.LabelProps {\n info?: React.ReactNode\n}\n\nexport const ProgressLabel = React.forwardRef<\n HTMLDivElement,\n ProgressLabelProps\n>(function ProgressLabel(props, ref) {\n const { children, info, ...rest } = props\n return (\n <ChakraProgress.Label {...rest} ref={ref}>\n {children}\n {info && <InfoTip>{info}</InfoTip>}\n </ChakraProgress.Label>\n )\n})\n\nexport const ProgressRoot = ChakraProgress.Root\nexport const ProgressValueText = ChakraProgress.ValueText\n","import { usePagination } from \"../pagination/usePagination\"\n\nexport const useNavigationContext = () => {\n const pagination = usePagination()\n const hasOnlyOnePage = pagination?.numberOfTotalPages === 1\n\n const isBeginWithinChapter =\n (pagination?.beginNumberOfPagesInSpineItem ?? 0) > 1\n\n const isEndWithinChapter = (pagination?.endNumberOfPagesInSpineItem ?? 0) > 1\n\n const beginPageIndex =\n (pagination?.hasChapters\n ? pagination?.beginPageIndexInSpineItem\n : pagination?.beginAbsolutePageIndex) ?? 0\n const endPageIndex =\n (pagination?.hasChapters\n ? pagination?.endPageIndexInSpineItem\n : pagination?.endAbsolutePageIndex) ?? 0\n\n const [leftPageIndex = 0, rightPageIndex = 0] = [\n beginPageIndex,\n endPageIndex,\n ].sort((a, b) => a - b)\n\n const beginAndEndAreDifferent =\n pagination?.beginPageIndexInSpineItem !==\n pagination?.endPageIndexInSpineItem ||\n pagination?.beginSpineItemIndex !== pagination?.endSpineItemIndex\n\n const totalApproximatePages = pagination?.hasChapters\n ? pagination?.beginNumberOfPagesInSpineItem\n : pagination?.numberOfTotalPages\n\n return {\n hasOnlyOnePage,\n beginPageIndex,\n endPageIndex,\n isBeginWithinChapter,\n isEndWithinChapter,\n beginAndEndAreDifferent,\n totalApproximatePages,\n leftPageIndex,\n rightPageIndex,\n }\n}\n","import { HStack, Stack, Text } from \"@chakra-ui/react\"\nimport {\n ProgressBar,\n ProgressRoot,\n ProgressValueText,\n} from \"../components/ui/progress\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const PaginationInfoSection = () => {\n const pagination = usePagination()\n const {\n hasOnlyOnePage,\n leftPageIndex,\n rightPageIndex,\n totalApproximatePages,\n beginAndEndAreDifferent,\n } = useNavigationContext()\n const progress = Math.round((pagination?.percentageEstimateOfBook ?? 0) * 100)\n\n const buildTitleChain = (\n chapterInfo: NonNullable<typeof pagination>[\"beginChapterInfo\"],\n ): string => {\n if (chapterInfo?.subChapter) {\n return `${chapterInfo.title} / ${buildTitleChain(chapterInfo.subChapter)}`\n }\n return chapterInfo?.title || \"\"\n }\n\n const chapterTitle = buildTitleChain(pagination?.beginChapterInfo)\n\n return (\n <Stack alignItems=\"center\" gap={1} maxW=\"100%\" overflow=\"auto\">\n <ProgressRoot value={progress} size=\"xs\" width={150}>\n <HStack justifyContent=\"space-between\">\n <ProgressBar width={110} />\n <ProgressValueText>{`${progress}%`}</ProgressValueText>\n </HStack>\n </ProgressRoot>\n <Text truncate maxWidth=\"100%\" fontSize=\"sm\" mt={1}>\n {chapterTitle ? `Chapter: ${chapterTitle}` : `\\u00A0`}\n </Text>\n {!hasOnlyOnePage && (\n <HStack>\n <Text fontSize=\"xs\">\n {beginAndEndAreDifferent\n ? `${leftPageIndex + 1} - ${rightPageIndex + 1} of ${totalApproximatePages}`\n : `${leftPageIndex + 1} of ${totalApproximatePages}`}\n </Text>\n {!!pagination?.hasChapters && (\n <>\n <Text>-</Text>\n <Text fontSize=\"xs\">\n ({(pagination?.beginAbsolutePageIndex ?? 0) + 1})\n </Text>\n </>\n )}\n </HStack>\n )}\n </Stack>\n )\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const QuickBar = memo(\n ({\n children,\n position,\n ...rest\n }: { position: \"top\" | \"bottom\" } & PresenceProps & {\n ref?: React.RefObject<HTMLDivElement | null>\n }) => {\n return (\n <Presence\n display=\"flex\"\n flexDirection=\"row\"\n width=\"100%\"\n position=\"absolute\"\n {...(position === \"bottom\" ? { bottom: 0 } : { top: 0 })}\n animationName={\n position === \"bottom\"\n ? {\n _open: \"slide-from-bottom, fade-in\",\n _closed: \"slide-to-bottom, fade-out\",\n }\n : {\n _open: \"slide-from-top, fade-in\",\n _closed: \"slide-to-top, fade-out\",\n }\n }\n animationDuration=\"moderate\"\n bgColor=\"bg.panel\"\n alignItems=\"center\"\n justifyContent=\"center\"\n shadow=\"md\"\n p={4}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import { Box } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useEffect } from \"react\"\nimport { signal, useObserve, useSignalState, useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\nimport { ThemedSlider } from \"./ThemedSlider\"\n\nconst useSliderValues = () => {\n const pagination = usePagination()\n const isUsingSpread = pagination?.isUsingSpread\n const { beginPageIndex: currentRealPage, totalApproximatePages = 0 } =\n useNavigationContext()\n const currentPage = isUsingSpread\n ? Math.floor((currentRealPage || 0) / 2)\n : currentRealPage\n const [value, valueSignal] = useSignalState(() =>\n signal({\n default: currentPage || 0,\n }),\n )\n const min = 0\n const max = Math.max(\n 0,\n isUsingSpread\n ? Math.floor((totalApproximatePages - 1) / 2)\n : totalApproximatePages - 1,\n )\n\n useEffect(() => {\n valueSignal.update(currentPage || 0)\n }, [currentPage, valueSignal])\n\n return {\n value,\n valueSignal,\n min,\n max,\n }\n}\n\nexport const Scrubber = (props: ComponentProps<typeof ThemedSlider>) => {\n const reader = useReader()\n const pagination = usePagination()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const reverse = manifest?.readingDirection === \"rtl\"\n const isUsingSpread = pagination?.isUsingSpread\n const { totalApproximatePages = 0, isBeginWithinChapter } =\n useNavigationContext()\n const step = 1\n const isScrubberWithinChapter = isBeginWithinChapter\n const { value, valueSignal, min, max } = useSliderValues()\n\n const onChange: NonNullable<ComponentProps<typeof ThemedSlider>[\"onChange\"]> =\n useCallback(\n (values) => {\n const [value = 0] = Array.isArray(values) ? values : [values]\n\n valueSignal.update(value)\n\n const pageIndex = isUsingSpread\n ? Math.floor(value) * 2\n : Math.floor(value)\n\n if (!isScrubberWithinChapter) {\n reader?.navigation.goToAbsolutePageIndex({\n absolutePageIndex: pageIndex,\n animation: false,\n })\n } else {\n reader?.navigation.goToPageOfSpineItem({\n pageIndex,\n spineItemId: reader.pagination.state.beginSpineItemIndex ?? 0,\n animation: false,\n })\n }\n },\n [reader, isUsingSpread, valueSignal, isScrubberWithinChapter],\n )\n\n /**\n * @note\n * Scrubber can navigate fast and without lock we may end up with\n * slowness due to the reader\n * paginating and loading items in between.\n * This is good practice (but not required) to throttle it.\n */\n const throttleLock = useCallback(() => {\n return reader?.navigation.throttleLock({\n duration: 100,\n trigger: valueSignal.subject,\n })\n }, [reader, valueSignal])\n\n useSubscribe(throttleLock)\n\n // const marks =\n // max > 1\n // ? Array.from({ length: max + 1 }, (_, i) => i).reduce(\n // (acc: number[], val) => [...acc, val],\n // [],\n // )\n // : []\n\n const disabled =\n totalApproximatePages === 1 ||\n (isUsingSpread && totalApproximatePages === 2)\n\n // @tmp not available yet in chakra\n // if (reverse) return null\n\n if (disabled) return <Box style={props.style} />\n\n return (\n <ThemedSlider\n value={[value]}\n max={max}\n min={min}\n reverse={reverse}\n step={step}\n onChange={onChange}\n {...props}\n />\n )\n // return (\n // <Slider\n // value={[value]}\n // max={max}\n // min={min}\n // marks={marks}\n // onChange={e => {\n // debugger\n // }}\n // onValueChange={onChange}\n // // reverse={reverse}\n // orientation=\"horizontal\"\n // step={step}\n // />\n // )\n}\n","import { Box, Collapsible, HStack, IconButton, Stack } from \"@chakra-ui/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { BiFontSize } from \"react-icons/bi\"\nimport { BsBookmarks } from \"react-icons/bs\"\nimport {\n LuChevronDown,\n LuCircleHelp,\n LuGalleryHorizontal,\n LuNotebookPen,\n LuSearch,\n LuTableOfContents,\n LuZoomIn,\n LuZoomOut,\n} from \"react-icons/lu\"\nimport { MdOutlineFitScreen } from \"react-icons/md\"\nimport { RiGalleryView2 } from \"react-icons/ri\"\nimport {\n RxDoubleArrowDown,\n RxDoubleArrowLeft,\n RxDoubleArrowRight,\n RxDoubleArrowUp,\n} from \"react-icons/rx\"\nimport { useObserve } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { AudioControlsSection } from \"../audio/AudioControlsSection\"\nimport { useHasVisibleAudioTracks } from \"../audio/useHasVisibleAudioTracks\"\nimport {\n hasAnnotationsEnhancer,\n hasGalleryEnhancer,\n hasRefitEnhancer,\n hasSearchEnhancer,\n useReader,\n} from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { PaginationInfoSection } from \"./PaginationInfoSection\"\nimport { QuickBar } from \"./QuickBar\"\nimport { Scrubber } from \"./Scrubber\"\n\nexport const BottomBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (\n item: \"annotations\" | \"search\" | \"help\" | \"toc\" | \"bookmarks\" | \"gallery\",\n ) => void\n }) => {\n const boxRef = useRef<HTMLDivElement>(null)\n const reader = useReader()\n const {\n quickMenuBottomBarBoundingBoxSignal,\n onFontSizeMenuOpenChange,\n onRefitMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"onFontSizeMenuOpenChange\",\n \"onRefitMenuOpenChange\",\n ])\n const { data: navigation } = useObserve(\n () => reader?.navigation.state$,\n [reader],\n )\n const { data: settings } = useObserve(\n () => reader?.settings.values$,\n [reader],\n )\n const { data: zoomState } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) =>\n state.currentScale > 1\n ? \"in\"\n : state.currentScale < 1\n ? \"out\"\n : undefined,\n ),\n ),\n [reader],\n )\n const isZoomingIn = zoomState === \"in\"\n const isZoomingOut = zoomState === \"out\"\n const isScrollingMode = settings?.computedPageTurnMode === \"scrollable\"\n const isVerticalDirection =\n settings?.computedPageTurnDirection === \"vertical\"\n const hasAudioControls = useHasVisibleAudioTracks()\n const [isExtraOpen, setIsExtraOpen] = useState(true)\n\n useEffect(() => {\n if (!boxRef.current) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n quickMenuBottomBarBoundingBoxSignal.update(entry)\n }\n })\n\n resizeObserver.observe(boxRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [quickMenuBottomBarBoundingBoxSignal])\n\n return (\n <QuickBar\n present={open}\n position=\"bottom\"\n display=\"flex\"\n flexDirection=\"column\"\n overflow=\"auto\"\n pb={8}\n px={0}\n ref={boxRef}\n gap={4}\n >\n {hasAudioControls && (\n <HStack px={4} justifyContent=\"center\" width=\"100%\">\n <AudioControlsSection maxW={400} />\n </HStack>\n )}\n <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useCallback, useEffect, useState } from \"react\"\nimport screenfull from \"screenfull\"\n\nconst readFullscreenSupport = () => screenfull.isEnabled\n\nconst readFullscreenState = () =>\n screenfull.isEnabled ? screenfull.isFullscreen : false\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const [isFullscreenSupported, setIsFullscreenSupported] = useState(false)\n\n const syncFullscreenState = useCallback(() => {\n setIsFullscreen((current) => {\n const next = readFullscreenState()\n\n return current === next ? current : next\n })\n setIsFullscreenSupported((current) => {\n const next = readFullscreenSupport()\n\n return current === next ? current : next\n })\n }, [])\n\n const onToggleFullscreenClick = useCallback(async () => {\n if (!screenfull.isEnabled) {\n syncFullscreenState()\n\n return\n }\n\n try {\n if (screenfull.isFullscreen) {\n await screenfull.exit()\n } else {\n await screenfull.request(document.documentElement, {\n navigationUI: `hide`,\n })\n }\n } catch (error) {\n console.error(error)\n } finally {\n syncFullscreenState()\n }\n }, [syncFullscreenState])\n\n useEffect(() => {\n syncFullscreenState()\n\n if (!screenfull.isEnabled) return\n\n screenfull.on(`change`, syncFullscreenState)\n screenfull.on(`error`, syncFullscreenState)\n\n return () => {\n screenfull.off(`change`, syncFullscreenState)\n screenfull.off(`error`, syncFullscreenState)\n }\n }, [syncFullscreenState])\n\n return {\n isFullscreen,\n isFullscreenSupported,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, isFullscreenSupported, onToggleFullscreenClick } =\n useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n {isFullscreenSupported && (\n <IconButton\n aria-label={isFullscreen ? `Exit fullscreen` : `Enter fullscreen`}\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n )}\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { SpreadRotationHint } from \"./navigation/SpreadRotationHint\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <SpreadRotationHint />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","Reader","Annotation","RuntimeAnnotation","EnhancerAPI","GesturesEnhancerAPI","createContext","Dispatch","SetStateAction","Signal","signal","Subject","ReaderNotification","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","PrivateContextType","uncontrolledFontSize","refitMenuOpen","onRefitMenuOpenChange","open","fontSizeMenuOpen","onFontSizeMenuOpenChange","notificationsSubject","quickMenuBottomBarBoundingBoxSignal","ResizeObserverEntry","fontSizeMin","fontSizeMax","_quickMenuOpen","_onQuickMenuOpenChange","selectedHighlight","highlight","selection","Selection","itemIndex","PublicContextType","reader","enableFloatingTime","enableFloatingProgress","onItemClick","item","quickMenuOpen","onQuickMenuOpenChange","fontSize","zoomMaxScale","onFontSizeChange","from","value","fontSizeScope","onFontSizeScopeChange","scope","fontSizeValues","Record","annotations","onAnnotationCreate","annotation","onAnnotationUpdate","Pick","onAnnotationDelete","id","ReaderContextType","getDefaultValue","prev","undefined","default","ReaderContext","isShallowEqual","pick","watchKeys","useContext","useObserve","ReaderContext","ReaderContextType","useReaderContextValue","keys","$","_c","context","t0","pipe","t1","value","t2","compareFn","defaultValue","t3","Symbol","for","data","useReaderContext","Presence","PresenceProps","memo","useSignalValue","useReaderContextValue","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","t0","$","_c","children","rest","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","quickMenuBottomBarBoundingBox","bottomBarHeight","borderBoxSize","blockSize","t2","_open","_closed","t3","t4","Reader","AnnotationsEnhancerAPI","AudioEnhancerAPI","GalleryEnhancerAPI","RefitEnhancerAPI","SearchEnhancerAPI","useReaderContextValue","useReader","$","_c","t0","Symbol","for","reader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasAnnotationsEnhancer","useReader","useReaderWithAnnotations","$","_c","reader","t0","undefined","readerWithBookmarks","Button","FaEdit","LuNotebookPen","useObserve","EMPTY","map","startWith","switchMap","FloatingMenu","useReaderContext","useReaderContextValue","useReaderWithAnnotations","AnnotateControls","$","_c","reader","context","t0","Symbol","for","selectedHighlight","t1","selection","selectionOver$","pipe","selectionEnd$","_temp","t2","defaultValue","t3","data","isOpen","t4","t5","getSelection","update","state","t6","t7","t8","t9","ButtonProps","IconButton","ChakraIconButton","React","LuX","CloseButtonProps","CloseButton","forwardRef","HTMLButtonElement","props","ref","$","_c","t0","children","t1","Drawer","ChakraDrawer","Portal","CloseButton","React","DrawerContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","offset","DrawerContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","t2","t3","t4","DrawerCloseTrigger","HTMLButtonElement","CloseTriggerProps","DrawerTrigger","Trigger","DrawerRoot","Root","DrawerFooter","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","DrawerDescription","Description","DrawerTitle","Title","DrawerActionTrigger","ActionTrigger","Box","Button","Stack","Text","Textarea","ComponentProps","memo","useCallback","useEffect","useState","useSubscribe","tap","truncateText","DrawerBackdrop","DrawerBody","DrawerContent","DrawerHeader","DrawerRoot","useReaderContext","useReaderContextValue","useReaderWithAnnotations","HIGHLIGHT_COLORS","const","AnnotationDrawer","$","_c","reader","t0","Symbol","for","selectedHighlight","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","context","highlight","selection","selectedColor","setSelectedColor","contents","setContents","isOpen","t1","update","_temp","onClose","t2","event","open","onOpenChange","highlightColor","highlightContent","notes","t3","t4","t5","annotations","highlightTap$","openDrawerOnTap","pipe","t6","highlight_0","state_0","state","onOpenDrawerOnTap","T0","t7","T1","T2","t8","t9","toString","t10","t11","map","color","border","t12","t13","t14","event_0","target","value","t15","t16","t17","annotation","createAnnotation","t18","id","t19","t20","t21","undefined","Dialog","ChakraDialog","Portal","React","CloseButton","DialogContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","backdrop","DialogContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","undefined","t2","t3","t4","t5","DialogCloseTrigger","HTMLButtonElement","CloseTriggerProps","DialogRoot","Root","DialogFooter","Footer","DialogHeader","Header","DialogBody","Body","DialogBackdrop","Backdrop","DialogTitle","Title","DialogDescription","Description","DialogTrigger","Trigger","DialogActionTrigger","ActionTrigger","isDefined","useObserve","filter","map","switchMap","hasAnnotationsEnhancer","useReader","useAnnotation","id","$","_c","reader","t0","undefined","readerWithAnnotations","t1","annotations","annotations$","pipe","items","find","item","item_0","locateResource","t2","Link","List","Stack","Text","LuNotebookPen","useReader","useAnnotation","AnnotationListItem","t0","$","_c","id","onNavigate","allowLeftIcon","t1","undefined","reader","data","annotation","t2","meta","node","textContent","range","toString","t3","navigation","goToCfi","cfi","t4","resource","notes","t5","absolutePageIndex","t6","t7","t8","t9","useObserve","switchMap","hasAnnotationsEnhancer","useReader","useAnnotations","$","_c","reader","t0","undefined","readerWithAnnotations","t1","t2","annotations","annotations$","pipe","highlights","locateResource","useAnnotations","useHighlights","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","List","AnnotationListItem","useHighlights","AnnotationsList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","useAnnotations","useBookmarks","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","resource","notes","List","AnnotationListItem","useBookmarks","BookmarksList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","Tabs","memo","useState","LuBookmark","LuNotebookPen","AnnotationsList","BookmarksList","AnnotationsDialogContent","t0","$","_c","onNavigate","defaultTab","tab","setTab","t1","Symbol","for","e","value","t2","t3","t4","t5","t6","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","AnnotationsDialogContent","AnnotationsDialog","t0","$","_c","openWith","setOpen","onNavigate","t1","t2","e","open","t3","Symbol","for","mdDown","md","t4","t5","t6","t7","t8","t9","useObserve","EMPTY","map","of","useReader","useSpineItem","t0","$","_c","absolutePageIndex","itemIndex","reader","t1","t2","undefined","spine","spineItemsManager","get","pages","observeFromAbsolutePageIndex","pipe","page","useObserve","NEVER","useSpineItem","useSpineItemReady","t0","$","_c","absolutePageIndex","itemIndex","t1","data","spineItem","t2","t3","isReady$","isReady","t4","Box","Presence","memo","useSpineItemReady","BOOKMARK_AREA_DATA_ATTRIBUTE","useAnnotations","BookmarkPageMarker","t0","$","_c","absolutePageIndex","left","top","width","t1","isReady","isItemReady","data","bookmarks","t2","find","bookmark","meta","isCfiRange","bookmarkForPage","markerSize","t3","t4","Symbol","for","_open","_closed","t5","t6","t7","t8","content","position","height","borderTop","borderLeft","t9","t10","memo","useObserve","useReader","BookmarkPageMarker","BookmarkPageMarkers","$","_c","reader","t0","layoutInfo$","t1","data","pages","t2","map","_temp","t3","pageIndex","absoluteLayout","left","top","width","useEffect","map","withLatestFrom","useReaderContext","useAnnotations","useReaderWithAnnotations","CONTINUE_TAP_GESTURE","BOOKMARK_CORNER_SIZE_PERCENT","isTopRightCornerPosition","position","containerSize","sizePercent","x","y","width","height","actualSize","Math","min","useBookmarkOnCornerTap","$","_c","reader","data","bookmarks","readerContext","t0","t1","unSub","gestures","hooks","register","t2","event$","pipe","annotations","candidates$","t3","context","candidates","page","spineItem","spineItemPageIndex","spineItemPagePosition","pageSize","hasTapOnTopRightCorner","pageEntry","spine","pages","fromSpineItemPageIndex","bookmarkForPage","find","bookmark","meta","absolutePageIndex","range","undefined","value","onAnnotationDelete","resource","id","canBookmarkPage","annotation","createAnnotation","onAnnotationCreate","useCallback","useSubscribe","map","withLatestFrom","useReaderWithAnnotations","usePreventInteractionOnSelection","$","_c","reader","t0","gestures","hooks","register","t1","event$","pipe","selection","lastSelectionOnPointerdown$","t2","t3","lastSelectionOnPointerdown","event","target","wasOrIsOnSelection","annotations","isTargetWithinHighlight","beforeTapGesture","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","useReaderContext","useReaderWithAnnotations","useSyncAnnotationsWithReader","$","_c","reader","context","t0","selectedHighlight$","pipe","_temp","annotations$","_temp2","annotationsWithSelected$","_temp3","annotations","update","syncAnnotationsWithReader","context_0","selectedHighlight","highlight","id","context_1","annotation","selected","AudioEnhancedReader","hasAudioEnhancer","useReader","useAudioReader","$","_c","reader","t0","undefined","AudioVisualizerState","useObserve","useAudioReader","useAudioVisualizer","t0","$","_c","enabled","undefined","audioReader","t1","audio","visualizer$","t2","data","visualizer","useObserve","distinctUntilChanged","map","useAudioReader","useIsCurrentAudioTrack","t0","$","_c","enabled","t1","trackId","undefined","audioReader","t2","audio","state$","pipe","state","currentTrack","id","t3","data","t4","isCurrentTrack","AudioVisualizerState","FALLBACK_TOP_COLOR","FALLBACK_BOTTOM_COLOR","MIN_BAR_HEIGHT","MAX_BAR_HEIGHT_RATIO","IDLE_LEVEL","EDGE_FADE_PORTION","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","DEFAULT_STATE_TEXTURE_AMOUNT","DEFAULT_VISUALIZER_STATE","levels","isActive","trackId","undefined","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_TEXTURE_AMOUNT","IDLE_LEVEL","clamp","value","min","max","Math","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","length","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","slice","centerBar","outerBars","reverse","resolveGradientColors","element","HTMLElement","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","AudioVisualizerState","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","EDGE_FADE_PORTION","MAX_BAR_HEIGHT_RATIO","MIN_BAR_HEIGHT","clamp","getDefaultDisplayBars","getMirroredDisplayBars","hasMeaningfulLevels","smoothstep","WaveSize","width","height","DrawWaveArgs","canvas","HTMLCanvasElement","size","visualizer","displayBarCount","displayedBars","fillStyle","CanvasGradient","drawWave","context","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","length","Array","from","easedBars","map","value","index","targetValue","easing","gap","Math","round","max","barWidth","floor","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","progress","centerDistance","abs","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","min","x","y","edgeFade","globalAlpha","beginPath","roundRect","fill","Box","useBreakpointValue","setPropertyIfChanged","setStylePropertyIfChanged","AudioVisualizerState","useCallback","useEffect","useRef","FALLBACK_BOTTOM_COLOR","FALLBACK_TOP_COLOR","drawWave","drawWaveFrame","getNormalizedDisplayBarCount","resolveGradientColors","DEFAULT_VISUALIZER","levels","isActive","trackId","undefined","AudioWaveCanvas","t0","$","_c","visualizer","t1","base","md","lg","xl","t2","displayBarCount","canvasRef","containerRef","frameRef","visualizerRef","t3","Symbol","for","displayedBarsRef","fillStyleRef","t4","width","height","sizeRef","t5","canvas","current","context","getContext","topColor","bottomColor","topVariable","topFallback","bottomVariable","bottomFallback","gradient","createLinearGradient","addColorStop","refreshFillStyle","t6","canvas_0","visualizer_0","size","displayedBars","fillStyle","t7","cancelAnimationFrame","stopAnimation","t8","tick","visualizer_1","requestAnimationFrame","startAnimation","t9","canvas_1","container","nextWidth","Math","max","clientWidth","nextHeight","clientHeight","pixelRatio","window","devicePixelRatio","nextCanvasWidth","round","nextCanvasHeight","style","context_0","setTransform","resizeCanvas","t10","t11","t12","t13","container_0","resizeObserver","ResizeObserver","observe","disconnect","t14","WebkitMaskImage","maskImage","SpineItem","CoreSpineItem","createPortal","useObserve","useAudioReader","useAudioVisualizer","useIsCurrentAudioTrack","AudioWaveCanvas","AudioSpineItem","t0","$","_c","item","audioReader","t1","audio","renderer","isAudioRenderer","audioRenderer","undefined","t2","watch","t3","data","audioDocumentContainer","t4","t5","id","enabled","trackId","isCurrentTrack","visualizer","t6","t7","t8","SpineItem","CoreSpineItem","memo","createPortal","AudioSpineItem","t0","$","_c","item","container","containerElement","t1","t2","t3","memo","createPortal","useObserve","useReader","SpineItem","Spine","t0","$","_c","children","reader","t1","spine","element$","t2","data","spineElement","t3","spineItemsManager","items$","t4","spineItems","t5","map","_temp","t6","t7","t8","item","index","c","_c","Toaster","ChakraToaster","Portal","Spinner","Stack","Toast","createToaster","ReturnType","toaster","placement","pauseOnPageIdle","$","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","action","label","meta","closable","isShallowEqual","ComponentProps","memo","useCallback","useEffect","signal","useConstant","useMemoCompare","useSignalValue","getDefaultValue","PrivateContextType","PublicContextType","ReaderContext","SignalProvider","t0","$","_c","children","props","valueSignal","_temp","t1","value","fontSizeMenuOpen","default","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","t2","open","update","uncontrolledOnFontSizeMenuOpenChange","t3","valueOrUpdater","old","_quickMenuOpen","_onQuickMenuOpenChange","t4","refitMenuOpen","uncontrolledRefitMenuOpen","t5","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","t6","t7","old_0","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t8","ReactReaderProvider","RadioGroup","ChakraRadioGroup","React","RadioProps","ItemProps","rootRef","Ref","HTMLDivElement","inputProps","InputHTMLAttributes","HTMLInputElement","Radio","forwardRef","props","ref","$","_c","children","rest","t0","t1","Symbol","for","t2","t3","Root","Slider","ChakraSlider","For","HStack","React","SliderProps","RootProps","marks","Array","value","label","ReactNode","showValue","memo","t0","$","_c","ref","rest","t1","t2","props","marksProp","t3","t4","t5","defaultValue","map","_temp","some","_temp2","hasMarkLabel","undefined","Symbol","for","t6","t7","t8","t9","SliderThumbs","_temp3","_","index","SliderMarksProps","SliderMarks","forwardRef","HTMLDivElement","length","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","value","references","const","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","Button","Fieldset","HStack","SliderValueChangeDetails","Stack","Tabs","TabsValueChangeDetails","ComponentProps","memo","useCallback","useEffect","useState","LuCheck","useLiveRef","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Radio","RadioGroup","Slider","useReaderContext","useReaderContextValue","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","SETTINGS_SCOPES_VALUES","map","item","value","SETTINGS_SCOPES_REFERENCES","flatMap","references","getScopeForReference","reference","undefined","find","includes","FontSizeControlsDialog","$","_c","context","t0","Symbol","for","fontSizeMenuOpen","onFontSizeMenuOpenChange","uncontrolledFontSize","fontSize","t1","fontSizeMin","fontSizeMax","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","tabValue","setTabValue","t2","scope","current","update","old","onFontUpdate","t3","scope_0","getValueForScope","t4","details","value_0","onScopeValueChange","t5","details_0","onTabValueChange","t6","details_1","value_1","onSliderValueChange","t7","t8","syncScopeChangeWithTabs","t9","e","open","t10","t11","t12","t13","t14","t15","_temp","t16","t17","scope_2","t18","t19","scope_3","label","t20","t21","t22","t23","t24","t25","scope_1","useCallback","useEffect","useSubscribe","map","useReader","useReaderContext","useReaderContextValue","SyncFontSettings","$","_c","reader","context","t0","Symbol","for","fontSize","uncontrolledFontSize","_fontSize","t1","t2","syncDownFontSize","timeout","setTimeout","settings","update","fontScale","clearTimeout","t3","values$","syncUpFontSize","pipe","_temp","subscribe","_fontSize_0","value","onFontSizeChange","old","useLayoutEffect","useMemo","useState","UseMeasureRect","Pick","DOMRectReadOnly","UseMeasureRef","Element","element","E","UseMeasureResult","defaultState","x","y","width","height","top","left","bottom","right","useMeasure","$","_c","setElement","rect","setRect","t0","Symbol","for","ResizeObserver","entries","contentRect","observer","t1","t2","observe","disconnect","t3","isShallowEqual","observeIntersection","SpineItem","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","NEVER","startWith","switchMap","throttleTime","UseMeasureRect","hasGalleryEnhancer","useReader","useAttachSnapshot","element","item","measures","$","_c","reader","t0","undefined","readerWithGalleryEnhancer","t1","itemLayoutChanged$","didLayout$","pipe","layoutInfo","trailing","isItemIntersecting$","HTMLElement","_temp2","t2","isVisible","innerHTML","gallery","snapshot","attachSnapshot","_temp","e","isIntersecting","entries","some","Box","Button","Text","SpineItem","memo","useObserve","useMeasure","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","useReader","useAttachSnapshot","GalleryItem","t0","$","_c","item","onNavigated","setElement","measures","element","reader","t1","t2","locateResource","mode","data","locatedResource","t3","navigation","goToSpineItem","indexOrId","t4","t5","Symbol","for","t6","meta","absolutePageIndex","t7","t8","GalleryDialog","open","setOpen","spineItemsManager","items$","items","e","mdDown","md","map","id","t9","t10","t11","t12","t13","Button","Heading","HStack","Kbd","Stack","Text","memo","LuArrowBigLeft","LuArrowBigRight","name","version","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","HelpDialog","t0","$","_c","open","setOpen","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","Reader","useObserve","combineLatest","map","NEVER","useReader","usePagination","$","_c","reader","t0","t1","pagination","state$","context","pipe","_temp2","data","_temp","item","mediaType","startsWith","state","isOnlyImages","manifest","spineItems","every","hasChapters","isFullyPrePaginated","Box","Presence","Text","useReaderContextValue","usePagination","ANIMATION_NAME_IN_OUT","_open","_closed","FloatingProgress","$","_c","t0","Symbol","for","enableFloatingProgress","quickMenuOpen","pagination","roundedProgress","Math","floor","percentageEstimateOfBook","displayableProgress","undefined","t1","t2","t3","Text","TextProps","useEffect","useState","useTime","$","_c","t0","Symbol","for","Date","time","setTime","t1","t2","interval","setInterval","clearInterval","TimeIndicator","props","toLocaleTimeString","navigator","language","hour","minute","Box","memo","TimeIndicator","FloatingTime","$","_c","t0","Symbol","for","useEffect","useState","useTransientValue","value","durationMs","$","_c","transientValue","setTransientValue","t0","t1","undefined","timeoutId","window","setTimeout","currentValue","Object","is","clearTimeout","Box","Presence","ExtraPaginationInfo","PaginationInfo","shouldUseComputedSpreadModeForViewport","watchKeys","Manifest","memo","MdScreenRotation","useObserve","combineLatest","debounceTime","distinctUntilChanged","map","NEVER","Observable","of","shareReplay","switchMap","useTransientValue","useReader","styles","HINT_TARGET_DEBOUNCE_MS","HINT_VISIBLE_MS","ANIMATION_NAME_IN_OUT","_open","_closed","_motionReduce","ANIMATION_DURATION_IN_OUT","base","ViewportDimensions","height","width","ViewportState","HintPagination","Pick","ReaderWithSpreadHintStreams","NonNullable","ReturnType","wouldRotationUseComputedSpreadMode","manifest","viewport","getSpreadRotationHintTargetKey","pagination","computedSpreadMode","viewportState","undefined","hasSpreadPair","beginHasAdjacentSpreadPage","endHasAdjacentSpreadPage","beginSpineItemIndex","beginPageIndexInSpineItem","endSpineItemIndex","endPageIndexInSpineItem","value","join","observeHintPagination","reader","state$","pipe","bufferSize","refCount","observeBeginSpineItemReady","pagination$","spineItemsManager","items$","spineItems","spineItem","isReady$","observeSpreadRotationHintTargetKey","beginSpineItemReady$","context","manifest$","settings","watch","viewportState$","isReady","useSpreadRotationHintTargetKey","$","_c","t0","t1","data","SpreadRotationHint","hintTargetKey","visibleHintKey","Symbol","for","pulse","t2","t3","isHtmlTagElement","useCallback","useSubscribe","useReader","useInterceptExternalLinks","$","_c","reader","t0","links$","subscribe","_temp","interceptExternalLinks","event","type","target","href","url","URL","window","location","host","response","confirm","open","NOTIFICATION_KEYS","fontScaleChange","useFontSizeNotifications","useCallback","isDefined","useSubscribe","filter","finalize","first","merge","mergeMap","NEVER","Observable","skip","switchMap","timer","toaster","useReaderContextValue","useFontSizeNotifications","useNotifications","$","_c","t0","Symbol","for","notificationsSubject","t1","pipe","notification","duration","toast$","subscriber","queueMicrotask","toastId","create","title","description","next","complete","t2","error","sameNotification$","n","key","toast","abort","dismiss","notifications","RcSlider","ComponentProps","memo","Box","chakra","ChakraRcSlider","ThemedSlider","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","padding","boxShadow","backgroundColor","opacity","borderColor","height","top","transform","t5","reverse","t6","rail","track","handle","width","marginTop","t7","AudioEnhancerState","useObserve","useAudioReader","useAudioState","$","_c","audioReader","t0","audio","state$","t1","data","audioState","HStack","IconButton","Stack","Text","ComponentProps","useCallback","useState","LuPause","LuPlay","useConstant","useSubscribe","BehaviorSubject","map","tap","ThemedSlider","useAudioReader","useAudioState","formatPlaybackTime","value","Number","isFinite","roundedValue","Math","floor","hours","minutes","seconds","part","String","padStart","join","AudioControlsSection","props","$","_c","audioReader","audioState","hasPlayableTrack","currentTrack","tracks","length","duration","displayDuration","max","knownDuration","undefined","hasKnownDuration","sliderMax","currentTime","min","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","_temp","t0","audio","state$","pipe","_temp2","currentTime_0","next","syncDownCurrentTime","t1","isPlaying","t2","toggle","t3","t4","t5","t6","nextValue","Array","isArray","t7","value_0","nextValue_0","setCurrentTime","t8","t9","t10","t11","t12","t13","t14","t15","state","useObserve","distinctUntilChanged","map","useAudioReader","useHasVisibleAudioTracks","$","_c","audioReader","t0","audio","visibleTrackIds$","pipe","_temp","t1","data","t2","hasVisibleAudioTracks","undefined","trackIds","length","Popover","ChakraPopover","IconButton","Portal","React","HiOutlineInformationCircle","ToggleTipProps","RootProps","showArrow","portalled","portalRef","RefObject","HTMLElement","content","ReactNode","ToggleTip","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","positioning","gutter","t2","t3","t4","t5","t6","t7","InfoTip","Partial","Symbol","for","Progress","ChakraProgress","InfoTip","React","ProgressBar","forwardRef","HTMLDivElement","TrackProps","props","ref","$","_c","t0","Symbol","for","t1","ProgressLabelProps","LabelProps","info","ReactNode","ProgressLabel","children","rest","ProgressRoot","Root","ProgressValueText","ValueText","usePagination","useNavigationContext","pagination","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","hasChapters","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","HStack","Stack","Text","ProgressBar","ProgressRoot","ProgressValueText","useNavigationContext","usePagination","PaginationInfoSection","$","_c","pagination","hasOnlyOnePage","leftPageIndex","rightPageIndex","totalApproximatePages","beginAndEndAreDifferent","t0","percentageEstimateOfBook","Math","round","progress","t1","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","title","chapterTitle","t2","Symbol","for","t3","t4","t5","t6","t7","t8","beginAbsolutePageIndex","hasChapters","t9","Presence","PresenceProps","memo","QuickBar","t0","$","_c","children","position","rest","t1","t2","bottom","top","_open","_closed","t3","Box","ComponentProps","useCallback","useEffect","signal","useObserve","useSignalState","useSubscribe","useReader","useNavigationContext","usePagination","ThemedSlider","useSliderValues","$","_c","pagination","isUsingSpread","beginPageIndex","currentRealPage","totalApproximatePages","t0","undefined","currentPage","Math","floor","t1","default","value","valueSignal","max","t2","t3","update","t4","min","Scrubber","props","reader","data","context","manifest","reverse","readingDirection","isBeginWithinChapter","isScrubberWithinChapter","values","Array","isArray","value_0","pageIndex","navigation","goToAbsolutePageIndex","absolutePageIndex","animation","goToPageOfSpineItem","spineItemId","state","beginSpineItemIndex","onChange","subject","throttleLock","duration","trigger","disabled","t5","style","t6","step","Box","Collapsible","HStack","IconButton","Stack","memo","useEffect","useRef","useState","BiFontSize","BsBookmarks","LuChevronDown","LuCircleHelp","LuGalleryHorizontal","LuNotebookPen","LuSearch","LuTableOfContents","LuZoomIn","LuZoomOut","MdOutlineFitScreen","RiGalleryView2","RxDoubleArrowDown","RxDoubleArrowLeft","RxDoubleArrowRight","RxDoubleArrowUp","useObserve","map","AudioControlsSection","useHasVisibleAudioTracks","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasSearchEnhancer","useReader","useReaderContextValue","PaginationInfoSection","QuickBar","Scrubber","BottomBar","t0","$","_c","open","onItemClick","boxRef","reader","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t2","navigation","state$","t3","data","t4","settings","values$","t5","t6","zoom","pipe","_temp","t7","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","t8","t9","current","resizeObserver","ResizeObserver","entries","entry","update","observe","disconnect","t10","t11","goToLeftOrTopSpineItem","t12","canGoLeftSpineItem","canGoTopSpineItem","t13","t14","t15","t16","width","maxWidth","height","t17","canGoRightSpineItem","canGoBottomSpineItem","t18","goToRightOrBottomSpineItem","t19","t20","t21","t22","t23","open_0","t24","transform","t25","t26","t27","t28","t29","t30","t31","t32","t33","exit","animate","enter","scale","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","state","currentScale","undefined","useCallback","useEffect","useState","screenfull","readFullscreenSupport","isEnabled","readFullscreenState","isFullscreen","useFullscreen","setIsFullscreen","isFullscreenSupported","setIsFullscreenSupported","syncFullscreenState","current","next","onToggleFullscreenClick","exit","request","document","documentElement","navigationUI","error","console","on","off","HStack","IconButton","Stack","Text","memo","IoIosArrowBack","IoMdMore","MdFullscreen","MdFullscreenExit","useObserve","useFullscreen","useReader","QuickBar","TopBar","t0","$","_c","open","onItemClick","reader","t1","context","manifest$","t2","data","manifest","isFullscreen","isFullscreenSupported","onToggleFullscreenClick","t3","t4","Symbol","for","t5","t6","title","t7","t8","t9","t10","t11","t12","t13","useReaderContextValue","useQuickMenu","$","_c","t0","Symbol","for","quickMenuOpen","onQuickMenuOpenChange","_quickMenuOpen","_onQuickMenuOpenChange","t1","t2","t3","const","memo","useReaderContextValue","BottomBar","TopBar","useQuickMenu","QuickMenu","t0","$","_c","onItemClick","quickMenuOpen","t1","Symbol","for","refitMenuOpen","fontSizeMenuOpen","selectedHighlight","t2","t3","t4","t5","t6","useCallback","useSubscribe","filter","tap","withLatestFrom","useReader","useQuickMenu","useQuickMenuToggleGesture","$","_c","onQuickMenuOpenChange","reader","t0","gestures","gestures$","pipe","_temp","selection","selection$","lastSelectionOnPointerdown$","t1","selectionOnPointerdown","_temp2","quickMenuToggleGesture","event","type","handled","val","Field","ChakraField","React","FieldProps","Omit","RootProps","label","ReactNode","helperText","errorText","optionalText","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","t2","t3","Button","Fieldset","Stack","RefitEnhancerOptions","memo","useObserve","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Field","Radio","RadioGroup","Slider","hasRefitEnhancer","useReader","useReaderContextValue","OptionValue","RefitDialog","$","_c","t0","Symbol","for","refitMenuOpen","onRefitMenuOpenChange","reader","t1","undefined","readerWithRefit","t2","refit","settings$","t3","data","refitSettings","t4","e","open","t5","t6","t7","e_0","value","update","viewportFit","customWidth","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","e_1","value_0","t18","t19","t20","t21","t22","t23","Link","Text","memo","SearchListItem","t0","$","_c","contextText","t1","startOffset","t2","text","cfi","t3","onClick","absolutePageIndex","undefined","t4","substring","Math","max","before","t5","length","min","after","t6","Symbol","for","margin","overflow","t7","e","preventDefault","t8","display","t9","t10","t11","textDecoration","t12","t13","t14","useConstant","useObserve","BehaviorSubject","distinctUntilChanged","map","merge","of","switchMap","timer","hasSearchEnhancer","useReader","DEBOUNCE_TIME","useSearch","$","_c","searchSubject","_temp","data","searchValue","reader","t0","undefined","readerWithSearch","t1","t2","pipe","value","type","const","search","_temp2","t3","next","bind","t4","t5","t6","setValue","status","Input","Stack","Text","React","memo","useCallback","useObserve","useReader","SearchListItem","useSearch","SearchDialogContent","t0","$","_c","onNavigate","reader","value","searchValue","setValue","status","data","t1","e","target","onValueChange","t2","navigation","cfi","goToCfi","onClick","t3","locateResource","slice","t4","consolidatedResults","t5","t6","Symbol","for","overflow","overflowY","t7","t8","length","t9","map","result","j","meta","range","startContainer","parentElement","textContent","itemPageIndex","startOffset","absolutePageIndex","t10","t11","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","SearchDialogContent","SearchDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","Link","List","Stack","Text","React","memo","LuCircleCheck","useObserve","useReader","usePagination","TableOfContentsDialogContent","t0","$","_c","onNavigate","reader","data","t1","context","manifest","undefined","nav","pagination","toc","absolutePageIndex","beginAbsolutePageIndex","currentSubChapter","beginChapterInfo","subChapter","buildTocForItem","tocItem","index","lvl","display","alignItems","navigation","goToUrl","href","path","title","contents","length","map","tocItem_0","index_0","t2","t3","t4","t5","t6","t7","tocItem_1","index_1","t8","Root","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","TableOfContentsDialogContent","TableOfContentsDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","useEffect","MAX_ZOOM_SCALE","useReader","useReaderContextValue","useZoomSettings","$","_c","reader","t0","Symbol","for","zoomMaxScale","t1","gestures","settings","syncSettingsWithGesturesEnhancer","update","t2","memo","useObserve","animationFrameScheduler","map","throttleTime","FloatingMenu","Slider","MAX_ZOOM_SCALE","useReader","useReaderContextValue","STEP","MIN","normalizeZoomValue","value","min","max","step","clamped","Math","stepped","round","ZoomControls","$","_c","t0","Symbol","for","zoomMaxScale","t1","undefined","reader","t2","zoom","state$","pipe","_temp","leading","trailing","t3","data","t4","zoomScaleValue","t5","_temp2","t6","t7","isZooming","t8","normalizedZoomScaleValue","t9","t10","t11","e","exit","scaleAt","constrain","t12","t13","state","currentScale","state_0","Box","BoxProps","Presence","ComponentProps","memo","useCallback","useState","AnnotateControls","AnnotationDrawer","AnnotationsDialog","BookmarkPageMarkers","useBookmarkOnCornerTap","usePreventInteractionOnSelection","useSyncAnnotationsWithReader","Spine","Toaster","ReactReaderProvider","useReaderContextValue","FontSizeControlsDialog","SyncFontSettings","GalleryDialog","HelpDialog","FloatingProgress","FloatingTime","SpreadRotationHint","useInterceptExternalLinks","useNotifications","QuickMenu","useQuickMenu","useQuickMenuToggleGesture","RefitDialog","SearchDialog","TableOfContentsDialog","useZoomSettings","ZoomControls","ANIMATION_NAME_IN_OUT","_open","_closed","BookmarksEffects","Effects","$","_c","t0","Symbol","for","InnerReactReader","children","rest","t1","enableFloatingTime","onItemClick","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","undefined","isGalleryOpen","setIsGalleryOpen","quickMenuOpen","setQuickMenuOpen","t2","onNavigate","t3","item","_onItemClick","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","open","t19","t20","t21","t22","t23","t24","ReactReader","props","slots","container","containerProps"],"sources":["../src/constants.ts","../src/context/context.ts","../src/context/useReaderContext.ts","../src/common/FloatingMenu.tsx","../src/context/useReader.ts","../src/annotations/useReaderWithAnnotations.ts","../src/annotations/AnnotateControls.tsx","../src/common/utils.ts","../src/components/ui/close-button.tsx","../src/components/ui/drawer.tsx","../src/annotations/AnnotationDrawer.tsx","../src/components/ui/dialog.tsx","../src/annotations/useAnnotation.ts","../src/annotations/AnnotationListItem.tsx","../src/annotations/useAnnotations.ts","../src/annotations/useHighlights.ts","../src/annotations/AnnotationsList.tsx","../src/annotations/bookmarks/useBookmarks.ts","../src/annotations/bookmarks/BookmarksList.tsx","../src/annotations/AnnotationsDialogContent.tsx","../src/annotations/AnnotationsDialog.tsx","../src/common/useSpineItem.ts","../src/common/useSpineItemReady.ts","../src/annotations/bookmarks/BookmarkPageMarker.tsx","../src/annotations/bookmarks/BookmarkPageMarkers.tsx","../src/annotations/bookmarks/useBookmarkOnCornerTap.ts","../src/annotations/usePreventInteractionOnSelection.ts","../src/annotations/useSyncAnnotationsWithReader.ts","../src/audio/useAudioReader.ts","../src/audio/useAudioVisualizer.ts","../src/audio/useIsCurrentAudioTrack.ts","../src/audio/wave/constants.ts","../src/audio/wave/shaping.ts","../src/audio/wave/drawWave.ts","../src/audio/wave/AudioWaveCanvas.tsx","../src/audio/AudioSpineItem.tsx","../src/common/SpineItem.tsx","../src/common/Spine.tsx","../src/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../package.json","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/common/useTransientValue.ts","../src/navigation/SpreadRotationHint.module.css","../src/navigation/SpreadRotationHint.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/fonts/useFontSizeNotifications.ts","../src/notifications/useNotifications.ts","../src/quickmenu/ThemedSlider.tsx","../src/audio/useAudioState.ts","../src/audio/AudioControlsSection.tsx","../src/audio/useHasVisibleAudioTracks.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/Scrubber.tsx","../src/quickmenu/BottomBar.tsx","../src/common/useFullscreen.ts","../src/quickmenu/TopBar.tsx","../src/quickmenu/useQuickMenu.ts","../src/quickmenu/QuickMenu.tsx","../src/quickmenu/useQuickMenuToggleGesture.ts","../src/components/ui/field.tsx","../src/refit/RefitDialog.tsx","../src/search/SearchListItem.tsx","../src/search/useSearch.ts","../src/search/SearchDialogContent.tsx","../src/search/SearchDialog.tsx","../src/toc/TableOfContentsDialogContent.tsx","../src/toc/TableOfContentsDialog.tsx","../src/zoom/useZoomSettings.ts","../src/zoom/ZoomControls.tsx","../src/ReactReader.tsx"],"sourcesContent":["export const BOOKMARK_AREA_DATA_ATTRIBUTE = `data-bookmark-area`\nexport const MAX_ZOOM_SCALE = 5\n","import type { Reader } from \"@prose-reader/core\"\nimport type {\n Annotation,\n RuntimeAnnotation,\n} from \"@prose-reader/enhancer-annotations\"\nimport type { EnhancerAPI as GesturesEnhancerAPI } from \"@prose-reader/enhancer-gestures\"\nimport { createContext, type Dispatch, type SetStateAction } from \"react\"\nimport { type Signal, signal } from \"reactjrx\"\nimport { Subject } from \"rxjs\"\nimport type { ReaderNotification } from \"../notifications/types\"\nimport type {\n PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nexport type PrivateContextType = {\n /**\n * Internal fallback values used for uncontrolled settings. This way the\n * Reader works as intended but:\n * - there are no persistent settings\n * - the settings are valid only for the current mount runtime\n */\n uncontrolledFontSize: number\n refitMenuOpen: boolean\n onRefitMenuOpenChange: (open: boolean) => void\n fontSizeMenuOpen: boolean\n onFontSizeMenuOpenChange: (open: boolean) => void\n notificationsSubject: Subject<ReaderNotification>\n quickMenuBottomBarBoundingBoxSignal: Signal<ResizeObserverEntry | undefined>\n fontSizeMin: number\n fontSizeMax: number\n _quickMenuOpen: boolean\n _onQuickMenuOpenChange: Dispatch<SetStateAction<boolean>>\n selectedHighlight:\n | {\n highlight?: RuntimeAnnotation\n selection?: {\n selection: Selection\n itemIndex: number\n }\n }\n | undefined\n}\n\nexport type PublicContextType = {\n reader: (Reader & GesturesEnhancerAPI) | undefined\n enableFloatingTime?: boolean\n enableFloatingProgress?: boolean\n onItemClick?: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n quickMenuOpen?: boolean\n onQuickMenuOpenChange?: Dispatch<SetStateAction<boolean>>\n fontSize?: number\n zoomMaxScale?: number\n onFontSizeChange?: (\n from: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | \"internal\",\n value: number,\n ) => void\n fontSizeScope?: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE\n onFontSizeScopeChange?: (scope: PROSE_REACT_READER_SETTINGS_SCOPE) => void\n fontSizeValues?: Record<\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n number | undefined\n >\n annotations?: Annotation[]\n onAnnotationCreate?: (annotation: Annotation) => void\n onAnnotationUpdate?: (\n annotation: Pick<Annotation, \"id\" | \"highlightColor\" | \"notes\">,\n ) => void\n onAnnotationDelete?: (id: string) => void\n}\n\nexport type ReaderContextType = PrivateContextType & PublicContextType\n\nexport const getDefaultValue = (): ReaderContextType => ({\n _quickMenuOpen: false,\n _onQuickMenuOpenChange: (prev) => prev,\n reader: undefined,\n quickMenuBottomBarBoundingBoxSignal: signal<ResizeObserverEntry | undefined>({\n default: undefined,\n }),\n notificationsSubject: new Subject<ReaderNotification>(),\n refitMenuOpen: false,\n onRefitMenuOpenChange: () => {},\n fontSizeMenuOpen: false,\n onFontSizeMenuOpenChange: () => {},\n fontSizeMin: 0.2,\n fontSizeMax: 5,\n uncontrolledFontSize: 1,\n enableFloatingProgress: true,\n selectedHighlight: undefined,\n})\n\nexport const ReaderContext = createContext(\n signal({ default: getDefaultValue() }),\n)\n","import { isShallowEqual, pick, watchKeys } from \"@prose-reader/core\"\nimport { useContext } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { ReaderContext, type ReaderContextType } from \"./context\"\n\nexport const useReaderContextValue = <T extends keyof ReaderContextType>(\n keys: T[],\n) => {\n const context = useContext(ReaderContext)\n\n return useObserve(\n () => context.pipe(watchKeys(keys)),\n {\n compareFn: isShallowEqual,\n defaultValue: pick(context.value, keys),\n },\n [],\n ).data\n}\n\nexport const useReaderContext = () => {\n return useContext(ReaderContext)\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSignalValue } from \"reactjrx\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS = 24\n\n// @todo use Popover\nexport const FloatingMenu = memo(\n ({\n children,\n ...rest\n }: {\n present: boolean\n children: React.ReactNode\n } & PresenceProps) => {\n const { quickMenuBottomBarBoundingBoxSignal } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"zoomMaxScale\",\n ])\n const quickMenuBottomBarBoundingBox = useSignalValue(\n quickMenuBottomBarBoundingBoxSignal,\n )\n const bottomBarHeight =\n quickMenuBottomBarBoundingBox?.borderBoxSize?.[0]?.blockSize ||\n SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS\n\n return (\n <Presence\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n position=\"absolute\"\n bottom={`calc(${bottomBarHeight}px + var(--chakra-spacing-4))`}\n right={4}\n backgroundColor=\"bg.panel\"\n shadow=\"sm\"\n borderRadius=\"md\"\n p={2}\n display=\"flex\"\n flexDirection=\"row\"\n gap={2}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport type { AnnotationsEnhancerAPI } from \"@prose-reader/enhancer-annotations\"\nimport type { AudioEnhancerAPI } from \"@prose-reader/enhancer-audio\"\nimport type { GalleryEnhancerAPI } from \"@prose-reader/enhancer-gallery\"\nimport type { RefitEnhancerAPI } from \"@prose-reader/enhancer-refit\"\nimport type { SearchEnhancerAPI } from \"@prose-reader/enhancer-search\"\nimport { useReaderContextValue } from \"./useReaderContext\"\n\nexport const useReader = () => {\n const { reader } = useReaderContextValue([\"reader\"])\n\n return reader\n}\n\nexport const hasSearchEnhancer = (\n reader?: Reader,\n): reader is Reader & SearchEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_SEARCH\" in reader\n}\n\nexport const hasAudioEnhancer = (\n reader?: Reader,\n): reader is Reader & AudioEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_AUDIO\" in reader\n}\n\nexport const hasAnnotationsEnhancer = (\n reader?: Reader,\n): reader is Reader & AnnotationsEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_ANNOTATIONS\" in reader\n}\n\nexport const hasGalleryEnhancer = (\n reader?: Reader,\n): reader is Reader & GalleryEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_GALLERY\" in reader\n}\n\nexport const hasRefitEnhancer = (\n reader?: Reader,\n): reader is Reader & RefitEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_REFIT\" in reader\n}\n","import { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useReaderWithAnnotations = () => {\n const reader = useReader()\n const readerWithBookmarks = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return readerWithBookmarks\n}\n","import { Button } from \"@chakra-ui/react\"\nimport { FaEdit } from \"react-icons/fa\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { EMPTY, map, startWith, switchMap } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const AnnotateControls = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n const { selectedHighlight } = useReaderContextValue([\"selectedHighlight\"])\n const { data: isOpen } = useObserve(\n () =>\n reader?.selection.selectionOver$.pipe(\n switchMap(() =>\n reader.selection.selectionEnd$.pipe(\n map(() => false),\n startWith(true),\n ),\n ),\n ) ?? EMPTY,\n { defaultValue: false },\n [reader],\n )\n\n return (\n <FloatingMenu present={isOpen && !selectedHighlight}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n const selection = reader?.selection.getSelection()\n\n if (!selection) return\n\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n selection,\n },\n }))\n }}\n >\n <FaEdit />\n Annotate\n </Button>\n <Button variant=\"outline\" size=\"sm\" disabled>\n <LuNotebookPen />\n Bookmark\n </Button>\n </FloatingMenu>\n )\n}\n","export const truncateText = (text: string, maxLength = 50): string => {\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength)}...`\n}\n","import type { ButtonProps } from \"@chakra-ui/react\"\nimport { IconButton as ChakraIconButton } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { LuX } from \"react-icons/lu\"\n\nexport type CloseButtonProps = ButtonProps\n\nexport const CloseButton = React.forwardRef<\n HTMLButtonElement,\n CloseButtonProps\n>(function CloseButton(props, ref) {\n return (\n <ChakraIconButton variant=\"ghost\" aria-label=\"Close\" ref={ref} {...props}>\n {props.children ?? <LuX />}\n </ChakraIconButton>\n )\n})\n","import { Drawer as ChakraDrawer, Portal } from \"@chakra-ui/react\"\nimport { CloseButton } from \"./close-button\"\nimport * as React from \"react\"\n\ninterface DrawerContentProps extends ChakraDrawer.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n offset?: ChakraDrawer.ContentProps[\"padding\"]\n}\n\nexport const DrawerContent = React.forwardRef<\n HTMLDivElement,\n DrawerContentProps\n>(function DrawerContent(props, ref) {\n const { children, portalled = true, portalRef, offset, ...rest } = props\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner padding={offset}>\n <ChakraDrawer.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n )\n})\n\nexport const DrawerCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n return (\n <ChakraDrawer.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref} />\n </ChakraDrawer.CloseTrigger>\n )\n})\n\nexport const DrawerTrigger = ChakraDrawer.Trigger\nexport const DrawerRoot = ChakraDrawer.Root\nexport const DrawerFooter = ChakraDrawer.Footer\nexport const DrawerHeader = ChakraDrawer.Header\nexport const DrawerBody = ChakraDrawer.Body\nexport const DrawerBackdrop = ChakraDrawer.Backdrop\nexport const DrawerDescription = ChakraDrawer.Description\nexport const DrawerTitle = ChakraDrawer.Title\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger\n","import { Box, Button, Stack, Text, Textarea } from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { tap } from \"rxjs\"\nimport { truncateText } from \"../common/utils\"\nimport {\n DrawerBackdrop,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerRoot,\n} from \"../components/ui/drawer\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nconst HIGHLIGHT_COLORS = [\n \"rgba(216, 191, 216, 1)\", // Light purple\n \"rgba(255, 225, 125, 1)\", // Soft yellow\n \"rgba(144, 238, 144, 1)\", // Light green\n \"rgba(173, 216, 230, 1)\", // Light blue\n \"rgba(255, 182, 193, 1)\", // Light pink\n] as const\n\nexport const AnnotationDrawer = memo(() => {\n const reader = useReaderWithAnnotations()\n const {\n selectedHighlight,\n onAnnotationCreate,\n onAnnotationUpdate,\n onAnnotationDelete,\n } = useReaderContextValue([\n \"selectedHighlight\",\n \"onAnnotationCreate\",\n \"onAnnotationUpdate\",\n \"onAnnotationDelete\",\n ])\n const context = useReaderContext()\n const { highlight, selection } = selectedHighlight ?? {}\n const [selectedColor, setSelectedColor] = useState<string>(\n HIGHLIGHT_COLORS[0],\n )\n const [contents, setContents] = useState<string>(\"\")\n const isOpen = !!(selection ?? highlight)\n\n const onClose = () => {\n context.update((state) => ({\n ...state,\n selectedHighlight: undefined,\n }))\n }\n\n const onOpenChange: ComponentProps<typeof DrawerRoot>[\"onOpenChange\"] = (\n event,\n ) => {\n if (!event.open) {\n onClose()\n }\n }\n\n const highlightColor = highlight?.highlightColor\n const highlightContent = highlight?.notes\n\n useEffect(() => {\n void isOpen\n\n setContents(\"\")\n }, [isOpen])\n\n useEffect(() => {\n setContents(highlightContent ?? \"\")\n }, [highlightContent])\n\n useEffect(() => {\n void isOpen\n\n if (highlightColor) {\n setSelectedColor(highlightColor)\n } else {\n setSelectedColor(HIGHLIGHT_COLORS[0])\n }\n }, [highlightColor, isOpen])\n\n const onOpenDrawerOnTap = useCallback(\n function openDrawerOnTap() {\n return reader?.annotations.highlightTap$.pipe(\n tap(({ highlight }) => {\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n highlight,\n },\n }))\n }),\n )\n },\n [reader, context],\n )\n\n useSubscribe(onOpenDrawerOnTap)\n\n return (\n <DrawerRoot placement=\"bottom\" onOpenChange={onOpenChange} open={isOpen}>\n <DrawerBackdrop />\n <DrawerContent>\n <DrawerHeader borderBottomWidth=\"1px\">\n {highlight\n ? \"Highlight\"\n : `Selection: \"${truncateText(selection?.selection?.toString() ?? \"\", 10)}\"`}\n </DrawerHeader>\n <DrawerBody gap={4} display=\"flex\" flexDirection=\"column\" pb={4}>\n <Stack>\n <Stack gap={2} flexDirection=\"row\">\n {HIGHLIGHT_COLORS.map((color) => (\n <Box\n bgColor={color}\n height={10}\n width={10}\n key={color}\n borderRadius=\"50%\"\n cursor=\"pointer\"\n {...(selectedColor === color && {\n border: \"4px solid white\",\n })}\n onClick={() => setSelectedColor(color)}\n />\n ))}\n </Stack>\n <Text>Annotation:</Text>\n <Textarea\n value={contents}\n onChange={(event) => setContents(event.target.value)}\n />\n </Stack>\n {!!selection && (\n <Button\n onClick={() => {\n onClose()\n\n const annotation = reader?.annotations.createAnnotation({\n ...selection,\n highlightColor: selectedColor,\n notes: contents,\n })\n\n if (annotation) {\n onAnnotationCreate?.(annotation)\n }\n }}\n >\n Highlight\n </Button>\n )}\n {!!highlight && (\n <Stack direction=\"row\">\n <Button\n flex={1}\n onClick={() => {\n onClose()\n\n onAnnotationUpdate?.({\n id: highlight.id,\n highlightColor: selectedColor,\n notes: contents,\n })\n }}\n >\n Update\n </Button>\n <Button\n flex={1}\n variant=\"surface\"\n onClick={() => {\n onClose()\n\n onAnnotationDelete?.(highlight.id)\n }}\n >\n Remove\n </Button>\n </Stack>\n )}\n </DrawerBody>\n </DrawerContent>\n </DrawerRoot>\n )\n})\n","import { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { CloseButton } from \"./close-button\"\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n backdrop?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(function DialogContent(props, ref) {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n )\n})\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref}>\n {props.children}\n </CloseButton>\n </ChakraDialog.CloseTrigger>\n )\n})\n\nexport const DialogRoot = ChakraDialog.Root\nexport const DialogFooter = ChakraDialog.Footer\nexport const DialogHeader = ChakraDialog.Header\nexport const DialogBody = ChakraDialog.Body\nexport const DialogBackdrop = ChakraDialog.Backdrop\nexport const DialogTitle = ChakraDialog.Title\nexport const DialogDescription = ChakraDialog.Description\nexport const DialogTrigger = ChakraDialog.Trigger\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger\n","import { isDefined, useObserve } from \"reactjrx\"\nimport { filter, map, switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotation = (id: string) => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n map((items) => items.find((item) => item.id === id)),\n filter(isDefined),\n switchMap((item) => readerWithAnnotations.locateResource(item)),\n ),\n [readerWithAnnotations],\n )\n}\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useReader } from \"../context/useReader\"\nimport { useAnnotation } from \"./useAnnotation\"\n\nexport const AnnotationListItem = ({\n id,\n onNavigate,\n allowLeftIcon = true,\n}: {\n id: string\n onNavigate: () => void\n allowLeftIcon?: boolean\n}) => {\n const reader = useReader()\n const { data: annotation } = useAnnotation(id)\n const textContent =\n annotation?.meta.range?.toString() || annotation?.meta.node?.textContent\n\n return (\n <List.Item>\n <Link\n href=\"#\"\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToCfi(annotation?.meta.cfi ?? \"\")\n }}\n >\n {annotation?.resource?.notes ? (\n <List.Indicator asChild>\n <LuNotebookPen />\n </List.Indicator>\n ) : allowLeftIcon ? (\n <List.Indicator asChild visibility=\"hidden\">\n <LuNotebookPen />\n </List.Indicator>\n ) : null}\n <Stack gap={0}>\n {textContent ? (\n <Text lineClamp={2} fontSize=\"md\">\n {textContent}\n </Text>\n ) : (\n <Text lineClamp={2} fontSize=\"md\" fontStyle=\"italic\">\n Page {(annotation?.meta.absolutePageIndex ?? 0) + 1}\n </Text>\n )}\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Book page: ${\n annotation?.meta?.absolutePageIndex !== undefined\n ? annotation.meta.absolutePageIndex + 1\n : \"unknown (not loaded)\"\n }`}</Text>\n </Stack>\n </Link>\n </List.Item>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotations = () => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n switchMap((highlights) => {\n return readerWithAnnotations.locateResource(highlights)\n }),\n ),\n [readerWithAnnotations],\n )\n}\n","import { useAnnotations } from \"./useAnnotations\"\n\nexport const useHighlights = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter((annotation) => annotation.meta.isCfiRange),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"./AnnotationListItem\"\nimport { useHighlights } from \"./useHighlights\"\n\nexport const AnnotationsList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useHighlights()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n />\n ))}\n </List.Root>\n )\n}\n","import { useAnnotations } from \"../useAnnotations\"\n\nexport const useBookmarks = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter(\n (annotation) => !annotation.meta.isCfiRange && !annotation.resource.notes,\n ),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"../AnnotationListItem\"\nimport { useBookmarks } from \"./useBookmarks\"\n\nexport const BookmarksList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useBookmarks()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n allowLeftIcon={false}\n />\n ))}\n </List.Root>\n )\n}\n","import { Tabs } from \"@chakra-ui/react\"\nimport { memo, useState } from \"react\"\nimport { LuBookmark, LuNotebookPen } from \"react-icons/lu\"\nimport { AnnotationsList } from \"./AnnotationsList\"\nimport { BookmarksList } from \"./bookmarks/BookmarksList\"\n\nexport const AnnotationsDialogContent = memo(\n ({\n onNavigate,\n defaultTab,\n }: {\n onNavigate: () => void\n defaultTab: \"bookmarks\" | \"annotations\" | undefined\n }) => {\n const [tab, setTab] = useState(defaultTab ?? \"bookmarks\")\n\n return (\n <Tabs.Root\n value={tab}\n onValueChange={(e) => setTab(e.value as \"bookmarks\" | \"annotations\")}\n >\n <Tabs.List>\n <Tabs.Trigger value=\"bookmarks\">\n <LuBookmark />\n Bookmarks\n </Tabs.Trigger>\n <Tabs.Trigger value=\"annotations\">\n <LuNotebookPen />\n Annotations\n </Tabs.Trigger>\n <Tabs.Indicator />\n </Tabs.List>\n <Tabs.Content value=\"bookmarks\">\n <BookmarksList onNavigate={onNavigate} />\n </Tabs.Content>\n <Tabs.Content value=\"annotations\">\n <AnnotationsList onNavigate={onNavigate} />\n </Tabs.Content>\n </Tabs.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { AnnotationsDialogContent } from \"./AnnotationsDialogContent\"\n\nexport const AnnotationsDialog = memo(\n ({\n openWith,\n setOpen,\n onNavigate,\n }: {\n openWith: \"bookmarks\" | \"annotations\" | undefined\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={!!openWith}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Annotations</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1}>\n <AnnotationsDialogContent\n onNavigate={onNavigate}\n defaultTab={openWith}\n />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useObserve } from \"reactjrx\"\nimport { EMPTY, map, of } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useSpineItem = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const reader = useReader()\n\n return useObserve(() => {\n if (!reader) return EMPTY\n\n if (itemIndex !== undefined)\n return of(reader.spine.spineItemsManager.get(itemIndex))\n\n if (absolutePageIndex !== undefined) {\n return reader.spine.pages\n .observeFromAbsolutePageIndex(absolutePageIndex)\n .pipe(\n map((page) => reader.spine.spineItemsManager.get(page?.itemIndex)),\n )\n }\n\n return EMPTY\n }, [itemIndex, absolutePageIndex, reader])\n}\n","import { useObserve } from \"reactjrx\"\nimport { NEVER } from \"rxjs\"\nimport { useSpineItem } from \"./useSpineItem\"\n\nexport const useSpineItemReady = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const { data: spineItem } = useSpineItem({ absolutePageIndex, itemIndex })\n const { data: isReady } = useObserve(\n () => (!spineItem ? NEVER : spineItem.isReady$),\n [spineItem],\n )\n\n return { spineItem, isReady }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSpineItemReady } from \"../../common/useSpineItemReady\"\nimport { BOOKMARK_AREA_DATA_ATTRIBUTE } from \"../../constants\"\nimport { useAnnotations } from \"../useAnnotations\"\n\nexport const BookmarkPageMarker = memo(\n ({\n absolutePageIndex,\n left,\n top,\n width,\n }: {\n absolutePageIndex: number\n left: number\n top: number\n width: number\n }) => {\n const { isReady: isItemReady } = useSpineItemReady({\n absolutePageIndex,\n })\n const { data: bookmarks } = useAnnotations()\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex === absolutePageIndex &&\n !bookmark.meta.isCfiRange,\n )\n\n /**\n * Stale bookmarks means we cannot assert at the moment whether the page is marked or not.\n * In this case we just hide the bookmark button. You may want to have different UX to handle\n * this case.\n *\n * This also avoid having a flash where you show an non bookmarked icon and right away change it with\n * a valid marked page icon.\n */\n if (!isItemReady) return null\n\n const markerSize = (width * 0.1) / 2\n\n return (\n <Presence\n present={!!bookmarkForPage}\n lazyMount\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n >\n <Box\n data-bookmark-area={BOOKMARK_AREA_DATA_ATTRIBUTE}\n position=\"absolute\"\n left={left + width}\n transform=\"translateX(-100%)\"\n pointerEvents=\"none\"\n top={top}\n width={markerSize}\n height={markerSize}\n _before={{\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n borderTop: `${markerSize}px solid #03030373`,\n borderLeft: `${markerSize}px solid transparent`,\n }}\n />\n </Presence>\n )\n },\n)\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../../context/useReader\"\nimport { BookmarkPageMarker } from \"./BookmarkPageMarker\"\n\nexport const BookmarkPageMarkers = memo(() => {\n const reader = useReader()\n const { data: pages } = useObserve(() => reader?.layoutInfo$, [reader])\n\n return (\n <>\n {pages?.pages.map(\n ({ absoluteLayout: { left, top, width } }, pageIndex) => (\n <BookmarkPageMarker\n key={pageIndex}\n absolutePageIndex={pageIndex}\n left={left}\n top={top}\n width={width}\n />\n ),\n )}\n </>\n )\n})\n","import { useEffect } from \"react\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderContext } from \"../../context/useReaderContext\"\nimport { useAnnotations } from \"../useAnnotations\"\nimport { useReaderWithAnnotations } from \"../useReaderWithAnnotations\"\n\nconst CONTINUE_TAP_GESTURE = true\nconst BOOKMARK_CORNER_SIZE_PERCENT = 10\n\nconst isTopRightCornerPosition = ({\n position,\n containerSize,\n sizePercent,\n}: {\n position: {\n x: number\n y: number\n }\n containerSize: {\n width: number\n height: number\n }\n sizePercent: number\n}) => {\n const actualSize =\n Math.min(containerSize.width, containerSize.height) * (sizePercent / 100)\n\n return (\n position.x > containerSize.width - actualSize && position.y < actualSize\n )\n}\n\nexport const useBookmarkOnCornerTap = () => {\n const reader = useReaderWithAnnotations()\n const { data: bookmarks } = useAnnotations()\n const readerContext = useReaderContext()\n\n useEffect(() => {\n if (!reader) return\n\n const unSub = reader.gestures.hooks.register(\n \"beforeTapGesture\",\n ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader?.annotations.candidates$),\n map(([context, candidates]) => {\n if (!context.page) return CONTINUE_TAP_GESTURE\n\n const {\n spineItem,\n spineItemPageIndex,\n spineItemPagePosition,\n pageSize,\n } = context.page\n\n const hasTapOnTopRightCorner = isTopRightCornerPosition({\n position: spineItemPagePosition,\n containerSize: pageSize,\n sizePercent: BOOKMARK_CORNER_SIZE_PERCENT,\n })\n\n if (hasTapOnTopRightCorner) {\n const pageEntry = reader.spine.pages.fromSpineItemPageIndex(\n spineItem,\n spineItemPageIndex,\n )\n\n if (!pageEntry) return CONTINUE_TAP_GESTURE\n\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex ===\n pageEntry.absolutePageIndex &&\n bookmark.meta.range === undefined,\n )\n\n if (bookmarkForPage) {\n readerContext.value.onAnnotationDelete?.(\n bookmarkForPage.resource.id,\n )\n\n return !CONTINUE_TAP_GESTURE\n }\n\n const canBookmarkPage = candidates?.[pageEntry.absolutePageIndex]\n\n if (canBookmarkPage) {\n const annotation = reader?.annotations.createAnnotation({\n absolutePageIndex: pageEntry.absolutePageIndex,\n })\n\n if (annotation) {\n readerContext.value.onAnnotationCreate?.(annotation)\n }\n\n return !CONTINUE_TAP_GESTURE\n }\n }\n\n return CONTINUE_TAP_GESTURE\n }),\n ),\n )\n\n return unSub\n }, [reader, bookmarks, readerContext])\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const usePreventInteractionOnSelection = () => {\n const reader = useReaderWithAnnotations()\n\n const beforeTapGesture = useCallback(\n () =>\n /**\n * Hook used to prevent some gestures from being handled.\n */\n reader?.gestures.hooks.register(\"beforeTapGesture\", ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader.selection.lastSelectionOnPointerdown$),\n map(([{ event }, lastSelectionOnPointerdown]) => {\n const target = event.event.target\n\n /**\n * In this case if we have a gesture on an annotation, we want to prevent\n * it.\n */\n const wasOrIsOnSelection =\n (target && reader.annotations.isTargetWithinHighlight(target)) ||\n lastSelectionOnPointerdown\n\n return !wasOrIsOnSelection\n }),\n ),\n ),\n [reader],\n )\n\n useSubscribe(beforeTapGesture)\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { combineLatest, distinctUntilChanged, map } from \"rxjs\"\nimport { useReaderContext } from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const useSyncAnnotationsWithReader = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n\n const syncAnnotationsWithReader = useCallback(() => {\n if (reader) {\n const selectedHighlight$ = context.pipe(\n map((context) => context.selectedHighlight?.highlight?.id),\n distinctUntilChanged(),\n )\n\n const annotations$ = context.pipe(\n map((context) => context.annotations ?? []),\n distinctUntilChanged(),\n )\n\n const annotationsWithSelected$ = combineLatest([\n annotations$,\n selectedHighlight$,\n ]).pipe(\n map(([annotations, selectedHighlight]) =>\n annotations.map((annotation) => ({\n ...annotation,\n selected: annotation.id === selectedHighlight,\n })),\n ),\n )\n\n reader.annotations.update({ annotations$: annotationsWithSelected$ })\n }\n }, [reader, context])\n\n useSubscribe(syncAnnotationsWithReader)\n}\n","import type { AudioEnhancedReader } from \"@prose-reader/enhancer-audio\"\nimport { hasAudioEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAudioReader = (): AudioEnhancedReader | undefined => {\n const reader = useReader()\n\n return hasAudioEnhancer(reader) ? reader : undefined\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioVisualizer = (enabled = true) => {\n const audioReader = useAudioReader()\n const { data: visualizer } = useObserve<AudioVisualizerState | undefined>(\n () => (enabled ? audioReader?.audio.visualizer$ : undefined),\n [enabled, audioReader],\n )\n\n return visualizer\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useIsCurrentAudioTrack = ({\n enabled = true,\n trackId,\n}: {\n enabled?: boolean\n trackId: string\n}) => {\n const audioReader = useAudioReader()\n const { data: isCurrentTrack = false } = useObserve(\n () =>\n enabled\n ? audioReader?.audio.state$.pipe(\n map((state) => state.currentTrack?.id === trackId),\n distinctUntilChanged(),\n )\n : undefined,\n [enabled, trackId, audioReader],\n )\n\n return isCurrentTrack\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\n\nexport const FALLBACK_TOP_COLOR = `#93c5fd`\nexport const FALLBACK_BOTTOM_COLOR = `#3b82f6`\nexport const MIN_BAR_HEIGHT = 1\nexport const MAX_BAR_HEIGHT_RATIO = 0.1\nexport const IDLE_LEVEL = 0.08\nexport const EDGE_FADE_PORTION = 0.25\nexport const CENTER_EMPHASIS_RATIO = 0.15\n\nexport const DEFAULT_STATE_BASE_LEVEL = 0.02\nexport const DEFAULT_STATE_PEAK_LEVEL = 0.145\nexport const DEFAULT_STATE_HILL_SPREAD = 0.52\nexport const DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO = 0.16\nexport const DEFAULT_STATE_OPACITY = 0.5\nexport const DEFAULT_STATE_TEXTURE_AMOUNT = 0.34\n\nexport const DEFAULT_VISUALIZER_STATE: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n","import {\n DEFAULT_STATE_BASE_LEVEL,\n DEFAULT_STATE_HILL_SPREAD,\n DEFAULT_STATE_PEAK_LEVEL,\n DEFAULT_STATE_TEXTURE_AMOUNT,\n IDLE_LEVEL,\n} from \"./constants\"\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport const smoothstep = (edge0: number, edge1: number, value: number) => {\n if (edge0 === edge1) return Number(value >= edge1)\n\n const normalized = clamp((value - edge0) / (edge1 - edge0), 0, 1)\n\n return normalized * normalized * (3 - 2 * normalized)\n}\n\nconst getDefaultTexture = (progress: number) => {\n const lowFrequency = Math.sin(progress * Math.PI * 6 + 0.8)\n const highFrequency = Math.sin(progress * Math.PI * 14 + 1.7)\n\n return clamp(0.5 + lowFrequency * 0.3 + highFrequency * 0.2, 0, 1)\n}\n\nexport const getDefaultDisplayBars = (numBars: number) =>\n Array.from({ length: numBars }, (_, index) => {\n const progress = numBars === 1 ? 0.5 : index / (numBars - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const hillProfile =\n 1 - smoothstep(DEFAULT_STATE_HILL_SPREAD, 1, centerDistance)\n const texture = getDefaultTexture(progress)\n const texturedHill =\n hillProfile *\n (1 -\n DEFAULT_STATE_TEXTURE_AMOUNT +\n texture * DEFAULT_STATE_TEXTURE_AMOUNT)\n\n return clamp(\n DEFAULT_STATE_BASE_LEVEL + DEFAULT_STATE_PEAK_LEVEL * texturedHill,\n 0,\n 1,\n )\n })\n\nconst getAverage = (values: number[]) => {\n if (values.length === 0) return 0\n\n return values.reduce((total, value) => total + value, 0) / values.length\n}\n\nexport const hasMeaningfulLevels = (values: number[]) =>\n values.some((value) => value > 0.001)\n\nexport const getNormalizedDisplayBarCount = (value: number) => {\n const safeValue = Math.max(1, Math.floor(value))\n\n return safeValue % 2 === 0 ? safeValue + 1 : safeValue\n}\n\nexport const getMirroredDisplayBars = (\n values: number[],\n displayBarCount: number,\n) => {\n const normalizedDisplayBarCount =\n getNormalizedDisplayBarCount(displayBarCount)\n const centerOutSeedCount = Math.floor(normalizedDisplayBarCount / 2) + 1\n\n const centerOutSeed = Array.from(\n { length: centerOutSeedCount },\n (_, index) => {\n const start = Math.floor((index * values.length) / centerOutSeedCount)\n const end = Math.max(\n start + 1,\n Math.floor(((index + 1) * values.length) / centerOutSeedCount),\n )\n const average = getAverage(values.slice(start, end))\n\n return clamp(average, 0, 1)\n },\n )\n\n const centerBar = centerOutSeed[0] ?? IDLE_LEVEL\n const outerBars = centerOutSeed.slice(1)\n\n return [...outerBars.slice().reverse(), centerBar, ...outerBars]\n}\n\nexport const resolveGradientColors = (\n element: HTMLElement,\n {\n topVariable,\n topFallback,\n bottomVariable,\n bottomFallback,\n }: {\n topVariable: string\n topFallback: string\n bottomVariable: string\n bottomFallback: string\n },\n) => {\n const styles = window.getComputedStyle(element)\n const topColor = styles.getPropertyValue(topVariable).trim() || topFallback\n const bottomColor =\n styles.getPropertyValue(bottomVariable).trim() || bottomFallback\n\n return {\n topColor,\n bottomColor,\n }\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport {\n CENTER_EMPHASIS_RATIO,\n DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO,\n DEFAULT_STATE_OPACITY,\n EDGE_FADE_PORTION,\n MAX_BAR_HEIGHT_RATIO,\n MIN_BAR_HEIGHT,\n} from \"./constants\"\nimport {\n clamp,\n getDefaultDisplayBars,\n getMirroredDisplayBars,\n hasMeaningfulLevels,\n smoothstep,\n} from \"./shaping\"\n\ntype WaveSize = {\n width: number\n height: number\n}\n\ntype DrawWaveArgs = {\n canvas: HTMLCanvasElement\n size: WaveSize\n visualizer: AudioVisualizerState\n displayBarCount: number\n displayedBars: number[]\n fillStyle: CanvasGradient | string\n}\n\nexport const drawWave = ({\n canvas,\n size,\n visualizer,\n displayBarCount,\n displayedBars,\n fillStyle,\n}: DrawWaveArgs) => {\n const context = canvas.getContext(`2d`)\n const { width, height } = size\n\n if (!context || width <= 0 || height <= 0) return displayedBars\n\n context.clearRect(0, 0, width, height)\n\n const hasPlayedLevels = hasMeaningfulLevels(visualizer.levels)\n const isDefaultState = !visualizer.isActive && !hasPlayedLevels\n const displayBars = isDefaultState\n ? getDefaultDisplayBars(displayBarCount)\n : getMirroredDisplayBars(visualizer.levels, displayBarCount)\n\n const nextDisplayedBars =\n displayedBars.length !== displayBars.length\n ? Array.from({ length: displayBars.length }, () => 0)\n : displayedBars\n\n const easedBars = visualizer.isActive\n ? nextDisplayedBars.map((value, index) => {\n const targetValue = displayBars[index] ?? 0\n const easing = 0.28\n\n return value + (targetValue - value) * easing\n })\n : [...displayBars]\n\n const gap = Math.round(\n clamp(width / Math.max(easedBars.length, 1) / 2.8, 1, 4),\n )\n const barWidth = Math.max(\n 2,\n Math.floor((width - gap * (easedBars.length - 1)) / easedBars.length),\n )\n const totalWidth = barWidth * easedBars.length + gap * (easedBars.length - 1)\n const startX = Math.max(0, (width - totalWidth) / 2)\n const centerY = height / 2\n const maxHeight = Math.max(\n MIN_BAR_HEIGHT,\n height *\n (isDefaultState\n ? DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO\n : MAX_BAR_HEIGHT_RATIO),\n )\n context.fillStyle = fillStyle\n\n for (const [index, rawValue] of easedBars.entries()) {\n const amplitude = clamp(rawValue, 0, 1)\n const progress =\n easedBars.length === 1 ? 0.5 : index / (easedBars.length - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const centerProfile = 1 - smoothstep(0, 1, centerDistance)\n const emphasizedAmplitude =\n (amplitude * (1 + CENTER_EMPHASIS_RATIO * centerProfile)) /\n (1 + CENTER_EMPHASIS_RATIO * centerProfile * amplitude)\n const heightProgress = isDefaultState\n ? amplitude\n : emphasizedAmplitude ** 1.15\n const barHeight = Math.max(MIN_BAR_HEIGHT, heightProgress * maxHeight)\n const barRadius = Math.min(barWidth / 2, barHeight / 2)\n const x = Math.round(startX + index * (barWidth + gap))\n const y = centerY - barHeight / 2\n const edgeFade =\n smoothstep(0, EDGE_FADE_PORTION, progress) *\n (1 - smoothstep(1 - EDGE_FADE_PORTION, 1, progress))\n\n context.globalAlpha = clamp(\n (isDefaultState\n ? DEFAULT_STATE_OPACITY\n : visualizer.isActive\n ? 0.95\n : 0.75) * edgeFade,\n 0,\n 1,\n )\n context.beginPath()\n context.roundRect(x, y, barWidth, barHeight, barRadius)\n context.fill()\n }\n\n context.globalAlpha = 1\n\n return easedBars\n}\n","import { Box, useBreakpointValue } from \"@chakra-ui/react\"\nimport {\n setPropertyIfChanged,\n setStylePropertyIfChanged,\n} from \"@prose-reader/core\"\nimport type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { FALLBACK_BOTTOM_COLOR, FALLBACK_TOP_COLOR } from \"./constants\"\nimport { drawWave as drawWaveFrame } from \"./drawWave\"\nimport { getNormalizedDisplayBarCount, resolveGradientColors } from \"./shaping\"\n\nconst DEFAULT_VISUALIZER: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n\nexport const AudioWaveCanvas = ({\n visualizer,\n}: {\n visualizer?: AudioVisualizerState\n}) => {\n const displayBarCount = getNormalizedDisplayBarCount(\n useBreakpointValue({\n base: 29,\n md: 35,\n lg: 41,\n xl: 49,\n }) ?? 29,\n )\n const canvasRef = useRef<HTMLCanvasElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const frameRef = useRef<number | undefined>(undefined)\n const visualizerRef = useRef<AudioVisualizerState>(\n visualizer ?? DEFAULT_VISUALIZER,\n )\n const displayedBarsRef = useRef<number[]>([])\n const fillStyleRef = useRef<CanvasGradient | string>(FALLBACK_BOTTOM_COLOR)\n const sizeRef = useRef({\n width: 0,\n height: 0,\n })\n\n /**\n * Cache the gradient outside the animation loop to avoid repeated\n * `getComputedStyle()` and gradient allocation during playback.\n *\n * Limitation: the resolved Chakra CSS variable colors are treated as static\n * for the current canvas size. Theme or palette changes after mount are not\n * picked up immediately; the gradient is refreshed on resize and remount.\n */\n const refreshFillStyle = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas || sizeRef.current.height <= 0) return\n\n const context = canvas.getContext(`2d`)\n\n if (!context) return\n\n const { topColor, bottomColor } = resolveGradientColors(canvas, {\n topVariable: `--audio-wave-top-color`,\n topFallback: FALLBACK_TOP_COLOR,\n bottomVariable: `--audio-wave-bottom-color`,\n bottomFallback: FALLBACK_BOTTOM_COLOR,\n })\n const gradient = context.createLinearGradient(\n 0,\n 0,\n 0,\n sizeRef.current.height,\n )\n\n gradient.addColorStop(0, topColor)\n gradient.addColorStop(1, bottomColor)\n\n fillStyleRef.current = gradient\n }, [])\n\n const drawWave = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas) return\n\n const visualizer = visualizerRef.current\n\n displayedBarsRef.current = drawWaveFrame({\n canvas,\n size: sizeRef.current,\n visualizer,\n displayBarCount,\n displayedBars: displayedBarsRef.current,\n fillStyle: fillStyleRef.current,\n })\n }, [displayBarCount])\n\n const stopAnimation = useCallback(() => {\n if (frameRef.current !== undefined) {\n cancelAnimationFrame(frameRef.current)\n frameRef.current = undefined\n }\n }, [])\n\n const startAnimation = useCallback(() => {\n if (frameRef.current !== undefined) return\n\n const tick = () => {\n const visualizer = visualizerRef.current\n\n if (!visualizer.isActive) {\n frameRef.current = undefined\n drawWave()\n\n return\n }\n\n drawWave()\n frameRef.current = requestAnimationFrame(tick)\n }\n\n frameRef.current = requestAnimationFrame(tick)\n }, [drawWave])\n\n const resizeCanvas = useCallback(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n\n if (!canvas || !container) return\n\n const nextWidth = Math.max(1, container.clientWidth)\n const nextHeight = Math.max(1, container.clientHeight)\n const pixelRatio = window.devicePixelRatio || 1\n const nextCanvasWidth = Math.round(nextWidth * pixelRatio)\n const nextCanvasHeight = Math.round(nextHeight * pixelRatio)\n\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n setPropertyIfChanged(canvas, `width`, nextCanvasWidth)\n setPropertyIfChanged(canvas, `height`, nextCanvasHeight)\n setStylePropertyIfChanged(canvas.style, `width`, `${nextWidth}px`)\n setStylePropertyIfChanged(canvas.style, `height`, `${nextHeight}px`)\n\n const context = canvas.getContext(`2d`)\n\n if (context) {\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0)\n }\n\n refreshFillStyle()\n drawWave()\n }, [drawWave, refreshFillStyle])\n\n useEffect(() => {\n visualizerRef.current = visualizer ?? DEFAULT_VISUALIZER\n\n if (visualizerRef.current.isActive) {\n startAnimation()\n return\n }\n\n stopAnimation()\n drawWave()\n }, [drawWave, startAnimation, stopAnimation, visualizer])\n\n useEffect(() => {\n const container = containerRef.current\n\n if (!container) return\n\n resizeCanvas()\n\n const resizeObserver = new ResizeObserver(() => {\n resizeCanvas()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n stopAnimation()\n resizeObserver.disconnect()\n }\n }, [resizeCanvas, stopAnimation])\n\n return (\n <Box\n ref={containerRef}\n position=\"absolute\"\n inset={0}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n px={8}\n py={12}\n pointerEvents=\"none\"\n css={{\n \"--audio-wave-top-color\": \"colors.colorPalette.emphasized\",\n \"--audio-wave-bottom-color\": \"colors.colorPalette.solid\",\n }}\n style={{\n WebkitMaskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n maskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n }}\n >\n <canvas ref={canvasRef} />\n </Box>\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioVisualizer } from \"./useAudioVisualizer\"\nimport { useIsCurrentAudioTrack } from \"./useIsCurrentAudioTrack\"\nimport { AudioWaveCanvas } from \"./wave/AudioWaveCanvas\"\n\n/**\n * Render only when there is a `renderer`. Meaning the item is loaded.\n * - Renders correct visualizer for current item.\n * - Renders default visualizer when item is not currently playing.\n */\nexport const AudioSpineItem = ({ item }: { item: CoreSpineItem }) => {\n const audioReader = useAudioReader()\n const isAudioRenderer = audioReader?.audio.isAudioRenderer(item.renderer)\n const audioRenderer = isAudioRenderer ? item.renderer : undefined\n const { data: audioDocumentContainer } = useObserve(\n () => audioRenderer?.watch(`documentContainer`),\n [audioRenderer, isAudioRenderer],\n )\n const isCurrentTrack = useIsCurrentAudioTrack({\n enabled: !!audioDocumentContainer,\n trackId: item.item.id,\n })\n const visualizer = useAudioVisualizer(isCurrentTrack)\n\n if (!audioDocumentContainer) return null\n\n return createPortal(\n <AudioWaveCanvas visualizer={isCurrentTrack ? visualizer : undefined} />,\n audioDocumentContainer,\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AudioSpineItem } from \"../audio/AudioSpineItem\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(<AudioSpineItem item={item} />, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n combineLatest,\n distinctUntilChanged,\n map,\n NEVER,\n startWith,\n switchMap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n throttleTime(100, undefined, { trailing: true }),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(\n map((entries) => entries.some((e) => e.isIntersecting)),\n startWith(false),\n distinctUntilChanged(),\n )\n\n return combineLatest([itemLayoutChanged$, isItemIntersecting$]).pipe(\n switchMap(([, isVisible]) => {\n if (!isVisible) {\n element.innerHTML = \"\"\n\n return NEVER\n }\n\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n {/* iframe nullifying overlay. Ensure there are no pointer interceptions, especially on iPadOS */}\n <Box position=\"absolute\" inset={0} zIndex={1} aria-hidden=\"true\" />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n zIndex={2}\n textAlign=\"center\"\n bgColor=\"bg.panel\"\n color=\"fg\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","{\n \"name\": \"@prose-reader/react-reader\",\n \"private\": false,\n \"version\": \"1.306.0\",\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./index.css\": \"./dist/index.css\"\n },\n \"files\": [\n \"/dist\"\n ],\n \"scripts\": {\n \"start\": \"vite build --watch --mode development\",\n \"build\": \"node ./scripts/check-enhancer-imports.mjs && tsc -b && vite build\",\n \"check:enhancers\": \"node ./scripts/check-enhancers.mjs\",\n \"test\": \"vitest run --coverage\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.0.0\",\n \"@types/react-dom\": \"^19.0.0\",\n \"@vitejs/plugin-react\": \"^6.0.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"typescript\": \"*\",\n \"vite\": \"^8\"\n },\n \"peerDependencies\": {\n \"@chakra-ui/react\": \"3.x\",\n \"@emotion/react\": \"11.x\",\n \"@prose-reader/core\": \"^1.169.0\",\n \"@prose-reader/enhancer-annotations\": \"^1.169.0\",\n \"@prose-reader/enhancer-audio\": \"^1.169.0\",\n \"@prose-reader/enhancer-gallery\": \"^1.169.0\",\n \"@prose-reader/enhancer-gestures\": \"^1.169.0\",\n \"@prose-reader/enhancer-refit\": \"^1.169.0\",\n \"@prose-reader/enhancer-search\": \"^1.169.0\",\n \"@prose-reader/shared\": \"^1.169.0\",\n \"rc-slider\": \"11.1.x\",\n \"react\": \"19.x || 18.x\",\n \"react-dom\": \"19.x || 18.x\",\n \"react-icons\": \"^5.4.0\",\n \"reactjrx\": \"1.x\",\n \"screenfull\": \"^6.0.2\"\n }\n}\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { useEffect, useState } from \"react\"\n\nexport const useTransientValue = <Value>(\n value: Value | undefined,\n durationMs: number,\n) => {\n const [transientValue, setTransientValue] = useState<Value | undefined>()\n\n useEffect(() => {\n if (value === undefined) {\n setTransientValue(undefined)\n\n return\n }\n\n setTransientValue(value)\n\n const timeoutId = window.setTimeout(() => {\n setTransientValue((currentValue) =>\n Object.is(currentValue, value) ? undefined : currentValue,\n )\n }, durationMs)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [durationMs, value])\n\n return transientValue\n}\n",".pulse {\n animation: pulse 900ms ease-in-out 1;\n transform-origin: center;\n}\n\n@keyframes pulse {\n 0% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n\n 40% {\n opacity: 1;\n transform: rotate(0deg) scale(1.12);\n }\n\n 48% {\n opacity: 1;\n transform: rotate(-7deg) scale(1.14);\n }\n\n 56% {\n opacity: 1;\n transform: rotate(7deg) scale(1.14);\n }\n\n 64% {\n opacity: 1;\n transform: rotate(-4deg) scale(1.12);\n }\n\n 72% {\n opacity: 1;\n transform: rotate(0deg) scale(1.08);\n }\n\n 100% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pulse {\n animation: none;\n }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport {\n type ExtraPaginationInfo,\n type PaginationInfo,\n shouldUseComputedSpreadModeForViewport,\n watchKeys,\n} from \"@prose-reader/core\"\nimport type { Manifest } from \"@prose-reader/shared\"\nimport { memo } from \"react\"\nimport { MdScreenRotation } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n NEVER,\n type Observable,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\"\nimport { useTransientValue } from \"../common/useTransientValue\"\nimport { useReader } from \"../context/useReader\"\nimport styles from \"./SpreadRotationHint.module.css\"\n\nconst HINT_TARGET_DEBOUNCE_MS = 100\nconst HINT_VISIBLE_MS = 900\n\nconst ANIMATION_NAME_IN_OUT = {\n _open: \"fade-in\",\n _closed: \"fade-out\",\n _motionReduce: \"none\",\n}\nconst ANIMATION_DURATION_IN_OUT = { base: \"moderate\", _motionReduce: \"0ms\" }\n\ntype ViewportDimensions = {\n height: number\n width: number\n}\n\ntype ViewportState = `busy` | `free`\n\ntype HintPagination = Pick<\n PaginationInfo & ExtraPaginationInfo,\n | `beginHasAdjacentSpreadPage`\n | `beginPageIndexInSpineItem`\n | `beginSpineItemIndex`\n | `endHasAdjacentSpreadPage`\n | `endPageIndexInSpineItem`\n | `endSpineItemIndex`\n>\n\ntype ReaderWithSpreadHintStreams = NonNullable<ReturnType<typeof useReader>>\n\nexport const wouldRotationUseComputedSpreadMode = ({\n manifest,\n viewport,\n}: {\n manifest: Manifest\n viewport: ViewportDimensions\n}) => {\n if (viewport.width === viewport.height) return false\n\n return shouldUseComputedSpreadModeForViewport({\n manifest,\n viewport: {\n height: viewport.width,\n width: viewport.height,\n },\n })\n}\n\nexport const getSpreadRotationHintTargetKey = ({\n manifest,\n pagination,\n computedSpreadMode,\n viewportState,\n viewport,\n}: {\n manifest: Manifest\n pagination: HintPagination\n computedSpreadMode: boolean\n viewportState: ViewportState\n viewport: ViewportDimensions\n}) => {\n if (viewportState !== `free`) return undefined\n if (computedSpreadMode) return undefined\n if (!wouldRotationUseComputedSpreadMode({ manifest, viewport })) {\n return undefined\n }\n\n const hasSpreadPair =\n pagination.beginHasAdjacentSpreadPage && pagination.endHasAdjacentSpreadPage\n\n if (!hasSpreadPair) return undefined\n\n return [\n pagination.beginSpineItemIndex,\n pagination.beginPageIndexInSpineItem,\n pagination.endSpineItemIndex,\n pagination.endPageIndexInSpineItem,\n ]\n .map((value) => value ?? `none`)\n .join(`:`)\n}\n\nconst observeHintPagination = (reader: ReaderWithSpreadHintStreams) =>\n reader.pagination.state$.pipe(\n watchKeys([\n `beginHasAdjacentSpreadPage`,\n `beginPageIndexInSpineItem`,\n `beginSpineItemIndex`,\n `endHasAdjacentSpreadPage`,\n `endPageIndexInSpineItem`,\n `endSpineItemIndex`,\n ]),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\nconst observeBeginSpineItemReady = ({\n pagination$,\n reader,\n}: {\n pagination$: Observable<HintPagination>\n reader: ReaderWithSpreadHintStreams\n}) =>\n combineLatest([pagination$, reader.spineItemsManager.items$]).pipe(\n map(([{ beginSpineItemIndex }, spineItems]) =>\n beginSpineItemIndex === undefined\n ? undefined\n : spineItems[beginSpineItemIndex],\n ),\n distinctUntilChanged(),\n switchMap((spineItem) => spineItem?.isReady$ ?? of(false)),\n )\n\nconst observeSpreadRotationHintTargetKey = (\n reader: ReaderWithSpreadHintStreams,\n) => {\n const pagination$ = observeHintPagination(reader)\n const beginSpineItemReady$ = observeBeginSpineItemReady({\n pagination$,\n reader,\n })\n\n return combineLatest([\n pagination$,\n reader.context.manifest$,\n reader.settings.watch([`computedSpreadMode`]),\n reader.viewportState$,\n reader.viewport.watch([`width`, `height`]),\n beginSpineItemReady$,\n ]).pipe(\n debounceTime(HINT_TARGET_DEBOUNCE_MS),\n map(\n ([pagination, manifest, settings, viewportState, viewport, isReady]) => {\n if (!isReady) return undefined\n\n return getSpreadRotationHintTargetKey({\n manifest,\n pagination,\n computedSpreadMode: settings.computedSpreadMode ?? false,\n viewportState,\n viewport,\n })\n },\n ),\n distinctUntilChanged(),\n )\n}\n\nconst useSpreadRotationHintTargetKey = () => {\n const reader = useReader()\n\n return useObserve(\n () => (reader ? observeSpreadRotationHintTargetKey(reader) : NEVER),\n [reader],\n ).data\n}\n\nexport const SpreadRotationHint = memo(() => {\n const hintTargetKey = useSpreadRotationHintTargetKey()\n const visibleHintKey = useTransientValue(hintTargetKey, HINT_VISIBLE_MS)\n\n return (\n <Presence\n present={visibleHintKey !== undefined}\n lazyMount\n unmountOnExit\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration={ANIMATION_DURATION_IN_OUT}\n >\n <Box\n key={visibleHintKey}\n aria-hidden\n position=\"absolute\"\n left=\"50%\"\n top=\"50%\"\n transform=\"translate(-50%, -50%)\"\n pointerEvents=\"none\"\n zIndex={2}\n data-spread-rotation-hint=\"true\"\n >\n <Box\n alignItems=\"center\"\n bg=\"bg.inverted/72\"\n borderRadius=\"full\"\n className={styles.pulse}\n color=\"fg.inverted\"\n display=\"flex\"\n height=\"68px\"\n justifyContent=\"center\"\n width=\"68px\"\n >\n <MdScreenRotation focusable={false} size={34} />\n </Box>\n </Box>\n </Presence>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","export const NOTIFICATION_KEYS = {\n fontScaleChange: \"fontScaleChange\",\n}\n\n/**\n * TODO for now we don't notify cause we can only changes from:\n * - settings (no notification, direct action)\n * - value change from controlled settings (user intent)\n */\nexport const useFontSizeNotifications = () => {\n // const reader = useReader()\n // const { notificationsSubject, fontSizeMenuOpen } = useReaderContextValue([\n // \"notificationsSubject\",\n // \"fontSizeMenuOpen\",\n // ])\n // useSubscribe(\n // () =>\n // fontSizeMenuOpen\n // ? EMPTY\n // : reader?.settings.values$.pipe(\n // map(({ fontScale }) => fontScale),\n // distinctUntilChanged(),\n // skip(1),\n // tap((fontScale) => {\n // notificationsSubject.next({\n // key: NOTIFICATION_KEYS.fontScaleChange,\n // title: \"Font size changed\",\n // description: `${fontScale * 100} %`,\n // })\n // }),\n // ),\n // [reader, notificationsSubject, fontSizeMenuOpen],\n // )\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import RcSlider from \"rc-slider\"\nimport { type ComponentProps, memo } from \"react\"\nimport \"rc-slider/assets/index.css\"\nimport { Box, chakra } from \"@chakra-ui/react\"\n\nconst ChakraRcSlider = chakra(RcSlider)\n\nexport const ThemedSlider = memo((props: ComponentProps<typeof RcSlider>) => {\n return (\n <Box\n display=\"contents\"\n css={{\n \"--bg\": \"colors.bg\",\n \"--bg-emphasized\": \"colors.bg.emphasized\",\n \"--color-solid\": \"colors.colorPalette.solid\",\n }}\n >\n <ChakraRcSlider\n keyboard={false}\n style={{\n padding: 0,\n }}\n css={{\n \"& > .rc-slider-handle:focus-visible\": {\n boxShadow: \"0 0 0 2px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle:active\": {\n boxShadow: \"0 0 5px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle.rc-slider-handle-dragging\": {\n boxShadow: \"0 0 0 3px var(--color-solid) !important\",\n },\n \"&.rc-slider-disabled\": {\n backgroundColor: \"transparent\",\n opacity: 0.5,\n },\n \"&.rc-slider-disabled > .rc-slider-rail\": {\n backgroundColor: \"var(--bg-emphasized)\",\n },\n \"&.rc-slider-disabled > .rc-slider-track\": {\n backgroundColor: \"var(--color-solid)\",\n },\n \"&.rc-slider-disabled > .rc-slider-handle\": {\n backgroundColor: \"var(--bg)\",\n borderColor: \"var(--color-solid)\",\n },\n }}\n styles={{\n rail: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--bg-emphasized)\",\n },\n track: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--color-solid)\",\n },\n handle: {\n width: \"24px\",\n height: \"24px\",\n top: \"50%\",\n borderColor: \"var(--color-solid)\",\n transform: `translate(${props.reverse ? \"50%\" : \"-50%\"}, -50%)`,\n backgroundColor: \"var(--bg)\",\n marginTop: \"0px\",\n },\n }}\n {...props}\n />\n </Box>\n )\n})\n","import type { AudioEnhancerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioState = () => {\n const audioReader = useAudioReader()\n const { data: audioState } = useObserve<AudioEnhancerState | undefined>(\n () => audioReader?.audio.state$,\n [audioReader],\n )\n\n return audioState\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useState } from \"react\"\nimport { LuPause, LuPlay } from \"react-icons/lu\"\nimport { useConstant, useSubscribe } from \"reactjrx\"\nimport { BehaviorSubject, map, tap } from \"rxjs\"\nimport { ThemedSlider } from \"../quickmenu/ThemedSlider\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioState } from \"./useAudioState\"\n\nconst formatPlaybackTime = (value: number) => {\n if (!Number.isFinite(value) || value < 0) return `00:00`\n\n const roundedValue = Math.floor(value)\n const hours = Math.floor(roundedValue / 3600)\n const minutes = Math.floor((roundedValue % 3600) / 60)\n const seconds = roundedValue % 60\n\n if (hours > 0) {\n return [hours, minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n }\n\n return [minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n}\n\nexport const AudioControlsSection = (props: ComponentProps<typeof HStack>) => {\n const audioReader = useAudioReader()\n const audioState = useAudioState()\n const hasPlayableTrack =\n !!audioState?.currentTrack || (audioState?.tracks.length ?? 0) > 0\n const duration = audioState?.duration\n const displayDuration = Math.max(0, duration ?? 0)\n const knownDuration =\n typeof duration === `number` && duration > 0 ? duration : undefined\n const hasKnownDuration = knownDuration !== undefined\n const sliderMax = knownDuration ?? 1\n const currentTime = hasKnownDuration\n ? Math.min(Math.max(0, audioState?.currentTime ?? 0), knownDuration)\n : 0\n const isSliderDisabled =\n !hasPlayableTrack || !!audioState?.isLoading || !hasKnownDuration\n const [draftCurrentTime, setDraftCurrentTime] = useState(currentTime)\n const isSeekingSubject = useConstant(() => new BehaviorSubject(false))\n\n /**\n * Keeps the slider synced with audio playback, except while the user is\n * actively dragging the thumb.\n *\n * During drag we display a local draft value and ignore playback updates to\n * avoid snapping back to the previously observed time. Once the user releases\n * the slider, the enhancer publishes the requested seek time immediately\n * before mutating the audio element, so unlocking this sync path is expected\n * to resume from the new target time. Any later native media updates are then\n * treated as normal playback progression rather than part of the drag UX.\n */\n const syncDownCurrentTime = useCallback(\n () =>\n audioReader?.audio.state$.pipe(\n map((state) => state.currentTime),\n tap((currentTime) => {\n if (isSeekingSubject.value) return\n\n setDraftCurrentTime(currentTime)\n isSeekingSubject.next(false)\n }),\n ),\n [audioReader, isSeekingSubject],\n )\n\n useSubscribe(syncDownCurrentTime)\n\n if (!audioState) {\n return null\n }\n\n return (\n <HStack\n width=\"100%\"\n maxW=\"100%\"\n gap={3}\n borderRadius=\"md\"\n bg=\"bg.muted\"\n px={3}\n py={2}\n {...props}\n >\n <IconButton\n aria-label={audioState.isPlaying ? \"Pause audio\" : \"Play audio\"}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n void audioReader?.audio.toggle()\n }}\n disabled={!hasPlayableTrack || audioState.isLoading}\n >\n {audioState.isPlaying ? <LuPause /> : <LuPlay />}\n </IconButton>\n <Stack gap={0} minW={0} flex={1}>\n <ThemedSlider\n value={draftCurrentTime}\n min={0}\n max={sliderMax}\n disabled={isSliderDisabled}\n onChange={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") return\n\n isSeekingSubject.next(true)\n setDraftCurrentTime(nextValue)\n }}\n onChangeComplete={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") {\n isSeekingSubject.next(false)\n\n return\n }\n\n setDraftCurrentTime(nextValue)\n audioReader?.audio.setCurrentTime(nextValue)\n isSeekingSubject.next(false)\n }}\n />\n <HStack justifyContent=\"space-between\" mt={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {audioState.isLoading\n ? `Loading audio...`\n : formatPlaybackTime(draftCurrentTime)}\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {formatPlaybackTime(displayDuration)}\n </Text>\n </HStack>\n </Stack>\n </HStack>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useHasVisibleAudioTracks = () => {\n const audioReader = useAudioReader()\n const { data: hasVisibleAudioTracks = false } = useObserve(\n () =>\n audioReader?.audio.visibleTrackIds$.pipe(\n map((trackIds) => trackIds.length > 0),\n distinctUntilChanged(),\n ),\n [audioReader],\n )\n\n return hasVisibleAudioTracks\n}\n","import { Popover as ChakraPopover, IconButton, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { HiOutlineInformationCircle } from \"react-icons/hi\"\n\nexport interface ToggleTipProps extends ChakraPopover.RootProps {\n showArrow?: boolean\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n content?: React.ReactNode\n}\n\nexport const ToggleTip = React.forwardRef<HTMLDivElement, ToggleTipProps>(\n function ToggleTip(props, ref) {\n const {\n showArrow,\n children,\n portalled = true,\n content,\n portalRef,\n ...rest\n } = props\n\n return (\n <ChakraPopover.Root\n {...rest}\n positioning={{ ...rest.positioning, gutter: 4 }}\n >\n <ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content\n width=\"auto\"\n px=\"2\"\n py=\"1\"\n textStyle=\"xs\"\n rounded=\"sm\"\n ref={ref}\n >\n {showArrow && (\n <ChakraPopover.Arrow>\n <ChakraPopover.ArrowTip />\n </ChakraPopover.Arrow>\n )}\n {content}\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n </ChakraPopover.Root>\n )\n },\n)\n\nexport const InfoTip = React.forwardRef<\n HTMLDivElement,\n Partial<ToggleTipProps>\n>(function InfoTip(props, ref) {\n const { children, ...rest } = props\n return (\n <ToggleTip content={children} {...rest} ref={ref}>\n <IconButton\n variant=\"ghost\"\n aria-label=\"info\"\n size=\"2xs\"\n colorPalette=\"gray\"\n >\n <HiOutlineInformationCircle />\n </IconButton>\n </ToggleTip>\n )\n})\n","import { Progress as ChakraProgress } from \"@chakra-ui/react\"\nimport { InfoTip } from \"./toggle-tip\"\nimport * as React from \"react\"\n\nexport const ProgressBar = React.forwardRef<\n HTMLDivElement,\n ChakraProgress.TrackProps\n>(function ProgressBar(props, ref) {\n return (\n <ChakraProgress.Track {...props} ref={ref}>\n <ChakraProgress.Range />\n </ChakraProgress.Track>\n )\n})\n\nexport interface ProgressLabelProps extends ChakraProgress.LabelProps {\n info?: React.ReactNode\n}\n\nexport const ProgressLabel = React.forwardRef<\n HTMLDivElement,\n ProgressLabelProps\n>(function ProgressLabel(props, ref) {\n const { children, info, ...rest } = props\n return (\n <ChakraProgress.Label {...rest} ref={ref}>\n {children}\n {info && <InfoTip>{info}</InfoTip>}\n </ChakraProgress.Label>\n )\n})\n\nexport const ProgressRoot = ChakraProgress.Root\nexport const ProgressValueText = ChakraProgress.ValueText\n","import { usePagination } from \"../pagination/usePagination\"\n\nexport const useNavigationContext = () => {\n const pagination = usePagination()\n const hasOnlyOnePage = pagination?.numberOfTotalPages === 1\n\n const isBeginWithinChapter =\n (pagination?.beginNumberOfPagesInSpineItem ?? 0) > 1\n\n const isEndWithinChapter = (pagination?.endNumberOfPagesInSpineItem ?? 0) > 1\n\n const beginPageIndex =\n (pagination?.hasChapters\n ? pagination?.beginPageIndexInSpineItem\n : pagination?.beginAbsolutePageIndex) ?? 0\n const endPageIndex =\n (pagination?.hasChapters\n ? pagination?.endPageIndexInSpineItem\n : pagination?.endAbsolutePageIndex) ?? 0\n\n const [leftPageIndex = 0, rightPageIndex = 0] = [\n beginPageIndex,\n endPageIndex,\n ].sort((a, b) => a - b)\n\n const beginAndEndAreDifferent =\n pagination?.beginPageIndexInSpineItem !==\n pagination?.endPageIndexInSpineItem ||\n pagination?.beginSpineItemIndex !== pagination?.endSpineItemIndex\n\n const totalApproximatePages = pagination?.hasChapters\n ? pagination?.beginNumberOfPagesInSpineItem\n : pagination?.numberOfTotalPages\n\n return {\n hasOnlyOnePage,\n beginPageIndex,\n endPageIndex,\n isBeginWithinChapter,\n isEndWithinChapter,\n beginAndEndAreDifferent,\n totalApproximatePages,\n leftPageIndex,\n rightPageIndex,\n }\n}\n","import { HStack, Stack, Text } from \"@chakra-ui/react\"\nimport {\n ProgressBar,\n ProgressRoot,\n ProgressValueText,\n} from \"../components/ui/progress\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const PaginationInfoSection = () => {\n const pagination = usePagination()\n const {\n hasOnlyOnePage,\n leftPageIndex,\n rightPageIndex,\n totalApproximatePages,\n beginAndEndAreDifferent,\n } = useNavigationContext()\n const progress = Math.round((pagination?.percentageEstimateOfBook ?? 0) * 100)\n\n const buildTitleChain = (\n chapterInfo: NonNullable<typeof pagination>[\"beginChapterInfo\"],\n ): string => {\n if (chapterInfo?.subChapter) {\n return `${chapterInfo.title} / ${buildTitleChain(chapterInfo.subChapter)}`\n }\n return chapterInfo?.title || \"\"\n }\n\n const chapterTitle = buildTitleChain(pagination?.beginChapterInfo)\n\n return (\n <Stack alignItems=\"center\" gap={1} maxW=\"100%\" overflow=\"auto\">\n <ProgressRoot value={progress} size=\"xs\" width={150}>\n <HStack justifyContent=\"space-between\">\n <ProgressBar width={110} />\n <ProgressValueText>{`${progress}%`}</ProgressValueText>\n </HStack>\n </ProgressRoot>\n <Text truncate maxWidth=\"100%\" fontSize=\"sm\" mt={1}>\n {chapterTitle ? `Chapter: ${chapterTitle}` : `\\u00A0`}\n </Text>\n {!hasOnlyOnePage && (\n <HStack>\n <Text fontSize=\"xs\">\n {beginAndEndAreDifferent\n ? `${leftPageIndex + 1} - ${rightPageIndex + 1} of ${totalApproximatePages}`\n : `${leftPageIndex + 1} of ${totalApproximatePages}`}\n </Text>\n {!!pagination?.hasChapters && (\n <>\n <Text>-</Text>\n <Text fontSize=\"xs\">\n ({(pagination?.beginAbsolutePageIndex ?? 0) + 1})\n </Text>\n </>\n )}\n </HStack>\n )}\n </Stack>\n )\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const QuickBar = memo(\n ({\n children,\n position,\n ...rest\n }: { position: \"top\" | \"bottom\" } & PresenceProps & {\n ref?: React.RefObject<HTMLDivElement | null>\n }) => {\n return (\n <Presence\n display=\"flex\"\n flexDirection=\"row\"\n width=\"100%\"\n position=\"absolute\"\n {...(position === \"bottom\" ? { bottom: 0 } : { top: 0 })}\n animationName={\n position === \"bottom\"\n ? {\n _open: \"slide-from-bottom, fade-in\",\n _closed: \"slide-to-bottom, fade-out\",\n }\n : {\n _open: \"slide-from-top, fade-in\",\n _closed: \"slide-to-top, fade-out\",\n }\n }\n animationDuration=\"moderate\"\n bgColor=\"bg.panel\"\n alignItems=\"center\"\n justifyContent=\"center\"\n shadow=\"md\"\n p={4}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import { Box } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useEffect } from \"react\"\nimport { signal, useObserve, useSignalState, useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\nimport { ThemedSlider } from \"./ThemedSlider\"\n\nconst useSliderValues = () => {\n const pagination = usePagination()\n const isUsingSpread = pagination?.isUsingSpread\n const { beginPageIndex: currentRealPage, totalApproximatePages = 0 } =\n useNavigationContext()\n const currentPage = isUsingSpread\n ? Math.floor((currentRealPage || 0) / 2)\n : currentRealPage\n const [value, valueSignal] = useSignalState(() =>\n signal({\n default: currentPage || 0,\n }),\n )\n const min = 0\n const max = Math.max(\n 0,\n isUsingSpread\n ? Math.floor((totalApproximatePages - 1) / 2)\n : totalApproximatePages - 1,\n )\n\n useEffect(() => {\n valueSignal.update(currentPage || 0)\n }, [currentPage, valueSignal])\n\n return {\n value,\n valueSignal,\n min,\n max,\n }\n}\n\nexport const Scrubber = (props: ComponentProps<typeof ThemedSlider>) => {\n const reader = useReader()\n const pagination = usePagination()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const reverse = manifest?.readingDirection === \"rtl\"\n const isUsingSpread = pagination?.isUsingSpread\n const { totalApproximatePages = 0, isBeginWithinChapter } =\n useNavigationContext()\n const step = 1\n const isScrubberWithinChapter = isBeginWithinChapter\n const { value, valueSignal, min, max } = useSliderValues()\n\n const onChange: NonNullable<ComponentProps<typeof ThemedSlider>[\"onChange\"]> =\n useCallback(\n (values) => {\n const [value = 0] = Array.isArray(values) ? values : [values]\n\n valueSignal.update(value)\n\n const pageIndex = isUsingSpread\n ? Math.floor(value) * 2\n : Math.floor(value)\n\n if (!isScrubberWithinChapter) {\n reader?.navigation.goToAbsolutePageIndex({\n absolutePageIndex: pageIndex,\n animation: false,\n })\n } else {\n reader?.navigation.goToPageOfSpineItem({\n pageIndex,\n spineItemId: reader.pagination.state.beginSpineItemIndex ?? 0,\n animation: false,\n })\n }\n },\n [reader, isUsingSpread, valueSignal, isScrubberWithinChapter],\n )\n\n /**\n * @note\n * Scrubber can navigate fast and without lock we may end up with\n * slowness due to the reader\n * paginating and loading items in between.\n * This is good practice (but not required) to throttle it.\n */\n const throttleLock = useCallback(() => {\n return reader?.navigation.throttleLock({\n duration: 100,\n trigger: valueSignal.subject,\n })\n }, [reader, valueSignal])\n\n useSubscribe(throttleLock)\n\n // const marks =\n // max > 1\n // ? Array.from({ length: max + 1 }, (_, i) => i).reduce(\n // (acc: number[], val) => [...acc, val],\n // [],\n // )\n // : []\n\n const disabled =\n totalApproximatePages === 1 ||\n (isUsingSpread && totalApproximatePages === 2)\n\n // @tmp not available yet in chakra\n // if (reverse) return null\n\n if (disabled) return <Box style={props.style} />\n\n return (\n <ThemedSlider\n value={[value]}\n max={max}\n min={min}\n reverse={reverse}\n step={step}\n onChange={onChange}\n {...props}\n />\n )\n // return (\n // <Slider\n // value={[value]}\n // max={max}\n // min={min}\n // marks={marks}\n // onChange={e => {\n // debugger\n // }}\n // onValueChange={onChange}\n // // reverse={reverse}\n // orientation=\"horizontal\"\n // step={step}\n // />\n // )\n}\n","import { Box, Collapsible, HStack, IconButton, Stack } from \"@chakra-ui/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { BiFontSize } from \"react-icons/bi\"\nimport { BsBookmarks } from \"react-icons/bs\"\nimport {\n LuChevronDown,\n LuCircleHelp,\n LuGalleryHorizontal,\n LuNotebookPen,\n LuSearch,\n LuTableOfContents,\n LuZoomIn,\n LuZoomOut,\n} from \"react-icons/lu\"\nimport { MdOutlineFitScreen } from \"react-icons/md\"\nimport { RiGalleryView2 } from \"react-icons/ri\"\nimport {\n RxDoubleArrowDown,\n RxDoubleArrowLeft,\n RxDoubleArrowRight,\n RxDoubleArrowUp,\n} from \"react-icons/rx\"\nimport { useObserve } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { AudioControlsSection } from \"../audio/AudioControlsSection\"\nimport { useHasVisibleAudioTracks } from \"../audio/useHasVisibleAudioTracks\"\nimport {\n hasAnnotationsEnhancer,\n hasGalleryEnhancer,\n hasRefitEnhancer,\n hasSearchEnhancer,\n useReader,\n} from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { PaginationInfoSection } from \"./PaginationInfoSection\"\nimport { QuickBar } from \"./QuickBar\"\nimport { Scrubber } from \"./Scrubber\"\n\nexport const BottomBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (\n item: \"annotations\" | \"search\" | \"help\" | \"toc\" | \"bookmarks\" | \"gallery\",\n ) => void\n }) => {\n const boxRef = useRef<HTMLDivElement>(null)\n const reader = useReader()\n const {\n quickMenuBottomBarBoundingBoxSignal,\n onFontSizeMenuOpenChange,\n onRefitMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"onFontSizeMenuOpenChange\",\n \"onRefitMenuOpenChange\",\n ])\n const { data: navigation } = useObserve(\n () => reader?.navigation.state$,\n [reader],\n )\n const { data: settings } = useObserve(\n () => reader?.settings.values$,\n [reader],\n )\n const { data: zoomState } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) =>\n state.currentScale > 1\n ? \"in\"\n : state.currentScale < 1\n ? \"out\"\n : undefined,\n ),\n ),\n [reader],\n )\n const isZoomingIn = zoomState === \"in\"\n const isZoomingOut = zoomState === \"out\"\n const isScrollingMode = settings?.computedPageTurnMode === \"scrollable\"\n const isVerticalDirection =\n settings?.computedPageTurnDirection === \"vertical\"\n const hasAudioControls = useHasVisibleAudioTracks()\n const [isExtraOpen, setIsExtraOpen] = useState(true)\n\n useEffect(() => {\n if (!boxRef.current) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n quickMenuBottomBarBoundingBoxSignal.update(entry)\n }\n })\n\n resizeObserver.observe(boxRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [quickMenuBottomBarBoundingBoxSignal])\n\n return (\n <QuickBar\n present={open}\n position=\"bottom\"\n display=\"flex\"\n flexDirection=\"column\"\n overflow=\"auto\"\n pb={8}\n px={0}\n ref={boxRef}\n gap={4}\n >\n {hasAudioControls && (\n <HStack px={4} justifyContent=\"center\" width=\"100%\">\n <AudioControlsSection maxW={400} />\n </HStack>\n )}\n <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useCallback, useEffect, useState } from \"react\"\nimport screenfull from \"screenfull\"\n\nconst readFullscreenSupport = () => screenfull.isEnabled\n\nconst readFullscreenState = () =>\n screenfull.isEnabled ? screenfull.isFullscreen : false\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const [isFullscreenSupported, setIsFullscreenSupported] = useState(false)\n\n const syncFullscreenState = useCallback(() => {\n setIsFullscreen((current) => {\n const next = readFullscreenState()\n\n return current === next ? current : next\n })\n setIsFullscreenSupported((current) => {\n const next = readFullscreenSupport()\n\n return current === next ? current : next\n })\n }, [])\n\n const onToggleFullscreenClick = useCallback(async () => {\n if (!screenfull.isEnabled) {\n syncFullscreenState()\n\n return\n }\n\n try {\n if (screenfull.isFullscreen) {\n await screenfull.exit()\n } else {\n await screenfull.request(document.documentElement, {\n navigationUI: `hide`,\n })\n }\n } catch (error) {\n console.error(error)\n } finally {\n syncFullscreenState()\n }\n }, [syncFullscreenState])\n\n useEffect(() => {\n syncFullscreenState()\n\n if (!screenfull.isEnabled) return\n\n screenfull.on(`change`, syncFullscreenState)\n screenfull.on(`error`, syncFullscreenState)\n\n return () => {\n screenfull.off(`change`, syncFullscreenState)\n screenfull.off(`error`, syncFullscreenState)\n }\n }, [syncFullscreenState])\n\n return {\n isFullscreen,\n isFullscreenSupported,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, isFullscreenSupported, onToggleFullscreenClick } =\n useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n {isFullscreenSupported && (\n <IconButton\n aria-label={isFullscreen ? `Exit fullscreen` : `Enter fullscreen`}\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n )}\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { SpreadRotationHint } from \"./navigation/SpreadRotationHint\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <SpreadRotationHint />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"mappings":"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"}
|