@prose-reader/react-reader 1.303.0 → 1.305.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/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 {\n setPropertyIfChanged,\n setStylePropertyIfChanged,\n} from \"@prose-reader/core\"\nimport type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { FALLBACK_BOTTOM_COLOR, FALLBACK_TOP_COLOR } from \"./constants\"\nimport { drawWave as drawWaveFrame } from \"./drawWave\"\nimport { getNormalizedDisplayBarCount, resolveGradientColors } from \"./shaping\"\n\nconst DEFAULT_VISUALIZER: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n\nexport const AudioWaveCanvas = ({\n visualizer,\n}: {\n visualizer?: AudioVisualizerState\n}) => {\n const displayBarCount = getNormalizedDisplayBarCount(\n useBreakpointValue({\n base: 29,\n md: 35,\n lg: 41,\n xl: 49,\n }) ?? 29,\n )\n const canvasRef = useRef<HTMLCanvasElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const frameRef = useRef<number | undefined>(undefined)\n const visualizerRef = useRef<AudioVisualizerState>(\n visualizer ?? DEFAULT_VISUALIZER,\n )\n const displayedBarsRef = useRef<number[]>([])\n const fillStyleRef = useRef<CanvasGradient | string>(FALLBACK_BOTTOM_COLOR)\n const sizeRef = useRef({\n width: 0,\n height: 0,\n })\n\n /**\n * Cache the gradient outside the animation loop to avoid repeated\n * `getComputedStyle()` and gradient allocation during playback.\n *\n * Limitation: the resolved Chakra CSS variable colors are treated as static\n * for the current canvas size. Theme or palette changes after mount are not\n * picked up immediately; the gradient is refreshed on resize and remount.\n */\n const refreshFillStyle = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas || sizeRef.current.height <= 0) return\n\n const context = canvas.getContext(`2d`)\n\n if (!context) return\n\n const { topColor, bottomColor } = resolveGradientColors(canvas, {\n topVariable: `--audio-wave-top-color`,\n topFallback: FALLBACK_TOP_COLOR,\n bottomVariable: `--audio-wave-bottom-color`,\n bottomFallback: FALLBACK_BOTTOM_COLOR,\n })\n const gradient = context.createLinearGradient(\n 0,\n 0,\n 0,\n sizeRef.current.height,\n )\n\n gradient.addColorStop(0, topColor)\n gradient.addColorStop(1, bottomColor)\n\n fillStyleRef.current = gradient\n }, [])\n\n const drawWave = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas) return\n\n const visualizer = visualizerRef.current\n\n displayedBarsRef.current = drawWaveFrame({\n canvas,\n size: sizeRef.current,\n visualizer,\n displayBarCount,\n displayedBars: displayedBarsRef.current,\n fillStyle: fillStyleRef.current,\n })\n }, [displayBarCount])\n\n const stopAnimation = useCallback(() => {\n if (frameRef.current !== undefined) {\n cancelAnimationFrame(frameRef.current)\n frameRef.current = undefined\n }\n }, [])\n\n const startAnimation = useCallback(() => {\n if (frameRef.current !== undefined) return\n\n const tick = () => {\n const visualizer = visualizerRef.current\n\n if (!visualizer.isActive) {\n frameRef.current = undefined\n drawWave()\n\n return\n }\n\n drawWave()\n frameRef.current = requestAnimationFrame(tick)\n }\n\n frameRef.current = requestAnimationFrame(tick)\n }, [drawWave])\n\n const resizeCanvas = useCallback(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n\n if (!canvas || !container) return\n\n const nextWidth = Math.max(1, container.clientWidth)\n const nextHeight = Math.max(1, container.clientHeight)\n const pixelRatio = window.devicePixelRatio || 1\n const nextCanvasWidth = Math.round(nextWidth * pixelRatio)\n const nextCanvasHeight = Math.round(nextHeight * pixelRatio)\n\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n setPropertyIfChanged(canvas, `width`, nextCanvasWidth)\n setPropertyIfChanged(canvas, `height`, nextCanvasHeight)\n setStylePropertyIfChanged(canvas.style, `width`, `${nextWidth}px`)\n setStylePropertyIfChanged(canvas.style, `height`, `${nextHeight}px`)\n\n const context = canvas.getContext(`2d`)\n\n if (context) {\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0)\n }\n\n refreshFillStyle()\n drawWave()\n }, [drawWave, refreshFillStyle])\n\n useEffect(() => {\n visualizerRef.current = visualizer ?? DEFAULT_VISUALIZER\n\n if (visualizerRef.current.isActive) {\n startAnimation()\n return\n }\n\n stopAnimation()\n drawWave()\n }, [drawWave, startAnimation, stopAnimation, visualizer])\n\n useEffect(() => {\n const container = containerRef.current\n\n if (!container) return\n\n resizeCanvas()\n\n const resizeObserver = new ResizeObserver(() => {\n resizeCanvas()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n stopAnimation()\n resizeObserver.disconnect()\n }\n }, [resizeCanvas, stopAnimation])\n\n return (\n <Box\n ref={containerRef}\n position=\"absolute\"\n inset={0}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n px={8}\n py={12}\n pointerEvents=\"none\"\n css={{\n \"--audio-wave-top-color\": \"colors.colorPalette.emphasized\",\n \"--audio-wave-bottom-color\": \"colors.colorPalette.solid\",\n }}\n style={{\n WebkitMaskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n maskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n }}\n >\n <canvas ref={canvasRef} />\n </Box>\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioVisualizer } from \"./useAudioVisualizer\"\nimport { useIsCurrentAudioTrack } from \"./useIsCurrentAudioTrack\"\nimport { AudioWaveCanvas } from \"./wave/AudioWaveCanvas\"\n\n/**\n * Render only when there is a `renderer`. Meaning the item is loaded.\n * - Renders correct visualizer for current item.\n * - Renders default visualizer when item is not currently playing.\n */\nexport const AudioSpineItem = ({ item }: { item: CoreSpineItem }) => {\n const audioReader = useAudioReader()\n const isAudioRenderer = audioReader?.audio.isAudioRenderer(item.renderer)\n const audioRenderer = isAudioRenderer ? item.renderer : undefined\n const { data: audioDocumentContainer } = useObserve(\n () => audioRenderer?.watch(`documentContainer`),\n [audioRenderer, isAudioRenderer],\n )\n const isCurrentTrack = useIsCurrentAudioTrack({\n enabled: !!audioDocumentContainer,\n trackId: item.item.id,\n })\n const visualizer = useAudioVisualizer(isCurrentTrack)\n\n if (!audioDocumentContainer) return null\n\n return createPortal(\n <AudioWaveCanvas visualizer={isCurrentTrack ? visualizer : undefined} />,\n audioDocumentContainer,\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AudioSpineItem } from \"../audio/AudioSpineItem\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(<AudioSpineItem item={item} />, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n combineLatest,\n distinctUntilChanged,\n map,\n NEVER,\n startWith,\n switchMap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n throttleTime(100, undefined, { trailing: true }),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(\n map((entries) => entries.some((e) => e.isIntersecting)),\n startWith(false),\n distinctUntilChanged(),\n )\n\n return combineLatest([itemLayoutChanged$, isItemIntersecting$]).pipe(\n switchMap(([, isVisible]) => {\n if (!isVisible) {\n element.innerHTML = \"\"\n\n return NEVER\n }\n\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n {/* iframe nullifying overlay. Ensure there are no pointer interceptions, especially on iPadOS */}\n <Box position=\"absolute\" inset={0} zIndex={1} aria-hidden=\"true\" />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n zIndex={2}\n textAlign=\"center\"\n bgColor=\"bg.panel\"\n color=\"fg\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","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 = {\n _open: \"fade-in\",\n _closed: \"fade-out\",\n _motionReduce: \"none\",\n}\nconst ANIMATION_DURATION_IN_OUT = { base: \"moderate\", _motionReduce: \"0ms\" }\n\ntype ViewportDimensions = {\n height: number\n width: number\n}\n\ntype ViewportState = `busy` | `free`\n\ntype HintPagination = Pick<\n PaginationInfo & ExtraPaginationInfo,\n | `beginHasAdjacentSpreadPage`\n | `beginPageIndexInSpineItem`\n | `beginSpineItemIndex`\n | `endHasAdjacentSpreadPage`\n | `endPageIndexInSpineItem`\n | `endSpineItemIndex`\n>\n\ntype ReaderWithSpreadHintStreams = NonNullable<ReturnType<typeof useReader>>\n\nexport const wouldRotationUseComputedSpreadMode = ({\n manifest,\n viewport,\n}: {\n manifest: Manifest\n viewport: ViewportDimensions\n}) => {\n if (viewport.width === viewport.height) return false\n\n return shouldUseComputedSpreadModeForViewport({\n manifest,\n viewport: {\n height: viewport.width,\n width: viewport.height,\n },\n })\n}\n\nexport const getSpreadRotationHintTargetKey = ({\n manifest,\n pagination,\n computedSpreadMode,\n viewportState,\n viewport,\n}: {\n manifest: Manifest\n pagination: HintPagination\n computedSpreadMode: boolean\n viewportState: ViewportState\n viewport: ViewportDimensions\n}) => {\n if (viewportState !== `free`) return undefined\n if (computedSpreadMode) return undefined\n if (!wouldRotationUseComputedSpreadMode({ manifest, viewport })) {\n return undefined\n }\n\n const hasSpreadPair =\n pagination.beginHasAdjacentSpreadPage && pagination.endHasAdjacentSpreadPage\n\n if (!hasSpreadPair) return undefined\n\n return [\n pagination.beginSpineItemIndex,\n pagination.beginPageIndexInSpineItem,\n pagination.endSpineItemIndex,\n pagination.endPageIndexInSpineItem,\n ]\n .map((value) => value ?? `none`)\n .join(`:`)\n}\n\nconst observeHintPagination = (reader: ReaderWithSpreadHintStreams) =>\n reader.pagination.state$.pipe(\n watchKeys([\n `beginHasAdjacentSpreadPage`,\n `beginPageIndexInSpineItem`,\n `beginSpineItemIndex`,\n `endHasAdjacentSpreadPage`,\n `endPageIndexInSpineItem`,\n `endSpineItemIndex`,\n ]),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\nconst observeBeginSpineItemReady = ({\n pagination$,\n reader,\n}: {\n pagination$: Observable<HintPagination>\n reader: ReaderWithSpreadHintStreams\n}) =>\n combineLatest([pagination$, reader.spineItemsManager.items$]).pipe(\n map(([{ beginSpineItemIndex }, spineItems]) =>\n beginSpineItemIndex === undefined\n ? undefined\n : spineItems[beginSpineItemIndex],\n ),\n distinctUntilChanged(),\n switchMap((spineItem) => spineItem?.isReady$ ?? of(false)),\n )\n\nconst observeSpreadRotationHintTargetKey = (\n reader: ReaderWithSpreadHintStreams,\n) => {\n const pagination$ = observeHintPagination(reader)\n const beginSpineItemReady$ = observeBeginSpineItemReady({\n pagination$,\n reader,\n })\n\n return combineLatest([\n pagination$,\n reader.context.manifest$,\n reader.settings.watch([`computedSpreadMode`]),\n reader.viewportState$,\n reader.viewport.watch([`width`, `height`]),\n beginSpineItemReady$,\n ]).pipe(\n debounceTime(HINT_TARGET_DEBOUNCE_MS),\n map(\n ([pagination, manifest, settings, viewportState, viewport, isReady]) => {\n if (!isReady) return undefined\n\n return getSpreadRotationHintTargetKey({\n manifest,\n pagination,\n computedSpreadMode: settings.computedSpreadMode ?? false,\n viewportState,\n viewport,\n })\n },\n ),\n distinctUntilChanged(),\n )\n}\n\nconst useSpreadRotationHintTargetKey = () => {\n const reader = useReader()\n\n return useObserve(\n () => (reader ? observeSpreadRotationHintTargetKey(reader) : NEVER),\n [reader],\n ).data\n}\n\nexport const SpreadRotationHint = memo(() => {\n const hintTargetKey = useSpreadRotationHintTargetKey()\n const visibleHintKey = useTransientValue(hintTargetKey, HINT_VISIBLE_MS)\n\n return (\n <Presence\n present={visibleHintKey !== undefined}\n lazyMount\n unmountOnExit\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration={ANIMATION_DURATION_IN_OUT}\n >\n <Box\n key={visibleHintKey}\n aria-hidden\n position=\"absolute\"\n left=\"50%\"\n top=\"50%\"\n transform=\"translate(-50%, -50%)\"\n pointerEvents=\"none\"\n zIndex={2}\n data-spread-rotation-hint=\"true\"\n >\n <Box\n alignItems=\"center\"\n bg=\"bg.inverted/72\"\n borderRadius=\"full\"\n className={styles.pulse}\n color=\"fg.inverted\"\n display=\"flex\"\n height=\"68px\"\n justifyContent=\"center\"\n width=\"68px\"\n >\n <MdScreenRotation focusable={false} size={34} />\n </Box>\n </Box>\n </Presence>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import RcSlider from \"rc-slider\"\nimport { type ComponentProps, memo } from \"react\"\nimport \"rc-slider/assets/index.css\"\nimport { Box, chakra } from \"@chakra-ui/react\"\n\nconst ChakraRcSlider = chakra(RcSlider)\n\nexport const ThemedSlider = memo((props: ComponentProps<typeof RcSlider>) => {\n return (\n <Box\n display=\"contents\"\n css={{\n \"--bg\": \"colors.bg\",\n \"--bg-emphasized\": \"colors.bg.emphasized\",\n \"--color-solid\": \"colors.colorPalette.solid\",\n }}\n >\n <ChakraRcSlider\n keyboard={false}\n style={{\n padding: 0,\n }}\n css={{\n \"& > .rc-slider-handle:focus-visible\": {\n boxShadow: \"0 0 0 2px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle:active\": {\n boxShadow: \"0 0 5px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle.rc-slider-handle-dragging\": {\n boxShadow: \"0 0 0 3px var(--color-solid) !important\",\n },\n \"&.rc-slider-disabled\": {\n backgroundColor: \"transparent\",\n opacity: 0.5,\n },\n \"&.rc-slider-disabled > .rc-slider-rail\": {\n backgroundColor: \"var(--bg-emphasized)\",\n },\n \"&.rc-slider-disabled > .rc-slider-track\": {\n backgroundColor: \"var(--color-solid)\",\n },\n \"&.rc-slider-disabled > .rc-slider-handle\": {\n backgroundColor: \"var(--bg)\",\n borderColor: \"var(--color-solid)\",\n },\n }}\n styles={{\n rail: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--bg-emphasized)\",\n },\n track: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--color-solid)\",\n },\n handle: {\n width: \"24px\",\n height: \"24px\",\n top: \"50%\",\n borderColor: \"var(--color-solid)\",\n transform: `translate(${props.reverse ? \"50%\" : \"-50%\"}, -50%)`,\n backgroundColor: \"var(--bg)\",\n marginTop: \"0px\",\n },\n }}\n {...props}\n />\n </Box>\n )\n})\n","import type { AudioEnhancerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioState = () => {\n const audioReader = useAudioReader()\n const { data: audioState } = useObserve<AudioEnhancerState | undefined>(\n () => audioReader?.audio.state$,\n [audioReader],\n )\n\n return audioState\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useState } from \"react\"\nimport { LuPause, LuPlay } from \"react-icons/lu\"\nimport { useConstant, useSubscribe } from \"reactjrx\"\nimport { BehaviorSubject, map, tap } from \"rxjs\"\nimport { ThemedSlider } from \"../quickmenu/ThemedSlider\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioState } from \"./useAudioState\"\n\nconst formatPlaybackTime = (value: number) => {\n if (!Number.isFinite(value) || value < 0) return `00:00`\n\n const roundedValue = Math.floor(value)\n const hours = Math.floor(roundedValue / 3600)\n const minutes = Math.floor((roundedValue % 3600) / 60)\n const seconds = roundedValue % 60\n\n if (hours > 0) {\n return [hours, minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n }\n\n return [minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n}\n\nexport const AudioControlsSection = (props: ComponentProps<typeof HStack>) => {\n const audioReader = useAudioReader()\n const audioState = useAudioState()\n const hasPlayableTrack =\n !!audioState?.currentTrack || (audioState?.tracks.length ?? 0) > 0\n const duration = audioState?.duration\n const displayDuration = Math.max(0, duration ?? 0)\n const knownDuration =\n typeof duration === `number` && duration > 0 ? duration : undefined\n const hasKnownDuration = knownDuration !== undefined\n const sliderMax = knownDuration ?? 1\n const currentTime = hasKnownDuration\n ? Math.min(Math.max(0, audioState?.currentTime ?? 0), knownDuration)\n : 0\n const isSliderDisabled =\n !hasPlayableTrack || !!audioState?.isLoading || !hasKnownDuration\n const [draftCurrentTime, setDraftCurrentTime] = useState(currentTime)\n const isSeekingSubject = useConstant(() => new BehaviorSubject(false))\n\n /**\n * Keeps the slider synced with audio playback, except while the user is\n * actively dragging the thumb.\n *\n * During drag we display a local draft value and ignore playback updates to\n * avoid snapping back to the previously observed time. Once the user releases\n * the slider, the enhancer publishes the requested seek time immediately\n * before mutating the audio element, so unlocking this sync path is expected\n * to resume from the new target time. Any later native media updates are then\n * treated as normal playback progression rather than part of the drag UX.\n */\n const syncDownCurrentTime = useCallback(\n () =>\n audioReader?.audio.state$.pipe(\n map((state) => state.currentTime),\n tap((currentTime) => {\n if (isSeekingSubject.value) return\n\n setDraftCurrentTime(currentTime)\n isSeekingSubject.next(false)\n }),\n ),\n [audioReader, isSeekingSubject],\n )\n\n useSubscribe(syncDownCurrentTime)\n\n if (!audioState) {\n return null\n }\n\n return (\n <HStack\n width=\"100%\"\n maxW=\"100%\"\n gap={3}\n borderRadius=\"md\"\n bg=\"bg.muted\"\n px={3}\n py={2}\n {...props}\n >\n <IconButton\n aria-label={audioState.isPlaying ? \"Pause audio\" : \"Play audio\"}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n void audioReader?.audio.toggle()\n }}\n disabled={!hasPlayableTrack || audioState.isLoading}\n >\n {audioState.isPlaying ? <LuPause /> : <LuPlay />}\n </IconButton>\n <Stack gap={0} minW={0} flex={1}>\n <ThemedSlider\n value={draftCurrentTime}\n min={0}\n max={sliderMax}\n disabled={isSliderDisabled}\n onChange={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") return\n\n isSeekingSubject.next(true)\n setDraftCurrentTime(nextValue)\n }}\n onChangeComplete={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") {\n isSeekingSubject.next(false)\n\n return\n }\n\n setDraftCurrentTime(nextValue)\n audioReader?.audio.setCurrentTime(nextValue)\n isSeekingSubject.next(false)\n }}\n />\n <HStack justifyContent=\"space-between\" mt={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {audioState.isLoading\n ? `Loading audio...`\n : formatPlaybackTime(draftCurrentTime)}\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {formatPlaybackTime(displayDuration)}\n </Text>\n </HStack>\n </Stack>\n </HStack>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useHasVisibleAudioTracks = () => {\n const audioReader = useAudioReader()\n const { data: hasVisibleAudioTracks = false } = useObserve(\n () =>\n audioReader?.audio.visibleTrackIds$.pipe(\n map((trackIds) => trackIds.length > 0),\n distinctUntilChanged(),\n ),\n [audioReader],\n )\n\n return hasVisibleAudioTracks\n}\n","import { Popover as ChakraPopover, IconButton, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { HiOutlineInformationCircle } from \"react-icons/hi\"\n\nexport interface ToggleTipProps extends ChakraPopover.RootProps {\n showArrow?: boolean\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n content?: React.ReactNode\n}\n\nexport const ToggleTip = React.forwardRef<HTMLDivElement, ToggleTipProps>(\n function ToggleTip(props, ref) {\n const {\n showArrow,\n children,\n portalled = true,\n content,\n portalRef,\n ...rest\n } = props\n\n return (\n <ChakraPopover.Root\n {...rest}\n positioning={{ ...rest.positioning, gutter: 4 }}\n >\n <ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content\n width=\"auto\"\n px=\"2\"\n py=\"1\"\n textStyle=\"xs\"\n rounded=\"sm\"\n ref={ref}\n >\n {showArrow && (\n <ChakraPopover.Arrow>\n <ChakraPopover.ArrowTip />\n </ChakraPopover.Arrow>\n )}\n {content}\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n </ChakraPopover.Root>\n )\n },\n)\n\nexport const InfoTip = React.forwardRef<\n HTMLDivElement,\n Partial<ToggleTipProps>\n>(function InfoTip(props, ref) {\n const { children, ...rest } = props\n return (\n <ToggleTip content={children} {...rest} ref={ref}>\n <IconButton\n variant=\"ghost\"\n aria-label=\"info\"\n size=\"2xs\"\n colorPalette=\"gray\"\n >\n <HiOutlineInformationCircle />\n </IconButton>\n </ToggleTip>\n )\n})\n","import { Progress as ChakraProgress } from \"@chakra-ui/react\"\nimport { InfoTip } from \"./toggle-tip\"\nimport * as React from \"react\"\n\nexport const ProgressBar = React.forwardRef<\n HTMLDivElement,\n ChakraProgress.TrackProps\n>(function ProgressBar(props, ref) {\n return (\n <ChakraProgress.Track {...props} ref={ref}>\n <ChakraProgress.Range />\n </ChakraProgress.Track>\n )\n})\n\nexport interface ProgressLabelProps extends ChakraProgress.LabelProps {\n info?: React.ReactNode\n}\n\nexport const ProgressLabel = React.forwardRef<\n HTMLDivElement,\n ProgressLabelProps\n>(function ProgressLabel(props, ref) {\n const { children, info, ...rest } = props\n return (\n <ChakraProgress.Label {...rest} ref={ref}>\n {children}\n {info && <InfoTip>{info}</InfoTip>}\n </ChakraProgress.Label>\n )\n})\n\nexport const ProgressRoot = ChakraProgress.Root\nexport const ProgressValueText = ChakraProgress.ValueText\n","import { usePagination } from \"../pagination/usePagination\"\n\nexport const useNavigationContext = () => {\n const pagination = usePagination()\n const hasOnlyOnePage = pagination?.numberOfTotalPages === 1\n\n const isBeginWithinChapter =\n (pagination?.beginNumberOfPagesInSpineItem ?? 0) > 1\n\n const isEndWithinChapter = (pagination?.endNumberOfPagesInSpineItem ?? 0) > 1\n\n const beginPageIndex =\n (pagination?.hasChapters\n ? pagination?.beginPageIndexInSpineItem\n : pagination?.beginAbsolutePageIndex) ?? 0\n const endPageIndex =\n (pagination?.hasChapters\n ? pagination?.endPageIndexInSpineItem\n : pagination?.endAbsolutePageIndex) ?? 0\n\n const [leftPageIndex = 0, rightPageIndex = 0] = [\n beginPageIndex,\n endPageIndex,\n ].sort((a, b) => a - b)\n\n const beginAndEndAreDifferent =\n pagination?.beginPageIndexInSpineItem !==\n pagination?.endPageIndexInSpineItem ||\n pagination?.beginSpineItemIndex !== pagination?.endSpineItemIndex\n\n const totalApproximatePages = pagination?.hasChapters\n ? pagination?.beginNumberOfPagesInSpineItem\n : pagination?.numberOfTotalPages\n\n return {\n hasOnlyOnePage,\n beginPageIndex,\n endPageIndex,\n isBeginWithinChapter,\n isEndWithinChapter,\n beginAndEndAreDifferent,\n totalApproximatePages,\n leftPageIndex,\n rightPageIndex,\n }\n}\n","import { HStack, Stack, Text } from \"@chakra-ui/react\"\nimport {\n ProgressBar,\n ProgressRoot,\n ProgressValueText,\n} from \"../components/ui/progress\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const PaginationInfoSection = () => {\n const pagination = usePagination()\n const {\n hasOnlyOnePage,\n leftPageIndex,\n rightPageIndex,\n totalApproximatePages,\n beginAndEndAreDifferent,\n } = useNavigationContext()\n const progress = Math.round((pagination?.percentageEstimateOfBook ?? 0) * 100)\n\n const buildTitleChain = (\n chapterInfo: NonNullable<typeof pagination>[\"beginChapterInfo\"],\n ): string => {\n if (chapterInfo?.subChapter) {\n return `${chapterInfo.title} / ${buildTitleChain(chapterInfo.subChapter)}`\n }\n return chapterInfo?.title || \"\"\n }\n\n const chapterTitle = buildTitleChain(pagination?.beginChapterInfo)\n\n return (\n <Stack alignItems=\"center\" gap={1} maxW=\"100%\" overflow=\"auto\">\n <ProgressRoot value={progress} size=\"xs\" width={150}>\n <HStack justifyContent=\"space-between\">\n <ProgressBar width={110} />\n <ProgressValueText>{`${progress}%`}</ProgressValueText>\n </HStack>\n </ProgressRoot>\n <Text truncate maxWidth=\"100%\" fontSize=\"sm\" mt={1}>\n {chapterTitle ? `Chapter: ${chapterTitle}` : `\\u00A0`}\n </Text>\n {!hasOnlyOnePage && (\n <HStack>\n <Text fontSize=\"xs\">\n {beginAndEndAreDifferent\n ? `${leftPageIndex + 1} - ${rightPageIndex + 1} of ${totalApproximatePages}`\n : `${leftPageIndex + 1} of ${totalApproximatePages}`}\n </Text>\n {!!pagination?.hasChapters && (\n <>\n <Text>-</Text>\n <Text fontSize=\"xs\">\n ({(pagination?.beginAbsolutePageIndex ?? 0) + 1})\n </Text>\n </>\n )}\n </HStack>\n )}\n </Stack>\n )\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const QuickBar = memo(\n ({\n children,\n position,\n ...rest\n }: { position: \"top\" | \"bottom\" } & PresenceProps & {\n ref?: React.RefObject<HTMLDivElement | null>\n }) => {\n return (\n <Presence\n display=\"flex\"\n flexDirection=\"row\"\n width=\"100%\"\n position=\"absolute\"\n {...(position === \"bottom\" ? { bottom: 0 } : { top: 0 })}\n animationName={\n position === \"bottom\"\n ? {\n _open: \"slide-from-bottom, fade-in\",\n _closed: \"slide-to-bottom, fade-out\",\n }\n : {\n _open: \"slide-from-top, fade-in\",\n _closed: \"slide-to-top, fade-out\",\n }\n }\n animationDuration=\"moderate\"\n bgColor=\"bg.panel\"\n alignItems=\"center\"\n justifyContent=\"center\"\n shadow=\"md\"\n p={4}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import { Box } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useEffect } from \"react\"\nimport { signal, useObserve, useSignalState, useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\nimport { ThemedSlider } from \"./ThemedSlider\"\n\nconst useSliderValues = () => {\n const pagination = usePagination()\n const isUsingSpread = pagination?.isUsingSpread\n const { beginPageIndex: currentRealPage, totalApproximatePages = 0 } =\n useNavigationContext()\n const currentPage = isUsingSpread\n ? Math.floor((currentRealPage || 0) / 2)\n : currentRealPage\n const [value, valueSignal] = useSignalState(() =>\n signal({\n default: currentPage || 0,\n }),\n )\n const min = 0\n const max = Math.max(\n 0,\n isUsingSpread\n ? Math.floor((totalApproximatePages - 1) / 2)\n : totalApproximatePages - 1,\n )\n\n useEffect(() => {\n valueSignal.update(currentPage || 0)\n }, [currentPage, valueSignal])\n\n return {\n value,\n valueSignal,\n min,\n max,\n }\n}\n\nexport const Scrubber = (props: ComponentProps<typeof ThemedSlider>) => {\n const reader = useReader()\n const pagination = usePagination()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const reverse = manifest?.readingDirection === \"rtl\"\n const isUsingSpread = pagination?.isUsingSpread\n const { totalApproximatePages = 0, isBeginWithinChapter } =\n useNavigationContext()\n const step = 1\n const isScrubberWithinChapter = isBeginWithinChapter\n const { value, valueSignal, min, max } = useSliderValues()\n\n const onChange: NonNullable<ComponentProps<typeof ThemedSlider>[\"onChange\"]> =\n useCallback(\n (values) => {\n const [value = 0] = Array.isArray(values) ? values : [values]\n\n valueSignal.update(value)\n\n const pageIndex = isUsingSpread\n ? Math.floor(value) * 2\n : Math.floor(value)\n\n if (!isScrubberWithinChapter) {\n reader?.navigation.goToAbsolutePageIndex({\n absolutePageIndex: pageIndex,\n animation: false,\n })\n } else {\n reader?.navigation.goToPageOfSpineItem({\n pageIndex,\n spineItemId: reader.pagination.state.beginSpineItemIndex ?? 0,\n animation: false,\n })\n }\n },\n [reader, isUsingSpread, valueSignal, isScrubberWithinChapter],\n )\n\n /**\n * @note\n * Scrubber can navigate fast and without lock we may end up with\n * slowness due to the reader\n * paginating and loading items in between.\n * This is good practice (but not required) to throttle it.\n */\n const throttleLock = useCallback(() => {\n return reader?.navigation.throttleLock({\n duration: 100,\n trigger: valueSignal.subject,\n })\n }, [reader, valueSignal])\n\n useSubscribe(throttleLock)\n\n // const marks =\n // max > 1\n // ? Array.from({ length: max + 1 }, (_, i) => i).reduce(\n // (acc: number[], val) => [...acc, val],\n // [],\n // )\n // : []\n\n const disabled =\n totalApproximatePages === 1 ||\n (isUsingSpread && totalApproximatePages === 2)\n\n // @tmp not available yet in chakra\n // if (reverse) return null\n\n if (disabled) return <Box style={props.style} />\n\n return (\n <ThemedSlider\n value={[value]}\n max={max}\n min={min}\n reverse={reverse}\n step={step}\n onChange={onChange}\n {...props}\n />\n )\n // return (\n // <Slider\n // value={[value]}\n // max={max}\n // min={min}\n // marks={marks}\n // onChange={e => {\n // debugger\n // }}\n // onValueChange={onChange}\n // // reverse={reverse}\n // orientation=\"horizontal\"\n // step={step}\n // />\n // )\n}\n","import { Box, Collapsible, HStack, IconButton, Stack } from \"@chakra-ui/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { BiFontSize } from \"react-icons/bi\"\nimport { BsBookmarks } from \"react-icons/bs\"\nimport {\n LuChevronDown,\n LuCircleHelp,\n LuGalleryHorizontal,\n LuNotebookPen,\n LuSearch,\n LuTableOfContents,\n LuZoomIn,\n LuZoomOut,\n} from \"react-icons/lu\"\nimport { MdOutlineFitScreen } from \"react-icons/md\"\nimport { RiGalleryView2 } from \"react-icons/ri\"\nimport {\n RxDoubleArrowDown,\n RxDoubleArrowLeft,\n RxDoubleArrowRight,\n RxDoubleArrowUp,\n} from \"react-icons/rx\"\nimport { useObserve } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { AudioControlsSection } from \"../audio/AudioControlsSection\"\nimport { useHasVisibleAudioTracks } from \"../audio/useHasVisibleAudioTracks\"\nimport {\n hasAnnotationsEnhancer,\n hasGalleryEnhancer,\n hasRefitEnhancer,\n hasSearchEnhancer,\n useReader,\n} from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { PaginationInfoSection } from \"./PaginationInfoSection\"\nimport { QuickBar } from \"./QuickBar\"\nimport { Scrubber } from \"./Scrubber\"\n\nexport const BottomBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (\n item: \"annotations\" | \"search\" | \"help\" | \"toc\" | \"bookmarks\" | \"gallery\",\n ) => void\n }) => {\n const boxRef = useRef<HTMLDivElement>(null)\n const reader = useReader()\n const {\n quickMenuBottomBarBoundingBoxSignal,\n onFontSizeMenuOpenChange,\n onRefitMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"onFontSizeMenuOpenChange\",\n \"onRefitMenuOpenChange\",\n ])\n const { data: navigation } = useObserve(\n () => reader?.navigation.state$,\n [reader],\n )\n const { data: settings } = useObserve(\n () => reader?.settings.values$,\n [reader],\n )\n const { data: zoomState } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) =>\n state.currentScale > 1\n ? \"in\"\n : state.currentScale < 1\n ? \"out\"\n : undefined,\n ),\n ),\n [reader],\n )\n const isZoomingIn = zoomState === \"in\"\n const isZoomingOut = zoomState === \"out\"\n const isScrollingMode = settings?.computedPageTurnMode === \"scrollable\"\n const isVerticalDirection =\n settings?.computedPageTurnDirection === \"vertical\"\n const hasAudioControls = useHasVisibleAudioTracks()\n const [isExtraOpen, setIsExtraOpen] = useState(true)\n\n useEffect(() => {\n if (!boxRef.current) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n quickMenuBottomBarBoundingBoxSignal.update(entry)\n }\n })\n\n resizeObserver.observe(boxRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [quickMenuBottomBarBoundingBoxSignal])\n\n return (\n <QuickBar\n present={open}\n position=\"bottom\"\n display=\"flex\"\n flexDirection=\"column\"\n overflow=\"auto\"\n pb={8}\n px={0}\n ref={boxRef}\n gap={4}\n >\n {hasAudioControls && (\n <HStack px={4} justifyContent=\"center\" width=\"100%\">\n <AudioControlsSection maxW={400} />\n </HStack>\n )}\n <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useCallback, useEffect, useState } from \"react\"\nimport screenfull from \"screenfull\"\n\nconst readFullscreenSupport = () => screenfull.isEnabled\n\nconst readFullscreenState = () =>\n screenfull.isEnabled ? screenfull.isFullscreen : false\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const [isFullscreenSupported, setIsFullscreenSupported] = useState(false)\n\n const syncFullscreenState = useCallback(() => {\n setIsFullscreen((current) => {\n const next = readFullscreenState()\n\n return current === next ? current : next\n })\n setIsFullscreenSupported((current) => {\n const next = readFullscreenSupport()\n\n return current === next ? current : next\n })\n }, [])\n\n const onToggleFullscreenClick = useCallback(async () => {\n if (!screenfull.isEnabled) {\n syncFullscreenState()\n\n return\n }\n\n try {\n if (screenfull.isFullscreen) {\n await screenfull.exit()\n } else {\n await screenfull.request(document.documentElement, {\n navigationUI: `hide`,\n })\n }\n } catch (error) {\n console.error(error)\n } finally {\n syncFullscreenState()\n }\n }, [syncFullscreenState])\n\n useEffect(() => {\n syncFullscreenState()\n\n if (!screenfull.isEnabled) return\n\n screenfull.on(`change`, syncFullscreenState)\n screenfull.on(`error`, syncFullscreenState)\n\n return () => {\n screenfull.off(`change`, syncFullscreenState)\n screenfull.off(`error`, syncFullscreenState)\n }\n }, [syncFullscreenState])\n\n return {\n isFullscreen,\n isFullscreenSupported,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, isFullscreenSupported, onToggleFullscreenClick } =\n useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n {isFullscreenSupported && (\n <IconButton\n aria-label={isFullscreen ? `Exit fullscreen` : `Enter fullscreen`}\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n )}\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { SpreadRotationHint } from \"./navigation/SpreadRotationHint\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <SpreadRotationHint />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"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","nextCanvasWidth","nextCanvasHeight","setPropertyIfChanged","setStylePropertyIfChanged","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","throttleTime","trailing","isItemIntersecting$","observeIntersection","isVisible","innerHTML","gallery","snapshot","attachSnapshot","isIntersecting","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","_motionReduce","ANIMATION_DURATION_IN_OUT","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","first","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","readFullscreenSupport","screenfull","isEnabled","readFullscreenState","isFullscreen","useFullscreen","setIsFullscreen","isFullscreenSupported","setIsFullscreenSupported","syncFullscreenState","useCallback","onToggleFullscreenClick","request","document","documentElement","navigationUI","console","on","off","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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"}
1
+ {"version":3,"file":"index.umd.cjs","names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","Reader","Annotation","RuntimeAnnotation","EnhancerAPI","GesturesEnhancerAPI","createContext","Dispatch","SetStateAction","Signal","signal","Subject","ReaderNotification","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","PrivateContextType","uncontrolledFontSize","refitMenuOpen","onRefitMenuOpenChange","open","fontSizeMenuOpen","onFontSizeMenuOpenChange","notificationsSubject","quickMenuBottomBarBoundingBoxSignal","ResizeObserverEntry","fontSizeMin","fontSizeMax","_quickMenuOpen","_onQuickMenuOpenChange","selectedHighlight","highlight","selection","Selection","itemIndex","PublicContextType","reader","enableFloatingTime","enableFloatingProgress","onItemClick","item","quickMenuOpen","onQuickMenuOpenChange","fontSize","zoomMaxScale","onFontSizeChange","from","value","fontSizeScope","onFontSizeScopeChange","scope","fontSizeValues","Record","annotations","onAnnotationCreate","annotation","onAnnotationUpdate","Pick","onAnnotationDelete","id","ReaderContextType","getDefaultValue","prev","undefined","default","ReaderContext","isShallowEqual","pick","watchKeys","useContext","useObserve","ReaderContext","ReaderContextType","useReaderContextValue","keys","$","_c","context","t0","pipe","t1","value","t2","compareFn","defaultValue","t3","Symbol","for","data","useReaderContext","Presence","PresenceProps","memo","useSignalValue","useReaderContextValue","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","t0","$","_c","children","rest","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","quickMenuBottomBarBoundingBox","bottomBarHeight","borderBoxSize","blockSize","t2","_open","_closed","t3","t4","Reader","AnnotationsEnhancerAPI","AudioEnhancerAPI","GalleryEnhancerAPI","RefitEnhancerAPI","SearchEnhancerAPI","useReaderContextValue","useReader","$","_c","t0","Symbol","for","reader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasAnnotationsEnhancer","useReader","useReaderWithAnnotations","$","_c","reader","t0","undefined","readerWithBookmarks","Button","FaEdit","LuNotebookPen","useObserve","EMPTY","map","startWith","switchMap","FloatingMenu","useReaderContext","useReaderContextValue","useReaderWithAnnotations","AnnotateControls","$","_c","reader","context","t0","Symbol","for","selectedHighlight","t1","selection","selectionOver$","pipe","selectionEnd$","_temp","t2","defaultValue","t3","data","isOpen","t4","t5","getSelection","update","state","t6","t7","t8","t9","ButtonProps","IconButton","ChakraIconButton","React","LuX","CloseButtonProps","CloseButton","forwardRef","HTMLButtonElement","props","ref","$","_c","t0","children","t1","Drawer","ChakraDrawer","Portal","CloseButton","React","DrawerContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","offset","DrawerContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","t2","t3","t4","DrawerCloseTrigger","HTMLButtonElement","CloseTriggerProps","DrawerTrigger","Trigger","DrawerRoot","Root","DrawerFooter","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","DrawerDescription","Description","DrawerTitle","Title","DrawerActionTrigger","ActionTrigger","Box","Button","Stack","Text","Textarea","ComponentProps","memo","useCallback","useEffect","useState","useSubscribe","tap","truncateText","DrawerBackdrop","DrawerBody","DrawerContent","DrawerHeader","DrawerRoot","useReaderContext","useReaderContextValue","useReaderWithAnnotations","HIGHLIGHT_COLORS","const","AnnotationDrawer","$","_c","reader","t0","Symbol","for","selectedHighlight","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","context","highlight","selection","selectedColor","setSelectedColor","contents","setContents","isOpen","t1","update","_temp","onClose","t2","event","open","onOpenChange","highlightColor","highlightContent","notes","t3","t4","t5","annotations","highlightTap$","openDrawerOnTap","pipe","t6","highlight_0","state_0","state","onOpenDrawerOnTap","T0","t7","T1","T2","t8","t9","toString","t10","t11","map","color","border","t12","t13","t14","event_0","target","value","t15","t16","t17","annotation","createAnnotation","t18","id","t19","t20","t21","undefined","Dialog","ChakraDialog","Portal","React","CloseButton","DialogContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","backdrop","DialogContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","undefined","t2","t3","t4","t5","DialogCloseTrigger","HTMLButtonElement","CloseTriggerProps","DialogRoot","Root","DialogFooter","Footer","DialogHeader","Header","DialogBody","Body","DialogBackdrop","Backdrop","DialogTitle","Title","DialogDescription","Description","DialogTrigger","Trigger","DialogActionTrigger","ActionTrigger","isDefined","useObserve","filter","map","switchMap","hasAnnotationsEnhancer","useReader","useAnnotation","id","$","_c","reader","t0","undefined","readerWithAnnotations","t1","annotations","annotations$","pipe","items","find","item","item_0","locateResource","t2","Link","List","Stack","Text","LuNotebookPen","useReader","useAnnotation","AnnotationListItem","t0","$","_c","id","onNavigate","allowLeftIcon","t1","undefined","reader","data","annotation","t2","meta","node","textContent","range","toString","t3","navigation","goToCfi","cfi","t4","resource","notes","t5","absolutePageIndex","t6","t7","t8","t9","useObserve","switchMap","hasAnnotationsEnhancer","useReader","useAnnotations","$","_c","reader","t0","undefined","readerWithAnnotations","t1","t2","annotations","annotations$","pipe","highlights","locateResource","useAnnotations","useHighlights","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","List","AnnotationListItem","useHighlights","AnnotationsList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","useAnnotations","useBookmarks","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","resource","notes","List","AnnotationListItem","useBookmarks","BookmarksList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","Tabs","memo","useState","LuBookmark","LuNotebookPen","AnnotationsList","BookmarksList","AnnotationsDialogContent","t0","$","_c","onNavigate","defaultTab","tab","setTab","t1","Symbol","for","e","value","t2","t3","t4","t5","t6","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","AnnotationsDialogContent","AnnotationsDialog","t0","$","_c","openWith","setOpen","onNavigate","t1","t2","e","open","t3","Symbol","for","mdDown","md","t4","t5","t6","t7","t8","t9","useObserve","EMPTY","map","of","useReader","useSpineItem","t0","$","_c","absolutePageIndex","itemIndex","reader","t1","t2","undefined","spine","spineItemsManager","get","pages","observeFromAbsolutePageIndex","pipe","page","useObserve","NEVER","useSpineItem","useSpineItemReady","t0","$","_c","absolutePageIndex","itemIndex","t1","data","spineItem","t2","t3","isReady$","isReady","t4","Box","Presence","memo","useSpineItemReady","BOOKMARK_AREA_DATA_ATTRIBUTE","useAnnotations","BookmarkPageMarker","t0","$","_c","absolutePageIndex","left","top","width","t1","isReady","isItemReady","data","bookmarks","t2","find","bookmark","meta","isCfiRange","bookmarkForPage","markerSize","t3","t4","Symbol","for","_open","_closed","t5","t6","t7","t8","content","position","height","borderTop","borderLeft","t9","t10","memo","useObserve","useReader","BookmarkPageMarker","BookmarkPageMarkers","$","_c","reader","t0","layoutInfo$","t1","data","pages","t2","map","_temp","t3","pageIndex","absoluteLayout","left","top","width","useEffect","map","withLatestFrom","useReaderContext","useAnnotations","useReaderWithAnnotations","CONTINUE_TAP_GESTURE","BOOKMARK_CORNER_SIZE_PERCENT","isTopRightCornerPosition","position","containerSize","sizePercent","x","y","width","height","actualSize","Math","min","useBookmarkOnCornerTap","$","_c","reader","data","bookmarks","readerContext","t0","t1","unSub","gestures","hooks","register","t2","event$","pipe","annotations","candidates$","t3","context","candidates","page","spineItem","spineItemPageIndex","spineItemPagePosition","pageSize","hasTapOnTopRightCorner","pageEntry","spine","pages","fromSpineItemPageIndex","bookmarkForPage","find","bookmark","meta","absolutePageIndex","range","undefined","value","onAnnotationDelete","resource","id","canBookmarkPage","annotation","createAnnotation","onAnnotationCreate","useCallback","useSubscribe","map","withLatestFrom","useReaderWithAnnotations","usePreventInteractionOnSelection","$","_c","reader","t0","gestures","hooks","register","t1","event$","pipe","selection","lastSelectionOnPointerdown$","t2","t3","lastSelectionOnPointerdown","event","target","wasOrIsOnSelection","annotations","isTargetWithinHighlight","beforeTapGesture","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","useReaderContext","useReaderWithAnnotations","useSyncAnnotationsWithReader","$","_c","reader","context","t0","selectedHighlight$","pipe","_temp","annotations$","_temp2","annotationsWithSelected$","_temp3","annotations","update","syncAnnotationsWithReader","context_0","selectedHighlight","highlight","id","context_1","annotation","selected","AudioEnhancedReader","hasAudioEnhancer","useReader","useAudioReader","$","_c","reader","t0","undefined","AudioVisualizerState","useObserve","useAudioReader","useAudioVisualizer","t0","$","_c","enabled","undefined","audioReader","t1","audio","visualizer$","t2","data","visualizer","useObserve","distinctUntilChanged","map","useAudioReader","useIsCurrentAudioTrack","t0","$","_c","enabled","t1","trackId","undefined","audioReader","t2","audio","state$","pipe","state","currentTrack","id","t3","data","t4","isCurrentTrack","AudioVisualizerState","FALLBACK_TOP_COLOR","FALLBACK_BOTTOM_COLOR","MIN_BAR_HEIGHT","MAX_BAR_HEIGHT_RATIO","IDLE_LEVEL","EDGE_FADE_PORTION","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","DEFAULT_STATE_TEXTURE_AMOUNT","DEFAULT_VISUALIZER_STATE","levels","isActive","trackId","undefined","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_TEXTURE_AMOUNT","IDLE_LEVEL","clamp","value","min","max","Math","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","length","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","slice","centerBar","outerBars","reverse","resolveGradientColors","element","HTMLElement","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","AudioVisualizerState","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","EDGE_FADE_PORTION","MAX_BAR_HEIGHT_RATIO","MIN_BAR_HEIGHT","clamp","getDefaultDisplayBars","getMirroredDisplayBars","hasMeaningfulLevels","smoothstep","WaveSize","width","height","DrawWaveArgs","canvas","HTMLCanvasElement","size","visualizer","displayBarCount","displayedBars","fillStyle","CanvasGradient","drawWave","context","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","length","Array","from","easedBars","map","value","index","targetValue","easing","gap","Math","round","max","barWidth","floor","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","progress","centerDistance","abs","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","min","x","y","edgeFade","globalAlpha","beginPath","roundRect","fill","Box","useBreakpointValue","setPropertyIfChanged","setStylePropertyIfChanged","AudioVisualizerState","useCallback","useEffect","useRef","FALLBACK_BOTTOM_COLOR","FALLBACK_TOP_COLOR","drawWave","drawWaveFrame","getNormalizedDisplayBarCount","resolveGradientColors","DEFAULT_VISUALIZER","levels","isActive","trackId","undefined","AudioWaveCanvas","t0","$","_c","visualizer","t1","base","md","lg","xl","t2","displayBarCount","canvasRef","containerRef","frameRef","visualizerRef","t3","Symbol","for","displayedBarsRef","fillStyleRef","t4","width","height","sizeRef","t5","canvas","current","context","getContext","topColor","bottomColor","topVariable","topFallback","bottomVariable","bottomFallback","gradient","createLinearGradient","addColorStop","refreshFillStyle","t6","canvas_0","visualizer_0","size","displayedBars","fillStyle","t7","cancelAnimationFrame","stopAnimation","t8","tick","visualizer_1","requestAnimationFrame","startAnimation","t9","canvas_1","container","nextWidth","Math","max","clientWidth","nextHeight","clientHeight","pixelRatio","window","devicePixelRatio","nextCanvasWidth","round","nextCanvasHeight","style","context_0","setTransform","resizeCanvas","t10","t11","t12","t13","container_0","resizeObserver","ResizeObserver","observe","disconnect","t14","WebkitMaskImage","maskImage","SpineItem","CoreSpineItem","createPortal","useObserve","useAudioReader","useAudioVisualizer","useIsCurrentAudioTrack","AudioWaveCanvas","AudioSpineItem","t0","$","_c","item","audioReader","t1","audio","renderer","isAudioRenderer","audioRenderer","undefined","t2","watch","t3","data","audioDocumentContainer","t4","t5","id","enabled","trackId","isCurrentTrack","visualizer","t6","t7","t8","SpineItem","CoreSpineItem","memo","createPortal","AudioSpineItem","t0","$","_c","item","container","containerElement","t1","t2","t3","memo","createPortal","useObserve","useReader","SpineItem","Spine","t0","$","_c","children","reader","t1","spine","element$","t2","data","spineElement","t3","spineItemsManager","items$","t4","spineItems","t5","map","_temp","t6","t7","t8","item","index","c","_c","Toaster","ChakraToaster","Portal","Spinner","Stack","Toast","createToaster","ReturnType","toaster","placement","pauseOnPageIdle","$","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","action","label","meta","closable","isShallowEqual","ComponentProps","memo","useCallback","useEffect","signal","useConstant","useMemoCompare","useSignalValue","getDefaultValue","PrivateContextType","PublicContextType","ReaderContext","SignalProvider","t0","$","_c","children","props","valueSignal","_temp","t1","value","fontSizeMenuOpen","default","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","t2","open","update","uncontrolledOnFontSizeMenuOpenChange","t3","valueOrUpdater","old","_quickMenuOpen","_onQuickMenuOpenChange","t4","refitMenuOpen","uncontrolledRefitMenuOpen","t5","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","t6","t7","old_0","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t8","ReactReaderProvider","RadioGroup","ChakraRadioGroup","React","RadioProps","ItemProps","rootRef","Ref","HTMLDivElement","inputProps","InputHTMLAttributes","HTMLInputElement","Radio","forwardRef","props","ref","$","_c","children","rest","t0","t1","Symbol","for","t2","t3","Root","Slider","ChakraSlider","For","HStack","React","SliderProps","RootProps","marks","Array","value","label","ReactNode","showValue","memo","t0","$","_c","ref","rest","t1","t2","props","marksProp","t3","t4","t5","defaultValue","map","_temp","some","_temp2","hasMarkLabel","undefined","Symbol","for","t6","t7","t8","t9","SliderThumbs","_temp3","_","index","SliderMarksProps","SliderMarks","forwardRef","HTMLDivElement","length","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","value","references","const","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","Button","Fieldset","HStack","SliderValueChangeDetails","Stack","Tabs","TabsValueChangeDetails","ComponentProps","memo","useCallback","useEffect","useState","LuCheck","useLiveRef","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Radio","RadioGroup","Slider","useReaderContext","useReaderContextValue","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","SETTINGS_SCOPES_VALUES","map","item","value","SETTINGS_SCOPES_REFERENCES","flatMap","references","getScopeForReference","reference","undefined","find","includes","FontSizeControlsDialog","$","_c","context","t0","Symbol","for","fontSizeMenuOpen","onFontSizeMenuOpenChange","uncontrolledFontSize","fontSize","t1","fontSizeMin","fontSizeMax","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","tabValue","setTabValue","t2","scope","current","update","old","onFontUpdate","t3","scope_0","getValueForScope","t4","details","value_0","onScopeValueChange","t5","details_0","onTabValueChange","t6","details_1","value_1","onSliderValueChange","t7","t8","syncScopeChangeWithTabs","t9","e","open","t10","t11","t12","t13","t14","t15","_temp","t16","t17","scope_2","t18","t19","scope_3","label","t20","t21","t22","t23","t24","t25","scope_1","useCallback","useEffect","useSubscribe","map","useReader","useReaderContext","useReaderContextValue","SyncFontSettings","$","_c","reader","context","t0","Symbol","for","fontSize","uncontrolledFontSize","_fontSize","t1","t2","syncDownFontSize","timeout","setTimeout","settings","update","fontScale","clearTimeout","t3","values$","syncUpFontSize","pipe","_temp","subscribe","_fontSize_0","value","onFontSizeChange","old","useLayoutEffect","useMemo","useState","UseMeasureRect","Pick","DOMRectReadOnly","UseMeasureRef","Element","element","E","UseMeasureResult","defaultState","x","y","width","height","top","left","bottom","right","useMeasure","$","_c","setElement","rect","setRect","t0","Symbol","for","ResizeObserver","entries","contentRect","observer","t1","t2","observe","disconnect","t3","isShallowEqual","observeIntersection","SpineItem","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","NEVER","startWith","switchMap","throttleTime","UseMeasureRect","hasGalleryEnhancer","useReader","useAttachSnapshot","element","item","measures","$","_c","reader","t0","undefined","readerWithGalleryEnhancer","t1","itemLayoutChanged$","didLayout$","pipe","layoutInfo","trailing","isItemIntersecting$","HTMLElement","_temp2","t2","isVisible","innerHTML","gallery","snapshot","attachSnapshot","_temp","e","isIntersecting","entries","some","Box","Button","Text","SpineItem","memo","useObserve","useMeasure","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","useReader","useAttachSnapshot","GalleryItem","t0","$","_c","item","onNavigated","setElement","measures","element","reader","t1","t2","locateResource","mode","data","locatedResource","t3","navigation","goToSpineItem","indexOrId","t4","t5","Symbol","for","t6","meta","absolutePageIndex","t7","t8","GalleryDialog","open","setOpen","spineItemsManager","items$","items","e","mdDown","md","map","id","t9","t10","t11","t12","t13","Button","Heading","HStack","Kbd","Stack","Text","memo","LuArrowBigLeft","LuArrowBigRight","name","version","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","HelpDialog","t0","$","_c","open","setOpen","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","Reader","useObserve","combineLatest","map","NEVER","useReader","usePagination","$","_c","reader","t0","t1","pagination","state$","context","pipe","_temp2","data","_temp","item","mediaType","startsWith","state","isOnlyImages","manifest","spineItems","every","hasChapters","isFullyPrePaginated","Box","Presence","Text","useReaderContextValue","usePagination","ANIMATION_NAME_IN_OUT","_open","_closed","FloatingProgress","$","_c","t0","Symbol","for","enableFloatingProgress","quickMenuOpen","pagination","roundedProgress","Math","floor","percentageEstimateOfBook","displayableProgress","undefined","t1","t2","t3","Text","TextProps","useEffect","useState","useTime","$","_c","t0","Symbol","for","Date","time","setTime","t1","t2","interval","setInterval","clearInterval","TimeIndicator","props","toLocaleTimeString","navigator","language","hour","minute","Box","memo","TimeIndicator","FloatingTime","$","_c","t0","Symbol","for","useEffect","useState","useTransientValue","value","durationMs","$","_c","transientValue","setTransientValue","t0","t1","undefined","timeoutId","window","setTimeout","currentValue","Object","is","clearTimeout","Box","Presence","ExtraPaginationInfo","PaginationInfo","shouldUseComputedSpreadModeForViewport","watchKeys","Manifest","memo","MdScreenRotation","useObserve","combineLatest","debounceTime","distinctUntilChanged","map","NEVER","Observable","of","shareReplay","switchMap","useTransientValue","useReader","styles","HINT_TARGET_DEBOUNCE_MS","HINT_VISIBLE_MS","ANIMATION_NAME_IN_OUT","_open","_closed","_motionReduce","ANIMATION_DURATION_IN_OUT","base","ViewportDimensions","height","width","ViewportState","HintPagination","Pick","ReaderWithSpreadHintStreams","NonNullable","ReturnType","wouldRotationUseComputedSpreadMode","manifest","viewport","getSpreadRotationHintTargetKey","pagination","computedSpreadMode","viewportState","undefined","hasSpreadPair","beginHasAdjacentSpreadPage","endHasAdjacentSpreadPage","beginSpineItemIndex","beginPageIndexInSpineItem","endSpineItemIndex","endPageIndexInSpineItem","value","join","observeHintPagination","reader","state$","pipe","bufferSize","refCount","observeBeginSpineItemReady","pagination$","spineItemsManager","items$","spineItems","spineItem","isReady$","observeSpreadRotationHintTargetKey","beginSpineItemReady$","context","manifest$","settings","watch","viewportState$","isReady","useSpreadRotationHintTargetKey","$","_c","t0","t1","data","SpreadRotationHint","hintTargetKey","visibleHintKey","Symbol","for","pulse","t2","t3","isHtmlTagElement","useCallback","useSubscribe","useReader","useInterceptExternalLinks","$","_c","reader","t0","links$","subscribe","_temp","interceptExternalLinks","event","type","target","href","url","URL","window","location","host","response","confirm","open","NOTIFICATION_KEYS","fontScaleChange","useFontSizeNotifications","useCallback","isDefined","useSubscribe","filter","finalize","first","merge","mergeMap","NEVER","Observable","skip","switchMap","timer","toaster","useReaderContextValue","useFontSizeNotifications","useNotifications","$","_c","t0","Symbol","for","notificationsSubject","t1","pipe","notification","duration","toast$","subscriber","queueMicrotask","toastId","create","title","description","next","complete","t2","error","sameNotification$","n","key","toast","abort","dismiss","notifications","RcSlider","ComponentProps","memo","Box","chakra","ChakraRcSlider","ThemedSlider","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","padding","boxShadow","backgroundColor","opacity","borderColor","height","top","transform","t5","reverse","t6","rail","track","handle","width","marginTop","t7","AudioEnhancerState","useObserve","useAudioReader","useAudioState","$","_c","audioReader","t0","audio","state$","t1","data","audioState","HStack","IconButton","Stack","Text","ComponentProps","useCallback","useState","LuPause","LuPlay","useConstant","useSubscribe","BehaviorSubject","map","tap","ThemedSlider","useAudioReader","useAudioState","formatPlaybackTime","value","Number","isFinite","roundedValue","Math","floor","hours","minutes","seconds","part","String","padStart","join","AudioControlsSection","props","$","_c","audioReader","audioState","hasPlayableTrack","currentTrack","tracks","length","duration","displayDuration","max","knownDuration","undefined","hasKnownDuration","sliderMax","currentTime","min","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","_temp","t0","audio","state$","pipe","_temp2","currentTime_0","next","syncDownCurrentTime","t1","isPlaying","t2","toggle","t3","t4","t5","t6","nextValue","Array","isArray","t7","value_0","nextValue_0","setCurrentTime","t8","t9","t10","t11","t12","t13","t14","t15","state","useObserve","distinctUntilChanged","map","useAudioReader","useHasVisibleAudioTracks","$","_c","audioReader","t0","audio","visibleTrackIds$","pipe","_temp","t1","data","t2","hasVisibleAudioTracks","undefined","trackIds","length","Popover","ChakraPopover","IconButton","Portal","React","HiOutlineInformationCircle","ToggleTipProps","RootProps","showArrow","portalled","portalRef","RefObject","HTMLElement","content","ReactNode","ToggleTip","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","positioning","gutter","t2","t3","t4","t5","t6","t7","InfoTip","Partial","Symbol","for","Progress","ChakraProgress","InfoTip","React","ProgressBar","forwardRef","HTMLDivElement","TrackProps","props","ref","$","_c","t0","Symbol","for","t1","ProgressLabelProps","LabelProps","info","ReactNode","ProgressLabel","children","rest","ProgressRoot","Root","ProgressValueText","ValueText","usePagination","useNavigationContext","pagination","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","hasChapters","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","HStack","Stack","Text","ProgressBar","ProgressRoot","ProgressValueText","useNavigationContext","usePagination","PaginationInfoSection","$","_c","pagination","hasOnlyOnePage","leftPageIndex","rightPageIndex","totalApproximatePages","beginAndEndAreDifferent","t0","percentageEstimateOfBook","Math","round","progress","t1","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","title","chapterTitle","t2","Symbol","for","t3","t4","t5","t6","t7","t8","beginAbsolutePageIndex","hasChapters","t9","Presence","PresenceProps","memo","QuickBar","t0","$","_c","children","position","rest","t1","t2","bottom","top","_open","_closed","t3","Box","ComponentProps","useCallback","useEffect","signal","useObserve","useSignalState","useSubscribe","useReader","useNavigationContext","usePagination","ThemedSlider","useSliderValues","$","_c","pagination","isUsingSpread","beginPageIndex","currentRealPage","totalApproximatePages","t0","undefined","currentPage","Math","floor","t1","default","value","valueSignal","max","t2","t3","update","t4","min","Scrubber","props","reader","data","context","manifest","reverse","readingDirection","isBeginWithinChapter","isScrubberWithinChapter","values","Array","isArray","value_0","pageIndex","navigation","goToAbsolutePageIndex","absolutePageIndex","animation","goToPageOfSpineItem","spineItemId","state","beginSpineItemIndex","onChange","subject","throttleLock","duration","trigger","disabled","t5","style","t6","step","Box","Collapsible","HStack","IconButton","Stack","memo","useEffect","useRef","useState","BiFontSize","BsBookmarks","LuChevronDown","LuCircleHelp","LuGalleryHorizontal","LuNotebookPen","LuSearch","LuTableOfContents","LuZoomIn","LuZoomOut","MdOutlineFitScreen","RiGalleryView2","RxDoubleArrowDown","RxDoubleArrowLeft","RxDoubleArrowRight","RxDoubleArrowUp","useObserve","map","AudioControlsSection","useHasVisibleAudioTracks","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasSearchEnhancer","useReader","useReaderContextValue","PaginationInfoSection","QuickBar","Scrubber","BottomBar","t0","$","_c","open","onItemClick","boxRef","reader","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t2","navigation","state$","t3","data","t4","settings","values$","t5","t6","zoom","pipe","_temp","t7","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","t8","t9","current","resizeObserver","ResizeObserver","entries","entry","update","observe","disconnect","t10","t11","goToLeftOrTopSpineItem","t12","canGoLeftSpineItem","canGoTopSpineItem","t13","t14","t15","t16","width","maxWidth","height","t17","canGoRightSpineItem","canGoBottomSpineItem","t18","goToRightOrBottomSpineItem","t19","t20","t21","t22","t23","open_0","t24","transform","t25","t26","t27","t28","t29","t30","t31","t32","t33","exit","animate","enter","scale","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","state","currentScale","undefined","useCallback","useEffect","useState","screenfull","readFullscreenSupport","isEnabled","readFullscreenState","isFullscreen","useFullscreen","setIsFullscreen","isFullscreenSupported","setIsFullscreenSupported","syncFullscreenState","current","next","onToggleFullscreenClick","exit","request","document","documentElement","navigationUI","error","console","on","off","HStack","IconButton","Stack","Text","memo","IoIosArrowBack","IoMdMore","MdFullscreen","MdFullscreenExit","useObserve","useFullscreen","useReader","QuickBar","TopBar","t0","$","_c","open","onItemClick","reader","t1","context","manifest$","t2","data","manifest","isFullscreen","isFullscreenSupported","onToggleFullscreenClick","t3","t4","Symbol","for","t5","t6","title","t7","t8","t9","t10","t11","t12","t13","useReaderContextValue","useQuickMenu","$","_c","t0","Symbol","for","quickMenuOpen","onQuickMenuOpenChange","_quickMenuOpen","_onQuickMenuOpenChange","t1","t2","t3","const","memo","useReaderContextValue","BottomBar","TopBar","useQuickMenu","QuickMenu","t0","$","_c","onItemClick","quickMenuOpen","t1","Symbol","for","refitMenuOpen","fontSizeMenuOpen","selectedHighlight","t2","t3","t4","t5","t6","useCallback","useSubscribe","filter","tap","withLatestFrom","useReader","useQuickMenu","useQuickMenuToggleGesture","$","_c","onQuickMenuOpenChange","reader","t0","gestures","gestures$","pipe","_temp","selection","selection$","lastSelectionOnPointerdown$","t1","selectionOnPointerdown","_temp2","quickMenuToggleGesture","event","type","handled","val","Field","ChakraField","React","FieldProps","Omit","RootProps","label","ReactNode","helperText","errorText","optionalText","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","t2","t3","Button","Fieldset","Stack","RefitEnhancerOptions","memo","useObserve","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Field","Radio","RadioGroup","Slider","hasRefitEnhancer","useReader","useReaderContextValue","OptionValue","RefitDialog","$","_c","t0","Symbol","for","refitMenuOpen","onRefitMenuOpenChange","reader","t1","undefined","readerWithRefit","t2","refit","settings$","t3","data","refitSettings","t4","e","open","t5","t6","t7","e_0","value","update","viewportFit","customWidth","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","e_1","value_0","t18","t19","t20","t21","t22","t23","Link","Text","memo","SearchListItem","t0","$","_c","contextText","t1","startOffset","t2","text","cfi","t3","onClick","absolutePageIndex","undefined","t4","substring","Math","max","before","t5","length","min","after","t6","Symbol","for","margin","overflow","t7","e","preventDefault","t8","display","t9","t10","t11","textDecoration","t12","t13","t14","useConstant","useObserve","BehaviorSubject","distinctUntilChanged","map","merge","of","switchMap","timer","hasSearchEnhancer","useReader","DEBOUNCE_TIME","useSearch","$","_c","searchSubject","_temp","data","searchValue","reader","t0","undefined","readerWithSearch","t1","t2","pipe","value","type","const","search","_temp2","t3","next","bind","t4","t5","t6","setValue","status","Input","Stack","Text","React","memo","useCallback","useObserve","useReader","SearchListItem","useSearch","SearchDialogContent","t0","$","_c","onNavigate","reader","value","searchValue","setValue","status","data","t1","e","target","onValueChange","t2","navigation","cfi","goToCfi","onClick","t3","locateResource","slice","t4","consolidatedResults","t5","t6","Symbol","for","overflow","overflowY","t7","t8","length","t9","map","result","j","meta","range","startContainer","parentElement","textContent","itemPageIndex","startOffset","absolutePageIndex","t10","t11","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","SearchDialogContent","SearchDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","Link","List","Stack","Text","React","memo","LuCircleCheck","useObserve","useReader","usePagination","TableOfContentsDialogContent","t0","$","_c","onNavigate","reader","data","t1","context","manifest","undefined","nav","pagination","toc","absolutePageIndex","beginAbsolutePageIndex","currentSubChapter","beginChapterInfo","subChapter","buildTocForItem","tocItem","index","lvl","display","alignItems","navigation","goToUrl","href","path","title","contents","length","map","tocItem_0","index_0","t2","t3","t4","t5","t6","t7","tocItem_1","index_1","t8","Root","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","TableOfContentsDialogContent","TableOfContentsDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","useEffect","MAX_ZOOM_SCALE","useReader","useReaderContextValue","useZoomSettings","$","_c","reader","t0","Symbol","for","zoomMaxScale","t1","gestures","settings","syncSettingsWithGesturesEnhancer","update","t2","memo","useObserve","animationFrameScheduler","map","throttleTime","FloatingMenu","Slider","MAX_ZOOM_SCALE","useReader","useReaderContextValue","STEP","MIN","normalizeZoomValue","value","min","max","step","clamped","Math","stepped","round","ZoomControls","$","_c","t0","Symbol","for","zoomMaxScale","t1","undefined","reader","t2","zoom","state$","pipe","_temp","leading","trailing","t3","data","t4","zoomScaleValue","t5","_temp2","t6","t7","isZooming","t8","normalizedZoomScaleValue","t9","t10","t11","e","exit","scaleAt","constrain","t12","t13","state","currentScale","state_0","Box","BoxProps","Presence","ComponentProps","memo","useCallback","useState","AnnotateControls","AnnotationDrawer","AnnotationsDialog","BookmarkPageMarkers","useBookmarkOnCornerTap","usePreventInteractionOnSelection","useSyncAnnotationsWithReader","Spine","Toaster","ReactReaderProvider","useReaderContextValue","FontSizeControlsDialog","SyncFontSettings","GalleryDialog","HelpDialog","FloatingProgress","FloatingTime","SpreadRotationHint","useInterceptExternalLinks","useNotifications","QuickMenu","useQuickMenu","useQuickMenuToggleGesture","RefitDialog","SearchDialog","TableOfContentsDialog","useZoomSettings","ZoomControls","ANIMATION_NAME_IN_OUT","_open","_closed","BookmarksEffects","Effects","$","_c","t0","Symbol","for","InnerReactReader","children","rest","t1","enableFloatingTime","onItemClick","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","undefined","isGalleryOpen","setIsGalleryOpen","quickMenuOpen","setQuickMenuOpen","t2","onNavigate","t3","item","_onItemClick","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","open","t19","t20","t21","t22","t23","t24","ReactReader","props","slots","container","containerProps"],"sources":["../src/constants.ts","../src/context/context.ts","../src/context/useReaderContext.ts","../src/common/FloatingMenu.tsx","../src/context/useReader.ts","../src/annotations/useReaderWithAnnotations.ts","../src/annotations/AnnotateControls.tsx","../src/common/utils.ts","../src/components/ui/close-button.tsx","../src/components/ui/drawer.tsx","../src/annotations/AnnotationDrawer.tsx","../src/components/ui/dialog.tsx","../src/annotations/useAnnotation.ts","../src/annotations/AnnotationListItem.tsx","../src/annotations/useAnnotations.ts","../src/annotations/useHighlights.ts","../src/annotations/AnnotationsList.tsx","../src/annotations/bookmarks/useBookmarks.ts","../src/annotations/bookmarks/BookmarksList.tsx","../src/annotations/AnnotationsDialogContent.tsx","../src/annotations/AnnotationsDialog.tsx","../src/common/useSpineItem.ts","../src/common/useSpineItemReady.ts","../src/annotations/bookmarks/BookmarkPageMarker.tsx","../src/annotations/bookmarks/BookmarkPageMarkers.tsx","../src/annotations/bookmarks/useBookmarkOnCornerTap.ts","../src/annotations/usePreventInteractionOnSelection.ts","../src/annotations/useSyncAnnotationsWithReader.ts","../src/audio/useAudioReader.ts","../src/audio/useAudioVisualizer.ts","../src/audio/useIsCurrentAudioTrack.ts","../src/audio/wave/constants.ts","../src/audio/wave/shaping.ts","../src/audio/wave/drawWave.ts","../src/audio/wave/AudioWaveCanvas.tsx","../src/audio/AudioSpineItem.tsx","../src/common/SpineItem.tsx","../src/common/Spine.tsx","../src/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../package.json","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/common/useTransientValue.ts","../src/navigation/SpreadRotationHint.module.css","../src/navigation/SpreadRotationHint.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/fonts/useFontSizeNotifications.ts","../src/notifications/useNotifications.ts","../src/quickmenu/ThemedSlider.tsx","../src/audio/useAudioState.ts","../src/audio/AudioControlsSection.tsx","../src/audio/useHasVisibleAudioTracks.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/Scrubber.tsx","../src/quickmenu/BottomBar.tsx","../src/common/useFullscreen.ts","../src/quickmenu/TopBar.tsx","../src/quickmenu/useQuickMenu.ts","../src/quickmenu/QuickMenu.tsx","../src/quickmenu/useQuickMenuToggleGesture.ts","../src/components/ui/field.tsx","../src/refit/RefitDialog.tsx","../src/search/SearchListItem.tsx","../src/search/useSearch.ts","../src/search/SearchDialogContent.tsx","../src/search/SearchDialog.tsx","../src/toc/TableOfContentsDialogContent.tsx","../src/toc/TableOfContentsDialog.tsx","../src/zoom/useZoomSettings.ts","../src/zoom/ZoomControls.tsx","../src/ReactReader.tsx"],"sourcesContent":["export const BOOKMARK_AREA_DATA_ATTRIBUTE = `data-bookmark-area`\nexport const MAX_ZOOM_SCALE = 5\n","import type { Reader } from \"@prose-reader/core\"\nimport type {\n Annotation,\n RuntimeAnnotation,\n} from \"@prose-reader/enhancer-annotations\"\nimport type { EnhancerAPI as GesturesEnhancerAPI } from \"@prose-reader/enhancer-gestures\"\nimport { createContext, type Dispatch, type SetStateAction } from \"react\"\nimport { type Signal, signal } from \"reactjrx\"\nimport { Subject } from \"rxjs\"\nimport type { ReaderNotification } from \"../notifications/types\"\nimport type {\n PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nexport type PrivateContextType = {\n /**\n * Internal fallback values used for uncontrolled settings. This way the\n * Reader works as intended but:\n * - there are no persistent settings\n * - the settings are valid only for the current mount runtime\n */\n uncontrolledFontSize: number\n refitMenuOpen: boolean\n onRefitMenuOpenChange: (open: boolean) => void\n fontSizeMenuOpen: boolean\n onFontSizeMenuOpenChange: (open: boolean) => void\n notificationsSubject: Subject<ReaderNotification>\n quickMenuBottomBarBoundingBoxSignal: Signal<ResizeObserverEntry | undefined>\n fontSizeMin: number\n fontSizeMax: number\n _quickMenuOpen: boolean\n _onQuickMenuOpenChange: Dispatch<SetStateAction<boolean>>\n selectedHighlight:\n | {\n highlight?: RuntimeAnnotation\n selection?: {\n selection: Selection\n itemIndex: number\n }\n }\n | undefined\n}\n\nexport type PublicContextType = {\n reader: (Reader & GesturesEnhancerAPI) | undefined\n enableFloatingTime?: boolean\n enableFloatingProgress?: boolean\n onItemClick?: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n quickMenuOpen?: boolean\n onQuickMenuOpenChange?: Dispatch<SetStateAction<boolean>>\n fontSize?: number\n zoomMaxScale?: number\n onFontSizeChange?: (\n from: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | \"internal\",\n value: number,\n ) => void\n fontSizeScope?: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE\n onFontSizeScopeChange?: (scope: PROSE_REACT_READER_SETTINGS_SCOPE) => void\n fontSizeValues?: Record<\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n number | undefined\n >\n annotations?: Annotation[]\n onAnnotationCreate?: (annotation: Annotation) => void\n onAnnotationUpdate?: (\n annotation: Pick<Annotation, \"id\" | \"highlightColor\" | \"notes\">,\n ) => void\n onAnnotationDelete?: (id: string) => void\n}\n\nexport type ReaderContextType = PrivateContextType & PublicContextType\n\nexport const getDefaultValue = (): ReaderContextType => ({\n _quickMenuOpen: false,\n _onQuickMenuOpenChange: (prev) => prev,\n reader: undefined,\n quickMenuBottomBarBoundingBoxSignal: signal<ResizeObserverEntry | undefined>({\n default: undefined,\n }),\n notificationsSubject: new Subject<ReaderNotification>(),\n refitMenuOpen: false,\n onRefitMenuOpenChange: () => {},\n fontSizeMenuOpen: false,\n onFontSizeMenuOpenChange: () => {},\n fontSizeMin: 0.2,\n fontSizeMax: 5,\n uncontrolledFontSize: 1,\n enableFloatingProgress: true,\n selectedHighlight: undefined,\n})\n\nexport const ReaderContext = createContext(\n signal({ default: getDefaultValue() }),\n)\n","import { isShallowEqual, pick, watchKeys } from \"@prose-reader/core\"\nimport { useContext } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { ReaderContext, type ReaderContextType } from \"./context\"\n\nexport const useReaderContextValue = <T extends keyof ReaderContextType>(\n keys: T[],\n) => {\n const context = useContext(ReaderContext)\n\n return useObserve(\n () => context.pipe(watchKeys(keys)),\n {\n compareFn: isShallowEqual,\n defaultValue: pick(context.value, keys),\n },\n [],\n ).data\n}\n\nexport const useReaderContext = () => {\n return useContext(ReaderContext)\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSignalValue } from \"reactjrx\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS = 24\n\n// @todo use Popover\nexport const FloatingMenu = memo(\n ({\n children,\n ...rest\n }: {\n present: boolean\n children: React.ReactNode\n } & PresenceProps) => {\n const { quickMenuBottomBarBoundingBoxSignal } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"zoomMaxScale\",\n ])\n const quickMenuBottomBarBoundingBox = useSignalValue(\n quickMenuBottomBarBoundingBoxSignal,\n )\n const bottomBarHeight =\n quickMenuBottomBarBoundingBox?.borderBoxSize?.[0]?.blockSize ||\n SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS\n\n return (\n <Presence\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n position=\"absolute\"\n bottom={`calc(${bottomBarHeight}px + var(--chakra-spacing-4))`}\n right={4}\n backgroundColor=\"bg.panel\"\n shadow=\"sm\"\n borderRadius=\"md\"\n p={2}\n display=\"flex\"\n flexDirection=\"row\"\n gap={2}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport type { AnnotationsEnhancerAPI } from \"@prose-reader/enhancer-annotations\"\nimport type { AudioEnhancerAPI } from \"@prose-reader/enhancer-audio\"\nimport type { GalleryEnhancerAPI } from \"@prose-reader/enhancer-gallery\"\nimport type { RefitEnhancerAPI } from \"@prose-reader/enhancer-refit\"\nimport type { SearchEnhancerAPI } from \"@prose-reader/enhancer-search\"\nimport { useReaderContextValue } from \"./useReaderContext\"\n\nexport const useReader = () => {\n const { reader } = useReaderContextValue([\"reader\"])\n\n return reader\n}\n\nexport const hasSearchEnhancer = (\n reader?: Reader,\n): reader is Reader & SearchEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_SEARCH\" in reader\n}\n\nexport const hasAudioEnhancer = (\n reader?: Reader,\n): reader is Reader & AudioEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_AUDIO\" in reader\n}\n\nexport const hasAnnotationsEnhancer = (\n reader?: Reader,\n): reader is Reader & AnnotationsEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_ANNOTATIONS\" in reader\n}\n\nexport const hasGalleryEnhancer = (\n reader?: Reader,\n): reader is Reader & GalleryEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_GALLERY\" in reader\n}\n\nexport const hasRefitEnhancer = (\n reader?: Reader,\n): reader is Reader & RefitEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_REFIT\" in reader\n}\n","import { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useReaderWithAnnotations = () => {\n const reader = useReader()\n const readerWithBookmarks = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return readerWithBookmarks\n}\n","import { Button } from \"@chakra-ui/react\"\nimport { FaEdit } from \"react-icons/fa\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { EMPTY, map, startWith, switchMap } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const AnnotateControls = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n const { selectedHighlight } = useReaderContextValue([\"selectedHighlight\"])\n const { data: isOpen } = useObserve(\n () =>\n reader?.selection.selectionOver$.pipe(\n switchMap(() =>\n reader.selection.selectionEnd$.pipe(\n map(() => false),\n startWith(true),\n ),\n ),\n ) ?? EMPTY,\n { defaultValue: false },\n [reader],\n )\n\n return (\n <FloatingMenu present={isOpen && !selectedHighlight}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n const selection = reader?.selection.getSelection()\n\n if (!selection) return\n\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n selection,\n },\n }))\n }}\n >\n <FaEdit />\n Annotate\n </Button>\n <Button variant=\"outline\" size=\"sm\" disabled>\n <LuNotebookPen />\n Bookmark\n </Button>\n </FloatingMenu>\n )\n}\n","export const truncateText = (text: string, maxLength = 50): string => {\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength)}...`\n}\n","import type { ButtonProps } from \"@chakra-ui/react\"\nimport { IconButton as ChakraIconButton } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { LuX } from \"react-icons/lu\"\n\nexport type CloseButtonProps = ButtonProps\n\nexport const CloseButton = React.forwardRef<\n HTMLButtonElement,\n CloseButtonProps\n>(function CloseButton(props, ref) {\n return (\n <ChakraIconButton variant=\"ghost\" aria-label=\"Close\" ref={ref} {...props}>\n {props.children ?? <LuX />}\n </ChakraIconButton>\n )\n})\n","import { Drawer as ChakraDrawer, Portal } from \"@chakra-ui/react\"\nimport { CloseButton } from \"./close-button\"\nimport * as React from \"react\"\n\ninterface DrawerContentProps extends ChakraDrawer.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n offset?: ChakraDrawer.ContentProps[\"padding\"]\n}\n\nexport const DrawerContent = React.forwardRef<\n HTMLDivElement,\n DrawerContentProps\n>(function DrawerContent(props, ref) {\n const { children, portalled = true, portalRef, offset, ...rest } = props\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner padding={offset}>\n <ChakraDrawer.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n )\n})\n\nexport const DrawerCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n return (\n <ChakraDrawer.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref} />\n </ChakraDrawer.CloseTrigger>\n )\n})\n\nexport const DrawerTrigger = ChakraDrawer.Trigger\nexport const DrawerRoot = ChakraDrawer.Root\nexport const DrawerFooter = ChakraDrawer.Footer\nexport const DrawerHeader = ChakraDrawer.Header\nexport const DrawerBody = ChakraDrawer.Body\nexport const DrawerBackdrop = ChakraDrawer.Backdrop\nexport const DrawerDescription = ChakraDrawer.Description\nexport const DrawerTitle = ChakraDrawer.Title\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger\n","import { Box, Button, Stack, Text, Textarea } from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { tap } from \"rxjs\"\nimport { truncateText } from \"../common/utils\"\nimport {\n DrawerBackdrop,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerRoot,\n} from \"../components/ui/drawer\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nconst HIGHLIGHT_COLORS = [\n \"rgba(216, 191, 216, 1)\", // Light purple\n \"rgba(255, 225, 125, 1)\", // Soft yellow\n \"rgba(144, 238, 144, 1)\", // Light green\n \"rgba(173, 216, 230, 1)\", // Light blue\n \"rgba(255, 182, 193, 1)\", // Light pink\n] as const\n\nexport const AnnotationDrawer = memo(() => {\n const reader = useReaderWithAnnotations()\n const {\n selectedHighlight,\n onAnnotationCreate,\n onAnnotationUpdate,\n onAnnotationDelete,\n } = useReaderContextValue([\n \"selectedHighlight\",\n \"onAnnotationCreate\",\n \"onAnnotationUpdate\",\n \"onAnnotationDelete\",\n ])\n const context = useReaderContext()\n const { highlight, selection } = selectedHighlight ?? {}\n const [selectedColor, setSelectedColor] = useState<string>(\n HIGHLIGHT_COLORS[0],\n )\n const [contents, setContents] = useState<string>(\"\")\n const isOpen = !!(selection ?? highlight)\n\n const onClose = () => {\n context.update((state) => ({\n ...state,\n selectedHighlight: undefined,\n }))\n }\n\n const onOpenChange: ComponentProps<typeof DrawerRoot>[\"onOpenChange\"] = (\n event,\n ) => {\n if (!event.open) {\n onClose()\n }\n }\n\n const highlightColor = highlight?.highlightColor\n const highlightContent = highlight?.notes\n\n useEffect(() => {\n void isOpen\n\n setContents(\"\")\n }, [isOpen])\n\n useEffect(() => {\n setContents(highlightContent ?? \"\")\n }, [highlightContent])\n\n useEffect(() => {\n void isOpen\n\n if (highlightColor) {\n setSelectedColor(highlightColor)\n } else {\n setSelectedColor(HIGHLIGHT_COLORS[0])\n }\n }, [highlightColor, isOpen])\n\n const onOpenDrawerOnTap = useCallback(\n function openDrawerOnTap() {\n return reader?.annotations.highlightTap$.pipe(\n tap(({ highlight }) => {\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n highlight,\n },\n }))\n }),\n )\n },\n [reader, context],\n )\n\n useSubscribe(onOpenDrawerOnTap)\n\n return (\n <DrawerRoot placement=\"bottom\" onOpenChange={onOpenChange} open={isOpen}>\n <DrawerBackdrop />\n <DrawerContent>\n <DrawerHeader borderBottomWidth=\"1px\">\n {highlight\n ? \"Highlight\"\n : `Selection: \"${truncateText(selection?.selection?.toString() ?? \"\", 10)}\"`}\n </DrawerHeader>\n <DrawerBody gap={4} display=\"flex\" flexDirection=\"column\" pb={4}>\n <Stack>\n <Stack gap={2} flexDirection=\"row\">\n {HIGHLIGHT_COLORS.map((color) => (\n <Box\n bgColor={color}\n height={10}\n width={10}\n key={color}\n borderRadius=\"50%\"\n cursor=\"pointer\"\n {...(selectedColor === color && {\n border: \"4px solid white\",\n })}\n onClick={() => setSelectedColor(color)}\n />\n ))}\n </Stack>\n <Text>Annotation:</Text>\n <Textarea\n value={contents}\n onChange={(event) => setContents(event.target.value)}\n />\n </Stack>\n {!!selection && (\n <Button\n onClick={() => {\n onClose()\n\n const annotation = reader?.annotations.createAnnotation({\n ...selection,\n highlightColor: selectedColor,\n notes: contents,\n })\n\n if (annotation) {\n onAnnotationCreate?.(annotation)\n }\n }}\n >\n Highlight\n </Button>\n )}\n {!!highlight && (\n <Stack direction=\"row\">\n <Button\n flex={1}\n onClick={() => {\n onClose()\n\n onAnnotationUpdate?.({\n id: highlight.id,\n highlightColor: selectedColor,\n notes: contents,\n })\n }}\n >\n Update\n </Button>\n <Button\n flex={1}\n variant=\"surface\"\n onClick={() => {\n onClose()\n\n onAnnotationDelete?.(highlight.id)\n }}\n >\n Remove\n </Button>\n </Stack>\n )}\n </DrawerBody>\n </DrawerContent>\n </DrawerRoot>\n )\n})\n","import { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { CloseButton } from \"./close-button\"\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n backdrop?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(function DialogContent(props, ref) {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n )\n})\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref}>\n {props.children}\n </CloseButton>\n </ChakraDialog.CloseTrigger>\n )\n})\n\nexport const DialogRoot = ChakraDialog.Root\nexport const DialogFooter = ChakraDialog.Footer\nexport const DialogHeader = ChakraDialog.Header\nexport const DialogBody = ChakraDialog.Body\nexport const DialogBackdrop = ChakraDialog.Backdrop\nexport const DialogTitle = ChakraDialog.Title\nexport const DialogDescription = ChakraDialog.Description\nexport const DialogTrigger = ChakraDialog.Trigger\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger\n","import { isDefined, useObserve } from \"reactjrx\"\nimport { filter, map, switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotation = (id: string) => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n map((items) => items.find((item) => item.id === id)),\n filter(isDefined),\n switchMap((item) => readerWithAnnotations.locateResource(item)),\n ),\n [readerWithAnnotations],\n )\n}\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useReader } from \"../context/useReader\"\nimport { useAnnotation } from \"./useAnnotation\"\n\nexport const AnnotationListItem = ({\n id,\n onNavigate,\n allowLeftIcon = true,\n}: {\n id: string\n onNavigate: () => void\n allowLeftIcon?: boolean\n}) => {\n const reader = useReader()\n const { data: annotation } = useAnnotation(id)\n const textContent =\n annotation?.meta.range?.toString() || annotation?.meta.node?.textContent\n\n return (\n <List.Item>\n <Link\n href=\"#\"\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToCfi(annotation?.meta.cfi ?? \"\")\n }}\n >\n {annotation?.resource?.notes ? (\n <List.Indicator asChild>\n <LuNotebookPen />\n </List.Indicator>\n ) : allowLeftIcon ? (\n <List.Indicator asChild visibility=\"hidden\">\n <LuNotebookPen />\n </List.Indicator>\n ) : null}\n <Stack gap={0}>\n {textContent ? (\n <Text lineClamp={2} fontSize=\"md\">\n {textContent}\n </Text>\n ) : (\n <Text lineClamp={2} fontSize=\"md\" fontStyle=\"italic\">\n Page {(annotation?.meta.absolutePageIndex ?? 0) + 1}\n </Text>\n )}\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Book page: ${\n annotation?.meta?.absolutePageIndex !== undefined\n ? annotation.meta.absolutePageIndex + 1\n : \"unknown (not loaded)\"\n }`}</Text>\n </Stack>\n </Link>\n </List.Item>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotations = () => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n switchMap((highlights) => {\n return readerWithAnnotations.locateResource(highlights)\n }),\n ),\n [readerWithAnnotations],\n )\n}\n","import { useAnnotations } from \"./useAnnotations\"\n\nexport const useHighlights = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter((annotation) => annotation.meta.isCfiRange),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"./AnnotationListItem\"\nimport { useHighlights } from \"./useHighlights\"\n\nexport const AnnotationsList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useHighlights()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n />\n ))}\n </List.Root>\n )\n}\n","import { useAnnotations } from \"../useAnnotations\"\n\nexport const useBookmarks = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter(\n (annotation) => !annotation.meta.isCfiRange && !annotation.resource.notes,\n ),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"../AnnotationListItem\"\nimport { useBookmarks } from \"./useBookmarks\"\n\nexport const BookmarksList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useBookmarks()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n allowLeftIcon={false}\n />\n ))}\n </List.Root>\n )\n}\n","import { Tabs } from \"@chakra-ui/react\"\nimport { memo, useState } from \"react\"\nimport { LuBookmark, LuNotebookPen } from \"react-icons/lu\"\nimport { AnnotationsList } from \"./AnnotationsList\"\nimport { BookmarksList } from \"./bookmarks/BookmarksList\"\n\nexport const AnnotationsDialogContent = memo(\n ({\n onNavigate,\n defaultTab,\n }: {\n onNavigate: () => void\n defaultTab: \"bookmarks\" | \"annotations\" | undefined\n }) => {\n const [tab, setTab] = useState(defaultTab ?? \"bookmarks\")\n\n return (\n <Tabs.Root\n value={tab}\n onValueChange={(e) => setTab(e.value as \"bookmarks\" | \"annotations\")}\n >\n <Tabs.List>\n <Tabs.Trigger value=\"bookmarks\">\n <LuBookmark />\n Bookmarks\n </Tabs.Trigger>\n <Tabs.Trigger value=\"annotations\">\n <LuNotebookPen />\n Annotations\n </Tabs.Trigger>\n <Tabs.Indicator />\n </Tabs.List>\n <Tabs.Content value=\"bookmarks\">\n <BookmarksList onNavigate={onNavigate} />\n </Tabs.Content>\n <Tabs.Content value=\"annotations\">\n <AnnotationsList onNavigate={onNavigate} />\n </Tabs.Content>\n </Tabs.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { AnnotationsDialogContent } from \"./AnnotationsDialogContent\"\n\nexport const AnnotationsDialog = memo(\n ({\n openWith,\n setOpen,\n onNavigate,\n }: {\n openWith: \"bookmarks\" | \"annotations\" | undefined\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={!!openWith}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Annotations</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1}>\n <AnnotationsDialogContent\n onNavigate={onNavigate}\n defaultTab={openWith}\n />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useObserve } from \"reactjrx\"\nimport { EMPTY, map, of } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useSpineItem = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const reader = useReader()\n\n return useObserve(() => {\n if (!reader) return EMPTY\n\n if (itemIndex !== undefined)\n return of(reader.spine.spineItemsManager.get(itemIndex))\n\n if (absolutePageIndex !== undefined) {\n return reader.spine.pages\n .observeFromAbsolutePageIndex(absolutePageIndex)\n .pipe(\n map((page) => reader.spine.spineItemsManager.get(page?.itemIndex)),\n )\n }\n\n return EMPTY\n }, [itemIndex, absolutePageIndex, reader])\n}\n","import { useObserve } from \"reactjrx\"\nimport { NEVER } from \"rxjs\"\nimport { useSpineItem } from \"./useSpineItem\"\n\nexport const useSpineItemReady = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const { data: spineItem } = useSpineItem({ absolutePageIndex, itemIndex })\n const { data: isReady } = useObserve(\n () => (!spineItem ? NEVER : spineItem.isReady$),\n [spineItem],\n )\n\n return { spineItem, isReady }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSpineItemReady } from \"../../common/useSpineItemReady\"\nimport { BOOKMARK_AREA_DATA_ATTRIBUTE } from \"../../constants\"\nimport { useAnnotations } from \"../useAnnotations\"\n\nexport const BookmarkPageMarker = memo(\n ({\n absolutePageIndex,\n left,\n top,\n width,\n }: {\n absolutePageIndex: number\n left: number\n top: number\n width: number\n }) => {\n const { isReady: isItemReady } = useSpineItemReady({\n absolutePageIndex,\n })\n const { data: bookmarks } = useAnnotations()\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex === absolutePageIndex &&\n !bookmark.meta.isCfiRange,\n )\n\n /**\n * Stale bookmarks means we cannot assert at the moment whether the page is marked or not.\n * In this case we just hide the bookmark button. You may want to have different UX to handle\n * this case.\n *\n * This also avoid having a flash where you show an non bookmarked icon and right away change it with\n * a valid marked page icon.\n */\n if (!isItemReady) return null\n\n const markerSize = (width * 0.1) / 2\n\n return (\n <Presence\n present={!!bookmarkForPage}\n lazyMount\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n >\n <Box\n data-bookmark-area={BOOKMARK_AREA_DATA_ATTRIBUTE}\n position=\"absolute\"\n left={left + width}\n transform=\"translateX(-100%)\"\n pointerEvents=\"none\"\n top={top}\n width={markerSize}\n height={markerSize}\n _before={{\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n borderTop: `${markerSize}px solid #03030373`,\n borderLeft: `${markerSize}px solid transparent`,\n }}\n />\n </Presence>\n )\n },\n)\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../../context/useReader\"\nimport { BookmarkPageMarker } from \"./BookmarkPageMarker\"\n\nexport const BookmarkPageMarkers = memo(() => {\n const reader = useReader()\n const { data: pages } = useObserve(() => reader?.layoutInfo$, [reader])\n\n return (\n <>\n {pages?.pages.map(\n ({ absoluteLayout: { left, top, width } }, pageIndex) => (\n <BookmarkPageMarker\n key={pageIndex}\n absolutePageIndex={pageIndex}\n left={left}\n top={top}\n width={width}\n />\n ),\n )}\n </>\n )\n})\n","import { useEffect } from \"react\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderContext } from \"../../context/useReaderContext\"\nimport { useAnnotations } from \"../useAnnotations\"\nimport { useReaderWithAnnotations } from \"../useReaderWithAnnotations\"\n\nconst CONTINUE_TAP_GESTURE = true\nconst BOOKMARK_CORNER_SIZE_PERCENT = 10\n\nconst isTopRightCornerPosition = ({\n position,\n containerSize,\n sizePercent,\n}: {\n position: {\n x: number\n y: number\n }\n containerSize: {\n width: number\n height: number\n }\n sizePercent: number\n}) => {\n const actualSize =\n Math.min(containerSize.width, containerSize.height) * (sizePercent / 100)\n\n return (\n position.x > containerSize.width - actualSize && position.y < actualSize\n )\n}\n\nexport const useBookmarkOnCornerTap = () => {\n const reader = useReaderWithAnnotations()\n const { data: bookmarks } = useAnnotations()\n const readerContext = useReaderContext()\n\n useEffect(() => {\n if (!reader) return\n\n const unSub = reader.gestures.hooks.register(\n \"beforeTapGesture\",\n ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader?.annotations.candidates$),\n map(([context, candidates]) => {\n if (!context.page) return CONTINUE_TAP_GESTURE\n\n const {\n spineItem,\n spineItemPageIndex,\n spineItemPagePosition,\n pageSize,\n } = context.page\n\n const hasTapOnTopRightCorner = isTopRightCornerPosition({\n position: spineItemPagePosition,\n containerSize: pageSize,\n sizePercent: BOOKMARK_CORNER_SIZE_PERCENT,\n })\n\n if (hasTapOnTopRightCorner) {\n const pageEntry = reader.spine.pages.fromSpineItemPageIndex(\n spineItem,\n spineItemPageIndex,\n )\n\n if (!pageEntry) return CONTINUE_TAP_GESTURE\n\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex ===\n pageEntry.absolutePageIndex &&\n bookmark.meta.range === undefined,\n )\n\n if (bookmarkForPage) {\n readerContext.value.onAnnotationDelete?.(\n bookmarkForPage.resource.id,\n )\n\n return !CONTINUE_TAP_GESTURE\n }\n\n const canBookmarkPage = candidates?.[pageEntry.absolutePageIndex]\n\n if (canBookmarkPage) {\n const annotation = reader?.annotations.createAnnotation({\n absolutePageIndex: pageEntry.absolutePageIndex,\n })\n\n if (annotation) {\n readerContext.value.onAnnotationCreate?.(annotation)\n }\n\n return !CONTINUE_TAP_GESTURE\n }\n }\n\n return CONTINUE_TAP_GESTURE\n }),\n ),\n )\n\n return unSub\n }, [reader, bookmarks, readerContext])\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const usePreventInteractionOnSelection = () => {\n const reader = useReaderWithAnnotations()\n\n const beforeTapGesture = useCallback(\n () =>\n /**\n * Hook used to prevent some gestures from being handled.\n */\n reader?.gestures.hooks.register(\"beforeTapGesture\", ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader.selection.lastSelectionOnPointerdown$),\n map(([{ event }, lastSelectionOnPointerdown]) => {\n const target = event.event.target\n\n /**\n * In this case if we have a gesture on an annotation, we want to prevent\n * it.\n */\n const wasOrIsOnSelection =\n (target && reader.annotations.isTargetWithinHighlight(target)) ||\n lastSelectionOnPointerdown\n\n return !wasOrIsOnSelection\n }),\n ),\n ),\n [reader],\n )\n\n useSubscribe(beforeTapGesture)\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { combineLatest, distinctUntilChanged, map } from \"rxjs\"\nimport { useReaderContext } from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const useSyncAnnotationsWithReader = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n\n const syncAnnotationsWithReader = useCallback(() => {\n if (reader) {\n const selectedHighlight$ = context.pipe(\n map((context) => context.selectedHighlight?.highlight?.id),\n distinctUntilChanged(),\n )\n\n const annotations$ = context.pipe(\n map((context) => context.annotations ?? []),\n distinctUntilChanged(),\n )\n\n const annotationsWithSelected$ = combineLatest([\n annotations$,\n selectedHighlight$,\n ]).pipe(\n map(([annotations, selectedHighlight]) =>\n annotations.map((annotation) => ({\n ...annotation,\n selected: annotation.id === selectedHighlight,\n })),\n ),\n )\n\n reader.annotations.update({ annotations$: annotationsWithSelected$ })\n }\n }, [reader, context])\n\n useSubscribe(syncAnnotationsWithReader)\n}\n","import type { AudioEnhancedReader } from \"@prose-reader/enhancer-audio\"\nimport { hasAudioEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAudioReader = (): AudioEnhancedReader | undefined => {\n const reader = useReader()\n\n return hasAudioEnhancer(reader) ? reader : undefined\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioVisualizer = (enabled = true) => {\n const audioReader = useAudioReader()\n const { data: visualizer } = useObserve<AudioVisualizerState | undefined>(\n () => (enabled ? audioReader?.audio.visualizer$ : undefined),\n [enabled, audioReader],\n )\n\n return visualizer\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useIsCurrentAudioTrack = ({\n enabled = true,\n trackId,\n}: {\n enabled?: boolean\n trackId: string\n}) => {\n const audioReader = useAudioReader()\n const { data: isCurrentTrack = false } = useObserve(\n () =>\n enabled\n ? audioReader?.audio.state$.pipe(\n map((state) => state.currentTrack?.id === trackId),\n distinctUntilChanged(),\n )\n : undefined,\n [enabled, trackId, audioReader],\n )\n\n return isCurrentTrack\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\n\nexport const FALLBACK_TOP_COLOR = `#93c5fd`\nexport const FALLBACK_BOTTOM_COLOR = `#3b82f6`\nexport const MIN_BAR_HEIGHT = 1\nexport const MAX_BAR_HEIGHT_RATIO = 0.1\nexport const IDLE_LEVEL = 0.08\nexport const EDGE_FADE_PORTION = 0.25\nexport const CENTER_EMPHASIS_RATIO = 0.15\n\nexport const DEFAULT_STATE_BASE_LEVEL = 0.02\nexport const DEFAULT_STATE_PEAK_LEVEL = 0.145\nexport const DEFAULT_STATE_HILL_SPREAD = 0.52\nexport const DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO = 0.16\nexport const DEFAULT_STATE_OPACITY = 0.5\nexport const DEFAULT_STATE_TEXTURE_AMOUNT = 0.34\n\nexport const DEFAULT_VISUALIZER_STATE: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n","import {\n DEFAULT_STATE_BASE_LEVEL,\n DEFAULT_STATE_HILL_SPREAD,\n DEFAULT_STATE_PEAK_LEVEL,\n DEFAULT_STATE_TEXTURE_AMOUNT,\n IDLE_LEVEL,\n} from \"./constants\"\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport const smoothstep = (edge0: number, edge1: number, value: number) => {\n if (edge0 === edge1) return Number(value >= edge1)\n\n const normalized = clamp((value - edge0) / (edge1 - edge0), 0, 1)\n\n return normalized * normalized * (3 - 2 * normalized)\n}\n\nconst getDefaultTexture = (progress: number) => {\n const lowFrequency = Math.sin(progress * Math.PI * 6 + 0.8)\n const highFrequency = Math.sin(progress * Math.PI * 14 + 1.7)\n\n return clamp(0.5 + lowFrequency * 0.3 + highFrequency * 0.2, 0, 1)\n}\n\nexport const getDefaultDisplayBars = (numBars: number) =>\n Array.from({ length: numBars }, (_, index) => {\n const progress = numBars === 1 ? 0.5 : index / (numBars - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const hillProfile =\n 1 - smoothstep(DEFAULT_STATE_HILL_SPREAD, 1, centerDistance)\n const texture = getDefaultTexture(progress)\n const texturedHill =\n hillProfile *\n (1 -\n DEFAULT_STATE_TEXTURE_AMOUNT +\n texture * DEFAULT_STATE_TEXTURE_AMOUNT)\n\n return clamp(\n DEFAULT_STATE_BASE_LEVEL + DEFAULT_STATE_PEAK_LEVEL * texturedHill,\n 0,\n 1,\n )\n })\n\nconst getAverage = (values: number[]) => {\n if (values.length === 0) return 0\n\n return values.reduce((total, value) => total + value, 0) / values.length\n}\n\nexport const hasMeaningfulLevels = (values: number[]) =>\n values.some((value) => value > 0.001)\n\nexport const getNormalizedDisplayBarCount = (value: number) => {\n const safeValue = Math.max(1, Math.floor(value))\n\n return safeValue % 2 === 0 ? safeValue + 1 : safeValue\n}\n\nexport const getMirroredDisplayBars = (\n values: number[],\n displayBarCount: number,\n) => {\n const normalizedDisplayBarCount =\n getNormalizedDisplayBarCount(displayBarCount)\n const centerOutSeedCount = Math.floor(normalizedDisplayBarCount / 2) + 1\n\n const centerOutSeed = Array.from(\n { length: centerOutSeedCount },\n (_, index) => {\n const start = Math.floor((index * values.length) / centerOutSeedCount)\n const end = Math.max(\n start + 1,\n Math.floor(((index + 1) * values.length) / centerOutSeedCount),\n )\n const average = getAverage(values.slice(start, end))\n\n return clamp(average, 0, 1)\n },\n )\n\n const centerBar = centerOutSeed[0] ?? IDLE_LEVEL\n const outerBars = centerOutSeed.slice(1)\n\n return [...outerBars.slice().reverse(), centerBar, ...outerBars]\n}\n\nexport const resolveGradientColors = (\n element: HTMLElement,\n {\n topVariable,\n topFallback,\n bottomVariable,\n bottomFallback,\n }: {\n topVariable: string\n topFallback: string\n bottomVariable: string\n bottomFallback: string\n },\n) => {\n const styles = window.getComputedStyle(element)\n const topColor = styles.getPropertyValue(topVariable).trim() || topFallback\n const bottomColor =\n styles.getPropertyValue(bottomVariable).trim() || bottomFallback\n\n return {\n topColor,\n bottomColor,\n }\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport {\n CENTER_EMPHASIS_RATIO,\n DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO,\n DEFAULT_STATE_OPACITY,\n EDGE_FADE_PORTION,\n MAX_BAR_HEIGHT_RATIO,\n MIN_BAR_HEIGHT,\n} from \"./constants\"\nimport {\n clamp,\n getDefaultDisplayBars,\n getMirroredDisplayBars,\n hasMeaningfulLevels,\n smoothstep,\n} from \"./shaping\"\n\ntype WaveSize = {\n width: number\n height: number\n}\n\ntype DrawWaveArgs = {\n canvas: HTMLCanvasElement\n size: WaveSize\n visualizer: AudioVisualizerState\n displayBarCount: number\n displayedBars: number[]\n fillStyle: CanvasGradient | string\n}\n\nexport const drawWave = ({\n canvas,\n size,\n visualizer,\n displayBarCount,\n displayedBars,\n fillStyle,\n}: DrawWaveArgs) => {\n const context = canvas.getContext(`2d`)\n const { width, height } = size\n\n if (!context || width <= 0 || height <= 0) return displayedBars\n\n context.clearRect(0, 0, width, height)\n\n const hasPlayedLevels = hasMeaningfulLevels(visualizer.levels)\n const isDefaultState = !visualizer.isActive && !hasPlayedLevels\n const displayBars = isDefaultState\n ? getDefaultDisplayBars(displayBarCount)\n : getMirroredDisplayBars(visualizer.levels, displayBarCount)\n\n const nextDisplayedBars =\n displayedBars.length !== displayBars.length\n ? Array.from({ length: displayBars.length }, () => 0)\n : displayedBars\n\n const easedBars = visualizer.isActive\n ? nextDisplayedBars.map((value, index) => {\n const targetValue = displayBars[index] ?? 0\n const easing = 0.28\n\n return value + (targetValue - value) * easing\n })\n : [...displayBars]\n\n const gap = Math.round(\n clamp(width / Math.max(easedBars.length, 1) / 2.8, 1, 4),\n )\n const barWidth = Math.max(\n 2,\n Math.floor((width - gap * (easedBars.length - 1)) / easedBars.length),\n )\n const totalWidth = barWidth * easedBars.length + gap * (easedBars.length - 1)\n const startX = Math.max(0, (width - totalWidth) / 2)\n const centerY = height / 2\n const maxHeight = Math.max(\n MIN_BAR_HEIGHT,\n height *\n (isDefaultState\n ? DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO\n : MAX_BAR_HEIGHT_RATIO),\n )\n context.fillStyle = fillStyle\n\n for (const [index, rawValue] of easedBars.entries()) {\n const amplitude = clamp(rawValue, 0, 1)\n const progress =\n easedBars.length === 1 ? 0.5 : index / (easedBars.length - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const centerProfile = 1 - smoothstep(0, 1, centerDistance)\n const emphasizedAmplitude =\n (amplitude * (1 + CENTER_EMPHASIS_RATIO * centerProfile)) /\n (1 + CENTER_EMPHASIS_RATIO * centerProfile * amplitude)\n const heightProgress = isDefaultState\n ? amplitude\n : emphasizedAmplitude ** 1.15\n const barHeight = Math.max(MIN_BAR_HEIGHT, heightProgress * maxHeight)\n const barRadius = Math.min(barWidth / 2, barHeight / 2)\n const x = Math.round(startX + index * (barWidth + gap))\n const y = centerY - barHeight / 2\n const edgeFade =\n smoothstep(0, EDGE_FADE_PORTION, progress) *\n (1 - smoothstep(1 - EDGE_FADE_PORTION, 1, progress))\n\n context.globalAlpha = clamp(\n (isDefaultState\n ? DEFAULT_STATE_OPACITY\n : visualizer.isActive\n ? 0.95\n : 0.75) * edgeFade,\n 0,\n 1,\n )\n context.beginPath()\n context.roundRect(x, y, barWidth, barHeight, barRadius)\n context.fill()\n }\n\n context.globalAlpha = 1\n\n return easedBars\n}\n","import { Box, useBreakpointValue } from \"@chakra-ui/react\"\nimport {\n setPropertyIfChanged,\n setStylePropertyIfChanged,\n} from \"@prose-reader/core\"\nimport type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { FALLBACK_BOTTOM_COLOR, FALLBACK_TOP_COLOR } from \"./constants\"\nimport { drawWave as drawWaveFrame } from \"./drawWave\"\nimport { getNormalizedDisplayBarCount, resolveGradientColors } from \"./shaping\"\n\nconst DEFAULT_VISUALIZER: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n\nexport const AudioWaveCanvas = ({\n visualizer,\n}: {\n visualizer?: AudioVisualizerState\n}) => {\n const displayBarCount = getNormalizedDisplayBarCount(\n useBreakpointValue({\n base: 29,\n md: 35,\n lg: 41,\n xl: 49,\n }) ?? 29,\n )\n const canvasRef = useRef<HTMLCanvasElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const frameRef = useRef<number | undefined>(undefined)\n const visualizerRef = useRef<AudioVisualizerState>(\n visualizer ?? DEFAULT_VISUALIZER,\n )\n const displayedBarsRef = useRef<number[]>([])\n const fillStyleRef = useRef<CanvasGradient | string>(FALLBACK_BOTTOM_COLOR)\n const sizeRef = useRef({\n width: 0,\n height: 0,\n })\n\n /**\n * Cache the gradient outside the animation loop to avoid repeated\n * `getComputedStyle()` and gradient allocation during playback.\n *\n * Limitation: the resolved Chakra CSS variable colors are treated as static\n * for the current canvas size. Theme or palette changes after mount are not\n * picked up immediately; the gradient is refreshed on resize and remount.\n */\n const refreshFillStyle = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas || sizeRef.current.height <= 0) return\n\n const context = canvas.getContext(`2d`)\n\n if (!context) return\n\n const { topColor, bottomColor } = resolveGradientColors(canvas, {\n topVariable: `--audio-wave-top-color`,\n topFallback: FALLBACK_TOP_COLOR,\n bottomVariable: `--audio-wave-bottom-color`,\n bottomFallback: FALLBACK_BOTTOM_COLOR,\n })\n const gradient = context.createLinearGradient(\n 0,\n 0,\n 0,\n sizeRef.current.height,\n )\n\n gradient.addColorStop(0, topColor)\n gradient.addColorStop(1, bottomColor)\n\n fillStyleRef.current = gradient\n }, [])\n\n const drawWave = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas) return\n\n const visualizer = visualizerRef.current\n\n displayedBarsRef.current = drawWaveFrame({\n canvas,\n size: sizeRef.current,\n visualizer,\n displayBarCount,\n displayedBars: displayedBarsRef.current,\n fillStyle: fillStyleRef.current,\n })\n }, [displayBarCount])\n\n const stopAnimation = useCallback(() => {\n if (frameRef.current !== undefined) {\n cancelAnimationFrame(frameRef.current)\n frameRef.current = undefined\n }\n }, [])\n\n const startAnimation = useCallback(() => {\n if (frameRef.current !== undefined) return\n\n const tick = () => {\n const visualizer = visualizerRef.current\n\n if (!visualizer.isActive) {\n frameRef.current = undefined\n drawWave()\n\n return\n }\n\n drawWave()\n frameRef.current = requestAnimationFrame(tick)\n }\n\n frameRef.current = requestAnimationFrame(tick)\n }, [drawWave])\n\n const resizeCanvas = useCallback(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n\n if (!canvas || !container) return\n\n const nextWidth = Math.max(1, container.clientWidth)\n const nextHeight = Math.max(1, container.clientHeight)\n const pixelRatio = window.devicePixelRatio || 1\n const nextCanvasWidth = Math.round(nextWidth * pixelRatio)\n const nextCanvasHeight = Math.round(nextHeight * pixelRatio)\n\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n setPropertyIfChanged(canvas, `width`, nextCanvasWidth)\n setPropertyIfChanged(canvas, `height`, nextCanvasHeight)\n setStylePropertyIfChanged(canvas.style, `width`, `${nextWidth}px`)\n setStylePropertyIfChanged(canvas.style, `height`, `${nextHeight}px`)\n\n const context = canvas.getContext(`2d`)\n\n if (context) {\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0)\n }\n\n refreshFillStyle()\n drawWave()\n }, [drawWave, refreshFillStyle])\n\n useEffect(() => {\n visualizerRef.current = visualizer ?? DEFAULT_VISUALIZER\n\n if (visualizerRef.current.isActive) {\n startAnimation()\n return\n }\n\n stopAnimation()\n drawWave()\n }, [drawWave, startAnimation, stopAnimation, visualizer])\n\n useEffect(() => {\n const container = containerRef.current\n\n if (!container) return\n\n resizeCanvas()\n\n const resizeObserver = new ResizeObserver(() => {\n resizeCanvas()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n stopAnimation()\n resizeObserver.disconnect()\n }\n }, [resizeCanvas, stopAnimation])\n\n return (\n <Box\n ref={containerRef}\n position=\"absolute\"\n inset={0}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n px={8}\n py={12}\n pointerEvents=\"none\"\n css={{\n \"--audio-wave-top-color\": \"colors.colorPalette.emphasized\",\n \"--audio-wave-bottom-color\": \"colors.colorPalette.solid\",\n }}\n style={{\n WebkitMaskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n maskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n }}\n >\n <canvas ref={canvasRef} />\n </Box>\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioVisualizer } from \"./useAudioVisualizer\"\nimport { useIsCurrentAudioTrack } from \"./useIsCurrentAudioTrack\"\nimport { AudioWaveCanvas } from \"./wave/AudioWaveCanvas\"\n\n/**\n * Render only when there is a `renderer`. Meaning the item is loaded.\n * - Renders correct visualizer for current item.\n * - Renders default visualizer when item is not currently playing.\n */\nexport const AudioSpineItem = ({ item }: { item: CoreSpineItem }) => {\n const audioReader = useAudioReader()\n const isAudioRenderer = audioReader?.audio.isAudioRenderer(item.renderer)\n const audioRenderer = isAudioRenderer ? item.renderer : undefined\n const { data: audioDocumentContainer } = useObserve(\n () => audioRenderer?.watch(`documentContainer`),\n [audioRenderer, isAudioRenderer],\n )\n const isCurrentTrack = useIsCurrentAudioTrack({\n enabled: !!audioDocumentContainer,\n trackId: item.item.id,\n })\n const visualizer = useAudioVisualizer(isCurrentTrack)\n\n if (!audioDocumentContainer) return null\n\n return createPortal(\n <AudioWaveCanvas visualizer={isCurrentTrack ? visualizer : undefined} />,\n audioDocumentContainer,\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AudioSpineItem } from \"../audio/AudioSpineItem\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(<AudioSpineItem item={item} />, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n combineLatest,\n distinctUntilChanged,\n map,\n NEVER,\n startWith,\n switchMap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n throttleTime(100, undefined, { trailing: true }),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(\n map((entries) => entries.some((e) => e.isIntersecting)),\n startWith(false),\n distinctUntilChanged(),\n )\n\n return combineLatest([itemLayoutChanged$, isItemIntersecting$]).pipe(\n switchMap(([, isVisible]) => {\n if (!isVisible) {\n element.innerHTML = \"\"\n\n return NEVER\n }\n\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n {/* iframe nullifying overlay. Ensure there are no pointer interceptions, especially on iPadOS */}\n <Box position=\"absolute\" inset={0} zIndex={1} aria-hidden=\"true\" />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n zIndex={2}\n textAlign=\"center\"\n bgColor=\"bg.panel\"\n color=\"fg\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","{\n \"name\": \"@prose-reader/react-reader\",\n \"private\": false,\n \"version\": \"1.304.0\",\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./index.css\": \"./dist/index.css\"\n },\n \"files\": [\n \"/dist\"\n ],\n \"scripts\": {\n \"start\": \"vite build --watch --mode development\",\n \"build\": \"node ./scripts/check-enhancer-imports.mjs && tsc -b && vite build\",\n \"check:enhancers\": \"node ./scripts/check-enhancers.mjs\",\n \"test\": \"vitest run --coverage\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.0.0\",\n \"@types/react-dom\": \"^19.0.0\",\n \"@vitejs/plugin-react\": \"^6.0.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"typescript\": \"*\",\n \"vite\": \"^8\"\n },\n \"peerDependencies\": {\n \"@chakra-ui/react\": \"3.x\",\n \"@emotion/react\": \"11.x\",\n \"@prose-reader/core\": \"^1.169.0\",\n \"@prose-reader/enhancer-annotations\": \"^1.169.0\",\n \"@prose-reader/enhancer-audio\": \"^1.169.0\",\n \"@prose-reader/enhancer-gallery\": \"^1.169.0\",\n \"@prose-reader/enhancer-gestures\": \"^1.169.0\",\n \"@prose-reader/enhancer-refit\": \"^1.169.0\",\n \"@prose-reader/enhancer-search\": \"^1.169.0\",\n \"@prose-reader/shared\": \"^1.169.0\",\n \"rc-slider\": \"11.1.x\",\n \"react\": \"19.x || 18.x\",\n \"react-dom\": \"19.x || 18.x\",\n \"react-icons\": \"^5.4.0\",\n \"reactjrx\": \"1.x\",\n \"screenfull\": \"^6.0.2\"\n }\n}\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { useEffect, useState } from \"react\"\n\nexport const useTransientValue = <Value>(\n value: Value | undefined,\n durationMs: number,\n) => {\n const [transientValue, setTransientValue] = useState<Value | undefined>()\n\n useEffect(() => {\n if (value === undefined) {\n setTransientValue(undefined)\n\n return\n }\n\n setTransientValue(value)\n\n const timeoutId = window.setTimeout(() => {\n setTransientValue((currentValue) =>\n Object.is(currentValue, value) ? undefined : currentValue,\n )\n }, durationMs)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [durationMs, value])\n\n return transientValue\n}\n",".pulse {\n animation: pulse 900ms ease-in-out 1;\n transform-origin: center;\n}\n\n@keyframes pulse {\n 0% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n\n 40% {\n opacity: 1;\n transform: rotate(0deg) scale(1.12);\n }\n\n 48% {\n opacity: 1;\n transform: rotate(-7deg) scale(1.14);\n }\n\n 56% {\n opacity: 1;\n transform: rotate(7deg) scale(1.14);\n }\n\n 64% {\n opacity: 1;\n transform: rotate(-4deg) scale(1.12);\n }\n\n 72% {\n opacity: 1;\n transform: rotate(0deg) scale(1.08);\n }\n\n 100% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pulse {\n animation: none;\n }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport {\n type ExtraPaginationInfo,\n type PaginationInfo,\n shouldUseComputedSpreadModeForViewport,\n watchKeys,\n} from \"@prose-reader/core\"\nimport type { Manifest } from \"@prose-reader/shared\"\nimport { memo } from \"react\"\nimport { MdScreenRotation } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n NEVER,\n type Observable,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\"\nimport { useTransientValue } from \"../common/useTransientValue\"\nimport { useReader } from \"../context/useReader\"\nimport styles from \"./SpreadRotationHint.module.css\"\n\nconst HINT_TARGET_DEBOUNCE_MS = 100\nconst HINT_VISIBLE_MS = 900\n\nconst ANIMATION_NAME_IN_OUT = {\n _open: \"fade-in\",\n _closed: \"fade-out\",\n _motionReduce: \"none\",\n}\nconst ANIMATION_DURATION_IN_OUT = { base: \"moderate\", _motionReduce: \"0ms\" }\n\ntype ViewportDimensions = {\n height: number\n width: number\n}\n\ntype ViewportState = `busy` | `free`\n\ntype HintPagination = Pick<\n PaginationInfo & ExtraPaginationInfo,\n | `beginHasAdjacentSpreadPage`\n | `beginPageIndexInSpineItem`\n | `beginSpineItemIndex`\n | `endHasAdjacentSpreadPage`\n | `endPageIndexInSpineItem`\n | `endSpineItemIndex`\n>\n\ntype ReaderWithSpreadHintStreams = NonNullable<ReturnType<typeof useReader>>\n\nexport const wouldRotationUseComputedSpreadMode = ({\n manifest,\n viewport,\n}: {\n manifest: Manifest\n viewport: ViewportDimensions\n}) => {\n if (viewport.width === viewport.height) return false\n\n return shouldUseComputedSpreadModeForViewport({\n manifest,\n viewport: {\n height: viewport.width,\n width: viewport.height,\n },\n })\n}\n\nexport const getSpreadRotationHintTargetKey = ({\n manifest,\n pagination,\n computedSpreadMode,\n viewportState,\n viewport,\n}: {\n manifest: Manifest\n pagination: HintPagination\n computedSpreadMode: boolean\n viewportState: ViewportState\n viewport: ViewportDimensions\n}) => {\n if (viewportState !== `free`) return undefined\n if (computedSpreadMode) return undefined\n if (!wouldRotationUseComputedSpreadMode({ manifest, viewport })) {\n return undefined\n }\n\n const hasSpreadPair =\n pagination.beginHasAdjacentSpreadPage && pagination.endHasAdjacentSpreadPage\n\n if (!hasSpreadPair) return undefined\n\n return [\n pagination.beginSpineItemIndex,\n pagination.beginPageIndexInSpineItem,\n pagination.endSpineItemIndex,\n pagination.endPageIndexInSpineItem,\n ]\n .map((value) => value ?? `none`)\n .join(`:`)\n}\n\nconst observeHintPagination = (reader: ReaderWithSpreadHintStreams) =>\n reader.pagination.state$.pipe(\n watchKeys([\n `beginHasAdjacentSpreadPage`,\n `beginPageIndexInSpineItem`,\n `beginSpineItemIndex`,\n `endHasAdjacentSpreadPage`,\n `endPageIndexInSpineItem`,\n `endSpineItemIndex`,\n ]),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\nconst observeBeginSpineItemReady = ({\n pagination$,\n reader,\n}: {\n pagination$: Observable<HintPagination>\n reader: ReaderWithSpreadHintStreams\n}) =>\n combineLatest([pagination$, reader.spineItemsManager.items$]).pipe(\n map(([{ beginSpineItemIndex }, spineItems]) =>\n beginSpineItemIndex === undefined\n ? undefined\n : spineItems[beginSpineItemIndex],\n ),\n distinctUntilChanged(),\n switchMap((spineItem) => spineItem?.isReady$ ?? of(false)),\n )\n\nconst observeSpreadRotationHintTargetKey = (\n reader: ReaderWithSpreadHintStreams,\n) => {\n const pagination$ = observeHintPagination(reader)\n const beginSpineItemReady$ = observeBeginSpineItemReady({\n pagination$,\n reader,\n })\n\n return combineLatest([\n pagination$,\n reader.context.manifest$,\n reader.settings.watch([`computedSpreadMode`]),\n reader.viewportState$,\n reader.viewport.watch([`width`, `height`]),\n beginSpineItemReady$,\n ]).pipe(\n debounceTime(HINT_TARGET_DEBOUNCE_MS),\n map(\n ([pagination, manifest, settings, viewportState, viewport, isReady]) => {\n if (!isReady) return undefined\n\n return getSpreadRotationHintTargetKey({\n manifest,\n pagination,\n computedSpreadMode: settings.computedSpreadMode ?? false,\n viewportState,\n viewport,\n })\n },\n ),\n distinctUntilChanged(),\n )\n}\n\nconst useSpreadRotationHintTargetKey = () => {\n const reader = useReader()\n\n return useObserve(\n () => (reader ? observeSpreadRotationHintTargetKey(reader) : NEVER),\n [reader],\n ).data\n}\n\nexport const SpreadRotationHint = memo(() => {\n const hintTargetKey = useSpreadRotationHintTargetKey()\n const visibleHintKey = useTransientValue(hintTargetKey, HINT_VISIBLE_MS)\n\n return (\n <Presence\n present={visibleHintKey !== undefined}\n lazyMount\n unmountOnExit\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration={ANIMATION_DURATION_IN_OUT}\n >\n <Box\n key={visibleHintKey}\n aria-hidden\n position=\"absolute\"\n left=\"50%\"\n top=\"50%\"\n transform=\"translate(-50%, -50%)\"\n pointerEvents=\"none\"\n zIndex={2}\n data-spread-rotation-hint=\"true\"\n >\n <Box\n alignItems=\"center\"\n bg=\"bg.inverted/72\"\n borderRadius=\"full\"\n className={styles.pulse}\n color=\"fg.inverted\"\n display=\"flex\"\n height=\"68px\"\n justifyContent=\"center\"\n width=\"68px\"\n >\n <MdScreenRotation focusable={false} size={34} />\n </Box>\n </Box>\n </Presence>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","export const NOTIFICATION_KEYS = {\n fontScaleChange: \"fontScaleChange\",\n}\n\n/**\n * TODO for now we don't notify cause we can only changes from:\n * - settings (no notification, direct action)\n * - value change from controlled settings (user intent)\n */\nexport const useFontSizeNotifications = () => {\n // const reader = useReader()\n // const { notificationsSubject, fontSizeMenuOpen } = useReaderContextValue([\n // \"notificationsSubject\",\n // \"fontSizeMenuOpen\",\n // ])\n // useSubscribe(\n // () =>\n // fontSizeMenuOpen\n // ? EMPTY\n // : reader?.settings.values$.pipe(\n // map(({ fontScale }) => fontScale),\n // distinctUntilChanged(),\n // skip(1),\n // tap((fontScale) => {\n // notificationsSubject.next({\n // key: NOTIFICATION_KEYS.fontScaleChange,\n // title: \"Font size changed\",\n // description: `${fontScale * 100} %`,\n // })\n // }),\n // ),\n // [reader, notificationsSubject, fontSizeMenuOpen],\n // )\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import RcSlider from \"rc-slider\"\nimport { type ComponentProps, memo } from \"react\"\nimport \"rc-slider/assets/index.css\"\nimport { Box, chakra } from \"@chakra-ui/react\"\n\nconst ChakraRcSlider = chakra(RcSlider)\n\nexport const ThemedSlider = memo((props: ComponentProps<typeof RcSlider>) => {\n return (\n <Box\n display=\"contents\"\n css={{\n \"--bg\": \"colors.bg\",\n \"--bg-emphasized\": \"colors.bg.emphasized\",\n \"--color-solid\": \"colors.colorPalette.solid\",\n }}\n >\n <ChakraRcSlider\n keyboard={false}\n style={{\n padding: 0,\n }}\n css={{\n \"& > .rc-slider-handle:focus-visible\": {\n boxShadow: \"0 0 0 2px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle:active\": {\n boxShadow: \"0 0 5px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle.rc-slider-handle-dragging\": {\n boxShadow: \"0 0 0 3px var(--color-solid) !important\",\n },\n \"&.rc-slider-disabled\": {\n backgroundColor: \"transparent\",\n opacity: 0.5,\n },\n \"&.rc-slider-disabled > .rc-slider-rail\": {\n backgroundColor: \"var(--bg-emphasized)\",\n },\n \"&.rc-slider-disabled > .rc-slider-track\": {\n backgroundColor: \"var(--color-solid)\",\n },\n \"&.rc-slider-disabled > .rc-slider-handle\": {\n backgroundColor: \"var(--bg)\",\n borderColor: \"var(--color-solid)\",\n },\n }}\n styles={{\n rail: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--bg-emphasized)\",\n },\n track: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--color-solid)\",\n },\n handle: {\n width: \"24px\",\n height: \"24px\",\n top: \"50%\",\n borderColor: \"var(--color-solid)\",\n transform: `translate(${props.reverse ? \"50%\" : \"-50%\"}, -50%)`,\n backgroundColor: \"var(--bg)\",\n marginTop: \"0px\",\n },\n }}\n {...props}\n />\n </Box>\n )\n})\n","import type { AudioEnhancerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioState = () => {\n const audioReader = useAudioReader()\n const { data: audioState } = useObserve<AudioEnhancerState | undefined>(\n () => audioReader?.audio.state$,\n [audioReader],\n )\n\n return audioState\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useState } from \"react\"\nimport { LuPause, LuPlay } from \"react-icons/lu\"\nimport { useConstant, useSubscribe } from \"reactjrx\"\nimport { BehaviorSubject, map, tap } from \"rxjs\"\nimport { ThemedSlider } from \"../quickmenu/ThemedSlider\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioState } from \"./useAudioState\"\n\nconst formatPlaybackTime = (value: number) => {\n if (!Number.isFinite(value) || value < 0) return `00:00`\n\n const roundedValue = Math.floor(value)\n const hours = Math.floor(roundedValue / 3600)\n const minutes = Math.floor((roundedValue % 3600) / 60)\n const seconds = roundedValue % 60\n\n if (hours > 0) {\n return [hours, minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n }\n\n return [minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n}\n\nexport const AudioControlsSection = (props: ComponentProps<typeof HStack>) => {\n const audioReader = useAudioReader()\n const audioState = useAudioState()\n const hasPlayableTrack =\n !!audioState?.currentTrack || (audioState?.tracks.length ?? 0) > 0\n const duration = audioState?.duration\n const displayDuration = Math.max(0, duration ?? 0)\n const knownDuration =\n typeof duration === `number` && duration > 0 ? duration : undefined\n const hasKnownDuration = knownDuration !== undefined\n const sliderMax = knownDuration ?? 1\n const currentTime = hasKnownDuration\n ? Math.min(Math.max(0, audioState?.currentTime ?? 0), knownDuration)\n : 0\n const isSliderDisabled =\n !hasPlayableTrack || !!audioState?.isLoading || !hasKnownDuration\n const [draftCurrentTime, setDraftCurrentTime] = useState(currentTime)\n const isSeekingSubject = useConstant(() => new BehaviorSubject(false))\n\n /**\n * Keeps the slider synced with audio playback, except while the user is\n * actively dragging the thumb.\n *\n * During drag we display a local draft value and ignore playback updates to\n * avoid snapping back to the previously observed time. Once the user releases\n * the slider, the enhancer publishes the requested seek time immediately\n * before mutating the audio element, so unlocking this sync path is expected\n * to resume from the new target time. Any later native media updates are then\n * treated as normal playback progression rather than part of the drag UX.\n */\n const syncDownCurrentTime = useCallback(\n () =>\n audioReader?.audio.state$.pipe(\n map((state) => state.currentTime),\n tap((currentTime) => {\n if (isSeekingSubject.value) return\n\n setDraftCurrentTime(currentTime)\n isSeekingSubject.next(false)\n }),\n ),\n [audioReader, isSeekingSubject],\n )\n\n useSubscribe(syncDownCurrentTime)\n\n if (!audioState) {\n return null\n }\n\n return (\n <HStack\n width=\"100%\"\n maxW=\"100%\"\n gap={3}\n borderRadius=\"md\"\n bg=\"bg.muted\"\n px={3}\n py={2}\n {...props}\n >\n <IconButton\n aria-label={audioState.isPlaying ? \"Pause audio\" : \"Play audio\"}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n void audioReader?.audio.toggle()\n }}\n disabled={!hasPlayableTrack || audioState.isLoading}\n >\n {audioState.isPlaying ? <LuPause /> : <LuPlay />}\n </IconButton>\n <Stack gap={0} minW={0} flex={1}>\n <ThemedSlider\n value={draftCurrentTime}\n min={0}\n max={sliderMax}\n disabled={isSliderDisabled}\n onChange={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") return\n\n isSeekingSubject.next(true)\n setDraftCurrentTime(nextValue)\n }}\n onChangeComplete={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") {\n isSeekingSubject.next(false)\n\n return\n }\n\n setDraftCurrentTime(nextValue)\n audioReader?.audio.setCurrentTime(nextValue)\n isSeekingSubject.next(false)\n }}\n />\n <HStack justifyContent=\"space-between\" mt={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {audioState.isLoading\n ? `Loading audio...`\n : formatPlaybackTime(draftCurrentTime)}\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {formatPlaybackTime(displayDuration)}\n </Text>\n </HStack>\n </Stack>\n </HStack>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useHasVisibleAudioTracks = () => {\n const audioReader = useAudioReader()\n const { data: hasVisibleAudioTracks = false } = useObserve(\n () =>\n audioReader?.audio.visibleTrackIds$.pipe(\n map((trackIds) => trackIds.length > 0),\n distinctUntilChanged(),\n ),\n [audioReader],\n )\n\n return hasVisibleAudioTracks\n}\n","import { Popover as ChakraPopover, IconButton, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { HiOutlineInformationCircle } from \"react-icons/hi\"\n\nexport interface ToggleTipProps extends ChakraPopover.RootProps {\n showArrow?: boolean\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n content?: React.ReactNode\n}\n\nexport const ToggleTip = React.forwardRef<HTMLDivElement, ToggleTipProps>(\n function ToggleTip(props, ref) {\n const {\n showArrow,\n children,\n portalled = true,\n content,\n portalRef,\n ...rest\n } = props\n\n return (\n <ChakraPopover.Root\n {...rest}\n positioning={{ ...rest.positioning, gutter: 4 }}\n >\n <ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content\n width=\"auto\"\n px=\"2\"\n py=\"1\"\n textStyle=\"xs\"\n rounded=\"sm\"\n ref={ref}\n >\n {showArrow && (\n <ChakraPopover.Arrow>\n <ChakraPopover.ArrowTip />\n </ChakraPopover.Arrow>\n )}\n {content}\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n </ChakraPopover.Root>\n )\n },\n)\n\nexport const InfoTip = React.forwardRef<\n HTMLDivElement,\n Partial<ToggleTipProps>\n>(function InfoTip(props, ref) {\n const { children, ...rest } = props\n return (\n <ToggleTip content={children} {...rest} ref={ref}>\n <IconButton\n variant=\"ghost\"\n aria-label=\"info\"\n size=\"2xs\"\n colorPalette=\"gray\"\n >\n <HiOutlineInformationCircle />\n </IconButton>\n </ToggleTip>\n )\n})\n","import { Progress as ChakraProgress } from \"@chakra-ui/react\"\nimport { InfoTip } from \"./toggle-tip\"\nimport * as React from \"react\"\n\nexport const ProgressBar = React.forwardRef<\n HTMLDivElement,\n ChakraProgress.TrackProps\n>(function ProgressBar(props, ref) {\n return (\n <ChakraProgress.Track {...props} ref={ref}>\n <ChakraProgress.Range />\n </ChakraProgress.Track>\n )\n})\n\nexport interface ProgressLabelProps extends ChakraProgress.LabelProps {\n info?: React.ReactNode\n}\n\nexport const ProgressLabel = React.forwardRef<\n HTMLDivElement,\n ProgressLabelProps\n>(function ProgressLabel(props, ref) {\n const { children, info, ...rest } = props\n return (\n <ChakraProgress.Label {...rest} ref={ref}>\n {children}\n {info && <InfoTip>{info}</InfoTip>}\n </ChakraProgress.Label>\n )\n})\n\nexport const ProgressRoot = ChakraProgress.Root\nexport const ProgressValueText = ChakraProgress.ValueText\n","import { usePagination } from \"../pagination/usePagination\"\n\nexport const useNavigationContext = () => {\n const pagination = usePagination()\n const hasOnlyOnePage = pagination?.numberOfTotalPages === 1\n\n const isBeginWithinChapter =\n (pagination?.beginNumberOfPagesInSpineItem ?? 0) > 1\n\n const isEndWithinChapter = (pagination?.endNumberOfPagesInSpineItem ?? 0) > 1\n\n const beginPageIndex =\n (pagination?.hasChapters\n ? pagination?.beginPageIndexInSpineItem\n : pagination?.beginAbsolutePageIndex) ?? 0\n const endPageIndex =\n (pagination?.hasChapters\n ? pagination?.endPageIndexInSpineItem\n : pagination?.endAbsolutePageIndex) ?? 0\n\n const [leftPageIndex = 0, rightPageIndex = 0] = [\n beginPageIndex,\n endPageIndex,\n ].sort((a, b) => a - b)\n\n const beginAndEndAreDifferent =\n pagination?.beginPageIndexInSpineItem !==\n pagination?.endPageIndexInSpineItem ||\n pagination?.beginSpineItemIndex !== pagination?.endSpineItemIndex\n\n const totalApproximatePages = pagination?.hasChapters\n ? pagination?.beginNumberOfPagesInSpineItem\n : pagination?.numberOfTotalPages\n\n return {\n hasOnlyOnePage,\n beginPageIndex,\n endPageIndex,\n isBeginWithinChapter,\n isEndWithinChapter,\n beginAndEndAreDifferent,\n totalApproximatePages,\n leftPageIndex,\n rightPageIndex,\n }\n}\n","import { HStack, Stack, Text } from \"@chakra-ui/react\"\nimport {\n ProgressBar,\n ProgressRoot,\n ProgressValueText,\n} from \"../components/ui/progress\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const PaginationInfoSection = () => {\n const pagination = usePagination()\n const {\n hasOnlyOnePage,\n leftPageIndex,\n rightPageIndex,\n totalApproximatePages,\n beginAndEndAreDifferent,\n } = useNavigationContext()\n const progress = Math.round((pagination?.percentageEstimateOfBook ?? 0) * 100)\n\n const buildTitleChain = (\n chapterInfo: NonNullable<typeof pagination>[\"beginChapterInfo\"],\n ): string => {\n if (chapterInfo?.subChapter) {\n return `${chapterInfo.title} / ${buildTitleChain(chapterInfo.subChapter)}`\n }\n return chapterInfo?.title || \"\"\n }\n\n const chapterTitle = buildTitleChain(pagination?.beginChapterInfo)\n\n return (\n <Stack alignItems=\"center\" gap={1} maxW=\"100%\" overflow=\"auto\">\n <ProgressRoot value={progress} size=\"xs\" width={150}>\n <HStack justifyContent=\"space-between\">\n <ProgressBar width={110} />\n <ProgressValueText>{`${progress}%`}</ProgressValueText>\n </HStack>\n </ProgressRoot>\n <Text truncate maxWidth=\"100%\" fontSize=\"sm\" mt={1}>\n {chapterTitle ? `Chapter: ${chapterTitle}` : `\\u00A0`}\n </Text>\n {!hasOnlyOnePage && (\n <HStack>\n <Text fontSize=\"xs\">\n {beginAndEndAreDifferent\n ? `${leftPageIndex + 1} - ${rightPageIndex + 1} of ${totalApproximatePages}`\n : `${leftPageIndex + 1} of ${totalApproximatePages}`}\n </Text>\n {!!pagination?.hasChapters && (\n <>\n <Text>-</Text>\n <Text fontSize=\"xs\">\n ({(pagination?.beginAbsolutePageIndex ?? 0) + 1})\n </Text>\n </>\n )}\n </HStack>\n )}\n </Stack>\n )\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const QuickBar = memo(\n ({\n children,\n position,\n ...rest\n }: { position: \"top\" | \"bottom\" } & PresenceProps & {\n ref?: React.RefObject<HTMLDivElement | null>\n }) => {\n return (\n <Presence\n display=\"flex\"\n flexDirection=\"row\"\n width=\"100%\"\n position=\"absolute\"\n {...(position === \"bottom\" ? { bottom: 0 } : { top: 0 })}\n animationName={\n position === \"bottom\"\n ? {\n _open: \"slide-from-bottom, fade-in\",\n _closed: \"slide-to-bottom, fade-out\",\n }\n : {\n _open: \"slide-from-top, fade-in\",\n _closed: \"slide-to-top, fade-out\",\n }\n }\n animationDuration=\"moderate\"\n bgColor=\"bg.panel\"\n alignItems=\"center\"\n justifyContent=\"center\"\n shadow=\"md\"\n p={4}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import { Box } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useEffect } from \"react\"\nimport { signal, useObserve, useSignalState, useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\nimport { ThemedSlider } from \"./ThemedSlider\"\n\nconst useSliderValues = () => {\n const pagination = usePagination()\n const isUsingSpread = pagination?.isUsingSpread\n const { beginPageIndex: currentRealPage, totalApproximatePages = 0 } =\n useNavigationContext()\n const currentPage = isUsingSpread\n ? Math.floor((currentRealPage || 0) / 2)\n : currentRealPage\n const [value, valueSignal] = useSignalState(() =>\n signal({\n default: currentPage || 0,\n }),\n )\n const min = 0\n const max = Math.max(\n 0,\n isUsingSpread\n ? Math.floor((totalApproximatePages - 1) / 2)\n : totalApproximatePages - 1,\n )\n\n useEffect(() => {\n valueSignal.update(currentPage || 0)\n }, [currentPage, valueSignal])\n\n return {\n value,\n valueSignal,\n min,\n max,\n }\n}\n\nexport const Scrubber = (props: ComponentProps<typeof ThemedSlider>) => {\n const reader = useReader()\n const pagination = usePagination()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const reverse = manifest?.readingDirection === \"rtl\"\n const isUsingSpread = pagination?.isUsingSpread\n const { totalApproximatePages = 0, isBeginWithinChapter } =\n useNavigationContext()\n const step = 1\n const isScrubberWithinChapter = isBeginWithinChapter\n const { value, valueSignal, min, max } = useSliderValues()\n\n const onChange: NonNullable<ComponentProps<typeof ThemedSlider>[\"onChange\"]> =\n useCallback(\n (values) => {\n const [value = 0] = Array.isArray(values) ? values : [values]\n\n valueSignal.update(value)\n\n const pageIndex = isUsingSpread\n ? Math.floor(value) * 2\n : Math.floor(value)\n\n if (!isScrubberWithinChapter) {\n reader?.navigation.goToAbsolutePageIndex({\n absolutePageIndex: pageIndex,\n animation: false,\n })\n } else {\n reader?.navigation.goToPageOfSpineItem({\n pageIndex,\n spineItemId: reader.pagination.state.beginSpineItemIndex ?? 0,\n animation: false,\n })\n }\n },\n [reader, isUsingSpread, valueSignal, isScrubberWithinChapter],\n )\n\n /**\n * @note\n * Scrubber can navigate fast and without lock we may end up with\n * slowness due to the reader\n * paginating and loading items in between.\n * This is good practice (but not required) to throttle it.\n */\n const throttleLock = useCallback(() => {\n return reader?.navigation.throttleLock({\n duration: 100,\n trigger: valueSignal.subject,\n })\n }, [reader, valueSignal])\n\n useSubscribe(throttleLock)\n\n // const marks =\n // max > 1\n // ? Array.from({ length: max + 1 }, (_, i) => i).reduce(\n // (acc: number[], val) => [...acc, val],\n // [],\n // )\n // : []\n\n const disabled =\n totalApproximatePages === 1 ||\n (isUsingSpread && totalApproximatePages === 2)\n\n // @tmp not available yet in chakra\n // if (reverse) return null\n\n if (disabled) return <Box style={props.style} />\n\n return (\n <ThemedSlider\n value={[value]}\n max={max}\n min={min}\n reverse={reverse}\n step={step}\n onChange={onChange}\n {...props}\n />\n )\n // return (\n // <Slider\n // value={[value]}\n // max={max}\n // min={min}\n // marks={marks}\n // onChange={e => {\n // debugger\n // }}\n // onValueChange={onChange}\n // // reverse={reverse}\n // orientation=\"horizontal\"\n // step={step}\n // />\n // )\n}\n","import { Box, Collapsible, HStack, IconButton, Stack } from \"@chakra-ui/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { BiFontSize } from \"react-icons/bi\"\nimport { BsBookmarks } from \"react-icons/bs\"\nimport {\n LuChevronDown,\n LuCircleHelp,\n LuGalleryHorizontal,\n LuNotebookPen,\n LuSearch,\n LuTableOfContents,\n LuZoomIn,\n LuZoomOut,\n} from \"react-icons/lu\"\nimport { MdOutlineFitScreen } from \"react-icons/md\"\nimport { RiGalleryView2 } from \"react-icons/ri\"\nimport {\n RxDoubleArrowDown,\n RxDoubleArrowLeft,\n RxDoubleArrowRight,\n RxDoubleArrowUp,\n} from \"react-icons/rx\"\nimport { useObserve } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { AudioControlsSection } from \"../audio/AudioControlsSection\"\nimport { useHasVisibleAudioTracks } from \"../audio/useHasVisibleAudioTracks\"\nimport {\n hasAnnotationsEnhancer,\n hasGalleryEnhancer,\n hasRefitEnhancer,\n hasSearchEnhancer,\n useReader,\n} from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { PaginationInfoSection } from \"./PaginationInfoSection\"\nimport { QuickBar } from \"./QuickBar\"\nimport { Scrubber } from \"./Scrubber\"\n\nexport const BottomBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (\n item: \"annotations\" | \"search\" | \"help\" | \"toc\" | \"bookmarks\" | \"gallery\",\n ) => void\n }) => {\n const boxRef = useRef<HTMLDivElement>(null)\n const reader = useReader()\n const {\n quickMenuBottomBarBoundingBoxSignal,\n onFontSizeMenuOpenChange,\n onRefitMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"onFontSizeMenuOpenChange\",\n \"onRefitMenuOpenChange\",\n ])\n const { data: navigation } = useObserve(\n () => reader?.navigation.state$,\n [reader],\n )\n const { data: settings } = useObserve(\n () => reader?.settings.values$,\n [reader],\n )\n const { data: zoomState } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) =>\n state.currentScale > 1\n ? \"in\"\n : state.currentScale < 1\n ? \"out\"\n : undefined,\n ),\n ),\n [reader],\n )\n const isZoomingIn = zoomState === \"in\"\n const isZoomingOut = zoomState === \"out\"\n const isScrollingMode = settings?.computedPageTurnMode === \"scrollable\"\n const isVerticalDirection =\n settings?.computedPageTurnDirection === \"vertical\"\n const hasAudioControls = useHasVisibleAudioTracks()\n const [isExtraOpen, setIsExtraOpen] = useState(true)\n\n useEffect(() => {\n if (!boxRef.current) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n quickMenuBottomBarBoundingBoxSignal.update(entry)\n }\n })\n\n resizeObserver.observe(boxRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [quickMenuBottomBarBoundingBoxSignal])\n\n return (\n <QuickBar\n present={open}\n position=\"bottom\"\n display=\"flex\"\n flexDirection=\"column\"\n overflow=\"auto\"\n pb={8}\n px={0}\n ref={boxRef}\n gap={4}\n >\n {hasAudioControls && (\n <HStack px={4} justifyContent=\"center\" width=\"100%\">\n <AudioControlsSection maxW={400} />\n </HStack>\n )}\n <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useCallback, useEffect, useState } from \"react\"\nimport screenfull from \"screenfull\"\n\nconst readFullscreenSupport = () => screenfull.isEnabled\n\nconst readFullscreenState = () =>\n screenfull.isEnabled ? screenfull.isFullscreen : false\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const [isFullscreenSupported, setIsFullscreenSupported] = useState(false)\n\n const syncFullscreenState = useCallback(() => {\n setIsFullscreen((current) => {\n const next = readFullscreenState()\n\n return current === next ? current : next\n })\n setIsFullscreenSupported((current) => {\n const next = readFullscreenSupport()\n\n return current === next ? current : next\n })\n }, [])\n\n const onToggleFullscreenClick = useCallback(async () => {\n if (!screenfull.isEnabled) {\n syncFullscreenState()\n\n return\n }\n\n try {\n if (screenfull.isFullscreen) {\n await screenfull.exit()\n } else {\n await screenfull.request(document.documentElement, {\n navigationUI: `hide`,\n })\n }\n } catch (error) {\n console.error(error)\n } finally {\n syncFullscreenState()\n }\n }, [syncFullscreenState])\n\n useEffect(() => {\n syncFullscreenState()\n\n if (!screenfull.isEnabled) return\n\n screenfull.on(`change`, syncFullscreenState)\n screenfull.on(`error`, syncFullscreenState)\n\n return () => {\n screenfull.off(`change`, syncFullscreenState)\n screenfull.off(`error`, syncFullscreenState)\n }\n }, [syncFullscreenState])\n\n return {\n isFullscreen,\n isFullscreenSupported,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, isFullscreenSupported, onToggleFullscreenClick } =\n useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n {isFullscreenSupported && (\n <IconButton\n aria-label={isFullscreen ? `Exit fullscreen` : `Enter fullscreen`}\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n )}\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { SpreadRotationHint } from \"./navigation/SpreadRotationHint\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <SpreadRotationHint />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"mappings":"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"}