@june24/expo-pdf-reader 0.1.22 → 0.1.24
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/android/build.gradle +3 -2
- package/android/src/main/java/expo/modules/pdfreader/ExpoPdfReaderModule.kt +29 -50
- package/android/src/main/java/expo/modules/pdfreader/ExpoPdfReaderView.kt +1134 -886
- package/build/ExpoPdfReader.types.d.ts +7 -0
- package/build/ExpoPdfReader.types.d.ts.map +1 -1
- package/build/ExpoPdfReader.types.js.map +1 -1
- package/ios/ExpoPdfReaderModule.swift +1 -1
- package/ios/ExpoPdfReaderView.swift +10 -0
- package/package.json +1 -1
- package/src/ExpoPdfReader.types.ts +1 -0
|
@@ -38,6 +38,13 @@ export interface ExpoPdfReaderViewProps extends ViewProps {
|
|
|
38
38
|
textItalic?: boolean;
|
|
39
39
|
noteColor?: string;
|
|
40
40
|
initialAnnotations?: AnnotationData[];
|
|
41
|
+
onReady?: (event: {
|
|
42
|
+
nativeEvent: {
|
|
43
|
+
totalPages: number;
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
};
|
|
47
|
+
}) => void;
|
|
41
48
|
onPageChange?: (event: {
|
|
42
49
|
nativeEvent: {
|
|
43
50
|
currentPage: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoPdfReader.types.d.ts","sourceRoot":"","sources":["../src/ExpoPdfReader.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExpoPdfReader.types.d.ts","sourceRoot":"","sources":["../src/ExpoPdfReader.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoPdfReader.types.js","sourceRoot":"","sources":["../src/ExpoPdfReader.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ViewProps, StyleProp, ViewStyle } from 'react-native';\r\n\r\nexport type DisplayMode = 'single' | 'continuous' | 'twoUp' | 'twoUpContinuous';\r\nexport type AnnotationTool = 'pen' | 'highlighter' | 'text' | 'note' | 'eraser' | 'line';\r\n\r\nexport type AnnotationData = {\r\n type: AnnotationTool;\r\n page: number;\r\n bounds: { x: number; y: number; width: number; height: number };\r\n color?: string;\r\n strokeWidth?: number;\r\n paths?: Array<Array<{ x: number; y: number }>>;\r\n contents?: string;\r\n fontSize?: number; // зөвхөн text-д\r\n bold?: boolean; // зөвхөн text-д\r\n italic?: boolean; // зөвхөн text-д\r\n};\r\n\r\nexport interface ExpoPdfReaderViewProps extends ViewProps {\r\n url: string;\r\n style?: StyleProp<ViewStyle>;\r\n displayMode?: DisplayMode;\r\n initialPage?: number;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n tool?: AnnotationTool;\r\n strokeColor?: string;\r\n strokeWidth?: number;\r\n textContent?: string;\r\n textColor?: string;\r\n textFontSize?: number;\r\n textBold?: boolean;\r\n textItalic?: boolean;\r\n noteColor?: string;\r\n initialAnnotations?: AnnotationData[];\r\n onPageChange?: (event: { nativeEvent: { currentPage: number; totalPage: number } }) => void;\r\n onAnnotationChange?: (event: { nativeEvent: { annotations: AnnotationData[] } }) => void;\r\n onUndoRedoStateChange?: (event: { nativeEvent: { canUndo: boolean; canRedo: boolean } }) => void;\r\n onNotePress?: (event: { nativeEvent: { page: number; index: number; bounds: { x: number; y: number; width: number; height: number }; contents?: string } }) => void;\r\n onTextPress?: (event: { nativeEvent: { page: number; index: number; bounds: { x: number; y: number; width: number; height: number }; contents?: string } }) => void;\r\n}\r\n\r\nexport interface ExpoPdfReaderRef {\r\n undo: () => Promise<void>;\r\n redo: () => Promise<void>;\r\n setInitialPage: (page: number) => Promise<void>;\r\n updateNote: (page: number, index: number, contents: string) => Promise<void>;\r\n updateText: (page: number, index: number, contents: string) => Promise<void>;\r\n}"]}
|
|
1
|
+
{"version":3,"file":"ExpoPdfReader.types.js","sourceRoot":"","sources":["../src/ExpoPdfReader.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ViewProps, StyleProp, ViewStyle } from 'react-native';\r\n\r\nexport type DisplayMode = 'single' | 'continuous' | 'twoUp' | 'twoUpContinuous';\r\nexport type AnnotationTool = 'pen' | 'highlighter' | 'text' | 'note' | 'eraser' | 'line';\r\n\r\nexport type AnnotationData = {\r\n type: AnnotationTool;\r\n page: number;\r\n bounds: { x: number; y: number; width: number; height: number };\r\n color?: string;\r\n strokeWidth?: number;\r\n paths?: Array<Array<{ x: number; y: number }>>;\r\n contents?: string;\r\n fontSize?: number; // зөвхөн text-д\r\n bold?: boolean; // зөвхөн text-д\r\n italic?: boolean; // зөвхөн text-д\r\n};\r\n\r\nexport interface ExpoPdfReaderViewProps extends ViewProps {\r\n url: string;\r\n style?: StyleProp<ViewStyle>;\r\n displayMode?: DisplayMode;\r\n initialPage?: number;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n tool?: AnnotationTool;\r\n strokeColor?: string;\r\n strokeWidth?: number;\r\n textContent?: string;\r\n textColor?: string;\r\n textFontSize?: number;\r\n textBold?: boolean;\r\n textItalic?: boolean;\r\n noteColor?: string;\r\n initialAnnotations?: AnnotationData[];\r\n onReady?: (event: { nativeEvent: { totalPages: number; width: number; height: number } }) => void;\r\n onPageChange?: (event: { nativeEvent: { currentPage: number; totalPage: number } }) => void;\r\n onAnnotationChange?: (event: { nativeEvent: { annotations: AnnotationData[] } }) => void;\r\n onUndoRedoStateChange?: (event: { nativeEvent: { canUndo: boolean; canRedo: boolean } }) => void;\r\n onNotePress?: (event: { nativeEvent: { page: number; index: number; bounds: { x: number; y: number; width: number; height: number }; contents?: string } }) => void;\r\n onTextPress?: (event: { nativeEvent: { page: number; index: number; bounds: { x: number; y: number; width: number; height: number }; contents?: string } }) => void;\r\n}\r\n\r\nexport interface ExpoPdfReaderRef {\r\n undo: () => Promise<void>;\r\n redo: () => Promise<void>;\r\n setInitialPage: (page: number) => Promise<void>;\r\n updateNote: (page: number, index: number, contents: string) => Promise<void>;\r\n updateText: (page: number, index: number, contents: string) => Promise<void>;\r\n}"]}
|
|
@@ -5,7 +5,7 @@ public class ExpoPdfReaderModule: Module {
|
|
|
5
5
|
Name("ExpoPdfReader")
|
|
6
6
|
|
|
7
7
|
View(ExpoPdfReaderView.self) {
|
|
8
|
-
Events("onPageChange", "onAnnotationChange", "onUndoRedoStateChange", "onNotePress", "onTextPress")
|
|
8
|
+
Events("onReady", "onPageChange", "onAnnotationChange", "onUndoRedoStateChange", "onNotePress", "onTextPress")
|
|
9
9
|
|
|
10
10
|
Prop("url") { (view: ExpoPdfReaderView, url: String) in
|
|
11
11
|
if let u = URL(string: url) { view.load(url: u) }
|
|
@@ -20,6 +20,7 @@ final class ExpoPdfReaderView: ExpoView {
|
|
|
20
20
|
// Custom memo icon name (PNG in iOS bundle). If nil, default PDFKit icon is used.
|
|
21
21
|
private var memoIconName: String? = nil
|
|
22
22
|
|
|
23
|
+
let onReady = EventDispatcher()
|
|
23
24
|
let onPageChange = EventDispatcher()
|
|
24
25
|
let onAnnotationChange = EventDispatcher()
|
|
25
26
|
let onLoadingAnnotation = EventDispatcher()
|
|
@@ -209,6 +210,15 @@ final class ExpoPdfReaderView: ExpoView {
|
|
|
209
210
|
self.pendingAnnotations = nil
|
|
210
211
|
self.setAnnotations(pending)
|
|
211
212
|
}
|
|
213
|
+
// PDF бэлэн болсныг JS-д мэдэгдэнэ
|
|
214
|
+
let totalPages = document.pageCount
|
|
215
|
+
let viewW = Double(self.bounds.width)
|
|
216
|
+
let viewH = Double(self.bounds.height)
|
|
217
|
+
self.onReady([
|
|
218
|
+
"totalPages": totalPages,
|
|
219
|
+
"width": viewW,
|
|
220
|
+
"height": viewH
|
|
221
|
+
])
|
|
212
222
|
}
|
|
213
223
|
}
|
|
214
224
|
}
|
package/package.json
CHANGED
|
@@ -33,6 +33,7 @@ export interface ExpoPdfReaderViewProps extends ViewProps {
|
|
|
33
33
|
textItalic?: boolean;
|
|
34
34
|
noteColor?: string;
|
|
35
35
|
initialAnnotations?: AnnotationData[];
|
|
36
|
+
onReady?: (event: { nativeEvent: { totalPages: number; width: number; height: number } }) => void;
|
|
36
37
|
onPageChange?: (event: { nativeEvent: { currentPage: number; totalPage: number } }) => void;
|
|
37
38
|
onAnnotationChange?: (event: { nativeEvent: { annotations: AnnotationData[] } }) => void;
|
|
38
39
|
onUndoRedoStateChange?: (event: { nativeEvent: { canUndo: boolean; canRedo: boolean } }) => void;
|