@prose-reader/react-reader 1.301.0 → 1.304.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/components/ui/slider.d.ts +2 -2
- package/dist/index.css +2 -1
- package/dist/index.js +3217 -2842
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +2 -2
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +4 -4
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/useSpineItem.ts","../src/common/useSpineItemReady.ts","../src/annotations/bookmarks/BookmarkPageMarker.tsx","../src/annotations/bookmarks/BookmarkPageMarkers.tsx","../src/annotations/bookmarks/useBookmarkOnCornerTap.ts","../src/annotations/usePreventInteractionOnSelection.ts","../src/annotations/useSyncAnnotationsWithReader.ts","../src/audio/useAudioReader.ts","../src/audio/useAudioVisualizer.ts","../src/audio/useIsCurrentAudioTrack.ts","../src/audio/wave/constants.ts","../src/audio/wave/shaping.ts","../src/audio/wave/drawWave.ts","../src/audio/wave/AudioWaveCanvas.tsx","../src/audio/AudioSpineItem.tsx","../src/common/SpineItem.tsx","../src/common/Spine.tsx","../src/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/common/useTransientValue.ts","../src/navigation/SpreadRotationHint.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/notifications/useNotifications.ts","../src/quickmenu/ThemedSlider.tsx","../src/audio/useAudioState.ts","../src/audio/AudioControlsSection.tsx","../src/audio/useHasVisibleAudioTracks.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/Scrubber.tsx","../src/quickmenu/BottomBar.tsx","../src/common/useFullscreen.ts","../src/quickmenu/TopBar.tsx","../src/quickmenu/useQuickMenu.ts","../src/quickmenu/QuickMenu.tsx","../src/quickmenu/useQuickMenuToggleGesture.ts","../src/components/ui/field.tsx","../src/refit/RefitDialog.tsx","../src/search/SearchListItem.tsx","../src/search/useSearch.ts","../src/search/SearchDialogContent.tsx","../src/search/SearchDialog.tsx","../src/toc/TableOfContentsDialogContent.tsx","../src/toc/TableOfContentsDialog.tsx","../src/zoom/useZoomSettings.ts","../src/zoom/ZoomControls.tsx","../src/ReactReader.tsx"],"sourcesContent":["export const BOOKMARK_AREA_DATA_ATTRIBUTE = `data-bookmark-area`\nexport const MAX_ZOOM_SCALE = 5\n","import type { Reader } from \"@prose-reader/core\"\nimport type {\n Annotation,\n RuntimeAnnotation,\n} from \"@prose-reader/enhancer-annotations\"\nimport type { EnhancerAPI as GesturesEnhancerAPI } from \"@prose-reader/enhancer-gestures\"\nimport { createContext, type Dispatch, type SetStateAction } from \"react\"\nimport { type Signal, signal } from \"reactjrx\"\nimport { Subject } from \"rxjs\"\nimport type { ReaderNotification } from \"../notifications/types\"\nimport type {\n PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nexport type PrivateContextType = {\n /**\n * Internal fallback values used for uncontrolled settings. This way the\n * Reader works as intended but:\n * - there are no persistent settings\n * - the settings are valid only for the current mount runtime\n */\n uncontrolledFontSize: number\n refitMenuOpen: boolean\n onRefitMenuOpenChange: (open: boolean) => void\n fontSizeMenuOpen: boolean\n onFontSizeMenuOpenChange: (open: boolean) => void\n notificationsSubject: Subject<ReaderNotification>\n quickMenuBottomBarBoundingBoxSignal: Signal<ResizeObserverEntry | undefined>\n fontSizeMin: number\n fontSizeMax: number\n _quickMenuOpen: boolean\n _onQuickMenuOpenChange: Dispatch<SetStateAction<boolean>>\n selectedHighlight:\n | {\n highlight?: RuntimeAnnotation\n selection?: {\n selection: Selection\n itemIndex: number\n }\n }\n | undefined\n}\n\nexport type PublicContextType = {\n reader: (Reader & GesturesEnhancerAPI) | undefined\n enableFloatingTime?: boolean\n enableFloatingProgress?: boolean\n onItemClick?: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n quickMenuOpen?: boolean\n onQuickMenuOpenChange?: Dispatch<SetStateAction<boolean>>\n fontSize?: number\n zoomMaxScale?: number\n onFontSizeChange?: (\n from: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | \"internal\",\n value: number,\n ) => void\n fontSizeScope?: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE\n onFontSizeScopeChange?: (scope: PROSE_REACT_READER_SETTINGS_SCOPE) => void\n fontSizeValues?: Record<\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n number | undefined\n >\n annotations?: Annotation[]\n onAnnotationCreate?: (annotation: Annotation) => void\n onAnnotationUpdate?: (\n annotation: Pick<Annotation, \"id\" | \"highlightColor\" | \"notes\">,\n ) => void\n onAnnotationDelete?: (id: string) => void\n}\n\nexport type ReaderContextType = PrivateContextType & PublicContextType\n\nexport const getDefaultValue = (): ReaderContextType => ({\n _quickMenuOpen: false,\n _onQuickMenuOpenChange: (prev) => prev,\n reader: undefined,\n quickMenuBottomBarBoundingBoxSignal: signal<ResizeObserverEntry | undefined>({\n default: undefined,\n }),\n notificationsSubject: new Subject<ReaderNotification>(),\n refitMenuOpen: false,\n onRefitMenuOpenChange: () => {},\n fontSizeMenuOpen: false,\n onFontSizeMenuOpenChange: () => {},\n fontSizeMin: 0.2,\n fontSizeMax: 5,\n uncontrolledFontSize: 1,\n enableFloatingProgress: true,\n selectedHighlight: undefined,\n})\n\nexport const ReaderContext = createContext(\n signal({ default: getDefaultValue() }),\n)\n","import { isShallowEqual, pick, watchKeys } from \"@prose-reader/core\"\nimport { useContext } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { ReaderContext, type ReaderContextType } from \"./context\"\n\nexport const useReaderContextValue = <T extends keyof ReaderContextType>(\n keys: T[],\n) => {\n const context = useContext(ReaderContext)\n\n return useObserve(\n () => context.pipe(watchKeys(keys)),\n {\n compareFn: isShallowEqual,\n defaultValue: pick(context.value, keys),\n },\n [],\n ).data\n}\n\nexport const useReaderContext = () => {\n return useContext(ReaderContext)\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSignalValue } from \"reactjrx\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS = 24\n\n// @todo use Popover\nexport const FloatingMenu = memo(\n ({\n children,\n ...rest\n }: {\n present: boolean\n children: React.ReactNode\n } & PresenceProps) => {\n const { quickMenuBottomBarBoundingBoxSignal } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"zoomMaxScale\",\n ])\n const quickMenuBottomBarBoundingBox = useSignalValue(\n quickMenuBottomBarBoundingBoxSignal,\n )\n const bottomBarHeight =\n quickMenuBottomBarBoundingBox?.borderBoxSize?.[0]?.blockSize ||\n SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS\n\n return (\n <Presence\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n position=\"absolute\"\n bottom={`calc(${bottomBarHeight}px + var(--chakra-spacing-4))`}\n right={4}\n backgroundColor=\"bg.panel\"\n shadow=\"sm\"\n borderRadius=\"md\"\n p={2}\n display=\"flex\"\n flexDirection=\"row\"\n gap={2}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport type { AnnotationsEnhancerAPI } from \"@prose-reader/enhancer-annotations\"\nimport type { AudioEnhancerAPI } from \"@prose-reader/enhancer-audio\"\nimport type { GalleryEnhancerAPI } from \"@prose-reader/enhancer-gallery\"\nimport type { RefitEnhancerAPI } from \"@prose-reader/enhancer-refit\"\nimport type { SearchEnhancerAPI } from \"@prose-reader/enhancer-search\"\nimport { useReaderContextValue } from \"./useReaderContext\"\n\nexport const useReader = () => {\n const { reader } = useReaderContextValue([\"reader\"])\n\n return reader\n}\n\nexport const hasSearchEnhancer = (\n reader?: Reader,\n): reader is Reader & SearchEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_SEARCH\" in reader\n}\n\nexport const hasAudioEnhancer = (\n reader?: Reader,\n): reader is Reader & AudioEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_AUDIO\" in reader\n}\n\nexport const hasAnnotationsEnhancer = (\n reader?: Reader,\n): reader is Reader & AnnotationsEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_ANNOTATIONS\" in reader\n}\n\nexport const hasGalleryEnhancer = (\n reader?: Reader,\n): reader is Reader & GalleryEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_GALLERY\" in reader\n}\n\nexport const hasRefitEnhancer = (\n reader?: Reader,\n): reader is Reader & RefitEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_REFIT\" in reader\n}\n","import { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useReaderWithAnnotations = () => {\n const reader = useReader()\n const readerWithBookmarks = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return readerWithBookmarks\n}\n","import { Button } from \"@chakra-ui/react\"\nimport { FaEdit } from \"react-icons/fa\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { EMPTY, map, startWith, switchMap } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const AnnotateControls = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n const { selectedHighlight } = useReaderContextValue([\"selectedHighlight\"])\n const { data: isOpen } = useObserve(\n () =>\n reader?.selection.selectionOver$.pipe(\n switchMap(() =>\n reader.selection.selectionEnd$.pipe(\n map(() => false),\n startWith(true),\n ),\n ),\n ) ?? EMPTY,\n { defaultValue: false },\n [reader],\n )\n\n return (\n <FloatingMenu present={isOpen && !selectedHighlight}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n const selection = reader?.selection.getSelection()\n\n if (!selection) return\n\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n selection,\n },\n }))\n }}\n >\n <FaEdit />\n Annotate\n </Button>\n <Button variant=\"outline\" size=\"sm\" disabled>\n <LuNotebookPen />\n Bookmark\n </Button>\n </FloatingMenu>\n )\n}\n","export const truncateText = (text: string, maxLength = 50): string => {\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength)}...`\n}\n","import type { ButtonProps } from \"@chakra-ui/react\"\nimport { IconButton as ChakraIconButton } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { LuX } from \"react-icons/lu\"\n\nexport type CloseButtonProps = ButtonProps\n\nexport const CloseButton = React.forwardRef<\n HTMLButtonElement,\n CloseButtonProps\n>(function CloseButton(props, ref) {\n return (\n <ChakraIconButton variant=\"ghost\" aria-label=\"Close\" ref={ref} {...props}>\n {props.children ?? <LuX />}\n </ChakraIconButton>\n )\n})\n","import { Drawer as ChakraDrawer, Portal } from \"@chakra-ui/react\"\nimport { CloseButton } from \"./close-button\"\nimport * as React from \"react\"\n\ninterface DrawerContentProps extends ChakraDrawer.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n offset?: ChakraDrawer.ContentProps[\"padding\"]\n}\n\nexport const DrawerContent = React.forwardRef<\n HTMLDivElement,\n DrawerContentProps\n>(function DrawerContent(props, ref) {\n const { children, portalled = true, portalRef, offset, ...rest } = props\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner padding={offset}>\n <ChakraDrawer.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n )\n})\n\nexport const DrawerCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n return (\n <ChakraDrawer.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref} />\n </ChakraDrawer.CloseTrigger>\n )\n})\n\nexport const DrawerTrigger = ChakraDrawer.Trigger\nexport const DrawerRoot = ChakraDrawer.Root\nexport const DrawerFooter = ChakraDrawer.Footer\nexport const DrawerHeader = ChakraDrawer.Header\nexport const DrawerBody = ChakraDrawer.Body\nexport const DrawerBackdrop = ChakraDrawer.Backdrop\nexport const DrawerDescription = ChakraDrawer.Description\nexport const DrawerTitle = ChakraDrawer.Title\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger\n","import { Box, Button, Stack, Text, Textarea } from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { tap } from \"rxjs\"\nimport { truncateText } from \"../common/utils\"\nimport {\n DrawerBackdrop,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerRoot,\n} from \"../components/ui/drawer\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nconst HIGHLIGHT_COLORS = [\n \"rgba(216, 191, 216, 1)\", // Light purple\n \"rgba(255, 225, 125, 1)\", // Soft yellow\n \"rgba(144, 238, 144, 1)\", // Light green\n \"rgba(173, 216, 230, 1)\", // Light blue\n \"rgba(255, 182, 193, 1)\", // Light pink\n] as const\n\nexport const AnnotationDrawer = memo(() => {\n const reader = useReaderWithAnnotations()\n const {\n selectedHighlight,\n onAnnotationCreate,\n onAnnotationUpdate,\n onAnnotationDelete,\n } = useReaderContextValue([\n \"selectedHighlight\",\n \"onAnnotationCreate\",\n \"onAnnotationUpdate\",\n \"onAnnotationDelete\",\n ])\n const context = useReaderContext()\n const { highlight, selection } = selectedHighlight ?? {}\n const [selectedColor, setSelectedColor] = useState<string>(\n HIGHLIGHT_COLORS[0],\n )\n const [contents, setContents] = useState<string>(\"\")\n const isOpen = !!(selection ?? highlight)\n\n const onClose = () => {\n context.update((state) => ({\n ...state,\n selectedHighlight: undefined,\n }))\n }\n\n const onOpenChange: ComponentProps<typeof DrawerRoot>[\"onOpenChange\"] = (\n event,\n ) => {\n if (!event.open) {\n onClose()\n }\n }\n\n const highlightColor = highlight?.highlightColor\n const highlightContent = highlight?.notes\n\n useEffect(() => {\n void isOpen\n\n setContents(\"\")\n }, [isOpen])\n\n useEffect(() => {\n setContents(highlightContent ?? \"\")\n }, [highlightContent])\n\n useEffect(() => {\n void isOpen\n\n if (highlightColor) {\n setSelectedColor(highlightColor)\n } else {\n setSelectedColor(HIGHLIGHT_COLORS[0])\n }\n }, [highlightColor, isOpen])\n\n const onOpenDrawerOnTap = useCallback(\n function openDrawerOnTap() {\n return reader?.annotations.highlightTap$.pipe(\n tap(({ highlight }) => {\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n highlight,\n },\n }))\n }),\n )\n },\n [reader, context],\n )\n\n useSubscribe(onOpenDrawerOnTap)\n\n return (\n <DrawerRoot placement=\"bottom\" onOpenChange={onOpenChange} open={isOpen}>\n <DrawerBackdrop />\n <DrawerContent>\n <DrawerHeader borderBottomWidth=\"1px\">\n {highlight\n ? \"Highlight\"\n : `Selection: \"${truncateText(selection?.selection?.toString() ?? \"\", 10)}\"`}\n </DrawerHeader>\n <DrawerBody gap={4} display=\"flex\" flexDirection=\"column\" pb={4}>\n <Stack>\n <Stack gap={2} flexDirection=\"row\">\n {HIGHLIGHT_COLORS.map((color) => (\n <Box\n bgColor={color}\n height={10}\n width={10}\n key={color}\n borderRadius=\"50%\"\n cursor=\"pointer\"\n {...(selectedColor === color && {\n border: \"4px solid white\",\n })}\n onClick={() => setSelectedColor(color)}\n />\n ))}\n </Stack>\n <Text>Annotation:</Text>\n <Textarea\n value={contents}\n onChange={(event) => setContents(event.target.value)}\n />\n </Stack>\n {!!selection && (\n <Button\n onClick={() => {\n onClose()\n\n const annotation = reader?.annotations.createAnnotation({\n ...selection,\n highlightColor: selectedColor,\n notes: contents,\n })\n\n if (annotation) {\n onAnnotationCreate?.(annotation)\n }\n }}\n >\n Highlight\n </Button>\n )}\n {!!highlight && (\n <Stack direction=\"row\">\n <Button\n flex={1}\n onClick={() => {\n onClose()\n\n onAnnotationUpdate?.({\n id: highlight.id,\n highlightColor: selectedColor,\n notes: contents,\n })\n }}\n >\n Update\n </Button>\n <Button\n flex={1}\n variant=\"surface\"\n onClick={() => {\n onClose()\n\n onAnnotationDelete?.(highlight.id)\n }}\n >\n Remove\n </Button>\n </Stack>\n )}\n </DrawerBody>\n </DrawerContent>\n </DrawerRoot>\n )\n})\n","import { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { CloseButton } from \"./close-button\"\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n backdrop?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(function DialogContent(props, ref) {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n )\n})\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref}>\n {props.children}\n </CloseButton>\n </ChakraDialog.CloseTrigger>\n )\n})\n\nexport const DialogRoot = ChakraDialog.Root\nexport const DialogFooter = ChakraDialog.Footer\nexport const DialogHeader = ChakraDialog.Header\nexport const DialogBody = ChakraDialog.Body\nexport const DialogBackdrop = ChakraDialog.Backdrop\nexport const DialogTitle = ChakraDialog.Title\nexport const DialogDescription = ChakraDialog.Description\nexport const DialogTrigger = ChakraDialog.Trigger\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger\n","import { isDefined, useObserve } from \"reactjrx\"\nimport { filter, map, switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotation = (id: string) => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n map((items) => items.find((item) => item.id === id)),\n filter(isDefined),\n switchMap((item) => readerWithAnnotations.locateResource(item)),\n ),\n [readerWithAnnotations],\n )\n}\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useReader } from \"../context/useReader\"\nimport { useAnnotation } from \"./useAnnotation\"\n\nexport const AnnotationListItem = ({\n id,\n onNavigate,\n allowLeftIcon = true,\n}: {\n id: string\n onNavigate: () => void\n allowLeftIcon?: boolean\n}) => {\n const reader = useReader()\n const { data: annotation } = useAnnotation(id)\n const textContent =\n annotation?.meta.range?.toString() || annotation?.meta.node?.textContent\n\n return (\n <List.Item>\n <Link\n href=\"#\"\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToCfi(annotation?.meta.cfi ?? \"\")\n }}\n >\n {annotation?.resource?.notes ? (\n <List.Indicator asChild>\n <LuNotebookPen />\n </List.Indicator>\n ) : allowLeftIcon ? (\n <List.Indicator asChild visibility=\"hidden\">\n <LuNotebookPen />\n </List.Indicator>\n ) : null}\n <Stack gap={0}>\n {textContent ? (\n <Text lineClamp={2} fontSize=\"md\">\n {textContent}\n </Text>\n ) : (\n <Text lineClamp={2} fontSize=\"md\" fontStyle=\"italic\">\n Page {(annotation?.meta.absolutePageIndex ?? 0) + 1}\n </Text>\n )}\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Book page: ${\n annotation?.meta?.absolutePageIndex !== undefined\n ? annotation.meta.absolutePageIndex + 1\n : \"unknown (not loaded)\"\n }`}</Text>\n </Stack>\n </Link>\n </List.Item>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotations = () => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n switchMap((highlights) => {\n return readerWithAnnotations.locateResource(highlights)\n }),\n ),\n [readerWithAnnotations],\n )\n}\n","import { useAnnotations } from \"./useAnnotations\"\n\nexport const useHighlights = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter((annotation) => annotation.meta.isCfiRange),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"./AnnotationListItem\"\nimport { useHighlights } from \"./useHighlights\"\n\nexport const AnnotationsList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useHighlights()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n />\n ))}\n </List.Root>\n )\n}\n","import { useAnnotations } from \"../useAnnotations\"\n\nexport const useBookmarks = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter(\n (annotation) => !annotation.meta.isCfiRange && !annotation.resource.notes,\n ),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"../AnnotationListItem\"\nimport { useBookmarks } from \"./useBookmarks\"\n\nexport const BookmarksList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useBookmarks()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n allowLeftIcon={false}\n />\n ))}\n </List.Root>\n )\n}\n","import { Tabs } from \"@chakra-ui/react\"\nimport { memo, useState } from \"react\"\nimport { LuBookmark, LuNotebookPen } from \"react-icons/lu\"\nimport { AnnotationsList } from \"./AnnotationsList\"\nimport { BookmarksList } from \"./bookmarks/BookmarksList\"\n\nexport const AnnotationsDialogContent = memo(\n ({\n onNavigate,\n defaultTab,\n }: {\n onNavigate: () => void\n defaultTab: \"bookmarks\" | \"annotations\" | undefined\n }) => {\n const [tab, setTab] = useState(defaultTab ?? \"bookmarks\")\n\n return (\n <Tabs.Root\n value={tab}\n onValueChange={(e) => setTab(e.value as \"bookmarks\" | \"annotations\")}\n >\n <Tabs.List>\n <Tabs.Trigger value=\"bookmarks\">\n <LuBookmark />\n Bookmarks\n </Tabs.Trigger>\n <Tabs.Trigger value=\"annotations\">\n <LuNotebookPen />\n Annotations\n </Tabs.Trigger>\n <Tabs.Indicator />\n </Tabs.List>\n <Tabs.Content value=\"bookmarks\">\n <BookmarksList onNavigate={onNavigate} />\n </Tabs.Content>\n <Tabs.Content value=\"annotations\">\n <AnnotationsList onNavigate={onNavigate} />\n </Tabs.Content>\n </Tabs.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { AnnotationsDialogContent } from \"./AnnotationsDialogContent\"\n\nexport const AnnotationsDialog = memo(\n ({\n openWith,\n setOpen,\n onNavigate,\n }: {\n openWith: \"bookmarks\" | \"annotations\" | undefined\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={!!openWith}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Annotations</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1}>\n <AnnotationsDialogContent\n onNavigate={onNavigate}\n defaultTab={openWith}\n />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useObserve } from \"reactjrx\"\nimport { EMPTY, map, of } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useSpineItem = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const reader = useReader()\n\n return useObserve(() => {\n if (!reader) return EMPTY\n\n if (itemIndex !== undefined)\n return of(reader.spine.spineItemsManager.get(itemIndex))\n\n if (absolutePageIndex !== undefined) {\n return reader.spine.pages\n .observeFromAbsolutePageIndex(absolutePageIndex)\n .pipe(\n map((page) => reader.spine.spineItemsManager.get(page?.itemIndex)),\n )\n }\n\n return EMPTY\n }, [itemIndex, absolutePageIndex, reader])\n}\n","import { useObserve } from \"reactjrx\"\nimport { NEVER } from \"rxjs\"\nimport { useSpineItem } from \"./useSpineItem\"\n\nexport const useSpineItemReady = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const { data: spineItem } = useSpineItem({ absolutePageIndex, itemIndex })\n const { data: isReady } = useObserve(\n () => (!spineItem ? NEVER : spineItem.isReady$),\n [spineItem],\n )\n\n return { spineItem, isReady }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSpineItemReady } from \"../../common/useSpineItemReady\"\nimport { BOOKMARK_AREA_DATA_ATTRIBUTE } from \"../../constants\"\nimport { useAnnotations } from \"../useAnnotations\"\n\nexport const BookmarkPageMarker = memo(\n ({\n absolutePageIndex,\n left,\n top,\n width,\n }: {\n absolutePageIndex: number\n left: number\n top: number\n width: number\n }) => {\n const { isReady: isItemReady } = useSpineItemReady({\n absolutePageIndex,\n })\n const { data: bookmarks } = useAnnotations()\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex === absolutePageIndex &&\n !bookmark.meta.isCfiRange,\n )\n\n /**\n * Stale bookmarks means we cannot assert at the moment whether the page is marked or not.\n * In this case we just hide the bookmark button. You may want to have different UX to handle\n * this case.\n *\n * This also avoid having a flash where you show an non bookmarked icon and right away change it with\n * a valid marked page icon.\n */\n if (!isItemReady) return null\n\n const markerSize = (width * 0.1) / 2\n\n return (\n <Presence\n present={!!bookmarkForPage}\n lazyMount\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n >\n <Box\n data-bookmark-area={BOOKMARK_AREA_DATA_ATTRIBUTE}\n position=\"absolute\"\n left={left + width}\n transform=\"translateX(-100%)\"\n pointerEvents=\"none\"\n top={top}\n width={markerSize}\n height={markerSize}\n _before={{\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n borderTop: `${markerSize}px solid #03030373`,\n borderLeft: `${markerSize}px solid transparent`,\n }}\n />\n </Presence>\n )\n },\n)\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../../context/useReader\"\nimport { BookmarkPageMarker } from \"./BookmarkPageMarker\"\n\nexport const BookmarkPageMarkers = memo(() => {\n const reader = useReader()\n const { data: pages } = useObserve(() => reader?.layoutInfo$, [reader])\n\n return (\n <>\n {pages?.pages.map(\n ({ absoluteLayout: { left, top, width } }, pageIndex) => (\n <BookmarkPageMarker\n key={pageIndex}\n absolutePageIndex={pageIndex}\n left={left}\n top={top}\n width={width}\n />\n ),\n )}\n </>\n )\n})\n","import { useEffect } from \"react\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderContext } from \"../../context/useReaderContext\"\nimport { useAnnotations } from \"../useAnnotations\"\nimport { useReaderWithAnnotations } from \"../useReaderWithAnnotations\"\n\nconst CONTINUE_TAP_GESTURE = true\nconst BOOKMARK_CORNER_SIZE_PERCENT = 10\n\nconst isTopRightCornerPosition = ({\n position,\n containerSize,\n sizePercent,\n}: {\n position: {\n x: number\n y: number\n }\n containerSize: {\n width: number\n height: number\n }\n sizePercent: number\n}) => {\n const actualSize =\n Math.min(containerSize.width, containerSize.height) * (sizePercent / 100)\n\n return (\n position.x > containerSize.width - actualSize && position.y < actualSize\n )\n}\n\nexport const useBookmarkOnCornerTap = () => {\n const reader = useReaderWithAnnotations()\n const { data: bookmarks } = useAnnotations()\n const readerContext = useReaderContext()\n\n useEffect(() => {\n if (!reader) return\n\n const unSub = reader.gestures.hooks.register(\n \"beforeTapGesture\",\n ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader?.annotations.candidates$),\n map(([context, candidates]) => {\n if (!context.page) return CONTINUE_TAP_GESTURE\n\n const {\n spineItem,\n spineItemPageIndex,\n spineItemPagePosition,\n pageSize,\n } = context.page\n\n const hasTapOnTopRightCorner = isTopRightCornerPosition({\n position: spineItemPagePosition,\n containerSize: pageSize,\n sizePercent: BOOKMARK_CORNER_SIZE_PERCENT,\n })\n\n if (hasTapOnTopRightCorner) {\n const pageEntry = reader.spine.pages.fromSpineItemPageIndex(\n spineItem,\n spineItemPageIndex,\n )\n\n if (!pageEntry) return CONTINUE_TAP_GESTURE\n\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex ===\n pageEntry.absolutePageIndex &&\n bookmark.meta.range === undefined,\n )\n\n if (bookmarkForPage) {\n readerContext.value.onAnnotationDelete?.(\n bookmarkForPage.resource.id,\n )\n\n return !CONTINUE_TAP_GESTURE\n }\n\n const canBookmarkPage = candidates?.[pageEntry.absolutePageIndex]\n\n if (canBookmarkPage) {\n const annotation = reader?.annotations.createAnnotation({\n absolutePageIndex: pageEntry.absolutePageIndex,\n })\n\n if (annotation) {\n readerContext.value.onAnnotationCreate?.(annotation)\n }\n\n return !CONTINUE_TAP_GESTURE\n }\n }\n\n return CONTINUE_TAP_GESTURE\n }),\n ),\n )\n\n return unSub\n }, [reader, bookmarks, readerContext])\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const usePreventInteractionOnSelection = () => {\n const reader = useReaderWithAnnotations()\n\n const beforeTapGesture = useCallback(\n () =>\n /**\n * Hook used to prevent some gestures from being handled.\n */\n reader?.gestures.hooks.register(\"beforeTapGesture\", ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader.selection.lastSelectionOnPointerdown$),\n map(([{ event }, lastSelectionOnPointerdown]) => {\n const target = event.event.target\n\n /**\n * In this case if we have a gesture on an annotation, we want to prevent\n * it.\n */\n const wasOrIsOnSelection =\n (target && reader.annotations.isTargetWithinHighlight(target)) ||\n lastSelectionOnPointerdown\n\n return !wasOrIsOnSelection\n }),\n ),\n ),\n [reader],\n )\n\n useSubscribe(beforeTapGesture)\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { combineLatest, distinctUntilChanged, map } from \"rxjs\"\nimport { useReaderContext } from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const useSyncAnnotationsWithReader = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n\n const syncAnnotationsWithReader = useCallback(() => {\n if (reader) {\n const selectedHighlight$ = context.pipe(\n map((context) => context.selectedHighlight?.highlight?.id),\n distinctUntilChanged(),\n )\n\n const annotations$ = context.pipe(\n map((context) => context.annotations ?? []),\n distinctUntilChanged(),\n )\n\n const annotationsWithSelected$ = combineLatest([\n annotations$,\n selectedHighlight$,\n ]).pipe(\n map(([annotations, selectedHighlight]) =>\n annotations.map((annotation) => ({\n ...annotation,\n selected: annotation.id === selectedHighlight,\n })),\n ),\n )\n\n reader.annotations.update({ annotations$: annotationsWithSelected$ })\n }\n }, [reader, context])\n\n useSubscribe(syncAnnotationsWithReader)\n}\n","import type { AudioEnhancedReader } from \"@prose-reader/enhancer-audio\"\nimport { hasAudioEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAudioReader = (): AudioEnhancedReader | undefined => {\n const reader = useReader()\n\n return hasAudioEnhancer(reader) ? reader : undefined\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioVisualizer = (enabled = true) => {\n const audioReader = useAudioReader()\n const { data: visualizer } = useObserve<AudioVisualizerState | undefined>(\n () => (enabled ? audioReader?.audio.visualizer$ : undefined),\n [enabled, audioReader],\n )\n\n return visualizer\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useIsCurrentAudioTrack = ({\n enabled = true,\n trackId,\n}: {\n enabled?: boolean\n trackId: string\n}) => {\n const audioReader = useAudioReader()\n const { data: isCurrentTrack = false } = useObserve(\n () =>\n enabled\n ? audioReader?.audio.state$.pipe(\n map((state) => state.currentTrack?.id === trackId),\n distinctUntilChanged(),\n )\n : undefined,\n [enabled, trackId, audioReader],\n )\n\n return isCurrentTrack\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\n\nexport const FALLBACK_TOP_COLOR = `#93c5fd`\nexport const FALLBACK_BOTTOM_COLOR = `#3b82f6`\nexport const MIN_BAR_HEIGHT = 1\nexport const MAX_BAR_HEIGHT_RATIO = 0.1\nexport const IDLE_LEVEL = 0.08\nexport const EDGE_FADE_PORTION = 0.25\nexport const CENTER_EMPHASIS_RATIO = 0.15\n\nexport const DEFAULT_STATE_BASE_LEVEL = 0.02\nexport const DEFAULT_STATE_PEAK_LEVEL = 0.145\nexport const DEFAULT_STATE_HILL_SPREAD = 0.52\nexport const DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO = 0.16\nexport const DEFAULT_STATE_OPACITY = 0.5\nexport const DEFAULT_STATE_TEXTURE_AMOUNT = 0.34\n\nexport const DEFAULT_VISUALIZER_STATE: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n","import {\n DEFAULT_STATE_BASE_LEVEL,\n DEFAULT_STATE_HILL_SPREAD,\n DEFAULT_STATE_PEAK_LEVEL,\n DEFAULT_STATE_TEXTURE_AMOUNT,\n IDLE_LEVEL,\n} from \"./constants\"\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport const smoothstep = (edge0: number, edge1: number, value: number) => {\n if (edge0 === edge1) return Number(value >= edge1)\n\n const normalized = clamp((value - edge0) / (edge1 - edge0), 0, 1)\n\n return normalized * normalized * (3 - 2 * normalized)\n}\n\nconst getDefaultTexture = (progress: number) => {\n const lowFrequency = Math.sin(progress * Math.PI * 6 + 0.8)\n const highFrequency = Math.sin(progress * Math.PI * 14 + 1.7)\n\n return clamp(0.5 + lowFrequency * 0.3 + highFrequency * 0.2, 0, 1)\n}\n\nexport const getDefaultDisplayBars = (numBars: number) =>\n Array.from({ length: numBars }, (_, index) => {\n const progress = numBars === 1 ? 0.5 : index / (numBars - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const hillProfile =\n 1 - smoothstep(DEFAULT_STATE_HILL_SPREAD, 1, centerDistance)\n const texture = getDefaultTexture(progress)\n const texturedHill =\n hillProfile *\n (1 -\n DEFAULT_STATE_TEXTURE_AMOUNT +\n texture * DEFAULT_STATE_TEXTURE_AMOUNT)\n\n return clamp(\n DEFAULT_STATE_BASE_LEVEL + DEFAULT_STATE_PEAK_LEVEL * texturedHill,\n 0,\n 1,\n )\n })\n\nconst getAverage = (values: number[]) => {\n if (values.length === 0) return 0\n\n return values.reduce((total, value) => total + value, 0) / values.length\n}\n\nexport const hasMeaningfulLevels = (values: number[]) =>\n values.some((value) => value > 0.001)\n\nexport const getNormalizedDisplayBarCount = (value: number) => {\n const safeValue = Math.max(1, Math.floor(value))\n\n return safeValue % 2 === 0 ? safeValue + 1 : safeValue\n}\n\nexport const getMirroredDisplayBars = (\n values: number[],\n displayBarCount: number,\n) => {\n const normalizedDisplayBarCount =\n getNormalizedDisplayBarCount(displayBarCount)\n const centerOutSeedCount = Math.floor(normalizedDisplayBarCount / 2) + 1\n\n const centerOutSeed = Array.from(\n { length: centerOutSeedCount },\n (_, index) => {\n const start = Math.floor((index * values.length) / centerOutSeedCount)\n const end = Math.max(\n start + 1,\n Math.floor(((index + 1) * values.length) / centerOutSeedCount),\n )\n const average = getAverage(values.slice(start, end))\n\n return clamp(average, 0, 1)\n },\n )\n\n const centerBar = centerOutSeed[0] ?? IDLE_LEVEL\n const outerBars = centerOutSeed.slice(1)\n\n return [...outerBars.slice().reverse(), centerBar, ...outerBars]\n}\n\nexport const resolveGradientColors = (\n element: HTMLElement,\n {\n topVariable,\n topFallback,\n bottomVariable,\n bottomFallback,\n }: {\n topVariable: string\n topFallback: string\n bottomVariable: string\n bottomFallback: string\n },\n) => {\n const styles = window.getComputedStyle(element)\n const topColor = styles.getPropertyValue(topVariable).trim() || topFallback\n const bottomColor =\n styles.getPropertyValue(bottomVariable).trim() || bottomFallback\n\n return {\n topColor,\n bottomColor,\n }\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport {\n CENTER_EMPHASIS_RATIO,\n DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO,\n DEFAULT_STATE_OPACITY,\n EDGE_FADE_PORTION,\n MAX_BAR_HEIGHT_RATIO,\n MIN_BAR_HEIGHT,\n} from \"./constants\"\nimport {\n clamp,\n getDefaultDisplayBars,\n getMirroredDisplayBars,\n hasMeaningfulLevels,\n smoothstep,\n} from \"./shaping\"\n\ntype WaveSize = {\n width: number\n height: number\n}\n\ntype DrawWaveArgs = {\n canvas: HTMLCanvasElement\n size: WaveSize\n visualizer: AudioVisualizerState\n displayBarCount: number\n displayedBars: number[]\n fillStyle: CanvasGradient | string\n}\n\nexport const drawWave = ({\n canvas,\n size,\n visualizer,\n displayBarCount,\n displayedBars,\n fillStyle,\n}: DrawWaveArgs) => {\n const context = canvas.getContext(`2d`)\n const { width, height } = size\n\n if (!context || width <= 0 || height <= 0) return displayedBars\n\n context.clearRect(0, 0, width, height)\n\n const hasPlayedLevels = hasMeaningfulLevels(visualizer.levels)\n const isDefaultState = !visualizer.isActive && !hasPlayedLevels\n const displayBars = isDefaultState\n ? getDefaultDisplayBars(displayBarCount)\n : getMirroredDisplayBars(visualizer.levels, displayBarCount)\n\n const nextDisplayedBars =\n displayedBars.length !== displayBars.length\n ? Array.from({ length: displayBars.length }, () => 0)\n : displayedBars\n\n const easedBars = visualizer.isActive\n ? nextDisplayedBars.map((value, index) => {\n const targetValue = displayBars[index] ?? 0\n const easing = 0.28\n\n return value + (targetValue - value) * easing\n })\n : [...displayBars]\n\n const gap = Math.round(\n clamp(width / Math.max(easedBars.length, 1) / 2.8, 1, 4),\n )\n const barWidth = Math.max(\n 2,\n Math.floor((width - gap * (easedBars.length - 1)) / easedBars.length),\n )\n const totalWidth = barWidth * easedBars.length + gap * (easedBars.length - 1)\n const startX = Math.max(0, (width - totalWidth) / 2)\n const centerY = height / 2\n const maxHeight = Math.max(\n MIN_BAR_HEIGHT,\n height *\n (isDefaultState\n ? DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO\n : MAX_BAR_HEIGHT_RATIO),\n )\n context.fillStyle = fillStyle\n\n for (const [index, rawValue] of easedBars.entries()) {\n const amplitude = clamp(rawValue, 0, 1)\n const progress =\n easedBars.length === 1 ? 0.5 : index / (easedBars.length - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const centerProfile = 1 - smoothstep(0, 1, centerDistance)\n const emphasizedAmplitude =\n (amplitude * (1 + CENTER_EMPHASIS_RATIO * centerProfile)) /\n (1 + CENTER_EMPHASIS_RATIO * centerProfile * amplitude)\n const heightProgress = isDefaultState\n ? amplitude\n : emphasizedAmplitude ** 1.15\n const barHeight = Math.max(MIN_BAR_HEIGHT, heightProgress * maxHeight)\n const barRadius = Math.min(barWidth / 2, barHeight / 2)\n const x = Math.round(startX + index * (barWidth + gap))\n const y = centerY - barHeight / 2\n const edgeFade =\n smoothstep(0, EDGE_FADE_PORTION, progress) *\n (1 - smoothstep(1 - EDGE_FADE_PORTION, 1, progress))\n\n context.globalAlpha = clamp(\n (isDefaultState\n ? DEFAULT_STATE_OPACITY\n : visualizer.isActive\n ? 0.95\n : 0.75) * edgeFade,\n 0,\n 1,\n )\n context.beginPath()\n context.roundRect(x, y, barWidth, barHeight, barRadius)\n context.fill()\n }\n\n context.globalAlpha = 1\n\n return easedBars\n}\n","import { Box, useBreakpointValue } from \"@chakra-ui/react\"\nimport {\n setPropertyIfChanged,\n setStylePropertyIfChanged,\n} from \"@prose-reader/core\"\nimport type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { FALLBACK_BOTTOM_COLOR, FALLBACK_TOP_COLOR } from \"./constants\"\nimport { drawWave as drawWaveFrame } from \"./drawWave\"\nimport { getNormalizedDisplayBarCount, resolveGradientColors } from \"./shaping\"\n\nconst DEFAULT_VISUALIZER: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n\nexport const AudioWaveCanvas = ({\n visualizer,\n}: {\n visualizer?: AudioVisualizerState\n}) => {\n const displayBarCount = getNormalizedDisplayBarCount(\n useBreakpointValue({\n base: 29,\n md: 35,\n lg: 41,\n xl: 49,\n }) ?? 29,\n )\n const canvasRef = useRef<HTMLCanvasElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const frameRef = useRef<number | undefined>(undefined)\n const visualizerRef = useRef<AudioVisualizerState>(\n visualizer ?? DEFAULT_VISUALIZER,\n )\n const displayedBarsRef = useRef<number[]>([])\n const fillStyleRef = useRef<CanvasGradient | string>(FALLBACK_BOTTOM_COLOR)\n const sizeRef = useRef({\n width: 0,\n height: 0,\n })\n\n /**\n * Cache the gradient outside the animation loop to avoid repeated\n * `getComputedStyle()` and gradient allocation during playback.\n *\n * Limitation: the resolved Chakra CSS variable colors are treated as static\n * for the current canvas size. Theme or palette changes after mount are not\n * picked up immediately; the gradient is refreshed on resize and remount.\n */\n const refreshFillStyle = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas || sizeRef.current.height <= 0) return\n\n const context = canvas.getContext(`2d`)\n\n if (!context) return\n\n const { topColor, bottomColor } = resolveGradientColors(canvas, {\n topVariable: `--audio-wave-top-color`,\n topFallback: FALLBACK_TOP_COLOR,\n bottomVariable: `--audio-wave-bottom-color`,\n bottomFallback: FALLBACK_BOTTOM_COLOR,\n })\n const gradient = context.createLinearGradient(\n 0,\n 0,\n 0,\n sizeRef.current.height,\n )\n\n gradient.addColorStop(0, topColor)\n gradient.addColorStop(1, bottomColor)\n\n fillStyleRef.current = gradient\n }, [])\n\n const drawWave = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas) return\n\n const visualizer = visualizerRef.current\n\n displayedBarsRef.current = drawWaveFrame({\n canvas,\n size: sizeRef.current,\n visualizer,\n displayBarCount,\n displayedBars: displayedBarsRef.current,\n fillStyle: fillStyleRef.current,\n })\n }, [displayBarCount])\n\n const stopAnimation = useCallback(() => {\n if (frameRef.current !== undefined) {\n cancelAnimationFrame(frameRef.current)\n frameRef.current = undefined\n }\n }, [])\n\n const startAnimation = useCallback(() => {\n if (frameRef.current !== undefined) return\n\n const tick = () => {\n const visualizer = visualizerRef.current\n\n if (!visualizer.isActive) {\n frameRef.current = undefined\n drawWave()\n\n return\n }\n\n drawWave()\n frameRef.current = requestAnimationFrame(tick)\n }\n\n frameRef.current = requestAnimationFrame(tick)\n }, [drawWave])\n\n const resizeCanvas = useCallback(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n\n if (!canvas || !container) return\n\n const nextWidth = Math.max(1, container.clientWidth)\n const nextHeight = Math.max(1, container.clientHeight)\n const pixelRatio = window.devicePixelRatio || 1\n const nextCanvasWidth = Math.round(nextWidth * pixelRatio)\n const nextCanvasHeight = Math.round(nextHeight * pixelRatio)\n\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n setPropertyIfChanged(canvas, `width`, nextCanvasWidth)\n setPropertyIfChanged(canvas, `height`, nextCanvasHeight)\n setStylePropertyIfChanged(canvas.style, `width`, `${nextWidth}px`)\n setStylePropertyIfChanged(canvas.style, `height`, `${nextHeight}px`)\n\n const context = canvas.getContext(`2d`)\n\n if (context) {\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0)\n }\n\n refreshFillStyle()\n drawWave()\n }, [drawWave, refreshFillStyle])\n\n useEffect(() => {\n visualizerRef.current = visualizer ?? DEFAULT_VISUALIZER\n\n if (visualizerRef.current.isActive) {\n startAnimation()\n return\n }\n\n stopAnimation()\n drawWave()\n }, [drawWave, startAnimation, stopAnimation, visualizer])\n\n useEffect(() => {\n const container = containerRef.current\n\n if (!container) return\n\n resizeCanvas()\n\n const resizeObserver = new ResizeObserver(() => {\n resizeCanvas()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n stopAnimation()\n resizeObserver.disconnect()\n }\n }, [resizeCanvas, stopAnimation])\n\n return (\n <Box\n ref={containerRef}\n position=\"absolute\"\n inset={0}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n px={8}\n py={12}\n pointerEvents=\"none\"\n css={{\n \"--audio-wave-top-color\": \"colors.colorPalette.emphasized\",\n \"--audio-wave-bottom-color\": \"colors.colorPalette.solid\",\n }}\n style={{\n WebkitMaskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n maskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n }}\n >\n <canvas ref={canvasRef} />\n </Box>\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioVisualizer } from \"./useAudioVisualizer\"\nimport { useIsCurrentAudioTrack } from \"./useIsCurrentAudioTrack\"\nimport { AudioWaveCanvas } from \"./wave/AudioWaveCanvas\"\n\n/**\n * Render only when there is a `renderer`. Meaning the item is loaded.\n * - Renders correct visualizer for current item.\n * - Renders default visualizer when item is not currently playing.\n */\nexport const AudioSpineItem = ({ item }: { item: CoreSpineItem }) => {\n const audioReader = useAudioReader()\n const isAudioRenderer = audioReader?.audio.isAudioRenderer(item.renderer)\n const audioRenderer = isAudioRenderer ? item.renderer : undefined\n const { data: audioDocumentContainer } = useObserve(\n () => audioRenderer?.watch(`documentContainer`),\n [audioRenderer, isAudioRenderer],\n )\n const isCurrentTrack = useIsCurrentAudioTrack({\n enabled: !!audioDocumentContainer,\n trackId: item.item.id,\n })\n const visualizer = useAudioVisualizer(isCurrentTrack)\n\n if (!audioDocumentContainer) return null\n\n return createPortal(\n <AudioWaveCanvas visualizer={isCurrentTrack ? visualizer : undefined} />,\n audioDocumentContainer,\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AudioSpineItem } from \"../audio/AudioSpineItem\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(<AudioSpineItem item={item} />, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n combineLatest,\n distinctUntilChanged,\n map,\n NEVER,\n startWith,\n switchMap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n throttleTime(100, undefined, { trailing: true }),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(\n map((entries) => entries.some((e) => e.isIntersecting)),\n startWith(false),\n distinctUntilChanged(),\n )\n\n return combineLatest([itemLayoutChanged$, isItemIntersecting$]).pipe(\n switchMap(([, isVisible]) => {\n if (!isVisible) {\n element.innerHTML = \"\"\n\n return NEVER\n }\n\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n {/* iframe nullifying overlay. Ensure there are no pointer interceptions, especially on iPadOS */}\n <Box position=\"absolute\" inset={0} zIndex={1} aria-hidden=\"true\" />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n zIndex={2}\n textAlign=\"center\"\n bgColor=\"bg.panel\"\n color=\"fg\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { useEffect, useState } from \"react\"\n\nexport const useTransientValue = <Value>(\n value: Value | undefined,\n durationMs: number,\n) => {\n const [transientValue, setTransientValue] = useState<Value | undefined>()\n\n useEffect(() => {\n if (value === undefined) {\n setTransientValue(undefined)\n\n return\n }\n\n setTransientValue(value)\n\n const timeoutId = window.setTimeout(() => {\n setTransientValue((currentValue) =>\n Object.is(currentValue, value) ? undefined : currentValue,\n )\n }, durationMs)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [durationMs, value])\n\n return transientValue\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport {\n type ExtraPaginationInfo,\n type PaginationInfo,\n shouldUseComputedSpreadModeForViewport,\n watchKeys,\n} from \"@prose-reader/core\"\nimport type { Manifest } from \"@prose-reader/shared\"\nimport { memo } from \"react\"\nimport { MdScreenRotation } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n NEVER,\n type Observable,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\"\nimport { useTransientValue } from \"../common/useTransientValue\"\nimport { useReader } from \"../context/useReader\"\nimport styles from \"./SpreadRotationHint.module.css\"\n\nconst HINT_TARGET_DEBOUNCE_MS = 100\nconst HINT_VISIBLE_MS = 900\n\nconst ANIMATION_NAME_IN_OUT = {\n _open: \"fade-in\",\n _closed: \"fade-out\",\n _motionReduce: \"none\",\n}\nconst ANIMATION_DURATION_IN_OUT = { base: \"moderate\", _motionReduce: \"0ms\" }\n\ntype ViewportDimensions = {\n height: number\n width: number\n}\n\ntype ViewportState = `busy` | `free`\n\ntype HintPagination = Pick<\n PaginationInfo & ExtraPaginationInfo,\n | `beginHasAdjacentSpreadPage`\n | `beginPageIndexInSpineItem`\n | `beginSpineItemIndex`\n | `endHasAdjacentSpreadPage`\n | `endPageIndexInSpineItem`\n | `endSpineItemIndex`\n>\n\ntype ReaderWithSpreadHintStreams = NonNullable<ReturnType<typeof useReader>>\n\nexport const wouldRotationUseComputedSpreadMode = ({\n manifest,\n viewport,\n}: {\n manifest: Manifest\n viewport: ViewportDimensions\n}) => {\n if (viewport.width === viewport.height) return false\n\n return shouldUseComputedSpreadModeForViewport({\n manifest,\n viewport: {\n height: viewport.width,\n width: viewport.height,\n },\n })\n}\n\nexport const getSpreadRotationHintTargetKey = ({\n manifest,\n pagination,\n computedSpreadMode,\n viewportState,\n viewport,\n}: {\n manifest: Manifest\n pagination: HintPagination\n computedSpreadMode: boolean\n viewportState: ViewportState\n viewport: ViewportDimensions\n}) => {\n if (viewportState !== `free`) return undefined\n if (computedSpreadMode) return undefined\n if (!wouldRotationUseComputedSpreadMode({ manifest, viewport })) {\n return undefined\n }\n\n const hasSpreadPair =\n pagination.beginHasAdjacentSpreadPage || pagination.endHasAdjacentSpreadPage\n\n if (!hasSpreadPair) return undefined\n\n return [\n pagination.beginSpineItemIndex,\n pagination.beginPageIndexInSpineItem,\n pagination.endSpineItemIndex,\n pagination.endPageIndexInSpineItem,\n ]\n .map((value) => value ?? `none`)\n .join(`:`)\n}\n\nconst observeHintPagination = (reader: ReaderWithSpreadHintStreams) =>\n reader.pagination.state$.pipe(\n watchKeys([\n `beginHasAdjacentSpreadPage`,\n `beginPageIndexInSpineItem`,\n `beginSpineItemIndex`,\n `endHasAdjacentSpreadPage`,\n `endPageIndexInSpineItem`,\n `endSpineItemIndex`,\n ]),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\nconst observeBeginSpineItemReady = ({\n pagination$,\n reader,\n}: {\n pagination$: Observable<HintPagination>\n reader: ReaderWithSpreadHintStreams\n}) =>\n combineLatest([pagination$, reader.spineItemsManager.items$]).pipe(\n map(([{ beginSpineItemIndex }, spineItems]) =>\n beginSpineItemIndex === undefined\n ? undefined\n : spineItems[beginSpineItemIndex],\n ),\n distinctUntilChanged(),\n switchMap((spineItem) => spineItem?.isReady$ ?? of(false)),\n )\n\nconst observeSpreadRotationHintTargetKey = (\n reader: ReaderWithSpreadHintStreams,\n) => {\n const pagination$ = observeHintPagination(reader)\n const beginSpineItemReady$ = observeBeginSpineItemReady({\n pagination$,\n reader,\n })\n\n return combineLatest([\n pagination$,\n reader.context.manifest$,\n reader.settings.watch([`computedSpreadMode`]),\n reader.viewportState$,\n reader.viewport.watch([`width`, `height`]),\n beginSpineItemReady$,\n ]).pipe(\n debounceTime(HINT_TARGET_DEBOUNCE_MS),\n map(\n ([pagination, manifest, settings, viewportState, viewport, isReady]) => {\n if (!isReady) return undefined\n\n return getSpreadRotationHintTargetKey({\n manifest,\n pagination,\n computedSpreadMode: settings.computedSpreadMode ?? false,\n viewportState,\n viewport,\n })\n },\n ),\n distinctUntilChanged(),\n )\n}\n\nconst useSpreadRotationHintTargetKey = () => {\n const reader = useReader()\n\n return useObserve(\n () => (reader ? observeSpreadRotationHintTargetKey(reader) : NEVER),\n [reader],\n ).data\n}\n\nexport const SpreadRotationHint = memo(() => {\n const hintTargetKey = useSpreadRotationHintTargetKey()\n const visibleHintKey = useTransientValue(hintTargetKey, HINT_VISIBLE_MS)\n\n return (\n <Presence\n present={visibleHintKey !== undefined}\n lazyMount\n unmountOnExit\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration={ANIMATION_DURATION_IN_OUT}\n >\n <Box\n key={visibleHintKey}\n aria-hidden\n position=\"absolute\"\n left=\"50%\"\n top=\"50%\"\n transform=\"translate(-50%, -50%)\"\n pointerEvents=\"none\"\n zIndex={2}\n data-spread-rotation-hint=\"true\"\n >\n <Box\n alignItems=\"center\"\n bg=\"bg.inverted/72\"\n borderRadius=\"full\"\n className={styles.pulse}\n color=\"fg.inverted\"\n display=\"flex\"\n height=\"68px\"\n justifyContent=\"center\"\n width=\"68px\"\n >\n <MdScreenRotation focusable={false} size={34} />\n </Box>\n </Box>\n </Presence>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import RcSlider from \"rc-slider\"\nimport { type ComponentProps, memo } from \"react\"\nimport \"rc-slider/assets/index.css\"\nimport { Box, chakra } from \"@chakra-ui/react\"\n\nconst ChakraRcSlider = chakra(RcSlider)\n\nexport const ThemedSlider = memo((props: ComponentProps<typeof RcSlider>) => {\n return (\n <Box\n display=\"contents\"\n css={{\n \"--bg\": \"colors.bg\",\n \"--bg-emphasized\": \"colors.bg.emphasized\",\n \"--color-solid\": \"colors.colorPalette.solid\",\n }}\n >\n <ChakraRcSlider\n keyboard={false}\n style={{\n padding: 0,\n }}\n css={{\n \"& > .rc-slider-handle:focus-visible\": {\n boxShadow: \"0 0 0 2px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle:active\": {\n boxShadow: \"0 0 5px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle.rc-slider-handle-dragging\": {\n boxShadow: \"0 0 0 3px var(--color-solid) !important\",\n },\n \"&.rc-slider-disabled\": {\n backgroundColor: \"transparent\",\n opacity: 0.5,\n },\n \"&.rc-slider-disabled > .rc-slider-rail\": {\n backgroundColor: \"var(--bg-emphasized)\",\n },\n \"&.rc-slider-disabled > .rc-slider-track\": {\n backgroundColor: \"var(--color-solid)\",\n },\n \"&.rc-slider-disabled > .rc-slider-handle\": {\n backgroundColor: \"var(--bg)\",\n borderColor: \"var(--color-solid)\",\n },\n }}\n styles={{\n rail: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--bg-emphasized)\",\n },\n track: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--color-solid)\",\n },\n handle: {\n width: \"24px\",\n height: \"24px\",\n top: \"50%\",\n borderColor: \"var(--color-solid)\",\n transform: `translate(${props.reverse ? \"50%\" : \"-50%\"}, -50%)`,\n backgroundColor: \"var(--bg)\",\n marginTop: \"0px\",\n },\n }}\n {...props}\n />\n </Box>\n )\n})\n","import type { AudioEnhancerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioState = () => {\n const audioReader = useAudioReader()\n const { data: audioState } = useObserve<AudioEnhancerState | undefined>(\n () => audioReader?.audio.state$,\n [audioReader],\n )\n\n return audioState\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useState } from \"react\"\nimport { LuPause, LuPlay } from \"react-icons/lu\"\nimport { useConstant, useSubscribe } from \"reactjrx\"\nimport { BehaviorSubject, map, tap } from \"rxjs\"\nimport { ThemedSlider } from \"../quickmenu/ThemedSlider\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioState } from \"./useAudioState\"\n\nconst formatPlaybackTime = (value: number) => {\n if (!Number.isFinite(value) || value < 0) return `00:00`\n\n const roundedValue = Math.floor(value)\n const hours = Math.floor(roundedValue / 3600)\n const minutes = Math.floor((roundedValue % 3600) / 60)\n const seconds = roundedValue % 60\n\n if (hours > 0) {\n return [hours, minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n }\n\n return [minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n}\n\nexport const AudioControlsSection = (props: ComponentProps<typeof HStack>) => {\n const audioReader = useAudioReader()\n const audioState = useAudioState()\n const hasPlayableTrack =\n !!audioState?.currentTrack || (audioState?.tracks.length ?? 0) > 0\n const duration = audioState?.duration\n const displayDuration = Math.max(0, duration ?? 0)\n const knownDuration =\n typeof duration === `number` && duration > 0 ? duration : undefined\n const hasKnownDuration = knownDuration !== undefined\n const sliderMax = knownDuration ?? 1\n const currentTime = hasKnownDuration\n ? Math.min(Math.max(0, audioState?.currentTime ?? 0), knownDuration)\n : 0\n const isSliderDisabled =\n !hasPlayableTrack || !!audioState?.isLoading || !hasKnownDuration\n const [draftCurrentTime, setDraftCurrentTime] = useState(currentTime)\n const isSeekingSubject = useConstant(() => new BehaviorSubject(false))\n\n /**\n * Keeps the slider synced with audio playback, except while the user is\n * actively dragging the thumb.\n *\n * During drag we display a local draft value and ignore playback updates to\n * avoid snapping back to the previously observed time. Once the user releases\n * the slider, the enhancer publishes the requested seek time immediately\n * before mutating the audio element, so unlocking this sync path is expected\n * to resume from the new target time. Any later native media updates are then\n * treated as normal playback progression rather than part of the drag UX.\n */\n const syncDownCurrentTime = useCallback(\n () =>\n audioReader?.audio.state$.pipe(\n map((state) => state.currentTime),\n tap((currentTime) => {\n if (isSeekingSubject.value) return\n\n setDraftCurrentTime(currentTime)\n isSeekingSubject.next(false)\n }),\n ),\n [audioReader, isSeekingSubject],\n )\n\n useSubscribe(syncDownCurrentTime)\n\n if (!audioState) {\n return null\n }\n\n return (\n <HStack\n width=\"100%\"\n maxW=\"100%\"\n gap={3}\n borderRadius=\"md\"\n bg=\"bg.muted\"\n px={3}\n py={2}\n {...props}\n >\n <IconButton\n aria-label={audioState.isPlaying ? \"Pause audio\" : \"Play audio\"}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n void audioReader?.audio.toggle()\n }}\n disabled={!hasPlayableTrack || audioState.isLoading}\n >\n {audioState.isPlaying ? <LuPause /> : <LuPlay />}\n </IconButton>\n <Stack gap={0} minW={0} flex={1}>\n <ThemedSlider\n value={draftCurrentTime}\n min={0}\n max={sliderMax}\n disabled={isSliderDisabled}\n onChange={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") return\n\n isSeekingSubject.next(true)\n setDraftCurrentTime(nextValue)\n }}\n onChangeComplete={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") {\n isSeekingSubject.next(false)\n\n return\n }\n\n setDraftCurrentTime(nextValue)\n audioReader?.audio.setCurrentTime(nextValue)\n isSeekingSubject.next(false)\n }}\n />\n <HStack justifyContent=\"space-between\" mt={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {audioState.isLoading\n ? `Loading audio...`\n : formatPlaybackTime(draftCurrentTime)}\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {formatPlaybackTime(displayDuration)}\n </Text>\n </HStack>\n </Stack>\n </HStack>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useHasVisibleAudioTracks = () => {\n const audioReader = useAudioReader()\n const { data: hasVisibleAudioTracks = false } = useObserve(\n () =>\n audioReader?.audio.visibleTrackIds$.pipe(\n map((trackIds) => trackIds.length > 0),\n distinctUntilChanged(),\n ),\n [audioReader],\n )\n\n return hasVisibleAudioTracks\n}\n","import { Popover as ChakraPopover, IconButton, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { HiOutlineInformationCircle } from \"react-icons/hi\"\n\nexport interface ToggleTipProps extends ChakraPopover.RootProps {\n showArrow?: boolean\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n content?: React.ReactNode\n}\n\nexport const ToggleTip = React.forwardRef<HTMLDivElement, ToggleTipProps>(\n function ToggleTip(props, ref) {\n const {\n showArrow,\n children,\n portalled = true,\n content,\n portalRef,\n ...rest\n } = props\n\n return (\n <ChakraPopover.Root\n {...rest}\n positioning={{ ...rest.positioning, gutter: 4 }}\n >\n <ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content\n width=\"auto\"\n px=\"2\"\n py=\"1\"\n textStyle=\"xs\"\n rounded=\"sm\"\n ref={ref}\n >\n {showArrow && (\n <ChakraPopover.Arrow>\n <ChakraPopover.ArrowTip />\n </ChakraPopover.Arrow>\n )}\n {content}\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n </ChakraPopover.Root>\n )\n },\n)\n\nexport const InfoTip = React.forwardRef<\n HTMLDivElement,\n Partial<ToggleTipProps>\n>(function InfoTip(props, ref) {\n const { children, ...rest } = props\n return (\n <ToggleTip content={children} {...rest} ref={ref}>\n <IconButton\n variant=\"ghost\"\n aria-label=\"info\"\n size=\"2xs\"\n colorPalette=\"gray\"\n >\n <HiOutlineInformationCircle />\n </IconButton>\n </ToggleTip>\n )\n})\n","import { Progress as ChakraProgress } from \"@chakra-ui/react\"\nimport { InfoTip } from \"./toggle-tip\"\nimport * as React from \"react\"\n\nexport const ProgressBar = React.forwardRef<\n HTMLDivElement,\n ChakraProgress.TrackProps\n>(function ProgressBar(props, ref) {\n return (\n <ChakraProgress.Track {...props} ref={ref}>\n <ChakraProgress.Range />\n </ChakraProgress.Track>\n )\n})\n\nexport interface ProgressLabelProps extends ChakraProgress.LabelProps {\n info?: React.ReactNode\n}\n\nexport const ProgressLabel = React.forwardRef<\n HTMLDivElement,\n ProgressLabelProps\n>(function ProgressLabel(props, ref) {\n const { children, info, ...rest } = props\n return (\n <ChakraProgress.Label {...rest} ref={ref}>\n {children}\n {info && <InfoTip>{info}</InfoTip>}\n </ChakraProgress.Label>\n )\n})\n\nexport const ProgressRoot = ChakraProgress.Root\nexport const ProgressValueText = ChakraProgress.ValueText\n","import { usePagination } from \"../pagination/usePagination\"\n\nexport const useNavigationContext = () => {\n const pagination = usePagination()\n const hasOnlyOnePage = pagination?.numberOfTotalPages === 1\n\n const isBeginWithinChapter =\n (pagination?.beginNumberOfPagesInSpineItem ?? 0) > 1\n\n const isEndWithinChapter = (pagination?.endNumberOfPagesInSpineItem ?? 0) > 1\n\n const beginPageIndex =\n (pagination?.hasChapters\n ? pagination?.beginPageIndexInSpineItem\n : pagination?.beginAbsolutePageIndex) ?? 0\n const endPageIndex =\n (pagination?.hasChapters\n ? pagination?.endPageIndexInSpineItem\n : pagination?.endAbsolutePageIndex) ?? 0\n\n const [leftPageIndex = 0, rightPageIndex = 0] = [\n beginPageIndex,\n endPageIndex,\n ].sort((a, b) => a - b)\n\n const beginAndEndAreDifferent =\n pagination?.beginPageIndexInSpineItem !==\n pagination?.endPageIndexInSpineItem ||\n pagination?.beginSpineItemIndex !== pagination?.endSpineItemIndex\n\n const totalApproximatePages = pagination?.hasChapters\n ? pagination?.beginNumberOfPagesInSpineItem\n : pagination?.numberOfTotalPages\n\n return {\n hasOnlyOnePage,\n beginPageIndex,\n endPageIndex,\n isBeginWithinChapter,\n isEndWithinChapter,\n beginAndEndAreDifferent,\n totalApproximatePages,\n leftPageIndex,\n rightPageIndex,\n }\n}\n","import { HStack, Stack, Text } from \"@chakra-ui/react\"\nimport {\n ProgressBar,\n ProgressRoot,\n ProgressValueText,\n} from \"../components/ui/progress\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const PaginationInfoSection = () => {\n const pagination = usePagination()\n const {\n hasOnlyOnePage,\n leftPageIndex,\n rightPageIndex,\n totalApproximatePages,\n beginAndEndAreDifferent,\n } = useNavigationContext()\n const progress = Math.round((pagination?.percentageEstimateOfBook ?? 0) * 100)\n\n const buildTitleChain = (\n chapterInfo: NonNullable<typeof pagination>[\"beginChapterInfo\"],\n ): string => {\n if (chapterInfo?.subChapter) {\n return `${chapterInfo.title} / ${buildTitleChain(chapterInfo.subChapter)}`\n }\n return chapterInfo?.title || \"\"\n }\n\n const chapterTitle = buildTitleChain(pagination?.beginChapterInfo)\n\n return (\n <Stack alignItems=\"center\" gap={1} maxW=\"100%\" overflow=\"auto\">\n <ProgressRoot value={progress} size=\"xs\" width={150}>\n <HStack justifyContent=\"space-between\">\n <ProgressBar width={110} />\n <ProgressValueText>{`${progress}%`}</ProgressValueText>\n </HStack>\n </ProgressRoot>\n <Text truncate maxWidth=\"100%\" fontSize=\"sm\" mt={1}>\n {chapterTitle ? `Chapter: ${chapterTitle}` : `\\u00A0`}\n </Text>\n {!hasOnlyOnePage && (\n <HStack>\n <Text fontSize=\"xs\">\n {beginAndEndAreDifferent\n ? `${leftPageIndex + 1} - ${rightPageIndex + 1} of ${totalApproximatePages}`\n : `${leftPageIndex + 1} of ${totalApproximatePages}`}\n </Text>\n {!!pagination?.hasChapters && (\n <>\n <Text>-</Text>\n <Text fontSize=\"xs\">\n ({(pagination?.beginAbsolutePageIndex ?? 0) + 1})\n </Text>\n </>\n )}\n </HStack>\n )}\n </Stack>\n )\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const QuickBar = memo(\n ({\n children,\n position,\n ...rest\n }: { position: \"top\" | \"bottom\" } & PresenceProps & {\n ref?: React.RefObject<HTMLDivElement | null>\n }) => {\n return (\n <Presence\n display=\"flex\"\n flexDirection=\"row\"\n width=\"100%\"\n position=\"absolute\"\n {...(position === \"bottom\" ? { bottom: 0 } : { top: 0 })}\n animationName={\n position === \"bottom\"\n ? {\n _open: \"slide-from-bottom, fade-in\",\n _closed: \"slide-to-bottom, fade-out\",\n }\n : {\n _open: \"slide-from-top, fade-in\",\n _closed: \"slide-to-top, fade-out\",\n }\n }\n animationDuration=\"moderate\"\n bgColor=\"bg.panel\"\n alignItems=\"center\"\n justifyContent=\"center\"\n shadow=\"md\"\n p={4}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import { Box } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useEffect } from \"react\"\nimport { signal, useObserve, useSignalState, useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\nimport { ThemedSlider } from \"./ThemedSlider\"\n\nconst useSliderValues = () => {\n const pagination = usePagination()\n const isUsingSpread = pagination?.isUsingSpread\n const { beginPageIndex: currentRealPage, totalApproximatePages = 0 } =\n useNavigationContext()\n const currentPage = isUsingSpread\n ? Math.floor((currentRealPage || 0) / 2)\n : currentRealPage\n const [value, valueSignal] = useSignalState(() =>\n signal({\n default: currentPage || 0,\n }),\n )\n const min = 0\n const max = Math.max(\n 0,\n isUsingSpread\n ? Math.floor((totalApproximatePages - 1) / 2)\n : totalApproximatePages - 1,\n )\n\n useEffect(() => {\n valueSignal.update(currentPage || 0)\n }, [currentPage, valueSignal])\n\n return {\n value,\n valueSignal,\n min,\n max,\n }\n}\n\nexport const Scrubber = (props: ComponentProps<typeof ThemedSlider>) => {\n const reader = useReader()\n const pagination = usePagination()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const reverse = manifest?.readingDirection === \"rtl\"\n const isUsingSpread = pagination?.isUsingSpread\n const { totalApproximatePages = 0, isBeginWithinChapter } =\n useNavigationContext()\n const step = 1\n const isScrubberWithinChapter = isBeginWithinChapter\n const { value, valueSignal, min, max } = useSliderValues()\n\n const onChange: NonNullable<ComponentProps<typeof ThemedSlider>[\"onChange\"]> =\n useCallback(\n (values) => {\n const [value = 0] = Array.isArray(values) ? values : [values]\n\n valueSignal.update(value)\n\n const pageIndex = isUsingSpread\n ? Math.floor(value) * 2\n : Math.floor(value)\n\n if (!isScrubberWithinChapter) {\n reader?.navigation.goToAbsolutePageIndex({\n absolutePageIndex: pageIndex,\n animation: false,\n })\n } else {\n reader?.navigation.goToPageOfSpineItem({\n pageIndex,\n spineItemId: reader.pagination.state.beginSpineItemIndex ?? 0,\n animation: false,\n })\n }\n },\n [reader, isUsingSpread, valueSignal, isScrubberWithinChapter],\n )\n\n /**\n * @note\n * Scrubber can navigate fast and without lock we may end up with\n * slowness due to the reader\n * paginating and loading items in between.\n * This is good practice (but not required) to throttle it.\n */\n const throttleLock = useCallback(() => {\n return reader?.navigation.throttleLock({\n duration: 100,\n trigger: valueSignal.subject,\n })\n }, [reader, valueSignal])\n\n useSubscribe(throttleLock)\n\n // const marks =\n // max > 1\n // ? Array.from({ length: max + 1 }, (_, i) => i).reduce(\n // (acc: number[], val) => [...acc, val],\n // [],\n // )\n // : []\n\n const disabled =\n totalApproximatePages === 1 ||\n (isUsingSpread && totalApproximatePages === 2)\n\n // @tmp not available yet in chakra\n // if (reverse) return null\n\n if (disabled) return <Box style={props.style} />\n\n return (\n <ThemedSlider\n value={[value]}\n max={max}\n min={min}\n reverse={reverse}\n step={step}\n onChange={onChange}\n {...props}\n />\n )\n // return (\n // <Slider\n // value={[value]}\n // max={max}\n // min={min}\n // marks={marks}\n // onChange={e => {\n // debugger\n // }}\n // onValueChange={onChange}\n // // reverse={reverse}\n // orientation=\"horizontal\"\n // step={step}\n // />\n // )\n}\n","import { Box, Collapsible, HStack, IconButton, Stack } from \"@chakra-ui/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { BiFontSize } from \"react-icons/bi\"\nimport { BsBookmarks } from \"react-icons/bs\"\nimport {\n LuChevronDown,\n LuCircleHelp,\n LuGalleryHorizontal,\n LuNotebookPen,\n LuSearch,\n LuTableOfContents,\n LuZoomIn,\n LuZoomOut,\n} from \"react-icons/lu\"\nimport { MdOutlineFitScreen } from \"react-icons/md\"\nimport { RiGalleryView2 } from \"react-icons/ri\"\nimport {\n RxDoubleArrowDown,\n RxDoubleArrowLeft,\n RxDoubleArrowRight,\n RxDoubleArrowUp,\n} from \"react-icons/rx\"\nimport { useObserve } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { AudioControlsSection } from \"../audio/AudioControlsSection\"\nimport { useHasVisibleAudioTracks } from \"../audio/useHasVisibleAudioTracks\"\nimport {\n hasAnnotationsEnhancer,\n hasGalleryEnhancer,\n hasRefitEnhancer,\n hasSearchEnhancer,\n useReader,\n} from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { PaginationInfoSection } from \"./PaginationInfoSection\"\nimport { QuickBar } from \"./QuickBar\"\nimport { Scrubber } from \"./Scrubber\"\n\nexport const BottomBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (\n item: \"annotations\" | \"search\" | \"help\" | \"toc\" | \"bookmarks\" | \"gallery\",\n ) => void\n }) => {\n const boxRef = useRef<HTMLDivElement>(null)\n const reader = useReader()\n const {\n quickMenuBottomBarBoundingBoxSignal,\n onFontSizeMenuOpenChange,\n onRefitMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"onFontSizeMenuOpenChange\",\n \"onRefitMenuOpenChange\",\n ])\n const { data: navigation } = useObserve(\n () => reader?.navigation.state$,\n [reader],\n )\n const { data: settings } = useObserve(\n () => reader?.settings.values$,\n [reader],\n )\n const { data: zoomState } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) =>\n state.currentScale > 1\n ? \"in\"\n : state.currentScale < 1\n ? \"out\"\n : undefined,\n ),\n ),\n [reader],\n )\n const isZoomingIn = zoomState === \"in\"\n const isZoomingOut = zoomState === \"out\"\n const isScrollingMode = settings?.computedPageTurnMode === \"scrollable\"\n const isVerticalDirection =\n settings?.computedPageTurnDirection === \"vertical\"\n const hasAudioControls = useHasVisibleAudioTracks()\n const [isExtraOpen, setIsExtraOpen] = useState(true)\n\n useEffect(() => {\n if (!boxRef.current) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n quickMenuBottomBarBoundingBoxSignal.update(entry)\n }\n })\n\n resizeObserver.observe(boxRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [quickMenuBottomBarBoundingBoxSignal])\n\n return (\n <QuickBar\n present={open}\n position=\"bottom\"\n display=\"flex\"\n flexDirection=\"column\"\n overflow=\"auto\"\n pb={8}\n px={0}\n ref={boxRef}\n gap={4}\n >\n {hasAudioControls && (\n <HStack px={4} justifyContent=\"center\" width=\"100%\">\n <AudioControlsSection maxW={400} />\n </HStack>\n )}\n <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useCallback, useEffect, useState } from \"react\"\nimport screenfull from \"screenfull\"\n\nconst readFullscreenSupport = () => screenfull.isEnabled\n\nconst readFullscreenState = () =>\n screenfull.isEnabled ? screenfull.isFullscreen : false\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const [isFullscreenSupported, setIsFullscreenSupported] = useState(false)\n\n const syncFullscreenState = useCallback(() => {\n setIsFullscreen((current) => {\n const next = readFullscreenState()\n\n return current === next ? current : next\n })\n setIsFullscreenSupported((current) => {\n const next = readFullscreenSupport()\n\n return current === next ? current : next\n })\n }, [])\n\n const onToggleFullscreenClick = useCallback(async () => {\n if (!screenfull.isEnabled) {\n syncFullscreenState()\n\n return\n }\n\n try {\n if (screenfull.isFullscreen) {\n await screenfull.exit()\n } else {\n await screenfull.request(document.documentElement, {\n navigationUI: `hide`,\n })\n }\n } catch (error) {\n console.error(error)\n } finally {\n syncFullscreenState()\n }\n }, [syncFullscreenState])\n\n useEffect(() => {\n syncFullscreenState()\n\n if (!screenfull.isEnabled) return\n\n screenfull.on(`change`, syncFullscreenState)\n screenfull.on(`error`, syncFullscreenState)\n\n return () => {\n screenfull.off(`change`, syncFullscreenState)\n screenfull.off(`error`, syncFullscreenState)\n }\n }, [syncFullscreenState])\n\n return {\n isFullscreen,\n isFullscreenSupported,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, isFullscreenSupported, onToggleFullscreenClick } =\n useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n {isFullscreenSupported && (\n <IconButton\n aria-label={isFullscreen ? `Exit fullscreen` : `Enter fullscreen`}\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n )}\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { SpreadRotationHint } from \"./navigation/SpreadRotationHint\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <SpreadRotationHint />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","getDefaultValue","_quickMenuOpen","_onQuickMenuOpenChange","prev","reader","undefined","quickMenuBottomBarBoundingBoxSignal","signal","default","notificationsSubject","Subject","refitMenuOpen","onRefitMenuOpenChange","fontSizeMenuOpen","onFontSizeMenuOpenChange","fontSizeMin","fontSizeMax","uncontrolledFontSize","enableFloatingProgress","selectedHighlight","ReaderContext","createContext","useReaderContextValue","keys","$","_c","context","useContext","t0","pipe","watchKeys","t1","value","pick","t2","compareFn","isShallowEqual","defaultValue","t3","Symbol","for","useObserve","data","useReaderContext","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","memo","children","rest","bottomBarHeight","useSignalValue","borderBoxSize","blockSize","_open","_closed","t4","jsx","Presence","useReader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","useReaderWithAnnotations","AnnotateControls","selection","selectionOver$","switchMap","selectionEnd$","map","_temp","startWith","EMPTY","isOpen","t5","getSelection","update","state","t6","FaEdit","t7","Button","t8","LuNotebookPen","t9","truncateText","text","maxLength","length","slice","CloseButton","React","forwardRef","props","ref","LuX","ChakraIconButton","DrawerContent","offset","portalRef","portalled","ChakraDrawer","Portal","Trigger","DrawerRoot","Root","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","Description","Title","ActionTrigger","HIGHLIGHT_COLORS","AnnotationDrawer","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","highlight","selectedColor","setSelectedColor","useState","contents","setContents","onClose","event","open","onOpenChange","highlightColor","highlightContent","notes","useEffect","annotations","highlightTap$","tap","highlight_0","state_0","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","useAudioReader","useAudioVisualizer","enabled","audioReader","audio","visualizer$","visualizer","useIsCurrentAudioTrack","trackId","state$","currentTrack","FALLBACK_TOP_COLOR","FALLBACK_BOTTOM_COLOR","MIN_BAR_HEIGHT","MAX_BAR_HEIGHT_RATIO","IDLE_LEVEL","EDGE_FADE_PORTION","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","DEFAULT_STATE_TEXTURE_AMOUNT","clamp","max","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","centerBar","outerBars","reverse","resolveGradientColors","element","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","drawWave","canvas","size","displayedBars","fillStyle","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","easedBars","targetValue","gap","round","barWidth","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","edgeFade","globalAlpha","beginPath","roundRect","fill","DEFAULT_VISUALIZER","AudioWaveCanvas","useBreakpointValue","base","lg","xl","canvasRef","useRef","containerRef","frameRef","visualizerRef","displayedBarsRef","fillStyleRef","sizeRef","current","gradient","createLinearGradient","addColorStop","refreshFillStyle","canvas_0","visualizer_0","drawWaveFrame","cancelAnimationFrame","stopAnimation","tick","requestAnimationFrame","startAnimation","canvas_1","container","nextWidth","clientWidth","nextHeight","clientHeight","pixelRatio","devicePixelRatio","nextCanvasWidth","nextCanvasHeight","setPropertyIfChanged","setStylePropertyIfChanged","style","setTransform","resizeCanvas","container_0","resizeObserver","ResizeObserver","observe","disconnect","WebkitMaskImage","maskImage","AudioSpineItem","renderer","isAudioRenderer","audioRenderer","watch","audioDocumentContainer","isCurrentTrack","createPortal","SpineItem","containerElement","Spine","element$","spineElement","items$","spineItems","toaster","createToaster","placement","pauseOnPageIdle","Toaster","ChakraToaster","toast","Toast","type","Spinner","title","description","action","label","closable","SignalProvider","valueSignal","useConstant","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","uncontrolledOnFontSizeMenuOpenChange","valueOrUpdater","old","uncontrolledRefitMenuOpen","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","useMemoCompare","old_0","ReactReaderProvider","Radio","inputProps","rootRef","ChakraRadioGroup","RadioGroup","Slider","marks","showValue","marksProp","hasMarkLabel","ChakraSlider","HStack","SliderThumbs","SliderMarks","For","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","references","SETTINGS_SCOPES_VALUES","SETTINGS_SCOPES_REFERENCES","flatMap","getScopeForReference","reference","includes","FontSizeControlsDialog","fontSize","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","useLiveRef","tabValue","setTabValue","scope","onFontUpdate","scope_0","getValueForScope","details","value_0","onScopeValueChange","details_0","onTabValueChange","details_1","value_1","onSliderValueChange","Fieldset","scope_2","LuCheck","scope_3","t22","t23","t24","t25","scope_1","SyncFontSettings","_fontSize","timeout","setTimeout","settings","fontScale","clearTimeout","values$","subscribe","_fontSize_0","defaultState","bottom","right","useMeasure","setElement","rect","setRect","contentRect","observer","useLayoutEffect","useAttachSnapshot","measures","readerWithGalleryEnhancer","itemLayoutChanged$","didLayout$","layoutInfo","throttleTime","trailing","isItemIntersecting$","observeIntersection","isVisible","innerHTML","gallery","snapshot","isIntersecting","GalleryItem","onNavigated","mode","locatedResource","goToSpineItem","indexOrId","GalleryDialog","HelpDialog","Heading","Kbd","LuArrowBigRight","LuArrowBigLeft","name","usePagination","pagination","mediaType","startsWith","isOnlyImages","manifest","every","hasChapters","isFullyPrePaginated","ANIMATION_NAME_IN_OUT","FloatingProgress","quickMenuOpen","roundedProgress","percentageEstimateOfBook","displayableProgress","useTime","Date","time","setTime","interval","setInterval","clearInterval","TimeIndicator","toLocaleTimeString","navigator","language","hour","minute","FloatingTime","useTransientValue","durationMs","transientValue","setTransientValue","timeoutId","currentValue","Object","is","HINT_TARGET_DEBOUNCE_MS","HINT_VISIBLE_MS","_motionReduce","ANIMATION_DURATION_IN_OUT","wouldRotationUseComputedSpreadMode","viewport","shouldUseComputedSpreadModeForViewport","getSpreadRotationHintTargetKey","computedSpreadMode","viewportState","beginHasAdjacentSpreadPage","endHasAdjacentSpreadPage","beginSpineItemIndex","beginPageIndexInSpineItem","endSpineItemIndex","endPageIndexInSpineItem","join","observeHintPagination","shareReplay","bufferSize","refCount","observeBeginSpineItemReady","pagination$","observeSpreadRotationHintTargetKey","beginSpineItemReady$","manifest$","viewportState$","debounceTime","useSpreadRotationHintTargetKey","SpreadRotationHint","hintTargetKey","visibleHintKey","pulse","MdScreenRotation","useInterceptExternalLinks","links$","isHtmlTagElement","href","url","URL","location","host","confirm","useNotifications","mergeMap","notification","duration","toast$","Observable","subscriber","queueMicrotask","toastId","create","next","complete","error","sameNotification$","skip","n","key","merge","timer","abort","first","finalize","dismiss","ChakraRcSlider","chakra","RcSlider","ThemedSlider","padding","boxShadow","backgroundColor","opacity","borderColor","transform","rail","track","handle","marginTop","useAudioState","audioState","formatPlaybackTime","isFinite","roundedValue","hours","minutes","seconds","part","String","padStart","AudioControlsSection","hasPlayableTrack","tracks","displayDuration","knownDuration","hasKnownDuration","sliderMax","currentTime","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","currentTime_0","isPlaying","toggle","LuPause","LuPlay","IconButton","nextValue","isArray","nextValue_0","setCurrentTime","BehaviorSubject","useHasVisibleAudioTracks","visibleTrackIds$","trackIds","ToggleTip","showArrow","positioning","gutter","ChakraPopover","InfoTip","HiOutlineInformationCircle","ProgressBar","ChakraProgress","info","ProgressRoot","ProgressValueText","ValueText","useNavigationContext","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","beginAbsolutePageIndex","endPageIndex","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","totalApproximatePages","PaginationInfoSection","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","chapterTitle","Fragment","QuickBar","useSliderValues","isUsingSpread","currentRealPage","currentPage","useSignalState","Scrubber","readingDirection","isScrubberWithinChapter","goToPageOfSpineItem","spineItemId","animation","goToAbsolutePageIndex","onChange","subject","throttleLock","trigger","step","BottomBar","onItemClick","boxRef","zoom","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","entry","goToLeftOrTopSpineItem","canGoLeftSpineItem","canGoTopSpineItem","RxDoubleArrowUp","RxDoubleArrowLeft","maxWidth","canGoRightSpineItem","canGoBottomSpineItem","goToRightOrBottomSpineItem","RxDoubleArrowDown","RxDoubleArrowRight","Collapsible","LuChevronDown","t26","LuCircleHelp","t27","t28","t29","LuTableOfContents","t30","t31","LuSearch","t32","t33","exit","animate","enter","scale","t34","LuZoomOut","LuZoomIn","t35","t36","t37","BiFontSize","t38","t39","BsBookmarks","t40","t41","MdOutlineFitScreen","t42","t43","t44","LuGalleryHorizontal","t45","t46","RiGalleryView2","t47","t48","t49","currentScale","readFullscreenSupport","screenfull","isEnabled","readFullscreenState","isFullscreen","useFullscreen","setIsFullscreen","isFullscreenSupported","setIsFullscreenSupported","syncFullscreenState","useCallback","onToggleFullscreenClick","request","document","documentElement","navigationUI","console","on","off","TopBar","IoIosArrowBack","IoMdMore","MdFullscreenExit","MdFullscreen","useQuickMenu","onQuickMenuOpenChange","QuickMenu","useQuickMenuToggleGesture","gestures$","selection$","selectionOnPointerdown","handled","val","Field","errorText","helperText","optionalText","ChakraField","RefitDialog","readerWithRefit","refit","settings$","refitSettings","e_0","viewportFit","customWidth","e_1","SearchListItem","contextText","startOffset","onClick","substring","before","after","margin","overflow","preventDefault","display","textDecoration","DEBOUNCE_TIME","useSearch","searchSubject","searchValue","readerWithSearch","search","bind","setValue","status","SearchDialogContent","onValueChange","consolidatedResults","Input","overflowY","result","j","startContainer","parentElement","itemPageIndex","SearchDialog","TableOfContentsDialogContent","nav","toc","currentSubChapter","buildTocForItem","tocItem","lvl","alignItems","goToUrl","path","LuCircleCheck","tocItem_0","index_0","tocItem_1","index_1","TableOfContentsDialog","useZoomSettings","zoomMaxScale","STEP","MIN","normalizeZoomValue","clamped","stepped","ZoomControls","animationFrameScheduler","leading","zoomScaleValue","isZooming","normalizedZoomScaleValue","scaleAt","constrain","BookmarksEffects","Effects","InnerReactReader","enableFloatingTime","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","isGalleryOpen","setIsGalleryOpen","setQuickMenuOpen","_onItemClick","ReactReader","slots","containerProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BOOKMARK_AREA_DATA_ATTRIBUTE","MAX_ZOOM_SCALE","Reader","Annotation","RuntimeAnnotation","EnhancerAPI","GesturesEnhancerAPI","createContext","Dispatch","SetStateAction","Signal","signal","Subject","ReaderNotification","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","PrivateContextType","uncontrolledFontSize","refitMenuOpen","onRefitMenuOpenChange","open","fontSizeMenuOpen","onFontSizeMenuOpenChange","notificationsSubject","quickMenuBottomBarBoundingBoxSignal","ResizeObserverEntry","fontSizeMin","fontSizeMax","_quickMenuOpen","_onQuickMenuOpenChange","selectedHighlight","highlight","selection","Selection","itemIndex","PublicContextType","reader","enableFloatingTime","enableFloatingProgress","onItemClick","item","quickMenuOpen","onQuickMenuOpenChange","fontSize","zoomMaxScale","onFontSizeChange","from","value","fontSizeScope","onFontSizeScopeChange","scope","fontSizeValues","Record","annotations","onAnnotationCreate","annotation","onAnnotationUpdate","Pick","onAnnotationDelete","id","ReaderContextType","getDefaultValue","prev","undefined","default","ReaderContext","isShallowEqual","pick","watchKeys","useContext","useObserve","ReaderContext","ReaderContextType","useReaderContextValue","keys","$","_c","context","t0","pipe","t1","value","t2","compareFn","defaultValue","t3","Symbol","for","data","useReaderContext","Presence","PresenceProps","memo","useSignalValue","useReaderContextValue","SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS","FloatingMenu","t0","$","_c","children","rest","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","quickMenuBottomBarBoundingBox","bottomBarHeight","borderBoxSize","blockSize","t2","_open","_closed","t3","t4","Reader","AnnotationsEnhancerAPI","AudioEnhancerAPI","GalleryEnhancerAPI","RefitEnhancerAPI","SearchEnhancerAPI","useReaderContextValue","useReader","$","_c","t0","Symbol","for","reader","hasSearchEnhancer","hasAudioEnhancer","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasAnnotationsEnhancer","useReader","useReaderWithAnnotations","$","_c","reader","t0","undefined","readerWithBookmarks","Button","FaEdit","LuNotebookPen","useObserve","EMPTY","map","startWith","switchMap","FloatingMenu","useReaderContext","useReaderContextValue","useReaderWithAnnotations","AnnotateControls","$","_c","reader","context","t0","Symbol","for","selectedHighlight","t1","selection","selectionOver$","pipe","selectionEnd$","_temp","t2","defaultValue","t3","data","isOpen","t4","t5","getSelection","update","state","t6","t7","t8","t9","ButtonProps","IconButton","ChakraIconButton","React","LuX","CloseButtonProps","CloseButton","forwardRef","HTMLButtonElement","props","ref","$","_c","t0","children","t1","Drawer","ChakraDrawer","Portal","CloseButton","React","DrawerContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","offset","DrawerContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","t2","t3","t4","DrawerCloseTrigger","HTMLButtonElement","CloseTriggerProps","DrawerTrigger","Trigger","DrawerRoot","Root","DrawerFooter","Footer","DrawerHeader","Header","DrawerBody","Body","DrawerBackdrop","Backdrop","DrawerDescription","Description","DrawerTitle","Title","DrawerActionTrigger","ActionTrigger","Box","Button","Stack","Text","Textarea","ComponentProps","memo","useCallback","useEffect","useState","useSubscribe","tap","truncateText","DrawerBackdrop","DrawerBody","DrawerContent","DrawerHeader","DrawerRoot","useReaderContext","useReaderContextValue","useReaderWithAnnotations","HIGHLIGHT_COLORS","const","AnnotationDrawer","$","_c","reader","t0","Symbol","for","selectedHighlight","onAnnotationCreate","onAnnotationUpdate","onAnnotationDelete","context","highlight","selection","selectedColor","setSelectedColor","contents","setContents","isOpen","t1","update","_temp","onClose","t2","event","open","onOpenChange","highlightColor","highlightContent","notes","t3","t4","t5","annotations","highlightTap$","openDrawerOnTap","pipe","t6","highlight_0","state_0","state","onOpenDrawerOnTap","T0","t7","T1","T2","t8","t9","toString","t10","t11","map","color","border","t12","t13","t14","event_0","target","value","t15","t16","t17","annotation","createAnnotation","t18","id","t19","t20","t21","undefined","Dialog","ChakraDialog","Portal","React","CloseButton","DialogContentProps","ContentProps","portalled","portalRef","RefObject","HTMLElement","backdrop","DialogContent","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","undefined","t2","t3","t4","t5","DialogCloseTrigger","HTMLButtonElement","CloseTriggerProps","DialogRoot","Root","DialogFooter","Footer","DialogHeader","Header","DialogBody","Body","DialogBackdrop","Backdrop","DialogTitle","Title","DialogDescription","Description","DialogTrigger","Trigger","DialogActionTrigger","ActionTrigger","isDefined","useObserve","filter","map","switchMap","hasAnnotationsEnhancer","useReader","useAnnotation","id","$","_c","reader","t0","undefined","readerWithAnnotations","t1","annotations","annotations$","pipe","items","find","item","item_0","locateResource","t2","Link","List","Stack","Text","LuNotebookPen","useReader","useAnnotation","AnnotationListItem","t0","$","_c","id","onNavigate","allowLeftIcon","t1","undefined","reader","data","annotation","t2","meta","node","textContent","range","toString","t3","navigation","goToCfi","cfi","t4","resource","notes","t5","absolutePageIndex","t6","t7","t8","t9","useObserve","switchMap","hasAnnotationsEnhancer","useReader","useAnnotations","$","_c","reader","t0","undefined","readerWithAnnotations","t1","t2","annotations","annotations$","pipe","highlights","locateResource","useAnnotations","useHighlights","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","List","AnnotationListItem","useHighlights","AnnotationsList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","useAnnotations","useBookmarks","$","_c","data","annotations","t0","filter","_temp","t1","annotation","meta","isCfiRange","resource","notes","List","AnnotationListItem","useBookmarks","BookmarksList","t0","$","_c","onNavigate","data","annotations","t1","map","item","resource","id","t2","Tabs","memo","useState","LuBookmark","LuNotebookPen","AnnotationsList","BookmarksList","AnnotationsDialogContent","t0","$","_c","onNavigate","defaultTab","tab","setTab","t1","Symbol","for","e","value","t2","t3","t4","t5","t6","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","AnnotationsDialogContent","AnnotationsDialog","t0","$","_c","openWith","setOpen","onNavigate","t1","t2","e","open","t3","Symbol","for","mdDown","md","t4","t5","t6","t7","t8","t9","useObserve","EMPTY","map","of","useReader","useSpineItem","t0","$","_c","absolutePageIndex","itemIndex","reader","t1","t2","undefined","spine","spineItemsManager","get","pages","observeFromAbsolutePageIndex","pipe","page","useObserve","NEVER","useSpineItem","useSpineItemReady","t0","$","_c","absolutePageIndex","itemIndex","t1","data","spineItem","t2","t3","isReady$","isReady","t4","Box","Presence","memo","useSpineItemReady","BOOKMARK_AREA_DATA_ATTRIBUTE","useAnnotations","BookmarkPageMarker","t0","$","_c","absolutePageIndex","left","top","width","t1","isReady","isItemReady","data","bookmarks","t2","find","bookmark","meta","isCfiRange","bookmarkForPage","markerSize","t3","t4","Symbol","for","_open","_closed","t5","t6","t7","t8","content","position","height","borderTop","borderLeft","t9","t10","memo","useObserve","useReader","BookmarkPageMarker","BookmarkPageMarkers","$","_c","reader","t0","layoutInfo$","t1","data","pages","t2","map","_temp","t3","pageIndex","absoluteLayout","left","top","width","useEffect","map","withLatestFrom","useReaderContext","useAnnotations","useReaderWithAnnotations","CONTINUE_TAP_GESTURE","BOOKMARK_CORNER_SIZE_PERCENT","isTopRightCornerPosition","position","containerSize","sizePercent","x","y","width","height","actualSize","Math","min","useBookmarkOnCornerTap","$","_c","reader","data","bookmarks","readerContext","t0","t1","unSub","gestures","hooks","register","t2","event$","pipe","annotations","candidates$","t3","context","candidates","page","spineItem","spineItemPageIndex","spineItemPagePosition","pageSize","hasTapOnTopRightCorner","pageEntry","spine","pages","fromSpineItemPageIndex","bookmarkForPage","find","bookmark","meta","absolutePageIndex","range","undefined","value","onAnnotationDelete","resource","id","canBookmarkPage","annotation","createAnnotation","onAnnotationCreate","useCallback","useSubscribe","map","withLatestFrom","useReaderWithAnnotations","usePreventInteractionOnSelection","$","_c","reader","t0","gestures","hooks","register","t1","event$","pipe","selection","lastSelectionOnPointerdown$","t2","t3","lastSelectionOnPointerdown","event","target","wasOrIsOnSelection","annotations","isTargetWithinHighlight","beforeTapGesture","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","useReaderContext","useReaderWithAnnotations","useSyncAnnotationsWithReader","$","_c","reader","context","t0","selectedHighlight$","pipe","_temp","annotations$","_temp2","annotationsWithSelected$","_temp3","annotations","update","syncAnnotationsWithReader","context_0","selectedHighlight","highlight","id","context_1","annotation","selected","AudioEnhancedReader","hasAudioEnhancer","useReader","useAudioReader","$","_c","reader","t0","undefined","AudioVisualizerState","useObserve","useAudioReader","useAudioVisualizer","t0","$","_c","enabled","undefined","audioReader","t1","audio","visualizer$","t2","data","visualizer","useObserve","distinctUntilChanged","map","useAudioReader","useIsCurrentAudioTrack","t0","$","_c","enabled","t1","trackId","undefined","audioReader","t2","audio","state$","pipe","state","currentTrack","id","t3","data","t4","isCurrentTrack","AudioVisualizerState","FALLBACK_TOP_COLOR","FALLBACK_BOTTOM_COLOR","MIN_BAR_HEIGHT","MAX_BAR_HEIGHT_RATIO","IDLE_LEVEL","EDGE_FADE_PORTION","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","DEFAULT_STATE_TEXTURE_AMOUNT","DEFAULT_VISUALIZER_STATE","levels","isActive","trackId","undefined","DEFAULT_STATE_BASE_LEVEL","DEFAULT_STATE_HILL_SPREAD","DEFAULT_STATE_PEAK_LEVEL","DEFAULT_STATE_TEXTURE_AMOUNT","IDLE_LEVEL","clamp","value","min","max","Math","smoothstep","edge0","edge1","Number","normalized","getDefaultTexture","progress","lowFrequency","sin","PI","highFrequency","getDefaultDisplayBars","numBars","Array","from","length","_","index","centerDistance","abs","hillProfile","texture","texturedHill","getAverage","values","reduce","total","hasMeaningfulLevels","some","getNormalizedDisplayBarCount","safeValue","floor","getMirroredDisplayBars","displayBarCount","normalizedDisplayBarCount","centerOutSeedCount","centerOutSeed","start","end","average","slice","centerBar","outerBars","reverse","resolveGradientColors","element","HTMLElement","topVariable","topFallback","bottomVariable","bottomFallback","styles","window","getComputedStyle","topColor","getPropertyValue","trim","bottomColor","AudioVisualizerState","CENTER_EMPHASIS_RATIO","DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO","DEFAULT_STATE_OPACITY","EDGE_FADE_PORTION","MAX_BAR_HEIGHT_RATIO","MIN_BAR_HEIGHT","clamp","getDefaultDisplayBars","getMirroredDisplayBars","hasMeaningfulLevels","smoothstep","WaveSize","width","height","DrawWaveArgs","canvas","HTMLCanvasElement","size","visualizer","displayBarCount","displayedBars","fillStyle","CanvasGradient","drawWave","context","getContext","clearRect","hasPlayedLevels","levels","isDefaultState","isActive","displayBars","nextDisplayedBars","length","Array","from","easedBars","map","value","index","targetValue","easing","gap","Math","round","max","barWidth","floor","totalWidth","startX","centerY","maxHeight","rawValue","entries","amplitude","progress","centerDistance","abs","centerProfile","emphasizedAmplitude","heightProgress","barHeight","barRadius","min","x","y","edgeFade","globalAlpha","beginPath","roundRect","fill","Box","useBreakpointValue","setPropertyIfChanged","setStylePropertyIfChanged","AudioVisualizerState","useCallback","useEffect","useRef","FALLBACK_BOTTOM_COLOR","FALLBACK_TOP_COLOR","drawWave","drawWaveFrame","getNormalizedDisplayBarCount","resolveGradientColors","DEFAULT_VISUALIZER","levels","isActive","trackId","undefined","AudioWaveCanvas","t0","$","_c","visualizer","t1","base","md","lg","xl","t2","displayBarCount","canvasRef","containerRef","frameRef","visualizerRef","t3","Symbol","for","displayedBarsRef","fillStyleRef","t4","width","height","sizeRef","t5","canvas","current","context","getContext","topColor","bottomColor","topVariable","topFallback","bottomVariable","bottomFallback","gradient","createLinearGradient","addColorStop","refreshFillStyle","t6","canvas_0","visualizer_0","size","displayedBars","fillStyle","t7","cancelAnimationFrame","stopAnimation","t8","tick","visualizer_1","requestAnimationFrame","startAnimation","t9","canvas_1","container","nextWidth","Math","max","clientWidth","nextHeight","clientHeight","pixelRatio","window","devicePixelRatio","nextCanvasWidth","round","nextCanvasHeight","style","context_0","setTransform","resizeCanvas","t10","t11","t12","t13","container_0","resizeObserver","ResizeObserver","observe","disconnect","t14","WebkitMaskImage","maskImage","SpineItem","CoreSpineItem","createPortal","useObserve","useAudioReader","useAudioVisualizer","useIsCurrentAudioTrack","AudioWaveCanvas","AudioSpineItem","t0","$","_c","item","audioReader","t1","audio","renderer","isAudioRenderer","audioRenderer","undefined","t2","watch","t3","data","audioDocumentContainer","t4","t5","id","enabled","trackId","isCurrentTrack","visualizer","t6","t7","t8","SpineItem","CoreSpineItem","memo","createPortal","AudioSpineItem","t0","$","_c","item","container","containerElement","t1","t2","t3","memo","createPortal","useObserve","useReader","SpineItem","Spine","t0","$","_c","children","reader","t1","spine","element$","t2","data","spineElement","t3","spineItemsManager","items$","t4","spineItems","t5","map","_temp","t6","t7","t8","item","index","c","_c","Toaster","ChakraToaster","Portal","Spinner","Stack","Toast","createToaster","ReturnType","toaster","placement","pauseOnPageIdle","$","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","action","label","meta","closable","isShallowEqual","ComponentProps","memo","useCallback","useEffect","signal","useConstant","useMemoCompare","useSignalValue","getDefaultValue","PrivateContextType","PublicContextType","ReaderContext","SignalProvider","t0","$","_c","children","props","valueSignal","_temp","t1","value","fontSizeMenuOpen","default","uncontrolledFontSizeMenuOpen","uncontrolledFontSizeMenuOpenValue","t2","open","update","uncontrolledOnFontSizeMenuOpenChange","t3","valueOrUpdater","old","_quickMenuOpen","_onQuickMenuOpenChange","t4","refitMenuOpen","uncontrolledRefitMenuOpen","t5","open_0","uncontrolledOnRefitMenuOpenChange","uncontrolledRefitMenuOpenValue","memoizedProps","t6","t7","old_0","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t8","ReactReaderProvider","RadioGroup","ChakraRadioGroup","React","RadioProps","ItemProps","rootRef","Ref","HTMLDivElement","inputProps","InputHTMLAttributes","HTMLInputElement","Radio","forwardRef","props","ref","$","_c","children","rest","t0","t1","Symbol","for","t2","t3","Root","Slider","ChakraSlider","For","HStack","React","SliderProps","RootProps","marks","Array","value","label","ReactNode","showValue","memo","t0","$","_c","ref","rest","t1","t2","props","marksProp","t3","t4","t5","defaultValue","map","_temp","some","_temp2","hasMarkLabel","undefined","Symbol","for","t6","t7","t8","t9","SliderThumbs","_temp3","_","index","SliderMarksProps","SliderMarks","forwardRef","HTMLDivElement","length","_temp4","mark","mark_0","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","value","references","const","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","Button","Fieldset","HStack","SliderValueChangeDetails","Stack","Tabs","TabsValueChangeDetails","ComponentProps","memo","useCallback","useEffect","useState","LuCheck","useLiveRef","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Radio","RadioGroup","Slider","useReaderContext","useReaderContextValue","PROSE_REACT_READER_SETTINGS_SCOPE","PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION","PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE","SETTINGS_SCOPES_VALUES","map","item","value","SETTINGS_SCOPES_REFERENCES","flatMap","references","getScopeForReference","reference","undefined","find","includes","FontSizeControlsDialog","$","_c","context","t0","Symbol","for","fontSizeMenuOpen","onFontSizeMenuOpenChange","uncontrolledFontSize","fontSize","t1","fontSizeMin","fontSizeMax","fontSizeScope","fontSizeValues","onFontSizeChange","onFontSizeScopeChange","onFontSizeChangeRef","tabValue","setTabValue","t2","scope","current","update","old","onFontUpdate","t3","scope_0","getValueForScope","t4","details","value_0","onScopeValueChange","t5","details_0","onTabValueChange","t6","details_1","value_1","onSliderValueChange","t7","t8","syncScopeChangeWithTabs","t9","e","open","t10","t11","t12","t13","t14","t15","_temp","t16","t17","scope_2","t18","t19","scope_3","label","t20","t21","t22","t23","t24","t25","scope_1","useCallback","useEffect","useSubscribe","map","useReader","useReaderContext","useReaderContextValue","SyncFontSettings","$","_c","reader","context","t0","Symbol","for","fontSize","uncontrolledFontSize","_fontSize","t1","t2","syncDownFontSize","timeout","setTimeout","settings","update","fontScale","clearTimeout","t3","values$","syncUpFontSize","pipe","_temp","subscribe","_fontSize_0","value","onFontSizeChange","old","useLayoutEffect","useMemo","useState","UseMeasureRect","Pick","DOMRectReadOnly","UseMeasureRef","Element","element","E","UseMeasureResult","defaultState","x","y","width","height","top","left","bottom","right","useMeasure","$","_c","setElement","rect","setRect","t0","Symbol","for","ResizeObserver","entries","contentRect","observer","t1","t2","observe","disconnect","t3","isShallowEqual","observeIntersection","SpineItem","useCallback","useSubscribe","combineLatest","distinctUntilChanged","map","NEVER","startWith","switchMap","throttleTime","UseMeasureRect","hasGalleryEnhancer","useReader","useAttachSnapshot","element","item","measures","$","_c","reader","t0","undefined","readerWithGalleryEnhancer","t1","itemLayoutChanged$","didLayout$","pipe","layoutInfo","trailing","isItemIntersecting$","HTMLElement","_temp2","t2","isVisible","innerHTML","gallery","snapshot","attachSnapshot","_temp","e","isIntersecting","entries","some","Box","Button","Text","SpineItem","memo","useObserve","useMeasure","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","useReader","useAttachSnapshot","GalleryItem","t0","$","_c","item","onNavigated","setElement","measures","element","reader","t1","t2","locateResource","mode","data","locatedResource","t3","navigation","goToSpineItem","indexOrId","t4","t5","Symbol","for","t6","meta","absolutePageIndex","t7","t8","GalleryDialog","open","setOpen","spineItemsManager","items$","items","e","mdDown","md","map","id","t9","t10","t11","t12","t13","Button","Heading","HStack","Kbd","Stack","Text","memo","LuArrowBigLeft","LuArrowBigRight","name","version","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","HelpDialog","t0","$","_c","open","setOpen","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","Reader","useObserve","combineLatest","map","NEVER","useReader","usePagination","$","_c","reader","t0","t1","pagination","state$","context","pipe","_temp2","data","_temp","item","mediaType","startsWith","state","isOnlyImages","manifest","spineItems","every","hasChapters","isFullyPrePaginated","Box","Presence","Text","useReaderContextValue","usePagination","ANIMATION_NAME_IN_OUT","_open","_closed","FloatingProgress","$","_c","t0","Symbol","for","enableFloatingProgress","quickMenuOpen","pagination","roundedProgress","Math","floor","percentageEstimateOfBook","displayableProgress","undefined","t1","t2","t3","Text","TextProps","useEffect","useState","useTime","$","_c","t0","Symbol","for","Date","time","setTime","t1","t2","interval","setInterval","clearInterval","TimeIndicator","props","toLocaleTimeString","navigator","language","hour","minute","Box","memo","TimeIndicator","FloatingTime","$","_c","t0","Symbol","for","useEffect","useState","useTransientValue","value","durationMs","$","_c","transientValue","setTransientValue","t0","t1","undefined","timeoutId","window","setTimeout","currentValue","Object","is","clearTimeout","Box","Presence","ExtraPaginationInfo","PaginationInfo","shouldUseComputedSpreadModeForViewport","watchKeys","Manifest","memo","MdScreenRotation","useObserve","combineLatest","debounceTime","distinctUntilChanged","map","NEVER","Observable","of","shareReplay","switchMap","useTransientValue","useReader","styles","HINT_TARGET_DEBOUNCE_MS","HINT_VISIBLE_MS","ANIMATION_NAME_IN_OUT","_open","_closed","_motionReduce","ANIMATION_DURATION_IN_OUT","base","ViewportDimensions","height","width","ViewportState","HintPagination","Pick","ReaderWithSpreadHintStreams","NonNullable","ReturnType","wouldRotationUseComputedSpreadMode","manifest","viewport","getSpreadRotationHintTargetKey","pagination","computedSpreadMode","viewportState","undefined","hasSpreadPair","beginHasAdjacentSpreadPage","endHasAdjacentSpreadPage","beginSpineItemIndex","beginPageIndexInSpineItem","endSpineItemIndex","endPageIndexInSpineItem","value","join","observeHintPagination","reader","state$","pipe","bufferSize","refCount","observeBeginSpineItemReady","pagination$","spineItemsManager","items$","spineItems","spineItem","isReady$","observeSpreadRotationHintTargetKey","beginSpineItemReady$","context","manifest$","settings","watch","viewportState$","isReady","useSpreadRotationHintTargetKey","$","_c","t0","t1","data","SpreadRotationHint","hintTargetKey","visibleHintKey","Symbol","for","pulse","t2","t3","isHtmlTagElement","useCallback","useSubscribe","useReader","useInterceptExternalLinks","$","_c","reader","t0","links$","subscribe","_temp","interceptExternalLinks","event","type","target","href","url","URL","window","location","host","response","confirm","open","NOTIFICATION_KEYS","fontScaleChange","useFontSizeNotifications","useCallback","isDefined","useSubscribe","filter","finalize","first","merge","mergeMap","NEVER","Observable","skip","switchMap","timer","toaster","useReaderContextValue","useFontSizeNotifications","useNotifications","$","_c","t0","Symbol","for","notificationsSubject","t1","pipe","notification","duration","toast$","subscriber","queueMicrotask","toastId","create","title","description","next","complete","t2","error","sameNotification$","n","key","toast","abort","dismiss","notifications","RcSlider","ComponentProps","memo","Box","chakra","ChakraRcSlider","ThemedSlider","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","padding","boxShadow","backgroundColor","opacity","borderColor","height","top","transform","t5","reverse","t6","rail","track","handle","width","marginTop","t7","AudioEnhancerState","useObserve","useAudioReader","useAudioState","$","_c","audioReader","t0","audio","state$","t1","data","audioState","HStack","IconButton","Stack","Text","ComponentProps","useCallback","useState","LuPause","LuPlay","useConstant","useSubscribe","BehaviorSubject","map","tap","ThemedSlider","useAudioReader","useAudioState","formatPlaybackTime","value","Number","isFinite","roundedValue","Math","floor","hours","minutes","seconds","part","String","padStart","join","AudioControlsSection","props","$","_c","audioReader","audioState","hasPlayableTrack","currentTrack","tracks","length","duration","displayDuration","max","knownDuration","undefined","hasKnownDuration","sliderMax","currentTime","min","isSliderDisabled","isLoading","draftCurrentTime","setDraftCurrentTime","isSeekingSubject","_temp","t0","audio","state$","pipe","_temp2","currentTime_0","next","syncDownCurrentTime","t1","isPlaying","t2","toggle","t3","t4","t5","t6","nextValue","Array","isArray","t7","value_0","nextValue_0","setCurrentTime","t8","t9","t10","t11","t12","t13","t14","t15","state","useObserve","distinctUntilChanged","map","useAudioReader","useHasVisibleAudioTracks","$","_c","audioReader","t0","audio","visibleTrackIds$","pipe","_temp","t1","data","t2","hasVisibleAudioTracks","undefined","trackIds","length","Popover","ChakraPopover","IconButton","Portal","React","HiOutlineInformationCircle","ToggleTipProps","RootProps","showArrow","portalled","portalRef","RefObject","HTMLElement","content","ReactNode","ToggleTip","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","undefined","t1","positioning","gutter","t2","t3","t4","t5","t6","t7","InfoTip","Partial","Symbol","for","Progress","ChakraProgress","InfoTip","React","ProgressBar","forwardRef","HTMLDivElement","TrackProps","props","ref","$","_c","t0","Symbol","for","t1","ProgressLabelProps","LabelProps","info","ReactNode","ProgressLabel","children","rest","ProgressRoot","Root","ProgressValueText","ValueText","usePagination","useNavigationContext","pagination","hasOnlyOnePage","numberOfTotalPages","isBeginWithinChapter","beginNumberOfPagesInSpineItem","isEndWithinChapter","endNumberOfPagesInSpineItem","beginPageIndex","hasChapters","beginPageIndexInSpineItem","beginAbsolutePageIndex","endPageIndex","endPageIndexInSpineItem","endAbsolutePageIndex","leftPageIndex","rightPageIndex","sort","a","b","beginAndEndAreDifferent","beginSpineItemIndex","endSpineItemIndex","totalApproximatePages","HStack","Stack","Text","ProgressBar","ProgressRoot","ProgressValueText","useNavigationContext","usePagination","PaginationInfoSection","$","_c","pagination","hasOnlyOnePage","leftPageIndex","rightPageIndex","totalApproximatePages","beginAndEndAreDifferent","t0","percentageEstimateOfBook","Math","round","progress","t1","beginChapterInfo","buildTitleChain","chapterInfo","subChapter","title","chapterTitle","t2","Symbol","for","t3","t4","t5","t6","t7","t8","beginAbsolutePageIndex","hasChapters","t9","Presence","PresenceProps","memo","QuickBar","t0","$","_c","children","position","rest","t1","t2","bottom","top","_open","_closed","t3","Box","ComponentProps","useCallback","useEffect","signal","useObserve","useSignalState","useSubscribe","useReader","useNavigationContext","usePagination","ThemedSlider","useSliderValues","$","_c","pagination","isUsingSpread","beginPageIndex","currentRealPage","totalApproximatePages","t0","undefined","currentPage","Math","floor","t1","default","value","valueSignal","max","t2","t3","update","t4","min","Scrubber","props","reader","data","context","manifest","reverse","readingDirection","isBeginWithinChapter","isScrubberWithinChapter","values","Array","isArray","value_0","pageIndex","navigation","goToAbsolutePageIndex","absolutePageIndex","animation","goToPageOfSpineItem","spineItemId","state","beginSpineItemIndex","onChange","subject","throttleLock","duration","trigger","disabled","t5","style","t6","step","Box","Collapsible","HStack","IconButton","Stack","memo","useEffect","useRef","useState","BiFontSize","BsBookmarks","LuChevronDown","LuCircleHelp","LuGalleryHorizontal","LuNotebookPen","LuSearch","LuTableOfContents","LuZoomIn","LuZoomOut","MdOutlineFitScreen","RiGalleryView2","RxDoubleArrowDown","RxDoubleArrowLeft","RxDoubleArrowRight","RxDoubleArrowUp","useObserve","map","AudioControlsSection","useHasVisibleAudioTracks","hasAnnotationsEnhancer","hasGalleryEnhancer","hasRefitEnhancer","hasSearchEnhancer","useReader","useReaderContextValue","PaginationInfoSection","QuickBar","Scrubber","BottomBar","t0","$","_c","open","onItemClick","boxRef","reader","t1","Symbol","for","quickMenuBottomBarBoundingBoxSignal","onFontSizeMenuOpenChange","onRefitMenuOpenChange","t2","navigation","state$","t3","data","t4","settings","values$","t5","t6","zoom","pipe","_temp","t7","zoomState","isZoomingIn","isZoomingOut","isScrollingMode","computedPageTurnMode","isVerticalDirection","computedPageTurnDirection","hasAudioControls","isExtraOpen","setIsExtraOpen","t8","t9","current","resizeObserver","ResizeObserver","entries","entry","update","observe","disconnect","t10","t11","goToLeftOrTopSpineItem","t12","canGoLeftSpineItem","canGoTopSpineItem","t13","t14","t15","t16","width","maxWidth","height","t17","canGoRightSpineItem","canGoBottomSpineItem","t18","goToRightOrBottomSpineItem","t19","t20","t21","t22","t23","open_0","t24","transform","t25","t26","t27","t28","t29","t30","t31","t32","t33","exit","animate","enter","scale","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","state","currentScale","undefined","useCallback","useEffect","useState","screenfull","readFullscreenSupport","isEnabled","readFullscreenState","isFullscreen","useFullscreen","setIsFullscreen","isFullscreenSupported","setIsFullscreenSupported","syncFullscreenState","current","next","onToggleFullscreenClick","exit","request","document","documentElement","navigationUI","error","console","on","off","HStack","IconButton","Stack","Text","memo","IoIosArrowBack","IoMdMore","MdFullscreen","MdFullscreenExit","useObserve","useFullscreen","useReader","QuickBar","TopBar","t0","$","_c","open","onItemClick","reader","t1","context","manifest$","t2","data","manifest","isFullscreen","isFullscreenSupported","onToggleFullscreenClick","t3","t4","Symbol","for","t5","t6","title","t7","t8","t9","t10","t11","t12","t13","useReaderContextValue","useQuickMenu","$","_c","t0","Symbol","for","quickMenuOpen","onQuickMenuOpenChange","_quickMenuOpen","_onQuickMenuOpenChange","t1","t2","t3","const","memo","useReaderContextValue","BottomBar","TopBar","useQuickMenu","QuickMenu","t0","$","_c","onItemClick","quickMenuOpen","t1","Symbol","for","refitMenuOpen","fontSizeMenuOpen","selectedHighlight","t2","t3","t4","t5","t6","useCallback","useSubscribe","filter","tap","withLatestFrom","useReader","useQuickMenu","useQuickMenuToggleGesture","$","_c","onQuickMenuOpenChange","reader","t0","gestures","gestures$","pipe","_temp","selection","selection$","lastSelectionOnPointerdown$","t1","selectionOnPointerdown","_temp2","quickMenuToggleGesture","event","type","handled","val","Field","ChakraField","React","FieldProps","Omit","RootProps","label","ReactNode","helperText","errorText","optionalText","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","t2","t3","Button","Fieldset","Stack","RefitEnhancerOptions","memo","useObserve","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","Field","Radio","RadioGroup","Slider","hasRefitEnhancer","useReader","useReaderContextValue","OptionValue","RefitDialog","$","_c","t0","Symbol","for","refitMenuOpen","onRefitMenuOpenChange","reader","t1","undefined","readerWithRefit","t2","refit","settings$","t3","data","refitSettings","t4","e","open","t5","t6","t7","e_0","value","update","viewportFit","customWidth","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","e_1","value_0","t18","t19","t20","t21","t22","t23","Link","Text","memo","SearchListItem","t0","$","_c","contextText","t1","startOffset","t2","text","cfi","t3","onClick","absolutePageIndex","undefined","t4","substring","Math","max","before","t5","length","min","after","t6","Symbol","for","margin","overflow","t7","e","preventDefault","t8","display","t9","t10","t11","textDecoration","t12","t13","t14","useConstant","useObserve","BehaviorSubject","distinctUntilChanged","map","merge","of","switchMap","timer","hasSearchEnhancer","useReader","DEBOUNCE_TIME","useSearch","$","_c","searchSubject","_temp","data","searchValue","reader","t0","undefined","readerWithSearch","t1","t2","pipe","value","type","const","search","_temp2","t3","next","bind","t4","t5","t6","setValue","status","Input","Stack","Text","React","memo","useCallback","useObserve","useReader","SearchListItem","useSearch","SearchDialogContent","t0","$","_c","onNavigate","reader","value","searchValue","setValue","status","data","t1","e","target","onValueChange","t2","navigation","cfi","goToCfi","onClick","t3","locateResource","slice","t4","consolidatedResults","t5","t6","Symbol","for","overflow","overflowY","t7","t8","length","t9","map","result","j","meta","range","startContainer","parentElement","textContent","itemPageIndex","startOffset","absolutePageIndex","t10","t11","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","SearchDialogContent","SearchDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","Link","List","Stack","Text","React","memo","LuCircleCheck","useObserve","useReader","usePagination","TableOfContentsDialogContent","t0","$","_c","onNavigate","reader","data","t1","context","manifest","undefined","nav","pagination","toc","absolutePageIndex","beginAbsolutePageIndex","currentSubChapter","beginChapterInfo","subChapter","buildTocForItem","tocItem","index","lvl","display","alignItems","navigation","goToUrl","href","path","title","contents","length","map","tocItem_0","index_0","t2","t3","t4","t5","t6","t7","tocItem_1","index_1","t8","Root","Button","memo","DialogActionTrigger","DialogBody","DialogCloseTrigger","DialogContent","DialogFooter","DialogHeader","DialogRoot","DialogTitle","TableOfContentsDialogContent","TableOfContentsDialog","t0","$","_c","open","setOpen","onNavigate","t1","e","t2","Symbol","for","mdDown","md","t3","t4","t5","t6","t7","t8","useEffect","MAX_ZOOM_SCALE","useReader","useReaderContextValue","useZoomSettings","$","_c","reader","t0","Symbol","for","zoomMaxScale","t1","gestures","settings","syncSettingsWithGesturesEnhancer","update","t2","memo","useObserve","animationFrameScheduler","map","throttleTime","FloatingMenu","Slider","MAX_ZOOM_SCALE","useReader","useReaderContextValue","STEP","MIN","normalizeZoomValue","value","min","max","step","clamped","Math","stepped","round","ZoomControls","$","_c","t0","Symbol","for","zoomMaxScale","t1","undefined","reader","t2","zoom","state$","pipe","_temp","leading","trailing","t3","data","t4","zoomScaleValue","t5","_temp2","t6","t7","isZooming","t8","normalizedZoomScaleValue","t9","t10","t11","e","exit","scaleAt","constrain","t12","t13","state","currentScale","state_0","Box","BoxProps","Presence","ComponentProps","memo","useCallback","useState","AnnotateControls","AnnotationDrawer","AnnotationsDialog","BookmarkPageMarkers","useBookmarkOnCornerTap","usePreventInteractionOnSelection","useSyncAnnotationsWithReader","Spine","Toaster","ReactReaderProvider","useReaderContextValue","FontSizeControlsDialog","SyncFontSettings","GalleryDialog","HelpDialog","FloatingProgress","FloatingTime","SpreadRotationHint","useInterceptExternalLinks","useNotifications","QuickMenu","useQuickMenu","useQuickMenuToggleGesture","RefitDialog","SearchDialog","TableOfContentsDialog","useZoomSettings","ZoomControls","ANIMATION_NAME_IN_OUT","_open","_closed","BookmarksEffects","Effects","$","_c","t0","Symbol","for","InnerReactReader","children","rest","t1","enableFloatingTime","onItemClick","isTableOfContentsOpen","setIsTableOfContentsOpen","isHelpOpen","setIsHelpOpen","isSearchOpen","setIsSearchOpen","isAnnotationsOpenWith","setIsAnnotationsOpenWith","undefined","isGalleryOpen","setIsGalleryOpen","quickMenuOpen","setQuickMenuOpen","t2","onNavigate","t3","item","_onItemClick","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","open","t19","t20","t21","t22","t23","t24","ReactReader","props","slots","container","containerProps"],"sources":["../src/constants.ts","../src/context/context.ts","../src/context/useReaderContext.ts","../src/common/FloatingMenu.tsx","../src/context/useReader.ts","../src/annotations/useReaderWithAnnotations.ts","../src/annotations/AnnotateControls.tsx","../src/common/utils.ts","../src/components/ui/close-button.tsx","../src/components/ui/drawer.tsx","../src/annotations/AnnotationDrawer.tsx","../src/components/ui/dialog.tsx","../src/annotations/useAnnotation.ts","../src/annotations/AnnotationListItem.tsx","../src/annotations/useAnnotations.ts","../src/annotations/useHighlights.ts","../src/annotations/AnnotationsList.tsx","../src/annotations/bookmarks/useBookmarks.ts","../src/annotations/bookmarks/BookmarksList.tsx","../src/annotations/AnnotationsDialogContent.tsx","../src/annotations/AnnotationsDialog.tsx","../src/common/useSpineItem.ts","../src/common/useSpineItemReady.ts","../src/annotations/bookmarks/BookmarkPageMarker.tsx","../src/annotations/bookmarks/BookmarkPageMarkers.tsx","../src/annotations/bookmarks/useBookmarkOnCornerTap.ts","../src/annotations/usePreventInteractionOnSelection.ts","../src/annotations/useSyncAnnotationsWithReader.ts","../src/audio/useAudioReader.ts","../src/audio/useAudioVisualizer.ts","../src/audio/useIsCurrentAudioTrack.ts","../src/audio/wave/constants.ts","../src/audio/wave/shaping.ts","../src/audio/wave/drawWave.ts","../src/audio/wave/AudioWaveCanvas.tsx","../src/audio/AudioSpineItem.tsx","../src/common/SpineItem.tsx","../src/common/Spine.tsx","../src/components/ui/toaster.tsx","../src/context/ReactReaderProvider.tsx","../src/components/ui/radio.tsx","../src/components/ui/slider.tsx","../src/settings/types.ts","../src/fonts/FontSizeControlsDialog.tsx","../src/fonts/SyncFontSettings.ts","../src/common/useMeasure.ts","../src/gallery/useAttachSnapshot.ts","../src/gallery/GalleryDialog.tsx","../package.json","../src/help/HelpDialog.tsx","../src/pagination/usePagination.ts","../src/navigation/FloatingProgress.tsx","../src/quickmenu/TimeIndicator.tsx","../src/navigation/FloatingTime.tsx","../src/common/useTransientValue.ts","../src/navigation/SpreadRotationHint.module.css","../src/navigation/SpreadRotationHint.tsx","../src/navigation/useInterceptExternalLinks.ts","../src/fonts/useFontSizeNotifications.ts","../src/notifications/useNotifications.ts","../src/quickmenu/ThemedSlider.tsx","../src/audio/useAudioState.ts","../src/audio/AudioControlsSection.tsx","../src/audio/useHasVisibleAudioTracks.ts","../src/components/ui/toggle-tip.tsx","../src/components/ui/progress.tsx","../src/navigation/useNavigationContext.ts","../src/quickmenu/PaginationInfoSection.tsx","../src/quickmenu/QuickBar.tsx","../src/quickmenu/Scrubber.tsx","../src/quickmenu/BottomBar.tsx","../src/common/useFullscreen.ts","../src/quickmenu/TopBar.tsx","../src/quickmenu/useQuickMenu.ts","../src/quickmenu/QuickMenu.tsx","../src/quickmenu/useQuickMenuToggleGesture.ts","../src/components/ui/field.tsx","../src/refit/RefitDialog.tsx","../src/search/SearchListItem.tsx","../src/search/useSearch.ts","../src/search/SearchDialogContent.tsx","../src/search/SearchDialog.tsx","../src/toc/TableOfContentsDialogContent.tsx","../src/toc/TableOfContentsDialog.tsx","../src/zoom/useZoomSettings.ts","../src/zoom/ZoomControls.tsx","../src/ReactReader.tsx"],"sourcesContent":["export const BOOKMARK_AREA_DATA_ATTRIBUTE = `data-bookmark-area`\nexport const MAX_ZOOM_SCALE = 5\n","import type { Reader } from \"@prose-reader/core\"\nimport type {\n Annotation,\n RuntimeAnnotation,\n} from \"@prose-reader/enhancer-annotations\"\nimport type { EnhancerAPI as GesturesEnhancerAPI } from \"@prose-reader/enhancer-gestures\"\nimport { createContext, type Dispatch, type SetStateAction } from \"react\"\nimport { type Signal, signal } from \"reactjrx\"\nimport { Subject } from \"rxjs\"\nimport type { ReaderNotification } from \"../notifications/types\"\nimport type {\n PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nexport type PrivateContextType = {\n /**\n * Internal fallback values used for uncontrolled settings. This way the\n * Reader works as intended but:\n * - there are no persistent settings\n * - the settings are valid only for the current mount runtime\n */\n uncontrolledFontSize: number\n refitMenuOpen: boolean\n onRefitMenuOpenChange: (open: boolean) => void\n fontSizeMenuOpen: boolean\n onFontSizeMenuOpenChange: (open: boolean) => void\n notificationsSubject: Subject<ReaderNotification>\n quickMenuBottomBarBoundingBoxSignal: Signal<ResizeObserverEntry | undefined>\n fontSizeMin: number\n fontSizeMax: number\n _quickMenuOpen: boolean\n _onQuickMenuOpenChange: Dispatch<SetStateAction<boolean>>\n selectedHighlight:\n | {\n highlight?: RuntimeAnnotation\n selection?: {\n selection: Selection\n itemIndex: number\n }\n }\n | undefined\n}\n\nexport type PublicContextType = {\n reader: (Reader & GesturesEnhancerAPI) | undefined\n enableFloatingTime?: boolean\n enableFloatingProgress?: boolean\n onItemClick?: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n quickMenuOpen?: boolean\n onQuickMenuOpenChange?: Dispatch<SetStateAction<boolean>>\n fontSize?: number\n zoomMaxScale?: number\n onFontSizeChange?: (\n from: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | \"internal\",\n value: number,\n ) => void\n fontSizeScope?: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE\n onFontSizeScopeChange?: (scope: PROSE_REACT_READER_SETTINGS_SCOPE) => void\n fontSizeValues?: Record<\n PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n number | undefined\n >\n annotations?: Annotation[]\n onAnnotationCreate?: (annotation: Annotation) => void\n onAnnotationUpdate?: (\n annotation: Pick<Annotation, \"id\" | \"highlightColor\" | \"notes\">,\n ) => void\n onAnnotationDelete?: (id: string) => void\n}\n\nexport type ReaderContextType = PrivateContextType & PublicContextType\n\nexport const getDefaultValue = (): ReaderContextType => ({\n _quickMenuOpen: false,\n _onQuickMenuOpenChange: (prev) => prev,\n reader: undefined,\n quickMenuBottomBarBoundingBoxSignal: signal<ResizeObserverEntry | undefined>({\n default: undefined,\n }),\n notificationsSubject: new Subject<ReaderNotification>(),\n refitMenuOpen: false,\n onRefitMenuOpenChange: () => {},\n fontSizeMenuOpen: false,\n onFontSizeMenuOpenChange: () => {},\n fontSizeMin: 0.2,\n fontSizeMax: 5,\n uncontrolledFontSize: 1,\n enableFloatingProgress: true,\n selectedHighlight: undefined,\n})\n\nexport const ReaderContext = createContext(\n signal({ default: getDefaultValue() }),\n)\n","import { isShallowEqual, pick, watchKeys } from \"@prose-reader/core\"\nimport { useContext } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { ReaderContext, type ReaderContextType } from \"./context\"\n\nexport const useReaderContextValue = <T extends keyof ReaderContextType>(\n keys: T[],\n) => {\n const context = useContext(ReaderContext)\n\n return useObserve(\n () => context.pipe(watchKeys(keys)),\n {\n compareFn: isShallowEqual,\n defaultValue: pick(context.value, keys),\n },\n [],\n ).data\n}\n\nexport const useReaderContext = () => {\n return useContext(ReaderContext)\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSignalValue } from \"reactjrx\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS = 24\n\n// @todo use Popover\nexport const FloatingMenu = memo(\n ({\n children,\n ...rest\n }: {\n present: boolean\n children: React.ReactNode\n } & PresenceProps) => {\n const { quickMenuBottomBarBoundingBoxSignal } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"zoomMaxScale\",\n ])\n const quickMenuBottomBarBoundingBox = useSignalValue(\n quickMenuBottomBarBoundingBoxSignal,\n )\n const bottomBarHeight =\n quickMenuBottomBarBoundingBox?.borderBoxSize?.[0]?.blockSize ||\n SAFE_MARGIN_FLOATING_BOTTOM_ELEMENTS\n\n return (\n <Presence\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n position=\"absolute\"\n bottom={`calc(${bottomBarHeight}px + var(--chakra-spacing-4))`}\n right={4}\n backgroundColor=\"bg.panel\"\n shadow=\"sm\"\n borderRadius=\"md\"\n p={2}\n display=\"flex\"\n flexDirection=\"row\"\n gap={2}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport type { AnnotationsEnhancerAPI } from \"@prose-reader/enhancer-annotations\"\nimport type { AudioEnhancerAPI } from \"@prose-reader/enhancer-audio\"\nimport type { GalleryEnhancerAPI } from \"@prose-reader/enhancer-gallery\"\nimport type { RefitEnhancerAPI } from \"@prose-reader/enhancer-refit\"\nimport type { SearchEnhancerAPI } from \"@prose-reader/enhancer-search\"\nimport { useReaderContextValue } from \"./useReaderContext\"\n\nexport const useReader = () => {\n const { reader } = useReaderContextValue([\"reader\"])\n\n return reader\n}\n\nexport const hasSearchEnhancer = (\n reader?: Reader,\n): reader is Reader & SearchEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_SEARCH\" in reader\n}\n\nexport const hasAudioEnhancer = (\n reader?: Reader,\n): reader is Reader & AudioEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_AUDIO\" in reader\n}\n\nexport const hasAnnotationsEnhancer = (\n reader?: Reader,\n): reader is Reader & AnnotationsEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_ANNOTATIONS\" in reader\n}\n\nexport const hasGalleryEnhancer = (\n reader?: Reader,\n): reader is Reader & GalleryEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_GALLERY\" in reader\n}\n\nexport const hasRefitEnhancer = (\n reader?: Reader,\n): reader is Reader & RefitEnhancerAPI => {\n return !!reader && \"__PROSE_READER_ENHANCER_REFIT\" in reader\n}\n","import { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useReaderWithAnnotations = () => {\n const reader = useReader()\n const readerWithBookmarks = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return readerWithBookmarks\n}\n","import { Button } from \"@chakra-ui/react\"\nimport { FaEdit } from \"react-icons/fa\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { EMPTY, map, startWith, switchMap } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const AnnotateControls = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n const { selectedHighlight } = useReaderContextValue([\"selectedHighlight\"])\n const { data: isOpen } = useObserve(\n () =>\n reader?.selection.selectionOver$.pipe(\n switchMap(() =>\n reader.selection.selectionEnd$.pipe(\n map(() => false),\n startWith(true),\n ),\n ),\n ) ?? EMPTY,\n { defaultValue: false },\n [reader],\n )\n\n return (\n <FloatingMenu present={isOpen && !selectedHighlight}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n const selection = reader?.selection.getSelection()\n\n if (!selection) return\n\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n selection,\n },\n }))\n }}\n >\n <FaEdit />\n Annotate\n </Button>\n <Button variant=\"outline\" size=\"sm\" disabled>\n <LuNotebookPen />\n Bookmark\n </Button>\n </FloatingMenu>\n )\n}\n","export const truncateText = (text: string, maxLength = 50): string => {\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength)}...`\n}\n","import type { ButtonProps } from \"@chakra-ui/react\"\nimport { IconButton as ChakraIconButton } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { LuX } from \"react-icons/lu\"\n\nexport type CloseButtonProps = ButtonProps\n\nexport const CloseButton = React.forwardRef<\n HTMLButtonElement,\n CloseButtonProps\n>(function CloseButton(props, ref) {\n return (\n <ChakraIconButton variant=\"ghost\" aria-label=\"Close\" ref={ref} {...props}>\n {props.children ?? <LuX />}\n </ChakraIconButton>\n )\n})\n","import { Drawer as ChakraDrawer, Portal } from \"@chakra-ui/react\"\nimport { CloseButton } from \"./close-button\"\nimport * as React from \"react\"\n\ninterface DrawerContentProps extends ChakraDrawer.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n offset?: ChakraDrawer.ContentProps[\"padding\"]\n}\n\nexport const DrawerContent = React.forwardRef<\n HTMLDivElement,\n DrawerContentProps\n>(function DrawerContent(props, ref) {\n const { children, portalled = true, portalRef, offset, ...rest } = props\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner padding={offset}>\n <ChakraDrawer.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n )\n})\n\nexport const DrawerCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n return (\n <ChakraDrawer.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref} />\n </ChakraDrawer.CloseTrigger>\n )\n})\n\nexport const DrawerTrigger = ChakraDrawer.Trigger\nexport const DrawerRoot = ChakraDrawer.Root\nexport const DrawerFooter = ChakraDrawer.Footer\nexport const DrawerHeader = ChakraDrawer.Header\nexport const DrawerBody = ChakraDrawer.Body\nexport const DrawerBackdrop = ChakraDrawer.Backdrop\nexport const DrawerDescription = ChakraDrawer.Description\nexport const DrawerTitle = ChakraDrawer.Title\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger\n","import { Box, Button, Stack, Text, Textarea } from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { tap } from \"rxjs\"\nimport { truncateText } from \"../common/utils\"\nimport {\n DrawerBackdrop,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerRoot,\n} from \"../components/ui/drawer\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nconst HIGHLIGHT_COLORS = [\n \"rgba(216, 191, 216, 1)\", // Light purple\n \"rgba(255, 225, 125, 1)\", // Soft yellow\n \"rgba(144, 238, 144, 1)\", // Light green\n \"rgba(173, 216, 230, 1)\", // Light blue\n \"rgba(255, 182, 193, 1)\", // Light pink\n] as const\n\nexport const AnnotationDrawer = memo(() => {\n const reader = useReaderWithAnnotations()\n const {\n selectedHighlight,\n onAnnotationCreate,\n onAnnotationUpdate,\n onAnnotationDelete,\n } = useReaderContextValue([\n \"selectedHighlight\",\n \"onAnnotationCreate\",\n \"onAnnotationUpdate\",\n \"onAnnotationDelete\",\n ])\n const context = useReaderContext()\n const { highlight, selection } = selectedHighlight ?? {}\n const [selectedColor, setSelectedColor] = useState<string>(\n HIGHLIGHT_COLORS[0],\n )\n const [contents, setContents] = useState<string>(\"\")\n const isOpen = !!(selection ?? highlight)\n\n const onClose = () => {\n context.update((state) => ({\n ...state,\n selectedHighlight: undefined,\n }))\n }\n\n const onOpenChange: ComponentProps<typeof DrawerRoot>[\"onOpenChange\"] = (\n event,\n ) => {\n if (!event.open) {\n onClose()\n }\n }\n\n const highlightColor = highlight?.highlightColor\n const highlightContent = highlight?.notes\n\n useEffect(() => {\n void isOpen\n\n setContents(\"\")\n }, [isOpen])\n\n useEffect(() => {\n setContents(highlightContent ?? \"\")\n }, [highlightContent])\n\n useEffect(() => {\n void isOpen\n\n if (highlightColor) {\n setSelectedColor(highlightColor)\n } else {\n setSelectedColor(HIGHLIGHT_COLORS[0])\n }\n }, [highlightColor, isOpen])\n\n const onOpenDrawerOnTap = useCallback(\n function openDrawerOnTap() {\n return reader?.annotations.highlightTap$.pipe(\n tap(({ highlight }) => {\n context.update((state) => ({\n ...state,\n selectedHighlight: {\n highlight,\n },\n }))\n }),\n )\n },\n [reader, context],\n )\n\n useSubscribe(onOpenDrawerOnTap)\n\n return (\n <DrawerRoot placement=\"bottom\" onOpenChange={onOpenChange} open={isOpen}>\n <DrawerBackdrop />\n <DrawerContent>\n <DrawerHeader borderBottomWidth=\"1px\">\n {highlight\n ? \"Highlight\"\n : `Selection: \"${truncateText(selection?.selection?.toString() ?? \"\", 10)}\"`}\n </DrawerHeader>\n <DrawerBody gap={4} display=\"flex\" flexDirection=\"column\" pb={4}>\n <Stack>\n <Stack gap={2} flexDirection=\"row\">\n {HIGHLIGHT_COLORS.map((color) => (\n <Box\n bgColor={color}\n height={10}\n width={10}\n key={color}\n borderRadius=\"50%\"\n cursor=\"pointer\"\n {...(selectedColor === color && {\n border: \"4px solid white\",\n })}\n onClick={() => setSelectedColor(color)}\n />\n ))}\n </Stack>\n <Text>Annotation:</Text>\n <Textarea\n value={contents}\n onChange={(event) => setContents(event.target.value)}\n />\n </Stack>\n {!!selection && (\n <Button\n onClick={() => {\n onClose()\n\n const annotation = reader?.annotations.createAnnotation({\n ...selection,\n highlightColor: selectedColor,\n notes: contents,\n })\n\n if (annotation) {\n onAnnotationCreate?.(annotation)\n }\n }}\n >\n Highlight\n </Button>\n )}\n {!!highlight && (\n <Stack direction=\"row\">\n <Button\n flex={1}\n onClick={() => {\n onClose()\n\n onAnnotationUpdate?.({\n id: highlight.id,\n highlightColor: selectedColor,\n notes: contents,\n })\n }}\n >\n Update\n </Button>\n <Button\n flex={1}\n variant=\"surface\"\n onClick={() => {\n onClose()\n\n onAnnotationDelete?.(highlight.id)\n }}\n >\n Remove\n </Button>\n </Stack>\n )}\n </DrawerBody>\n </DrawerContent>\n </DrawerRoot>\n )\n})\n","import { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { CloseButton } from \"./close-button\"\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n backdrop?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(function DialogContent(props, ref) {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n )\n})\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger\n position=\"absolute\"\n top=\"2\"\n insetEnd=\"2\"\n {...props}\n asChild\n >\n <CloseButton size=\"sm\" ref={ref}>\n {props.children}\n </CloseButton>\n </ChakraDialog.CloseTrigger>\n )\n})\n\nexport const DialogRoot = ChakraDialog.Root\nexport const DialogFooter = ChakraDialog.Footer\nexport const DialogHeader = ChakraDialog.Header\nexport const DialogBody = ChakraDialog.Body\nexport const DialogBackdrop = ChakraDialog.Backdrop\nexport const DialogTitle = ChakraDialog.Title\nexport const DialogDescription = ChakraDialog.Description\nexport const DialogTrigger = ChakraDialog.Trigger\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger\n","import { isDefined, useObserve } from \"reactjrx\"\nimport { filter, map, switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotation = (id: string) => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n map((items) => items.find((item) => item.id === id)),\n filter(isDefined),\n switchMap((item) => readerWithAnnotations.locateResource(item)),\n ),\n [readerWithAnnotations],\n )\n}\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport { LuNotebookPen } from \"react-icons/lu\"\nimport { useReader } from \"../context/useReader\"\nimport { useAnnotation } from \"./useAnnotation\"\n\nexport const AnnotationListItem = ({\n id,\n onNavigate,\n allowLeftIcon = true,\n}: {\n id: string\n onNavigate: () => void\n allowLeftIcon?: boolean\n}) => {\n const reader = useReader()\n const { data: annotation } = useAnnotation(id)\n const textContent =\n annotation?.meta.range?.toString() || annotation?.meta.node?.textContent\n\n return (\n <List.Item>\n <Link\n href=\"#\"\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToCfi(annotation?.meta.cfi ?? \"\")\n }}\n >\n {annotation?.resource?.notes ? (\n <List.Indicator asChild>\n <LuNotebookPen />\n </List.Indicator>\n ) : allowLeftIcon ? (\n <List.Indicator asChild visibility=\"hidden\">\n <LuNotebookPen />\n </List.Indicator>\n ) : null}\n <Stack gap={0}>\n {textContent ? (\n <Text lineClamp={2} fontSize=\"md\">\n {textContent}\n </Text>\n ) : (\n <Text lineClamp={2} fontSize=\"md\" fontStyle=\"italic\">\n Page {(annotation?.meta.absolutePageIndex ?? 0) + 1}\n </Text>\n )}\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Book page: ${\n annotation?.meta?.absolutePageIndex !== undefined\n ? annotation.meta.absolutePageIndex + 1\n : \"unknown (not loaded)\"\n }`}</Text>\n </Stack>\n </Link>\n </List.Item>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { switchMap } from \"rxjs\"\nimport { hasAnnotationsEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAnnotations = () => {\n const reader = useReader()\n const readerWithAnnotations = hasAnnotationsEnhancer(reader)\n ? reader\n : undefined\n\n return useObserve(\n () =>\n readerWithAnnotations?.annotations.annotations$.pipe(\n switchMap((highlights) => {\n return readerWithAnnotations.locateResource(highlights)\n }),\n ),\n [readerWithAnnotations],\n )\n}\n","import { useAnnotations } from \"./useAnnotations\"\n\nexport const useHighlights = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter((annotation) => annotation.meta.isCfiRange),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"./AnnotationListItem\"\nimport { useHighlights } from \"./useHighlights\"\n\nexport const AnnotationsList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useHighlights()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n />\n ))}\n </List.Root>\n )\n}\n","import { useAnnotations } from \"../useAnnotations\"\n\nexport const useBookmarks = () => {\n const { data: annotations } = useAnnotations()\n\n return {\n data: annotations?.filter(\n (annotation) => !annotation.meta.isCfiRange && !annotation.resource.notes,\n ),\n }\n}\n","import { List } from \"@chakra-ui/react\"\nimport { AnnotationListItem } from \"../AnnotationListItem\"\nimport { useBookmarks } from \"./useBookmarks\"\n\nexport const BookmarksList = ({ onNavigate }: { onNavigate: () => void }) => {\n const { data: annotations } = useBookmarks()\n\n return (\n <List.Root overflowY=\"auto\" gap={3} pt={4} variant=\"plain\">\n {annotations?.map((item) => (\n <AnnotationListItem\n key={item.resource.id}\n id={item.resource.id}\n onNavigate={onNavigate}\n allowLeftIcon={false}\n />\n ))}\n </List.Root>\n )\n}\n","import { Tabs } from \"@chakra-ui/react\"\nimport { memo, useState } from \"react\"\nimport { LuBookmark, LuNotebookPen } from \"react-icons/lu\"\nimport { AnnotationsList } from \"./AnnotationsList\"\nimport { BookmarksList } from \"./bookmarks/BookmarksList\"\n\nexport const AnnotationsDialogContent = memo(\n ({\n onNavigate,\n defaultTab,\n }: {\n onNavigate: () => void\n defaultTab: \"bookmarks\" | \"annotations\" | undefined\n }) => {\n const [tab, setTab] = useState(defaultTab ?? \"bookmarks\")\n\n return (\n <Tabs.Root\n value={tab}\n onValueChange={(e) => setTab(e.value as \"bookmarks\" | \"annotations\")}\n >\n <Tabs.List>\n <Tabs.Trigger value=\"bookmarks\">\n <LuBookmark />\n Bookmarks\n </Tabs.Trigger>\n <Tabs.Trigger value=\"annotations\">\n <LuNotebookPen />\n Annotations\n </Tabs.Trigger>\n <Tabs.Indicator />\n </Tabs.List>\n <Tabs.Content value=\"bookmarks\">\n <BookmarksList onNavigate={onNavigate} />\n </Tabs.Content>\n <Tabs.Content value=\"annotations\">\n <AnnotationsList onNavigate={onNavigate} />\n </Tabs.Content>\n </Tabs.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { AnnotationsDialogContent } from \"./AnnotationsDialogContent\"\n\nexport const AnnotationsDialog = memo(\n ({\n openWith,\n setOpen,\n onNavigate,\n }: {\n openWith: \"bookmarks\" | \"annotations\" | undefined\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={!!openWith}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Annotations</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1}>\n <AnnotationsDialogContent\n onNavigate={onNavigate}\n defaultTab={openWith}\n />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useObserve } from \"reactjrx\"\nimport { EMPTY, map, of } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useSpineItem = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const reader = useReader()\n\n return useObserve(() => {\n if (!reader) return EMPTY\n\n if (itemIndex !== undefined)\n return of(reader.spine.spineItemsManager.get(itemIndex))\n\n if (absolutePageIndex !== undefined) {\n return reader.spine.pages\n .observeFromAbsolutePageIndex(absolutePageIndex)\n .pipe(\n map((page) => reader.spine.spineItemsManager.get(page?.itemIndex)),\n )\n }\n\n return EMPTY\n }, [itemIndex, absolutePageIndex, reader])\n}\n","import { useObserve } from \"reactjrx\"\nimport { NEVER } from \"rxjs\"\nimport { useSpineItem } from \"./useSpineItem\"\n\nexport const useSpineItemReady = ({\n absolutePageIndex,\n itemIndex,\n}: {\n absolutePageIndex?: number\n itemIndex?: number\n}) => {\n const { data: spineItem } = useSpineItem({ absolutePageIndex, itemIndex })\n const { data: isReady } = useObserve(\n () => (!spineItem ? NEVER : spineItem.isReady$),\n [spineItem],\n )\n\n return { spineItem, isReady }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { useSpineItemReady } from \"../../common/useSpineItemReady\"\nimport { BOOKMARK_AREA_DATA_ATTRIBUTE } from \"../../constants\"\nimport { useAnnotations } from \"../useAnnotations\"\n\nexport const BookmarkPageMarker = memo(\n ({\n absolutePageIndex,\n left,\n top,\n width,\n }: {\n absolutePageIndex: number\n left: number\n top: number\n width: number\n }) => {\n const { isReady: isItemReady } = useSpineItemReady({\n absolutePageIndex,\n })\n const { data: bookmarks } = useAnnotations()\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex === absolutePageIndex &&\n !bookmark.meta.isCfiRange,\n )\n\n /**\n * Stale bookmarks means we cannot assert at the moment whether the page is marked or not.\n * In this case we just hide the bookmark button. You may want to have different UX to handle\n * this case.\n *\n * This also avoid having a flash where you show an non bookmarked icon and right away change it with\n * a valid marked page icon.\n */\n if (!isItemReady) return null\n\n const markerSize = (width * 0.1) / 2\n\n return (\n <Presence\n present={!!bookmarkForPage}\n lazyMount\n animationName={{ _open: \"fade-in\", _closed: \"fade-out\" }}\n animationDuration=\"moderate\"\n >\n <Box\n data-bookmark-area={BOOKMARK_AREA_DATA_ATTRIBUTE}\n position=\"absolute\"\n left={left + width}\n transform=\"translateX(-100%)\"\n pointerEvents=\"none\"\n top={top}\n width={markerSize}\n height={markerSize}\n _before={{\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n borderTop: `${markerSize}px solid #03030373`,\n borderLeft: `${markerSize}px solid transparent`,\n }}\n />\n </Presence>\n )\n },\n)\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../../context/useReader\"\nimport { BookmarkPageMarker } from \"./BookmarkPageMarker\"\n\nexport const BookmarkPageMarkers = memo(() => {\n const reader = useReader()\n const { data: pages } = useObserve(() => reader?.layoutInfo$, [reader])\n\n return (\n <>\n {pages?.pages.map(\n ({ absoluteLayout: { left, top, width } }, pageIndex) => (\n <BookmarkPageMarker\n key={pageIndex}\n absolutePageIndex={pageIndex}\n left={left}\n top={top}\n width={width}\n />\n ),\n )}\n </>\n )\n})\n","import { useEffect } from \"react\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderContext } from \"../../context/useReaderContext\"\nimport { useAnnotations } from \"../useAnnotations\"\nimport { useReaderWithAnnotations } from \"../useReaderWithAnnotations\"\n\nconst CONTINUE_TAP_GESTURE = true\nconst BOOKMARK_CORNER_SIZE_PERCENT = 10\n\nconst isTopRightCornerPosition = ({\n position,\n containerSize,\n sizePercent,\n}: {\n position: {\n x: number\n y: number\n }\n containerSize: {\n width: number\n height: number\n }\n sizePercent: number\n}) => {\n const actualSize =\n Math.min(containerSize.width, containerSize.height) * (sizePercent / 100)\n\n return (\n position.x > containerSize.width - actualSize && position.y < actualSize\n )\n}\n\nexport const useBookmarkOnCornerTap = () => {\n const reader = useReaderWithAnnotations()\n const { data: bookmarks } = useAnnotations()\n const readerContext = useReaderContext()\n\n useEffect(() => {\n if (!reader) return\n\n const unSub = reader.gestures.hooks.register(\n \"beforeTapGesture\",\n ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader?.annotations.candidates$),\n map(([context, candidates]) => {\n if (!context.page) return CONTINUE_TAP_GESTURE\n\n const {\n spineItem,\n spineItemPageIndex,\n spineItemPagePosition,\n pageSize,\n } = context.page\n\n const hasTapOnTopRightCorner = isTopRightCornerPosition({\n position: spineItemPagePosition,\n containerSize: pageSize,\n sizePercent: BOOKMARK_CORNER_SIZE_PERCENT,\n })\n\n if (hasTapOnTopRightCorner) {\n const pageEntry = reader.spine.pages.fromSpineItemPageIndex(\n spineItem,\n spineItemPageIndex,\n )\n\n if (!pageEntry) return CONTINUE_TAP_GESTURE\n\n const bookmarkForPage = bookmarks?.find(\n (bookmark) =>\n bookmark?.meta?.absolutePageIndex ===\n pageEntry.absolutePageIndex &&\n bookmark.meta.range === undefined,\n )\n\n if (bookmarkForPage) {\n readerContext.value.onAnnotationDelete?.(\n bookmarkForPage.resource.id,\n )\n\n return !CONTINUE_TAP_GESTURE\n }\n\n const canBookmarkPage = candidates?.[pageEntry.absolutePageIndex]\n\n if (canBookmarkPage) {\n const annotation = reader?.annotations.createAnnotation({\n absolutePageIndex: pageEntry.absolutePageIndex,\n })\n\n if (annotation) {\n readerContext.value.onAnnotationCreate?.(annotation)\n }\n\n return !CONTINUE_TAP_GESTURE\n }\n }\n\n return CONTINUE_TAP_GESTURE\n }),\n ),\n )\n\n return unSub\n }, [reader, bookmarks, readerContext])\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map, withLatestFrom } from \"rxjs\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const usePreventInteractionOnSelection = () => {\n const reader = useReaderWithAnnotations()\n\n const beforeTapGesture = useCallback(\n () =>\n /**\n * Hook used to prevent some gestures from being handled.\n */\n reader?.gestures.hooks.register(\"beforeTapGesture\", ({ event$ }) =>\n event$.pipe(\n withLatestFrom(reader.selection.lastSelectionOnPointerdown$),\n map(([{ event }, lastSelectionOnPointerdown]) => {\n const target = event.event.target\n\n /**\n * In this case if we have a gesture on an annotation, we want to prevent\n * it.\n */\n const wasOrIsOnSelection =\n (target && reader.annotations.isTargetWithinHighlight(target)) ||\n lastSelectionOnPointerdown\n\n return !wasOrIsOnSelection\n }),\n ),\n ),\n [reader],\n )\n\n useSubscribe(beforeTapGesture)\n}\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { combineLatest, distinctUntilChanged, map } from \"rxjs\"\nimport { useReaderContext } from \"../context/useReaderContext\"\nimport { useReaderWithAnnotations } from \"./useReaderWithAnnotations\"\n\nexport const useSyncAnnotationsWithReader = () => {\n const reader = useReaderWithAnnotations()\n const context = useReaderContext()\n\n const syncAnnotationsWithReader = useCallback(() => {\n if (reader) {\n const selectedHighlight$ = context.pipe(\n map((context) => context.selectedHighlight?.highlight?.id),\n distinctUntilChanged(),\n )\n\n const annotations$ = context.pipe(\n map((context) => context.annotations ?? []),\n distinctUntilChanged(),\n )\n\n const annotationsWithSelected$ = combineLatest([\n annotations$,\n selectedHighlight$,\n ]).pipe(\n map(([annotations, selectedHighlight]) =>\n annotations.map((annotation) => ({\n ...annotation,\n selected: annotation.id === selectedHighlight,\n })),\n ),\n )\n\n reader.annotations.update({ annotations$: annotationsWithSelected$ })\n }\n }, [reader, context])\n\n useSubscribe(syncAnnotationsWithReader)\n}\n","import type { AudioEnhancedReader } from \"@prose-reader/enhancer-audio\"\nimport { hasAudioEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAudioReader = (): AudioEnhancedReader | undefined => {\n const reader = useReader()\n\n return hasAudioEnhancer(reader) ? reader : undefined\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioVisualizer = (enabled = true) => {\n const audioReader = useAudioReader()\n const { data: visualizer } = useObserve<AudioVisualizerState | undefined>(\n () => (enabled ? audioReader?.audio.visualizer$ : undefined),\n [enabled, audioReader],\n )\n\n return visualizer\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useIsCurrentAudioTrack = ({\n enabled = true,\n trackId,\n}: {\n enabled?: boolean\n trackId: string\n}) => {\n const audioReader = useAudioReader()\n const { data: isCurrentTrack = false } = useObserve(\n () =>\n enabled\n ? audioReader?.audio.state$.pipe(\n map((state) => state.currentTrack?.id === trackId),\n distinctUntilChanged(),\n )\n : undefined,\n [enabled, trackId, audioReader],\n )\n\n return isCurrentTrack\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\n\nexport const FALLBACK_TOP_COLOR = `#93c5fd`\nexport const FALLBACK_BOTTOM_COLOR = `#3b82f6`\nexport const MIN_BAR_HEIGHT = 1\nexport const MAX_BAR_HEIGHT_RATIO = 0.1\nexport const IDLE_LEVEL = 0.08\nexport const EDGE_FADE_PORTION = 0.25\nexport const CENTER_EMPHASIS_RATIO = 0.15\n\nexport const DEFAULT_STATE_BASE_LEVEL = 0.02\nexport const DEFAULT_STATE_PEAK_LEVEL = 0.145\nexport const DEFAULT_STATE_HILL_SPREAD = 0.52\nexport const DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO = 0.16\nexport const DEFAULT_STATE_OPACITY = 0.5\nexport const DEFAULT_STATE_TEXTURE_AMOUNT = 0.34\n\nexport const DEFAULT_VISUALIZER_STATE: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n","import {\n DEFAULT_STATE_BASE_LEVEL,\n DEFAULT_STATE_HILL_SPREAD,\n DEFAULT_STATE_PEAK_LEVEL,\n DEFAULT_STATE_TEXTURE_AMOUNT,\n IDLE_LEVEL,\n} from \"./constants\"\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport const smoothstep = (edge0: number, edge1: number, value: number) => {\n if (edge0 === edge1) return Number(value >= edge1)\n\n const normalized = clamp((value - edge0) / (edge1 - edge0), 0, 1)\n\n return normalized * normalized * (3 - 2 * normalized)\n}\n\nconst getDefaultTexture = (progress: number) => {\n const lowFrequency = Math.sin(progress * Math.PI * 6 + 0.8)\n const highFrequency = Math.sin(progress * Math.PI * 14 + 1.7)\n\n return clamp(0.5 + lowFrequency * 0.3 + highFrequency * 0.2, 0, 1)\n}\n\nexport const getDefaultDisplayBars = (numBars: number) =>\n Array.from({ length: numBars }, (_, index) => {\n const progress = numBars === 1 ? 0.5 : index / (numBars - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const hillProfile =\n 1 - smoothstep(DEFAULT_STATE_HILL_SPREAD, 1, centerDistance)\n const texture = getDefaultTexture(progress)\n const texturedHill =\n hillProfile *\n (1 -\n DEFAULT_STATE_TEXTURE_AMOUNT +\n texture * DEFAULT_STATE_TEXTURE_AMOUNT)\n\n return clamp(\n DEFAULT_STATE_BASE_LEVEL + DEFAULT_STATE_PEAK_LEVEL * texturedHill,\n 0,\n 1,\n )\n })\n\nconst getAverage = (values: number[]) => {\n if (values.length === 0) return 0\n\n return values.reduce((total, value) => total + value, 0) / values.length\n}\n\nexport const hasMeaningfulLevels = (values: number[]) =>\n values.some((value) => value > 0.001)\n\nexport const getNormalizedDisplayBarCount = (value: number) => {\n const safeValue = Math.max(1, Math.floor(value))\n\n return safeValue % 2 === 0 ? safeValue + 1 : safeValue\n}\n\nexport const getMirroredDisplayBars = (\n values: number[],\n displayBarCount: number,\n) => {\n const normalizedDisplayBarCount =\n getNormalizedDisplayBarCount(displayBarCount)\n const centerOutSeedCount = Math.floor(normalizedDisplayBarCount / 2) + 1\n\n const centerOutSeed = Array.from(\n { length: centerOutSeedCount },\n (_, index) => {\n const start = Math.floor((index * values.length) / centerOutSeedCount)\n const end = Math.max(\n start + 1,\n Math.floor(((index + 1) * values.length) / centerOutSeedCount),\n )\n const average = getAverage(values.slice(start, end))\n\n return clamp(average, 0, 1)\n },\n )\n\n const centerBar = centerOutSeed[0] ?? IDLE_LEVEL\n const outerBars = centerOutSeed.slice(1)\n\n return [...outerBars.slice().reverse(), centerBar, ...outerBars]\n}\n\nexport const resolveGradientColors = (\n element: HTMLElement,\n {\n topVariable,\n topFallback,\n bottomVariable,\n bottomFallback,\n }: {\n topVariable: string\n topFallback: string\n bottomVariable: string\n bottomFallback: string\n },\n) => {\n const styles = window.getComputedStyle(element)\n const topColor = styles.getPropertyValue(topVariable).trim() || topFallback\n const bottomColor =\n styles.getPropertyValue(bottomVariable).trim() || bottomFallback\n\n return {\n topColor,\n bottomColor,\n }\n}\n","import type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport {\n CENTER_EMPHASIS_RATIO,\n DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO,\n DEFAULT_STATE_OPACITY,\n EDGE_FADE_PORTION,\n MAX_BAR_HEIGHT_RATIO,\n MIN_BAR_HEIGHT,\n} from \"./constants\"\nimport {\n clamp,\n getDefaultDisplayBars,\n getMirroredDisplayBars,\n hasMeaningfulLevels,\n smoothstep,\n} from \"./shaping\"\n\ntype WaveSize = {\n width: number\n height: number\n}\n\ntype DrawWaveArgs = {\n canvas: HTMLCanvasElement\n size: WaveSize\n visualizer: AudioVisualizerState\n displayBarCount: number\n displayedBars: number[]\n fillStyle: CanvasGradient | string\n}\n\nexport const drawWave = ({\n canvas,\n size,\n visualizer,\n displayBarCount,\n displayedBars,\n fillStyle,\n}: DrawWaveArgs) => {\n const context = canvas.getContext(`2d`)\n const { width, height } = size\n\n if (!context || width <= 0 || height <= 0) return displayedBars\n\n context.clearRect(0, 0, width, height)\n\n const hasPlayedLevels = hasMeaningfulLevels(visualizer.levels)\n const isDefaultState = !visualizer.isActive && !hasPlayedLevels\n const displayBars = isDefaultState\n ? getDefaultDisplayBars(displayBarCount)\n : getMirroredDisplayBars(visualizer.levels, displayBarCount)\n\n const nextDisplayedBars =\n displayedBars.length !== displayBars.length\n ? Array.from({ length: displayBars.length }, () => 0)\n : displayedBars\n\n const easedBars = visualizer.isActive\n ? nextDisplayedBars.map((value, index) => {\n const targetValue = displayBars[index] ?? 0\n const easing = 0.28\n\n return value + (targetValue - value) * easing\n })\n : [...displayBars]\n\n const gap = Math.round(\n clamp(width / Math.max(easedBars.length, 1) / 2.8, 1, 4),\n )\n const barWidth = Math.max(\n 2,\n Math.floor((width - gap * (easedBars.length - 1)) / easedBars.length),\n )\n const totalWidth = barWidth * easedBars.length + gap * (easedBars.length - 1)\n const startX = Math.max(0, (width - totalWidth) / 2)\n const centerY = height / 2\n const maxHeight = Math.max(\n MIN_BAR_HEIGHT,\n height *\n (isDefaultState\n ? DEFAULT_STATE_MAX_BAR_HEIGHT_RATIO\n : MAX_BAR_HEIGHT_RATIO),\n )\n context.fillStyle = fillStyle\n\n for (const [index, rawValue] of easedBars.entries()) {\n const amplitude = clamp(rawValue, 0, 1)\n const progress =\n easedBars.length === 1 ? 0.5 : index / (easedBars.length - 1)\n const centerDistance = Math.abs(progress - 0.5) * 2\n const centerProfile = 1 - smoothstep(0, 1, centerDistance)\n const emphasizedAmplitude =\n (amplitude * (1 + CENTER_EMPHASIS_RATIO * centerProfile)) /\n (1 + CENTER_EMPHASIS_RATIO * centerProfile * amplitude)\n const heightProgress = isDefaultState\n ? amplitude\n : emphasizedAmplitude ** 1.15\n const barHeight = Math.max(MIN_BAR_HEIGHT, heightProgress * maxHeight)\n const barRadius = Math.min(barWidth / 2, barHeight / 2)\n const x = Math.round(startX + index * (barWidth + gap))\n const y = centerY - barHeight / 2\n const edgeFade =\n smoothstep(0, EDGE_FADE_PORTION, progress) *\n (1 - smoothstep(1 - EDGE_FADE_PORTION, 1, progress))\n\n context.globalAlpha = clamp(\n (isDefaultState\n ? DEFAULT_STATE_OPACITY\n : visualizer.isActive\n ? 0.95\n : 0.75) * edgeFade,\n 0,\n 1,\n )\n context.beginPath()\n context.roundRect(x, y, barWidth, barHeight, barRadius)\n context.fill()\n }\n\n context.globalAlpha = 1\n\n return easedBars\n}\n","import { Box, useBreakpointValue } from \"@chakra-ui/react\"\nimport {\n setPropertyIfChanged,\n setStylePropertyIfChanged,\n} from \"@prose-reader/core\"\nimport type { AudioVisualizerState } from \"@prose-reader/enhancer-audio\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { FALLBACK_BOTTOM_COLOR, FALLBACK_TOP_COLOR } from \"./constants\"\nimport { drawWave as drawWaveFrame } from \"./drawWave\"\nimport { getNormalizedDisplayBarCount, resolveGradientColors } from \"./shaping\"\n\nconst DEFAULT_VISUALIZER: AudioVisualizerState = {\n levels: [],\n isActive: false,\n trackId: undefined,\n}\n\nexport const AudioWaveCanvas = ({\n visualizer,\n}: {\n visualizer?: AudioVisualizerState\n}) => {\n const displayBarCount = getNormalizedDisplayBarCount(\n useBreakpointValue({\n base: 29,\n md: 35,\n lg: 41,\n xl: 49,\n }) ?? 29,\n )\n const canvasRef = useRef<HTMLCanvasElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const frameRef = useRef<number | undefined>(undefined)\n const visualizerRef = useRef<AudioVisualizerState>(\n visualizer ?? DEFAULT_VISUALIZER,\n )\n const displayedBarsRef = useRef<number[]>([])\n const fillStyleRef = useRef<CanvasGradient | string>(FALLBACK_BOTTOM_COLOR)\n const sizeRef = useRef({\n width: 0,\n height: 0,\n })\n\n /**\n * Cache the gradient outside the animation loop to avoid repeated\n * `getComputedStyle()` and gradient allocation during playback.\n *\n * Limitation: the resolved Chakra CSS variable colors are treated as static\n * for the current canvas size. Theme or palette changes after mount are not\n * picked up immediately; the gradient is refreshed on resize and remount.\n */\n const refreshFillStyle = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas || sizeRef.current.height <= 0) return\n\n const context = canvas.getContext(`2d`)\n\n if (!context) return\n\n const { topColor, bottomColor } = resolveGradientColors(canvas, {\n topVariable: `--audio-wave-top-color`,\n topFallback: FALLBACK_TOP_COLOR,\n bottomVariable: `--audio-wave-bottom-color`,\n bottomFallback: FALLBACK_BOTTOM_COLOR,\n })\n const gradient = context.createLinearGradient(\n 0,\n 0,\n 0,\n sizeRef.current.height,\n )\n\n gradient.addColorStop(0, topColor)\n gradient.addColorStop(1, bottomColor)\n\n fillStyleRef.current = gradient\n }, [])\n\n const drawWave = useCallback(() => {\n const canvas = canvasRef.current\n\n if (!canvas) return\n\n const visualizer = visualizerRef.current\n\n displayedBarsRef.current = drawWaveFrame({\n canvas,\n size: sizeRef.current,\n visualizer,\n displayBarCount,\n displayedBars: displayedBarsRef.current,\n fillStyle: fillStyleRef.current,\n })\n }, [displayBarCount])\n\n const stopAnimation = useCallback(() => {\n if (frameRef.current !== undefined) {\n cancelAnimationFrame(frameRef.current)\n frameRef.current = undefined\n }\n }, [])\n\n const startAnimation = useCallback(() => {\n if (frameRef.current !== undefined) return\n\n const tick = () => {\n const visualizer = visualizerRef.current\n\n if (!visualizer.isActive) {\n frameRef.current = undefined\n drawWave()\n\n return\n }\n\n drawWave()\n frameRef.current = requestAnimationFrame(tick)\n }\n\n frameRef.current = requestAnimationFrame(tick)\n }, [drawWave])\n\n const resizeCanvas = useCallback(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n\n if (!canvas || !container) return\n\n const nextWidth = Math.max(1, container.clientWidth)\n const nextHeight = Math.max(1, container.clientHeight)\n const pixelRatio = window.devicePixelRatio || 1\n const nextCanvasWidth = Math.round(nextWidth * pixelRatio)\n const nextCanvasHeight = Math.round(nextHeight * pixelRatio)\n\n sizeRef.current = {\n width: nextWidth,\n height: nextHeight,\n }\n\n setPropertyIfChanged(canvas, `width`, nextCanvasWidth)\n setPropertyIfChanged(canvas, `height`, nextCanvasHeight)\n setStylePropertyIfChanged(canvas.style, `width`, `${nextWidth}px`)\n setStylePropertyIfChanged(canvas.style, `height`, `${nextHeight}px`)\n\n const context = canvas.getContext(`2d`)\n\n if (context) {\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0)\n }\n\n refreshFillStyle()\n drawWave()\n }, [drawWave, refreshFillStyle])\n\n useEffect(() => {\n visualizerRef.current = visualizer ?? DEFAULT_VISUALIZER\n\n if (visualizerRef.current.isActive) {\n startAnimation()\n return\n }\n\n stopAnimation()\n drawWave()\n }, [drawWave, startAnimation, stopAnimation, visualizer])\n\n useEffect(() => {\n const container = containerRef.current\n\n if (!container) return\n\n resizeCanvas()\n\n const resizeObserver = new ResizeObserver(() => {\n resizeCanvas()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n stopAnimation()\n resizeObserver.disconnect()\n }\n }, [resizeCanvas, stopAnimation])\n\n return (\n <Box\n ref={containerRef}\n position=\"absolute\"\n inset={0}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n px={8}\n py={12}\n pointerEvents=\"none\"\n css={{\n \"--audio-wave-top-color\": \"colors.colorPalette.emphasized\",\n \"--audio-wave-bottom-color\": \"colors.colorPalette.solid\",\n }}\n style={{\n WebkitMaskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n maskImage:\n \"linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%)\",\n }}\n >\n <canvas ref={canvasRef} />\n </Box>\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioVisualizer } from \"./useAudioVisualizer\"\nimport { useIsCurrentAudioTrack } from \"./useIsCurrentAudioTrack\"\nimport { AudioWaveCanvas } from \"./wave/AudioWaveCanvas\"\n\n/**\n * Render only when there is a `renderer`. Meaning the item is loaded.\n * - Renders correct visualizer for current item.\n * - Renders default visualizer when item is not currently playing.\n */\nexport const AudioSpineItem = ({ item }: { item: CoreSpineItem }) => {\n const audioReader = useAudioReader()\n const isAudioRenderer = audioReader?.audio.isAudioRenderer(item.renderer)\n const audioRenderer = isAudioRenderer ? item.renderer : undefined\n const { data: audioDocumentContainer } = useObserve(\n () => audioRenderer?.watch(`documentContainer`),\n [audioRenderer, isAudioRenderer],\n )\n const isCurrentTrack = useIsCurrentAudioTrack({\n enabled: !!audioDocumentContainer,\n trackId: item.item.id,\n })\n const visualizer = useAudioVisualizer(isCurrentTrack)\n\n if (!audioDocumentContainer) return null\n\n return createPortal(\n <AudioWaveCanvas visualizer={isCurrentTrack ? visualizer : undefined} />,\n audioDocumentContainer,\n )\n}\n","import type { SpineItem as CoreSpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { AudioSpineItem } from \"../audio/AudioSpineItem\"\n\nexport const SpineItem = memo(({ item }: { item: CoreSpineItem }) => {\n const container = item.containerElement\n\n return <>{createPortal(<AudioSpineItem item={item} />, container)}</>\n})\n","import { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SpineItem } from \"./SpineItem\"\n\nexport const Spine = memo(({ children }: { children: React.ReactNode }) => {\n const reader = useReader()\n const { data: spineElement } = useObserve(\n () => reader?.spine.element$,\n [reader],\n )\n const { data: spineItems } = useObserve(\n () => reader?.spine.spineItemsManager.items$,\n [reader],\n )\n\n if (!spineElement) return null\n\n return (\n <>\n {createPortal(\n <>\n {children}\n {spineItems?.map((item) => (\n <SpineItem key={item.index} item={item} />\n ))}\n </>,\n spineElement,\n )}\n </>\n )\n})\n","\"use client\"\n\nimport {\n Toaster as ChakraToaster,\n Portal,\n Spinner,\n Stack,\n Toast,\n createToaster,\n} from \"@chakra-ui/react\"\n\ntype Toaster = ReturnType<typeof createToaster>\n\nexport const toaster: Toaster = createToaster({\n placement: \"bottom-end\",\n pauseOnPageIdle: true,\n})\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? (\n <Spinner size=\"sm\" color=\"blue.solid\" />\n ) : (\n <Toast.Indicator />\n )}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description>{toast.description}</Toast.Description>\n )}\n </Stack>\n {toast.action && (\n <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>\n )}\n {toast.meta?.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n )\n}\n","import { isShallowEqual } from \"@prose-reader/shared\"\nimport { type ComponentProps, memo, useCallback, useEffect } from \"react\"\nimport { signal, useConstant, useMemoCompare, useSignalValue } from \"reactjrx\"\nimport {\n getDefaultValue,\n type PrivateContextType,\n type PublicContextType,\n ReaderContext,\n} from \"./context\"\n\nconst SignalProvider = ({\n children,\n ...props\n}: {\n children: React.ReactNode\n} & PublicContextType) => {\n const valueSignal = useConstant(() => signal({ default: getDefaultValue() }))\n /**\n * font menu open\n */\n const uncontrolledFontSizeMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.fontSizeMenuOpen }),\n )\n const uncontrolledFontSizeMenuOpenValue = useSignalValue(\n uncontrolledFontSizeMenuOpen,\n )\n const uncontrolledOnFontSizeMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledFontSizeMenuOpen.update(open)\n },\n [uncontrolledFontSizeMenuOpen],\n )\n const _onQuickMenuOpenChange: PrivateContextType[\"_onQuickMenuOpenChange\"] =\n useCallback(\n (valueOrUpdater: boolean | ((prev: boolean) => boolean)) => {\n valueSignal.update((old) => ({\n ...old,\n _quickMenuOpen:\n typeof valueOrUpdater === \"function\"\n ? valueOrUpdater(old._quickMenuOpen)\n : valueOrUpdater,\n }))\n },\n [valueSignal],\n )\n const uncontrolledRefitMenuOpen = useConstant(() =>\n signal({ default: valueSignal.value.refitMenuOpen }),\n )\n const uncontrolledOnRefitMenuOpenChange = useCallback(\n (open: boolean) => {\n uncontrolledRefitMenuOpen.update(open)\n },\n [uncontrolledRefitMenuOpen],\n )\n const uncontrolledRefitMenuOpenValue = useSignalValue(\n uncontrolledRefitMenuOpen,\n )\n\n const memoizedProps = useMemoCompare(props, isShallowEqual)\n\n useEffect(() => {\n valueSignal.update((old) => ({\n ...old,\n ...memoizedProps,\n onFontSizeMenuOpenChange: uncontrolledOnFontSizeMenuOpenChange,\n fontSizeMenuOpen: uncontrolledFontSizeMenuOpenValue,\n onRefitMenuOpenChange: uncontrolledOnRefitMenuOpenChange,\n refitMenuOpen: uncontrolledRefitMenuOpenValue,\n _onQuickMenuOpenChange,\n }))\n }, [\n memoizedProps,\n _onQuickMenuOpenChange,\n valueSignal,\n uncontrolledFontSizeMenuOpenValue,\n uncontrolledOnFontSizeMenuOpenChange,\n uncontrolledRefitMenuOpenValue,\n uncontrolledOnRefitMenuOpenChange,\n ])\n\n return (\n <ReaderContext.Provider value={valueSignal}>\n {children}\n </ReaderContext.Provider>\n )\n}\n\nexport const ReactReaderProvider = memo(\n ({ children, ...props }: ComponentProps<typeof SignalProvider>) => {\n return <SignalProvider {...props}>{children}</SignalProvider>\n },\n)\n","import { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface RadioProps extends ChakraRadioGroup.ItemProps {\n rootRef?: React.Ref<HTMLDivElement>\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const { children, inputProps, rootRef, ...rest } = props\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n )\n },\n)\n\nexport const RadioGroup = ChakraRadioGroup.Root\n","import { Slider as ChakraSlider, For, HStack } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface SliderProps extends ChakraSlider.RootProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n label?: React.ReactNode\n showValue?: boolean\n}\n\nexport const Slider = React.memo(function Slider({\n ref,\n ...props\n}: SliderProps & { ref?: React.RefObject<HTMLDivElement> }) {\n const { marks: marksProp, label, showValue, ...rest } = props\n const value = props.defaultValue ?? props.value\n\n const marks = marksProp?.map((mark) => {\n if (typeof mark === \"number\") return { value: mark, label: undefined }\n return mark\n })\n\n const hasMarkLabel = !!marks?.some((mark) => mark.label)\n\n return (\n <ChakraSlider.Root ref={ref} thumbAlignment=\"center\" {...rest}>\n {label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}\n {label && showValue && (\n <HStack justify=\"space-between\">\n <ChakraSlider.Label>{label}</ChakraSlider.Label>\n <ChakraSlider.ValueText />\n </HStack>\n )}\n <ChakraSlider.Control data-has-mark-label={hasMarkLabel || undefined}>\n <ChakraSlider.Track>\n <ChakraSlider.Range />\n </ChakraSlider.Track>\n <SliderThumbs value={value} />\n <SliderMarks marks={marks} />\n </ChakraSlider.Control>\n </ChakraSlider.Root>\n )\n})\n\nfunction SliderThumbs(props: { value?: number[] }) {\n const { value } = props\n return (\n <For each={value}>\n {(_, index) => (\n <ChakraSlider.Thumb key={index} index={index}>\n <ChakraSlider.HiddenInput />\n </ChakraSlider.Thumb>\n )}\n </For>\n )\n}\n\ninterface SliderMarksProps {\n marks?: Array<number | { value: number; label: React.ReactNode }>\n}\n\nconst SliderMarks = React.forwardRef<HTMLDivElement, SliderMarksProps>(\n function SliderMarks(props, ref) {\n const { marks } = props\n if (!marks?.length) return null\n\n return (\n <ChakraSlider.MarkerGroup ref={ref}>\n {marks.map((mark, index) => {\n const value = typeof mark === \"number\" ? mark : mark.value\n const label = typeof mark === \"number\" ? undefined : mark.label\n return (\n <ChakraSlider.Marker key={index} value={value}>\n <ChakraSlider.MarkerIndicator />\n {label}\n </ChakraSlider.Marker>\n )\n })}\n </ChakraSlider.MarkerGroup>\n )\n },\n)\n","export const PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION = [\n {\n value: \"global\",\n references: [\"global\"],\n },\n {\n value: \"book\",\n references: [\"book\"],\n },\n {\n value: \"screen\",\n references: [\"mobile\", \"tablet\", \"desktop\"],\n },\n] as const\nexport type PROSE_REACT_READER_SETTINGS_SCOPE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"value\"]\nexport type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE =\n (typeof PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION)[number][\"references\"][number]\n","import {\n Button,\n Fieldset,\n HStack,\n type SliderValueChangeDetails,\n Stack,\n Tabs,\n type TabsValueChangeDetails,\n} from \"@chakra-ui/react\"\nimport {\n type ComponentProps,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\"\nimport { LuCheck } from \"react-icons/lu\"\nimport { useLiveRef } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\nimport {\n type PROSE_REACT_READER_SETTINGS_SCOPE,\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION,\n type PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE,\n} from \"../settings/types\"\n\nconst SETTINGS_SCOPES_VALUES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.map((item) => item.value)\nconst SETTINGS_SCOPES_REFERENCES =\n PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.flatMap(\n (item) => item.references,\n )\n\nconst getScopeForReference = (\n reference: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE | undefined,\n) => {\n if (!reference) {\n return undefined\n }\n\n return PROSE_REACT_READER_SETTINGS_SCOPE_CONFIGURATION.find((item) =>\n (item.references as readonly string[]).includes(reference),\n )?.value\n}\n\nexport const FontSizeControlsDialog = memo(() => {\n const context = useReaderContext()\n const {\n fontSizeMenuOpen,\n onFontSizeMenuOpenChange,\n uncontrolledFontSize,\n fontSize = uncontrolledFontSize,\n fontSizeMin,\n fontSizeMax,\n fontSizeScope,\n fontSizeValues,\n onFontSizeChange,\n onFontSizeScopeChange,\n } = useReaderContextValue([\n \"fontSizeMenuOpen\",\n \"onFontSizeMenuOpenChange\",\n \"fontSize\",\n \"fontSizeMin\",\n \"fontSizeMax\",\n \"fontSizeScope\",\n \"onFontSizeChange\",\n \"onFontSizeScopeChange\",\n \"uncontrolledFontSize\",\n \"fontSizeValues\",\n ])\n const onFontSizeChangeRef = useLiveRef(onFontSizeChange)\n const [tabValue, setTabValue] =\n useState<PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE>(\n fontSizeScope ?? \"global\",\n )\n const onFontUpdate = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE, value: number) => {\n if (onFontSizeChangeRef.current) {\n onFontSizeChangeRef.current(scope, value)\n } else {\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: value,\n }))\n }\n },\n [onFontSizeChangeRef, context],\n )\n const getValueForScope = useCallback(\n (scope: PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE) => {\n return fontSizeValues?.[scope] ?? fontSize\n },\n [fontSize, fontSizeValues],\n )\n\n const onScopeValueChange = useCallback(\n (\n details: Parameters<\n NonNullable<ComponentProps<typeof RadioGroup>[\"onValueChange\"]>\n >[0],\n ) => {\n const value = details.value as PROSE_REACT_READER_SETTINGS_SCOPE\n\n onFontSizeScopeChange?.(value)\n },\n [onFontSizeScopeChange],\n )\n\n const onTabValueChange = useCallback((details: TabsValueChangeDetails) => {\n setTabValue(details.value as PROSE_REACT_READER_SETTINGS_SCOPE_REFERENCE)\n }, [])\n\n const onSliderValueChange = useCallback(\n (details: SliderValueChangeDetails) => {\n const value = details.value[0] ?? 0\n\n onFontUpdate(tabValue, value / 100)\n },\n [onFontUpdate, tabValue],\n )\n\n useEffect(\n function syncScopeChangeWithTabs() {\n setTabValue(fontSizeScope ?? \"global\")\n },\n [fontSizeScope],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={fontSizeMenuOpen}\n onOpenChange={(e) => {\n onFontSizeMenuOpenChange(e.open)\n }}\n placement=\"center\"\n >\n <DialogContent maxH=\"40vh\" overflow=\"auto\">\n <DialogHeader>\n <DialogTitle>Font size</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Stack gap={4} flex={1}>\n <Fieldset.Root>\n <Fieldset.Legend>Scope</Fieldset.Legend>\n <Fieldset.HelperText>\n The scope to which apply the font size for this book.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <RadioGroup\n onValueChange={onScopeValueChange}\n value={getScopeForReference(fontSizeScope) ?? \"global\"}\n disabled={!onFontSizeScopeChange}\n >\n <HStack gap={2}>\n {SETTINGS_SCOPES_VALUES.map((scope) => (\n <Radio value={scope} key={scope}>\n {scope}\n </Radio>\n ))}\n </HStack>\n </RadioGroup>\n </Fieldset.Content>\n </Fieldset.Root>\n <Tabs.Root\n value={tabValue}\n onValueChange={onTabValueChange}\n fitted={false}\n size=\"sm\"\n >\n <Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Trigger\n value={scope}\n key={scope}\n textTransform=\"capitalize\"\n disabled={scope !== \"global\" && !fontSizeScope}\n >\n {fontSizeScope === scope && <LuCheck />}\n {scope}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n {SETTINGS_SCOPES_REFERENCES.map((scope) => (\n <Tabs.Content value={scope} key={scope}>\n <Slider\n label={`%`}\n value={[(getValueForScope(scope) ?? 1) * 100]}\n onValueChange={onSliderValueChange}\n showValue={true}\n marks={[\n { value: 100, label: \"Publisher\" },\n {\n value: fontSizeMin * 100,\n label: `${fontSizeMin * 100}%`,\n },\n {\n value: fontSizeMax * 100,\n label: `${fontSizeMax * 100}%`,\n },\n ]}\n max={fontSizeMax * 100}\n min={fontSizeMin * 100}\n width=\"100%\"\n step={0.1 * 100}\n />\n </Tabs.Content>\n ))}\n </Tabs.Root>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { useCallback, useEffect } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport {\n useReaderContext,\n useReaderContextValue,\n} from \"../context/useReaderContext\"\n\nexport const SyncFontSettings = () => {\n const reader = useReader()\n const context = useReaderContext()\n const { fontSize, uncontrolledFontSize } = useReaderContextValue([\n \"fontSize\",\n \"uncontrolledFontSize\",\n \"onFontSizeChange\",\n ])\n const _fontSize = fontSize ?? uncontrolledFontSize\n\n useEffect(\n function syncDownFontSize() {\n if (reader && _fontSize) {\n const timeout = setTimeout(() => {\n reader.settings.update({\n fontScale: _fontSize,\n })\n }, 200)\n\n return () => clearTimeout(timeout)\n }\n },\n [reader, _fontSize],\n )\n\n const syncUpFontSize = useCallback(\n function syncUpFontSize() {\n return reader?.settings.values$\n .pipe(map((settings) => settings.fontScale))\n .subscribe((fontScale) => {\n const _fontSize =\n context.value.fontSize ?? context.value.uncontrolledFontSize\n\n if (fontScale !== _fontSize) {\n context.value.onFontSizeChange?.(\"internal\", fontScale)\n context.update((old) => ({\n ...old,\n uncontrolledFontSize: fontScale,\n }))\n }\n })\n },\n [reader, context],\n )\n\n useSubscribe(syncUpFontSize)\n\n return null\n}\n","import { useLayoutEffect, useMemo, useState } from \"react\"\n\nexport type UseMeasureRect = Pick<\n DOMRectReadOnly,\n \"x\" | \"y\" | \"top\" | \"left\" | \"right\" | \"bottom\" | \"height\" | \"width\"\n>\nexport type UseMeasureRef<E extends Element = Element> = (element: E) => void\nexport type UseMeasureResult<E extends Element = Element> = [\n UseMeasureRef<E>,\n UseMeasureRect,\n E | null,\n]\n\nconst defaultState: UseMeasureRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n}\n\nexport function useMeasure<E extends Element = Element>(): UseMeasureResult<E> {\n const [element, setElement] = useState<E | null>(null)\n const [rect, setRect] = useState<UseMeasureRect>(defaultState)\n\n const observer = useMemo(\n () =>\n new ResizeObserver((entries) => {\n if (entries[0]) {\n const { x, y, width, height, top, left, bottom, right } =\n entries[0].contentRect\n setRect({ x, y, width, height, top, left, bottom, right })\n }\n }),\n [],\n )\n\n useLayoutEffect(() => {\n if (!element) return\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [element, observer])\n\n return [setElement, rect, element]\n}\n","import {\n isShallowEqual,\n observeIntersection,\n type SpineItem,\n} from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport {\n combineLatest,\n distinctUntilChanged,\n map,\n NEVER,\n startWith,\n switchMap,\n throttleTime,\n} from \"rxjs\"\nimport type { UseMeasureRect } from \"../common/useMeasure\"\nimport { hasGalleryEnhancer, useReader } from \"../context/useReader\"\n\nexport const useAttachSnapshot = (\n element: Element | null,\n item: SpineItem,\n measures: UseMeasureRect,\n) => {\n const reader = useReader()\n const readerWithGalleryEnhancer = hasGalleryEnhancer(reader)\n ? reader\n : undefined\n\n const attachSnapshot = useCallback(() => {\n if (!readerWithGalleryEnhancer || !element) return NEVER\n\n const itemLayoutChanged$ = item.didLayout$.pipe(\n startWith(item.layoutInfo),\n distinctUntilChanged(isShallowEqual),\n throttleTime(100, undefined, { trailing: true }),\n )\n\n const isItemIntersecting$ = observeIntersection(\n element as HTMLElement,\n ).pipe(\n map((entries) => entries.some((e) => e.isIntersecting)),\n startWith(false),\n distinctUntilChanged(),\n )\n\n return combineLatest([itemLayoutChanged$, isItemIntersecting$]).pipe(\n switchMap(([, isVisible]) => {\n if (!isVisible) {\n element.innerHTML = \"\"\n\n return NEVER\n }\n\n element.innerHTML = \"\"\n\n return readerWithGalleryEnhancer.gallery.snapshot(\n item,\n element,\n measures,\n )\n }),\n )\n }, [readerWithGalleryEnhancer, item, measures, element])\n\n useSubscribe(attachSnapshot)\n}\n","import { Box, Button, Text } from \"@chakra-ui/react\"\nimport type { SpineItem } from \"@prose-reader/core\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useMeasure } from \"../common/useMeasure\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { useReader } from \"../context/useReader\"\nimport { useAttachSnapshot } from \"./useAttachSnapshot\"\n\nconst GalleryItem = memo(\n ({ item, onNavigated }: { item: SpineItem; onNavigated: () => void }) => {\n const [setElement, measures, element] = useMeasure()\n const reader = useReader()\n\n useAttachSnapshot(element, item, measures)\n\n const { data: locatedResource } = useObserve(\n () => reader?.locateResource(item, { mode: \"shallow\" }),\n [reader, item],\n )\n\n return (\n <Box\n width=\"100%\"\n aspectRatio=\"2/3\"\n border=\"1px solid\"\n borderColor=\"border\"\n borderRadius=\"md\"\n data-grid-item\n cursor=\"pointer\"\n position=\"relative\"\n overflow=\"hidden\"\n onClick={() => {\n onNavigated()\n reader?.navigation.goToSpineItem({ indexOrId: item })\n }}\n >\n <Box\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n pointerEvents=\"none\"\n ref={setElement}\n />\n {/* iframe nullifying overlay. Ensure there are no pointer interceptions, especially on iPadOS */}\n <Box position=\"absolute\" inset={0} zIndex={1} aria-hidden=\"true\" />\n <Text\n position=\"absolute\"\n bottom={0}\n left=\"0\"\n right=\"0\"\n zIndex={2}\n textAlign=\"center\"\n bgColor=\"bg.panel\"\n color=\"fg\"\n p={4}\n fontSize=\"xs\"\n >\n Page {(locatedResource?.meta?.absolutePageIndex ?? 0) + 1}\n </Text>\n </Box>\n )\n },\n)\n\nexport const GalleryDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n const reader = useReader()\n const { data: items } = useObserve(\n () => reader?.spineItemsManager.items$,\n [reader],\n )\n\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Gallery</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Box\n gridTemplateColumns={[\n \"repeat(2, minmax(0, 1fr))\",\n \"repeat(3, minmax(0, 1fr))\",\n ]}\n display=\"grid\"\n gap={[2, 4]}\n pt={2}\n data-grid\n >\n {items?.map((item) => (\n <GalleryItem\n key={item.item.id}\n item={item}\n onNavigated={() => {\n setOpen(false)\n }}\n />\n ))}\n </Box>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","{\n \"name\": \"@prose-reader/react-reader\",\n \"private\": false,\n \"version\": \"1.303.0\",\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./index.css\": \"./dist/index.css\"\n },\n \"files\": [\n \"/dist\"\n ],\n \"scripts\": {\n \"start\": \"vite build --watch --mode development\",\n \"build\": \"node ./scripts/check-enhancer-imports.mjs && tsc -b && vite build\",\n \"check:enhancers\": \"node ./scripts/check-enhancers.mjs\",\n \"test\": \"vitest run --coverage\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.0.0\",\n \"@types/react-dom\": \"^19.0.0\",\n \"@vitejs/plugin-react\": \"^6.0.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"typescript\": \"*\",\n \"vite\": \"^8\"\n },\n \"peerDependencies\": {\n \"@chakra-ui/react\": \"3.x\",\n \"@emotion/react\": \"11.x\",\n \"@prose-reader/core\": \"^1.169.0\",\n \"@prose-reader/enhancer-annotations\": \"^1.169.0\",\n \"@prose-reader/enhancer-audio\": \"^1.169.0\",\n \"@prose-reader/enhancer-gallery\": \"^1.169.0\",\n \"@prose-reader/enhancer-gestures\": \"^1.169.0\",\n \"@prose-reader/enhancer-refit\": \"^1.169.0\",\n \"@prose-reader/enhancer-search\": \"^1.169.0\",\n \"@prose-reader/shared\": \"^1.169.0\",\n \"rc-slider\": \"11.1.x\",\n \"react\": \"19.x || 18.x\",\n \"react-dom\": \"19.x || 18.x\",\n \"react-icons\": \"^5.4.0\",\n \"reactjrx\": \"1.x\",\n \"screenfull\": \"^6.0.2\"\n }\n}\n","import { Button, Heading, HStack, Kbd, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { LuArrowBigLeft, LuArrowBigRight } from \"react-icons/lu\"\nimport { name, version } from \"../../package.json\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\n\nexport const HelpDialog = memo(\n ({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Help</DialogTitle>\n </DialogHeader>\n <DialogBody\n overflowY=\"auto\"\n flex={1}\n display=\"flex\"\n flexDirection=\"column\"\n gap={4}\n >\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Shortcuts\n </Heading>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigRight />\n </Kbd>{\" \"}\n <Text>Navigate to right page</Text>\n </HStack>\n <HStack mb={1}>\n <Kbd>\n <LuArrowBigLeft />\n </Kbd>{\" \"}\n <Text>Navigate to left page</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n Bookmarks\n </Heading>\n <HStack mb={1}>\n <Text>Tap on the top right corner of a page bookmark it</Text>\n </HStack>\n </Stack>\n <Stack>\n <Heading mb={2} as=\"h3\" size=\"lg\">\n About\n </Heading>\n <Text>\n {name} version: {version}\n </Text>\n </Stack>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import type { Reader } from \"@prose-reader/core\"\nimport { useObserve } from \"reactjrx\"\nimport { combineLatest, map, NEVER } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\n\nexport const usePagination = ():\n | (Reader[\"pagination\"][\"state\"] & { hasChapters: boolean })\n | undefined => {\n const reader = useReader()\n\n return useObserve(\n () =>\n !reader\n ? NEVER\n : combineLatest([reader.pagination.state$, reader.context]).pipe(\n map(([state, context]) => {\n const isOnlyImages = context.manifest?.spineItems.every((item) =>\n item.mediaType?.startsWith(\"image/\"),\n )\n\n return {\n ...state,\n hasChapters: !context.isFullyPrePaginated && !isOnlyImages,\n }\n }),\n ),\n [reader],\n ).data\n}\n","import { Box, Presence, Text } from \"@chakra-ui/react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nexport const FloatingProgress = () => {\n const { enableFloatingProgress, quickMenuOpen } = useReaderContextValue([\n \"enableFloatingProgress\",\n \"quickMenuOpen\",\n ])\n const pagination = usePagination()\n const roundedProgress = Math.floor(\n (pagination?.percentageEstimateOfBook ?? 0) * 100,\n )\n const displayableProgress = roundedProgress > 0 ? roundedProgress : 1\n\n if (\n pagination?.percentageEstimateOfBook === undefined ||\n !enableFloatingProgress\n )\n return null\n\n return (\n <Presence\n present={!quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"moderate\"\n >\n <Box\n position=\"absolute\"\n right={0}\n bottom={0}\n p={2}\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n color=\"white\"\n >\n <Text fontSize=\"sm\">{displayableProgress} %</Text>\n </Box>\n </Presence>\n )\n}\n","import { Text, type TextProps } from \"@chakra-ui/react\"\nimport { useEffect, useState } from \"react\"\n\nexport const useTime = () => {\n const [time, setTime] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date())\n }, 1000 * 60)\n\n return () => clearInterval(interval)\n }, [])\n\n return time\n}\n\nexport const TimeIndicator = (props: TextProps) => {\n const time = useTime()\n\n return (\n <Text fontSize=\"sm\" {...props}>\n {time.toLocaleTimeString(navigator.language, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </Text>\n )\n}\n","import { Box } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { TimeIndicator } from \"../quickmenu/TimeIndicator\"\n\nexport const FloatingTime = memo(() => {\n return (\n <Box\n position=\"absolute\"\n left={0}\n bottom={0}\n p={2}\n color=\"white\"\n WebkitTextStroke=\"2px black\"\n paintOrder=\"stroke fill\"\n pointerEvents=\"none\"\n letterSpacing={1}\n >\n <TimeIndicator />\n </Box>\n )\n})\n","import { useEffect, useState } from \"react\"\n\nexport const useTransientValue = <Value>(\n value: Value | undefined,\n durationMs: number,\n) => {\n const [transientValue, setTransientValue] = useState<Value | undefined>()\n\n useEffect(() => {\n if (value === undefined) {\n setTransientValue(undefined)\n\n return\n }\n\n setTransientValue(value)\n\n const timeoutId = window.setTimeout(() => {\n setTransientValue((currentValue) =>\n Object.is(currentValue, value) ? undefined : currentValue,\n )\n }, durationMs)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [durationMs, value])\n\n return transientValue\n}\n",".pulse {\n animation: pulse 900ms ease-in-out 1;\n transform-origin: center;\n}\n\n@keyframes pulse {\n 0% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n\n 40% {\n opacity: 1;\n transform: rotate(0deg) scale(1.12);\n }\n\n 48% {\n opacity: 1;\n transform: rotate(-7deg) scale(1.14);\n }\n\n 56% {\n opacity: 1;\n transform: rotate(7deg) scale(1.14);\n }\n\n 64% {\n opacity: 1;\n transform: rotate(-4deg) scale(1.12);\n }\n\n 72% {\n opacity: 1;\n transform: rotate(0deg) scale(1.08);\n }\n\n 100% {\n opacity: 0.72;\n transform: rotate(0deg) scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pulse {\n animation: none;\n }\n}\n","import { Box, Presence } from \"@chakra-ui/react\"\nimport {\n type ExtraPaginationInfo,\n type PaginationInfo,\n shouldUseComputedSpreadModeForViewport,\n watchKeys,\n} from \"@prose-reader/core\"\nimport type { Manifest } from \"@prose-reader/shared\"\nimport { memo } from \"react\"\nimport { MdScreenRotation } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport {\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n NEVER,\n type Observable,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\"\nimport { useTransientValue } from \"../common/useTransientValue\"\nimport { useReader } from \"../context/useReader\"\nimport styles from \"./SpreadRotationHint.module.css\"\n\nconst HINT_TARGET_DEBOUNCE_MS = 100\nconst HINT_VISIBLE_MS = 900\n\nconst ANIMATION_NAME_IN_OUT = {\n _open: \"fade-in\",\n _closed: \"fade-out\",\n _motionReduce: \"none\",\n}\nconst ANIMATION_DURATION_IN_OUT = { base: \"moderate\", _motionReduce: \"0ms\" }\n\ntype ViewportDimensions = {\n height: number\n width: number\n}\n\ntype ViewportState = `busy` | `free`\n\ntype HintPagination = Pick<\n PaginationInfo & ExtraPaginationInfo,\n | `beginHasAdjacentSpreadPage`\n | `beginPageIndexInSpineItem`\n | `beginSpineItemIndex`\n | `endHasAdjacentSpreadPage`\n | `endPageIndexInSpineItem`\n | `endSpineItemIndex`\n>\n\ntype ReaderWithSpreadHintStreams = NonNullable<ReturnType<typeof useReader>>\n\nexport const wouldRotationUseComputedSpreadMode = ({\n manifest,\n viewport,\n}: {\n manifest: Manifest\n viewport: ViewportDimensions\n}) => {\n if (viewport.width === viewport.height) return false\n\n return shouldUseComputedSpreadModeForViewport({\n manifest,\n viewport: {\n height: viewport.width,\n width: viewport.height,\n },\n })\n}\n\nexport const getSpreadRotationHintTargetKey = ({\n manifest,\n pagination,\n computedSpreadMode,\n viewportState,\n viewport,\n}: {\n manifest: Manifest\n pagination: HintPagination\n computedSpreadMode: boolean\n viewportState: ViewportState\n viewport: ViewportDimensions\n}) => {\n if (viewportState !== `free`) return undefined\n if (computedSpreadMode) return undefined\n if (!wouldRotationUseComputedSpreadMode({ manifest, viewport })) {\n return undefined\n }\n\n const hasSpreadPair =\n pagination.beginHasAdjacentSpreadPage && pagination.endHasAdjacentSpreadPage\n\n if (!hasSpreadPair) return undefined\n\n return [\n pagination.beginSpineItemIndex,\n pagination.beginPageIndexInSpineItem,\n pagination.endSpineItemIndex,\n pagination.endPageIndexInSpineItem,\n ]\n .map((value) => value ?? `none`)\n .join(`:`)\n}\n\nconst observeHintPagination = (reader: ReaderWithSpreadHintStreams) =>\n reader.pagination.state$.pipe(\n watchKeys([\n `beginHasAdjacentSpreadPage`,\n `beginPageIndexInSpineItem`,\n `beginSpineItemIndex`,\n `endHasAdjacentSpreadPage`,\n `endPageIndexInSpineItem`,\n `endSpineItemIndex`,\n ]),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\nconst observeBeginSpineItemReady = ({\n pagination$,\n reader,\n}: {\n pagination$: Observable<HintPagination>\n reader: ReaderWithSpreadHintStreams\n}) =>\n combineLatest([pagination$, reader.spineItemsManager.items$]).pipe(\n map(([{ beginSpineItemIndex }, spineItems]) =>\n beginSpineItemIndex === undefined\n ? undefined\n : spineItems[beginSpineItemIndex],\n ),\n distinctUntilChanged(),\n switchMap((spineItem) => spineItem?.isReady$ ?? of(false)),\n )\n\nconst observeSpreadRotationHintTargetKey = (\n reader: ReaderWithSpreadHintStreams,\n) => {\n const pagination$ = observeHintPagination(reader)\n const beginSpineItemReady$ = observeBeginSpineItemReady({\n pagination$,\n reader,\n })\n\n return combineLatest([\n pagination$,\n reader.context.manifest$,\n reader.settings.watch([`computedSpreadMode`]),\n reader.viewportState$,\n reader.viewport.watch([`width`, `height`]),\n beginSpineItemReady$,\n ]).pipe(\n debounceTime(HINT_TARGET_DEBOUNCE_MS),\n map(\n ([pagination, manifest, settings, viewportState, viewport, isReady]) => {\n if (!isReady) return undefined\n\n return getSpreadRotationHintTargetKey({\n manifest,\n pagination,\n computedSpreadMode: settings.computedSpreadMode ?? false,\n viewportState,\n viewport,\n })\n },\n ),\n distinctUntilChanged(),\n )\n}\n\nconst useSpreadRotationHintTargetKey = () => {\n const reader = useReader()\n\n return useObserve(\n () => (reader ? observeSpreadRotationHintTargetKey(reader) : NEVER),\n [reader],\n ).data\n}\n\nexport const SpreadRotationHint = memo(() => {\n const hintTargetKey = useSpreadRotationHintTargetKey()\n const visibleHintKey = useTransientValue(hintTargetKey, HINT_VISIBLE_MS)\n\n return (\n <Presence\n present={visibleHintKey !== undefined}\n lazyMount\n unmountOnExit\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration={ANIMATION_DURATION_IN_OUT}\n >\n <Box\n key={visibleHintKey}\n aria-hidden\n position=\"absolute\"\n left=\"50%\"\n top=\"50%\"\n transform=\"translate(-50%, -50%)\"\n pointerEvents=\"none\"\n zIndex={2}\n data-spread-rotation-hint=\"true\"\n >\n <Box\n alignItems=\"center\"\n bg=\"bg.inverted/72\"\n borderRadius=\"full\"\n className={styles.pulse}\n color=\"fg.inverted\"\n display=\"flex\"\n height=\"68px\"\n justifyContent=\"center\"\n width=\"68px\"\n >\n <MdScreenRotation focusable={false} size={34} />\n </Box>\n </Box>\n </Presence>\n )\n})\n","import { isHtmlTagElement } from \"@prose-reader/core\"\nimport { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\n\nexport const useInterceptExternalLinks = () => {\n const reader = useReader()\n\n const interceptExternalLinks = useCallback(\n () =>\n reader?.links$.subscribe((event) => {\n if (event.type === \"click\" && isHtmlTagElement(event.target, \"a\")) {\n if (!event.target.href) return\n\n const url = new URL(event.target.href)\n\n if (window.location.host !== url.host) {\n const response = confirm(\n `You are going to be redirected to external link`,\n )\n\n if (response) {\n window.open(event.target.href, \"__blank\")\n }\n }\n }\n }),\n [reader],\n )\n\n useSubscribe(interceptExternalLinks)\n}\n","export const NOTIFICATION_KEYS = {\n fontScaleChange: \"fontScaleChange\",\n}\n\n/**\n * TODO for now we don't notify cause we can only changes from:\n * - settings (no notification, direct action)\n * - value change from controlled settings (user intent)\n */\nexport const useFontSizeNotifications = () => {\n // const reader = useReader()\n // const { notificationsSubject, fontSizeMenuOpen } = useReaderContextValue([\n // \"notificationsSubject\",\n // \"fontSizeMenuOpen\",\n // ])\n // useSubscribe(\n // () =>\n // fontSizeMenuOpen\n // ? EMPTY\n // : reader?.settings.values$.pipe(\n // map(({ fontScale }) => fontScale),\n // distinctUntilChanged(),\n // skip(1),\n // tap((fontScale) => {\n // notificationsSubject.next({\n // key: NOTIFICATION_KEYS.fontScaleChange,\n // title: \"Font size changed\",\n // description: `${fontScale * 100} %`,\n // })\n // }),\n // ),\n // [reader, notificationsSubject, fontSizeMenuOpen],\n // )\n}\n","import { useCallback } from \"react\"\nimport { isDefined, useSubscribe } from \"reactjrx\"\nimport {\n filter,\n finalize,\n first,\n merge,\n mergeMap,\n NEVER,\n Observable,\n skip,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { toaster } from \"../components/ui/toaster\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { useFontSizeNotifications } from \"../fonts/useFontSizeNotifications\"\n\nexport const useNotifications = () => {\n const { notificationsSubject } = useReaderContextValue([\n \"notificationsSubject\",\n ])\n\n useFontSizeNotifications()\n\n const notifications = useCallback(\n () =>\n notificationsSubject.pipe(\n filter(isDefined),\n mergeMap((notification) => {\n const duration = notification.duration ?? 3000\n\n const toast$ = new Observable<string>((subscriber) => {\n try {\n queueMicrotask(() => {\n const toastId = toaster.create({\n title: notification.title,\n description: notification.description,\n duration,\n })\n\n subscriber.next(toastId)\n subscriber.complete()\n })\n } catch (error) {\n subscriber.error(error)\n }\n })\n\n const sameNotification$ = notificationsSubject.pipe(\n skip(1),\n filter((n) => !!notification.key && n?.key === notification.key),\n )\n\n return toast$.pipe(\n switchMap((toast) =>\n merge(\n timer(duration),\n notification.abort ?? NEVER,\n sameNotification$,\n ).pipe(\n first(),\n finalize(() => {\n queueMicrotask(() => {\n toaster.dismiss(toast)\n })\n }),\n ),\n ),\n )\n }),\n ),\n [notificationsSubject],\n )\n\n useSubscribe(notifications)\n}\n","import RcSlider from \"rc-slider\"\nimport { type ComponentProps, memo } from \"react\"\nimport \"rc-slider/assets/index.css\"\nimport { Box, chakra } from \"@chakra-ui/react\"\n\nconst ChakraRcSlider = chakra(RcSlider)\n\nexport const ThemedSlider = memo((props: ComponentProps<typeof RcSlider>) => {\n return (\n <Box\n display=\"contents\"\n css={{\n \"--bg\": \"colors.bg\",\n \"--bg-emphasized\": \"colors.bg.emphasized\",\n \"--color-solid\": \"colors.colorPalette.solid\",\n }}\n >\n <ChakraRcSlider\n keyboard={false}\n style={{\n padding: 0,\n }}\n css={{\n \"& > .rc-slider-handle:focus-visible\": {\n boxShadow: \"0 0 0 2px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle:active\": {\n boxShadow: \"0 0 5px var(--color-solid) !important\",\n },\n \"& > .rc-slider-handle.rc-slider-handle-dragging\": {\n boxShadow: \"0 0 0 3px var(--color-solid) !important\",\n },\n \"&.rc-slider-disabled\": {\n backgroundColor: \"transparent\",\n opacity: 0.5,\n },\n \"&.rc-slider-disabled > .rc-slider-rail\": {\n backgroundColor: \"var(--bg-emphasized)\",\n },\n \"&.rc-slider-disabled > .rc-slider-track\": {\n backgroundColor: \"var(--color-solid)\",\n },\n \"&.rc-slider-disabled > .rc-slider-handle\": {\n backgroundColor: \"var(--bg)\",\n borderColor: \"var(--color-solid)\",\n },\n }}\n styles={{\n rail: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--bg-emphasized)\",\n },\n track: {\n height: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n backgroundColor: \"var(--color-solid)\",\n },\n handle: {\n width: \"24px\",\n height: \"24px\",\n top: \"50%\",\n borderColor: \"var(--color-solid)\",\n transform: `translate(${props.reverse ? \"50%\" : \"-50%\"}, -50%)`,\n backgroundColor: \"var(--bg)\",\n marginTop: \"0px\",\n },\n }}\n {...props}\n />\n </Box>\n )\n})\n","import type { AudioEnhancerState } from \"@prose-reader/enhancer-audio\"\nimport { useObserve } from \"reactjrx\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useAudioState = () => {\n const audioReader = useAudioReader()\n const { data: audioState } = useObserve<AudioEnhancerState | undefined>(\n () => audioReader?.audio.state$,\n [audioReader],\n )\n\n return audioState\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useState } from \"react\"\nimport { LuPause, LuPlay } from \"react-icons/lu\"\nimport { useConstant, useSubscribe } from \"reactjrx\"\nimport { BehaviorSubject, map, tap } from \"rxjs\"\nimport { ThemedSlider } from \"../quickmenu/ThemedSlider\"\nimport { useAudioReader } from \"./useAudioReader\"\nimport { useAudioState } from \"./useAudioState\"\n\nconst formatPlaybackTime = (value: number) => {\n if (!Number.isFinite(value) || value < 0) return `00:00`\n\n const roundedValue = Math.floor(value)\n const hours = Math.floor(roundedValue / 3600)\n const minutes = Math.floor((roundedValue % 3600) / 60)\n const seconds = roundedValue % 60\n\n if (hours > 0) {\n return [hours, minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n }\n\n return [minutes, seconds]\n .map((part) => String(part).padStart(2, `0`))\n .join(`:`)\n}\n\nexport const AudioControlsSection = (props: ComponentProps<typeof HStack>) => {\n const audioReader = useAudioReader()\n const audioState = useAudioState()\n const hasPlayableTrack =\n !!audioState?.currentTrack || (audioState?.tracks.length ?? 0) > 0\n const duration = audioState?.duration\n const displayDuration = Math.max(0, duration ?? 0)\n const knownDuration =\n typeof duration === `number` && duration > 0 ? duration : undefined\n const hasKnownDuration = knownDuration !== undefined\n const sliderMax = knownDuration ?? 1\n const currentTime = hasKnownDuration\n ? Math.min(Math.max(0, audioState?.currentTime ?? 0), knownDuration)\n : 0\n const isSliderDisabled =\n !hasPlayableTrack || !!audioState?.isLoading || !hasKnownDuration\n const [draftCurrentTime, setDraftCurrentTime] = useState(currentTime)\n const isSeekingSubject = useConstant(() => new BehaviorSubject(false))\n\n /**\n * Keeps the slider synced with audio playback, except while the user is\n * actively dragging the thumb.\n *\n * During drag we display a local draft value and ignore playback updates to\n * avoid snapping back to the previously observed time. Once the user releases\n * the slider, the enhancer publishes the requested seek time immediately\n * before mutating the audio element, so unlocking this sync path is expected\n * to resume from the new target time. Any later native media updates are then\n * treated as normal playback progression rather than part of the drag UX.\n */\n const syncDownCurrentTime = useCallback(\n () =>\n audioReader?.audio.state$.pipe(\n map((state) => state.currentTime),\n tap((currentTime) => {\n if (isSeekingSubject.value) return\n\n setDraftCurrentTime(currentTime)\n isSeekingSubject.next(false)\n }),\n ),\n [audioReader, isSeekingSubject],\n )\n\n useSubscribe(syncDownCurrentTime)\n\n if (!audioState) {\n return null\n }\n\n return (\n <HStack\n width=\"100%\"\n maxW=\"100%\"\n gap={3}\n borderRadius=\"md\"\n bg=\"bg.muted\"\n px={3}\n py={2}\n {...props}\n >\n <IconButton\n aria-label={audioState.isPlaying ? \"Pause audio\" : \"Play audio\"}\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n void audioReader?.audio.toggle()\n }}\n disabled={!hasPlayableTrack || audioState.isLoading}\n >\n {audioState.isPlaying ? <LuPause /> : <LuPlay />}\n </IconButton>\n <Stack gap={0} minW={0} flex={1}>\n <ThemedSlider\n value={draftCurrentTime}\n min={0}\n max={sliderMax}\n disabled={isSliderDisabled}\n onChange={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") return\n\n isSeekingSubject.next(true)\n setDraftCurrentTime(nextValue)\n }}\n onChangeComplete={(value) => {\n const nextValue = Array.isArray(value) ? value[0] : value\n\n if (typeof nextValue !== \"number\") {\n isSeekingSubject.next(false)\n\n return\n }\n\n setDraftCurrentTime(nextValue)\n audioReader?.audio.setCurrentTime(nextValue)\n isSeekingSubject.next(false)\n }}\n />\n <HStack justifyContent=\"space-between\" mt={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {audioState.isLoading\n ? `Loading audio...`\n : formatPlaybackTime(draftCurrentTime)}\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n {formatPlaybackTime(displayDuration)}\n </Text>\n </HStack>\n </Stack>\n </HStack>\n )\n}\n","import { useObserve } from \"reactjrx\"\nimport { distinctUntilChanged, map } from \"rxjs\"\nimport { useAudioReader } from \"./useAudioReader\"\n\nexport const useHasVisibleAudioTracks = () => {\n const audioReader = useAudioReader()\n const { data: hasVisibleAudioTracks = false } = useObserve(\n () =>\n audioReader?.audio.visibleTrackIds$.pipe(\n map((trackIds) => trackIds.length > 0),\n distinctUntilChanged(),\n ),\n [audioReader],\n )\n\n return hasVisibleAudioTracks\n}\n","import { Popover as ChakraPopover, IconButton, Portal } from \"@chakra-ui/react\"\nimport * as React from \"react\"\nimport { HiOutlineInformationCircle } from \"react-icons/hi\"\n\nexport interface ToggleTipProps extends ChakraPopover.RootProps {\n showArrow?: boolean\n portalled?: boolean\n portalRef?: React.RefObject<HTMLElement>\n content?: React.ReactNode\n}\n\nexport const ToggleTip = React.forwardRef<HTMLDivElement, ToggleTipProps>(\n function ToggleTip(props, ref) {\n const {\n showArrow,\n children,\n portalled = true,\n content,\n portalRef,\n ...rest\n } = props\n\n return (\n <ChakraPopover.Root\n {...rest}\n positioning={{ ...rest.positioning, gutter: 4 }}\n >\n <ChakraPopover.Trigger asChild>{children}</ChakraPopover.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content\n width=\"auto\"\n px=\"2\"\n py=\"1\"\n textStyle=\"xs\"\n rounded=\"sm\"\n ref={ref}\n >\n {showArrow && (\n <ChakraPopover.Arrow>\n <ChakraPopover.ArrowTip />\n </ChakraPopover.Arrow>\n )}\n {content}\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n </ChakraPopover.Root>\n )\n },\n)\n\nexport const InfoTip = React.forwardRef<\n HTMLDivElement,\n Partial<ToggleTipProps>\n>(function InfoTip(props, ref) {\n const { children, ...rest } = props\n return (\n <ToggleTip content={children} {...rest} ref={ref}>\n <IconButton\n variant=\"ghost\"\n aria-label=\"info\"\n size=\"2xs\"\n colorPalette=\"gray\"\n >\n <HiOutlineInformationCircle />\n </IconButton>\n </ToggleTip>\n )\n})\n","import { Progress as ChakraProgress } from \"@chakra-ui/react\"\nimport { InfoTip } from \"./toggle-tip\"\nimport * as React from \"react\"\n\nexport const ProgressBar = React.forwardRef<\n HTMLDivElement,\n ChakraProgress.TrackProps\n>(function ProgressBar(props, ref) {\n return (\n <ChakraProgress.Track {...props} ref={ref}>\n <ChakraProgress.Range />\n </ChakraProgress.Track>\n )\n})\n\nexport interface ProgressLabelProps extends ChakraProgress.LabelProps {\n info?: React.ReactNode\n}\n\nexport const ProgressLabel = React.forwardRef<\n HTMLDivElement,\n ProgressLabelProps\n>(function ProgressLabel(props, ref) {\n const { children, info, ...rest } = props\n return (\n <ChakraProgress.Label {...rest} ref={ref}>\n {children}\n {info && <InfoTip>{info}</InfoTip>}\n </ChakraProgress.Label>\n )\n})\n\nexport const ProgressRoot = ChakraProgress.Root\nexport const ProgressValueText = ChakraProgress.ValueText\n","import { usePagination } from \"../pagination/usePagination\"\n\nexport const useNavigationContext = () => {\n const pagination = usePagination()\n const hasOnlyOnePage = pagination?.numberOfTotalPages === 1\n\n const isBeginWithinChapter =\n (pagination?.beginNumberOfPagesInSpineItem ?? 0) > 1\n\n const isEndWithinChapter = (pagination?.endNumberOfPagesInSpineItem ?? 0) > 1\n\n const beginPageIndex =\n (pagination?.hasChapters\n ? pagination?.beginPageIndexInSpineItem\n : pagination?.beginAbsolutePageIndex) ?? 0\n const endPageIndex =\n (pagination?.hasChapters\n ? pagination?.endPageIndexInSpineItem\n : pagination?.endAbsolutePageIndex) ?? 0\n\n const [leftPageIndex = 0, rightPageIndex = 0] = [\n beginPageIndex,\n endPageIndex,\n ].sort((a, b) => a - b)\n\n const beginAndEndAreDifferent =\n pagination?.beginPageIndexInSpineItem !==\n pagination?.endPageIndexInSpineItem ||\n pagination?.beginSpineItemIndex !== pagination?.endSpineItemIndex\n\n const totalApproximatePages = pagination?.hasChapters\n ? pagination?.beginNumberOfPagesInSpineItem\n : pagination?.numberOfTotalPages\n\n return {\n hasOnlyOnePage,\n beginPageIndex,\n endPageIndex,\n isBeginWithinChapter,\n isEndWithinChapter,\n beginAndEndAreDifferent,\n totalApproximatePages,\n leftPageIndex,\n rightPageIndex,\n }\n}\n","import { HStack, Stack, Text } from \"@chakra-ui/react\"\nimport {\n ProgressBar,\n ProgressRoot,\n ProgressValueText,\n} from \"../components/ui/progress\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const PaginationInfoSection = () => {\n const pagination = usePagination()\n const {\n hasOnlyOnePage,\n leftPageIndex,\n rightPageIndex,\n totalApproximatePages,\n beginAndEndAreDifferent,\n } = useNavigationContext()\n const progress = Math.round((pagination?.percentageEstimateOfBook ?? 0) * 100)\n\n const buildTitleChain = (\n chapterInfo: NonNullable<typeof pagination>[\"beginChapterInfo\"],\n ): string => {\n if (chapterInfo?.subChapter) {\n return `${chapterInfo.title} / ${buildTitleChain(chapterInfo.subChapter)}`\n }\n return chapterInfo?.title || \"\"\n }\n\n const chapterTitle = buildTitleChain(pagination?.beginChapterInfo)\n\n return (\n <Stack alignItems=\"center\" gap={1} maxW=\"100%\" overflow=\"auto\">\n <ProgressRoot value={progress} size=\"xs\" width={150}>\n <HStack justifyContent=\"space-between\">\n <ProgressBar width={110} />\n <ProgressValueText>{`${progress}%`}</ProgressValueText>\n </HStack>\n </ProgressRoot>\n <Text truncate maxWidth=\"100%\" fontSize=\"sm\" mt={1}>\n {chapterTitle ? `Chapter: ${chapterTitle}` : `\\u00A0`}\n </Text>\n {!hasOnlyOnePage && (\n <HStack>\n <Text fontSize=\"xs\">\n {beginAndEndAreDifferent\n ? `${leftPageIndex + 1} - ${rightPageIndex + 1} of ${totalApproximatePages}`\n : `${leftPageIndex + 1} of ${totalApproximatePages}`}\n </Text>\n {!!pagination?.hasChapters && (\n <>\n <Text>-</Text>\n <Text fontSize=\"xs\">\n ({(pagination?.beginAbsolutePageIndex ?? 0) + 1})\n </Text>\n </>\n )}\n </HStack>\n )}\n </Stack>\n )\n}\n","import { Presence, type PresenceProps } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const QuickBar = memo(\n ({\n children,\n position,\n ...rest\n }: { position: \"top\" | \"bottom\" } & PresenceProps & {\n ref?: React.RefObject<HTMLDivElement | null>\n }) => {\n return (\n <Presence\n display=\"flex\"\n flexDirection=\"row\"\n width=\"100%\"\n position=\"absolute\"\n {...(position === \"bottom\" ? { bottom: 0 } : { top: 0 })}\n animationName={\n position === \"bottom\"\n ? {\n _open: \"slide-from-bottom, fade-in\",\n _closed: \"slide-to-bottom, fade-out\",\n }\n : {\n _open: \"slide-from-top, fade-in\",\n _closed: \"slide-to-top, fade-out\",\n }\n }\n animationDuration=\"moderate\"\n bgColor=\"bg.panel\"\n alignItems=\"center\"\n justifyContent=\"center\"\n shadow=\"md\"\n p={4}\n {...rest}\n >\n {children}\n </Presence>\n )\n },\n)\n","import { Box } from \"@chakra-ui/react\"\nimport { type ComponentProps, useCallback, useEffect } from \"react\"\nimport { signal, useObserve, useSignalState, useSubscribe } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { useNavigationContext } from \"../navigation/useNavigationContext\"\nimport { usePagination } from \"../pagination/usePagination\"\nimport { ThemedSlider } from \"./ThemedSlider\"\n\nconst useSliderValues = () => {\n const pagination = usePagination()\n const isUsingSpread = pagination?.isUsingSpread\n const { beginPageIndex: currentRealPage, totalApproximatePages = 0 } =\n useNavigationContext()\n const currentPage = isUsingSpread\n ? Math.floor((currentRealPage || 0) / 2)\n : currentRealPage\n const [value, valueSignal] = useSignalState(() =>\n signal({\n default: currentPage || 0,\n }),\n )\n const min = 0\n const max = Math.max(\n 0,\n isUsingSpread\n ? Math.floor((totalApproximatePages - 1) / 2)\n : totalApproximatePages - 1,\n )\n\n useEffect(() => {\n valueSignal.update(currentPage || 0)\n }, [currentPage, valueSignal])\n\n return {\n value,\n valueSignal,\n min,\n max,\n }\n}\n\nexport const Scrubber = (props: ComponentProps<typeof ThemedSlider>) => {\n const reader = useReader()\n const pagination = usePagination()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const reverse = manifest?.readingDirection === \"rtl\"\n const isUsingSpread = pagination?.isUsingSpread\n const { totalApproximatePages = 0, isBeginWithinChapter } =\n useNavigationContext()\n const step = 1\n const isScrubberWithinChapter = isBeginWithinChapter\n const { value, valueSignal, min, max } = useSliderValues()\n\n const onChange: NonNullable<ComponentProps<typeof ThemedSlider>[\"onChange\"]> =\n useCallback(\n (values) => {\n const [value = 0] = Array.isArray(values) ? values : [values]\n\n valueSignal.update(value)\n\n const pageIndex = isUsingSpread\n ? Math.floor(value) * 2\n : Math.floor(value)\n\n if (!isScrubberWithinChapter) {\n reader?.navigation.goToAbsolutePageIndex({\n absolutePageIndex: pageIndex,\n animation: false,\n })\n } else {\n reader?.navigation.goToPageOfSpineItem({\n pageIndex,\n spineItemId: reader.pagination.state.beginSpineItemIndex ?? 0,\n animation: false,\n })\n }\n },\n [reader, isUsingSpread, valueSignal, isScrubberWithinChapter],\n )\n\n /**\n * @note\n * Scrubber can navigate fast and without lock we may end up with\n * slowness due to the reader\n * paginating and loading items in between.\n * This is good practice (but not required) to throttle it.\n */\n const throttleLock = useCallback(() => {\n return reader?.navigation.throttleLock({\n duration: 100,\n trigger: valueSignal.subject,\n })\n }, [reader, valueSignal])\n\n useSubscribe(throttleLock)\n\n // const marks =\n // max > 1\n // ? Array.from({ length: max + 1 }, (_, i) => i).reduce(\n // (acc: number[], val) => [...acc, val],\n // [],\n // )\n // : []\n\n const disabled =\n totalApproximatePages === 1 ||\n (isUsingSpread && totalApproximatePages === 2)\n\n // @tmp not available yet in chakra\n // if (reverse) return null\n\n if (disabled) return <Box style={props.style} />\n\n return (\n <ThemedSlider\n value={[value]}\n max={max}\n min={min}\n reverse={reverse}\n step={step}\n onChange={onChange}\n {...props}\n />\n )\n // return (\n // <Slider\n // value={[value]}\n // max={max}\n // min={min}\n // marks={marks}\n // onChange={e => {\n // debugger\n // }}\n // onValueChange={onChange}\n // // reverse={reverse}\n // orientation=\"horizontal\"\n // step={step}\n // />\n // )\n}\n","import { Box, Collapsible, HStack, IconButton, Stack } from \"@chakra-ui/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { BiFontSize } from \"react-icons/bi\"\nimport { BsBookmarks } from \"react-icons/bs\"\nimport {\n LuChevronDown,\n LuCircleHelp,\n LuGalleryHorizontal,\n LuNotebookPen,\n LuSearch,\n LuTableOfContents,\n LuZoomIn,\n LuZoomOut,\n} from \"react-icons/lu\"\nimport { MdOutlineFitScreen } from \"react-icons/md\"\nimport { RiGalleryView2 } from \"react-icons/ri\"\nimport {\n RxDoubleArrowDown,\n RxDoubleArrowLeft,\n RxDoubleArrowRight,\n RxDoubleArrowUp,\n} from \"react-icons/rx\"\nimport { useObserve } from \"reactjrx\"\nimport { map } from \"rxjs\"\nimport { AudioControlsSection } from \"../audio/AudioControlsSection\"\nimport { useHasVisibleAudioTracks } from \"../audio/useHasVisibleAudioTracks\"\nimport {\n hasAnnotationsEnhancer,\n hasGalleryEnhancer,\n hasRefitEnhancer,\n hasSearchEnhancer,\n useReader,\n} from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { PaginationInfoSection } from \"./PaginationInfoSection\"\nimport { QuickBar } from \"./QuickBar\"\nimport { Scrubber } from \"./Scrubber\"\n\nexport const BottomBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (\n item: \"annotations\" | \"search\" | \"help\" | \"toc\" | \"bookmarks\" | \"gallery\",\n ) => void\n }) => {\n const boxRef = useRef<HTMLDivElement>(null)\n const reader = useReader()\n const {\n quickMenuBottomBarBoundingBoxSignal,\n onFontSizeMenuOpenChange,\n onRefitMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuBottomBarBoundingBoxSignal\",\n \"onFontSizeMenuOpenChange\",\n \"onRefitMenuOpenChange\",\n ])\n const { data: navigation } = useObserve(\n () => reader?.navigation.state$,\n [reader],\n )\n const { data: settings } = useObserve(\n () => reader?.settings.values$,\n [reader],\n )\n const { data: zoomState } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) =>\n state.currentScale > 1\n ? \"in\"\n : state.currentScale < 1\n ? \"out\"\n : undefined,\n ),\n ),\n [reader],\n )\n const isZoomingIn = zoomState === \"in\"\n const isZoomingOut = zoomState === \"out\"\n const isScrollingMode = settings?.computedPageTurnMode === \"scrollable\"\n const isVerticalDirection =\n settings?.computedPageTurnDirection === \"vertical\"\n const hasAudioControls = useHasVisibleAudioTracks()\n const [isExtraOpen, setIsExtraOpen] = useState(true)\n\n useEffect(() => {\n if (!boxRef.current) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n quickMenuBottomBarBoundingBoxSignal.update(entry)\n }\n })\n\n resizeObserver.observe(boxRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [quickMenuBottomBarBoundingBoxSignal])\n\n return (\n <QuickBar\n present={open}\n position=\"bottom\"\n display=\"flex\"\n flexDirection=\"column\"\n overflow=\"auto\"\n pb={8}\n px={0}\n ref={boxRef}\n gap={4}\n >\n {hasAudioControls && (\n <HStack px={4} justifyContent=\"center\" width=\"100%\">\n <AudioControlsSection maxW={400} />\n </HStack>\n )}\n <HStack\n flex={1}\n alignItems=\"center\"\n justifyContent=\"center\"\n maxWidth=\"100%\"\n px={4}\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => reader?.navigation.goToLeftOrTopSpineItem()}\n disabled={\n !navigation?.canGoLeftSpineItem && !navigation?.canGoTopSpineItem\n }\n >\n {isVerticalDirection ? <RxDoubleArrowUp /> : <RxDoubleArrowLeft />}\n </IconButton>\n <Stack\n flex={1}\n maxW={400}\n gap={2}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <PaginationInfoSection />\n {/* Note: scrubber takes same space whether it's visible or not. This is to prevent\n jumping of items up and down between chapters. */}\n <Scrubber\n style={{\n width: \"100%\",\n maxWidth: \"300px\",\n height: \"35px\",\n }}\n />\n </Stack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n disabled={\n !navigation?.canGoRightSpineItem &&\n !navigation?.canGoBottomSpineItem\n }\n onClick={() => {\n reader?.navigation.goToRightOrBottomSpineItem()\n }}\n >\n {isVerticalDirection ? (\n <RxDoubleArrowDown />\n ) : (\n <RxDoubleArrowRight />\n )}\n </IconButton>\n </HStack>\n <HStack alignSelf=\"stretch\" alignItems=\"center\" justifyContent=\"center\">\n <Collapsible.Root\n open={isExtraOpen}\n flex={1}\n onOpenChange={({ open }) => {\n setIsExtraOpen(open)\n }}\n width=\"100%\"\n >\n <Collapsible.Trigger\n paddingY=\"3\"\n width=\"100%\"\n display=\"flex\"\n justifyContent=\"center\"\n >\n <LuChevronDown\n style={{\n transform: isExtraOpen ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\n </Collapsible.Trigger>\n <Collapsible.Content display=\"flex\" justifyContent=\"center\">\n <Box display=\"flex\" overflowX=\"auto\" px={4} pb={1}>\n <IconButton\n aria-label=\"Help\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"help\")}\n >\n <LuCircleHelp />\n </IconButton>\n <IconButton\n aria-label=\"Table of contents\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"toc\")}\n >\n <LuTableOfContents />\n </IconButton>\n {hasSearchEnhancer(reader) && (\n <IconButton\n aria-label=\"Search\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"search\")}\n >\n <LuSearch />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Zoom\"\n size=\"lg\"\n variant={isZoomingIn ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingIn) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 2,\n })\n }\n }}\n >\n {isZoomingIn ? <LuZoomOut /> : <LuZoomIn />}\n </IconButton>\n <IconButton\n aria-label=\"font size\"\n size=\"lg\"\n onClick={() => {\n onFontSizeMenuOpenChange(true)\n }}\n variant=\"ghost\"\n >\n <BiFontSize />\n </IconButton>\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Bookmarks\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"bookmarks\")}\n >\n <BsBookmarks />\n </IconButton>\n )}\n {hasAnnotationsEnhancer(reader) && (\n <IconButton\n aria-label=\"Annotations\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"annotations\")}\n >\n <LuNotebookPen />\n </IconButton>\n )}\n {hasRefitEnhancer(reader) && (\n <IconButton\n aria-label=\"Refit\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => {\n onRefitMenuOpenChange(true)\n }}\n disabled={!isScrollingMode}\n >\n <MdOutlineFitScreen />\n </IconButton>\n )}\n <IconButton\n aria-label=\"Thumbnails\"\n size=\"lg\"\n variant={isZoomingOut ? \"solid\" : \"ghost\"}\n onClick={() => {\n if (isZoomingOut) {\n reader?.zoom.exit({ animate: true })\n } else {\n reader?.zoom.enter({\n animate: true,\n scale: 0.5,\n })\n }\n }}\n >\n <LuGalleryHorizontal />\n </IconButton>\n {hasGalleryEnhancer(reader) && (\n <IconButton\n aria-label=\"Gallery\"\n size=\"lg\"\n variant=\"ghost\"\n onClick={() => onItemClick(\"gallery\")}\n >\n <RiGalleryView2 />\n </IconButton>\n )}\n </Box>\n </Collapsible.Content>\n </Collapsible.Root>\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useCallback, useEffect, useState } from \"react\"\nimport screenfull from \"screenfull\"\n\nconst readFullscreenSupport = () => screenfull.isEnabled\n\nconst readFullscreenState = () =>\n screenfull.isEnabled ? screenfull.isFullscreen : false\n\nexport const useFullscreen = () => {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const [isFullscreenSupported, setIsFullscreenSupported] = useState(false)\n\n const syncFullscreenState = useCallback(() => {\n setIsFullscreen((current) => {\n const next = readFullscreenState()\n\n return current === next ? current : next\n })\n setIsFullscreenSupported((current) => {\n const next = readFullscreenSupport()\n\n return current === next ? current : next\n })\n }, [])\n\n const onToggleFullscreenClick = useCallback(async () => {\n if (!screenfull.isEnabled) {\n syncFullscreenState()\n\n return\n }\n\n try {\n if (screenfull.isFullscreen) {\n await screenfull.exit()\n } else {\n await screenfull.request(document.documentElement, {\n navigationUI: `hide`,\n })\n }\n } catch (error) {\n console.error(error)\n } finally {\n syncFullscreenState()\n }\n }, [syncFullscreenState])\n\n useEffect(() => {\n syncFullscreenState()\n\n if (!screenfull.isEnabled) return\n\n screenfull.on(`change`, syncFullscreenState)\n screenfull.on(`error`, syncFullscreenState)\n\n return () => {\n screenfull.off(`change`, syncFullscreenState)\n screenfull.off(`error`, syncFullscreenState)\n }\n }, [syncFullscreenState])\n\n return {\n isFullscreen,\n isFullscreenSupported,\n onToggleFullscreenClick,\n }\n}\n","import { HStack, IconButton, Stack, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport { IoIosArrowBack, IoMdMore } from \"react-icons/io\"\nimport { MdFullscreen, MdFullscreenExit } from \"react-icons/md\"\nimport { useObserve } from \"reactjrx\"\nimport { useFullscreen } from \"../common/useFullscreen\"\nimport { useReader } from \"../context/useReader\"\nimport { QuickBar } from \"./QuickBar\"\n\nexport const TopBar = memo(\n ({\n open,\n onItemClick,\n }: {\n open: boolean\n onItemClick: (item: \"more\" | \"back\") => void\n }) => {\n const reader = useReader()\n const { data: manifest } = useObserve(\n () => reader?.context.manifest$,\n [reader],\n )\n const { isFullscreen, isFullscreenSupported, onToggleFullscreenClick } =\n useFullscreen()\n\n return (\n <QuickBar\n present={open}\n position=\"top\"\n height=\"80px\"\n justifyContent=\"space-between\"\n >\n <IconButton\n aria-label=\"left\"\n size=\"lg\"\n variant=\"ghost\"\n flexShrink={0}\n onClick={() => onItemClick(\"back\")}\n >\n <IoIosArrowBack />\n </IconButton>\n <Stack\n flex={1}\n maxW={600}\n gap={1}\n alignItems=\"center\"\n overflow=\"auto\"\n px={4}\n >\n <Text truncate maxWidth=\"100%\">\n {manifest?.title}\n </Text>\n </Stack>\n <HStack>\n <IconButton\n aria-label=\"right\"\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={() => onItemClick(\"more\")}\n >\n <IoMdMore />\n </IconButton>\n {isFullscreenSupported && (\n <IconButton\n aria-label={isFullscreen ? `Exit fullscreen` : `Enter fullscreen`}\n size=\"lg\"\n flexShrink={0}\n variant=\"ghost\"\n onClick={onToggleFullscreenClick}\n >\n {isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />}\n </IconButton>\n )}\n </HStack>\n </QuickBar>\n )\n },\n)\n","import { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useQuickMenu = () => {\n const {\n quickMenuOpen,\n onQuickMenuOpenChange,\n _quickMenuOpen,\n _onQuickMenuOpenChange,\n } = useReaderContextValue([\n \"quickMenuOpen\",\n \"onQuickMenuOpenChange\",\n \"_quickMenuOpen\",\n \"_onQuickMenuOpenChange\",\n ])\n\n return [\n quickMenuOpen ?? _quickMenuOpen,\n onQuickMenuOpenChange ?? _onQuickMenuOpenChange,\n ] as const\n}\n","import { memo } from \"react\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\nimport { BottomBar } from \"./BottomBar\"\nimport { TopBar } from \"./TopBar\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const QuickMenu = memo(\n ({\n onItemClick,\n }: {\n onItemClick: (\n item:\n | \"annotations\"\n | \"search\"\n | \"help\"\n | \"toc\"\n | \"bookmarks\"\n | \"more\"\n | \"back\"\n | \"gallery\",\n ) => void\n }) => {\n const [quickMenuOpen] = useQuickMenu()\n const { refitMenuOpen, fontSizeMenuOpen, selectedHighlight } =\n useReaderContextValue([\n \"refitMenuOpen\",\n \"fontSizeMenuOpen\",\n \"selectedHighlight\",\n ])\n\n return (\n <>\n <TopBar\n open={\n quickMenuOpen &&\n !refitMenuOpen &&\n !fontSizeMenuOpen &&\n !selectedHighlight\n }\n onItemClick={onItemClick}\n />\n <BottomBar\n open={quickMenuOpen && !refitMenuOpen && !fontSizeMenuOpen}\n onItemClick={onItemClick}\n />\n </>\n )\n },\n)\n","import { useCallback } from \"react\"\nimport { useSubscribe } from \"reactjrx\"\nimport { filter, tap, withLatestFrom } from \"rxjs\"\nimport { useReader } from \"../context/useReader\"\nimport { useQuickMenu } from \"./useQuickMenu\"\n\nexport const useQuickMenuToggleGesture = () => {\n const [_quickMenuOpen, onQuickMenuOpenChange] = useQuickMenu()\n const reader = useReader()\n\n /**\n * Subscribe to all unhandled events from gesture manager.\n *\n * These are \"app\" specific behavior that the enhancer would usually not\n * know about such as triggering the quick menu.\n */\n const quickMenuToggleGesture = useCallback(() => {\n return reader?.gestures.gestures$.pipe(\n filter((event) => event.type === \"tap\" && !event.handled),\n withLatestFrom(\n reader.selection.selection$,\n reader.selection.lastSelectionOnPointerdown$,\n ),\n tap(([, selection, selectionOnPointerdown]) => {\n /**\n * Where there is or was a selection before or during the tap, we want to avoid\n * showing the quick menu.\n */\n if (selection || selectionOnPointerdown) {\n onQuickMenuOpenChange(false)\n } else {\n onQuickMenuOpenChange((val) => !val)\n }\n }),\n )\n }, [reader, onQuickMenuOpenChange])\n\n useSubscribe(quickMenuToggleGesture)\n}\n","import { Field as ChakraField } from \"@chakra-ui/react\"\nimport * as React from \"react\"\n\nexport interface FieldProps extends Omit<ChakraField.RootProps, \"label\"> {\n label?: React.ReactNode\n helperText?: React.ReactNode\n errorText?: React.ReactNode\n optionalText?: React.ReactNode\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(props, ref) {\n const { label, children, helperText, errorText, optionalText, ...rest } =\n props\n return (\n <ChakraField.Root ref={ref} {...rest}>\n {label && (\n <ChakraField.Label>\n {label}\n <ChakraField.RequiredIndicator fallback={optionalText} />\n </ChakraField.Label>\n )}\n {children}\n {helperText && (\n <ChakraField.HelperText>{helperText}</ChakraField.HelperText>\n )}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n )\n },\n)\n","import { Button, Fieldset, Stack } from \"@chakra-ui/react\"\nimport type { RefitEnhancerOptions } from \"@prose-reader/enhancer-refit\"\nimport { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { Field } from \"../components/ui/field\"\nimport { Radio, RadioGroup } from \"../components/ui/radio\"\nimport { Slider } from \"../components/ui/slider\"\nimport { hasRefitEnhancer, useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\ntype OptionValue = RefitEnhancerOptions[\"viewportFit\"]\n\nexport const RefitDialog = memo(() => {\n const defaultCustomWidth = 60\n const { refitMenuOpen, onRefitMenuOpenChange } = useReaderContextValue([\n \"refitMenuOpen\",\n \"onRefitMenuOpenChange\",\n ])\n const reader = useReader()\n const readerWithRefit = hasRefitEnhancer(reader) ? reader : undefined\n const { data: refitSettings } = useObserve(\n () => readerWithRefit?.refit.settings$,\n [readerWithRefit],\n )\n\n return (\n <DialogRoot\n lazyMount\n open={refitMenuOpen}\n onOpenChange={(e) => onRefitMenuOpenChange(e.open)}\n placement=\"center\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Viewport fit</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Fieldset.Root>\n <Fieldset.HelperText>\n Adjust the viewport for a more comfortable reading experience.\n </Fieldset.HelperText>\n <Fieldset.Content>\n <Field label=\"Profile\">\n <RadioGroup\n defaultValue={`fit` satisfies OptionValue}\n onValueChange={(e) => {\n const value = e.value as OptionValue\n readerWithRefit?.refit.update({\n viewportFit: value,\n customWidth: defaultCustomWidth,\n })\n }}\n value={refitSettings?.viewportFit ?? `fit`}\n >\n <Stack gap={2}>\n <Radio value={`desktop` satisfies OptionValue}>\n Desktop\n </Radio>\n <Radio value={`tablet` satisfies OptionValue}>Tablet</Radio>\n <Radio value={`fit` satisfies OptionValue}>\n Full width (default)\n </Radio>\n <Radio value={`custom` satisfies OptionValue}>Custom</Radio>\n </Stack>\n </RadioGroup>\n </Field>\n <Slider\n label=\"Maximum width (%)\"\n showValue\n max={100}\n min={10}\n step={1}\n disabled={refitSettings?.viewportFit !== `custom`}\n value={[refitSettings?.customWidth ?? defaultCustomWidth]}\n onValueChange={(e) => {\n const value = e.value[0] ?? 0\n\n readerWithRefit?.refit.update({\n customWidth: value,\n })\n }}\n />\n </Fieldset.Content>\n </Fieldset.Root>\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n})\n","import { Link, Text } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\n\nexport const SearchListItem = memo(\n ({\n contextText = \"\",\n startOffset = 0,\n text,\n cfi = \"#\",\n onClick,\n absolutePageIndex,\n }: {\n pageIndex: number | undefined\n absolutePageIndex?: number\n contextText?: string\n startOffset?: number\n text: string\n cfi?: string\n onClick: (cfi: string) => void\n }) => {\n const charsAroundText = 15\n const before = contextText.substring(\n Math.max(startOffset - charsAroundText, 0),\n Math.max(startOffset, 0),\n )\n const after = contextText.substring(\n Math.min(startOffset + text.length, contextText.length - 1),\n Math.min(\n startOffset + text.length + charsAroundText,\n contextText.length - 1,\n ),\n )\n\n return (\n <Link\n href={cfi}\n style={{ margin: 5, overflow: \"hidden\" }}\n onClick={(e) => {\n e.preventDefault()\n\n onClick(cfi)\n }}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n gap={0}\n >\n <Text lineClamp={1} as=\"cite\" style={{ display: \"block\" }}>\n \"{before}\n <b>{text}</b>\n {after}\"\n </Text>\n <Text fontSize=\"sm\" color=\"gray.500\" style={{ textDecoration: \"none\" }}>\n {`Book page: ${absolutePageIndex !== undefined ? absolutePageIndex + 1 : \"unknown (not loaded)\"}`}\n </Text>\n </Link>\n )\n },\n)\n","import { useConstant, useObserve } from \"reactjrx\"\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n map,\n merge,\n of,\n switchMap,\n timer,\n} from \"rxjs\"\nimport { hasSearchEnhancer, useReader } from \"../context/useReader\"\n\nconst DEBOUNCE_TIME = 500\n\nexport const useSearch = () => {\n const searchSubject = useConstant(() => new BehaviorSubject(\"\"))\n const { data: searchValue } = useObserve(searchSubject)\n const reader = useReader()\n const readerWithSearch = hasSearchEnhancer(reader) ? reader : undefined\n\n const { data: search } = useObserve(() => {\n return searchSubject.pipe(\n distinctUntilChanged(),\n switchMap((value) =>\n value === \"\" || !readerWithSearch\n ? of(undefined)\n : merge(\n of({\n type: `start` as const,\n data: undefined,\n }),\n timer(DEBOUNCE_TIME).pipe(\n switchMap(() => readerWithSearch.search.search(value)),\n map((data) => ({ type: `end` as const, data })),\n ),\n ),\n ),\n )\n }, [readerWithSearch, searchSubject])\n\n return {\n value: searchValue,\n setValue: searchSubject.next.bind(searchSubject),\n status: search?.type ?? \"idle\",\n data: search?.data,\n }\n}\n","import { Input, Stack, Text } from \"@chakra-ui/react\"\nimport type React from \"react\"\nimport { memo, useCallback } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { SearchListItem } from \"./SearchListItem\"\nimport { useSearch } from \"./useSearch\"\n\nexport const SearchDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { value: searchValue, setValue, status, data } = useSearch()\n\n const onValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }\n\n const onClick = useCallback(\n (cfi: string) => {\n onNavigate()\n reader?.navigation.goToCfi(cfi)\n },\n [reader, onNavigate],\n )\n\n const { data: consolidatedResults } = useObserve(\n () => reader?.locateResource(data?.slice(0, 100) ?? []),\n [data],\n )\n\n return (\n <Stack flex={1} height=\"100%\" gap={2}>\n <Input\n placeholder=\"Type something...\"\n value={searchValue}\n onChange={onValueChange}\n flexShrink={0}\n variant=\"subtle\"\n name=\"search\"\n focusRing=\"none\"\n focusVisibleRing=\"none\"\n outline=\"none\"\n focusRingColor=\"transparent\"\n />\n <Stack\n style={{ overflow: \"hidden\", overflowY: \"auto\" }}\n overflow=\"auto\"\n px={4}\n flex={1}\n >\n {status === \"start\" && <Text>Searching ...</Text>}\n {data?.length === 0 && <Text>No results</Text>}\n {status === \"end\" && (data?.length ?? 0) > 0 && (\n <Stack>\n <Text fontSize=\"md\">{data?.length} result(s)</Text>\n <Stack gap={0}>\n {consolidatedResults?.map((result, j) => {\n return (\n <SearchListItem\n key={j}\n contextText={\n result.meta?.range?.startContainer.parentElement\n ?.textContent ?? \"\"\n }\n pageIndex={result.meta?.itemPageIndex}\n startOffset={result.meta?.range?.startOffset ?? 0}\n text={searchValue}\n cfi={result.meta.cfi}\n onClick={onClick}\n absolutePageIndex={result.meta?.absolutePageIndex}\n />\n )\n })}\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { SearchDialogContent } from \"./SearchDialogContent\"\n\nexport const SearchDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent height=\"100%\">\n <DialogHeader>\n <DialogTitle>Search</DialogTitle>\n </DialogHeader>\n <DialogBody flex={1} p={0}>\n <SearchDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { Link, List, Stack, Text } from \"@chakra-ui/react\"\nimport React, { memo } from \"react\"\nimport { LuCircleCheck } from \"react-icons/lu\"\nimport { useObserve } from \"reactjrx\"\nimport { useReader } from \"../context/useReader\"\nimport { usePagination } from \"../pagination/usePagination\"\n\nexport const TableOfContentsDialogContent = memo(\n ({ onNavigate }: { onNavigate: () => void }) => {\n const reader = useReader()\n const { data: { manifest } = {} } =\n useObserve(() => reader?.context, [reader]) ?? {}\n const { nav } = manifest ?? {}\n const pagination = usePagination()\n const toc = nav?.toc || []\n const absolutePageIndex = pagination?.beginAbsolutePageIndex\n\n let currentSubChapter = pagination?.beginChapterInfo\n\n while (currentSubChapter?.subChapter) {\n currentSubChapter = currentSubChapter?.subChapter\n }\n\n const buildTocForItem = (\n tocItem: (typeof toc)[number],\n index: number,\n lvl: number,\n ) => (\n <React.Fragment key={index}>\n <List.Item\n pl={4 * (lvl + 1)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Link\n onClick={() => {\n onNavigate()\n\n reader?.navigation.goToUrl(tocItem.href)\n }}\n href=\"#\"\n >\n {currentSubChapter?.path === tocItem.path && (\n <List.Indicator asChild>\n <LuCircleCheck />\n </List.Indicator>\n )}\n {currentSubChapter?.path !== tocItem.path && (\n <List.Indicator asChild visibility=\"hidden\">\n <LuCircleCheck />\n </List.Indicator>\n )}\n <Stack gap={0}>\n <Text fontSize=\"md\">{tocItem.title || tocItem.path}</Text>\n {currentSubChapter?.path === tocItem.path &&\n absolutePageIndex !== undefined && (\n <Text\n fontStyle=\"italic\"\n fontWeight=\"bold\"\n fontSize=\"sm\"\n >{`Currently on page ${absolutePageIndex + 1}`}</Text>\n )}\n </Stack>\n </Link>\n </List.Item>\n {tocItem.contents.length > 0 && (\n <List.Root as=\"div\" gap={2}>\n {tocItem.contents.map((tocItem, index) =>\n buildTocForItem(tocItem, index, lvl + 1),\n )}\n </List.Root>\n )}\n </React.Fragment>\n )\n\n return (\n <List.Root gap={3} overflowY=\"auto\" py={4} flex={1}>\n {nav?.toc.map((tocItem, index) => buildTocForItem(tocItem, index, 0))}\n </List.Root>\n )\n },\n)\n","import { Button } from \"@chakra-ui/react\"\nimport { memo } from \"react\"\nimport {\n DialogActionTrigger,\n DialogBody,\n DialogCloseTrigger,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogRoot,\n DialogTitle,\n} from \"../components/ui/dialog\"\nimport { TableOfContentsDialogContent } from \"./TableOfContentsDialogContent\"\n\nexport const TableOfContentsDialog = memo(\n ({\n open,\n setOpen,\n onNavigate,\n }: {\n open: boolean\n setOpen: (open: boolean) => void\n onNavigate: () => void\n }) => {\n return (\n <DialogRoot\n lazyMount\n placement=\"center\"\n open={open}\n onOpenChange={(e) => setOpen(e.open)}\n size={{ mdDown: \"full\", md: \"lg\" }}\n scrollBehavior=\"inside\"\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Table of Contents</DialogTitle>\n </DialogHeader>\n <DialogBody overflowY=\"auto\" flex={1}>\n <TableOfContentsDialogContent onNavigate={onNavigate} />\n </DialogBody>\n <DialogFooter>\n <DialogActionTrigger asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogActionTrigger>\n </DialogFooter>\n <DialogCloseTrigger />\n </DialogContent>\n </DialogRoot>\n )\n },\n)\n","import { useEffect } from \"react\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nexport const useZoomSettings = () => {\n const reader = useReader()\n const { zoomMaxScale } = useReaderContextValue([\"zoomMaxScale\"])\n\n useEffect(\n function syncSettingsWithGesturesEnhancer() {\n reader?.gestures.settings.update({\n zoomMaxScale: zoomMaxScale ?? MAX_ZOOM_SCALE,\n })\n },\n [reader, zoomMaxScale],\n )\n}\n","import { memo } from \"react\"\nimport { useObserve } from \"reactjrx\"\nimport { animationFrameScheduler, map, throttleTime } from \"rxjs\"\nimport { FloatingMenu } from \"../common/FloatingMenu\"\nimport { Slider } from \"../components/ui/slider\"\nimport { MAX_ZOOM_SCALE } from \"../constants\"\nimport { useReader } from \"../context/useReader\"\nimport { useReaderContextValue } from \"../context/useReaderContext\"\n\nconst STEP = 0.5\nconst MIN = 1\n// const MAX = MAX_ZOOM_SCALE\n\nconst normalizeZoomValue = (\n value: number,\n min: number,\n max: number,\n step: number,\n): number => {\n if (value > min && value < min + step) {\n return min + step\n }\n\n // Clamp to min/max bounds\n const clamped = Math.min(Math.max(value, min), max)\n // Round to nearest step\n const stepped = Math.round((clamped - min) / step) * step + min\n // Round to avoid floating point precision issues\n return Math.round(stepped * 100) / 100\n}\n\nexport const ZoomControls = memo(() => {\n const { zoomMaxScale = MAX_ZOOM_SCALE } = useReaderContextValue([\n \"zoomMaxScale\",\n ])\n const reader = useReader()\n const { data: zoomScaleValue = 1 } = useObserve(\n () =>\n reader?.zoom.state$.pipe(\n map((state) => state.currentScale),\n throttleTime(100, animationFrameScheduler, {\n leading: true,\n trailing: true,\n }),\n ),\n [reader],\n )\n const { data: isZooming = false } = useObserve(\n () => reader?.zoom.state$.pipe(map((state) => state.isZooming)),\n [reader],\n )\n const normalizedZoomScaleValue = normalizeZoomValue(\n zoomScaleValue,\n MIN,\n zoomMaxScale,\n STEP,\n )\n\n return (\n <FloatingMenu present={isZooming && zoomScaleValue > 1}>\n <Slider\n value={[normalizedZoomScaleValue]}\n min={MIN}\n max={zoomMaxScale}\n step={STEP}\n minWidth={200}\n onValueChange={(e) => {\n const value = e.value?.[0] ?? 1\n\n if (value === 1) {\n reader?.zoom.exit()\n } else {\n reader?.zoom.scaleAt(value, {\n constrain: \"within-viewport\",\n })\n }\n }}\n />\n </FloatingMenu>\n )\n})\n","import { Box, type BoxProps, Presence } from \"@chakra-ui/react\"\nimport { type ComponentProps, memo, useCallback, useState } from \"react\"\nimport { AnnotateControls } from \"./annotations/AnnotateControls\"\nimport { AnnotationDrawer } from \"./annotations/AnnotationDrawer\"\nimport { AnnotationsDialog } from \"./annotations/AnnotationsDialog\"\nimport { BookmarkPageMarkers } from \"./annotations/bookmarks/BookmarkPageMarkers\"\nimport { useBookmarkOnCornerTap } from \"./annotations/bookmarks/useBookmarkOnCornerTap\"\nimport { usePreventInteractionOnSelection } from \"./annotations/usePreventInteractionOnSelection\"\nimport { useSyncAnnotationsWithReader } from \"./annotations/useSyncAnnotationsWithReader\"\nimport { Spine } from \"./common/Spine\"\nimport { Toaster } from \"./components/ui/toaster\"\nimport { ReactReaderProvider } from \"./context/ReactReaderProvider\"\nimport { useReaderContextValue } from \"./context/useReaderContext\"\nimport { FontSizeControlsDialog } from \"./fonts/FontSizeControlsDialog\"\nimport { SyncFontSettings } from \"./fonts/SyncFontSettings\"\nimport { GalleryDialog } from \"./gallery/GalleryDialog\"\nimport { HelpDialog } from \"./help/HelpDialog\"\nimport { FloatingProgress } from \"./navigation/FloatingProgress\"\nimport { FloatingTime } from \"./navigation/FloatingTime\"\nimport { SpreadRotationHint } from \"./navigation/SpreadRotationHint\"\nimport { useInterceptExternalLinks } from \"./navigation/useInterceptExternalLinks\"\nimport { useNotifications } from \"./notifications/useNotifications\"\nimport { QuickMenu } from \"./quickmenu/QuickMenu\"\nimport { useQuickMenu } from \"./quickmenu/useQuickMenu\"\nimport { useQuickMenuToggleGesture } from \"./quickmenu/useQuickMenuToggleGesture\"\nimport { RefitDialog } from \"./refit/RefitDialog\"\nimport { SearchDialog } from \"./search/SearchDialog\"\nimport { TableOfContentsDialog } from \"./toc/TableOfContentsDialog\"\nimport { useZoomSettings } from \"./zoom/useZoomSettings\"\nimport { ZoomControls } from \"./zoom/ZoomControls\"\n\nconst ANIMATION_NAME_IN_OUT = { _open: \"fade-in\", _closed: \"fade-out\" }\n\nconst BookmarksEffects = memo(() => {\n // Intensive\n useBookmarkOnCornerTap()\n\n return null\n})\n\nconst Effects = memo(() => {\n useZoomSettings()\n useInterceptExternalLinks()\n useNotifications()\n useQuickMenuToggleGesture()\n usePreventInteractionOnSelection()\n useSyncAnnotationsWithReader()\n\n return (\n <>\n <SyncFontSettings />\n <BookmarksEffects />\n </>\n )\n})\n\nconst InnerReactReader = memo(\n ({\n children,\n ...rest\n }: {\n children: React.ReactNode\n } & BoxProps) => {\n const { enableFloatingTime, onItemClick } = useReaderContextValue([\n \"enableFloatingTime\",\n \"onItemClick\",\n ])\n const [isTableOfContentsOpen, setIsTableOfContentsOpen] = useState(false)\n const [isHelpOpen, setIsHelpOpen] = useState(false)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n const [isAnnotationsOpenWith, setIsAnnotationsOpenWith] = useState<\n \"bookmarks\" | \"annotations\" | undefined\n >(undefined)\n const [isGalleryOpen, setIsGalleryOpen] = useState(false)\n const [quickMenuOpen, setQuickMenuOpen] = useQuickMenu()\n\n const onNavigate = useCallback(() => {\n setIsTableOfContentsOpen(false)\n setIsHelpOpen(false)\n setIsSearchOpen(false)\n setIsAnnotationsOpenWith(undefined)\n setQuickMenuOpen(false)\n setIsGalleryOpen(false)\n }, [setQuickMenuOpen])\n\n const _onItemClick: NonNullable<typeof onItemClick> = useCallback(\n (item) => {\n if (item === \"annotations\") {\n setIsAnnotationsOpenWith(\"annotations\")\n } else if (item === \"search\") {\n setIsSearchOpen(true)\n } else if (item === \"help\") {\n setIsHelpOpen(true)\n } else if (item === \"toc\") {\n setIsTableOfContentsOpen(true)\n } else if (item === \"bookmarks\") {\n setIsAnnotationsOpenWith(\"bookmarks\")\n } else if (item === \"gallery\") {\n setIsGalleryOpen(true)\n }\n onItemClick?.(item)\n },\n [onItemClick],\n )\n\n return (\n <>\n <Effects />\n <Box\n position=\"absolute\"\n top={0}\n left={0}\n height=\"100%\"\n width=\"100%\"\n overflow=\"hidden\"\n data-prose-react-reader\n {...rest}\n >\n {children}\n <Spine>\n <BookmarkPageMarkers />\n </Spine>\n <FloatingProgress />\n <SpreadRotationHint />\n <GalleryDialog open={isGalleryOpen} setOpen={setIsGalleryOpen} />\n <RefitDialog />\n <QuickMenu onItemClick={_onItemClick} />\n <ZoomControls />\n <AnnotateControls />\n <AnnotationDrawer />\n <FontSizeControlsDialog />\n <HelpDialog open={isHelpOpen} setOpen={setIsHelpOpen} />\n <TableOfContentsDialog\n open={isTableOfContentsOpen}\n setOpen={setIsTableOfContentsOpen}\n onNavigate={onNavigate}\n />\n <SearchDialog\n open={isSearchOpen}\n setOpen={setIsSearchOpen}\n onNavigate={onNavigate}\n />\n <AnnotationsDialog\n openWith={isAnnotationsOpenWith}\n setOpen={(open) =>\n setIsAnnotationsOpenWith(open ? \"annotations\" : undefined)\n }\n onNavigate={onNavigate}\n />\n <Presence\n present={enableFloatingTime || quickMenuOpen}\n animationName={ANIMATION_NAME_IN_OUT}\n animationDuration=\"slow\"\n >\n <FloatingTime />\n </Presence>\n <Toaster />\n </Box>\n </>\n )\n },\n)\n\nexport const ReactReader = memo(\n ({\n children,\n slots,\n ...props\n }: ComponentProps<typeof ReactReaderProvider> & {\n slots?: {\n container?: {\n props?: Omit<ComponentProps<typeof InnerReactReader>, \"children\">\n }\n }\n }) => {\n const { container: { props: containerProps = {} } = {} } = slots ?? {}\n\n return (\n <ReactReaderProvider {...props}>\n <InnerReactReader {...containerProps}>{children}</InnerReactReader>\n </ReactReaderProvider>\n )\n },\n)\n"],"mappings":"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"}
|