@prose-reader/react-reader 1.307.0 → 1.308.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.cjs","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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"}
1
+ {"version":3,"file":"index.umd.cjs","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.307.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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"}