rn-pdf-king 1.2.0 → 1.4.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.
@@ -27,6 +27,8 @@ import kotlin.math.max
27
27
  import kotlin.math.min
28
28
  import kotlin.math.sqrt
29
29
  import kotlin.math.abs
30
+ import java.util.Collections
31
+ import java.util.WeakHashMap
30
32
  import kotlinx.coroutines.Dispatchers
31
33
  import kotlinx.coroutines.withContext
32
34
  import kotlinx.coroutines.sync.Mutex
@@ -282,6 +284,7 @@ class PdfKing(private val context: Context) {
282
284
 
283
285
  object PdfKingManager {
284
286
  private var instance: PdfKing? = null
287
+ private val activePages = Collections.newSetFromMap(WeakHashMap<PdfPageView, Boolean>())
285
288
 
286
289
  fun initialize(context: Context) {
287
290
  if (instance == null) {
@@ -292,6 +295,18 @@ object PdfKingManager {
292
295
  fun getInstance(): PdfKing {
293
296
  return instance ?: throw IllegalStateException("PdfKingManager not initialized. Call initialize(context) first.")
294
297
  }
298
+
299
+ fun registerPage(page: PdfPageView) {
300
+ activePages.add(page)
301
+ }
302
+
303
+ fun unregisterPage(page: PdfPageView) {
304
+ activePages.remove(page)
305
+ }
306
+
307
+ fun clearAllSelections() {
308
+ activePages.forEach { it.clearSelectionState() }
309
+ }
295
310
  }
296
311
 
297
312
  // --- Legacy View Implementation ---
@@ -368,6 +383,16 @@ class PdfPageView @JvmOverloads constructor(
368
383
  override fun onDown(e: MotionEvent): Boolean = true
369
384
  })
370
385
 
386
+ override fun onAttachedToWindow() {
387
+ super.onAttachedToWindow()
388
+ PdfKingManager.registerPage(this)
389
+ }
390
+
391
+ override fun onDetachedFromWindow() {
392
+ super.onDetachedFromWindow()
393
+ PdfKingManager.unregisterPage(this)
394
+ }
395
+
371
396
  fun setContent(bmp: Bitmap, chars: List<TextChar>) {
372
397
  this.bitmap = bmp
373
398
  this.textChars = chars
@@ -746,6 +771,8 @@ class PdfPageView @JvmOverloads constructor(
746
771
  }
747
772
 
748
773
  fun clearSelectionState() {
774
+ if (selectionStart == null && selectionEnd == null) return
775
+
749
776
  draggingHandle = null
750
777
  isInteractingWithSelection = false
751
778
  selectionStart = null
@@ -15,180 +15,195 @@ import kotlinx.coroutines.launch
15
15
  import kotlinx.coroutines.withContext
16
16
 
17
17
  class RnPdfKingModule : Module() {
18
- private val FILE_PICKER_REQUEST_CODE = 4242
19
-
20
- override fun definition() = ModuleDefinition {
21
- Name("RnPdfKing")
22
-
23
- // Events
24
- Events("onPdfLoadStarted", "onPdfLoadSuccess", "onPdfLoadError")
25
-
26
- OnCreate {
27
- val context = appContext.reactContext
28
- if (context != null) {
29
- PdfKingManager.initialize(context)
30
- val pdfKing = PdfKingManager.getInstance()
31
- pdfKing.onFileLoadStarted = {
32
- this@RnPdfKingModule.sendEvent("onPdfLoadStarted", mapOf())
33
- }
34
- pdfKing.onFileLoadSuccess = { filePath, fileName, pageCount ->
35
- this@RnPdfKingModule.sendEvent("onPdfLoadSuccess", mapOf(
36
- "filePath" to filePath,
37
- "fileName" to fileName,
38
- "pageCount" to pageCount
39
- ))
40
- }
41
- pdfKing.onUnsupportedFile = {
42
- this@RnPdfKingModule.sendEvent("onPdfLoadError", mapOf("message" to "Unsupported or corrupt PDF file"))
43
- }
44
- }
45
-
46
- // Check for initial intent
47
- appContext.currentActivity?.intent?.let { intent ->
48
- if (intent.action == Intent.ACTION_VIEW) {
49
- val uri = intent.data
50
- if (uri != null) {
51
- CoroutineScope(Dispatchers.Main).launch {
52
- PdfKingManager.getInstance().handleUriSelection(uri)
53
- }
54
- }
55
- }
56
- }
57
- }
18
+ private val FILE_PICKER_REQUEST_CODE = 4242
19
+
20
+ override fun definition() = ModuleDefinition {
21
+ Name("RnPdfKing")
58
22
 
59
- OnNewIntent { intent ->
60
- if (intent.action == Intent.ACTION_VIEW) {
61
- val uri = intent.data
62
- if (uri != null) {
63
- CoroutineScope(Dispatchers.Main).launch {
64
- PdfKingManager.getInstance().handleUriSelection(uri)
23
+ // Events
24
+ Events("onPdfLoadStarted", "onPdfLoadSuccess", "onPdfLoadError")
25
+
26
+ OnCreate {
27
+ val context = appContext.reactContext
28
+ if (context != null) {
29
+ PdfKingManager.initialize(context)
30
+ val pdfKing = PdfKingManager.getInstance()
31
+ pdfKing.onFileLoadStarted = {
32
+ this@RnPdfKingModule.sendEvent("onPdfLoadStarted", mapOf())
33
+ }
34
+ pdfKing.onFileLoadSuccess = { filePath, fileName, pageCount ->
35
+ this@RnPdfKingModule.sendEvent(
36
+ "onPdfLoadSuccess", mapOf(
37
+ "filePath" to filePath,
38
+ "fileName" to fileName,
39
+ "pageCount" to pageCount
40
+ )
41
+ )
42
+ }
43
+ pdfKing.onUnsupportedFile = {
44
+ this@RnPdfKingModule.sendEvent(
45
+ "onPdfLoadError",
46
+ mapOf("message" to "Unsupported or corrupt PDF file")
47
+ )
48
+ }
49
+ }
50
+
51
+ // Check for initial intent
52
+ appContext.currentActivity?.intent?.let { intent ->
53
+ if (intent.action == Intent.ACTION_VIEW) {
54
+ val uri = intent.data
55
+ if (uri != null) {
56
+ CoroutineScope(Dispatchers.Main).launch {
57
+ PdfKingManager.getInstance().handleUriSelection(uri)
58
+ }
59
+ }
65
60
  }
66
61
  }
67
62
  }
68
- }
69
-
70
- AsyncFunction("checkInitialIntent") {
71
- appContext.currentActivity?.intent?.let { intent ->
63
+
64
+ OnNewIntent { intent ->
72
65
  if (intent.action == Intent.ACTION_VIEW) {
73
66
  val uri = intent.data
74
67
  if (uri != null) {
75
68
  CoroutineScope(Dispatchers.Main).launch {
76
69
  PdfKingManager.getInstance().handleUriSelection(uri)
77
70
  }
78
- return@AsyncFunction true
79
71
  }
80
72
  }
81
73
  }
82
- return@AsyncFunction false
83
- }
84
74
 
85
- OnActivityResult { _, payload ->
86
- if (payload.requestCode == FILE_PICKER_REQUEST_CODE && payload.resultCode == Activity.RESULT_OK) {
87
- val uri = payload.data?.data
88
- if (uri != null) {
89
- CoroutineScope(Dispatchers.Main).launch {
90
- PdfKingManager.getInstance().handleUriSelection(uri)
75
+ AsyncFunction("checkInitialIntent") {
76
+ appContext.currentActivity?.intent?.let { intent ->
77
+ if (intent.action == Intent.ACTION_VIEW) {
78
+ val uri = intent.data
79
+ if (uri != null) {
80
+ CoroutineScope(Dispatchers.Main).launch {
81
+ PdfKingManager.getInstance().handleUriSelection(uri)
82
+ }
83
+ return@AsyncFunction true
84
+ }
91
85
  }
92
86
  }
87
+ return@AsyncFunction false
93
88
  }
94
- }
95
89
 
96
- AsyncFunction("pickFile") {
97
- val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
98
- type = "application/pdf"
99
- addCategory(Intent.CATEGORY_OPENABLE)
100
- }
101
- appContext.currentActivity?.startActivityForResult(intent, FILE_PICKER_REQUEST_CODE)
102
- }
103
-
104
- AsyncFunction("loadPdf") { path: String ->
105
- val file = File(path)
106
- if (file.exists()) {
107
- CoroutineScope(Dispatchers.IO).launch {
108
- try {
109
- val pdfKing = PdfKingManager.getInstance()
110
- withContext(Dispatchers.Main) {
111
- pdfKing.onFileLoadStarted?.invoke()
112
- }
113
- pdfKing.loadPdf(file)
114
- val count = pdfKing.getPageCountSync()
115
-
116
- withContext(Dispatchers.Main) {
117
- pdfKing.onFileLoadSuccess?.invoke(path, file.name, count)
118
- }
119
- } catch (e: Exception) {
120
- this@RnPdfKingModule.sendEvent("onPdfLoadError", mapOf("message" to (e.message ?: "Unknown error")))
121
- }
122
- }
123
- } else {
124
- this@RnPdfKingModule.sendEvent("onPdfLoadError", mapOf("message" to "File does not exist"))
90
+ OnActivityResult { _, payload ->
91
+ if (payload.requestCode == FILE_PICKER_REQUEST_CODE && payload.resultCode == Activity.RESULT_OK) {
92
+ val uri = payload.data?.data
93
+ if (uri != null) {
94
+ CoroutineScope(Dispatchers.Main).launch {
95
+ PdfKingManager.getInstance().handleUriSelection(uri)
96
+ }
97
+ }
98
+ }
125
99
  }
126
- }
127
100
 
128
- AsyncFunction("getPageBitmapBase64") { pageNo: Int, promise: Promise ->
129
- CoroutineScope(Dispatchers.IO).launch {
130
- try {
131
- val result = PdfKingManager.getInstance().getPageBitmapBase64(pageNo)
132
- promise.resolve(result)
133
- } catch (e: Exception) {
134
- promise.reject("ERR_BITMAP", e.message, e)
101
+ AsyncFunction("pickFile") {
102
+ val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
103
+ type = "application/pdf"
104
+ addCategory(Intent.CATEGORY_OPENABLE)
135
105
  }
106
+ appContext.currentActivity?.startActivityForResult(intent, FILE_PICKER_REQUEST_CODE)
136
107
  }
137
- }
138
108
 
139
- AsyncFunction("getTextChars") { pageNo: Int, promise: Promise ->
140
- CoroutineScope(Dispatchers.IO).launch {
141
- try {
142
- val result = PdfKingManager.getInstance().getPageText(pageNo)
143
- promise.resolve(result)
144
- } catch (e: Exception) {
145
- promise.reject("ERR_TEXT", e.message, e)
109
+ AsyncFunction("loadPdf") { path: String ->
110
+ val file = File(path)
111
+ if (file.exists()) {
112
+ CoroutineScope(Dispatchers.IO).launch {
113
+ try {
114
+ val pdfKing = PdfKingManager.getInstance()
115
+ withContext(Dispatchers.Main) {
116
+ pdfKing.onFileLoadStarted?.invoke()
117
+ }
118
+ pdfKing.loadPdf(file)
119
+ val count = pdfKing.getPageCountSync()
120
+
121
+ withContext(Dispatchers.Main) {
122
+ pdfKing.onFileLoadSuccess?.invoke(path, file.name, count)
123
+ }
124
+ } catch (e: Exception) {
125
+ this@RnPdfKingModule.sendEvent(
126
+ "onPdfLoadError",
127
+ mapOf("message" to (e.message ?: "Unknown error"))
128
+ )
129
+ }
130
+ }
131
+ } else {
132
+ this@RnPdfKingModule.sendEvent("onPdfLoadError", mapOf("message" to "File does not exist"))
146
133
  }
147
134
  }
148
- }
149
135
 
150
- View(RnPdfKingView::class) {
151
- Prop("pageNo") { view: RnPdfKingView, pageNo: Int ->
152
- view.setPage(pageNo)
153
- }
154
-
155
- Prop("mode") { view: RnPdfKingView, mode: String ->
156
- view.setMode(mode)
157
- }
158
-
159
- Prop("pdfWidth") { view: RnPdfKingView, width: Int ->
160
- view.setPdfWidth(width)
161
- }
162
-
163
- Prop("pdfHeight") { view: RnPdfKingView, height: Int ->
164
- view.setPdfHeight(height)
165
- }
166
-
167
- Prop("preDefinedHighlights") { view: RnPdfKingView, highlights: List<Map<String, Any>> ->
168
- view.setHighlights(highlights)
169
- }
170
-
171
- Prop("preDefinedDottedHighlights") { view: RnPdfKingView, highlights: List<Map<String, Any>> ->
172
- view.setDottedHighlights(highlights)
173
- }
174
-
175
- AsyncFunction("clearSelection") { view: expo.modules.kotlin.views.ExpoView ->
176
- (view as? RnPdfKingView)?.clearSelection()
177
- }
178
-
179
- Prop("handleColor") { view: RnPdfKingView, color: Int ->
180
- view.setHandleColor(color)
181
- }
182
-
183
- Prop("selectionColor") { view: RnPdfKingView, color: Int ->
184
- view.setSelectionColor(color)
185
- }
186
-
187
- Prop("selectionEnabled") { view: RnPdfKingView, enabled: Boolean ->
188
- view.setSelectionEnabled(enabled)
189
- }
190
-
191
- Events("onSelectionChanged", "onSelectionStarted", "onSelectionEnded", "onPreDefinedHighlightClick")
136
+ AsyncFunction("getPageBitmapBase64") { pageNo: Int, promise: Promise ->
137
+ CoroutineScope(Dispatchers.IO).launch {
138
+ try {
139
+ val result = PdfKingManager.getInstance().getPageBitmapBase64(pageNo)
140
+ promise.resolve(result)
141
+ } catch (e: Exception) {
142
+ promise.reject("ERR_BITMAP", e.message, e)
143
+ }
144
+ }
145
+ }
146
+
147
+ AsyncFunction("getTextChars") { pageNo: Int, promise: Promise ->
148
+ CoroutineScope(Dispatchers.IO).launch {
149
+ try {
150
+ val result = PdfKingManager.getInstance().getPageText(pageNo)
151
+ promise.resolve(result)
152
+ } catch (e: Exception) {
153
+ promise.reject("ERR_TEXT", e.message, e)
154
+ }
155
+ }
156
+ }
157
+
158
+ AsyncFunction("clearAllSelections") {
159
+ CoroutineScope(Dispatchers.Main).launch {
160
+ PdfKingManager.clearAllSelections()
161
+ }
162
+ return@AsyncFunction null
163
+ }
164
+
165
+ View(RnPdfKingView::class) {
166
+ Prop("pageNo") { view: RnPdfKingView, pageNo: Int ->
167
+ view.setPage(pageNo)
168
+ }
169
+
170
+ Prop("mode") { view: RnPdfKingView, mode: String ->
171
+ view.setMode(mode)
172
+ }
173
+
174
+ Prop("pdfWidth") { view: RnPdfKingView, width: Int ->
175
+ view.setPdfWidth(width)
176
+ }
177
+
178
+ Prop("pdfHeight") { view: RnPdfKingView, height: Int ->
179
+ view.setPdfHeight(height)
180
+ }
181
+
182
+ Prop("preDefinedHighlights") { view: RnPdfKingView, highlights: List<Map<String, Any>> ->
183
+ view.setHighlights(highlights)
184
+ }
185
+
186
+ Prop("preDefinedDottedHighlights") { view: RnPdfKingView, highlights: List<Map<String, Any>> ->
187
+ view.setDottedHighlights(highlights)
188
+ }
189
+
190
+ AsyncFunction("clearSelection") { view: RnPdfKingView ->
191
+ view.clearSelection()
192
+ }
193
+
194
+ Prop("handleColor") { view: RnPdfKingView, color: Int ->
195
+ view.setHandleColor(color)
196
+ }
197
+
198
+ Prop("selectionColor") { view: RnPdfKingView, color: Int ->
199
+ view.setSelectionColor(color)
200
+ }
201
+
202
+ Prop("selectionEnabled") { view: RnPdfKingView, enabled: Boolean ->
203
+ view.setSelectionEnabled(enabled)
204
+ }
205
+
206
+ Events("onSelectionChanged", "onSelectionStarted", "onSelectionEnded", "onPreDefinedHighlightClick")
207
+ }
192
208
  }
193
- }
194
209
  }
@@ -7,6 +7,7 @@ interface PdfDocumentContextType {
7
7
  pickFile: () => Promise<void>;
8
8
  loadPdf: (path: string) => Promise<void>;
9
9
  error: string | null;
10
+ clearAllSelections: () => Promise<void>;
10
11
  }
11
12
  interface PdfDocumentProps {
12
13
  children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"PdfDocument.d.ts","sourceRoot":"","sources":["../src/PdfDocument.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkD,SAAS,EAAE,MAAM,OAAO,CAAC;AAKzF,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAID,UAAU,gBAAgB;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAKD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgF1D,CAAC;AAEF,eAAO,MAAM,cAAc,8BAM1B,CAAC"}
1
+ {"version":3,"file":"PdfDocument.d.ts","sourceRoot":"","sources":["../src/PdfDocument.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkD,SAAS,EAAE,MAAM,OAAO,CAAC;AAKzF,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAID,UAAU,gBAAgB;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAKD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyF1D,CAAC;AAEF,eAAO,MAAM,cAAc,8BAM1B,CAAC"}
@@ -57,6 +57,14 @@ export const PdfDocumentProvider = ({ children, onLoadSuccess, onLoadError }) =>
57
57
  setError(e.message);
58
58
  }
59
59
  };
60
+ const clearAllSelections = async () => {
61
+ try {
62
+ await RnPdfKingModule.clearAllSelections();
63
+ }
64
+ catch (e) {
65
+ console.warn("Failed to clear selections", e);
66
+ }
67
+ };
60
68
  return (<PdfDocumentContext.Provider value={{
61
69
  loading,
62
70
  pageCount,
@@ -64,7 +72,8 @@ export const PdfDocumentProvider = ({ children, onLoadSuccess, onLoadError }) =>
64
72
  fileName,
65
73
  pickFile,
66
74
  loadPdf,
67
- error
75
+ error,
76
+ clearAllSelections
68
77
  }}>
69
78
  {/* Mount hidden manager view to initialize file picker */}
70
79
  <NativePdfView mode="manager" style={{ width: 0, height: 0, position: 'absolute' }}/>
@@ -1 +1 @@
1
- {"version":3,"file":"PdfDocument.js","sourceRoot":"","sources":["../src/PdfDocument.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';\nimport RnPdfKingModule from './RnPdfKingModule';\nimport { requireNativeViewManager } from 'expo-modules-core';\n\n// Define the shape of the context\ninterface PdfDocumentContextType {\n loading: boolean;\n pageCount: number;\n filePath: string | null;\n fileName: string | null;\n pickFile: () => Promise<void>;\n loadPdf: (path: string) => Promise<void>;\n error: string | null;\n}\n\nconst PdfDocumentContext = createContext<PdfDocumentContextType | undefined>(undefined);\n\ninterface PdfDocumentProps {\n children: ReactNode;\n onLoadSuccess?: (path: string, name: string, pageCount: number) => void;\n onLoadError?: (error: string) => void;\n}\n\n// Native View for Manager Mode\nconst NativePdfView = requireNativeViewManager('RnPdfKing');\n\nexport const PdfDocumentProvider: React.FC<PdfDocumentProps> = ({ \n children, \n onLoadSuccess, \n onLoadError \n}) => {\n const [loading, setLoading] = useState(false);\n const [pageCount, setPageCount] = useState(0);\n const [filePath, setFilePath] = useState<string | null>(null);\n const [fileName, setFileName] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n // Register listeners\n const startedSubscription = RnPdfKingModule.addListener('onPdfLoadStarted', () => {\n setLoading(true);\n setError(null);\n });\n\n const successSubscription = RnPdfKingModule.addListener('onPdfLoadSuccess', (event) => {\n setLoading(false);\n setPageCount(event.pageCount);\n setFilePath(event.filePath);\n setFileName(event.fileName);\n setError(null);\n if (onLoadSuccess) onLoadSuccess(event.filePath, event.fileName, event.pageCount);\n });\n\n const errorSubscription = RnPdfKingModule.addListener('onPdfLoadError', (event) => {\n setLoading(false);\n setError(event.message);\n if (onLoadError) onLoadError(event.message);\n });\n\n return () => {\n startedSubscription.remove();\n successSubscription.remove();\n errorSubscription.remove();\n };\n }, [onLoadSuccess, onLoadError]);\n\n const pickFile = async () => {\n try {\n setError(null);\n await RnPdfKingModule.pickFile();\n } catch (e: any) {\n setLoading(false);\n setError(e.message);\n }\n };\n\n const loadPdf = async (path: string) => {\n try {\n setError(null);\n await RnPdfKingModule.loadPdf(path);\n } catch (e: any) {\n setLoading(false);\n setError(e.message);\n }\n };\n\n return (\n <PdfDocumentContext.Provider \n value={{ \n loading, \n pageCount, \n filePath, \n fileName, \n pickFile, \n loadPdf,\n error \n }}\n >\n {/* Mount hidden manager view to initialize file picker */}\n <NativePdfView \n mode=\"manager\" \n style={{ width: 0, height: 0, position: 'absolute' }} \n />\n {children}\n </PdfDocumentContext.Provider>\n );\n};\n\nexport const usePdfDocument = () => {\n const context = useContext(PdfDocumentContext);\n if (context === undefined) {\n throw new Error('usePdfDocument must be used within a PdfDocumentProvider');\n }\n return context;\n};\n"]}
1
+ {"version":3,"file":"PdfDocument.js","sourceRoot":"","sources":["../src/PdfDocument.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';\nimport RnPdfKingModule from './RnPdfKingModule';\nimport { requireNativeViewManager } from 'expo-modules-core';\n\n// Define the shape of the context\ninterface PdfDocumentContextType {\n loading: boolean;\n pageCount: number;\n filePath: string | null;\n fileName: string | null;\n pickFile: () => Promise<void>;\n loadPdf: (path: string) => Promise<void>;\n error: string | null;\n clearAllSelections: () => Promise<void>;\n}\n\nconst PdfDocumentContext = createContext<PdfDocumentContextType | undefined>(undefined);\n\ninterface PdfDocumentProps {\n children: ReactNode;\n onLoadSuccess?: (path: string, name: string, pageCount: number) => void;\n onLoadError?: (error: string) => void;\n}\n\n// Native View for Manager Mode\nconst NativePdfView = requireNativeViewManager('RnPdfKing');\n\nexport const PdfDocumentProvider: React.FC<PdfDocumentProps> = ({ \n children, \n onLoadSuccess, \n onLoadError \n}) => {\n const [loading, setLoading] = useState(false);\n const [pageCount, setPageCount] = useState(0);\n const [filePath, setFilePath] = useState<string | null>(null);\n const [fileName, setFileName] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n // Register listeners\n const startedSubscription = RnPdfKingModule.addListener('onPdfLoadStarted', () => {\n setLoading(true);\n setError(null);\n });\n\n const successSubscription = RnPdfKingModule.addListener('onPdfLoadSuccess', (event) => {\n setLoading(false);\n setPageCount(event.pageCount);\n setFilePath(event.filePath);\n setFileName(event.fileName);\n setError(null);\n if (onLoadSuccess) onLoadSuccess(event.filePath, event.fileName, event.pageCount);\n });\n\n const errorSubscription = RnPdfKingModule.addListener('onPdfLoadError', (event) => {\n setLoading(false);\n setError(event.message);\n if (onLoadError) onLoadError(event.message);\n });\n\n return () => {\n startedSubscription.remove();\n successSubscription.remove();\n errorSubscription.remove();\n };\n }, [onLoadSuccess, onLoadError]);\n\n const pickFile = async () => {\n try {\n setError(null);\n await RnPdfKingModule.pickFile();\n } catch (e: any) {\n setLoading(false);\n setError(e.message);\n }\n };\n\n const loadPdf = async (path: string) => {\n try {\n setError(null);\n await RnPdfKingModule.loadPdf(path);\n } catch (e: any) {\n setLoading(false);\n setError(e.message);\n }\n };\n\n const clearAllSelections = async () => {\n try {\n await RnPdfKingModule.clearAllSelections();\n } catch (e: any) {\n console.warn(\"Failed to clear selections\", e);\n }\n };\n\n return (\n <PdfDocumentContext.Provider \n value={{ \n loading, \n pageCount, \n filePath, \n fileName, \n pickFile, \n loadPdf,\n error,\n clearAllSelections\n }}\n >\n {/* Mount hidden manager view to initialize file picker */}\n <NativePdfView \n mode=\"manager\" \n style={{ width: 0, height: 0, position: 'absolute' }} \n />\n {children}\n </PdfDocumentContext.Provider>\n );\n};\n\nexport const usePdfDocument = () => {\n const context = useContext(PdfDocumentContext);\n if (context === undefined) {\n throw new Error('usePdfDocument must be used within a PdfDocumentProvider');\n }\n return context;\n};\n"]}
@@ -9,6 +9,7 @@ declare class RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {
9
9
  getPageBitmapBase64(pageNo: number): Promise<string>;
10
10
  getTextChars(pageNo: number): Promise<string>;
11
11
  checkInitialIntent(): Promise<boolean>;
12
+ clearAllSelections(): Promise<void>;
12
13
  }
13
14
  declare const _default: RnPdfKingModule;
14
15
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"RnPdfKingModule.d.ts","sourceRoot":"","sources":["../src/RnPdfKingModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,MAAM,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,OAAO,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,IAAI,MAAM;IACf,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACpD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7C,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CACvC;;AAGD,wBAAiE"}
1
+ {"version":3,"file":"RnPdfKingModule.d.ts","sourceRoot":"","sources":["../src/RnPdfKingModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,MAAM,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,OAAO,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,IAAI,MAAM;IACf,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACpD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7C,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IACtC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC;;AAGD,wBAAiE"}
@@ -1 +1 @@
1
- {"version":3,"file":"RnPdfKingModule.js","sourceRoot":"","sources":["../src/RnPdfKingModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAezD,yDAAyD;AACzD,eAAe,mBAAmB,CAAkB,WAAW,CAAC,CAAC","sourcesContent":["import { NativeModule, requireNativeModule } from 'expo';\n\nimport { RnPdfKingModuleEvents } from './RnPdfKing.types';\n\ndeclare class RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {\n PI: number;\n hello(): string;\n setValueAsync(value: string): Promise<void>;\n pickFile(): Promise<void>;\n loadPdf(path: string): Promise<void>;\n getPageBitmapBase64(pageNo: number): Promise<string>;\n getTextChars(pageNo: number): Promise<string>;\n checkInitialIntent(): Promise<boolean>;\n}\n\n// This call loads the native module object from the JSI.\nexport default requireNativeModule<RnPdfKingModule>('RnPdfKing');\n"]}
1
+ {"version":3,"file":"RnPdfKingModule.js","sourceRoot":"","sources":["../src/RnPdfKingModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAgBzD,yDAAyD;AACzD,eAAe,mBAAmB,CAAkB,WAAW,CAAC,CAAC","sourcesContent":["import { NativeModule, requireNativeModule } from 'expo';\n\nimport { RnPdfKingModuleEvents } from './RnPdfKing.types';\n\ndeclare class RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {\n PI: number;\n hello(): string;\n setValueAsync(value: string): Promise<void>;\n pickFile(): Promise<void>;\n loadPdf(path: string): Promise<void>;\n getPageBitmapBase64(pageNo: number): Promise<string>;\n getTextChars(pageNo: number): Promise<string>;\n checkInitialIntent(): Promise<boolean>;\n clearAllSelections(): Promise<void>;\n}\n\n// This call loads the native module object from the JSI.\nexport default requireNativeModule<RnPdfKingModule>('RnPdfKing');\n"]}
@@ -7,6 +7,7 @@ declare class RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {
7
7
  pickFile(): Promise<void>;
8
8
  loadPdf(path: string): Promise<void>;
9
9
  checkInitialIntent(): Promise<boolean>;
10
+ clearAllSelections(): Promise<void>;
10
11
  }
11
12
  declare const _default: typeof RnPdfKingModule;
12
13
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"RnPdfKingModule.web.d.ts","sourceRoot":"","sources":["../src/RnPdfKingModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,cAAM,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAC/D,EAAE,SAAW;IACP,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGjD,KAAK;IAGC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAGzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG7C;;AAED,wBAAqE"}
1
+ {"version":3,"file":"RnPdfKingModule.web.d.ts","sourceRoot":"","sources":["../src/RnPdfKingModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,cAAM,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAC/D,EAAE,SAAW;IACP,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGjD,KAAK;IAGC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAGzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAGtC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG1C;;AAED,wBAAqE"}
@@ -16,6 +16,9 @@ class RnPdfKingModule extends NativeModule {
16
16
  async checkInitialIntent() {
17
17
  return false;
18
18
  }
19
+ async clearAllSelections() {
20
+ console.warn('clearAllSelections is not implemented on web');
21
+ }
19
22
  }
20
23
  export default registerWebModule(RnPdfKingModule, 'RnPdfKingModule');
21
24
  //# sourceMappingURL=RnPdfKingModule.web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RnPdfKingModule.web.js","sourceRoot":"","sources":["../src/RnPdfKingModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,MAAM,eAAgB,SAAQ,YAAmC;IAC/D,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACb,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK;QACH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,kBAAkB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,eAAe,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import { registerWebModule, NativeModule } from 'expo';\n\nimport { RnPdfKingModuleEvents } from './RnPdfKing.types';\n\nclass RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {\n PI = Math.PI;\n async setValueAsync(value: string): Promise<void> {\n this.emit('onChange', { value });\n }\n hello() {\n return 'Hello world! 👋';\n }\n async pickFile(): Promise<void> {\n console.warn('pickFile is not implemented on web');\n }\n async loadPdf(path: string): Promise<void> {\n console.warn('loadPdf is not implemented on web');\n }\n async checkInitialIntent(): Promise<boolean> {\n return false;\n }\n}\n\nexport default registerWebModule(RnPdfKingModule, 'RnPdfKingModule');\n"]}
1
+ {"version":3,"file":"RnPdfKingModule.web.js","sourceRoot":"","sources":["../src/RnPdfKingModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,MAAM,eAAgB,SAAQ,YAAmC;IAC/D,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACb,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK;QACH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,kBAAkB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,kBAAkB;QACtB,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,eAAe,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import { registerWebModule, NativeModule } from 'expo';\n\nimport { RnPdfKingModuleEvents } from './RnPdfKing.types';\n\nclass RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {\n PI = Math.PI;\n async setValueAsync(value: string): Promise<void> {\n this.emit('onChange', { value });\n }\n hello() {\n return 'Hello world! 👋';\n }\n async pickFile(): Promise<void> {\n console.warn('pickFile is not implemented on web');\n }\n async loadPdf(path: string): Promise<void> {\n console.warn('loadPdf is not implemented on web');\n }\n async checkInitialIntent(): Promise<boolean> {\n return false;\n }\n async clearAllSelections(): Promise<void> {\n console.warn('clearAllSelections is not implemented on web');\n }\n}\n\nexport default registerWebModule(RnPdfKingModule, 'RnPdfKingModule');\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-pdf-king",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "The one and only best pdf library that efficiently handle 1000 page pdf with memeory mangement , easy selection , very customizable and allow pdf to edit",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -11,6 +11,7 @@ interface PdfDocumentContextType {
11
11
  pickFile: () => Promise<void>;
12
12
  loadPdf: (path: string) => Promise<void>;
13
13
  error: string | null;
14
+ clearAllSelections: () => Promise<void>;
14
15
  }
15
16
 
16
17
  const PdfDocumentContext = createContext<PdfDocumentContextType | undefined>(undefined);
@@ -84,6 +85,14 @@ export const PdfDocumentProvider: React.FC<PdfDocumentProps> = ({
84
85
  }
85
86
  };
86
87
 
88
+ const clearAllSelections = async () => {
89
+ try {
90
+ await RnPdfKingModule.clearAllSelections();
91
+ } catch (e: any) {
92
+ console.warn("Failed to clear selections", e);
93
+ }
94
+ };
95
+
87
96
  return (
88
97
  <PdfDocumentContext.Provider
89
98
  value={{
@@ -93,7 +102,8 @@ export const PdfDocumentProvider: React.FC<PdfDocumentProps> = ({
93
102
  fileName,
94
103
  pickFile,
95
104
  loadPdf,
96
- error
105
+ error,
106
+ clearAllSelections
97
107
  }}
98
108
  >
99
109
  {/* Mount hidden manager view to initialize file picker */}
@@ -11,6 +11,7 @@ declare class RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {
11
11
  getPageBitmapBase64(pageNo: number): Promise<string>;
12
12
  getTextChars(pageNo: number): Promise<string>;
13
13
  checkInitialIntent(): Promise<boolean>;
14
+ clearAllSelections(): Promise<void>;
14
15
  }
15
16
 
16
17
  // This call loads the native module object from the JSI.
@@ -19,6 +19,9 @@ class RnPdfKingModule extends NativeModule<RnPdfKingModuleEvents> {
19
19
  async checkInitialIntent(): Promise<boolean> {
20
20
  return false;
21
21
  }
22
+ async clearAllSelections(): Promise<void> {
23
+ console.warn('clearAllSelections is not implemented on web');
24
+ }
22
25
  }
23
26
 
24
27
  export default registerWebModule(RnPdfKingModule, 'RnPdfKingModule');