react-native-simple-epub-reader 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -1,26 +1,173 @@
1
1
  # react-native-simple-epub-reader
2
2
 
3
- Simple ePub renderer for React Native
3
+ A lightweight React Native ePub reader powered by `react-native-webview`, with support for:
4
4
 
5
- ## Installation
5
+ - remote `.epub` files,
6
+ - swipe navigation,
7
+ - pinch-to-zoom font scaling,
8
+ - reading progress and location callbacks,
9
+ - imperative controls through `ReaderContext`.
10
+
11
+ ## Features
12
+
13
+ - Fast setup with a single `Reader` component.
14
+ - Built-in gestures: tap, swipe left/right, pinch.
15
+ - Progress events (`onLocationChange`, `onLocationsReady`, `onBeginning`, `onFinish`).
16
+ - Programmatic controls: `goNext`, `goPrevious`, `goToLocation`, `changeTheme`, `changeFontSize`.
17
+ - Works with TypeScript out of the box.
6
18
 
19
+ ## Installation
7
20
 
8
- ```sh
21
+ ```bash
9
22
  npm install react-native-simple-epub-reader
10
23
  ```
11
24
 
25
+ Install peer dependencies:
26
+
27
+ ```bash
28
+ npm install react-native-webview react-native-gesture-handler expo-file-system @expo/vector-icons
29
+ ```
30
+
31
+ If your app uses Expo, make sure native modules are installed and configured:
32
+
33
+ ```bash
34
+ npx expo install react-native-webview react-native-gesture-handler expo-file-system @expo/vector-icons
35
+ ```
36
+
37
+ ## Quick Start
38
+
39
+ Wrap your app with `ReaderProvider`:
40
+
41
+ ```tsx
42
+ import { ReaderProvider } from 'react-native-simple-epub-reader';
43
+ import Viewer from './Viewer';
44
+
45
+ export default function App() {
46
+ return (
47
+ <ReaderProvider>
48
+ <Viewer />
49
+ </ReaderProvider>
50
+ );
51
+ }
52
+ ```
53
+
54
+ Render a book:
55
+
56
+ ```tsx
57
+ import { Reader } from 'react-native-simple-epub-reader';
58
+
59
+ export function Viewer() {
60
+ return <Reader src="https://example.com/my-book.epub" />;
61
+ }
62
+ ```
63
+
64
+ ## Reader API
65
+
66
+ ### Props
67
+
68
+ | Prop | Type | Required | Description |
69
+ | ------------------ | ------------------------------ | -------- | -------------------------------------------------------- |
70
+ | `src` | `string` | Yes | Remote URL to an `.epub` file. |
71
+ | `initialLocation` | `string` | No | Initial CFI location (`epubcfi(...)`). |
72
+ | `onTap` | `() => void` | No | Called on tap gesture. |
73
+ | `onSwipeLeft` | `() => void` | No | Called before built-in `goNext()`. |
74
+ | `onSwipeRight` | `() => void` | No | Called before built-in `goPrevious()`. |
75
+ | `onPinch` | `(e) => void` | No | Called on pinch gesture. |
76
+ | `onLocationChange` | `(data) => void` | No | Reading position/progress update. |
77
+ | `onLocationsReady` | `(epubKey, locations) => void` | No | Called when locations are generated. |
78
+ | `onBeginning` | `() => void` | No | Called when user reaches beginning of the book. |
79
+ | `onFinish` | `() => void` | No | Called when user reaches end of the book. |
80
+ | `onWebViewMessage` | `(event) => void` | No | Receives custom WebView messages not handled internally. |
81
+ | `LoaderComponent` | `React.ComponentType` | No | Custom loading component. |
82
+
83
+ ### `onLocationChange` payload
84
+
85
+ ```ts
86
+ type LocationChangeData = {
87
+ totalLocations: number;
88
+ currentLocation: Location;
89
+ progress: number;
90
+ currentSection: Section | null;
91
+ };
92
+ ```
93
+
94
+ ## ReaderContext API
12
95
 
13
- ## Usage
96
+ Use `ReaderContext` to control reader state from your own UI:
14
97
 
98
+ ```tsx
99
+ import { useContext } from 'react';
100
+ import { ReaderContext } from 'react-native-simple-epub-reader';
15
101
 
16
- ```js
17
- import { multiply } from 'react-native-simple-epub-reader';
102
+ export function Controls() {
103
+ const { goNext, goPrevious, progress, changeFontSize } =
104
+ useContext(ReaderContext);
18
105
 
19
- // ...
106
+ return <>{/* your custom controls */}</>;
107
+ }
108
+ ```
109
+
110
+ Available methods and state include:
111
+
112
+ - `goNext()`
113
+ - `goPrevious()`
114
+ - `goToLocation(cfi)`
115
+ - `changeTheme(theme)`
116
+ - `changeFontSize(fontSize)` (example: `"12pt"`)
117
+ - `injectJavascript(script)`
118
+ - `progress`, `currentLocation`, `locations`, `meta`, `atStart`, `atEnd`, `fontSize`
20
119
 
21
- const result = multiply(3, 7);
120
+ ## Theming
121
+
122
+ Theme shape:
123
+
124
+ ```ts
125
+ type Theme = {
126
+ [selector: string]: {
127
+ [cssProperty: string]: string;
128
+ };
129
+ };
22
130
  ```
23
131
 
132
+ Example:
133
+
134
+ ```ts
135
+ const darkTheme = {
136
+ body: { background: '#111' },
137
+ p: { color: '#f5f5f5' },
138
+ h1: { color: '#ffffff' },
139
+ a: { color: '#7cc7ff' },
140
+ };
141
+ ```
142
+
143
+ Then call `changeTheme(darkTheme)` through `ReaderContext`.
144
+
145
+ ## Notes and Limitations
146
+
147
+ - `src` should point to an accessible remote `.epub` URL.
148
+ - The reader internally caches files in `expo-file-system` document storage.
149
+ - Internal WebView event names are consumed by the library; `onWebViewMessage` receives non-internal/custom events only.
150
+
151
+ ## Troubleshooting
152
+
153
+ ### Book does not render
154
+
155
+ - Verify that `src` is a valid `.epub` URL.
156
+ - Ensure network access and CORS/server rules allow download.
157
+ - Confirm `react-native-webview` and `expo-file-system` are installed.
158
+
159
+ ### Gestures do not work
160
+
161
+ - Confirm `react-native-gesture-handler` is installed and configured in your app entrypoint.
162
+
163
+ ### Loading never ends
164
+
165
+ - Check Metro/device logs for WebView or file system errors.
166
+ - Verify the downloaded file is not blocked or corrupted.
167
+
168
+ ## Example App
169
+
170
+ This repository includes a working app in [example](example) showing minimal integration.
24
171
 
25
172
  ## Contributing
26
173
 
@@ -31,7 +178,3 @@ const result = multiply(3, 7);
31
178
  ## License
32
179
 
33
180
  MIT
34
-
35
- ---
36
-
37
- Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -12,6 +12,7 @@ import WebView from 'react-native-webview';
12
12
  import GestureHandler from "./GestureHandler/index.js";
13
13
  import { defaultTheme as initialTheme } from "../constants/theme.js";
14
14
  import { ReaderContext } from "../context/ReaderContext.js";
15
+ import INTERNAL_EVENTS from "../constants/internalEvents.js";
15
16
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
17
  const Reader = ({
17
18
  src,
@@ -24,9 +25,11 @@ const Reader = ({
24
25
  onFinish = () => {},
25
26
  onBeginning = () => {},
26
27
  onPinch = () => {},
27
- LoaderComponent
28
+ LoaderComponent,
29
+ onWebViewMessage
28
30
  }) => {
29
31
  const [templateUri, setTemplateUri] = useState('');
32
+ const [isReaderReady, setIsReaderReady] = useState(false);
30
33
  const {
31
34
  registerBook,
32
35
  goNext,
@@ -49,7 +52,17 @@ const Reader = ({
49
52
  } = useInjectWebViewVariables();
50
53
  const bookRef = useRef(null);
51
54
  const onMessage = event => {
52
- const parsedEvent = JSON.parse(event.nativeEvent.data);
55
+ let parsedEvent;
56
+ try {
57
+ parsedEvent = JSON.parse(event.nativeEvent.data);
58
+ } catch (error) {
59
+ console.warn('Failed to parse WebView message:', error);
60
+ return;
61
+ }
62
+ console.log(parsedEvent.type);
63
+ if (!INTERNAL_EVENTS.includes(parsedEvent?.type) && onWebViewMessage) {
64
+ return onWebViewMessage(parsedEvent);
65
+ }
53
66
  switch (parsedEvent.type) {
54
67
  case 'onLocationChange':
55
68
  const {
@@ -83,10 +96,16 @@ const Reader = ({
83
96
  setProgress(props.progress);
84
97
  return onLocationsReady(props.epubKey, parsedEvent.locations);
85
98
  case 'onReady':
99
+ setIsReaderReady(true);
100
+ setIsLoading(false);
86
101
  if (initialLocation) {
87
102
  goToLocation(initialLocation);
88
103
  }
89
104
  break;
105
+ case 'onDisplayError':
106
+ setIsLoading(false);
107
+ console.error('Reader display error:', parsedEvent.reason);
108
+ break;
90
109
  case 'onBeginning':
91
110
  setAtStart(true);
92
111
  return onBeginning();
@@ -101,14 +120,17 @@ const Reader = ({
101
120
  onTap?.();
102
121
  };
103
122
  const handleOnSwipeLeft = () => {
123
+ if (!isReaderReady) return;
104
124
  onSwipeLeft?.();
105
125
  goNext();
106
126
  };
107
127
  const handleOnSwipeRight = () => {
128
+ if (!isReaderReady) return;
108
129
  onSwipeRight?.();
109
130
  goPrevious();
110
131
  };
111
132
  const handleOnPinch = e => {
133
+ if (!isReaderReady) return;
112
134
  const fontSizeValue = parseInt(fontSize.replace('pt', ''), 10);
113
135
  const scaleValue = e.scale > 1 ? e.scale * 0.5 : e.scale;
114
136
  const newFontSize = fontSizeValue * scaleValue;
@@ -129,6 +151,8 @@ const Reader = ({
129
151
  const prepareReader = async () => {
130
152
  try {
131
153
  setIsLoading(true);
154
+ setIsReaderReady(false);
155
+ setTemplateUri('');
132
156
  const [, jszip, epubjs] = await loadScripts();
133
157
  if (!jszip || !epubjs) throw new Error('Failed to load scripts');
134
158
  const localEpubUri = await downloadEpub(src, epubFileName);
@@ -146,8 +170,9 @@ const Reader = ({
146
170
  }
147
171
  } catch (error) {
148
172
  console.error('Reader Error:', error);
149
- } finally {
150
- if (isMounted) setIsLoading(false);
173
+ if (isMounted) {
174
+ setIsLoading(false);
175
+ }
151
176
  }
152
177
  };
153
178
  prepareReader();
@@ -155,7 +180,7 @@ const Reader = ({
155
180
  isMounted = false;
156
181
  };
157
182
  }, [src, htmlTemplateName, epubFileName, injectWebViewVariables, setIsLoading]);
158
- if (isLoading) {
183
+ if (isLoading || !templateUri) {
159
184
  return LoaderComponent ? /*#__PURE__*/_jsx(LoaderComponent, {}) : /*#__PURE__*/_jsxs(View, {
160
185
  style: styles.loaderContainer,
161
186
  children: [/*#__PURE__*/_jsx(ActivityIndicator, {
@@ -1 +1 @@
1
- {"version":3,"names":["View","Text","ActivityIndicator","StyleSheet","SourceType","useCallback","useContext","useEffect","useMemo","useRef","useState","loadScripts","saveTemplateToFile","downloadEpub","Paths","useInjectWebViewVariables","WebView","GestureHandler","defaultTheme","initialTheme","ReaderContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Reader","src","onTap","onSwipeLeft","onSwipeRight","initialLocation","onLocationsReady","onLocationChange","onFinish","onBeginning","onPinch","LoaderComponent","templateUri","setTemplateUri","registerBook","goNext","goPrevious","setMeta","setLocations","setTotalLocations","setCurrentLocation","setProgress","goToLocation","setAtEnd","setAtStart","fontSize","changeFontSize","setIsLoading","isLoading","injectWebViewVariables","bookRef","onMessage","event","parsedEvent","JSON","parse","nativeEvent","data","type","totalLocations","currentLocation","progress","currentSection","atStart","atEnd","metadata","props","locations","epubKey","console","warn","handleOnTap","handleOnSwipeLeft","handleOnSwipeRight","handleOnPinch","e","fontSizeValue","parseInt","replace","scaleValue","scale","newFontSize","clampedFontSize","Math","min","max","htmlTemplateName","split","pop","epubFileName","handleBookRef","instance","current","isMounted","prepareReader","jszip","epubjs","Error","localEpubUri","generatedTemplate","EPUB","allowScriptedContent","book","theme","uri","error","style","styles","loaderContainer","children","size","pointerEvents","ref","source","showsVerticalScrollIndicator","javaScriptEnabled","originWhitelist","scrollEnabled","mixedContentMode","allowingReadAccessToURL","document","allowUniversalAccessFromFileURLs","allowFileAccessFromFileURLs","allowFileAccess","javaScriptCanOpenWindowsAutomatically","container","create","flex","justifyContent","alignItems"],"sourceRoot":"../../../src","sources":["components/Reader.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,UAAU,QAAQ,cAAc;AACxE,SAASC,UAAU,QAA0B,mBAAU;AACvD,SACEC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,WAAW,QAAQ,2BAAwB;AACpD,SAASC,kBAAkB,QAAQ,kCAA+B;AAClE,SAASC,YAAY,QAAQ,4BAAyB;AACtD,SAASC,KAAK,QAAQ,kBAAkB;AACxC,SAASC,yBAAyB,QAAQ,uCAAoC;AAC9E,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,OAAOC,cAAc,MAAM,2BAAkB;AAC7C,SAASC,YAAY,IAAIC,YAAY,QAAQ,uBAAoB;AACjE,SAASC,aAAa,QAAQ,6BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAMzD,MAAMC,MAAM,GAAGA,CAAC;EACdC,GAAG;EACHC,KAAK;EACLC,WAAW;EACXC,YAAY;EACZC,eAAe;EACfC,gBAAgB,GAAGA,CAAA,KAAM,CAAC,CAAC;EAC3BC,gBAAgB,GAAGA,CAAA,KAAM,CAAC,CAAC;EAC3BC,QAAQ,GAAGA,CAAA,KAAM,CAAC,CAAC;EACnBC,WAAW,GAAGA,CAAA,KAAM,CAAC,CAAC;EACtBC,OAAO,GAAGA,CAAA,KAAM,CAAC,CAAC;EAClBC;AACW,CAAC,KAAK;EACjB,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG9B,QAAQ,CAAS,EAAE,CAAC;EAE1D,MAAM;IACJ+B,YAAY;IACZC,MAAM;IACNC,UAAU;IACVC,OAAO;IACPC,YAAY;IACZC,iBAAiB;IACjBC,kBAAkB;IAClBC,WAAW;IACXC,YAAY;IACZC,QAAQ;IACRC,UAAU;IACVC,QAAQ;IACRC,cAAc;IACdC,YAAY;IACZC;EACF,CAAC,GAAGjD,UAAU,CAACc,aAAa,CAAC;EAE7B,MAAM;IAAEoC;EAAuB,CAAC,GAAGzC,yBAAyB,CAAC,CAAC;EAC9D,MAAM0C,OAAO,GAAGhD,MAAM,CAAiB,IAAI,CAAC;EAE5C,MAAMiD,SAAS,GAAIC,KAAU,IAAK;IAChC,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACH,KAAK,CAACI,WAAW,CAACC,IAAI,CAAC;IAEtD,QAAQJ,WAAW,CAACK,IAAI;MACtB,KAAK,kBAAkB;QACrB,MAAM;UAAEC,cAAc;UAAEC,eAAe;UAAEC,QAAQ;UAAEC;QAAe,CAAC,GACjET,WAAW;QAEb,IAAIO,eAAe,CAACG,OAAO,EAAEnB,UAAU,CAAC,IAAI,CAAC,CAAC,KACzC,IAAIgB,eAAe,CAACI,KAAK,EAAErB,QAAQ,CAAC,IAAI,CAAC,CAAC,KAC1C;UACHC,UAAU,CAAC,KAAK,CAAC;UACjBD,QAAQ,CAAC,KAAK,CAAC;QACjB;QAEAhB,gBAAgB,GAAG;UACjBgC,cAAc;UACdC,eAAe;UACfC,QAAQ;UACRC;QACF,CAAC,CAAC;QACF;MACF,KAAK,MAAM;QACT,MAAM;UAAEG;QAAS,CAAC,GAAGZ,WAAW;QAChChB,OAAO,CAAC4B,QAAQ,CAAC;QACjB;MACF,KAAK,kBAAkB;QACrB,MAAMC,KAAK,GAAGb,WAAW;QACzBf,YAAY,CAACe,WAAW,CAACc,SAAS,CAAC;QACnC5B,iBAAiB,CAAC2B,KAAK,CAACP,cAAc,CAAC;QACvCnB,kBAAkB,CAAC0B,KAAK,CAACN,eAAe,CAAC;QACzCnB,WAAW,CAACyB,KAAK,CAACL,QAAQ,CAAC;QAE3B,OAAOnC,gBAAgB,CAACwC,KAAK,CAACE,OAAO,EAAEf,WAAW,CAACc,SAAS,CAAC;MAC/D,KAAK,SAAS;QACZ,IAAI1C,eAAe,EAAE;UACnBiB,YAAY,CAACjB,eAAe,CAAC;QAC/B;QACA;MAEF,KAAK,aAAa;QAChBmB,UAAU,CAAC,IAAI,CAAC;QAEhB,OAAOf,WAAW,CAAC,CAAC;MAEtB,KAAK,UAAU;QACbc,QAAQ,CAAC,IAAI,CAAC;QAEd,OAAOf,QAAQ,CAAC,CAAC;MAEnB;QACEyC,OAAO,CAACC,IAAI,CAAC,uBAAuB,EAAEjB,WAAW,CAACK,IAAI,CAAC;IAC3D;EACF,CAAC;EAED,MAAMa,WAAW,GAAGA,CAAA,KAAM;IACxBjD,KAAK,GAAG,CAAC;EACX,CAAC;EAED,MAAMkD,iBAAiB,GAAGA,CAAA,KAAM;IAC9BjD,WAAW,GAAG,CAAC;IACfY,MAAM,CAAC,CAAC;EACV,CAAC;EAED,MAAMsC,kBAAkB,GAAGA,CAAA,KAAM;IAC/BjD,YAAY,GAAG,CAAC;IAChBY,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMsC,aAAa,GACjBC,CAAsD,IACnD;IACH,MAAMC,aAAa,GAAGC,QAAQ,CAAChC,QAAQ,CAACiC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAE9D,MAAMC,UAAU,GAAGJ,CAAC,CAACK,KAAK,GAAG,CAAC,GAAGL,CAAC,CAACK,KAAK,GAAG,GAAG,GAAGL,CAAC,CAACK,KAAK;IAExD,MAAMC,WAAW,GAAGL,aAAa,GAAGG,UAAU;IAE9C,MAAMG,eAAe,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9DnC,cAAc,CAAC,GAAGoC,eAAe,IAAI,CAAC;IACtCpD,OAAO,GAAG6C,CAAC,CAAC;EACd,CAAC;EAED,MAAMW,gBAAgB,GAAGrF,OAAO,CAC9B,MAAMoB,GAAG,CAACkE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,EAAEV,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,YAAY,EACrE,CAACzD,GAAG,CACN,CAAC;EAED,MAAMoE,YAAY,GAAGxF,OAAO,CAC1B,MAAMoB,GAAG,CAACkE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI,WAAW,EACzC,CAACnE,GAAG,CACN,CAAC;EAED,MAAMqE,aAAa,GAAG5F,WAAW,CAC9B6F,QAAwB,IAAK;IAC5BzC,OAAO,CAAC0C,OAAO,GAAGD,QAAQ;IAC1B,IAAIA,QAAQ,EAAE;MACZzD,YAAY,CAACyD,QAAQ,CAAC;IACxB;EACF,CAAC,EACD,CAACzD,YAAY,CACf,CAAC;EAEDlC,SAAS,CAAC,MAAM;IACd,IAAI6F,SAAS,GAAG,IAAI;IAEpB,MAAMC,aAAa,GAAG,MAAAA,CAAA,KAAY;MAChC,IAAI;QACF/C,YAAY,CAAC,IAAI,CAAC;QAElB,MAAM,GAAGgD,KAAK,EAAEC,MAAM,CAAC,GAAG,MAAM5F,WAAW,CAAC,CAAC;QAE7C,IAAI,CAAC2F,KAAK,IAAI,CAACC,MAAM,EAAE,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;QAEhE,MAAMC,YAAY,GAAG,MAAM5F,YAAY,CAACe,GAAG,EAAEoE,YAAY,CAAC;QAE1D,MAAMU,iBAAiB,GAAGlD,sBAAsB,CAAC;UAC/C8C,KAAK;UACLC,MAAM;UACNtC,IAAI,EAAE7D,UAAU,CAACuG,IAAI;UACrBC,oBAAoB,EAAE,IAAI;UAC1BC,IAAI,EAAEJ,YAAY;UAClBK,KAAK,EAAE3F;QACT,CAAC,CAAC;QAEF,MAAM4F,GAAG,GAAGnG,kBAAkB,CAAC8F,iBAAiB,EAAEb,gBAAgB,CAAC;QAEnE,IAAIO,SAAS,EAAE;UACb5D,cAAc,CAACuE,GAAG,CAAC;QACrB;MACF,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdpC,OAAO,CAACoC,KAAK,CAAC,eAAe,EAAEA,KAAK,CAAC;MACvC,CAAC,SAAS;QACR,IAAIZ,SAAS,EAAE9C,YAAY,CAAC,KAAK,CAAC;MACpC;IACF,CAAC;IAED+C,aAAa,CAAC,CAAC;IACf,OAAO,MAAM;MACXD,SAAS,GAAG,KAAK;IACnB,CAAC;EACH,CAAC,EAAE,CACDxE,GAAG,EACHiE,gBAAgB,EAChBG,YAAY,EACZxC,sBAAsB,EACtBF,YAAY,CACb,CAAC;EAEF,IAAIC,SAAS,EAAE;IACb,OAAOjB,eAAe,gBACpBhB,IAAA,CAACgB,eAAe,IAAE,CAAC,gBAEnBd,KAAA,CAACxB,IAAI;MAACiH,KAAK,EAAEC,MAAM,CAACC,eAAgB;MAAAC,QAAA,gBAClC9F,IAAA,CAACpB,iBAAiB;QAACmH,IAAI,EAAC;MAAO,CAAE,CAAC,eAClC/F,IAAA,CAACrB,IAAI;QAAAmH,QAAA,EAAC;MAAuB,CAAM,CAAC;IAAA,CAChC,CACP;EACH;EAEA,oBACE9F,IAAA,CAAAI,SAAA;IAAA0F,QAAA,eACE9F,IAAA,CAACL,cAAc;MACba,WAAW,EAAEiD,iBAAkB;MAC/BhD,YAAY,EAAEiD,kBAAmB;MACjCnD,KAAK,EAAEiD,WAAY;MACnBzC,OAAO,EAAE4C,aAAc;MAAAmC,QAAA,eAEvB9F,IAAA,CAACN,OAAO;QACNsG,aAAa,EAAC,MAAM;QACpBC,GAAG,EAAEtB,aAAc;QACnBuB,MAAM,EAAE;UAAET,GAAG,EAAExE;QAAY,CAAE;QAC7BkF,4BAA4B,EAAE,KAAM;QACpCC,iBAAiB;QACjBC,eAAe,EAAE,CAAC,GAAG,CAAE;QACvBC,aAAa,EAAE,KAAM;QACrBC,gBAAgB,EAAC,eAAe;QAChCC,uBAAuB,EAAEhH,KAAK,CAACiH,QAAQ,CAAChB,GAAI;QAC5CiB,gCAAgC;QAChCC,2BAA2B;QAC3BC,eAAe;QACfC,qCAAqC;QACrCzE,SAAS,EAAEA,SAAU;QACrBuD,KAAK,EAAEC,MAAM,CAACkB;MAAU,CACzB;IAAC,CACY;EAAC,CACjB,CAAC;AAEP,CAAC;AAED,MAAMlB,MAAM,GAAG/G,UAAU,CAACkI,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE;EACR,CAAC;EACDnB,eAAe,EAAE;IACfmB,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,eAAe7G,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["View","Text","ActivityIndicator","StyleSheet","SourceType","useCallback","useContext","useEffect","useMemo","useRef","useState","loadScripts","saveTemplateToFile","downloadEpub","Paths","useInjectWebViewVariables","WebView","GestureHandler","defaultTheme","initialTheme","ReaderContext","INTERNAL_EVENTS","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Reader","src","onTap","onSwipeLeft","onSwipeRight","initialLocation","onLocationsReady","onLocationChange","onFinish","onBeginning","onPinch","LoaderComponent","onWebViewMessage","templateUri","setTemplateUri","isReaderReady","setIsReaderReady","registerBook","goNext","goPrevious","setMeta","setLocations","setTotalLocations","setCurrentLocation","setProgress","goToLocation","setAtEnd","setAtStart","fontSize","changeFontSize","setIsLoading","isLoading","injectWebViewVariables","bookRef","onMessage","event","parsedEvent","JSON","parse","nativeEvent","data","error","console","warn","log","type","includes","totalLocations","currentLocation","progress","currentSection","atStart","atEnd","metadata","props","locations","epubKey","reason","handleOnTap","handleOnSwipeLeft","handleOnSwipeRight","handleOnPinch","e","fontSizeValue","parseInt","replace","scaleValue","scale","newFontSize","clampedFontSize","Math","min","max","htmlTemplateName","split","pop","epubFileName","handleBookRef","instance","current","isMounted","prepareReader","jszip","epubjs","Error","localEpubUri","generatedTemplate","EPUB","allowScriptedContent","book","theme","uri","style","styles","loaderContainer","children","size","pointerEvents","ref","source","showsVerticalScrollIndicator","javaScriptEnabled","originWhitelist","scrollEnabled","mixedContentMode","allowingReadAccessToURL","document","allowUniversalAccessFromFileURLs","allowFileAccessFromFileURLs","allowFileAccess","javaScriptCanOpenWindowsAutomatically","container","create","flex","justifyContent","alignItems"],"sourceRoot":"../../../src","sources":["components/Reader.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ const INTERNAL_EVENTS = ['meta', 'onStarted', 'onReady', 'onDisplayError', 'onResized', 'onLocationChange', 'onSearch', 'onLocationsReady', 'onSelected', 'onOrientationChange', 'onBeginning', 'onFinish', 'onRendered', 'onLayout', 'onNavigationLoaded', 'onAddAnnotation', 'onChangeAnnotations', 'onSetInitialAnnotations', 'onPressAnnotation', 'onAddBookmark', 'onRemoveBookmark', 'onRemoveBookmarks', 'onUpdateBookmark'];
4
+ export default INTERNAL_EVENTS;
5
+ //# sourceMappingURL=internalEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["INTERNAL_EVENTS"],"sourceRoot":"../../../src","sources":["constants/internalEvents.ts"],"mappings":";;AAAA,MAAMA,eAAe,GAAG,CACtB,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,CACnB;AAED,eAAeA,eAAe","ignoreList":[]}