@prose-reader/react-reader 1.281.0 → 1.283.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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/Spine.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/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/notifications/useNotifications.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/ThemedSlider.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 { 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 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 { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\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\n if (!spineElement) return null\n\n return <>{createPortal(children, spineElement)}</>\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 { Spine } from \"../../common/Spine\"\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 <Spine>\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 </Spine>\n )\n})\n","import { isPositionInArea } from \"@prose-reader/enhancer-gestures\"\nimport { 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\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 = isPositionInArea(\n spineItemPagePosition,\n {\n type: \"corner\",\n corner: \"top-right\",\n size: 10,\n unit: \"%\",\n },\n pageSize,\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","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n distinctUntilChanged,\n filter,\n first,\n map,\n NEVER,\n startWith,\n switchMap,\n tap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(map((entries) => entries.some((e) => e.isIntersecting)))\n\n return itemLayoutChanged$.pipe(\n throttleTime(100, undefined, { trailing: true }),\n switchMap(() => {\n return isItemIntersecting$\n .pipe(\n tap((isVisible) => {\n // if the layout change and the item is not visible anymore, cleanup the element\n if (!isVisible) {\n element.innerHTML = \"\"\n }\n }),\n filter((isVisible) => isVisible),\n first(),\n )\n .pipe(\n switchMap(() => {\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer?.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n textAlign=\"center\"\n bgColor=\"white\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import { 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 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 }}\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 { 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 {\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 [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 >\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 <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useEffect } from \"react\"\n\nimport { useCallback } from \"react\"\n\nimport { useState } from \"react\"\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n\n const onToggleFullscreenClick = useCallback(() => {\n if (document.fullscreenElement) {\n return document\n .exitFullscreen()\n .catch(console.error)\n .then(() => {\n setIsFullscreen(false)\n })\n }\n\n return document.documentElement\n .requestFullscreen({ navigationUI: \"hide\" })\n .catch(console.error)\n .then(() => {\n setIsFullscreen(true)\n })\n }, [])\n\n useEffect(() => {\n function fullscreenchangeHandler() {\n setIsFullscreen(!!document.fullscreenElement)\n }\n\n document.addEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n\n return () => {\n document.removeEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n }\n }, [])\n\n return {\n isFullscreen,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, onToggleFullscreenClick } = useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <FloatingProgress />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <BookmarkPageMarkers />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n overflow=\"hidden\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","getDefaultValue","_quickMenuOpen","_onQuickMenuOpenChange","prev","reader","undefined","quickMenuBottomBarBoundingBoxSignal","signal","default","notificationsSubject","Subject","refitMenuOpen","onRefitMenuOpenChange","fontSizeMenuOpen","onFontSizeMenuOpenChange","fontSizeMin","fontSizeMax","uncontrolledFontSize","enableFloatingProgress","selectedHighlight","ReaderContext","createContext","useReaderContextValue","keys","$","_c","context","useContext","t0","pipe","watchKeys","t1","value","pick","t2","compareFn","isShallowEqual","defaultValue","t3","Symbol","for","useObserve","data","useReaderContext","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","memo","children","rest","bottomBarHeight","useSignalValue","borderBoxSize","blockSize","_open","_closed","t4","jsx","Presence","useReader","hasSearchEnhancer","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","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","item_0","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","Spine","spine","element$","spineElement","createPortal","useSpineItem","itemIndex","of","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","useBookmarkOnCornerTap","readerContext","gestures","hooks","register","event$","withLatestFrom","candidates$","candidates","spineItemPageIndex","spineItemPagePosition","pageSize","isPositionInArea","type","corner","size","unit","pageEntry","fromSpineItemPageIndex","usePreventInteractionOnSelection","lastSelectionOnPointerdown$","lastSelectionOnPointerdown","isTargetWithinHighlight","useSyncAnnotationsWithReader","selectedHighlight$","distinctUntilChanged","_temp2","annotationsWithSelected$","combineLatest","_temp3","context_0","context_1","selected","toaster","createToaster","placement","pauseOnPageIdle","Toaster","ChakraToaster","toast","Toast","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","some","hasMarkLabel","ChakraSlider","HStack","SliderThumbs","SliderMarks","For","_","index","_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","current","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","defaultState","x","y","bottom","right","useMeasure","element","setElement","rect","setRect","ResizeObserver","entries","contentRect","observer","observe","disconnect","useLayoutEffect","useAttachSnapshot","measures","readerWithGalleryEnhancer","itemLayoutChanged$","didLayout$","layoutInfo","isItemIntersecting$","observeIntersection","throttleTime","trailing","isVisible","innerHTML","first","gallery","snapshot","isIntersecting","isVisible_0","GalleryItem","onNavigated","mode","locatedResource","goToSpineItem","indexOrId","GalleryDialog","items$","HelpDialog","Heading","Kbd","LuArrowBigRight","LuArrowBigLeft","name","usePagination","pagination","state$","mediaType","startsWith","isOnlyImages","manifest","spineItems","every","hasChapters","isFullyPrePaginated","ANIMATION_NAME_IN_OUT","FloatingProgress","quickMenuOpen","roundedProgress","Math","floor","percentageEstimateOfBook","displayableProgress","useTime","Date","time","setTime","interval","setInterval","clearInterval","TimeIndicator","toLocaleTimeString","navigator","language","hour","minute","FloatingTime","useInterceptExternalLinks","links$","isHtmlTagElement","href","url","URL","window","location","host","confirm","useNotifications","mergeMap","notification","duration","toast$","Observable","subscriber","queueMicrotask","toastId","create","next","complete","error","sameNotification$","skip","n","key","merge","timer","abort","finalize","dismiss","ToggleTip","showArrow","positioning","gutter","ChakraPopover","InfoTip","IconButton","HiOutlineInformationCircle","ProgressBar","ChakraProgress","info","ProgressRoot","ProgressValueText","ValueText","useNavigationContext","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","PaginationInfoSection","round","progress","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","chapterTitle","Fragment","QuickBar","ChakraRcSlider","chakra","RcSlider","ThemedSlider","padding","boxShadow","transform","backgroundColor","reverse","rail","track","handle","borderColor","marginTop","useSliderValues","isUsingSpread","currentRealPage","currentPage","useSignalState","max","min","Scrubber","readingDirection","isScrubberWithinChapter","values","Array","isArray","goToPageOfSpineItem","spineItemId","animation","goToAbsolutePageIndex","onChange","subject","throttleLock","trigger","style","step","BottomBar","onItemClick","boxRef","useRef","zoom","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","isExtraOpen","setIsExtraOpen","resizeObserver","entry","goToLeftOrTopSpineItem","canGoLeftSpineItem","canGoTopSpineItem","RxDoubleArrowUp","RxDoubleArrowLeft","maxWidth","canGoRightSpineItem","canGoBottomSpineItem","goToRightOrBottomSpineItem","RxDoubleArrowDown","RxDoubleArrowRight","Collapsible","LuChevronDown","LuCircleHelp","t26","t27","t28","LuTableOfContents","t29","t30","LuSearch","t31","t32","exit","animate","enter","scale","t33","LuZoomOut","LuZoomIn","t34","t35","t36","BiFontSize","t37","t38","BsBookmarks","t39","t40","MdOutlineFitScreen","t41","t42","t43","LuGalleryHorizontal","t44","t45","RiGalleryView2","t46","t47","t48","currentScale","useFullscreen","isFullscreen","setIsFullscreen","document","fullscreenElement","exitFullscreen","catch","console","then","documentElement","requestFullscreen","navigationUI","onToggleFullscreenClick","fullscreenchangeHandler","addEventListener","removeEventListener","TopBar","manifest$","IoIosArrowBack","IoMdMore","MdFullscreenExit","MdFullscreen","useQuickMenu","onQuickMenuOpenChange","QuickMenu","useQuickMenuToggleGesture","gestures$","selection$","selectionOnPointerdown","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","BehaviorSubject","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","container","containerProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","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/common/SpineItem.tsx","../src/common/Spine.tsx","../src/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/notifications/useNotifications.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/ThemedSlider.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 { 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 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 { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(null, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n distinctUntilChanged,\n filter,\n first,\n map,\n NEVER,\n startWith,\n switchMap,\n tap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(map((entries) => entries.some((e) => e.isIntersecting)))\n\n return itemLayoutChanged$.pipe(\n throttleTime(100, undefined, { trailing: true }),\n switchMap(() => {\n return isItemIntersecting$\n .pipe(\n tap((isVisible) => {\n // if the layout change and the item is not visible anymore, cleanup the element\n if (!isVisible) {\n element.innerHTML = \"\"\n }\n }),\n filter((isVisible) => isVisible),\n first(),\n )\n .pipe(\n switchMap(() => {\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer?.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n textAlign=\"center\"\n bgColor=\"white\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import { 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 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 { 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 {\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 [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 <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useEffect } from \"react\"\n\nimport { useCallback } from \"react\"\n\nimport { useState } from \"react\"\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n\n const onToggleFullscreenClick = useCallback(() => {\n if (document.fullscreenElement) {\n return document\n .exitFullscreen()\n .catch(console.error)\n .then(() => {\n setIsFullscreen(false)\n })\n }\n\n return document.documentElement\n .requestFullscreen({ navigationUI: \"hide\" })\n .catch(console.error)\n .then(() => {\n setIsFullscreen(true)\n })\n }, [])\n\n useEffect(() => {\n function fullscreenchangeHandler() {\n setIsFullscreen(!!document.fullscreenElement)\n }\n\n document.addEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n\n return () => {\n document.removeEventListener(\"fullscreenchange\", fullscreenchangeHandler)\n }\n }, [])\n\n return {\n isFullscreen,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, onToggleFullscreenClick } = useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n overflow=\"hidden\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","getDefaultValue","_quickMenuOpen","_onQuickMenuOpenChange","prev","reader","undefined","quickMenuBottomBarBoundingBoxSignal","signal","default","notificationsSubject","Subject","refitMenuOpen","onRefitMenuOpenChange","fontSizeMenuOpen","onFontSizeMenuOpenChange","fontSizeMin","fontSizeMax","uncontrolledFontSize","enableFloatingProgress","selectedHighlight","ReaderContext","createContext","useReaderContextValue","keys","$","_c","context","useContext","t0","pipe","watchKeys","t1","value","pick","t2","compareFn","isShallowEqual","defaultValue","t3","Symbol","for","useObserve","data","useReaderContext","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","memo","children","rest","bottomBarHeight","useSignalValue","borderBoxSize","blockSize","_open","_closed","t4","jsx","Presence","useReader","hasSearchEnhancer","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","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","item_0","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","useSyncAnnotationsWithReader","selectedHighlight$","distinctUntilChanged","_temp2","annotationsWithSelected$","combineLatest","_temp3","context_0","context_1","selected","SpineItem","container","containerElement","createPortal","Spine","element$","spineElement","items$","spineItems","index","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","some","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","current","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","defaultState","bottom","right","useMeasure","element","setElement","rect","setRect","ResizeObserver","entries","contentRect","observer","observe","disconnect","useLayoutEffect","useAttachSnapshot","measures","readerWithGalleryEnhancer","itemLayoutChanged$","didLayout$","layoutInfo","isItemIntersecting$","observeIntersection","throttleTime","trailing","isVisible","innerHTML","first","gallery","snapshot","isIntersecting","isVisible_0","GalleryItem","onNavigated","mode","locatedResource","goToSpineItem","indexOrId","GalleryDialog","HelpDialog","Heading","Kbd","LuArrowBigRight","LuArrowBigLeft","name","usePagination","pagination","state$","mediaType","startsWith","isOnlyImages","manifest","every","hasChapters","isFullyPrePaginated","ANIMATION_NAME_IN_OUT","FloatingProgress","quickMenuOpen","roundedProgress","floor","percentageEstimateOfBook","displayableProgress","useTime","Date","time","setTime","interval","setInterval","clearInterval","TimeIndicator","toLocaleTimeString","navigator","language","hour","minute","FloatingTime","useInterceptExternalLinks","links$","isHtmlTagElement","href","url","URL","window","location","host","confirm","useNotifications","mergeMap","notification","duration","toast$","Observable","subscriber","queueMicrotask","toastId","create","next","complete","error","sameNotification$","skip","n","key","merge","timer","abort","finalize","dismiss","ToggleTip","showArrow","positioning","gutter","ChakraPopover","InfoTip","IconButton","HiOutlineInformationCircle","ProgressBar","ChakraProgress","info","ProgressRoot","ProgressValueText","ValueText","useNavigationContext","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","PaginationInfoSection","round","progress","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","chapterTitle","Fragment","QuickBar","ChakraRcSlider","chakra","RcSlider","ThemedSlider","padding","boxShadow","backgroundColor","opacity","borderColor","transform","reverse","rail","track","handle","marginTop","useSliderValues","isUsingSpread","currentRealPage","currentPage","useSignalState","max","Scrubber","readingDirection","isScrubberWithinChapter","values","Array","isArray","goToPageOfSpineItem","spineItemId","animation","goToAbsolutePageIndex","onChange","subject","throttleLock","trigger","style","step","BottomBar","onItemClick","boxRef","useRef","zoom","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","isExtraOpen","setIsExtraOpen","resizeObserver","entry","goToLeftOrTopSpineItem","canGoLeftSpineItem","canGoTopSpineItem","RxDoubleArrowUp","RxDoubleArrowLeft","maxWidth","canGoRightSpineItem","canGoBottomSpineItem","goToRightOrBottomSpineItem","RxDoubleArrowDown","RxDoubleArrowRight","Collapsible","LuChevronDown","LuCircleHelp","t26","t27","t28","LuTableOfContents","t29","t30","LuSearch","t31","t32","exit","animate","enter","scale","t33","LuZoomOut","LuZoomIn","t34","t35","t36","BiFontSize","t37","t38","BsBookmarks","t39","t40","MdOutlineFitScreen","t41","t42","t43","LuGalleryHorizontal","t44","t45","RiGalleryView2","t46","t47","t48","currentScale","useFullscreen","isFullscreen","setIsFullscreen","document","fullscreenElement","exitFullscreen","catch","console","then","documentElement","requestFullscreen","navigationUI","onToggleFullscreenClick","fullscreenchangeHandler","addEventListener","removeEventListener","TopBar","manifest$","IoIosArrowBack","IoMdMore","MdFullscreenExit","MdFullscreen","useQuickMenu","onQuickMenuOpenChange","QuickMenu","useQuickMenuToggleGesture","gestures$","selection$","selectionOnPointerdown","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","BehaviorSubject","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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"}