react-native-simple-epub-reader 0.1.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/LICENSE +20 -0
- package/README.md +37 -0
- package/lib/module/components/GestureHandler/index.js +39 -0
- package/lib/module/components/GestureHandler/index.js.map +1 -0
- package/lib/module/components/Reader.js +207 -0
- package/lib/module/components/Reader.js.map +1 -0
- package/lib/module/constants/template.js +402 -0
- package/lib/module/constants/template.js.map +1 -0
- package/lib/module/constants/theme.js +43 -0
- package/lib/module/constants/theme.js.map +1 -0
- package/lib/module/context/ReaderContext.js +213 -0
- package/lib/module/context/ReaderContext.js.map +1 -0
- package/lib/module/context/types.js +4 -0
- package/lib/module/context/types.js.map +1 -0
- package/lib/module/helpers/downloadEpub.js +17 -0
- package/lib/module/helpers/downloadEpub.js.map +1 -0
- package/lib/module/helpers/loadScripts.js +21 -0
- package/lib/module/helpers/loadScripts.js.map +1 -0
- package/lib/module/helpers/saveTemplateToFile.js +21 -0
- package/lib/module/helpers/saveTemplateToFile.js.map +1 -0
- package/lib/module/helpers/webViewInjectFunctions.js +14 -0
- package/lib/module/helpers/webViewInjectFunctions.js.map +1 -0
- package/lib/module/hooks/useInjectWebviewVariables.js +20 -0
- package/lib/module/hooks/useInjectWebviewVariables.js.map +1 -0
- package/lib/module/hooks/useReaderState.js +117 -0
- package/lib/module/hooks/useReaderState.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/scripts/epub.js +14326 -0
- package/lib/module/scripts/epub.js.map +1 -0
- package/lib/module/scripts/jszip.js +6646 -0
- package/lib/module/scripts/jszip.js.map +1 -0
- package/lib/module/types/index.js +14 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/state.types.js +23 -0
- package/lib/module/types/state.types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/components/GestureHandler/index.d.ts +5 -0
- package/lib/typescript/src/components/GestureHandler/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Reader.d.ts +4 -0
- package/lib/typescript/src/components/Reader.d.ts.map +1 -0
- package/lib/typescript/src/constants/template.d.ts +3 -0
- package/lib/typescript/src/constants/template.d.ts.map +1 -0
- package/lib/typescript/src/constants/theme.d.ts +3 -0
- package/lib/typescript/src/constants/theme.d.ts.map +1 -0
- package/lib/typescript/src/context/ReaderContext.d.ts +7 -0
- package/lib/typescript/src/context/ReaderContext.d.ts.map +1 -0
- package/lib/typescript/src/context/types.d.ts +60 -0
- package/lib/typescript/src/context/types.d.ts.map +1 -0
- package/lib/typescript/src/helpers/downloadEpub.d.ts +2 -0
- package/lib/typescript/src/helpers/downloadEpub.d.ts.map +1 -0
- package/lib/typescript/src/helpers/loadScripts.d.ts +2 -0
- package/lib/typescript/src/helpers/loadScripts.d.ts.map +1 -0
- package/lib/typescript/src/helpers/saveTemplateToFile.d.ts +3 -0
- package/lib/typescript/src/helpers/saveTemplateToFile.d.ts.map +1 -0
- package/lib/typescript/src/helpers/webViewInjectFunctions.d.ts +4 -0
- package/lib/typescript/src/helpers/webViewInjectFunctions.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useInjectWebviewVariables.d.ts +12 -0
- package/lib/typescript/src/hooks/useInjectWebviewVariables.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useReaderState.d.ts +6 -0
- package/lib/typescript/src/hooks/useReaderState.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/scripts/epub.d.ts +3 -0
- package/lib/typescript/src/scripts/epub.d.ts.map +1 -0
- package/lib/typescript/src/scripts/jszip.d.ts +3 -0
- package/lib/typescript/src/scripts/jszip.d.ts.map +1 -0
- package/lib/typescript/src/types/index.d.ts +72 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -0
- package/lib/typescript/src/types/state.types.d.ts +83 -0
- package/lib/typescript/src/types/state.types.d.ts.map +1 -0
- package/package.json +171 -0
- package/src/components/GestureHandler/index.tsx +63 -0
- package/src/components/Reader.tsx +262 -0
- package/src/constants/template.ts +399 -0
- package/src/constants/theme.ts +42 -0
- package/src/context/ReaderContext.tsx +265 -0
- package/src/context/types.ts +62 -0
- package/src/helpers/downloadEpub.ts +21 -0
- package/src/helpers/loadScripts.ts +22 -0
- package/src/helpers/saveTemplateToFile.ts +20 -0
- package/src/helpers/webViewInjectFunctions.ts +18 -0
- package/src/hooks/useInjectWebviewVariables.ts +51 -0
- package/src/hooks/useReaderState.ts +118 -0
- package/src/index.tsx +3 -0
- package/src/scripts/epub.ts +14323 -0
- package/src/scripts/jszip.ts +6643 -0
- package/src/types/index.ts +83 -0
- package/src/types/state.types.ts +86 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Marcin Radzik
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# react-native-simple-epub-reader
|
|
2
|
+
|
|
3
|
+
Simple ePub renderer for React Native
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm install react-native-simple-epub-reader
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
import { multiply } from 'react-native-simple-epub-reader';
|
|
18
|
+
|
|
19
|
+
// ...
|
|
20
|
+
|
|
21
|
+
const result = multiply(3, 7);
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Contributing
|
|
26
|
+
|
|
27
|
+
- [Development workflow](CONTRIBUTING.md#development-workflow)
|
|
28
|
+
- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)
|
|
29
|
+
- [Code of conduct](CODE_OF_CONDUCT.md)
|
|
30
|
+
|
|
31
|
+
## License
|
|
32
|
+
|
|
33
|
+
MIT
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Directions, Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const GestureHandler = ({
|
|
6
|
+
children,
|
|
7
|
+
onSwipeLeft,
|
|
8
|
+
onSwipeRight,
|
|
9
|
+
onTap,
|
|
10
|
+
onPinch
|
|
11
|
+
}) => {
|
|
12
|
+
const swipeLeftGesture = Gesture.Fling().runOnJS(true).direction(Directions.LEFT).onEnd(() => {
|
|
13
|
+
onSwipeLeft?.();
|
|
14
|
+
});
|
|
15
|
+
const swipeRightGesture = Gesture.Fling().runOnJS(true).direction(Directions.RIGHT).onEnd(() => {
|
|
16
|
+
onSwipeRight?.();
|
|
17
|
+
});
|
|
18
|
+
const tapGesture = Gesture.Tap().runOnJS(true).maxDuration(250).onStart(() => {
|
|
19
|
+
onTap?.();
|
|
20
|
+
});
|
|
21
|
+
const pinchGesture = Gesture.Pinch().runOnJS(true).onUpdate(e => {
|
|
22
|
+
onPinch?.(e);
|
|
23
|
+
});
|
|
24
|
+
const combinedGesture = Gesture.Race(Gesture.Exclusive(swipeLeftGesture, swipeRightGesture), tapGesture, pinchGesture);
|
|
25
|
+
return /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
26
|
+
style: styles.container,
|
|
27
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
28
|
+
gesture: combinedGesture,
|
|
29
|
+
children: children
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const styles = {
|
|
34
|
+
container: {
|
|
35
|
+
flex: 1
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
export default GestureHandler;
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Directions","Gesture","GestureDetector","GestureHandlerRootView","jsx","_jsx","GestureHandler","children","onSwipeLeft","onSwipeRight","onTap","onPinch","swipeLeftGesture","Fling","runOnJS","direction","LEFT","onEnd","swipeRightGesture","RIGHT","tapGesture","Tap","maxDuration","onStart","pinchGesture","Pinch","onUpdate","e","combinedGesture","Race","Exclusive","style","styles","container","gesture","flex"],"sourceRoot":"../../../../src","sources":["components/GestureHandler/index.tsx"],"mappings":";;AAEA,SACEA,UAAU,EACVC,OAAO,EACPC,eAAe,EACfC,sBAAsB,QACjB,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,MAAMC,cAA0D,GAAGA,CAAC;EAClEC,QAAQ;EACRC,WAAW;EACXC,YAAY;EACZC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,gBAAgB,GAAGX,OAAO,CAACY,KAAK,CAAC,CAAC,CACrCC,OAAO,CAAC,IAAI,CAAC,CACbC,SAAS,CAACf,UAAU,CAACgB,IAAI,CAAC,CAC1BC,KAAK,CAAC,MAAM;IACXT,WAAW,GAAG,CAAC;EACjB,CAAC,CAAC;EAEJ,MAAMU,iBAAiB,GAAGjB,OAAO,CAACY,KAAK,CAAC,CAAC,CACtCC,OAAO,CAAC,IAAI,CAAC,CACbC,SAAS,CAACf,UAAU,CAACmB,KAAK,CAAC,CAC3BF,KAAK,CAAC,MAAM;IACXR,YAAY,GAAG,CAAC;EAClB,CAAC,CAAC;EAEJ,MAAMW,UAAU,GAAGnB,OAAO,CAACoB,GAAG,CAAC,CAAC,CAC7BP,OAAO,CAAC,IAAI,CAAC,CACbQ,WAAW,CAAC,GAAG,CAAC,CAChBC,OAAO,CAAC,MAAM;IACbb,KAAK,GAAG,CAAC;EACX,CAAC,CAAC;EAEJ,MAAMc,YAAY,GAAGvB,OAAO,CAACwB,KAAK,CAAC,CAAC,CACjCX,OAAO,CAAC,IAAI,CAAC,CACbY,QAAQ,CAAEC,CAAC,IAAK;IACfhB,OAAO,GAAGgB,CAAC,CAAC;EACd,CAAC,CAAC;EAEJ,MAAMC,eAAe,GAAG3B,OAAO,CAAC4B,IAAI,CAClC5B,OAAO,CAAC6B,SAAS,CAAClB,gBAAgB,EAAEM,iBAAiB,CAAC,EACtDE,UAAU,EACVI,YACF,CAAC;EACD,oBACEnB,IAAA,CAACF,sBAAsB;IAAC4B,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAA1B,QAAA,eAC9CF,IAAA,CAACH,eAAe;MAACgC,OAAO,EAAEN,eAAgB;MAAArB,QAAA,EAAEA;IAAQ,CAAkB;EAAC,CACjD,CAAC;AAE7B,CAAC;AAED,MAAMyB,MAAM,GAAG;EACbC,SAAS,EAAE;IACTE,IAAI,EAAE;EACR;AACF,CAAC;AAED,eAAe7B,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { View, Text, ActivityIndicator, StyleSheet } from 'react-native';
|
|
4
|
+
import { SourceType } from "../types/index.js";
|
|
5
|
+
import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
|
+
import { loadScripts } from "../helpers/loadScripts.js";
|
|
7
|
+
import { saveTemplateToFile } from "../helpers/saveTemplateToFile.js";
|
|
8
|
+
import { downloadEpub } from "../helpers/downloadEpub.js";
|
|
9
|
+
import { Paths } from 'expo-file-system';
|
|
10
|
+
import { useInjectWebViewVariables } from "../hooks/useInjectWebviewVariables.js";
|
|
11
|
+
import WebView from 'react-native-webview';
|
|
12
|
+
import GestureHandler from "./GestureHandler/index.js";
|
|
13
|
+
import { defaultTheme as initialTheme } from "../constants/theme.js";
|
|
14
|
+
import { ReaderContext } from "../context/ReaderContext.js";
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
|
+
const Reader = ({
|
|
17
|
+
src,
|
|
18
|
+
onTap,
|
|
19
|
+
onSwipeLeft,
|
|
20
|
+
onSwipeRight,
|
|
21
|
+
initialLocation,
|
|
22
|
+
onLocationsReady = () => {},
|
|
23
|
+
onLocationChange = () => {},
|
|
24
|
+
onFinish = () => {},
|
|
25
|
+
onBeginning = () => {},
|
|
26
|
+
onPinch = () => {},
|
|
27
|
+
LoaderComponent
|
|
28
|
+
}) => {
|
|
29
|
+
const [templateUri, setTemplateUri] = useState('');
|
|
30
|
+
const {
|
|
31
|
+
registerBook,
|
|
32
|
+
goNext,
|
|
33
|
+
goPrevious,
|
|
34
|
+
setMeta,
|
|
35
|
+
setLocations,
|
|
36
|
+
setTotalLocations,
|
|
37
|
+
setCurrentLocation,
|
|
38
|
+
setProgress,
|
|
39
|
+
goToLocation,
|
|
40
|
+
setAtEnd,
|
|
41
|
+
setAtStart,
|
|
42
|
+
fontSize,
|
|
43
|
+
changeFontSize,
|
|
44
|
+
setIsLoading,
|
|
45
|
+
isLoading
|
|
46
|
+
} = useContext(ReaderContext);
|
|
47
|
+
const {
|
|
48
|
+
injectWebViewVariables
|
|
49
|
+
} = useInjectWebViewVariables();
|
|
50
|
+
const bookRef = useRef(null);
|
|
51
|
+
const onMessage = event => {
|
|
52
|
+
const parsedEvent = JSON.parse(event.nativeEvent.data);
|
|
53
|
+
switch (parsedEvent.type) {
|
|
54
|
+
case 'onLocationChange':
|
|
55
|
+
const {
|
|
56
|
+
totalLocations,
|
|
57
|
+
currentLocation,
|
|
58
|
+
progress,
|
|
59
|
+
currentSection
|
|
60
|
+
} = parsedEvent;
|
|
61
|
+
if (currentLocation.atStart) setAtStart(true);else if (currentLocation.atEnd) setAtEnd(true);else {
|
|
62
|
+
setAtStart(false);
|
|
63
|
+
setAtEnd(false);
|
|
64
|
+
}
|
|
65
|
+
onLocationChange?.({
|
|
66
|
+
totalLocations,
|
|
67
|
+
currentLocation,
|
|
68
|
+
progress,
|
|
69
|
+
currentSection
|
|
70
|
+
});
|
|
71
|
+
break;
|
|
72
|
+
case 'meta':
|
|
73
|
+
const {
|
|
74
|
+
metadata
|
|
75
|
+
} = parsedEvent;
|
|
76
|
+
setMeta(metadata);
|
|
77
|
+
break;
|
|
78
|
+
case 'onLocationsReady':
|
|
79
|
+
const props = parsedEvent;
|
|
80
|
+
setLocations(parsedEvent.locations);
|
|
81
|
+
setTotalLocations(props.totalLocations);
|
|
82
|
+
setCurrentLocation(props.currentLocation);
|
|
83
|
+
setProgress(props.progress);
|
|
84
|
+
return onLocationsReady(props.epubKey, parsedEvent.locations);
|
|
85
|
+
case 'onReady':
|
|
86
|
+
if (initialLocation) {
|
|
87
|
+
goToLocation(initialLocation);
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
case 'onBeginning':
|
|
91
|
+
setAtStart(true);
|
|
92
|
+
return onBeginning();
|
|
93
|
+
case 'onFinish':
|
|
94
|
+
setAtEnd(true);
|
|
95
|
+
return onFinish();
|
|
96
|
+
default:
|
|
97
|
+
console.warn('Unknown message type:', parsedEvent.type);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const handleOnTap = () => {
|
|
101
|
+
onTap?.();
|
|
102
|
+
};
|
|
103
|
+
const handleOnSwipeLeft = () => {
|
|
104
|
+
onSwipeLeft?.();
|
|
105
|
+
goNext();
|
|
106
|
+
};
|
|
107
|
+
const handleOnSwipeRight = () => {
|
|
108
|
+
onSwipeRight?.();
|
|
109
|
+
goPrevious();
|
|
110
|
+
};
|
|
111
|
+
const handleOnPinch = e => {
|
|
112
|
+
const fontSizeValue = parseInt(fontSize.replace('pt', ''), 10);
|
|
113
|
+
const scaleValue = e.scale > 1 ? e.scale * 0.5 : e.scale;
|
|
114
|
+
const newFontSize = fontSizeValue * scaleValue;
|
|
115
|
+
const clampedFontSize = Math.min(Math.max(newFontSize, 6), 32);
|
|
116
|
+
changeFontSize(`${clampedFontSize}pt`);
|
|
117
|
+
onPinch?.(e);
|
|
118
|
+
};
|
|
119
|
+
const htmlTemplateName = useMemo(() => src.split('/').pop()?.replace('.epub', '.html') || 'index.html', [src]);
|
|
120
|
+
const epubFileName = useMemo(() => src.split('/').pop() || 'book.epub', [src]);
|
|
121
|
+
const handleBookRef = useCallback(instance => {
|
|
122
|
+
bookRef.current = instance;
|
|
123
|
+
if (instance) {
|
|
124
|
+
registerBook(instance);
|
|
125
|
+
}
|
|
126
|
+
}, [registerBook]);
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
let isMounted = true;
|
|
129
|
+
const prepareReader = async () => {
|
|
130
|
+
try {
|
|
131
|
+
setIsLoading(true);
|
|
132
|
+
const [, jszip, epubjs] = await loadScripts();
|
|
133
|
+
if (!jszip || !epubjs) throw new Error('Failed to load scripts');
|
|
134
|
+
const localEpubUri = await downloadEpub(src, epubFileName);
|
|
135
|
+
const generatedTemplate = injectWebViewVariables({
|
|
136
|
+
jszip,
|
|
137
|
+
epubjs,
|
|
138
|
+
type: SourceType.EPUB,
|
|
139
|
+
allowScriptedContent: true,
|
|
140
|
+
book: localEpubUri,
|
|
141
|
+
theme: initialTheme
|
|
142
|
+
});
|
|
143
|
+
const uri = saveTemplateToFile(generatedTemplate, htmlTemplateName);
|
|
144
|
+
if (isMounted) {
|
|
145
|
+
setTemplateUri(uri);
|
|
146
|
+
}
|
|
147
|
+
} catch (error) {
|
|
148
|
+
console.error('Reader Error:', error);
|
|
149
|
+
} finally {
|
|
150
|
+
if (isMounted) setIsLoading(false);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
prepareReader();
|
|
154
|
+
return () => {
|
|
155
|
+
isMounted = false;
|
|
156
|
+
};
|
|
157
|
+
}, [src, htmlTemplateName, epubFileName, injectWebViewVariables, setIsLoading]);
|
|
158
|
+
if (isLoading) {
|
|
159
|
+
return LoaderComponent ? /*#__PURE__*/_jsx(LoaderComponent, {}) : /*#__PURE__*/_jsxs(View, {
|
|
160
|
+
style: styles.loaderContainer,
|
|
161
|
+
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
162
|
+
size: "large"
|
|
163
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
164
|
+
children: "Przygotowuj\u0119 ksi\u0105\u017Ck\u0119..."
|
|
165
|
+
})]
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
169
|
+
children: /*#__PURE__*/_jsx(GestureHandler, {
|
|
170
|
+
onSwipeLeft: handleOnSwipeLeft,
|
|
171
|
+
onSwipeRight: handleOnSwipeRight,
|
|
172
|
+
onTap: handleOnTap,
|
|
173
|
+
onPinch: handleOnPinch,
|
|
174
|
+
children: /*#__PURE__*/_jsx(WebView, {
|
|
175
|
+
pointerEvents: "none",
|
|
176
|
+
ref: handleBookRef,
|
|
177
|
+
source: {
|
|
178
|
+
uri: templateUri
|
|
179
|
+
},
|
|
180
|
+
showsVerticalScrollIndicator: false,
|
|
181
|
+
javaScriptEnabled: true,
|
|
182
|
+
originWhitelist: ['*'],
|
|
183
|
+
scrollEnabled: false,
|
|
184
|
+
mixedContentMode: "compatibility",
|
|
185
|
+
allowingReadAccessToURL: Paths.document.uri,
|
|
186
|
+
allowUniversalAccessFromFileURLs: true,
|
|
187
|
+
allowFileAccessFromFileURLs: true,
|
|
188
|
+
allowFileAccess: true,
|
|
189
|
+
javaScriptCanOpenWindowsAutomatically: true,
|
|
190
|
+
onMessage: onMessage,
|
|
191
|
+
style: styles.container
|
|
192
|
+
})
|
|
193
|
+
})
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
const styles = StyleSheet.create({
|
|
197
|
+
container: {
|
|
198
|
+
flex: 1
|
|
199
|
+
},
|
|
200
|
+
loaderContainer: {
|
|
201
|
+
flex: 1,
|
|
202
|
+
justifyContent: 'center',
|
|
203
|
+
alignItems: 'center'
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
export default Reader;
|
|
207
|
+
//# sourceMappingURL=Reader.js.map
|
|
@@ -0,0 +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":"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","ignoreList":[]}
|