@prose-reader/react-reader 1.174.0 → 1.176.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.
Files changed (71) hide show
  1. package/dist/common/useFullscreen.d.ts +4 -0
  2. package/dist/components/ui/avatar.d.ts +16 -0
  3. package/dist/components/ui/checkbox.d.ts +8 -0
  4. package/dist/components/ui/close-button.d.ts +4 -0
  5. package/dist/components/ui/color-mode.d.ts +19 -0
  6. package/dist/components/ui/dialog.d.ts +19 -0
  7. package/dist/components/ui/drawer.d.ts +19 -0
  8. package/dist/components/ui/field.d.ts +9 -0
  9. package/dist/components/ui/input-group.d.ts +12 -0
  10. package/dist/components/ui/popover.d.ts +17 -0
  11. package/dist/components/ui/progress.d.ts +9 -0
  12. package/dist/components/ui/provider.d.ts +2 -0
  13. package/dist/components/ui/radio.d.ts +8 -0
  14. package/dist/components/ui/slider.d.ts +11 -0
  15. package/dist/components/ui/toggle-tip.d.ts +10 -0
  16. package/dist/components/ui/tooltip.d.ts +11 -0
  17. package/dist/context/ReactReaderProvider.d.ts +5 -0
  18. package/dist/context/context.d.ts +3 -0
  19. package/dist/context/useReader.d.ts +2 -0
  20. package/dist/index.d.ts +2 -0
  21. package/dist/index.js +433 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/index.umd.cjs +2 -0
  24. package/dist/index.umd.cjs.map +1 -0
  25. package/dist/navigation/QuickMenu/BottomBar.d.ts +3 -0
  26. package/dist/navigation/QuickMenu/PaginationInfoSection.d.ts +1 -0
  27. package/dist/navigation/QuickMenu/QuickBar.d.ts +4 -0
  28. package/dist/navigation/QuickMenu/QuickMenu.d.ts +5 -0
  29. package/dist/navigation/QuickMenu/Scrubber.d.ts +1 -0
  30. package/dist/navigation/QuickMenu/ThemedSlider.d.ts +3 -0
  31. package/dist/navigation/QuickMenu/TimeIndicator.d.ts +3 -0
  32. package/dist/navigation/QuickMenu/TopBar.d.ts +5 -0
  33. package/dist/navigation/useNavigationContext.d.ts +11 -0
  34. package/dist/pagination/usePagination.d.ts +4 -0
  35. package/dist/settings/useSettings.d.ts +2 -0
  36. package/package.json +5 -2
  37. package/src/common/useFullscreen.ts +0 -44
  38. package/src/components/ui/avatar.tsx +0 -74
  39. package/src/components/ui/checkbox.tsx +0 -25
  40. package/src/components/ui/close-button.tsx +0 -17
  41. package/src/components/ui/color-mode.tsx +0 -75
  42. package/src/components/ui/dialog.tsx +0 -62
  43. package/src/components/ui/drawer.tsx +0 -52
  44. package/src/components/ui/field.tsx +0 -33
  45. package/src/components/ui/input-group.tsx +0 -53
  46. package/src/components/ui/popover.tsx +0 -59
  47. package/src/components/ui/progress.tsx +0 -34
  48. package/src/components/ui/provider.tsx +0 -12
  49. package/src/components/ui/radio.tsx +0 -24
  50. package/src/components/ui/slider.tsx +0 -82
  51. package/src/components/ui/toggle-tip.tsx +0 -70
  52. package/src/components/ui/tooltip.tsx +0 -46
  53. package/src/context/ReactReaderProvider.tsx +0 -14
  54. package/src/context/context.ts +0 -6
  55. package/src/context/useReader.ts +0 -9
  56. package/src/index.ts +0 -2
  57. package/src/navigation/QuickMenu/BottomBar.tsx +0 -65
  58. package/src/navigation/QuickMenu/PaginationInfoSection.tsx +0 -62
  59. package/src/navigation/QuickMenu/QuickBar.tsx +0 -40
  60. package/src/navigation/QuickMenu/QuickMenu.tsx +0 -22
  61. package/src/navigation/QuickMenu/Scrubber.tsx +0 -138
  62. package/src/navigation/QuickMenu/TimeIndicator.tsx +0 -29
  63. package/src/navigation/QuickMenu/TopBar.tsx +0 -72
  64. package/src/navigation/useNavigationContext.ts +0 -46
  65. package/src/pagination/usePagination.ts +0 -29
  66. package/src/settings/useSettings.ts +0 -9
  67. package/src/vite-env.d.ts +0 -1
  68. package/tsconfig.app.json +0 -26
  69. package/tsconfig.json +0 -7
  70. package/tsconfig.node.json +0 -22
  71. package/vite.config.ts +0 -32
@@ -0,0 +1,4 @@
1
+ export declare const useFullscreen: () => {
2
+ isFullscreen: boolean;
3
+ onToggleFullscreenClick: () => Promise<void>;
4
+ };
@@ -0,0 +1,16 @@
1
+ import { GroupProps, SlotRecipeProps, Avatar as ChakraAvatar } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ type ImageProps = React.ImgHTMLAttributes<HTMLImageElement>;
4
+ export interface AvatarProps extends ChakraAvatar.RootProps {
5
+ name?: string;
6
+ src?: string;
7
+ srcSet?: string;
8
+ loading?: ImageProps["loading"];
9
+ icon?: React.ReactElement;
10
+ fallback?: React.ReactNode;
11
+ }
12
+ export declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
13
+ interface AvatarGroupProps extends GroupProps, SlotRecipeProps<"avatar"> {
14
+ }
15
+ export declare const AvatarGroup: React.ForwardRefExoticComponent<AvatarGroupProps & React.RefAttributes<HTMLDivElement>>;
16
+ export {};
@@ -0,0 +1,8 @@
1
+ import { Checkbox as ChakraCheckbox } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface CheckboxProps extends ChakraCheckbox.RootProps {
4
+ icon?: React.ReactNode;
5
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
6
+ rootRef?: React.Ref<HTMLLabelElement>;
7
+ }
8
+ export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,4 @@
1
+ import { ButtonProps } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export type CloseButtonProps = ButtonProps;
4
+ export declare const CloseButton: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,19 @@
1
+ import { IconButtonProps } from '@chakra-ui/react';
2
+ import { ThemeProviderProps } from 'next-themes';
3
+ import * as React from "react";
4
+ export interface ColorModeProviderProps extends ThemeProviderProps {
5
+ }
6
+ export declare function ColorModeProvider(props: ColorModeProviderProps): import("react/jsx-runtime").JSX.Element;
7
+ export type ColorMode = "light" | "dark";
8
+ export interface UseColorModeReturn {
9
+ colorMode: ColorMode;
10
+ setColorMode: (colorMode: ColorMode) => void;
11
+ toggleColorMode: () => void;
12
+ }
13
+ export declare function useColorMode(): UseColorModeReturn;
14
+ export declare function useColorModeValue<T>(light: T, dark: T): T;
15
+ export declare function ColorModeIcon(): import("react/jsx-runtime").JSX.Element;
16
+ interface ColorModeButtonProps extends Omit<IconButtonProps, "aria-label"> {
17
+ }
18
+ export declare const ColorModeButton: React.ForwardRefExoticComponent<ColorModeButtonProps & React.RefAttributes<HTMLButtonElement>>;
19
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Dialog as ChakraDialog } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ interface DialogContentProps extends ChakraDialog.ContentProps {
4
+ portalled?: boolean;
5
+ portalRef?: React.RefObject<HTMLElement>;
6
+ backdrop?: boolean;
7
+ }
8
+ export declare const DialogContent: React.ForwardRefExoticComponent<DialogContentProps & React.RefAttributes<HTMLDivElement>>;
9
+ export declare const DialogCloseTrigger: React.ForwardRefExoticComponent<ChakraDialog.CloseTriggerProps & React.RefAttributes<HTMLButtonElement>>;
10
+ export declare const DialogRoot: React.FC<ChakraDialog.RootProps>;
11
+ export declare const DialogFooter: React.ForwardRefExoticComponent<ChakraDialog.FooterProps & React.RefAttributes<HTMLDivElement>>;
12
+ export declare const DialogHeader: React.ForwardRefExoticComponent<ChakraDialog.HeaderProps & React.RefAttributes<HTMLDivElement>>;
13
+ export declare const DialogBody: React.ForwardRefExoticComponent<ChakraDialog.BodyProps & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const DialogBackdrop: React.ForwardRefExoticComponent<ChakraDialog.BackdropProps & React.RefAttributes<HTMLDivElement>>;
15
+ export declare const DialogTitle: React.ForwardRefExoticComponent<ChakraDialog.TitleProps & React.RefAttributes<HTMLDivElement>>;
16
+ export declare const DialogDescription: React.ForwardRefExoticComponent<ChakraDialog.DescriptionProps & React.RefAttributes<HTMLDivElement>>;
17
+ export declare const DialogTrigger: React.ForwardRefExoticComponent<ChakraDialog.TriggerProps & React.RefAttributes<HTMLButtonElement>>;
18
+ export declare const DialogActionTrigger: React.ForwardRefExoticComponent<ChakraDialog.ActionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
19
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Drawer as ChakraDrawer } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ interface DrawerContentProps extends ChakraDrawer.ContentProps {
4
+ portalled?: boolean;
5
+ portalRef?: React.RefObject<HTMLElement>;
6
+ offset?: ChakraDrawer.ContentProps["padding"];
7
+ }
8
+ export declare const DrawerContent: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<HTMLDivElement>>;
9
+ export declare const DrawerCloseTrigger: React.ForwardRefExoticComponent<ChakraDrawer.CloseTriggerProps & React.RefAttributes<HTMLButtonElement>>;
10
+ export declare const DrawerTrigger: React.ForwardRefExoticComponent<ChakraDrawer.TriggerProps & React.RefAttributes<HTMLButtonElement>>;
11
+ export declare const DrawerRoot: React.FC<ChakraDrawer.RootProps>;
12
+ export declare const DrawerFooter: React.ForwardRefExoticComponent<ChakraDrawer.FooterProps & React.RefAttributes<HTMLDivElement>>;
13
+ export declare const DrawerHeader: React.ForwardRefExoticComponent<ChakraDrawer.HeaderProps & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const DrawerBody: React.ForwardRefExoticComponent<ChakraDrawer.BodyProps & React.RefAttributes<HTMLDivElement>>;
15
+ export declare const DrawerBackdrop: React.ForwardRefExoticComponent<ChakraDrawer.BackdropProps & React.RefAttributes<HTMLDivElement>>;
16
+ export declare const DrawerDescription: React.ForwardRefExoticComponent<ChakraDrawer.DescriptionProps & React.RefAttributes<HTMLDivElement>>;
17
+ export declare const DrawerTitle: React.ForwardRefExoticComponent<ChakraDrawer.TitleProps & React.RefAttributes<HTMLDivElement>>;
18
+ export declare const DrawerActionTrigger: React.ForwardRefExoticComponent<ChakraDrawer.ActionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
19
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Field as ChakraField } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface FieldProps extends Omit<ChakraField.RootProps, "label"> {
4
+ label?: React.ReactNode;
5
+ helperText?: React.ReactNode;
6
+ errorText?: React.ReactNode;
7
+ optionalText?: React.ReactNode;
8
+ }
9
+ export declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,12 @@
1
+ import { BoxProps, InputElementProps } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface InputGroupProps extends BoxProps {
4
+ startElementProps?: InputElementProps;
5
+ endElementProps?: InputElementProps;
6
+ startElement?: React.ReactNode;
7
+ endElement?: React.ReactNode;
8
+ children: React.ReactElement<InputElementProps>;
9
+ startOffset?: InputElementProps["paddingStart"];
10
+ endOffset?: InputElementProps["paddingEnd"];
11
+ }
12
+ export declare const InputGroup: React.ForwardRefExoticComponent<InputGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,17 @@
1
+ import { Popover as ChakraPopover } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ interface PopoverContentProps extends ChakraPopover.ContentProps {
4
+ portalled?: boolean;
5
+ portalRef?: React.RefObject<HTMLElement>;
6
+ }
7
+ export declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
8
+ export declare const PopoverArrow: React.ForwardRefExoticComponent<ChakraPopover.ArrowProps & React.RefAttributes<HTMLDivElement>>;
9
+ export declare const PopoverCloseTrigger: React.ForwardRefExoticComponent<ChakraPopover.CloseTriggerProps & React.RefAttributes<HTMLButtonElement>>;
10
+ export declare const PopoverTitle: React.ForwardRefExoticComponent<ChakraPopover.TitleProps & React.RefAttributes<HTMLDivElement>>;
11
+ export declare const PopoverDescription: React.ForwardRefExoticComponent<ChakraPopover.DescriptionProps & React.RefAttributes<HTMLDivElement>>;
12
+ export declare const PopoverFooter: React.ForwardRefExoticComponent<ChakraPopover.FooterProps & React.RefAttributes<HTMLDivElement>>;
13
+ export declare const PopoverHeader: React.ForwardRefExoticComponent<ChakraPopover.HeaderProps & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const PopoverRoot: React.FC<ChakraPopover.RootProps>;
15
+ export declare const PopoverBody: React.ForwardRefExoticComponent<ChakraPopover.BodyProps & React.RefAttributes<HTMLDivElement>>;
16
+ export declare const PopoverTrigger: React.ForwardRefExoticComponent<ChakraPopover.TriggerProps & React.RefAttributes<HTMLButtonElement>>;
17
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Progress as ChakraProgress } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export declare const ProgressBar: React.ForwardRefExoticComponent<ChakraProgress.TrackProps & React.RefAttributes<HTMLDivElement>>;
4
+ export interface ProgressLabelProps extends ChakraProgress.LabelProps {
5
+ info?: React.ReactNode;
6
+ }
7
+ export declare const ProgressLabel: React.ForwardRefExoticComponent<ProgressLabelProps & React.RefAttributes<HTMLDivElement>>;
8
+ export declare const ProgressRoot: React.ForwardRefExoticComponent<ChakraProgress.RootProps & React.RefAttributes<HTMLDivElement>>;
9
+ export declare const ProgressValueText: React.ForwardRefExoticComponent<ChakraProgress.ValueTextProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ import { ColorModeProviderProps } from './color-mode';
2
+ export declare function Provider(props: ColorModeProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { RadioGroup as ChakraRadioGroup } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface RadioProps extends ChakraRadioGroup.ItemProps {
4
+ rootRef?: React.Ref<HTMLDivElement>;
5
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
6
+ }
7
+ export declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>>;
8
+ export declare const RadioGroup: React.ForwardRefExoticComponent<ChakraRadioGroup.RootProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,11 @@
1
+ import { Slider as ChakraSlider } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface SliderProps extends ChakraSlider.RootProps {
4
+ marks?: Array<number | {
5
+ value: number;
6
+ label: React.ReactNode;
7
+ }>;
8
+ label?: React.ReactNode;
9
+ showValue?: boolean;
10
+ }
11
+ export declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,10 @@
1
+ import { Popover as ChakraPopover } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface ToggleTipProps extends ChakraPopover.RootProps {
4
+ showArrow?: boolean;
5
+ portalled?: boolean;
6
+ portalRef?: React.RefObject<HTMLElement>;
7
+ content?: React.ReactNode;
8
+ }
9
+ export declare const ToggleTip: React.ForwardRefExoticComponent<ToggleTipProps & React.RefAttributes<HTMLDivElement>>;
10
+ export declare const InfoTip: React.ForwardRefExoticComponent<Partial<ToggleTipProps> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,11 @@
1
+ import { Tooltip as ChakraTooltip } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export interface TooltipProps extends ChakraTooltip.RootProps {
4
+ showArrow?: boolean;
5
+ portalled?: boolean;
6
+ portalRef?: React.RefObject<HTMLElement>;
7
+ content: React.ReactNode;
8
+ contentProps?: ChakraTooltip.ContentProps;
9
+ disabled?: boolean;
10
+ }
11
+ export declare const Tooltip: React.ForwardRefExoticComponent<TooltipProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,5 @@
1
+ import { Reader } from '@prose-reader/core';
2
+ export declare const ReactReaderProvider: import('react').MemoExoticComponent<({ children, reader, }: {
3
+ children?: React.ReactNode;
4
+ reader: Reader | undefined;
5
+ }) => import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1,3 @@
1
+ import { Reader } from '@prose-reader/core';
2
+ import { Context } from 'react';
3
+ export declare const ReaderContext: Context<Reader | undefined>;
@@ -0,0 +1,2 @@
1
+ import { Reader } from '@prose-reader/core';
2
+ export declare const useReader: () => Reader | undefined;
@@ -0,0 +1,2 @@
1
+ export * from './navigation/QuickMenu/QuickMenu';
2
+ export * from './context/ReactReaderProvider';
package/dist/index.js ADDED
@@ -0,0 +1,433 @@
1
+ import { jsxs as c, jsx as n, Fragment as O } from "react/jsx-runtime";
2
+ import * as p from "react";
3
+ import { createContext as W, useContext as L, memo as I, useCallback as $, useEffect as k, useState as z } from "react";
4
+ import { Popover as h, Portal as V, IconButton as f, Progress as x, Stack as R, HStack as T, Text as g, Presence as j, chakra as N, Box as B } from "@chakra-ui/react";
5
+ import { RxDoubleArrowUp as U, RxDoubleArrowLeft as G, RxDoubleArrowDown as _, RxDoubleArrowRight as H } from "react-icons/rx";
6
+ import { useObserve as b, useSubscribe as Q, useSignal as Y } from "reactjrx";
7
+ import { HiOutlineInformationCircle as q } from "react-icons/hi";
8
+ import { NEVER as J, combineLatest as K, map as X } from "rxjs";
9
+ import Z from "rc-slider";
10
+ import "rc-slider/assets/index.css";
11
+ import { IoIosArrowBack as ee, IoMdMore as te } from "react-icons/io";
12
+ import { MdFullscreenExit as re, MdFullscreen as ne } from "react-icons/md";
13
+ const D = W(void 0), S = () => L(D), oe = p.forwardRef(
14
+ function(t, r) {
15
+ const {
16
+ showArrow: s,
17
+ children: o,
18
+ portalled: l = !0,
19
+ content: i,
20
+ portalRef: u,
21
+ ...a
22
+ } = t;
23
+ return /* @__PURE__ */ c(
24
+ h.Root,
25
+ {
26
+ ...a,
27
+ positioning: { ...a.positioning, gutter: 4 },
28
+ children: [
29
+ /* @__PURE__ */ n(h.Trigger, { asChild: !0, children: o }),
30
+ /* @__PURE__ */ n(V, { disabled: !l, container: u, children: /* @__PURE__ */ n(h.Positioner, { children: /* @__PURE__ */ c(
31
+ h.Content,
32
+ {
33
+ width: "auto",
34
+ px: "2",
35
+ py: "1",
36
+ textStyle: "xs",
37
+ rounded: "sm",
38
+ ref: r,
39
+ children: [
40
+ s && /* @__PURE__ */ n(h.Arrow, { children: /* @__PURE__ */ n(h.ArrowTip, {}) }),
41
+ i
42
+ ]
43
+ }
44
+ ) }) })
45
+ ]
46
+ }
47
+ );
48
+ }
49
+ ), se = p.forwardRef(function(t, r) {
50
+ const { children: s, ...o } = t;
51
+ return /* @__PURE__ */ n(oe, { content: s, ...o, ref: r, children: /* @__PURE__ */ n(
52
+ f,
53
+ {
54
+ variant: "ghost",
55
+ "aria-label": "info",
56
+ size: "2xs",
57
+ colorPalette: "gray",
58
+ children: /* @__PURE__ */ n(q, {})
59
+ }
60
+ ) });
61
+ }), le = p.forwardRef(function(t, r) {
62
+ return /* @__PURE__ */ n(x.Track, { ...t, ref: r, children: /* @__PURE__ */ n(x.Range, {}) });
63
+ });
64
+ p.forwardRef(function(t, r) {
65
+ const { children: s, info: o, ...l } = t;
66
+ return /* @__PURE__ */ c(x.Label, { ...l, ref: r, children: [
67
+ s,
68
+ o && /* @__PURE__ */ n(se, { children: o })
69
+ ] });
70
+ });
71
+ const ie = x.Root, ce = x.ValueText, P = () => {
72
+ const e = S();
73
+ return b(
74
+ () => e ? K([e.pagination.state$, e.context.state$]).pipe(
75
+ X(([t, r]) => {
76
+ var o;
77
+ const s = (o = r.manifest) == null ? void 0 : o.spineItems.every(
78
+ (l) => {
79
+ var i;
80
+ return (i = l.mediaType) == null ? void 0 : i.startsWith("image/");
81
+ }
82
+ );
83
+ return {
84
+ ...t,
85
+ hasChapters: !r.isFullyPrePaginated && !s
86
+ };
87
+ })
88
+ ) : J,
89
+ [e]
90
+ );
91
+ }, A = () => {
92
+ const e = P(), t = (e == null ? void 0 : e.numberOfTotalPages) === 1, r = ((e == null ? void 0 : e.beginNumberOfPagesInSpineItem) ?? 0) > 1, s = ((e == null ? void 0 : e.endNumberOfPagesInSpineItem) ?? 0) > 1, o = (e != null && e.hasChapters ? e == null ? void 0 : e.beginPageIndexInSpineItem : e == null ? void 0 : e.beginAbsolutePageIndex) ?? 0, l = (e != null && e.hasChapters ? e == null ? void 0 : e.endPageIndexInSpineItem : e == null ? void 0 : e.endAbsolutePageIndex) ?? 0, [i = 0, u = 0] = [
93
+ o,
94
+ l
95
+ ].sort((m, v) => m - v), a = (e == null ? void 0 : e.beginPageIndexInSpineItem) !== (e == null ? void 0 : e.endPageIndexInSpineItem) || (e == null ? void 0 : e.beginSpineItemIndex) !== (e == null ? void 0 : e.endSpineItemIndex), d = e != null && e.hasChapters ? e == null ? void 0 : e.beginNumberOfPagesInSpineItem : e == null ? void 0 : e.numberOfTotalPages;
96
+ return {
97
+ hasOnlyOnePage: t,
98
+ beginPageIndex: o,
99
+ endPageIndex: l,
100
+ isBeginWithinChapter: r,
101
+ isEndWithinChapter: s,
102
+ beginAndEndAreDifferent: a,
103
+ totalApproximatePages: d,
104
+ leftPageIndex: i,
105
+ rightPageIndex: u
106
+ };
107
+ }, ae = () => {
108
+ const e = P(), {
109
+ hasOnlyOnePage: t,
110
+ leftPageIndex: r,
111
+ rightPageIndex: s,
112
+ totalApproximatePages: o,
113
+ beginAndEndAreDifferent: l
114
+ } = A(), i = Math.round(((e == null ? void 0 : e.percentageEstimateOfBook) ?? 0) * 100), u = (d) => d != null && d.subChapter ? `${d.title} / ${u(d.subChapter)}` : (d == null ? void 0 : d.title) || "", a = u(e == null ? void 0 : e.beginChapterInfo);
115
+ return /* @__PURE__ */ c(R, { alignItems: "center", gap: 1, maxW: "100%", overflow: "auto", children: [
116
+ /* @__PURE__ */ n(ie, { value: i, size: "xs", width: 150, children: /* @__PURE__ */ c(T, { justifyContent: "space-between", children: [
117
+ /* @__PURE__ */ n(le, { width: 110 }),
118
+ /* @__PURE__ */ n(ce, { children: `${i}%` })
119
+ ] }) }),
120
+ /* @__PURE__ */ n(g, { truncate: !0, maxWidth: "100%", fontSize: "sm", mt: 1, children: a ? `Chapter: ${a}` : " " }),
121
+ !t && /* @__PURE__ */ c(T, { children: [
122
+ /* @__PURE__ */ n(g, { fontSize: "xs", children: l ? `${r + 1} - ${s + 1} of ${o}` : `${r + 1} of ${o}` }),
123
+ !!(e != null && e.hasChapters) && /* @__PURE__ */ c(O, { children: [
124
+ /* @__PURE__ */ n(g, { children: "-" }),
125
+ /* @__PURE__ */ c(g, { fontSize: "xs", children: [
126
+ "(",
127
+ ((e == null ? void 0 : e.beginAbsolutePageIndex) ?? 0) + 1,
128
+ ")"
129
+ ] })
130
+ ] })
131
+ ] })
132
+ ] });
133
+ }, E = I(
134
+ ({
135
+ children: e,
136
+ position: t,
137
+ ...r
138
+ }) => /* @__PURE__ */ n(
139
+ j,
140
+ {
141
+ display: "flex",
142
+ flexDirection: "row",
143
+ width: "100%",
144
+ position: "absolute",
145
+ ...t === "bottom" ? { bottom: 0 } : { top: 0 },
146
+ animationName: t === "bottom" ? {
147
+ _open: "slide-from-bottom, fade-in",
148
+ _closed: "slide-to-bottom, fade-out"
149
+ } : {
150
+ _open: "slide-from-top, fade-in",
151
+ _closed: "slide-to-top, fade-out"
152
+ },
153
+ animationDuration: "moderate",
154
+ bgColor: "bg.panel",
155
+ alignItems: "center",
156
+ justifyContent: "center",
157
+ shadow: "md",
158
+ px: 4,
159
+ ...r,
160
+ children: e
161
+ }
162
+ )
163
+ ), de = N(Z), ue = I((e) => /* @__PURE__ */ n(
164
+ B,
165
+ {
166
+ display: "contents",
167
+ css: {
168
+ "--bg": "colors.bg",
169
+ "--bg-emphasized": "colors.bg.emphasized",
170
+ "--color-solid": "colors.colorPalette.solid"
171
+ },
172
+ children: /* @__PURE__ */ n(
173
+ de,
174
+ {
175
+ keyboard: !1,
176
+ style: {
177
+ padding: 0
178
+ },
179
+ css: {
180
+ "& > .rc-slider-handle:focus-visible": {
181
+ boxShadow: "0 0 0 2px var(--color-solid) !important"
182
+ },
183
+ "& > .rc-slider-handle:active": {
184
+ boxShadow: "0 0 5px var(--color-solid) !important"
185
+ },
186
+ "& > .rc-slider-handle.rc-slider-handle-dragging": {
187
+ boxShadow: "0 0 0 3px var(--color-solid) !important"
188
+ }
189
+ },
190
+ styles: {
191
+ rail: {
192
+ height: "8px",
193
+ top: "50%",
194
+ transform: "translateY(-50%)",
195
+ backgroundColor: "var(--bg-emphasized)"
196
+ },
197
+ track: {
198
+ height: "8px",
199
+ top: "50%",
200
+ transform: "translateY(-50%)",
201
+ backgroundColor: "var(--color-solid)"
202
+ },
203
+ handle: {
204
+ width: "24px",
205
+ height: "24px",
206
+ top: "50%",
207
+ borderColor: "var(--color-solid)",
208
+ transform: "translate(-50%, -50%)",
209
+ backgroundColor: "var(--bg)",
210
+ marginTop: "0px"
211
+ }
212
+ },
213
+ ...e
214
+ }
215
+ )
216
+ }
217
+ )), me = () => {
218
+ const e = P(), t = e == null ? void 0 : e.isUsingSpread, { beginPageIndex: r, totalApproximatePages: s = 0 } = A(), o = t ? Math.floor((r || 0) / 2) : r, [l, i] = Y({
219
+ default: o || 0
220
+ }), u = 0, a = Math.max(
221
+ 0,
222
+ t ? Math.floor((s - 1) / 2) : s - 1
223
+ );
224
+ return k(() => {
225
+ i.setValue(o || 0);
226
+ }, [o, i]), {
227
+ value: l,
228
+ valueSignal: i,
229
+ min: u,
230
+ max: a
231
+ };
232
+ }, he = () => {
233
+ const e = S(), t = P(), { manifest: r } = b(() => e == null ? void 0 : e.context.state$, []) ?? {}, s = (r == null ? void 0 : r.readingDirection) === "rtl", o = t == null ? void 0 : t.isUsingSpread, { totalApproximatePages: l = 0, isBeginWithinChapter: i } = A(), u = 1, a = i, { value: d, valueSignal: m, min: v, max: F } = me(), M = $(
234
+ (C) => {
235
+ const [w = 0] = Array.isArray(C) ? C : [C];
236
+ m.setValue(w);
237
+ const y = o ? Math.floor(w) * 2 : Math.floor(w);
238
+ a ? e == null || e.navigation.goToPageOfSpineItem({
239
+ pageIndex: y,
240
+ spineItemId: e.pagination.getState().beginSpineItemIndex ?? 0,
241
+ animation: !1
242
+ }) : e == null || e.navigation.goToAbsolutePageIndex({
243
+ absolutePageIndex: y,
244
+ animation: !1
245
+ });
246
+ },
247
+ [e, o, m, a]
248
+ );
249
+ return Q(
250
+ () => e == null ? void 0 : e.navigation.throttleLock({
251
+ duration: 100,
252
+ trigger: m.subject
253
+ }),
254
+ [e, m]
255
+ ), l === 1 || o && l === 2 ? null : /* @__PURE__ */ n(
256
+ ue,
257
+ {
258
+ value: [d],
259
+ max: F,
260
+ min: v,
261
+ reverse: s,
262
+ step: u,
263
+ onChange: M
264
+ }
265
+ );
266
+ }, ge = () => {
267
+ const [e, t] = z(/* @__PURE__ */ new Date());
268
+ return k(() => {
269
+ const r = setInterval(() => {
270
+ t(/* @__PURE__ */ new Date());
271
+ }, 6e4);
272
+ return () => clearInterval(r);
273
+ }, []), e;
274
+ }, fe = (e) => {
275
+ const t = ge();
276
+ return /* @__PURE__ */ n(g, { fontSize: "xs", ...e, children: t.toLocaleTimeString(navigator.language, {
277
+ hour: "2-digit",
278
+ minute: "2-digit"
279
+ }) });
280
+ }, xe = ({ open: e }) => {
281
+ const t = S(), r = b(() => t == null ? void 0 : t.navigation.state$, [t]), s = b(() => t == null ? void 0 : t.settings.values$, [t]), o = (s == null ? void 0 : s.computedPageTurnDirection) === "vertical";
282
+ return /* @__PURE__ */ c(E, { present: e, position: "bottom", height: 130, children: [
283
+ /* @__PURE__ */ n(
284
+ f,
285
+ {
286
+ "aria-label": "left",
287
+ size: "lg",
288
+ variant: "ghost",
289
+ flexShrink: 0,
290
+ onClick: () => t == null ? void 0 : t.navigation.goToLeftOrTopSpineItem(),
291
+ disabled: !(r != null && r.canGoLeftSpineItem) && !(r != null && r.canGoTopSpineItem),
292
+ children: o ? /* @__PURE__ */ n(U, {}) : /* @__PURE__ */ n(G, {})
293
+ }
294
+ ),
295
+ /* @__PURE__ */ c(
296
+ R,
297
+ {
298
+ flex: 1,
299
+ maxW: 400,
300
+ gap: 2,
301
+ alignItems: "center",
302
+ overflow: "visible",
303
+ px: 4,
304
+ children: [
305
+ /* @__PURE__ */ n(ae, {}),
306
+ /* @__PURE__ */ n(B, { height: 5, maxW: 300, width: "100%", overflow: "visible", children: /* @__PURE__ */ n(he, {}) })
307
+ ]
308
+ }
309
+ ),
310
+ /* @__PURE__ */ n(
311
+ f,
312
+ {
313
+ "aria-label": "right",
314
+ size: "lg",
315
+ flexShrink: 0,
316
+ variant: "ghost",
317
+ disabled: !(r != null && r.canGoRightSpineItem) && !(r != null && r.canGoBottomSpineItem),
318
+ onClick: () => {
319
+ t == null || t.navigation.goToRightOrBottomSpineItem();
320
+ },
321
+ children: o ? /* @__PURE__ */ n(_, {}) : /* @__PURE__ */ n(H, {})
322
+ }
323
+ ),
324
+ /* @__PURE__ */ n(fe, { position: "absolute", bottom: 0, left: 0, p: 2 })
325
+ ] });
326
+ }, be = () => {
327
+ const [e, t] = z(!1), r = $(() => document.fullscreenElement ? document.exitFullscreen().catch(console.error).then(() => {
328
+ t(!1);
329
+ }) : document.documentElement.requestFullscreen({ navigationUI: "hide" }).catch(console.error).then(() => {
330
+ t(!0);
331
+ }), []);
332
+ return k(() => {
333
+ function s() {
334
+ t(!!document.fullscreenElement);
335
+ }
336
+ return document.addEventListener("fullscreenchange", s), () => {
337
+ document.removeEventListener("fullscreenchange", s);
338
+ };
339
+ }, []), {
340
+ isFullscreen: e,
341
+ onToggleFullscreenClick: r
342
+ };
343
+ }, pe = ({
344
+ open: e,
345
+ onBackClick: t,
346
+ onMoreClick: r
347
+ }) => {
348
+ const s = S(), o = b(() => s == null ? void 0 : s.context.manifest$, [s]), { isFullscreen: l, onToggleFullscreenClick: i } = be();
349
+ return /* @__PURE__ */ c(
350
+ E,
351
+ {
352
+ present: e,
353
+ position: "top",
354
+ height: "80px",
355
+ justifyContent: "space-between",
356
+ children: [
357
+ /* @__PURE__ */ n(
358
+ f,
359
+ {
360
+ "aria-label": "left",
361
+ size: "lg",
362
+ variant: "ghost",
363
+ flexShrink: 0,
364
+ onClick: t,
365
+ children: /* @__PURE__ */ n(ee, {})
366
+ }
367
+ ),
368
+ /* @__PURE__ */ n(
369
+ R,
370
+ {
371
+ flex: 1,
372
+ maxW: 600,
373
+ gap: 1,
374
+ alignItems: "center",
375
+ overflow: "auto",
376
+ px: 4,
377
+ children: /* @__PURE__ */ n(g, { truncate: !0, maxWidth: "100%", children: o == null ? void 0 : o.title })
378
+ }
379
+ ),
380
+ /* @__PURE__ */ c(T, { children: [
381
+ /* @__PURE__ */ n(
382
+ f,
383
+ {
384
+ "aria-label": "right",
385
+ size: "lg",
386
+ flexShrink: 0,
387
+ variant: "ghost",
388
+ onClick: r,
389
+ children: /* @__PURE__ */ n(te, {})
390
+ }
391
+ ),
392
+ /* @__PURE__ */ n(
393
+ f,
394
+ {
395
+ "aria-label": "right",
396
+ size: "lg",
397
+ flexShrink: 0,
398
+ variant: "ghost",
399
+ onClick: i,
400
+ children: l ? /* @__PURE__ */ n(re, {}) : /* @__PURE__ */ n(ne, {})
401
+ }
402
+ )
403
+ ] })
404
+ ]
405
+ }
406
+ );
407
+ }, Oe = I(
408
+ ({
409
+ open: e,
410
+ onBackClick: t,
411
+ onMoreClick: r
412
+ }) => /* @__PURE__ */ c(O, { children: [
413
+ /* @__PURE__ */ n(
414
+ pe,
415
+ {
416
+ open: e,
417
+ onBackClick: t,
418
+ onMoreClick: r
419
+ }
420
+ ),
421
+ /* @__PURE__ */ n(xe, { open: e })
422
+ ] })
423
+ ), $e = I(
424
+ ({
425
+ children: e,
426
+ reader: t
427
+ }) => /* @__PURE__ */ n(D.Provider, { value: t, children: e })
428
+ );
429
+ export {
430
+ Oe as QuickMenu,
431
+ $e as ReactReaderProvider
432
+ };
433
+ //# sourceMappingURL=index.js.map