@prose-reader/react-reader 1.292.0 → 1.294.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","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","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/navigation/useInterceptExternalLinks.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 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\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n canvas.width = Math.round(nextWidth * pixelRatio)\n canvas.height = Math.round(nextHeight * pixelRatio)\n canvas.style.width = `${nextWidth}px`\n 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 distinctUntilChanged,\n filter,\n first,\n map,\n NEVER,\n startWith,\n switchMap,\n tap,\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 )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(map((entries) => entries.some((e) => e.isIntersecting)))\n\n return itemLayoutChanged$.pipe(\n throttleTime(100, undefined, { trailing: true }),\n switchMap(() => {\n return isItemIntersecting$\n .pipe(\n tap((isVisible) => {\n // if the layout change and the item is not visible anymore, cleanup the element\n if (!isVisible) {\n element.innerHTML = \"\"\n }\n }),\n filter((isVisible) => isVisible),\n first(),\n )\n .pipe(\n switchMap(() => {\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer?.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\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 <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n textAlign=\"center\"\n bgColor=\"white\"\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","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 { 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","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 { useEffect } from \"react\"\n\nimport { useCallback } from \"react\"\n\nimport { useState } from \"react\"\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n\n const onToggleFullscreenClick = useCallback(() => {\n if (document.fullscreenElement) {\n return document\n .exitFullscreen()\n .catch(console.error)\n .then(() => {\n setIsFullscreen(false)\n })\n }\n\n return document.documentElement\n .requestFullscreen({ navigationUI: \"hide\" })\n .catch(console.error)\n .then(() => {\n setIsFullscreen(true)\n })\n }, [])\n\n useEffect(() => {\n function fullscreenchangeHandler() {\n setIsFullscreen(!!document.fullscreenElement)\n }\n\n document.addEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n\n return () => {\n document.removeEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n }\n }, [])\n\n return {\n isFullscreen,\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, onToggleFullscreenClick } = 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 <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\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 { 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 <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 overflow=\"hidden\"\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"],"names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","getDefaultValue","_quickMenuOpen","_onQuickMenuOpenChange","prev","reader","undefined","quickMenuBottomBarBoundingBoxSignal","signal","default","notificationsSubject","Subject","refitMenuOpen","onRefitMenuOpenChange","fontSizeMenuOpen","onFontSizeMenuOpenChange","fontSizeMin","fontSizeMax","uncontrolledFontSize","enableFloatingProgress","selectedHighlight","ReaderContext","createContext","useReaderContextValue","keys","$","_c","context","useContext","t0","pipe","watchKeys","t1","value","pick","t2","compareFn","isShallowEqual","defaultValue","t3","Symbol","for","useObserve","data","useReaderContext","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","memo","children","rest","bottomBarHeight","useSignalValue","borderBoxSize","blockSize","_open","_closed","t4","jsx","Presence","useReader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","useReaderWithAnnotations","AnnotateControls","selection","selectionOver$","switchMap","selectionEnd$","map","_temp","startWith","EMPTY","isOpen","t5","getSelection","update","state","t6","FaEdit","t7","Button","t8","LuNotebookPen","t9","truncateText","text","maxLength","length","slice","CloseButton","React","forwardRef","props","ref","LuX","ChakraIconButton","DrawerContent","offset","portalRef","portalled","ChakraDrawer","Portal","Trigger","DrawerRoot","Root","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","Description","Title","ActionTrigger","HIGHLIGHT_COLORS","AnnotationDrawer","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","highlight","selectedColor","setSelectedColor","useState","contents","setContents","onClose","event","open","onOpenChange","highlightColor","highlightContent","notes","useEffect","annotations","highlightTap$","tap","highlight_0","state_0","onOpenDrawerOnTap","useSubscribe","T0","T1","T2","toString","t10","t11","color","Box","border","t12","Stack","t13","Text","t14","event_0","target","t15","Textarea","t16","t17","annotation","createAnnotation","t18","jsxs","id","t19","t20","t21","DialogContent","backdrop","ChakraDialog","DialogCloseTrigger","DialogRoot","DialogFooter","DialogHeader","DialogBody","DialogTitle","DialogActionTrigger","useAnnotation","readerWithAnnotations","annotations$","items","find","item","filter","isDefined","locateResource","AnnotationListItem","onNavigate","allowLeftIcon","meta","node","textContent","range","navigation","goToCfi","cfi","resource","List","absolutePageIndex","Link","useAnnotations","highlights","useHighlights","isCfiRange","AnnotationsList","useBookmarks","BookmarksList","AnnotationsDialogContent","defaultTab","tab","setTab","e","Tabs","LuBookmark","AnnotationsDialog","openWith","setOpen","mdDown","md","useSpineItem","itemIndex","of","spine","spineItemsManager","get","pages","observeFromAbsolutePageIndex","page","useSpineItemReady","spineItem","isReady$","NEVER","isReady","BookmarkPageMarker","left","top","width","isItemReady","bookmarks","bookmark","bookmarkForPage","markerSize","content","position","height","borderTop","borderLeft","BookmarkPageMarkers","layoutInfo$","pageIndex","absoluteLayout","CONTINUE_TAP_GESTURE","BOOKMARK_CORNER_SIZE_PERCENT","isTopRightCornerPosition","containerSize","sizePercent","actualSize","Math","min","x","y","useBookmarkOnCornerTap","readerContext","gestures","hooks","register","event$","withLatestFrom","candidates$","candidates","spineItemPageIndex","spineItemPagePosition","pageSize","pageEntry","fromSpineItemPageIndex","usePreventInteractionOnSelection","lastSelectionOnPointerdown$","lastSelectionOnPointerdown","isTargetWithinHighlight","beforeTapGesture","useSyncAnnotationsWithReader","selectedHighlight$","distinctUntilChanged","_temp2","annotationsWithSelected$","combineLatest","_temp3","syncAnnotationsWithReader","context_0","context_1","selected","useAudioReader","useAudioVisualizer","enabled","audioReader","audio","visualizer$","visualizer","useIsCurrentAudioTrack","trackId","state$","currentTrack","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","clamp","max","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","centerBar","outerBars","reverse","resolveGradientColors","element","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","drawWave","canvas","size","displayedBars","fillStyle","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","easedBars","targetValue","gap","round","barWidth","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","edgeFade","globalAlpha","beginPath","roundRect","fill","DEFAULT_VISUALIZER","AudioWaveCanvas","useBreakpointValue","base","lg","xl","canvasRef","useRef","containerRef","frameRef","visualizerRef","displayedBarsRef","fillStyleRef","sizeRef","current","gradient","createLinearGradient","addColorStop","refreshFillStyle","canvas_0","visualizer_0","drawWaveFrame","cancelAnimationFrame","stopAnimation","tick","requestAnimationFrame","startAnimation","canvas_1","container","nextWidth","clientWidth","nextHeight","clientHeight","pixelRatio","devicePixelRatio","style","setTransform","resizeCanvas","container_0","resizeObserver","ResizeObserver","observe","disconnect","WebkitMaskImage","maskImage","AudioSpineItem","renderer","isAudioRenderer","audioRenderer","watch","audioDocumentContainer","isCurrentTrack","createPortal","SpineItem","containerElement","Spine","element$","spineElement","items$","spineItems","toaster","createToaster","placement","pauseOnPageIdle","Toaster","ChakraToaster","toast","Toast","type","Spinner","title","description","action","label","closable","SignalProvider","valueSignal","useConstant","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","uncontrolledOnFontSizeMenuOpenChange","valueOrUpdater","old","uncontrolledRefitMenuOpen","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","useMemoCompare","old_0","ReactReaderProvider","Radio","inputProps","rootRef","ChakraRadioGroup","RadioGroup","Slider","marks","showValue","marksProp","hasMarkLabel","ChakraSlider","HStack","SliderThumbs","SliderMarks","For","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","references","SETTINGS_SCOPES_VALUES","SETTINGS_SCOPES_REFERENCES","flatMap","getScopeForReference","reference","includes","FontSizeControlsDialog","fontSize","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","useLiveRef","tabValue","setTabValue","scope","onFontUpdate","scope_0","getValueForScope","details","value_0","onScopeValueChange","details_0","onTabValueChange","details_1","value_1","onSliderValueChange","Fieldset","scope_2","LuCheck","scope_3","t22","t23","t24","t25","scope_1","SyncFontSettings","_fontSize","timeout","setTimeout","settings","fontScale","clearTimeout","values$","subscribe","_fontSize_0","syncUpFontSize","defaultState","bottom","right","useMeasure","setElement","rect","setRect","contentRect","observer","useLayoutEffect","useAttachSnapshot","measures","readerWithGalleryEnhancer","itemLayoutChanged$","didLayout$","layoutInfo","isItemIntersecting$","observeIntersection","throttleTime","trailing","isVisible","innerHTML","first","gallery","snapshot","attachSnapshot","isIntersecting","isVisible_0","GalleryItem","onNavigated","mode","locatedResource","goToSpineItem","indexOrId","GalleryDialog","HelpDialog","Heading","Kbd","LuArrowBigRight","LuArrowBigLeft","name","usePagination","pagination","mediaType","startsWith","isOnlyImages","manifest","every","hasChapters","isFullyPrePaginated","ANIMATION_NAME_IN_OUT","FloatingProgress","quickMenuOpen","roundedProgress","percentageEstimateOfBook","displayableProgress","useTime","Date","time","setTime","interval","setInterval","clearInterval","TimeIndicator","toLocaleTimeString","navigator","language","hour","minute","FloatingTime","useInterceptExternalLinks","links$","interceptExternalLinks","isHtmlTagElement","href","url","URL","location","host","confirm","useNotifications","mergeMap","notification","duration","toast$","Observable","subscriber","queueMicrotask","toastId","create","next","complete","error","sameNotification$","skip","n","key","merge","timer","abort","finalize","dismiss","notifications","ChakraRcSlider","chakra","RcSlider","ThemedSlider","padding","boxShadow","backgroundColor","opacity","borderColor","transform","rail","track","handle","marginTop","useAudioState","audioState","formatPlaybackTime","isFinite","roundedValue","hours","minutes","seconds","part","String","padStart","join","AudioControlsSection","hasPlayableTrack","tracks","displayDuration","knownDuration","hasKnownDuration","sliderMax","currentTime","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","currentTime_0","syncDownCurrentTime","isPlaying","toggle","LuPause","LuPlay","IconButton","nextValue","isArray","nextValue_0","setCurrentTime","BehaviorSubject","useHasVisibleAudioTracks","visibleTrackIds$","trackIds","ToggleTip","showArrow","positioning","gutter","ChakraPopover","InfoTip","HiOutlineInformationCircle","ProgressBar","ChakraProgress","info","ProgressRoot","ProgressValueText","ValueText","useNavigationContext","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","PaginationInfoSection","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","chapterTitle","Fragment","QuickBar","useSliderValues","isUsingSpread","currentRealPage","currentPage","useSignalState","Scrubber","readingDirection","isScrubberWithinChapter","goToPageOfSpineItem","spineItemId","animation","goToAbsolutePageIndex","onChange","subject","throttleLock","trigger","step","BottomBar","onItemClick","boxRef","zoom","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","entry","goToLeftOrTopSpineItem","canGoLeftSpineItem","canGoTopSpineItem","RxDoubleArrowUp","RxDoubleArrowLeft","maxWidth","canGoRightSpineItem","canGoBottomSpineItem","goToRightOrBottomSpineItem","RxDoubleArrowDown","RxDoubleArrowRight","Collapsible","LuChevronDown","t26","LuCircleHelp","t27","t28","t29","LuTableOfContents","t30","t31","LuSearch","t32","t33","exit","animate","enter","scale","t34","LuZoomOut","LuZoomIn","t35","t36","t37","BiFontSize","t38","t39","BsBookmarks","t40","t41","MdOutlineFitScreen","t42","t43","t44","LuGalleryHorizontal","t45","t46","RiGalleryView2","t47","t48","t49","currentScale","useFullscreen","isFullscreen","setIsFullscreen","document","fullscreenElement","exitFullscreen","catch","console","then","documentElement","requestFullscreen","navigationUI","onToggleFullscreenClick","fullscreenchangeHandler","addEventListener","removeEventListener","TopBar","manifest$","IoIosArrowBack","IoMdMore","MdFullscreenExit","MdFullscreen","useQuickMenu","onQuickMenuOpenChange","QuickMenu","useQuickMenuToggleGesture","gestures$","selection$","selectionOnPointerdown","quickMenuToggleGesture","handled","val","Field","errorText","helperText","optionalText","ChakraField","RefitDialog","readerWithRefit","refit","settings$","refitSettings","e_0","viewportFit","customWidth","e_1","SearchListItem","contextText","startOffset","onClick","substring","before","after","margin","overflow","preventDefault","display","textDecoration","DEBOUNCE_TIME","useSearch","searchSubject","searchValue","readerWithSearch","search","bind","setValue","status","SearchDialogContent","onValueChange","consolidatedResults","Input","overflowY","result","j","startContainer","parentElement","itemPageIndex","SearchDialog","TableOfContentsDialogContent","nav","toc","currentSubChapter","buildTocForItem","tocItem","lvl","alignItems","goToUrl","path","LuCircleCheck","tocItem_0","index_0","tocItem_1","index_1","TableOfContentsDialog","useZoomSettings","zoomMaxScale","STEP","MIN","normalizeZoomValue","clamped","stepped","ZoomControls","animationFrameScheduler","leading","zoomScaleValue","isZooming","normalizedZoomScaleValue","scaleAt","constrain","BookmarksEffects","Effects","InnerReactReader","enableFloatingTime","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","isGalleryOpen","setIsGalleryOpen","setQuickMenuOpen","_onItemClick","ReactReader","slots","containerProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.cjs","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","../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.tsx","../src/navigation/useInterceptExternalLinks.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 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\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n canvas.width = Math.round(nextWidth * pixelRatio)\n canvas.height = Math.round(nextHeight * pixelRatio)\n canvas.style.width = `${nextWidth}px`\n 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 distinctUntilChanged,\n filter,\n first,\n map,\n NEVER,\n startWith,\n switchMap,\n tap,\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 )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(map((entries) => entries.some((e) => e.isIntersecting)))\n\n return itemLayoutChanged$.pipe(\n throttleTime(100, undefined, { trailing: true }),\n switchMap(() => {\n return isItemIntersecting$\n .pipe(\n tap((isVisible) => {\n // if the layout change and the item is not visible anymore, cleanup the element\n if (!isVisible) {\n element.innerHTML = \"\"\n }\n }),\n filter((isVisible) => isVisible),\n first(),\n )\n .pipe(\n switchMap(() => {\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer?.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\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 <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n textAlign=\"center\"\n bgColor=\"white\"\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","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","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 = { _open: \"fade-in\", _closed: \"fade-out\" }\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 animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\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 >\n <Box\n alignItems=\"center\"\n bg=\"rgba(12, 12, 12, 0.56)\"\n borderRadius=\"full\"\n boxShadow=\"0 16px 40px rgba(0, 0, 0, 0.24)\"\n className={styles.pulse}\n color=\"white\"\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","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 { useEffect } from \"react\"\n\nimport { useCallback } from \"react\"\n\nimport { useState } from \"react\"\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n\n const onToggleFullscreenClick = useCallback(() => {\n if (document.fullscreenElement) {\n return document\n .exitFullscreen()\n .catch(console.error)\n .then(() => {\n setIsFullscreen(false)\n })\n }\n\n return document.documentElement\n .requestFullscreen({ navigationUI: \"hide\" })\n .catch(console.error)\n .then(() => {\n setIsFullscreen(true)\n })\n }, [])\n\n useEffect(() => {\n function fullscreenchangeHandler() {\n setIsFullscreen(!!document.fullscreenElement)\n }\n\n document.addEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n\n return () => {\n document.removeEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n }\n }, [])\n\n return {\n isFullscreen,\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, onToggleFullscreenClick } = 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 <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\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 overflow=\"hidden\"\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"],"names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","getDefaultValue","_quickMenuOpen","_onQuickMenuOpenChange","prev","reader","undefined","quickMenuBottomBarBoundingBoxSignal","signal","default","notificationsSubject","Subject","refitMenuOpen","onRefitMenuOpenChange","fontSizeMenuOpen","onFontSizeMenuOpenChange","fontSizeMin","fontSizeMax","uncontrolledFontSize","enableFloatingProgress","selectedHighlight","ReaderContext","createContext","useReaderContextValue","keys","$","_c","context","useContext","t0","pipe","watchKeys","t1","value","pick","t2","compareFn","isShallowEqual","defaultValue","t3","Symbol","for","useObserve","data","useReaderContext","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","memo","children","rest","bottomBarHeight","useSignalValue","borderBoxSize","blockSize","_open","_closed","t4","jsx","Presence","useReader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","useReaderWithAnnotations","AnnotateControls","selection","selectionOver$","switchMap","selectionEnd$","map","_temp","startWith","EMPTY","isOpen","t5","getSelection","update","state","t6","FaEdit","t7","Button","t8","LuNotebookPen","t9","truncateText","text","maxLength","length","slice","CloseButton","React","forwardRef","props","ref","LuX","ChakraIconButton","DrawerContent","offset","portalRef","portalled","ChakraDrawer","Portal","Trigger","DrawerRoot","Root","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","Description","Title","ActionTrigger","HIGHLIGHT_COLORS","AnnotationDrawer","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","highlight","selectedColor","setSelectedColor","useState","contents","setContents","onClose","event","open","onOpenChange","highlightColor","highlightContent","notes","useEffect","annotations","highlightTap$","tap","highlight_0","state_0","onOpenDrawerOnTap","useSubscribe","T0","T1","T2","toString","t10","t11","color","Box","border","t12","Stack","t13","Text","t14","event_0","target","t15","Textarea","t16","t17","annotation","createAnnotation","t18","jsxs","id","t19","t20","t21","DialogContent","backdrop","ChakraDialog","DialogCloseTrigger","DialogRoot","DialogFooter","DialogHeader","DialogBody","DialogTitle","DialogActionTrigger","useAnnotation","readerWithAnnotations","annotations$","items","find","item","filter","isDefined","locateResource","AnnotationListItem","onNavigate","allowLeftIcon","meta","node","textContent","range","navigation","goToCfi","cfi","resource","List","absolutePageIndex","Link","useAnnotations","highlights","useHighlights","isCfiRange","AnnotationsList","useBookmarks","BookmarksList","AnnotationsDialogContent","defaultTab","tab","setTab","e","Tabs","LuBookmark","AnnotationsDialog","openWith","setOpen","mdDown","md","useSpineItem","itemIndex","of","spine","spineItemsManager","get","pages","observeFromAbsolutePageIndex","page","useSpineItemReady","spineItem","isReady$","NEVER","isReady","BookmarkPageMarker","left","top","width","isItemReady","bookmarks","bookmark","bookmarkForPage","markerSize","content","position","height","borderTop","borderLeft","BookmarkPageMarkers","layoutInfo$","pageIndex","absoluteLayout","CONTINUE_TAP_GESTURE","BOOKMARK_CORNER_SIZE_PERCENT","isTopRightCornerPosition","containerSize","sizePercent","actualSize","Math","min","x","y","useBookmarkOnCornerTap","readerContext","gestures","hooks","register","event$","withLatestFrom","candidates$","candidates","spineItemPageIndex","spineItemPagePosition","pageSize","pageEntry","fromSpineItemPageIndex","usePreventInteractionOnSelection","lastSelectionOnPointerdown$","lastSelectionOnPointerdown","isTargetWithinHighlight","beforeTapGesture","useSyncAnnotationsWithReader","selectedHighlight$","distinctUntilChanged","_temp2","annotationsWithSelected$","combineLatest","_temp3","syncAnnotationsWithReader","context_0","context_1","selected","useAudioReader","useAudioVisualizer","enabled","audioReader","audio","visualizer$","visualizer","useIsCurrentAudioTrack","trackId","state$","currentTrack","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","clamp","max","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","centerBar","outerBars","reverse","resolveGradientColors","element","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","drawWave","canvas","size","displayedBars","fillStyle","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","easedBars","targetValue","gap","round","barWidth","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","edgeFade","globalAlpha","beginPath","roundRect","fill","DEFAULT_VISUALIZER","AudioWaveCanvas","useBreakpointValue","base","lg","xl","canvasRef","useRef","containerRef","frameRef","visualizerRef","displayedBarsRef","fillStyleRef","sizeRef","current","gradient","createLinearGradient","addColorStop","refreshFillStyle","canvas_0","visualizer_0","drawWaveFrame","cancelAnimationFrame","stopAnimation","tick","requestAnimationFrame","startAnimation","canvas_1","container","nextWidth","clientWidth","nextHeight","clientHeight","pixelRatio","devicePixelRatio","style","setTransform","resizeCanvas","container_0","resizeObserver","ResizeObserver","observe","disconnect","WebkitMaskImage","maskImage","AudioSpineItem","renderer","isAudioRenderer","audioRenderer","watch","audioDocumentContainer","isCurrentTrack","createPortal","SpineItem","containerElement","Spine","element$","spineElement","items$","spineItems","toaster","createToaster","placement","pauseOnPageIdle","Toaster","ChakraToaster","toast","Toast","type","Spinner","title","description","action","label","closable","SignalProvider","valueSignal","useConstant","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","uncontrolledOnFontSizeMenuOpenChange","valueOrUpdater","old","uncontrolledRefitMenuOpen","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","useMemoCompare","old_0","ReactReaderProvider","Radio","inputProps","rootRef","ChakraRadioGroup","RadioGroup","Slider","marks","showValue","marksProp","hasMarkLabel","ChakraSlider","HStack","SliderThumbs","SliderMarks","For","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","references","SETTINGS_SCOPES_VALUES","SETTINGS_SCOPES_REFERENCES","flatMap","getScopeForReference","reference","includes","FontSizeControlsDialog","fontSize","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","useLiveRef","tabValue","setTabValue","scope","onFontUpdate","scope_0","getValueForScope","details","value_0","onScopeValueChange","details_0","onTabValueChange","details_1","value_1","onSliderValueChange","Fieldset","scope_2","LuCheck","scope_3","t22","t23","t24","t25","scope_1","SyncFontSettings","_fontSize","timeout","setTimeout","settings","fontScale","clearTimeout","values$","subscribe","_fontSize_0","syncUpFontSize","defaultState","bottom","right","useMeasure","setElement","rect","setRect","contentRect","observer","useLayoutEffect","useAttachSnapshot","measures","readerWithGalleryEnhancer","itemLayoutChanged$","didLayout$","layoutInfo","isItemIntersecting$","observeIntersection","throttleTime","trailing","isVisible","innerHTML","first","gallery","snapshot","attachSnapshot","isIntersecting","isVisible_0","GalleryItem","onNavigated","mode","locatedResource","goToSpineItem","indexOrId","GalleryDialog","HelpDialog","Heading","Kbd","LuArrowBigRight","LuArrowBigLeft","name","usePagination","pagination","mediaType","startsWith","isOnlyImages","manifest","every","hasChapters","isFullyPrePaginated","ANIMATION_NAME_IN_OUT","FloatingProgress","quickMenuOpen","roundedProgress","percentageEstimateOfBook","displayableProgress","useTime","Date","time","setTime","interval","setInterval","clearInterval","TimeIndicator","toLocaleTimeString","navigator","language","hour","minute","FloatingTime","useTransientValue","durationMs","transientValue","setTransientValue","timeoutId","Object","is","currentValue","HINT_TARGET_DEBOUNCE_MS","HINT_VISIBLE_MS","wouldRotationUseComputedSpreadMode","viewport","shouldUseComputedSpreadModeForViewport","getSpreadRotationHintTargetKey","computedSpreadMode","viewportState","beginHasAdjacentSpreadPage","endHasAdjacentSpreadPage","beginSpineItemIndex","beginPageIndexInSpineItem","endSpineItemIndex","endPageIndexInSpineItem","join","observeHintPagination","shareReplay","bufferSize","refCount","observeBeginSpineItemReady","pagination$","observeSpreadRotationHintTargetKey","beginSpineItemReady$","manifest$","viewportState$","debounceTime","useSpreadRotationHintTargetKey","SpreadRotationHint","hintTargetKey","visibleHintKey","pulse","MdScreenRotation","useInterceptExternalLinks","links$","interceptExternalLinks","isHtmlTagElement","href","url","URL","location","host","confirm","useNotifications","mergeMap","notification","duration","toast$","Observable","subscriber","queueMicrotask","toastId","create","next","complete","error","sameNotification$","skip","n","key","merge","timer","abort","finalize","dismiss","notifications","ChakraRcSlider","chakra","RcSlider","ThemedSlider","padding","boxShadow","backgroundColor","opacity","borderColor","transform","rail","track","handle","marginTop","useAudioState","audioState","formatPlaybackTime","isFinite","roundedValue","hours","minutes","seconds","part","String","padStart","AudioControlsSection","hasPlayableTrack","tracks","displayDuration","knownDuration","hasKnownDuration","sliderMax","currentTime","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","currentTime_0","syncDownCurrentTime","isPlaying","toggle","LuPause","LuPlay","IconButton","nextValue","isArray","nextValue_0","setCurrentTime","BehaviorSubject","useHasVisibleAudioTracks","visibleTrackIds$","trackIds","ToggleTip","showArrow","positioning","gutter","ChakraPopover","InfoTip","HiOutlineInformationCircle","ProgressBar","ChakraProgress","info","ProgressRoot","ProgressValueText","ValueText","useNavigationContext","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","beginAbsolutePageIndex","endPageIndex","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","totalApproximatePages","PaginationInfoSection","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","chapterTitle","Fragment","QuickBar","useSliderValues","isUsingSpread","currentRealPage","currentPage","useSignalState","Scrubber","readingDirection","isScrubberWithinChapter","goToPageOfSpineItem","spineItemId","animation","goToAbsolutePageIndex","onChange","subject","throttleLock","trigger","step","BottomBar","onItemClick","boxRef","zoom","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","entry","goToLeftOrTopSpineItem","canGoLeftSpineItem","canGoTopSpineItem","RxDoubleArrowUp","RxDoubleArrowLeft","maxWidth","canGoRightSpineItem","canGoBottomSpineItem","goToRightOrBottomSpineItem","RxDoubleArrowDown","RxDoubleArrowRight","Collapsible","LuChevronDown","t26","LuCircleHelp","t27","t28","t29","LuTableOfContents","t30","t31","LuSearch","t32","t33","exit","animate","enter","scale","t34","LuZoomOut","LuZoomIn","t35","t36","t37","BiFontSize","t38","t39","BsBookmarks","t40","t41","MdOutlineFitScreen","t42","t43","t44","LuGalleryHorizontal","t45","t46","RiGalleryView2","t47","t48","t49","currentScale","useFullscreen","isFullscreen","setIsFullscreen","document","fullscreenElement","exitFullscreen","catch","console","then","documentElement","requestFullscreen","navigationUI","onToggleFullscreenClick","fullscreenchangeHandler","addEventListener","removeEventListener","TopBar","IoIosArrowBack","IoMdMore","MdFullscreenExit","MdFullscreen","useQuickMenu","onQuickMenuOpenChange","QuickMenu","useQuickMenuToggleGesture","gestures$","selection$","selectionOnPointerdown","quickMenuToggleGesture","handled","val","Field","errorText","helperText","optionalText","ChakraField","RefitDialog","readerWithRefit","refit","settings$","refitSettings","e_0","viewportFit","customWidth","e_1","SearchListItem","contextText","startOffset","onClick","substring","before","after","margin","overflow","preventDefault","display","textDecoration","DEBOUNCE_TIME","useSearch","searchSubject","searchValue","readerWithSearch","search","bind","setValue","status","SearchDialogContent","onValueChange","consolidatedResults","Input","overflowY","result","j","startContainer","parentElement","itemPageIndex","SearchDialog","TableOfContentsDialogContent","nav","toc","currentSubChapter","buildTocForItem","tocItem","lvl","alignItems","goToUrl","path","LuCircleCheck","tocItem_0","index_0","tocItem_1","index_1","TableOfContentsDialog","useZoomSettings","zoomMaxScale","STEP","MIN","normalizeZoomValue","clamped","stepped","ZoomControls","animationFrameScheduler","leading","zoomScaleValue","isZooming","normalizedZoomScaleValue","scaleAt","constrain","BookmarksEffects","Effects","InnerReactReader","enableFloatingTime","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","isGalleryOpen","setIsGalleryOpen","setQuickMenuOpen","_onItemClick","ReactReader","slots","containerProps"],"mappings":"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"}