@react-pdf-kit/viewer 2.9.2 → 2.10.0-beta.1

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.
Files changed (166) hide show
  1. package/dist/AnnotationLayer-lagF0zYo.js +116 -0
  2. package/dist/{Button-DBu3SaMk.js → Button-B_yuVBQ_.js} +1 -1
  3. package/dist/{Checkbox-CSIEUyO8.js → Checkbox-BVARFFLh.js} +2 -2
  4. package/dist/{Combination-11kyhTGt.js → Combination-ILTe_xfZ.js} +2 -2
  5. package/dist/{Container-BuamPhw4.js → Container-CY9sCoDd.js} +1 -1
  6. package/dist/{DocumentDialog-cRr9sSSH.js → DocumentDialog-CYKsfOE1.js} +4 -4
  7. package/dist/{DropDown-CM6xEwZC.js → DropDown-DEnDtOIT.js} +2 -2
  8. package/dist/{Input-Dpo1Xfxe.js → Input-CVjTHdhy.js} +1 -1
  9. package/dist/{LoaderIcon-B3ddfd0D.js → LoaderIcon-SD35XFV2.js} +1 -1
  10. package/dist/{LoadingIndicator-0E8WHnSN.js → LoadingIndicator-SLpllUQ1.js} +1 -1
  11. package/dist/{MenuItem-lItnKNd5.js → MenuItem-DEd62cAM.js} +2 -2
  12. package/dist/{MenuSeparator-CaFxd8b5.js → MenuSeparator-BVQWugN3.js} +1 -1
  13. package/dist/{PasswordModal-CxHFn0pB.js → PasswordModal-BCjtXHN4.js} +1 -1
  14. package/dist/{RPDropFileZone-Bq1bzWmO.js → RPDropFileZone-lI-AmN-1.js} +3 -3
  15. package/dist/{RPPages-BZwgKgfJ.js → RPPages-BVSFaPUT.js} +2 -2
  16. package/dist/{RPTooltip-QWwWh4HW.js → RPTooltip-KdCUxOyM.js} +3 -3
  17. package/dist/TextHighlightLayer-BMhYl-9Q.js +162 -0
  18. package/dist/{TextLayer-Bp1CDIIa.js → TextLayer-CUtANGvL.js} +2 -2
  19. package/dist/{Thumbnail-BXMk0OWF.js → Thumbnail-BDGp0xdd.js} +3 -3
  20. package/dist/{Thumbnails-BIuN8LZ8.js → Thumbnails-C6maORBh.js} +1 -1
  21. package/dist/XfaLayer.module-w4FOd2dm.js +4 -0
  22. package/dist/assets/XfaLayer.css +1 -0
  23. package/dist/assets/style.js +1 -1
  24. package/dist/components/RPController.js +1 -1
  25. package/dist/components/RPDropFileZone.js +1 -1
  26. package/dist/components/RPPages.js +1 -1
  27. package/dist/components/RPProvider.js +1 -1
  28. package/dist/components/icons/DarkPdfIcon.js +1 -1
  29. package/dist/components/icons/LightPdfIcon.js +1 -1
  30. package/dist/components/icons/LoaderIcon.js +1 -1
  31. package/dist/components/layout/Container.js +1 -1
  32. package/dist/components/layout/LayoutContainer.js +2 -2
  33. package/dist/components/layout/LayoutWrapper.js +1 -1
  34. package/dist/components/layout/RPDefaultLayout.js +5 -5
  35. package/dist/components/layout/RPLayout.js +5 -5
  36. package/dist/components/layout/SkipLink.js +1 -1
  37. package/dist/components/layout/WrapperLayout.js +1 -1
  38. package/dist/components/layout/sidebar/CustomThumbnailElement.js +1 -1
  39. package/dist/components/layout/sidebar/RPSidebar.js +4 -4
  40. package/dist/components/layout/sidebar/RPSplitter.js +1 -1
  41. package/dist/components/layout/sidebar/Thumbnail.js +1 -1
  42. package/dist/components/layout/sidebar/Thumbnails.js +1 -1
  43. package/dist/components/layout/toolbar/DarkModeTool.js +2 -2
  44. package/dist/components/layout/toolbar/DocumentDialog.js +1 -1
  45. package/dist/components/layout/toolbar/DocumentProperties.js +3 -3
  46. package/dist/components/layout/toolbar/FileDownloadTool.js +3 -3
  47. package/dist/components/layout/toolbar/FileUploadTool.js +3 -3
  48. package/dist/components/layout/toolbar/FullScreenTool.js +3 -3
  49. package/dist/components/layout/toolbar/MenuItem.js +1 -1
  50. package/dist/components/layout/toolbar/MenuSeparator.js +1 -1
  51. package/dist/components/layout/toolbar/MostPageTool.js +5 -5
  52. package/dist/components/layout/toolbar/OtherTool.js +7 -7
  53. package/dist/components/layout/toolbar/Paginate.js +4 -4
  54. package/dist/components/layout/toolbar/PrintTool.js +3 -3
  55. package/dist/components/layout/toolbar/PropertyItem.js +1 -1
  56. package/dist/components/layout/toolbar/RPMenuItem.js +3 -3
  57. package/dist/components/layout/toolbar/RPMoreOptions.js +7 -7
  58. package/dist/components/layout/toolbar/RPToolbar.js +2 -2
  59. package/dist/components/layout/toolbar/RotateTool.js +5 -5
  60. package/dist/components/layout/toolbar/ScrollModeTool.js +3 -3
  61. package/dist/components/layout/toolbar/SearchCloseButton.js +3 -3
  62. package/dist/components/layout/toolbar/SearchResultNavigator.js +3 -3
  63. package/dist/components/layout/toolbar/SearchTool.js +7 -7
  64. package/dist/components/layout/toolbar/SelectionModeTool.js +4 -4
  65. package/dist/components/layout/toolbar/ThumbnailTool.js +2 -2
  66. package/dist/components/layout/toolbar/ToolbarCustom.js +4 -4
  67. package/dist/components/layout/toolbar/ToolbarDefault.js +4 -4
  68. package/dist/components/layout/toolbar/ViewModeTool.js +4 -4
  69. package/dist/components/layout/toolbar/ZoomTool.js +8 -8
  70. package/dist/components/layout/toolbar/tools/DocumentPropertiesTool.js +3 -3
  71. package/dist/components/layout/toolbar/tools/DualPageTool.js +2 -2
  72. package/dist/components/layout/toolbar/tools/DualPageWithCoverTool.js +1 -1
  73. package/dist/components/layout/toolbar/tools/FileDownloadTool.js +2 -2
  74. package/dist/components/layout/toolbar/tools/FileUploadTool.js +2 -2
  75. package/dist/components/layout/toolbar/tools/FirstPageTool.js +1 -1
  76. package/dist/components/layout/toolbar/tools/FullScreenTool.js +2 -2
  77. package/dist/components/layout/toolbar/tools/HorizontalScrollingTool.js +2 -2
  78. package/dist/components/layout/toolbar/tools/InputPageTool.js +3 -3
  79. package/dist/components/layout/toolbar/tools/LastPageTool.js +1 -1
  80. package/dist/components/layout/toolbar/tools/NextPageTool.js +2 -2
  81. package/dist/components/layout/toolbar/tools/PageScrollingTool.js +2 -2
  82. package/dist/components/layout/toolbar/tools/PreviousPageTool.js +2 -2
  83. package/dist/components/layout/toolbar/tools/PrintTool.js +2 -2
  84. package/dist/components/layout/toolbar/tools/RotateClockwiseTool.js +2 -2
  85. package/dist/components/layout/toolbar/tools/RotateCounterclockwiseTool.js +3 -3
  86. package/dist/components/layout/toolbar/tools/SelectionModeSwitcherTool.js +2 -2
  87. package/dist/components/layout/toolbar/tools/SinglePageTool.js +2 -2
  88. package/dist/components/layout/toolbar/tools/ThemeSwitcherTool.js +2 -2
  89. package/dist/components/layout/toolbar/tools/ThumbnailTool.js +2 -2
  90. package/dist/components/layout/toolbar/tools/VerticalScrollingTool.js +2 -2
  91. package/dist/components/layout/toolbar/tools/ZoomInTool.js +2 -2
  92. package/dist/components/layout/toolbar/tools/ZoomLevelTool.js +7 -7
  93. package/dist/components/layout/toolbar/tools/ZoomOutTool.js +2 -2
  94. package/dist/components/layout/toolbar/tools/defaults/RPHorizontalBar.js +1 -1
  95. package/dist/components/layout/toolbar/tools/more-options/DocumentProperties.js +2 -2
  96. package/dist/components/layout/toolbar/tools/more-options/FileDownloadTool.js +2 -2
  97. package/dist/components/layout/toolbar/tools/more-options/FileUploadTool.js +2 -2
  98. package/dist/components/layout/toolbar/tools/more-options/FullScreenTool.js +2 -2
  99. package/dist/components/layout/toolbar/tools/more-options/MostPageTool.js +5 -5
  100. package/dist/components/layout/toolbar/tools/more-options/PrintTool.js +2 -2
  101. package/dist/components/layout/toolbar/tools/more-options/RotateTool.js +5 -5
  102. package/dist/components/layout/toolbar/tools/more-options/ScrollModeTool.js +3 -3
  103. package/dist/components/layout/toolbar/tools/more-options/SelectionModeTool.js +4 -4
  104. package/dist/components/layout/toolbar/tools/more-options/ViewModeTool.js +4 -4
  105. package/dist/components/page/AnnotationLayer.js +1 -1
  106. package/dist/components/page/CanvasLayer.js +1 -1
  107. package/dist/components/page/RPPage.js +54 -52
  108. package/dist/components/page/TextHighlightLayer.js +1 -1
  109. package/dist/components/page/TextLayer.js +1 -1
  110. package/dist/components/page/XfaLayer.js +86 -0
  111. package/dist/components/ui/Button.js +1 -1
  112. package/dist/components/ui/Checkbox.js +1 -1
  113. package/dist/components/ui/DropDown.js +1 -1
  114. package/dist/components/ui/Input.js +1 -1
  115. package/dist/components/ui/LoadingIndicator.js +1 -1
  116. package/dist/components/ui/PasswordModal.js +1 -1
  117. package/dist/components/ui/RPTooltip.js +1 -1
  118. package/dist/contexts/LoaderContext.js +1 -1
  119. package/dist/contexts/RenderQueueProvider.js +46 -43
  120. package/dist/{dist-CNbFpoT1.js → dist-BgFO-PWQ.js} +1 -1
  121. package/dist/{dist-VbpVNBs6.js → dist-CtoH1CMU.js} +4 -4
  122. package/dist/{dist-B2hwhF6G.js → dist-D6Fk7CTS.js} +3 -3
  123. package/dist/{dist-BfuBBQ14.js → dist-SBjhcXgf.js} +1 -1
  124. package/dist/icons.js +3 -3
  125. package/dist/{main-DCzVrq0G.js → main-DrddwgsH.js} +3 -3
  126. package/dist/main.js +4 -4
  127. package/dist/{style-dcYpxEeL.js → style-DW_uCDpt.js} +1 -1
  128. package/dist/types/components/page/XfaLayer.d.ts +6 -0
  129. package/dist/types/utils/pdfOperationTracker.d.ts +20 -0
  130. package/dist/utils/annotations.js +72 -71
  131. package/dist/utils/highlight.js +4 -2
  132. package/dist/utils/hooks/useFileDownload.js +10 -6
  133. package/dist/utils/hooks/useHighlight.js +43 -42
  134. package/dist/utils/hooks/useLicense.js +2 -2
  135. package/dist/utils/hooks/useLoadPdf.js +66 -64
  136. package/dist/utils/hooks/usePdfProperties.js +33 -32
  137. package/dist/utils/hooks/usePrint.js +123 -88
  138. package/dist/utils/hooks/useSearch.js +87 -83
  139. package/dist/utils/hooks/useWatermark.js +1 -1
  140. package/dist/utils/injectPrintCSS.js +1 -1
  141. package/dist/utils/link_service.js +33 -17
  142. package/dist/utils/pdfOperationTracker.js +27 -4
  143. package/package.json +1 -1
  144. package/dist/AnnotationLayer-oDu2B4X1.js +0 -114
  145. package/dist/TextHighlightLayer-3vIZbRyL.js +0 -157
  146. /package/dist/{CanvasLayer-C3gb8EXu.js → CanvasLayer-DkVH-tX2.js} +0 -0
  147. /package/dist/{CustomThumbnailElement-C2quEICO.js → CustomThumbnailElement-BxTSbzpP.js} +0 -0
  148. /package/dist/{DarkPdfIcon-B5ehd9CV.js → DarkPdfIcon-2aDGWxuA.js} +0 -0
  149. /package/dist/{LightPdfIcon-DL8MYtWQ.js → LightPdfIcon-LatCGY0T.js} +0 -0
  150. /package/dist/{MostPageTool.module-BRVv-sGz.js → MostPageTool.module-BP2BMoK8.js} +0 -0
  151. /package/dist/{OtherTool.module-BQY9Nfqz.js → OtherTool.module-CMbI70sn.js} +0 -0
  152. /package/dist/{Paginate.module-DhE7N8AA.js → Paginate.module-DxXyYoYp.js} +0 -0
  153. /package/dist/{PropertyItem-evJWWmWZ.js → PropertyItem-CmRC2e5Z.js} +0 -0
  154. /package/dist/{RPLayout.module-BH5r8dDc.js → RPLayout.module-DLX1UwA3.js} +0 -0
  155. /package/dist/{RPSplitter-C63X9M8w.js → RPSplitter-DGnDuwsT.js} +0 -0
  156. /package/dist/{RPToolbar.module-BwqWLviy.js → RPToolbar.module-ODOa9FwW.js} +0 -0
  157. /package/dist/{RotateTool.module-DH5yWbvM.js → RotateTool.module-BHFeo1yn.js} +0 -0
  158. /package/dist/{SearchTool.module-DY8Ucfb_.js → SearchTool.module-BQDBENlo.js} +0 -0
  159. /package/dist/{SkipLink-Dj83gZdk.js → SkipLink-mnqFQj0O.js} +0 -0
  160. /package/dist/{ToolbarLayout.module-Zo715dbb.js → ToolbarLayout.module-BC9eQ9LN.js} +0 -0
  161. /package/dist/{WrapperLayout-Dcd9l9xH.js → WrapperLayout-NjsBnUaz.js} +0 -0
  162. /package/dist/{ZoomTool.module-BrIPy8pO.js → ZoomTool.module-DO-r2IDy.js} +0 -0
  163. /package/dist/{clsx-DSGuh5YW.js → clsx-BD2qMUU1.js} +0 -0
  164. /package/dist/{dist-CgoP608h.js → dist-DjD1zIE0.js} +0 -0
  165. /package/dist/{lib-CSInlR9T.js → lib-DTkzWIMS.js} +0 -0
  166. /package/dist/{useWatermark-CvAAf66v.js → useWatermark-DlRNcg9p.js} +0 -0
@@ -5,95 +5,97 @@ import { useConfigContext as n } from "../../contexts/ConfigContext.js";
5
5
  import { appConsole as r } from "../appConsole.js";
6
6
  import { useDocumentPasswordContext as i } from "../../contexts/DocumentPasswordContext.js";
7
7
  import { BROWSER_NOT_SUPPORTED_MESSAGE as a, INVALID_OR_CORRUPTED_PDF_MESSAGE as o, WASM_URL_REQUIRED_CONSOLE_MESSAGE as s, WASM_URL_REQUIRED_MESSAGE as c } from "../const.js";
8
- import { trackPdfOperation as l, waitForPdfOperations as u } from "../pdfOperationTracker.js";
9
- import { useEffect as d, useRef as f, useState as p } from "react";
10
- import * as m from "pdfjs-dist";
8
+ import { isPdfDocumentDestroyedError as l, markPdfDestroying as u, runPdfOperation as d, waitForPdfOperations as f } from "../pdfOperationTracker.js";
9
+ import { useEffect as p, useRef as m, useState as h } from "react";
10
+ import * as g from "pdfjs-dist";
11
11
  //#region lib/utils/hooks/useLoadPdf.ts
12
- var h = new TextEncoder().encode("/JPXDecode");
13
- function g(e) {
14
- return e.some((t, n) => t === h[0] ? h.every((t, r) => e[n + r] === t) : !1);
12
+ var _ = new TextEncoder().encode("/JPXDecode");
13
+ function v(e) {
14
+ return e.some((t, n) => t === _[0] ? _.every((t, r) => e[n + r] === t) : !1);
15
15
  }
16
- function _(e) {
16
+ function y(e) {
17
17
  let t = Error(o);
18
18
  return t.cause = e, t;
19
19
  }
20
- function v() {
20
+ function b() {
21
21
  return Error(c);
22
22
  }
23
- function y(e) {
23
+ function x(e) {
24
24
  let t = Error(a);
25
25
  return t.cause = e, t;
26
26
  }
27
- var b = (a, o, c = {}) => {
28
- let [h, b] = p(), { workerUrlAdded: x, wasmUrl: S, iccUrl: C, standardFontDataUrl: w } = n(), [T, E] = p(/* @__PURE__ */ new Map()), D = f(), [O, k] = p(0), [A, j] = p(!1), [M, N] = p(), { password: P, passwordError: F, setPasswordError: I, passwordRequired: L, setPasswordRequired: R } = i(), { onLoadError: z, onLoaded: B, onLoadProgress: V, disableAutoFetch: H, disableStream: U, rangeChunkSize: W, withCredentials: G, httpHeaders: K } = c;
29
- return d(() => {
30
- V && V(O);
31
- }, [O, V]), d(() => {
32
- if (!x || !a) return;
33
- k(0), N(void 0), D.current = Date.now();
34
- let t = D.current, n = {
27
+ var S = (a, o, c = {}) => {
28
+ let [_, S] = h(), { workerUrlAdded: C, wasmUrl: w, iccUrl: T, standardFontDataUrl: E } = n(), [D, O] = h(/* @__PURE__ */ new Map()), k = m(), [A, j] = h(0), [M, N] = h(!1), [P, F] = h(), { password: I, passwordError: L, setPasswordError: R, passwordRequired: z, setPasswordRequired: B } = i(), { onLoadError: V, onLoaded: H, onLoadProgress: U, disableAutoFetch: W, disableStream: G, rangeChunkSize: K, withCredentials: q, httpHeaders: J } = c;
29
+ return p(() => {
30
+ U && U(A);
31
+ }, [A, U]), p(() => {
32
+ if (!C || !a) return;
33
+ j(0), F(void 0), k.current = Date.now();
34
+ let t = k.current, n = {
35
35
  url: a,
36
36
  cMapPacked: o?.isCompressed ?? !0,
37
37
  ...o?.url && { cMapUrl: o.url },
38
- ...P && { password: P },
39
- ...H !== void 0 && { disableAutoFetch: H },
40
- ...U !== void 0 && { disableStream: U },
41
- ...W !== void 0 && { rangeChunkSize: W },
42
- ...G !== void 0 && { withCredentials: G },
43
- ...K !== void 0 && { httpHeaders: K },
44
- ...S && { wasmUrl: S },
45
- ...C && {
46
- iccUrl: C,
38
+ ...I && { password: I },
39
+ ...W !== void 0 && { disableAutoFetch: W },
40
+ ...G !== void 0 && { disableStream: G },
41
+ ...K !== void 0 && { rangeChunkSize: K },
42
+ ...q !== void 0 && { withCredentials: q },
43
+ ...J !== void 0 && { httpHeaders: J },
44
+ ...w && { wasmUrl: w },
45
+ ...T && {
46
+ iccUrl: T,
47
47
  useWorkerFetch: !0
48
48
  },
49
- ...w && { standardFontDataUrl: w },
50
- verbosity: m.VerbosityLevel.ERRORS
49
+ ...E && { standardFontDataUrl: E },
50
+ enableXfa: !0,
51
+ verbosity: g.VerbosityLevel.ERRORS
51
52
  };
52
53
  try {
53
- let i = m.getDocument(n);
54
+ let i = g.getDocument(n);
54
55
  i.onProgress = (e) => {
55
- if (t === D.current) {
56
+ if (t === k.current) {
56
57
  let { loaded: t, total: n } = e;
57
- k(n ? Math.min(100, Math.round(t / n * 100)) : 0);
58
+ j(n ? Math.min(100, Math.round(t / n * 100)) : 0);
58
59
  }
59
- }, j(!0), b(void 0);
60
- let a, o = i.promise.then(async (n) => (a = n, !S && g(await n.getData()) ? (t === D.current && (b(void 0), N(e.WASM_URL_REQUIRED)), r.error(s), z?.(v()), n) : (t === D.current && (b(n), k(100)), B && B(n), R(!1), I(""), n))).catch((t) => {
61
- if (t instanceof Error && t.name === "PasswordException") {
60
+ }, N(!0), S(void 0);
61
+ let a, o = i.promise.then(async (n) => (a = n, !w && v(await d(n, () => n.getData())) ? (t === k.current && (S(void 0), F(e.WASM_URL_REQUIRED)), r.error(s), V?.(b()), n) : (t === k.current && (S(n), j(100)), H && H(n), B(!1), R(""), n))).catch((t) => {
62
+ if (!l(t)) if (t instanceof Error && t.name === "PasswordException") {
62
63
  let e = t.code;
63
- R(!0), e === m.PasswordResponses.INCORRECT_PASSWORD ? I("Incorrect password") : I(void 0);
64
- } else t instanceof Error && t.name === "InvalidPDFException" && P ? (R(!0), I("Incorrect password")) : t instanceof Error && t.name === "InvalidPDFException" ? (N(e.INVALID_OR_CORRUPTED_PDF), z?.(_(t))) : z && z(t);
64
+ B(!0), e === g.PasswordResponses.INCORRECT_PASSWORD ? R("Incorrect password") : R(void 0);
65
+ } else t instanceof Error && t.name === "InvalidPDFException" && I ? (B(!0), R("Incorrect password")) : t instanceof Error && t.name === "InvalidPDFException" ? (F(e.INVALID_OR_CORRUPTED_PDF), V?.(y(t))) : V && V(t);
65
66
  }).finally(() => {
66
- j(!1);
67
+ N(!1);
67
68
  });
68
69
  return () => {
69
70
  o.finally(() => {
70
- (a ? u(a) : Promise.resolve()).finally(() => {
71
+ let e;
72
+ a ? (u(a), e = f(a)) : e = Promise.resolve(), e.finally(() => {
71
73
  i.destroy();
72
74
  });
73
75
  });
74
76
  };
75
77
  } catch (t) {
76
- N(e.NOT_SUPPORTED), z?.(y(t));
78
+ F(e.NOT_SUPPORTED), V?.(x(t));
77
79
  }
78
80
  }, [
79
81
  a,
80
- x,
81
- S,
82
82
  C,
83
83
  w,
84
- P,
85
- z,
86
- B
87
- ]), d(() => {
88
- if (L) return;
84
+ T,
85
+ E,
86
+ I,
87
+ V,
88
+ H
89
+ ]), p(() => {
90
+ if (z) return;
89
91
  let n = /* @__PURE__ */ new Map();
90
- if (!h || A) {
91
- E(n);
92
+ if (!_ || M) {
93
+ O(n);
92
94
  return;
93
95
  }
94
- let r = h.numPages, i = [];
96
+ let r = _.numPages, i = [];
95
97
  for (let e = 1; e <= r; e++) {
96
- let t = l(h, h.getPage(e));
98
+ let t = d(_, () => _.getPage(e));
97
99
  i.push(t);
98
100
  }
99
101
  Promise.allSettled(i).then((e) => {
@@ -107,24 +109,24 @@ var b = (a, o, c = {}) => {
107
109
  thumbnailScale: i,
108
110
  defaultRotation: a.rotation
109
111
  });
110
- }), E(n);
112
+ }), O(n);
111
113
  }).catch((t) => {
112
- b(void 0), N(e.INVALID_OR_CORRUPTED_PDF), z?.(_(t));
114
+ l(t) || (S(void 0), F(e.INVALID_OR_CORRUPTED_PDF), V?.(y(t)));
113
115
  });
114
116
  }, [
115
- h,
116
- A,
117
- L,
118
- z
117
+ _,
118
+ M,
119
+ z,
120
+ V
119
121
  ]), {
120
- pdf: h,
121
- pages: T,
122
- loading: A,
123
- error: M,
124
- loadingProgress: O,
125
- passwordRequired: L,
126
- passwordError: F
122
+ pdf: _,
123
+ pages: D,
124
+ loading: M,
125
+ error: P,
126
+ loadingProgress: A,
127
+ passwordRequired: z,
128
+ passwordError: L
127
129
  };
128
130
  };
129
131
  //#endregion
130
- export { b as useLoadPdf };
132
+ export { S as useLoadPdf };
@@ -1,39 +1,40 @@
1
- import { convertPDFDate as e } from "../convertPdfDate.js";
2
- import { formatFileSize as t } from "../formatFileSize.js";
3
- import { useCallback as n, useEffect as r, useState as i } from "react";
1
+ import { isPdfDocumentDestroyedError as e, runPdfOperation as t } from "../pdfOperationTracker.js";
2
+ import { convertPDFDate as n } from "../convertPdfDate.js";
3
+ import { formatFileSize as r } from "../formatFileSize.js";
4
+ import { useCallback as i, useEffect as a, useState as o } from "react";
4
5
  //#region lib/utils/hooks/usePdfProperties.ts
5
- var a = (a, o, s) => {
6
- let [c, l] = i(), u = n(async () => {
7
- if (!o || !a) return;
8
- let n = await o.getMetadata().then(), r = o.numPages, i = n?.info, c = await o.getDownloadInfo(), u = 0;
9
- c && (u = c.length);
10
- try {
11
- let n = e(i.CreationDate), a = e(i.ModDate);
12
- l({
13
- pageCount: r,
14
- filename: s || "",
15
- fileSize: t(u),
16
- title: i.Title,
17
- author: i.Author,
18
- subject: i.Subject,
19
- keywords: i.Keywords || "",
20
- creator: i.Creator,
21
- createdOn: n?.toISOString() || "",
22
- modifiedOn: a?.toISOString() || "",
23
- pdfProducer: i.Producer,
24
- pdfVersion: i.PDFFormatVersion
6
+ var s = (s, c, l) => {
7
+ let [u, d] = o(), f = i(async () => {
8
+ if (!(!c || !s)) try {
9
+ let e = await t(c, () => c.getMetadata()), i = c.numPages, a = e?.info, o = await t(c, () => c.getDownloadInfo()), s = 0;
10
+ o && (s = o.length);
11
+ let u = n(a.CreationDate), f = n(a.ModDate);
12
+ d({
13
+ pageCount: i,
14
+ filename: l || "",
15
+ fileSize: r(s),
16
+ title: a.Title,
17
+ author: a.Author,
18
+ subject: a.Subject,
19
+ keywords: a.Keywords || "",
20
+ creator: a.Creator,
21
+ createdOn: u?.toISOString() || "",
22
+ modifiedOn: f?.toISOString() || "",
23
+ pdfProducer: a.Producer,
24
+ pdfVersion: a.PDFFormatVersion
25
25
  });
26
- } catch (e) {
27
- console.log("properties err", e);
26
+ } catch (t) {
27
+ if (e(t)) return;
28
+ console.log("properties err", t);
28
29
  }
29
30
  }, [
30
- o,
31
- s,
32
- a
31
+ c,
32
+ l,
33
+ s
33
34
  ]);
34
- return r(() => {
35
- u();
36
- }, [u]), c;
35
+ return a(() => {
36
+ f();
37
+ }, [f]), u;
37
38
  };
38
39
  //#endregion
39
- export { a as usePdfProperties };
40
+ export { s as usePdfProperties };
@@ -1,69 +1,72 @@
1
1
  "use client";
2
- import { useDocumentContext as e } from "../../contexts/RPDocumentContext.js";
3
- import { useCallback as t, useEffect as n, useRef as r, useState as i } from "react";
4
- import { AnnotationMode as a, PixelsPerInch as o, RenderingCancelledException as s } from "pdfjs-dist";
2
+ import { runPdfOperation as e } from "../pdfOperationTracker.js";
3
+ import { useDocumentContext as t } from "../../contexts/RPDocumentContext.js";
4
+ import { SimpleLinkService as n } from "../link_service.js";
5
+ import { t as r } from "../../XfaLayer.module-w4FOd2dm.js";
6
+ import { useCallback as i, useEffect as a, useRef as o, useState as s } from "react";
7
+ import { AnnotationMode as c, PixelsPerInch as l, RenderingCancelledException as u, XfaLayer as d, getXfaPageViewport as f } from "pdfjs-dist";
5
8
  //#region lib/utils/hooks/usePrint.ts
6
- var c = () => {
7
- let { pdf: c, pages: l } = e(), [u, d] = i({
9
+ var p = () => {
10
+ let { pdf: p, pages: m } = t(), [h, g] = s({
8
11
  loadedPages: 0,
9
12
  totalPages: 0,
10
13
  percentage: 0
11
- }), [f, p] = i(!1), [m, h] = i(!1), [g, _] = i(null), [v, y] = i(void 0), b = r(!1);
12
- n(() => {
13
- b.current;
14
- }, [b]);
15
- let x = t(() => {
14
+ }), [_, v] = s(!1), [y, b] = s(!1), [x, S] = s(null), [C, w] = s(void 0), T = o(!1);
15
+ a(() => {
16
+ T.current;
17
+ }, [T]);
18
+ let E = i(() => {
16
19
  document.documentElement.classList.remove("rp-print-html-printing"), document.body.classList.remove("rp-print-body-printing");
17
20
  let e = document.querySelector(".rp-print-zone");
18
21
  e && e.remove();
19
- }, []), S = t(() => {
20
- b.current = !1, p(!1), h(!1), _(null), y(void 0), d({
22
+ }, []), D = i(() => {
23
+ T.current = !1, v(!1), b(!1), S(null), w(void 0), g({
21
24
  loadedPages: 0,
22
25
  totalPages: 0,
23
26
  percentage: 0
24
27
  });
25
- }, []), C = () => {
26
- b.current = !0;
27
- }, w = async ({ scratchCanvas: e, pdfDocument: t, pageNumber: n, viewerPdfPage: r, printResolution: i, optionalContentConfigPromise: c, printAnnotationStoragePromise: l }) => {
28
- if (b.current) {
29
- S();
28
+ }, []), O = () => {
29
+ T.current = !0;
30
+ }, k = async ({ scratchCanvas: t, pdfDocument: n, pageNumber: r, viewerPdfPage: i, printResolution: a, optionalContentConfigPromise: o, printAnnotationStoragePromise: s }) => {
31
+ if (T.current) {
32
+ D();
30
33
  return;
31
34
  }
32
- let u = i / o.PDF;
33
- e.width = Math.floor(r.width * u), e.height = Math.floor(r.height * u);
34
- let d = e.getContext("2d");
35
- d.save(), d.fillStyle = "rgb(255, 255, 255)", d.fillRect(0, 0, e.width, e.height), d.restore();
36
- let [f, p] = await Promise.all([t.getPage(n), l]);
37
- if (b.current) {
38
- S();
35
+ let d = a / l.PDF;
36
+ t.width = Math.floor(i.width * d), t.height = Math.floor(i.height * d);
37
+ let f = t.getContext("2d");
38
+ f.save(), f.fillStyle = "rgb(255, 255, 255)", f.fillRect(0, 0, t.width, t.height), f.restore();
39
+ let [p, m] = await Promise.all([e(n, () => n.getPage(r)), s]);
40
+ if (T.current) {
41
+ D();
39
42
  return;
40
43
  }
41
- let m = {
42
- canvas: e,
43
- canvasContext: d,
44
+ let h = {
45
+ canvas: t,
46
+ canvasContext: f,
44
47
  transform: [
45
- u,
48
+ d,
46
49
  0,
47
50
  0,
48
- u,
51
+ d,
49
52
  0,
50
53
  0
51
54
  ],
52
- viewport: f.getViewport({
55
+ viewport: p.getViewport({
53
56
  scale: 1,
54
- rotation: r.rotation
57
+ rotation: i.rotation
55
58
  }),
56
59
  intent: "print",
57
- annotationMode: a.ENABLE_STORAGE,
58
- optionalContentConfigPromise: c,
59
- printAnnotationStorage: p
60
+ annotationMode: c.ENABLE_STORAGE,
61
+ optionalContentConfigPromise: o,
62
+ printAnnotationStorage: m
60
63
  };
61
64
  try {
62
- return f.render(m).promise;
65
+ return p.render(h).promise;
63
66
  } catch (e) {
64
- throw e instanceof s || console.error(e), e;
67
+ throw e instanceof u || console.error(e), e;
65
68
  }
66
- }, T = t(() => {
69
+ }, A = i(() => {
67
70
  let e = window.print;
68
71
  return new Promise((t) => {
69
72
  let n = (t) => {
@@ -83,10 +86,29 @@ var c = () => {
83
86
  subtree: !0
84
87
  });
85
88
  });
86
- }, []), E = (e) => {
87
- let t = document.createElement("img"), n = document.createElement("div");
88
- return n.classList.add("rp-print-page"), t.src = e.toDataURL(), n.appendChild(t), n;
89
- }, D = (e, t) => {
89
+ }, []), j = (e, t) => {
90
+ let n = document.createElement("img"), r = document.createElement("div"), i = document.createElement("div");
91
+ return r.classList.add("rp-print-page"), i.classList.add("rp-print-page-content"), i.style.width = `${t.width}pt`, i.style.height = `${t.height}pt`, n.src = e.toDataURL(), i.appendChild(n), r.appendChild(i), r;
92
+ }, M = (e) => {
93
+ let t = e.allXfaHtml;
94
+ if (!t?.children?.length) return [];
95
+ let i = new n(e, () => {}), a = Math.round(l.PDF_TO_CSS_UNITS * 100) / 100;
96
+ return t.children.map((t) => {
97
+ let n = document.createElement("div");
98
+ n.classList.add("rp-print-page", "rp-print-xfa-page");
99
+ let o = document.createElement("div");
100
+ o.className = r["rp-xfa-layer"];
101
+ let s = document.createElement("div");
102
+ return o.appendChild(s), n.appendChild(o), d.render({
103
+ div: s,
104
+ viewport: f(t, { scale: a }).clone({ dontFlip: !0 }),
105
+ xfaHtml: t,
106
+ annotationStorage: e.annotationStorage,
107
+ linkService: i,
108
+ intent: "print"
109
+ }), n;
110
+ });
111
+ }, N = (e, t) => {
90
112
  let n = document.createElement("div");
91
113
  n.classList.add("rp-print-zone");
92
114
  let r = document.createElement("style"), i = t.get(1);
@@ -95,74 +117,87 @@ var c = () => {
95
117
  r.innerHTML = `@page { size: ${e}pt ${t}pt; margin: 0; }`;
96
118
  }
97
119
  return n.appendChild(r), n.append(...e), n;
98
- }, O = t(async (e) => {
99
- if (!c) return;
100
- S();
101
- let t = e && "visibleDefaultProgress" in e ? e : void 0;
102
- t?.visibleDefaultProgress === void 0 ? y(!0) : y(t.visibleDefaultProgress);
103
- let n = document.createElement("canvas"), r = [];
120
+ }, P = i(async (t) => {
121
+ if (!p) return;
122
+ D();
123
+ let n = t && "visibleDefaultProgress" in t ? t : void 0;
124
+ n?.visibleDefaultProgress === void 0 ? w(!0) : w(n.visibleDefaultProgress);
125
+ let r = document.createElement("canvas"), i = [];
104
126
  try {
105
- c.isPureXfa && console.warn("[rp] XFA Form is not supported at the moment.");
106
- let e = c.getOptionalContentConfig({ intent: "print" }), t = Promise.resolve(c.annotationStorage.print ?? void 0), i = l.size;
107
- for (let [a, o] of l) {
108
- if (b.current) {
109
- S();
127
+ if (p.isPureXfa) {
128
+ if (i.push(...M(p)), T.current) {
129
+ D();
130
+ return;
131
+ }
132
+ let e = N(i, m);
133
+ document.body.appendChild(e), document.documentElement.classList.add("rp-print-html-printing"), document.body.classList.add("rp-print-body-printing"), g({
134
+ loadedPages: i.length,
135
+ totalPages: i.length,
136
+ percentage: 100
137
+ }), v(!0), await A();
138
+ return;
139
+ }
140
+ let t = e(p, () => p.getOptionalContentConfig({ intent: "print" })), n = Promise.resolve(p.annotationStorage.print ?? void 0), a = m.size;
141
+ for (let [e, o] of m) {
142
+ if (T.current) {
143
+ D();
110
144
  return;
111
145
  }
112
- if (await w({
113
- scratchCanvas: n,
114
- pdfDocument: c,
115
- pageNumber: a,
116
- viewerPdfPage: o.page.getViewport({ scale: 1 }),
146
+ let s = o.page.getViewport({ scale: 1 });
147
+ if (await k({
148
+ scratchCanvas: r,
149
+ pdfDocument: p,
150
+ pageNumber: e,
151
+ viewerPdfPage: s,
117
152
  printResolution: 150,
118
- optionalContentConfigPromise: e,
119
- printAnnotationStoragePromise: t
120
- }), b.current) {
121
- S();
153
+ optionalContentConfigPromise: t,
154
+ printAnnotationStoragePromise: n
155
+ }), T.current) {
156
+ D();
122
157
  return;
123
158
  }
124
- let s = E(n);
125
- r.push(s), d({
126
- loadedPages: a,
127
- totalPages: i,
128
- percentage: parseFloat((r.length / i * 100).toFixed(2))
159
+ let c = j(r, s);
160
+ i.push(c), g({
161
+ loadedPages: e,
162
+ totalPages: a,
163
+ percentage: parseFloat((i.length / a * 100).toFixed(2))
129
164
  });
130
165
  }
131
- if (b.current) {
132
- S();
166
+ if (T.current) {
167
+ D();
133
168
  return;
134
169
  }
135
- let a = D(r, l);
136
- document.body.appendChild(a), document.documentElement.classList.add("rp-print-html-printing"), document.body.classList.add("rp-print-body-printing"), p(!0), await T();
170
+ let o = N(i, m);
171
+ document.body.appendChild(o), document.documentElement.classList.add("rp-print-html-printing"), document.body.classList.add("rp-print-body-printing"), v(!0), await A();
137
172
  } catch (e) {
138
- h(!0), e instanceof Error && _(e);
173
+ b(!0), e instanceof Error && S(e);
139
174
  } finally {
140
- n.height = 0, n.width = 0;
175
+ r.height = 0, r.width = 0;
141
176
  }
142
177
  }, [
143
- c,
144
- l,
145
- b,
146
- S,
178
+ p,
179
+ m,
180
+ T,
147
181
  D,
148
- T
182
+ N,
183
+ A
149
184
  ]);
150
- return n(() => {
185
+ return a(() => {
151
186
  let e = () => {
152
- S(), x();
187
+ D(), E();
153
188
  };
154
189
  return window.addEventListener("afterprint", e, !0), () => {
155
190
  window.removeEventListener("afterprint", e, !0);
156
191
  };
157
- }, [x, S]), {
158
- print: O,
159
- cancel: C,
160
- progress: u,
161
- isComplete: f,
162
- isError: m,
163
- error: g,
164
- showDefaultProgress: v
192
+ }, [E, D]), {
193
+ print: P,
194
+ cancel: O,
195
+ progress: h,
196
+ isComplete: _,
197
+ isError: y,
198
+ error: x,
199
+ showDefaultProgress: C
165
200
  };
166
201
  };
167
202
  //#endregion
168
- export { c as usePrint };
203
+ export { p as usePrint };