@pdf-viewer/react 1.3.0 → 1.4.0-beta.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.
Files changed (51) hide show
  1. package/dist/RPDefaultLayout-5fe1a471.js +2907 -0
  2. package/dist/assets/RPDefaultLayout.css +1 -1
  3. package/dist/components/RPController.js +24 -23
  4. package/dist/components/RPPages.js +3 -2
  5. package/dist/components/RPProvider.js +4 -3
  6. package/dist/components/layout/RPDefaultLayout.js +1 -1
  7. package/dist/components/layout/sidebar/RPSidebar.js +1 -1
  8. package/dist/components/layout/sidebar/Thumbnail.js +1 -1
  9. package/dist/components/layout/sidebar/Thumbnails.js +1 -1
  10. package/dist/components/layout/toolbar/DocumentDialog.js +3 -2
  11. package/dist/components/layout/toolbar/FileDownloadTool.js +1 -1
  12. package/dist/components/layout/toolbar/MostPageTool.js +3 -2
  13. package/dist/components/layout/toolbar/OtherTool.js +1 -1
  14. package/dist/components/layout/toolbar/Paginate.js +2 -2
  15. package/dist/components/layout/toolbar/PrintTool.js +2 -2
  16. package/dist/components/layout/toolbar/RPToolbar.js +1 -1
  17. package/dist/components/layout/toolbar/RPToolbarEnd.js +2 -2
  18. package/dist/components/layout/toolbar/SearchTool.js +3 -2
  19. package/dist/components/layout/toolbar/ZoomTool.js +3 -2
  20. package/dist/components/page/AnnotationLayer.js +3 -2
  21. package/dist/components/page/CanvasLayer.js +3 -2
  22. package/dist/components/page/DualPage.js +1 -1
  23. package/dist/components/page/RPPage.js +3 -2
  24. package/dist/components/page/SinglePage.js +2 -2
  25. package/dist/components/page/TextHighlightLayer.js +32 -0
  26. package/dist/components/page/TextLayer.js +3 -2
  27. package/dist/components/ui/LoadingIndicator.js +1 -1
  28. package/dist/contexts/HighlightContext.js +18 -0
  29. package/dist/contexts/PaginationContext.js +1 -1
  30. package/dist/contexts/PrintContext.js +1 -1
  31. package/dist/contexts/SearchContext.js +1 -1
  32. package/dist/contexts/ThumbnailsContext.js +1 -1
  33. package/dist/main.js +22 -20
  34. package/dist/types/components/page/TextHighlightLayer.d.ts +6 -0
  35. package/dist/types/contexts/HighlightContext.d.ts +8 -0
  36. package/dist/types/main.d.ts +1 -0
  37. package/dist/types/utils/highlight.d.ts +6 -1
  38. package/dist/types/utils/hooks/useHighlight.d.ts +10 -0
  39. package/dist/types/utils/types.d.ts +15 -0
  40. package/dist/utils/highlight.js +157 -97
  41. package/dist/utils/hooks/useFileDownload.js +3 -2
  42. package/dist/utils/hooks/useHighlight.js +52 -0
  43. package/dist/utils/hooks/useLicense.js +59 -60
  44. package/dist/utils/hooks/usePaginate.js +3 -2
  45. package/dist/utils/hooks/usePrint.js +3 -2
  46. package/dist/utils/hooks/useScrollToPage.js +3 -2
  47. package/dist/utils/hooks/useSearch.js +3 -2
  48. package/dist/utils/hooks/useThumbnail.js +3 -2
  49. package/dist/utils/hooks/useVirtualReactWindow.js +3 -2
  50. package/package.json +1 -1
  51. package/dist/RPDefaultLayout-6fe6be3d.js +0 -2832
@@ -1,27 +1,27 @@
1
- import { useState as E, useCallback as h, useEffect as A } from "react";
2
- import { appConsole as c } from "../appConsole.js";
3
- const b = /* @__PURE__ */ new Date("2025-04-04T09:27:21.450Z"), l = "Please visit https://www.react-pdf.dev/license-management/ to generate a new license key.", o = {
4
- invalidLicense: `You are currently using without a valid license. ${l}`,
5
- mismatchedDomain: `Your license key is not valid for the current domain / IP. ${l}`,
6
- expired: `Your license key has expired. ${l}`,
1
+ import { useState as g, useCallback as h, useEffect as E } from "react";
2
+ import { appConsole as l } from "../appConsole.js";
3
+ const A = /* @__PURE__ */ new Date("2025-04-09T04:50:18.398Z"), d = "Please visit https://www.react-pdf.dev/license-management/ to generate a new license key.", o = {
4
+ invalidLicense: `You are currently using without a valid license. ${d}`,
5
+ mismatchedDomain: `Your license key is not valid for the current domain / IP. ${d}`,
6
+ expired: `Your license key has expired. ${d}`,
7
7
  exceededVersion: "Your license does not support the current version of React PDF. The library version you are using exceeds the supported range of your license.",
8
8
  invalidSignature: "Invalid license key: Signature mismatch"
9
9
  };
10
- function L(r) {
11
- const t = r.replace(/-----BEGIN PUBLIC KEY-----/, "").replace(/-----END PUBLIC KEY-----/, "").replace(/\s+/g, ""), e = atob(t), n = new Uint8Array(e.length);
12
- for (let i = 0; i < e.length; i++)
13
- n[i] = e.charCodeAt(i);
10
+ function b(r) {
11
+ const t = r.replace(/-----BEGIN PUBLIC KEY-----/, "").replace(/-----END PUBLIC KEY-----/, "").replace(/\s+/g, ""), i = atob(t), n = new Uint8Array(i.length);
12
+ for (let e = 0; e < i.length; e++)
13
+ n[e] = i.charCodeAt(e);
14
14
  return n.buffer;
15
15
  }
16
- function S(r) {
17
- const t = atob(r), e = new Uint8Array(t.length);
16
+ function L(r) {
17
+ const t = atob(r), i = new Uint8Array(t.length);
18
18
  for (let n = 0; n < t.length; n++)
19
- e[n] = t.charCodeAt(n);
20
- return e.buffer;
19
+ i[n] = t.charCodeAt(n);
20
+ return i.buffer;
21
21
  }
22
- async function I(r, t = "SHA-256") {
22
+ async function S(r, t = "SHA-256") {
23
23
  try {
24
- const { data: e, signature: n } = JSON.parse(atob(r)), i = L(`-----BEGIN PUBLIC KEY-----
24
+ const { data: i, signature: n } = JSON.parse(atob(r)), e = b(`-----BEGIN PUBLIC KEY-----
25
25
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIokvErJ0Fctu0jduSAx
26
26
  gr+5Har/VSuZLlOunS28hnlqqA+OF1apHL7RYkjBosS15yvviYdLrVWYHpHnoY4b
27
27
  HLQ9I6YX6FMB9T/VbB4xLdVdKvfi8r49aTScl5EKuSpgpPgz2VSJTfvVGcRuth/Y
@@ -32,7 +32,7 @@ kwIDAQAB
32
32
  -----END PUBLIC KEY-----`), a = await window.crypto.subtle.importKey(
33
33
  "spki",
34
34
  // str2ab(publicKeyContent), // Convert PEM string to ArrayBuffer
35
- i,
35
+ e,
36
36
  { name: "RSA-PSS", hash: t },
37
37
  !0,
38
38
  ["verify"]
@@ -40,69 +40,68 @@ kwIDAQAB
40
40
  if (!await window.crypto.subtle.verify(
41
41
  { name: "RSA-PSS", saltLength: 32 },
42
42
  a,
43
- S(n),
43
+ L(n),
44
44
  // Convert signature to ArrayBuffer
45
- new TextEncoder().encode(atob(e))
45
+ new TextEncoder().encode(atob(i))
46
46
  ))
47
47
  throw new Error(o.invalidSignature);
48
- return JSON.parse(atob(e));
48
+ return JSON.parse(atob(i));
49
49
  } catch {
50
50
  throw new Error(o.invalidLicense);
51
51
  }
52
52
  }
53
- const y = (r, t) => r === "specific" ? t === window.location.host : window.location.host.includes(t), d = {
53
+ const I = (r, t) => r === "specific" ? t === window.location.host : window.location.host.includes(t), c = {
54
54
  isValid: !0,
55
55
  invalidatedMessage: o.invalidLicense,
56
56
  type: void 0
57
- }, x = (r) => {
58
- const [t, e] = E(d), n = h(async () => {
57
+ }, N = (r) => {
58
+ const [t, i] = g(c), n = h(async () => {
59
59
  if (!r)
60
- throw e(d), new Error("License is missing");
61
- let i;
60
+ throw i(c), new Error("License is missing");
62
61
  try {
63
- i = await I(r);
64
- } catch (m) {
65
- throw c.warn(m.message), new Error(m.message);
62
+ const e = await S(r);
63
+ l.debug(">>> validatedLicense", e);
64
+ const { avu: a, exp: s, dmt: m, dm: p, t: w } = e;
65
+ if (!s)
66
+ throw new Error("License is missing expiration timestamp");
67
+ if (s > Number.MAX_SAFE_INTEGER / 1e3)
68
+ throw new Error("Invalid expiration timestamp: value too large");
69
+ const v = new Date(s * 1e3), f = (/* @__PURE__ */ new Date()).getTime();
70
+ if (v.getTime() < f)
71
+ throw new Error(o.expired);
72
+ if (!a)
73
+ throw new Error("License is missing available until version timestamp");
74
+ if (a > Number.MAX_SAFE_INTEGER / 1e3)
75
+ throw new Error("Invalid available until version timestamp: value too large");
76
+ const u = new Date(a * 1e3);
77
+ if (l.debug("availableUntilTimestamp", u), u.getTime() < A.getTime())
78
+ throw new Error(o.exceededVersion);
79
+ if (!I(m, p))
80
+ throw new Error(o.mismatchedDomain);
81
+ return {
82
+ isValid: !0,
83
+ type: w,
84
+ invalidatedMessage: void 0
85
+ };
86
+ } catch (e) {
87
+ return l.warn(e.message), { ...c, invalidatedMessage: e.message };
66
88
  }
67
- c.debug(">>> validatedLicense", i);
68
- const { avu: a, exp: s, dmt: w, dm: p, t: f } = i;
69
- if (!s)
70
- throw new Error("License is missing expiration timestamp");
71
- if (s > Number.MAX_SAFE_INTEGER / 1e3)
72
- throw new Error("Invalid expiration timestamp: value too large");
73
- const v = new Date(s * 1e3), g = (/* @__PURE__ */ new Date()).getTime();
74
- if (v.getTime() < g)
75
- throw new Error(o.expired);
76
- if (!a)
77
- throw new Error("License is missing available until version timestamp");
78
- if (a > Number.MAX_SAFE_INTEGER / 1e3)
79
- throw new Error("Invalid available until version timestamp: value too large");
80
- const u = new Date(a * 1e3);
81
- if (c.debug("availableUntilTimestamp", u), u.getTime() < b.getTime())
82
- throw new Error(o.exceededVersion);
83
- if (!y(w, p))
84
- throw new Error(o.mismatchedDomain);
85
- return {
86
- isValid: !0,
87
- type: f,
88
- invalidatedMessage: void 0
89
- };
90
89
  }, [r]);
91
- return A(() => {
92
- n().then(({ isValid: i, type: a, invalidatedMessage: s }) => {
93
- e({
94
- isValid: i,
90
+ return E(() => {
91
+ n().then(({ isValid: e, type: a, invalidatedMessage: s }) => {
92
+ i({
93
+ isValid: e,
95
94
  type: a,
96
95
  invalidatedMessage: s
97
96
  });
98
- }).catch((i) => {
99
- e({
100
- ...d,
97
+ }).catch((e) => {
98
+ throw i({
99
+ ...c,
101
100
  isValid: !1
102
- }), c.warn(i.message);
101
+ }), e;
103
102
  });
104
103
  }, [n]), t;
105
104
  };
106
105
  export {
107
- x as useLicense
106
+ N as useLicense
108
107
  };
@@ -1,5 +1,5 @@
1
1
  import "react";
2
- import { g as B } from "../../RPDefaultLayout-6fe6be3d.js";
2
+ import { g as C } from "../../RPDefaultLayout-5fe1a471.js";
3
3
  import "../../contexts/ScrollStateContext.js";
4
4
  import "react/jsx-runtime";
5
5
  import "../../contexts/RPDocumentContext.js";
@@ -19,6 +19,7 @@ import "../../contexts/DropFileZoneContext.js";
19
19
  import "../../contexts/LayoutContainerContext.js";
20
20
  import "../../contexts/DimensionPagesContext.js";
21
21
  import "../../contexts/LocalizationContext.js";
22
+ import "../../contexts/HighlightContext.js";
22
23
  import "../../contexts/LoaderContext.js";
23
24
  import "../../components/RPConfig.js";
24
25
  import "../../contexts/ThemeContext.js";
@@ -26,5 +27,5 @@ import "../../components/RPDropFileZone.js";
26
27
  import "../../contexts/ToolbarComponentContext.js";
27
28
  import "./useDebounce.js";
28
29
  export {
29
- B as usePaginate
30
+ C as usePaginate
30
31
  };
@@ -1,7 +1,7 @@
1
1
  import "react";
2
2
  import "react/jsx-runtime";
3
3
  import "../../contexts/RPDocumentContext.js";
4
- import { i as B } from "../../RPDefaultLayout-6fe6be3d.js";
4
+ import { i as C } from "../../RPDefaultLayout-5fe1a471.js";
5
5
  import "../../contexts/DarkModeContext.js";
6
6
  import "../../contexts/RotationContext.js";
7
7
  import "../../contexts/LayerContext.js";
@@ -19,6 +19,7 @@ import "../../contexts/DropFileZoneContext.js";
19
19
  import "../../contexts/LayoutContainerContext.js";
20
20
  import "../../contexts/DimensionPagesContext.js";
21
21
  import "../../contexts/LocalizationContext.js";
22
+ import "../../contexts/HighlightContext.js";
22
23
  import "../../contexts/LoaderContext.js";
23
24
  import "../../components/RPConfig.js";
24
25
  import "../../contexts/ThemeContext.js";
@@ -26,5 +27,5 @@ import "../../components/RPDropFileZone.js";
26
27
  import "../../contexts/ToolbarComponentContext.js";
27
28
  import "pdfjs-dist";
28
29
  export {
29
- B as usePrint
30
+ C as usePrint
30
31
  };
@@ -2,7 +2,7 @@ import "react";
2
2
  import "../../contexts/ScrollModeContext.js";
3
3
  import "react/jsx-runtime";
4
4
  import "../../contexts/RPDocumentContext.js";
5
- import { f as A } from "../../RPDefaultLayout-6fe6be3d.js";
5
+ import { f as B } from "../../RPDefaultLayout-5fe1a471.js";
6
6
  import "../../contexts/DarkModeContext.js";
7
7
  import "../types.js";
8
8
  import "../../contexts/RotationContext.js";
@@ -20,6 +20,7 @@ import "../../contexts/DropFileZoneContext.js";
20
20
  import "../../contexts/LayoutContainerContext.js";
21
21
  import "../../contexts/DimensionPagesContext.js";
22
22
  import "../../contexts/LocalizationContext.js";
23
+ import "../../contexts/HighlightContext.js";
23
24
  import "../../contexts/LoaderContext.js";
24
25
  import "../../components/RPConfig.js";
25
26
  import "../../contexts/ThemeContext.js";
@@ -27,5 +28,5 @@ import "../../components/RPDropFileZone.js";
27
28
  import "../../contexts/ToolbarComponentContext.js";
28
29
  import "../smoothScrollTo.js";
29
30
  export {
30
- A as useScrollToPage
31
+ B as useScrollToPage
31
32
  };
@@ -7,7 +7,7 @@ import "pdfjs-dist";
7
7
  import "../../contexts/RPDocumentContext.js";
8
8
  import "../../contexts/ZoomContext.js";
9
9
  import "react/jsx-runtime";
10
- import { n as D } from "../../RPDefaultLayout-6fe6be3d.js";
10
+ import { n as E } from "../../RPDefaultLayout-5fe1a471.js";
11
11
  import "../../contexts/DarkModeContext.js";
12
12
  import "../../contexts/RotationContext.js";
13
13
  import "../../contexts/LayerContext.js";
@@ -22,11 +22,12 @@ import "../../contexts/DropFileZoneContext.js";
22
22
  import "../../contexts/LayoutContainerContext.js";
23
23
  import "../../contexts/DimensionPagesContext.js";
24
24
  import "../../contexts/LocalizationContext.js";
25
+ import "../../contexts/HighlightContext.js";
25
26
  import "../../contexts/LoaderContext.js";
26
27
  import "../../components/RPConfig.js";
27
28
  import "../../contexts/ThemeContext.js";
28
29
  import "../../components/RPDropFileZone.js";
29
30
  import "../../contexts/ToolbarComponentContext.js";
30
31
  export {
31
- D as useSearch
32
+ E as useSearch
32
33
  };
@@ -2,7 +2,7 @@ import "react";
2
2
  import "../renderPage.js";
3
3
  import "react/jsx-runtime";
4
4
  import "../../contexts/RPDocumentContext.js";
5
- import { k as C } from "../../RPDefaultLayout-6fe6be3d.js";
5
+ import { k as D } from "../../RPDefaultLayout-5fe1a471.js";
6
6
  import "../../contexts/DarkModeContext.js";
7
7
  import "../../contexts/RotationContext.js";
8
8
  import "../../contexts/LayerContext.js";
@@ -20,6 +20,7 @@ import "../../contexts/DropFileZoneContext.js";
20
20
  import "../../contexts/LayoutContainerContext.js";
21
21
  import "../../contexts/DimensionPagesContext.js";
22
22
  import "../../contexts/LocalizationContext.js";
23
+ import "../../contexts/HighlightContext.js";
23
24
  import "../../contexts/LoaderContext.js";
24
25
  import "../../components/RPConfig.js";
25
26
  import "../../contexts/ThemeContext.js";
@@ -27,5 +28,5 @@ import "../../components/RPDropFileZone.js";
27
28
  import "../../contexts/ToolbarComponentContext.js";
28
29
  import "../getThumbnailViewport.js";
29
30
  export {
30
- C as useThumbnail
31
+ D as useThumbnail
31
32
  };
@@ -3,7 +3,7 @@ import "../types.js";
3
3
  import "../../contexts/ScrollModeContext.js";
4
4
  import "react/jsx-runtime";
5
5
  import "../../contexts/RPDocumentContext.js";
6
- import { r as z } from "../../RPDefaultLayout-6fe6be3d.js";
6
+ import { s as A } from "../../RPDefaultLayout-5fe1a471.js";
7
7
  import "../../contexts/DarkModeContext.js";
8
8
  import "../../contexts/RotationContext.js";
9
9
  import "../../contexts/LayerContext.js";
@@ -20,11 +20,12 @@ import "../../contexts/DropFileZoneContext.js";
20
20
  import "../../contexts/LayoutContainerContext.js";
21
21
  import "../../contexts/DimensionPagesContext.js";
22
22
  import "../../contexts/LocalizationContext.js";
23
+ import "../../contexts/HighlightContext.js";
23
24
  import "../../contexts/LoaderContext.js";
24
25
  import "../../components/RPConfig.js";
25
26
  import "../../contexts/ThemeContext.js";
26
27
  import "../../components/RPDropFileZone.js";
27
28
  import "../../contexts/ToolbarComponentContext.js";
28
29
  export {
29
- z as useVirtualReactWindow
30
+ A as useVirtualReactWindow
30
31
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pdf-viewer/react",
3
3
  "private": false,
4
4
  "description": "The PDF Viewer component for React and Next.js",
5
- "version": "1.3.0",
5
+ "version": "1.4.0-beta.0",
6
6
  "keywords": [
7
7
  "component",
8
8
  "frontend",