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