@react-pdf-kit/viewer 2.8.0-beta.6 → 2.8.0-beta.7

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 (148) hide show
  1. package/dist/{AnnotationLayer-CAIvKf_O.js → AnnotationLayer-Dl6VxRzL.js} +2 -2
  2. package/dist/CanvasLayer-cRwL_IIT.js +105 -0
  3. package/dist/{LoadingIndicator-DiWoWs4Y.js → LoadingIndicator-B_Jsf8No.js} +7 -7
  4. package/dist/MenuItem-D-GflAAo.js +31 -0
  5. package/dist/{PaginationContext-Cwf8sCpK.js → PaginationContext-B3qzCYJu.js} +46 -53
  6. package/dist/{PasswordModal-CB9Rd2zJ.js → PasswordModal-BW_C2ULg.js} +11 -11
  7. package/dist/RPLayout.module-DCbTHUuG.js +14 -0
  8. package/dist/{RPPages-CmXHTAqF.js → RPPages-5yXo7yhq.js} +616 -316
  9. package/dist/{RPTooltip-ZZoFqP7C.js → RPTooltip-COLVx-C_.js} +123 -91
  10. package/dist/SearchTool.module-DY8Ucfb_.js +17 -0
  11. package/dist/{SkipLink-CdcjClGB.js → SkipLink-Dj83gZdk.js} +3 -3
  12. package/dist/{TextLayer-DWGFN9SF.js → TextLayer-BdoXGj0Z.js} +5 -5
  13. package/dist/{Thumbnail-CzclS3h_.js → Thumbnail-BVjnCNxv.js} +6 -6
  14. package/dist/{Thumbnails-DnAsrttK.js → Thumbnails-CrKLESh3.js} +2 -2
  15. package/dist/assets/AnnotationLayer.css +1 -1
  16. package/dist/assets/CanvasLayer.css +1 -0
  17. package/dist/assets/LoadingIndicator.css +1 -1
  18. package/dist/assets/MenuItem.css +1 -1
  19. package/dist/assets/PasswordModal.css +1 -1
  20. package/dist/assets/RPLayout.css +1 -1
  21. package/dist/assets/SearchTool.css +1 -1
  22. package/dist/assets/SkipLink.css +1 -1
  23. package/dist/assets/TextLayer.css +1 -1
  24. package/dist/assets/Thumbnail.css +1 -1
  25. package/dist/assets/style.js +1 -1
  26. package/dist/components/RPController.js +1 -1
  27. package/dist/components/RPPages.js +1 -1
  28. package/dist/components/RPProvider.js +1 -1
  29. package/dist/components/layout/LayoutContainer.js +1 -1
  30. package/dist/components/layout/LayoutWrapper.js +1 -1
  31. package/dist/components/layout/RPDefaultLayout.js +2 -2
  32. package/dist/components/layout/RPLayout.js +2 -2
  33. package/dist/components/layout/SkipLink.js +1 -1
  34. package/dist/components/layout/sidebar/RPSidebar.js +2 -2
  35. package/dist/components/layout/sidebar/Thumbnail.js +1 -1
  36. package/dist/components/layout/sidebar/Thumbnails.js +1 -1
  37. package/dist/components/layout/toolbar/DarkModeTool.js +1 -1
  38. package/dist/components/layout/toolbar/DocumentProperties.js +6 -6
  39. package/dist/components/layout/toolbar/FileDownloadTool.js +6 -6
  40. package/dist/components/layout/toolbar/FileUploadTool.js +6 -6
  41. package/dist/components/layout/toolbar/FullScreenTool.js +9 -8
  42. package/dist/components/layout/toolbar/MenuItem.js +1 -1
  43. package/dist/components/layout/toolbar/MostPageTool.js +23 -29
  44. package/dist/components/layout/toolbar/OtherTool.js +1 -1
  45. package/dist/components/layout/toolbar/Paginate.js +2 -2
  46. package/dist/components/layout/toolbar/PrintTool.js +6 -6
  47. package/dist/components/layout/toolbar/RPMenuItem.js +2 -2
  48. package/dist/components/layout/toolbar/RPMoreOptions.js +1 -1
  49. package/dist/components/layout/toolbar/RPToolbar.js +1 -1
  50. package/dist/components/layout/toolbar/RotateTool.js +10 -10
  51. package/dist/components/layout/toolbar/ScrollModeTool.js +15 -15
  52. package/dist/components/layout/toolbar/SearchCloseButton.js +2 -2
  53. package/dist/components/layout/toolbar/SearchResultNavigator.js +2 -2
  54. package/dist/components/layout/toolbar/SearchTool.js +133 -121
  55. package/dist/components/layout/toolbar/SelectionModeTool.js +10 -10
  56. package/dist/components/layout/toolbar/ThumbnailTool.js +1 -1
  57. package/dist/components/layout/toolbar/ToolbarCustom.js +2 -2
  58. package/dist/components/layout/toolbar/ToolbarDefault.js +2 -2
  59. package/dist/components/layout/toolbar/ViewModeTool.js +16 -16
  60. package/dist/components/layout/toolbar/ZoomTool.js +82 -80
  61. package/dist/components/layout/toolbar/tools/DocumentPropertiesTool.js +1 -1
  62. package/dist/components/layout/toolbar/tools/DualPageTool.js +1 -1
  63. package/dist/components/layout/toolbar/tools/DualPageWithCoverTool.js +1 -1
  64. package/dist/components/layout/toolbar/tools/FileDownloadTool.js +1 -1
  65. package/dist/components/layout/toolbar/tools/FileUploadTool.js +1 -1
  66. package/dist/components/layout/toolbar/tools/FirstPageTool.js +1 -1
  67. package/dist/components/layout/toolbar/tools/FullScreenTool.js +1 -1
  68. package/dist/components/layout/toolbar/tools/HorizontalScrollingTool.js +1 -1
  69. package/dist/components/layout/toolbar/tools/InputPageTool.js +2 -2
  70. package/dist/components/layout/toolbar/tools/LastPageTool.js +1 -1
  71. package/dist/components/layout/toolbar/tools/NextPageTool.js +2 -2
  72. package/dist/components/layout/toolbar/tools/PageScrollingTool.js +1 -1
  73. package/dist/components/layout/toolbar/tools/PreviousPageTool.js +2 -2
  74. package/dist/components/layout/toolbar/tools/PrintTool.js +1 -1
  75. package/dist/components/layout/toolbar/tools/RotateClockwiseTool.js +1 -1
  76. package/dist/components/layout/toolbar/tools/RotateCounterclockwiseTool.js +1 -1
  77. package/dist/components/layout/toolbar/tools/SelectionModeSwitcherTool.js +1 -1
  78. package/dist/components/layout/toolbar/tools/SinglePageTool.js +1 -1
  79. package/dist/components/layout/toolbar/tools/ThemeSwitcherTool.js +1 -1
  80. package/dist/components/layout/toolbar/tools/ThumbnailTool.js +1 -1
  81. package/dist/components/layout/toolbar/tools/VerticalScrollingTool.js +1 -1
  82. package/dist/components/layout/toolbar/tools/ZoomInTool.js +25 -23
  83. package/dist/components/layout/toolbar/tools/ZoomLevelDisplay.js +1 -1
  84. package/dist/components/layout/toolbar/tools/ZoomLevelTool.js +2 -2
  85. package/dist/components/layout/toolbar/tools/ZoomOutTool.js +25 -23
  86. package/dist/components/layout/toolbar/tools/more-options/DocumentProperties.js +2 -2
  87. package/dist/components/layout/toolbar/tools/more-options/FileDownloadTool.js +2 -2
  88. package/dist/components/layout/toolbar/tools/more-options/FileUploadTool.js +2 -2
  89. package/dist/components/layout/toolbar/tools/more-options/FullScreenTool.js +2 -2
  90. package/dist/components/layout/toolbar/tools/more-options/MostPageTool.js +3 -3
  91. package/dist/components/layout/toolbar/tools/more-options/PrintTool.js +2 -2
  92. package/dist/components/layout/toolbar/tools/more-options/RotateTool.js +2 -2
  93. package/dist/components/layout/toolbar/tools/more-options/ScrollModeTool.js +2 -2
  94. package/dist/components/layout/toolbar/tools/more-options/SelectionModeTool.js +2 -2
  95. package/dist/components/layout/toolbar/tools/more-options/ViewModeTool.js +2 -2
  96. package/dist/components/page/AnnotationLayer.js +1 -1
  97. package/dist/components/page/CanvasLayer.js +2 -48
  98. package/dist/components/page/DualPage.js +2 -2
  99. package/dist/components/page/DualPageWithCover.js +2 -2
  100. package/dist/components/page/RPPage.js +94 -2
  101. package/dist/components/page/SinglePage.js +2 -2
  102. package/dist/components/page/TextLayer.js +1 -1
  103. package/dist/components/ui/LoadingIndicator.js +1 -1
  104. package/dist/components/ui/PasswordModal.js +1 -1
  105. package/dist/components/ui/RPTooltip.js +1 -1
  106. package/dist/contexts/DimensionPagesContext.js +38 -22
  107. package/dist/contexts/ElementThumbnailContext.js +1 -1
  108. package/dist/contexts/PaginationContext.js +1 -1
  109. package/dist/contexts/RenderQueueProvider.js +11 -7
  110. package/dist/contexts/ZoomContext.js +119 -61
  111. package/dist/{de_DE-DwUvXUWH.js → de_DE-C1OrwQKj.js} +18 -0
  112. package/dist/{main-CKr9unOk.js → main-CdlJS0xf.js} +2 -2
  113. package/dist/main.js +4 -4
  114. package/dist/style-CWQAmimK.js +5 -0
  115. package/dist/types/components/ui/RPTooltip.d.ts +3 -2
  116. package/dist/types/contexts/RenderQueueProvider.d.ts +2 -0
  117. package/dist/types/locales/de_DE.json.d.ts +3 -0
  118. package/dist/types/locales/en_US.json.d.ts +3 -0
  119. package/dist/types/locales/it_IT.json.d.ts +3 -0
  120. package/dist/types/locales/pt_PT.json.d.ts +3 -0
  121. package/dist/types/locales/th_TH.json.d.ts +3 -0
  122. package/dist/types/locales/zh_CN.json.d.ts +3 -0
  123. package/dist/types/utils/Queue.d.ts +1 -0
  124. package/dist/types/utils/constants.d.ts +8 -0
  125. package/dist/types/utils/hooks/usePinch.d.ts +14 -1
  126. package/dist/types/utils/hooks/useZoomOrigin.d.ts +4 -0
  127. package/dist/types/utils/types.d.ts +17 -1
  128. package/dist/types/utils/zoom.d.ts +2 -0
  129. package/dist/utils/Queue.js +5 -0
  130. package/dist/utils/constants.js +2 -2
  131. package/dist/utils/hooks/useLicense.js +1 -1
  132. package/dist/utils/hooks/useLocalization.js +1 -1
  133. package/dist/utils/hooks/usePaginate.js +1 -1
  134. package/dist/utils/hooks/usePinch.js +102 -56
  135. package/dist/utils/hooks/usePresentPage.js +23 -19
  136. package/dist/utils/hooks/useScrollToPage.js +1 -1
  137. package/dist/utils/hooks/useSearch.js +1 -1
  138. package/dist/utils/hooks/useZoomOrigin.js +37 -0
  139. package/dist/utils/renderPage.js +21 -14
  140. package/dist/utils/types.js +2 -2
  141. package/dist/utils/zoom.js +8 -2
  142. package/package.json +1 -1
  143. package/dist/MenuItem-BJDWfzAw.js +0 -15
  144. package/dist/RPLayout.module-Vc3h4xxS.js +0 -14
  145. package/dist/RPPage-C_r8aeTc.js +0 -91
  146. package/dist/SearchTool.module-DUkVXfOn.js +0 -16
  147. package/dist/assets/RPPage.css +0 -1
  148. package/dist/style-C8T5x1fE.js +0 -5
@@ -3,7 +3,7 @@ import { LicenseType as t } from "../types.js";
3
3
  import { appConsole as n } from "../appConsole.js";
4
4
  import { useCallback as r, useEffect as i, useState as a } from "react";
5
5
  //#region lib/utils/hooks/useLicense.ts
6
- var o = /* @__PURE__ */ new Date("2026-05-26T18:15:26.427Z"), s = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIokvErJ0Fctu0jduSAx\ngr+5Har/VSuZLlOunS28hnlqqA+OF1apHL7RYkjBosS15yvviYdLrVWYHpHnoY4b\nHLQ9I6YX6FMB9T/VbB4xLdVdKvfi8r49aTScl5EKuSpgpPgz2VSJTfvVGcRuth/Y\nBm7PPGYdL2l2gvKDxchmmsHFPukGki9L4JOUeIVX0GXAxabENckaEH/iC1NZhX+W\nvXnpHeHuIIKlZ16LSivXNgo6BH2Z3GFdg4G3cAaXr6qNP8fsacYNqv2SpTW1viFD\nvzcGRabN25gpJAp9/syeScefWH3OiJY1lmw88oTiJbjIoiq6AkPhfn3G9mF54nvR\nkwIDAQAB\n-----END PUBLIC KEY-----", c = "Please visit https://app.react-pdf-kit.dev to generate a new license key.", l = {
6
+ var o = /* @__PURE__ */ new Date("2026-07-10T06:52:37.170Z"), s = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIokvErJ0Fctu0jduSAx\ngr+5Har/VSuZLlOunS28hnlqqA+OF1apHL7RYkjBosS15yvviYdLrVWYHpHnoY4b\nHLQ9I6YX6FMB9T/VbB4xLdVdKvfi8r49aTScl5EKuSpgpPgz2VSJTfvVGcRuth/Y\nBm7PPGYdL2l2gvKDxchmmsHFPukGki9L4JOUeIVX0GXAxabENckaEH/iC1NZhX+W\nvXnpHeHuIIKlZ16LSivXNgo6BH2Z3GFdg4G3cAaXr6qNP8fsacYNqv2SpTW1viFD\nvzcGRabN25gpJAp9/syeScefWH3OiJY1lmw88oTiJbjIoiq6AkPhfn3G9mF54nvR\nkwIDAQAB\n-----END PUBLIC KEY-----", c = "Please visit https://app.react-pdf-kit.dev to generate a new license key.", l = {
7
7
  invalidLicense: `You are currently using without a valid license. ${c}`,
8
8
  mismatchedDomain: `Your license key is not valid for the current domain / IP. ${c}`,
9
9
  expired: `Your license key has expired. ${c}`,
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../../de_DE-DwUvXUWH.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../../de_DE-C1OrwQKj.js";
2
2
  import { useCallback as o, useMemo as s, useState as c } from "react";
3
3
  //#region lib/utils/hooks/useLocalization.ts
4
4
  var l = (l) => {
@@ -1,2 +1,2 @@
1
- import { i as e } from "../../PaginationContext-Cwf8sCpK.js";
1
+ import { i as e } from "../../PaginationContext-B3qzCYJu.js";
2
2
  export { e as usePaginate };
@@ -1,66 +1,112 @@
1
- import { useDebounce as e } from "./useDebounce.js";
1
+ import { MAX_ZOOM_SCALE as e } from "../constants.js";
2
2
  import { useZoomContext as t } from "../../contexts/ZoomContext.js";
3
- import { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
3
+ import { getZoomOriginFromClientPoint as n } from "./useZoomOrigin.js";
4
+ import { useCallback as r, useEffect as i, useRef as a } from "react";
4
5
  //#region lib/utils/hooks/usePinch.ts
5
- var o = (o) => {
6
- let { currentZoom: s, setZoomLevel: c } = t(), [l, u] = a(0), d = e(l, 100), [f, p] = a(!1), m = i(null), h = n((e) => {
7
- u(e ? (e) => e + 3 : (e) => e - 3);
8
- }, []), g = n((e) => {
9
- e.ctrlKey && (e.preventDefault(), h(e.deltaY < 0));
10
- }, [h]);
11
- r(() => {
12
- if (d) {
13
- let e = Math.round(s * 100 + d);
14
- u(0), c(e > 25 ? e : 25);
6
+ var o = () => 35 / (window.devicePixelRatio || 1), s = (s, c = {}) => {
7
+ let { targetZoom: l, zoomTo: u } = t(), { onBeforeZoom: d, onPinchEnd: f } = c, p = a(null), m = a(!1), h = a(1), g = a(1), _ = a(!1), v = a(!1), y = a(), b = a(l), x = a(null);
8
+ i(() => {
9
+ b.current = l;
10
+ }, [l]);
11
+ let S = r((e, t, n) => {
12
+ if (t === 1) return 1;
13
+ let r = n.current;
14
+ (r > 1 && t < 1 || r < 1 && t > 1) && (n.current = 1);
15
+ let i = Math.floor(e * t * n.current * 100) / (100 * e);
16
+ return n.current = t / i, i;
17
+ }, []), C = r((t, n, r) => {
18
+ let i = b.current || 1, a = 25 / 100, o = e / 100;
19
+ if (i >= o && t > 1 || i <= a && t < 1) return;
20
+ let s = Math.max(a, Math.min(o, Math.round(i * t * 100) / 100));
21
+ Math.abs(s - i) < 1e-10 || (d?.({
22
+ gesture: r,
23
+ previousScale: i,
24
+ nextScale: s,
25
+ origin: n
26
+ }), b.current = s, u(s * 100, {
27
+ origin: n,
28
+ gesture: r,
29
+ previousTargetZoom: i
30
+ }));
31
+ }, [d, u]), w = r((e, t) => n(s, e, t) ?? void 0, [s]), T = r(() => {
32
+ v.current || (_.current = !0, clearTimeout(y.current), y.current = setTimeout(() => {
33
+ _.current = !1;
34
+ }, 100));
35
+ }, []), E = r((e) => {
36
+ if (!e.ctrlKey) {
37
+ v.current = !1;
38
+ return;
15
39
  }
16
- }, [d]);
17
- let _ = (e, t) => {
18
- let n = e.clientX - t.clientX, r = e.clientY - t.clientY;
19
- return Math.sqrt(n * n + r * r);
20
- }, v = n((e) => {
21
- !f || e.touches.length !== 2 || (m.current = _(e.touches[0], e.touches[1]), e.preventDefault());
22
- }, [f]), y = n(() => {
23
- m.current = null;
24
- }, []), b = n((e) => {
25
- if (!f || e.touches.length !== 2 || m.current === null) return;
26
- let t = _(e.touches[0], e.touches[1]), n = t - m.current;
27
- Math.abs(n) > 5 && (h(n > 0), m.current = t, e.preventDefault());
28
- }, [h, f]), x = () => {
29
- document.activeElement instanceof HTMLElement && document.activeElement.blur();
30
- };
31
- r(() => {
32
- if (f) {
33
- document.body.style.touchAction = "pan-x pan-y";
40
+ if (v.current = !0, e.preventDefault(), _.current) return;
41
+ let t = Math.exp(-e.deltaY / 100);
42
+ C(S(b.current || 1, t, g), w(e.clientX, e.clientY), "wheel");
43
+ }, [
44
+ S,
45
+ w,
46
+ C
47
+ ]), D = (e) => Array.from(e.touches).sort((e, t) => e.identifier - t.identifier), O = r(() => {
48
+ !s || x.current || (x.current = {
49
+ touchAction: s.style.touchAction,
50
+ webkitUserSelect: s.style.webkitUserSelect,
51
+ overscrollBehavior: s.style.overscrollBehavior,
52
+ webkitOverflowScrolling: s.style.getPropertyValue("-webkit-overflow-scrolling")
53
+ }, s.style.touchAction = "none", s.style.webkitUserSelect = "none", s.style.overscrollBehavior = "contain", s.style.setProperty("-webkit-overflow-scrolling", "auto"));
54
+ }, [s]), k = r(() => {
55
+ !s || !x.current || (s.style.touchAction = x.current.touchAction, s.style.webkitUserSelect = x.current.webkitUserSelect, s.style.overscrollBehavior = x.current.overscrollBehavior, x.current.webkitOverflowScrolling ? s.style.setProperty("-webkit-overflow-scrolling", x.current.webkitOverflowScrolling) : s.style.removeProperty("-webkit-overflow-scrolling"), x.current = null);
56
+ }, [s]), A = r(() => {
57
+ p.current = null, m.current = !1, h.current = 1, k(), f?.();
58
+ }, [f, k]), j = r((e) => {
59
+ if (e.touches.length !== 2) {
60
+ A();
34
61
  return;
35
62
  }
36
- document.body.style.touchAction = "";
37
- }, [f]), r(() => {
38
- let e = () => {
39
- let e = document.activeElement;
40
- p(!!e?.closest("[data-rp=\"container\"]"));
41
- };
42
- return window.addEventListener("focusin", e), window.addEventListener("focusout", e), e(), () => {
43
- window.removeEventListener("focusin", e), window.removeEventListener("focusout", e);
44
- };
45
- }, []), r(() => {
46
- if (!o) return;
47
- let e = (e) => {
48
- o.contains(e.target) || x();
49
- };
50
- return document.addEventListener("scroll", e), () => {
51
- document.removeEventListener("scroll", e);
52
- };
53
- }, [o]), r(() => {
54
- if (o) return o.addEventListener("wheel", g, { passive: !1 }), o.addEventListener("touchstart", v, { passive: !1 }), o.addEventListener("touchmove", b, { passive: !1 }), o.addEventListener("touchend", y, { passive: !1 }), () => {
55
- o.removeEventListener("wheel", g), o.removeEventListener("touchstart", v), o.removeEventListener("touchmove", b), o.removeEventListener("touchend", y);
63
+ O(), e.preventDefault(), e.stopPropagation();
64
+ let [t, n] = D(e);
65
+ p.current = {
66
+ touch0ScreenX: t.screenX,
67
+ touch0ScreenY: t.screenY,
68
+ touch1ScreenX: n.screenX,
69
+ touch1ScreenY: n.screenY
70
+ }, m.current = !1;
71
+ }, [O, A]), M = r((e) => {
72
+ let t = p.current;
73
+ if (!t || e.touches.length !== 2) {
74
+ A();
75
+ return;
76
+ }
77
+ e.preventDefault(), e.stopPropagation();
78
+ let [n, r] = D(e), i = t.touch1ScreenX - t.touch0ScreenX, a = t.touch1ScreenY - t.touch0ScreenY, s = r.screenX - n.screenX, c = r.screenY - n.screenY, l = Math.hypot(i, a) || 1, u = Math.hypot(s, c) || 1;
79
+ if (!m.current && Math.abs(l - u) <= o()) return;
80
+ if (t.touch0ScreenX = n.screenX, t.touch0ScreenY = n.screenY, t.touch1ScreenX = r.screenX, t.touch1ScreenY = r.screenY, !m.current) {
81
+ m.current = !0;
82
+ return;
83
+ }
84
+ let d = u / l;
85
+ C(S(b.current || 1, d, h), w((n.clientX + r.clientX) / 2, (n.clientY + r.clientY) / 2), "touch");
86
+ }, [
87
+ S,
88
+ w,
89
+ A,
90
+ C
91
+ ]), N = r((e) => {
92
+ e.touches.length >= 2 || (A(), g.current = 1);
93
+ }, [A]), P = r(() => {
94
+ A(), g.current = 1;
95
+ }, [A]);
96
+ i(() => {
97
+ if (s) return s.addEventListener("wheel", E, { passive: !1 }), s.addEventListener("scroll", T, { passive: !0 }), s.addEventListener("touchstart", j, { passive: !1 }), s.addEventListener("touchmove", M, { passive: !1 }), s.addEventListener("touchend", N, { passive: !1 }), s.addEventListener("touchcancel", P, { passive: !1 }), () => {
98
+ k(), s.removeEventListener("wheel", E), s.removeEventListener("scroll", T), s.removeEventListener("touchstart", j), s.removeEventListener("touchmove", M), s.removeEventListener("touchend", N), s.removeEventListener("touchcancel", P), clearTimeout(y.current);
56
99
  };
57
100
  }, [
58
- o,
59
- g,
60
- v,
61
- b,
62
- y
101
+ s,
102
+ T,
103
+ P,
104
+ N,
105
+ M,
106
+ j,
107
+ E,
108
+ k
63
109
  ]);
64
110
  };
65
111
  //#endregion
66
- export { o as usePinch };
112
+ export { s as usePinch };
@@ -4,19 +4,19 @@ import { useDebounce as n } from "./useDebounce.js";
4
4
  import { useDimensionPagesContext as r } from "../../contexts/DimensionPagesContext.js";
5
5
  import { useSmoothScrollContext as i } from "../../contexts/SmoothScrollContext.js";
6
6
  import { getGridDimension as a, getPositionFromPage as o } from "../calculatePage.js";
7
- import { r as s } from "../../PaginationContext-Cwf8sCpK.js";
7
+ import { r as s } from "../../PaginationContext-B3qzCYJu.js";
8
8
  import { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
9
9
  //#region lib/utils/hooks/usePresentPage.ts
10
10
  var p = (p, m, h, g) => {
11
- let _ = d(), { contentRef: v } = t(), { heights: y, widths: b } = r(), { setFocusedPage: x } = s(), S = d(x);
12
- S.current = x;
13
- let [C, w] = f([]), { targetScrollPage: T } = i(), E = n(C, 0, 500), D = u(() => {
11
+ let _ = d(), v = d(), { contentRef: y } = t(), { heights: b, widths: x } = r(), { setFocusedPage: S } = s(), C = d(S);
12
+ C.current = S;
13
+ let [w, T] = f([]), { targetScrollPage: E } = i(), D = n(w, 0, 500), O = u(() => {
14
14
  let t = g === e.DUAL_PAGE_WITH_COVER, { rowsHeight: n, columnsWidth: r } = a({
15
- heights: y,
16
- widths: b
15
+ heights: b,
16
+ widths: x
17
17
  }, p, t);
18
- return y.map((e, i) => {
19
- let a = b[i], s = o(i + 1, p, t), c = r.slice(0, s.columnIndex).reduce((e, t) => e + t, 0), l = n.slice(0, s.rowIndex).reduce((e, t) => e + t, 0), u = c + a, d = l + e;
18
+ return b.map((e, i) => {
19
+ let a = x[i], s = o(i + 1, p, t), c = r.slice(0, s.columnIndex).reduce((e, t) => e + t, 0), l = n.slice(0, s.rowIndex).reduce((e, t) => e + t, 0), u = c + a, d = l + e;
20
20
  return {
21
21
  pageNumber: i + 1,
22
22
  ...s,
@@ -29,18 +29,22 @@ var p = (p, m, h, g) => {
29
29
  };
30
30
  });
31
31
  }, [
32
- y,
33
32
  b,
33
+ x,
34
34
  p,
35
35
  m,
36
36
  g
37
37
  ]);
38
38
  l(() => {
39
- E.length > 0 && !T.current && S.current(E[0].pageNumber), E[0]?.ratio && E.some((e) => e.pageNumber === T.current) && setTimeout(() => {
40
- T.current = void 0;
41
- }, 500);
42
- }, [E]);
43
- let O = c((e) => {
39
+ D.length > 0 && !E.current && C.current(D[0].pageNumber);
40
+ let e = D[0]?.ratio, t = E.current;
41
+ e && D.some((e) => e.pageNumber === t) && (clearTimeout(v.current), v.current = setTimeout(() => {
42
+ E.current === t && (E.current = void 0);
43
+ }, 500));
44
+ }, [D]), l(() => () => {
45
+ clearTimeout(v.current);
46
+ }, []);
47
+ let k = c((e) => {
44
48
  _.current && cancelAnimationFrame(_.current), _.current = requestAnimationFrame(() => {
45
49
  let t = e.target, n = {
46
50
  startTop: t.scrollTop,
@@ -48,7 +52,7 @@ var p = (p, m, h, g) => {
48
52
  endTop: t.scrollTop + t.clientHeight,
49
53
  endLeft: t.scrollLeft + t.clientWidth
50
54
  };
51
- w(D.filter((e) => {
55
+ T(O.filter((e) => {
52
56
  let t = e.endX >= n.startLeft && e.endY >= n.startTop, r = e.startX <= n.endLeft && e.startY <= n.endTop;
53
57
  return t && r;
54
58
  }).map((e) => {
@@ -59,12 +63,12 @@ var p = (p, m, h, g) => {
59
63
  };
60
64
  }).sort((e, t) => t.ratio - e.ratio));
61
65
  });
62
- }, [v, D]);
66
+ }, [y, O]);
63
67
  l(() => {
64
- if (h) return h?.addEventListener("scroll", O), () => {
65
- h?.removeEventListener("scroll", O);
68
+ if (h) return h?.addEventListener("scroll", k), () => {
69
+ h?.removeEventListener("scroll", k);
66
70
  };
67
- }, [h, O]);
71
+ }, [h, k]);
68
72
  };
69
73
  //#endregion
70
74
  export { p as usePresentPage };
@@ -1,2 +1,2 @@
1
- import { a as e } from "../../PaginationContext-Cwf8sCpK.js";
1
+ import { a as e } from "../../PaginationContext-B3qzCYJu.js";
2
2
  export { e as useScrollToPage };
@@ -9,7 +9,7 @@ import { usePagesRotateContext as c } from "../../contexts/PagesRotateContext.js
9
9
  import { useDimensionPagesContext as l } from "../../contexts/DimensionPagesContext.js";
10
10
  import { useSmoothScrollContext as u } from "../../contexts/SmoothScrollContext.js";
11
11
  import { getScrollDistance as d } from "../getScrollDistance.js";
12
- import { r as f } from "../../PaginationContext-Cwf8sCpK.js";
12
+ import { r as f } from "../../PaginationContext-B3qzCYJu.js";
13
13
  import { findMatches as p } from "../highlight.js";
14
14
  import { getWordPositionInPage as m } from "../getWordPositionInPage.js";
15
15
  import { useCallback as h, useEffect as g, useMemo as _, useRef as v, useState as y } from "react";
@@ -0,0 +1,37 @@
1
+ import { useCallback as e, useEffect as t, useRef as n } from "react";
2
+ //#region lib/utils/hooks/useZoomOrigin.ts
3
+ var r = (e, t, n) => Math.max(t, Math.min(e, n)), i = (e) => Number.isFinite(e.left) && Number.isFinite(e.top) && Number.isFinite(e.width) && Number.isFinite(e.height) && e.width > 0 && e.height > 0, a = (e, t, n) => {
4
+ if (!e || !Number.isFinite(t) || !Number.isFinite(n)) return null;
5
+ let a = e.getBoundingClientRect();
6
+ return i(a) ? [r(t - a.left, 0, a.width), r(n - a.top, 0, a.height)] : null;
7
+ }, o = (e) => {
8
+ if (!e) return;
9
+ let t = e.getBoundingClientRect();
10
+ if (!i(t)) return;
11
+ let { width: n, height: r } = t;
12
+ return [n / 2, r / 2];
13
+ }, s = (s) => {
14
+ let c = n(null), l = e((e, t) => a(s, e, t), [s]);
15
+ return t(() => {
16
+ if (!s) {
17
+ c.current = null;
18
+ return;
19
+ }
20
+ let e = (e) => {
21
+ c.current = l(e.clientX, e.clientY);
22
+ }, t = (e) => {
23
+ c.current = l(e.clientX, e.clientY);
24
+ };
25
+ return s.addEventListener("pointermove", e, { passive: !0 }), s.addEventListener("mousemove", t, { passive: !0 }), () => {
26
+ s.removeEventListener("pointermove", e), s.removeEventListener("mousemove", t);
27
+ };
28
+ }, [s, l]), e(() => {
29
+ if (!s) return;
30
+ let e = s.getBoundingClientRect();
31
+ if (!i(e)) return;
32
+ let { width: t, height: n } = e, a = c.current;
33
+ return a ? [r(a[0], 0, t), r(a[1], 0, n)] : o(s);
34
+ }, [s]);
35
+ };
36
+ //#endregion
37
+ export { o as getZoomCenterOrigin, a as getZoomOriginFromClientPoint, s as useZoomOrigin };
@@ -1,21 +1,28 @@
1
- import { AnnotationMode as e } from "pdfjs-dist";
1
+ import { IOS_MAX_CANVAS_PIXELS as e, MAX_CANVAS_DIM as t, MAX_CANVAS_PIXELS as n, SAFARI_MAX_CANVAS_PIXELS as r } from "./constants.js";
2
+ import { AnnotationMode as i } from "pdfjs-dist";
2
3
  //#region lib/utils/renderPage.ts
3
- var t = (t, n, r = {}) => {
4
- let { scale: i = 1, rotate: a = 0, renderForms: o = !1, interactiveForm: s = !0 } = r, c = n.getContext("2d", { desynchronized: !1 }), l = window.devicePixelRatio, u = t.getViewport({
5
- scale: i,
4
+ var a = () => {
5
+ let t = navigator.userAgent, i = /iPad|iPhone|iPod/.test(t) && !window.MSStream, a = /^((?!chrome|android).)*safari/i.test(t);
6
+ return i ? e : a ? r : n;
7
+ }, o = (e, n) => {
8
+ let r = window.devicePixelRatio || 1, i = Math.max(e * n, 1), o = Math.min(a(), i * 200), s = Math.sqrt(o / i), c = t / Math.max(e, 1), l = t / Math.max(n, 1), u = Math.min(r, s, c, l);
9
+ return Number.isFinite(u) && u > 0 ? u : 1;
10
+ }, s = (e, t, n = {}) => {
11
+ let { scale: r = 1, rotate: a = 0, renderForms: s = !1, interactiveForm: c = !0 } = n, l = t.getContext("2d", { desynchronized: !1 }), u = e.getViewport({
12
+ scale: r,
6
13
  rotation: a
7
- }), d = t.getViewport({
8
- scale: i * l,
14
+ }), d = o(u.width, u.height), f = e.getViewport({
15
+ scale: r * d,
9
16
  rotation: a
10
17
  });
11
- n.width = d.width, n.height = d.height, n.style.width = `${Math.floor(u.width)}px`, n.style.height = `${Math.floor(u.height)}px`;
12
- let f = o ? e.ENABLE_FORMS : void 0;
13
- return s || (f = e.ENABLE), t.render({
14
- canvas: n,
15
- canvasContext: c,
16
- viewport: d,
17
- annotationMode: f
18
+ t.width = Math.floor(f.width), t.height = Math.floor(f.height), t.style.width = `${Math.floor(u.width)}px`, t.style.height = `${Math.floor(u.height)}px`;
19
+ let p = s ? i.ENABLE_FORMS : void 0;
20
+ return c || (p = i.ENABLE), e.render({
21
+ canvas: t,
22
+ canvasContext: l,
23
+ viewport: f,
24
+ annotationMode: p
18
25
  });
19
26
  };
20
27
  //#endregion
21
- export { t as renderPage };
28
+ export { s as renderPage };
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../de_DE-DwUvXUWH.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../de_DE-C1OrwQKj.js";
2
2
  //#region lib/utils/types.ts
3
3
  var o = /* @__PURE__ */ function(e) {
4
4
  return e[e.Text = 1] = "Text", e[e.Link = 2] = "Link", e[e.FreeText = 3] = "FreeText", e[e.Line = 4] = "Line", e[e.Square = 5] = "Square", e[e.Circle = 6] = "Circle", e[e.Polygon = 7] = "Polygon", e[e.Polyline = 8] = "Polyline", e[e.Highlight = 9] = "Highlight", e[e.Underline = 10] = "Underline", e[e.Squiggly = 11] = "Squiggly", e[e.StrikeOut = 12] = "StrikeOut", e[e.Stamp = 13] = "Stamp", e[e.Caret = 14] = "Caret", e[e.Ink = 15] = "Ink", e[e.Popup = 16] = "Popup", e[e.FileAttachment = 17] = "FileAttachment", e[e.Widget = 20] = "Widget", e;
@@ -13,7 +13,7 @@ var o = /* @__PURE__ */ function(e) {
13
13
  }({}), d = /* @__PURE__ */ function(e) {
14
14
  return e.SINGLE_PAGE = "Single", e.DUAL_PAGE = "Dual", e.DUAL_PAGE_WITH_COVER = "DualWithCover", e;
15
15
  }({}), f = /* @__PURE__ */ function(e) {
16
- return e.FONT_FAMILY = "--rp-font-family", e.PRIMARY_COLOR = "--rp-primary-color", e.BORDER_RADIUS = "--rp-border-radius", e.TEXT_COLOR = "--rp-text-color", e.OUTLINE_COLOR = "--rp-outline-color", e.FONT_SIZE = "--rp-font-size", e.DROP_MASK_BACKGROUND_COLOR = "--rp-drop-mask-background-color", e.LOADER_BACKDROP_COLOR = "--rp-loader-backdrop-color", e.ICON_DISABLED = "--rp-icon-disabled", e.ICON_FONT_SIZE = "--rp-icon-font-size", e.TOOLBAR_BACKGROUND = "--rp-toolbar-background", e.TOOLBAR_BORDER_COLOR = "--rp-toolbar-border-color", e.TOOLBAR_PADDING = "--rp-toolbar-padding", e.TOOLBAR_GAP = "--rp-toolbar-gap", e.TOOLBAR_SIZE = "--rp-toolbar-size", e.SIDEBAR_WIDTH = "--rp-sidebar-width", e.THUMBNAIL_BORDER_COLOR = "--rp-thumbnail-border-color", e.THUMBNAIL_BACKGROUND_COLOR = "--rp-thumbnail-background-color", e.THUMBNAIL_ACTIVE_COLOR = "--rp-thumbnail-active-color", e.THUMBNAIL_PADDING_Y = "--rp-thumbnail-padding-y", e.BUTTON_HOVER_BACKGROUND = "--rp-button-hover-background", e.BUTTON_PADDING = "--rp-button-padding", e.INPUT_PADDING = "--rp-input-padding", e.INPUT_BORDER_RADIUS = "--rp-input-border-radius", e.INPUT_BACKGROUND_COLOR = "--rp-input-background-color", e.INPUT_PLACEHOLDER_COLOR = "--rp-input-placeholder-color", e.PAGES_BACKGROUND_COLOR = "--rp-pages-background-color", e.PAGE_SHADOW = "--rp-page-shadow", e.PAGE_OUTLINE = "--rp-page-outline", e.PAGE_OUTLINE_OFFSET = "--rp-page-outline-offset", e.ANNOTATION_LAYER_LINK_HOVER_BACKGROUND = "--rp-annotation-layer__link-hover-background", e.DROPDOWN_BACKGROUND_COLOR = "--rp-dropdown-background-color", e.DROPDOWN_PADDING = "--rp-dropdown-padding", e.DROPDOWN_HOVER_BACKGROUND_COLOR = "--rp-dropdown-hover-background-color", e.DROPDOWN_SEPARATOR_COLOR = "--rp-dropdown-separator-color", e.DROPDOWN_SEPARATOR_MARGIN = "--rp-dropdown-separator-margin", e.DROPDOWN_PADDING_MENU_ITEM = "--rp-dropdown-padding-menu-item", e.DROPDOWN_FONT_SIZE = "--rp-dropdown-font-size", e.DROPDOWN_BORDER_RADIUS = "--rp-dropdown-border-radius", e.SEARCH_TOOL_DROPDOWN_PADDING = "--rp-search-tool-dropdown-padding", e.POPOVER_FONT_SIZE = "--rp-popover-font-size", e.POPOVER_BACKGROUND_COLOR = "--rp-popover-background-color", e.POPOVER_COLOR = "--rp-popover-color", e.POPOVER_BORDER_COLOR = "--rp-popover-border-color", e.POPOVER_BORDER_RADIUS = "--rp-popover-border-radius", e.OVERLAY_BACKGROUND_COLOR = "--rp-overlay-background-color", e.DIALOG_BACKGROUND_COLOR = "--rp-dialog-background-color", e.PROPERTIES_DIVIDER_COLOR = "--rp-properties-divider-color", e.PROPERTIES_DIVIDER_MARGIN = "--rp-properties-divider-margin", e.PROPERTY_ITEM_GAP = "--rp-property-item-gap", e.DIALOG_TITLE_COLOR = "--rp-dialog-title-color", e.PROPERTY_ITEM_LABEL_COLOR = "--rp-property-item-label-color", e.PROPERTY_CLOSE_ICON_SIZE = "--rp-property-close-icon-size", e.PROPERTY_ITEM_FONT_SIZE = "--rp-property-item-font-size", e.PROPERTY_ITEM_FONT_WEIGHT = "--rp-property-item-font-weight", e.DIALOG_TITLE_FONT_SIZE = "--rp-dialog-title-font-size", e.DIALOG_TITLE_FONT_WEIGHT = "--rp-dialog-title-font-weight", e.MENU_ITEM_ICON_SIZE = "--rp-menu-item-icon-size", e.PRINT_PROGRESS_BACKGROUND = "--rp-print-progress-background", e.PRINT_PROGRESS_COLOR = "--rp-print-progress-color", e.DROP_ZONE_BORDER = "--rp-drop-zone-border", e.DROP_ZONE_FONT_COLOR = "--rp-drop-zone-font-color", e.DROP_ZONE_FONT_SIZE = "--rp-drop-zone-font-size", e.DROP_ZONE_BACKGROUND_COLOR = "--rp-drop-zone-background-color", e.CHECKBOX_BORDER_RADIUS = "--rp-checkbox-border-radius", e.CHECKBOX_BORDER_COLOR = "--rp-checkbox-border-color", e.CHECKBOX_INDICATOR_COLOR = "--rp-checkbox-indicator-color", e.HIGHLIGHT_BACKGROUND_COLOR = "--rp-highlight-background-color", e.TEXT_LAYER_HIGHLIGHT_BORDER_RADIUS = "--rp-text-layer-highlight-border-radius", e.CURRENT_HIGHLIGHT_BACKGROUND_COLOR = "--rp-current-highlight-background-color", e.TOOLTIP_BACKGROUND_COLOR = "--rp-tooltip-background-color", e.TOOLTIP_BORDER_RADIUS = "--rp-tooltip-border-radius", e.TOOLTIP_FONT_COLOR = "--rp-tooltip-font-color", e.TOOLTIP_FONT_SIZE = "--rp-tooltip-font-size", e.TOOLTIP_PADDING = "--rp-tooltip-padding", e.PASSWORD_MODAL_BACKGROUND_COLOR = "--rp-password-background-color", e.PASSWORD_MODAL_TITLE_FONT_COLOR = "--rp-password-title-font-color", e.PASSWORD_MODAL_CONTENT_FONT_COLOR = "--rp-password-content-font-color", e.PASSWORD_MODAL_INPUT_PLACEHOLDER_COLOR = "--rp-password-input-placeholder-color", e.PASSWORD_MODAL_INPUT_BORDER_COLOR = "--rp-password-input-border-color", e.PASSWORD_MODAL_INPUT_FONT_COLOR = "--rp-password-input-font-color", e.PASSWORD_MODAL_BUTTON_FONT_COLOR = "--rp-password-button-font-color", e.PASSWORD_MODAL_BUTTON_BACKGROUND_COLOR = "--rp-password-button-background-color", e.PASSWORD_MODAL_BUTTON_BORDER_COLOR = "--rp-password-button-border-color", e.PASSWORD_MODAL_BORDER_COLOR = "--rp-password-border-color", e.CONTAINER_FOCUS_OUTLINE_WIDTH = "--rp-container-focus-outline-width", e.CONTAINER_FOCUS_OUTLINE_COLOR = "--rp-container-focus-outline-color", e.CONTAINER_FOCUS_OUTLINE_OFFSET = "--rp-container-focus-outline-offset", e.BUTTON_BORDER_RADIUS = "--rp-button-border-radius", e.SKIP_LINK_FONT_SIZE = "--rp-skip-link-font-size", e.SKIP_LINK_COLOR = "--rp-skip-link-color", e.SKIP_LINK_BACKGROUND_COLOR = "--rp-skip-link-background-color", e.SKIP_LINK_BORDER_COLOR = "--rp-skip-link-border-color", e;
16
+ return e.FONT_FAMILY = "--rp-font-family", e.PRIMARY_COLOR = "--rp-primary-color", e.BORDER_RADIUS = "--rp-border-radius", e.TEXT_COLOR = "--rp-text-color", e.OUTLINE_COLOR = "--rp-outline-color", e.FONT_SIZE = "--rp-font-size", e.DROP_MASK_BACKGROUND_COLOR = "--rp-drop-mask-background-color", e.LOADER_BACKDROP_COLOR = "--rp-loader-backdrop-color", e.ICON_DISABLED = "--rp-icon-disabled", e.ICON_FONT_SIZE = "--rp-icon-font-size", e.TOOLBAR_BACKGROUND = "--rp-toolbar-background", e.TOOLBAR_BORDER_COLOR = "--rp-toolbar-border-color", e.TOOLBAR_PADDING = "--rp-toolbar-padding", e.TOOLBAR_GAP = "--rp-toolbar-gap", e.TOOLBAR_SIZE = "--rp-toolbar-size", e.SIDEBAR_WIDTH = "--rp-sidebar-width", e.THUMBNAIL_BORDER_COLOR = "--rp-thumbnail-border-color", e.THUMBNAIL_BACKGROUND_COLOR = "--rp-thumbnail-background-color", e.THUMBNAIL_ACTIVE_COLOR = "--rp-thumbnail-active-color", e.THUMBNAIL_PADDING_Y = "--rp-thumbnail-padding-y", e.BUTTON_HOVER_BACKGROUND = "--rp-button-hover-background", e.BUTTON_PADDING = "--rp-button-padding", e.INPUT_PADDING = "--rp-input-padding", e.INPUT_BORDER_RADIUS = "--rp-input-border-radius", e.INPUT_BACKGROUND_COLOR = "--rp-input-background-color", e.INPUT_PLACEHOLDER_COLOR = "--rp-input-placeholder-color", e.SEARCH_INPUT_BORDER_COLOR = "--rp-search-input-border-color", e.PAGES_BACKGROUND_COLOR = "--rp-pages-background-color", e.PAGE_SHADOW = "--rp-page-shadow", e.PAGE_OUTLINE = "--rp-page-outline", e.PAGE_OUTLINE_OFFSET = "--rp-page-outline-offset", e.ANNOTATION_LAYER_LINK_HOVER_BACKGROUND = "--rp-annotation-layer__link-hover-background", e.DROPDOWN_BACKGROUND_COLOR = "--rp-dropdown-background-color", e.DROPDOWN_PADDING = "--rp-dropdown-padding", e.DROPDOWN_HOVER_BACKGROUND_COLOR = "--rp-dropdown-hover-background-color", e.DROPDOWN_SEPARATOR_COLOR = "--rp-dropdown-separator-color", e.DROPDOWN_SEPARATOR_MARGIN = "--rp-dropdown-separator-margin", e.DROPDOWN_PADDING_MENU_ITEM = "--rp-dropdown-padding-menu-item", e.DROPDOWN_FONT_SIZE = "--rp-dropdown-font-size", e.DROPDOWN_BORDER_RADIUS = "--rp-dropdown-border-radius", e.SEARCH_TOOL_DROPDOWN_PADDING = "--rp-search-tool-dropdown-padding", e.POPOVER_FONT_SIZE = "--rp-popover-font-size", e.POPOVER_BACKGROUND_COLOR = "--rp-popover-background-color", e.POPOVER_COLOR = "--rp-popover-color", e.POPOVER_BORDER_COLOR = "--rp-popover-border-color", e.POPOVER_BORDER_RADIUS = "--rp-popover-border-radius", e.OVERLAY_BACKGROUND_COLOR = "--rp-overlay-background-color", e.DIALOG_BACKGROUND_COLOR = "--rp-dialog-background-color", e.PROPERTIES_DIVIDER_COLOR = "--rp-properties-divider-color", e.PROPERTIES_DIVIDER_MARGIN = "--rp-properties-divider-margin", e.PROPERTY_ITEM_GAP = "--rp-property-item-gap", e.DIALOG_TITLE_COLOR = "--rp-dialog-title-color", e.PROPERTY_ITEM_LABEL_COLOR = "--rp-property-item-label-color", e.PROPERTY_CLOSE_ICON_SIZE = "--rp-property-close-icon-size", e.PROPERTY_ITEM_FONT_SIZE = "--rp-property-item-font-size", e.PROPERTY_ITEM_FONT_WEIGHT = "--rp-property-item-font-weight", e.DIALOG_TITLE_FONT_SIZE = "--rp-dialog-title-font-size", e.DIALOG_TITLE_FONT_WEIGHT = "--rp-dialog-title-font-weight", e.MENU_ITEM_ICON_SIZE = "--rp-menu-item-icon-size", e.PRINT_PROGRESS_BACKGROUND = "--rp-print-progress-background", e.PRINT_PROGRESS_COLOR = "--rp-print-progress-color", e.PRINT_PROGRESS_CANCEL_BUTTON_BORDER_COLOR = "--rp-print-progress-cancel-button-border-color", e.DROP_ZONE_BORDER = "--rp-drop-zone-border", e.DROP_ZONE_FONT_COLOR = "--rp-drop-zone-font-color", e.DROP_ZONE_FONT_SIZE = "--rp-drop-zone-font-size", e.DROP_ZONE_BACKGROUND_COLOR = "--rp-drop-zone-background-color", e.CHECKBOX_BORDER_RADIUS = "--rp-checkbox-border-radius", e.CHECKBOX_BORDER_COLOR = "--rp-checkbox-border-color", e.CHECKBOX_INDICATOR_COLOR = "--rp-checkbox-indicator-color", e.HIGHLIGHT_BACKGROUND_COLOR = "--rp-highlight-background-color", e.TEXT_LAYER_HIGHLIGHT_BORDER_RADIUS = "--rp-text-layer-highlight-border-radius", e.CURRENT_HIGHLIGHT_BACKGROUND_COLOR = "--rp-current-highlight-background-color", e.TOOLTIP_BACKGROUND_COLOR = "--rp-tooltip-background-color", e.TOOLTIP_BORDER_RADIUS = "--rp-tooltip-border-radius", e.TOOLTIP_FONT_COLOR = "--rp-tooltip-font-color", e.TOOLTIP_FONT_SIZE = "--rp-tooltip-font-size", e.TOOLTIP_PADDING = "--rp-tooltip-padding", e.PASSWORD_MODAL_BACKGROUND_COLOR = "--rp-password-background-color", e.PASSWORD_MODAL_TITLE_FONT_COLOR = "--rp-password-title-font-color", e.PASSWORD_MODAL_CONTENT_FONT_COLOR = "--rp-password-content-font-color", e.PASSWORD_MODAL_INPUT_PLACEHOLDER_COLOR = "--rp-password-input-placeholder-color", e.PASSWORD_MODAL_INPUT_BORDER_COLOR = "--rp-password-input-border-color", e.PASSWORD_MODAL_INPUT_FONT_COLOR = "--rp-password-input-font-color", e.PASSWORD_MODAL_BUTTON_FONT_COLOR = "--rp-password-button-font-color", e.PASSWORD_MODAL_BUTTON_BACKGROUND_COLOR = "--rp-password-button-background-color", e.PASSWORD_MODAL_BUTTON_BORDER_COLOR = "--rp-password-button-border-color", e.PASSWORD_MODAL_BORDER_COLOR = "--rp-password-border-color", e.CONTAINER_FOCUS_OUTLINE_WIDTH = "--rp-container-focus-outline-width", e.CONTAINER_FOCUS_OUTLINE_COLOR = "--rp-container-focus-outline-color", e.CONTAINER_FOCUS_OUTLINE_OFFSET = "--rp-container-focus-outline-offset", e.BUTTON_BORDER_RADIUS = "--rp-button-border-radius", e.SKIP_LINK_FONT_SIZE = "--rp-skip-link-font-size", e.SKIP_LINK_COLOR = "--rp-skip-link-color", e.SKIP_LINK_BACKGROUND_COLOR = "--rp-skip-link-background-color", e.SKIP_LINK_BORDER_COLOR = "--rp-skip-link-border-color", e;
17
17
  }({}), p = /* @__PURE__ */ function(e) {
18
18
  return e.PAGE_SCROLLING = "PAGE", e.VERTICAL_SCROLLING = "VERTICAL", e.HORIZONTAL_SCROLLING = "HORIZONTAL", e;
19
19
  }({}), m = /* @__PURE__ */ function(e) {
@@ -1,5 +1,11 @@
1
1
  import { MAX_ZOOM_SCALE as e } from "./constants.js";
2
2
  //#region lib/utils/zoom.ts
3
- var t = (e) => e * 100 <= 25, n = (t) => t * 100 >= e;
3
+ var t = (e) => e * 100 <= 25, n = (t) => t * 100 >= e, r = (t) => {
4
+ let n = Math.floor(t / 25) * 25;
5
+ return Math.min(n + 25, e);
6
+ }, i = (e) => {
7
+ let t = Math.ceil(e / 25) * 25;
8
+ return Math.max(t - 25, 25);
9
+ };
4
10
  //#endregion
5
- export { n as isZoomInDisabled, t as isZoomOutDisabled };
11
+ export { r as getNextZoomInLevel, i as getNextZoomOutLevel, n as isZoomInDisabled, t as isZoomOutDisabled };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-pdf-kit/viewer",
3
- "version": "2.8.0-beta.6",
3
+ "version": "2.8.0-beta.7",
4
4
  "private": false,
5
5
  "description": "A react-pdf-viewer component for React and Next.js. Suitable for react-pdf document.",
6
6
  "keywords": [
@@ -1,15 +0,0 @@
1
- import { t as e } from "./clsx-B7LyVm5O.js";
2
- import { r as t } from "./dist-CKteKPPA.js";
3
- import { jsx as n } from "react/jsx-runtime";
4
- import './assets/MenuItem.css';//#region lib/components/layout/toolbar/MenuItem.module.css
5
- var r = { "rp-menu-item": "_rp-menu-item_cu12j_1" }, i = (i) => {
6
- let { children: a, className: o, ...s } = i;
7
- return /* @__PURE__ */ n(t, {
8
- ...s,
9
- tabIndex: 0,
10
- className: e(r["rp-menu-item"], o),
11
- children: a
12
- });
13
- };
14
- //#endregion
15
- export { i as t };
@@ -1,14 +0,0 @@
1
- import './assets/RPLayout.css';//#region lib/components/layout/RPLayout.module.css
2
- var e = {
3
- "rp-layout": "_rp-layout_1yzm4_1",
4
- "rp-layout-wrapper": "_rp-layout-wrapper_1yzm4_5",
5
- "rp-content": "_rp-content_1yzm4_11",
6
- "rp-sidebar": "_rp-sidebar_1yzm4_18",
7
- "rp-pages": "_rp-pages_1yzm4_23",
8
- "rp-container": "_rp-container_1yzm4_29",
9
- "rp-loader": "_rp-loader_1yzm4_33",
10
- "rp-theme-variables": "_rp-theme-variables_1yzm4_37",
11
- "rp-dark-mode": "_rp-dark-mode_1yzm4_156"
12
- };
13
- //#endregion
14
- export { e as t };
@@ -1,91 +0,0 @@
1
- import { useDocumentContext as e } from "./contexts/RPDocumentContext.js";
2
- import { useZoomContext as t } from "./contexts/ZoomContext.js";
3
- import { usePagesRotateContext as n } from "./contexts/PagesRotateContext.js";
4
- import { useLayerContext as r } from "./contexts/LayerContext.js";
5
- import { useLoaderContext as i } from "./contexts/LoaderContext.js";
6
- import { CanvasLayer as a } from "./components/page/CanvasLayer.js";
7
- import { t as o } from "./TextLayer-DWGFN9SF.js";
8
- import { t as s } from "./AnnotationLayer-CAIvKf_O.js";
9
- import { t as c } from "./TextHighlightLayer-BSVgBxR3.js";
10
- import { CustomElement as l } from "./components/page/CustomElement.js";
11
- import { withRef as u } from "./utils/withRef.js";
12
- import { useCallback as d, useEffect as f, useImperativeHandle as p, useMemo as m, useRef as h, useState as g } from "react";
13
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
14
- import './assets/RPPage.css';//#region lib/components/page/RPPage.module.css
15
- var y = {
16
- "rp-page-wrapper": "_rp-page-wrapper_krysr_1",
17
- "rp-page": "_rp-page_krysr_1",
18
- "rp-loader-wrapper": "_rp-loader-wrapper_krysr_17"
19
- }, b = u((u, b) => {
20
- let { pageNumber: x, style: S, ...C } = u, { pages: w } = e(), { pageRotate: T } = n(), { textLayer: E } = r(), { currentZoom: D } = t(), { LoaderImageComponent: O } = i(), k = h(w.get(x)), [A, j] = g(!1), M = h(null), [N, P] = g({
21
- width: 0,
22
- height: 0
23
- });
24
- p(b, () => M.current);
25
- let F = m(() => k.current ? T[x] : 0, [x, T]);
26
- f(() => {
27
- w && (k.current = w.get(x), k.current && P(k.current.page.getViewport({
28
- scale: D,
29
- rotation: F
30
- })));
31
- }, [
32
- w,
33
- x,
34
- F,
35
- D
36
- ]);
37
- let I = m(() => {
38
- switch (F) {
39
- case 90: return `${N.width / 2}px ${N.width / 2}px`;
40
- case -90:
41
- case 270: return `${N.height / 2}px ${N.height / 2}px`;
42
- default: return "center";
43
- }
44
- }, [F, N]), L = d(() => {
45
- j(!0);
46
- }, []), R = d(() => {
47
- j(!1);
48
- }, []);
49
- return /* @__PURE__ */ _("div", {
50
- ref: M,
51
- id: `page-${x}`,
52
- "data-rp": `page-${x}`,
53
- ...C,
54
- style: {
55
- ...S,
56
- "--rp-rotate": `${F}deg`,
57
- "--rp-page-rotate-translate": `${I}`,
58
- "--user-unit": N.userUnit || 1,
59
- "--scale-factor": D,
60
- "--total-scale-factor": "calc(var(--scale-factor) * var(--user-unit))"
61
- },
62
- className: y["rp-page-wrapper"],
63
- children: /* @__PURE__ */ v("div", {
64
- style: {
65
- width: `${N.width}px`,
66
- height: `${N.height}px`
67
- },
68
- className: y["rp-page"],
69
- children: [
70
- /* @__PURE__ */ _(a, {
71
- onLoading: L,
72
- onLoaded: R,
73
- pageNumber: x
74
- }),
75
- A && O && /* @__PURE__ */ _("div", {
76
- className: y["rp-loader-wrapper"],
77
- children: /* @__PURE__ */ _(O, {})
78
- }),
79
- /* @__PURE__ */ _(l, { pageNumber: x }),
80
- E && /* @__PURE__ */ _(o, { pageNumber: x }),
81
- /* @__PURE__ */ _(c, {
82
- pageNumber: x,
83
- viewport: N
84
- }),
85
- /* @__PURE__ */ _(s, { pageNumber: x })
86
- ]
87
- })
88
- });
89
- });
90
- //#endregion
91
- export { b as t };
@@ -1,16 +0,0 @@
1
- import './assets/SearchTool.css';//#region lib/components/layout/toolbar/SearchTool.module.css
2
- var e = {
3
- "rp-search-tool-content": "_rp-search-tool-content_t0ih3_1",
4
- "rp-search-tool-input": "_rp-search-tool-input_t0ih3_10",
5
- "rp-search-tool-input-icon": "_rp-search-tool-input-icon_t0ih3_17",
6
- "rp-search-tool-controls": "_rp-search-tool-controls_t0ih3_27",
7
- "rp-search-tool-input-wrapper": "_rp-search-tool-input-wrapper_t0ih3_35",
8
- "rp-search-tool-input-checkboxes": "_rp-search-tool-input-checkboxes_t0ih3_41",
9
- "rp-search-tool-input-clear": "_rp-search-tool-input-clear_t0ih3_46",
10
- "rp-search-input": "_rp-search-input_t0ih3_60",
11
- "rp-search-icon-info": "_rp-search-icon-info_t0ih3_66",
12
- "rp-search-loader-icon": "_rp-search-loader-icon_t0ih3_75",
13
- "rp-search-tool-result-navigator": "_rp-search-tool-result-navigator_t0ih3_80"
14
- };
15
- //#endregion
16
- export { e as t };
@@ -1 +0,0 @@
1
- ._rp-page-wrapper_krysr_1{justify-content:center;align-items:center;display:flex}._rp-page_krysr_1{box-shadow:var(--rp-page-shadow,0px 2px 12px 0px #00000026);outline:var(--rp-page-outline,none);outline-offset:var(--rp-page-outline-offset,0);position:relative}._rp-loader-wrapper_krysr_17{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}