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.
- package/android/src/main/java/expo/modules/rnpdfking/PdfKing.kt +27 -0
- package/android/src/main/java/expo/modules/rnpdfking/RnPdfKingModule.kt +164 -149
- package/build/PdfDocument.d.ts +1 -0
- package/build/PdfDocument.d.ts.map +1 -1
- package/build/PdfDocument.js +10 -1
- package/build/PdfDocument.js.map +1 -1
- package/build/RnPdfKingModule.d.ts +1 -0
- package/build/RnPdfKingModule.d.ts.map +1 -1
- package/build/RnPdfKingModule.js.map +1 -1
- package/build/RnPdfKingModule.web.d.ts +1 -0
- package/build/RnPdfKingModule.web.d.ts.map +1 -1
- package/build/RnPdfKingModule.web.js +3 -0
- package/build/RnPdfKingModule.web.js.map +1 -1
- package/package.json +1 -1
- package/src/PdfDocument.tsx +11 -1
- package/src/RnPdfKingModule.ts +1 -0
- package/src/RnPdfKingModule.web.ts +3 -0
|
@@ -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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
}
|
package/build/PdfDocument.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/build/PdfDocument.js
CHANGED
|
@@ -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' }}/>
|
package/build/PdfDocument.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfDocument.js","sourceRoot":"","sources":["../src/PdfDocument.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AACzF,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;
|
|
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;
|
|
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;
|
|
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;
|
|
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.
|
|
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",
|
package/src/PdfDocument.tsx
CHANGED
|
@@ -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 */}
|
package/src/RnPdfKingModule.ts
CHANGED
|
@@ -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');
|