@react-pdf-kit/viewer 2.0.1-rc.0 → 2.0.1-rc.2

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 (49) hide show
  1. package/README.md +88 -49
  2. package/dist/{Combination-54a77a7a.js → Combination-136ff99c.js} +184 -187
  3. package/dist/components/layout/RPDefaultLayout.js +2 -2
  4. package/dist/components/layout/RPLayout.js +2 -2
  5. package/dist/components/layout/toolbar/DocumentDialog.js +1 -1
  6. package/dist/components/layout/toolbar/DocumentProperties.js +2 -2
  7. package/dist/components/layout/toolbar/FileDownloadTool.js +2 -2
  8. package/dist/components/layout/toolbar/FileUploadTool.js +2 -2
  9. package/dist/components/layout/toolbar/FullScreenTool.js +2 -2
  10. package/dist/components/layout/toolbar/MenuItem.js +2 -2
  11. package/dist/components/layout/toolbar/MenuSeparator.js +2 -2
  12. package/dist/components/layout/toolbar/MostPageTool.js +2 -2
  13. package/dist/components/layout/toolbar/OtherTool.js +2 -2
  14. package/dist/components/layout/toolbar/PrintTool.js +2 -2
  15. package/dist/components/layout/toolbar/RPMenuItem.js +2 -2
  16. package/dist/components/layout/toolbar/RPMoreOptions.js +2 -2
  17. package/dist/components/layout/toolbar/RPToolbar.js +2 -2
  18. package/dist/components/layout/toolbar/RPToolbarEnd.js +2 -2
  19. package/dist/components/layout/toolbar/RotateTool.js +2 -2
  20. package/dist/components/layout/toolbar/ScrollModeTool.js +2 -2
  21. package/dist/components/layout/toolbar/SearchTool.js +2 -2
  22. package/dist/components/layout/toolbar/SelectionModeTool.js +2 -2
  23. package/dist/components/layout/toolbar/ToolbarDefault.js +2 -2
  24. package/dist/components/layout/toolbar/ToolbarLayout.js +2 -2
  25. package/dist/components/layout/toolbar/ViewModeTool.js +2 -2
  26. package/dist/components/layout/toolbar/ZoomTool.js +2 -2
  27. package/dist/components/layout/toolbar/tools/DocumentPropertiesTool.js +1 -1
  28. package/dist/components/layout/toolbar/tools/DualPageWithCoverTool.js +2 -2
  29. package/dist/components/layout/toolbar/tools/FirstPageTool.js +2 -2
  30. package/dist/components/layout/toolbar/tools/LastPageTool.js +2 -2
  31. package/dist/components/layout/toolbar/tools/ZoomLevelTool.js +2 -2
  32. package/dist/components/layout/toolbar/tools/defaults/RPHorizontalBar.js +2 -2
  33. package/dist/components/layout/toolbar/tools/more-options/DocumentProperties.js +2 -2
  34. package/dist/components/layout/toolbar/tools/more-options/FileDownloadTool.js +2 -2
  35. package/dist/components/layout/toolbar/tools/more-options/FileUploadTool.js +2 -2
  36. package/dist/components/layout/toolbar/tools/more-options/FullScreenTool.js +2 -2
  37. package/dist/components/layout/toolbar/tools/more-options/MostPageTool.js +2 -2
  38. package/dist/components/layout/toolbar/tools/more-options/PrintTool.js +2 -2
  39. package/dist/components/layout/toolbar/tools/more-options/RotateTool.js +2 -2
  40. package/dist/components/layout/toolbar/tools/more-options/ScrollModeTool.js +2 -2
  41. package/dist/components/layout/toolbar/tools/more-options/SelectionModeTool.js +2 -2
  42. package/dist/components/layout/toolbar/tools/more-options/ViewModeTool.js +2 -2
  43. package/dist/components/ui/DropDown.js +2 -2
  44. package/dist/{index-4baea9b5.js → index-61f59539.js} +1 -1
  45. package/dist/main.js +2 -2
  46. package/dist/utils/highlight.js +36 -36
  47. package/dist/utils/hooks/useHighlight.js +78 -40
  48. package/dist/utils/hooks/useLicense.js +1 -1
  49. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { jsx as r, Fragment as g, jsxs as e } from "react/jsx-runtime";
2
2
  import { useMemo as L } from "react";
3
3
  import m from "../../../../ui/RPTooltip.js";
4
- import { G } from "../../../../../index-4baea9b5.js";
4
+ import { G } from "../../../../../index-61f59539.js";
5
5
  import { MenuSeparator as T } from "../../MenuSeparator.js";
6
6
  import { MenuItem as n } from "../../MenuItem.js";
7
7
  import { DualPageIcon as b } from "../../../../icons/DualPageIcon.js";
@@ -18,7 +18,7 @@ import "../../../../../index-e3ee9457.js";
18
18
  import "../../../../../floating-ui.react-dom-5ec29bd6.js";
19
19
  import "../../../../../index-655864a7.js";
20
20
  import "../../../../../utils/withRef.js";
21
- import "../../../../../Combination-54a77a7a.js";
21
+ import "../../../../../Combination-136ff99c.js";
22
22
  import "../../../../../clsx-0c6e471a.js";
23
23
  import "../../../../../utils/appConsole.js";
24
24
  import "../../../../../contexts/InitialStateContext.js";
@@ -1,11 +1,11 @@
1
1
  import { jsxs as p, jsx as d } from "react/jsx-runtime";
2
- import { R as l, T as c, P as _, C as m } from "../../index-4baea9b5.js";
2
+ import { R as l, T as c, P as _, C as m } from "../../index-61f59539.js";
3
3
  import { c as A } from "../../clsx-0c6e471a.js";
4
4
  import "react";
5
5
  import "../../index-c0faa594.js";
6
6
  import "react-dom";
7
7
  import "../../index-e3ee9457.js";
8
- import "../../Combination-54a77a7a.js";
8
+ import "../../Combination-136ff99c.js";
9
9
  import "../../floating-ui.react-dom-5ec29bd6.js";
10
10
  import "../../index-655864a7.js";
11
11
  const F = "_slideDownAndFade_1vzkq_1", w = "_slideLeftAndFade_1vzkq_1", f = "_slideUpAndFade_1vzkq_1", g = "_slideRightAndFade_1vzkq_1", h = {
@@ -3,7 +3,7 @@ import X from "react";
3
3
  import { c as ce, a as G, g as Ce, P as F, u as ke, f as Ge, b as M, d as me, j as Ke, h as Bt } from "./index-c0faa594.js";
4
4
  import { jsx as s } from "react/jsx-runtime";
5
5
  import { a as ve, u as _e, D as Yt } from "./index-e3ee9457.js";
6
- import { h as Ht, u as Vt, F as Xt, R as Wt, P as jt } from "./Combination-54a77a7a.js";
6
+ import { h as Ht, u as Vt, F as Xt, R as Wt, P as jt } from "./Combination-136ff99c.js";
7
7
  import { u as zt, a as Zt, o as qt, s as Jt, l as Qt, f as eo, b as to, c as oo, h as no } from "./floating-ui.react-dom-5ec29bd6.js";
8
8
  import { u as ro } from "./index-655864a7.js";
9
9
  function $e(e) {
package/dist/main.js CHANGED
@@ -144,8 +144,8 @@ import "./components/layout/toolbar/RPToolbarEnd.js";
144
144
  import "./components/layout/toolbar/FileUploadTool.js";
145
145
  import "./components/icons/FileUploadDefaultIcon.js";
146
146
  import "./components/layout/toolbar/MenuItem.js";
147
- import "./index-4baea9b5.js";
148
- import "./Combination-54a77a7a.js";
147
+ import "./index-61f59539.js";
148
+ import "./Combination-136ff99c.js";
149
149
  import "./components/layout/toolbar/DarkModeTool.js";
150
150
  import "./components/icons/MoonIcon.js";
151
151
  import "./components/icons/SunIcon.js";
@@ -1,21 +1,21 @@
1
1
  import { getCharacterType as D } from "./charators.js";
2
- function _(r, c, m, i) {
2
+ function _(l, c, m, i) {
3
3
  const s = [];
4
- for (const n of r) {
4
+ for (const n of l) {
5
5
  const o = y(c, n, i);
6
6
  s.push(...R(o, c, m));
7
7
  }
8
8
  return s;
9
9
  }
10
- const L = (r, c) => {
10
+ const L = (l, c) => {
11
11
  const m = ["g"];
12
12
  c.matchCase || m.push("i");
13
- let s = r.replace(/[.^$*+?()[{|\\]/g, (n) => `\\${n}`).trim();
13
+ let s = l.replace(/[.^$*+?()[{|\\]/g, (n) => `\\${n}`).trim();
14
14
  return new RegExp(s, m.join(""));
15
15
  };
16
- function y(r, c, m) {
16
+ function y(l, c, m) {
17
17
  const i = [];
18
- for (const t of r.items)
18
+ for (const t of l.items)
19
19
  if (t.hasEOL)
20
20
  if (t.str.endsWith("-")) {
21
21
  const d = t.str.lastIndexOf("-");
@@ -34,14 +34,14 @@ function y(r, c, m) {
34
34
  m.wholeWords && !W(s, e.index, e[0].length) || o.push([e.index, e[0].length, e[0]]);
35
35
  return o;
36
36
  }
37
- function R(r, c, m) {
37
+ function R(l, c, m) {
38
38
  function i(d) {
39
39
  return d.hasEOL ? d.str.endsWith("-") ? -1 : 1 : 0;
40
40
  }
41
41
  let s = 0, n = 0;
42
42
  const o = c.items, e = o.length - 1, t = [];
43
- for (let d = 0; d < r.length; d++) {
44
- let h = r[d][0];
43
+ for (let d = 0; d < l.length; d++) {
44
+ let h = l[d][0];
45
45
  for (; s !== e && h >= n + o[s].str.length; ) {
46
46
  const x = o[s];
47
47
  n += x.str.length + i(x), s++;
@@ -50,19 +50,19 @@ function R(r, c, m) {
50
50
  idx: s,
51
51
  offset: h - n
52
52
  };
53
- for (h += r[d][1]; s !== e && h > n + o[s].str.length; ) {
53
+ for (h += l[d][1]; s !== e && h > n + o[s].str.length; ) {
54
54
  const x = o[s];
55
55
  n += x.str.length + i(x), s++;
56
56
  }
57
- const l = {
57
+ const r = {
58
58
  idx: s,
59
59
  offset: h - n
60
60
  };
61
61
  t.push({
62
62
  start: g,
63
- end: l,
64
- str: r[d][2],
65
- oIndex: r[d][0],
63
+ end: r,
64
+ str: l[d][2],
65
+ oIndex: l[d][0],
66
66
  pageIndex: m,
67
67
  rect: { left: 0, bottom: 0, width: 0, height: 0 },
68
68
  rects: []
@@ -71,45 +71,45 @@ function R(r, c, m) {
71
71
  for (const d of t) {
72
72
  const h = [];
73
73
  for (let g = d.start.idx; g <= d.end.idx; g++) {
74
- const l = o[g], x = l.transform[4], C = l.transform[5], a = l.str.length > 0 ? l.width / l.str.length : 0, M = g === d.start.idx ? d.start.offset : 0, N = g === d.end.idx ? d.end.offset : l.str.length, f = x + M * a, E = (N - M) * a, u = (c.styles ?? {})[l.fontName], T = (u == null ? void 0 : u.ascent) ?? 1, v = (u == null ? void 0 : u.descent) != null ? Math.abs(u.descent) : 1 - T, b = C - v * l.height;
75
- (E > 0 || l.height > 0) && h.push({
74
+ const r = o[g], x = r.transform[4], C = r.transform[5], a = r.str.length > 0 ? r.width / r.str.length : 0, M = g === d.start.idx ? d.start.offset : 0, N = g === d.end.idx ? d.end.offset : r.str.length, f = x + M * a, E = (N - M) * a, u = (c.styles ?? {})[r.fontName], T = (u == null ? void 0 : u.ascent) ?? 1, v = (u == null ? void 0 : u.descent) != null ? Math.abs(u.descent) : 1 - T, b = C - v * r.height;
75
+ r.height > 0 && r.width > 0 && h.push({
76
76
  left: f,
77
77
  bottom: b,
78
78
  width: E,
79
- height: l.height
79
+ height: r.height
80
80
  });
81
81
  }
82
82
  d.rect = h[0], d.rects = h;
83
83
  }
84
84
  return t;
85
85
  }
86
- function W(r, c, m) {
87
- let i = r.slice(0, c).match(/([^\p{M}])\p{M}*$/u);
86
+ function W(l, c, m) {
87
+ let i = l.slice(0, c).match(/([^\p{M}])\p{M}*$/u);
88
88
  if (i) {
89
- const s = r.charCodeAt(c), n = i[1].charCodeAt(0);
89
+ const s = l.charCodeAt(c), n = i[1].charCodeAt(0);
90
90
  if (D(s) === D(n))
91
91
  return !1;
92
92
  }
93
- if (i = r.slice(c + m).match(/^\p{M}*([^\p{M}])/u), i) {
94
- const s = r.charCodeAt(c + m - 1), n = i[1].charCodeAt(0);
93
+ if (i = l.slice(c + m).match(/^\p{M}*([^\p{M}])/u), i) {
94
+ const s = l.charCodeAt(c + m - 1), n = i[1].charCodeAt(0);
95
95
  if (D(s) === D(n))
96
96
  return !1;
97
97
  }
98
98
  return !0;
99
99
  }
100
- function I(r, c, m) {
100
+ function I(l, c, m) {
101
101
  const i = [];
102
102
  function s(n, o, e = -1, t = -1, d = "") {
103
103
  const h = c.items[n], g = [];
104
- let l = "", x = "", C = "", a = m[n];
104
+ let r = "", x = "", C = "", a = m[n];
105
105
  if (!a)
106
106
  return;
107
107
  if (a.nodeType === Node.TEXT_NODE) {
108
108
  const f = document.createElement("span");
109
109
  a.before(f), f.append(a), m[n] = f, a = f;
110
110
  }
111
- e >= 0 && t >= 0 ? l = h.str.substring(e, t) : e < 0 && t < 0 ? l = h.str : e >= 0 ? l = h.str.substring(e) : t >= 0 && (l = h.str.substring(0, t));
112
- const M = document.createTextNode(l), N = document.createElement("span");
111
+ e >= 0 && t >= 0 ? r = h.str.substring(e, t) : e < 0 && t < 0 ? r = h.str : e >= 0 ? r = h.str.substring(e) : t >= 0 && (r = h.str.substring(0, t));
112
+ const M = document.createTextNode(r), N = document.createElement("span");
113
113
  if (N.className = "highlight appended " + d, N.setAttribute("data-match-index", `${o}`), N.append(M), g.push(N), i.push({ element: N, index: o }), e > 0)
114
114
  if (a.childNodes.length === 1 && a.childNodes[0].nodeType === Node.TEXT_NODE) {
115
115
  x = h.str.substring(0, e);
@@ -135,7 +135,7 @@ function I(r, c, m) {
135
135
  }
136
136
  a.replaceChildren(...g);
137
137
  }
138
- for (const [n, o] of r.entries())
138
+ for (const [n, o] of l.entries())
139
139
  if (o.start.idx === o.end.idx)
140
140
  s(o.start.idx, n, o.start.offset, o.end.offset);
141
141
  else
@@ -143,8 +143,8 @@ function I(r, c, m) {
143
143
  e === o.start.idx ? s(e, n, o.start.offset, -1, "begin") : e === o.end.idx ? s(e, n, -1, o.end.offset, "end") : s(e, n, -1, -1, "middle");
144
144
  return i;
145
145
  }
146
- function V(r, c) {
147
- const m = r.items.map((i) => i.str);
146
+ function V(l, c) {
147
+ const m = l.items.map((i) => i.str);
148
148
  for (let i = 0; i < c.length; i++) {
149
149
  const s = c[i];
150
150
  if (s && s.nodeType !== Node.TEXT_NODE) {
@@ -153,19 +153,19 @@ function V(r, c) {
153
153
  }
154
154
  }
155
155
  }
156
- function H(r = {}) {
157
- return { matchCase: !1, wholeWords: !1, ...r };
156
+ function H(l = {}) {
157
+ return { matchCase: !1, wholeWords: !1, ...l };
158
158
  }
159
- function S(r, c, m) {
159
+ function S(l, c, m) {
160
160
  const i = [];
161
161
  function s(n, o, e = -1, t = -1, d) {
162
162
  var f, E;
163
163
  const h = c.items[n], g = [];
164
- let l = "", x = "", C = "", a = m[n];
164
+ let r = "", x = "", C = "", a = m[n];
165
165
  if (!a)
166
166
  return;
167
- e >= 0 && t >= 0 ? l = h.str.substring(e, t) : e < 0 && t < 0 ? l = h.str : e >= 0 ? l = h.str.substring(e) : t >= 0 && (l = h.str.substring(0, t));
168
- const M = document.createTextNode(l), N = document.createElement("span");
167
+ e >= 0 && t >= 0 ? r = h.str.substring(e, t) : e < 0 && t < 0 ? r = h.str : e >= 0 ? r = h.str.substring(e) : t >= 0 && (r = h.str.substring(0, t));
168
+ const M = document.createTextNode(r), N = document.createElement("span");
169
169
  if (N.style.background = d, N.append(M), g.push(N), e > 0)
170
170
  if (a.childNodes.length === 1 && a.childNodes[0].nodeType === Node.TEXT_NODE) {
171
171
  x = h.str.substring(0, e);
@@ -205,7 +205,7 @@ function S(r, c, m) {
205
205
  }
206
206
  a.replaceChildren(...g), i.push({ element: N, index: o });
207
207
  }
208
- for (const [n, o] of r.entries()) {
208
+ for (const [n, o] of l.entries()) {
209
209
  const { start: e, end: t, color: d } = o;
210
210
  e.idx === t.idx && s(e.idx, n, e.offset, t.offset, d);
211
211
  }
@@ -1,55 +1,93 @@
1
- import { useState as m, useCallback as r, useEffect as C } from "react";
2
- import { getHighlightOptionsWithDefaults as H, findMatches as M } from "../highlight.js";
1
+ import { useState as f, useCallback as p, useEffect as w } from "react";
2
+ import { getHighlightOptionsWithDefaults as k, findMatches as P } from "../highlight.js";
3
3
  import "../charators.js";
4
- const k = (s) => {
5
- const [n, c] = m(void 0), [f, l] = m([]), u = r(async (t) => {
6
- if (!t)
4
+ const x = (n) => {
5
+ const e = Math.min(...n.map((s) => s.left)), c = Math.max(...n.map((s) => s.left + s.width)), o = Math.min(...n.map((s) => s.bottom)), t = Math.max(...n.map((s) => s.height));
6
+ return { left: e, bottom: o, width: c - e, height: t };
7
+ }, N = (n) => n.flatMap((e) => e.rects ?? (e.rect ? [e.rect] : [])), O = (n) => {
8
+ const e = n.reduce((o, t) => {
9
+ const s = Math.round(t.bottom);
10
+ return o[s] || (o[s] = []), o[s].push(t), o;
11
+ }, {});
12
+ return Object.entries(e).sort((o, t) => Number(t[0]) - Number(o[0])).map(([o, t]) => x(t));
13
+ }, L = (n) => {
14
+ const e = {};
15
+ for (const c of n) {
16
+ const o = c.keyword, t = e[o] ?? [];
17
+ t.push(c), e[o] = t;
18
+ }
19
+ return e;
20
+ }, j = (n, e) => {
21
+ const c = n[0], o = N(n), t = o.length > 0 ? O(o) : c.rect ? [c.rect] : [];
22
+ return {
23
+ ...c,
24
+ pageMatchIdx: e,
25
+ rect: t[0] ?? c.rect,
26
+ rects: t
27
+ };
28
+ }, v = (n) => {
29
+ const e = {};
30
+ for (const t of n) {
31
+ const s = e[t.page] ?? [];
32
+ s.push(t), e[t.page] = s;
33
+ }
34
+ let c = 0;
35
+ const o = [];
36
+ for (const t of Object.values(e)) {
37
+ const s = L(t);
38
+ for (const g of Object.values(s))
39
+ o.push(j(g, c++));
40
+ }
41
+ return o;
42
+ }, K = (n) => {
43
+ const [e, c] = f(void 0), [o, t] = f([]), s = p(async (r) => {
44
+ if (!r)
7
45
  return {};
8
- const i = t.numPages, e = {};
9
- for (let o = 1; o <= i; o++) {
10
- const h = await t.getPage(o);
11
- e[o.toString()] = await h.getTextContent();
46
+ const i = r.numPages, h = {};
47
+ for (let a = 1; a <= i; a++) {
48
+ const u = await r.getPage(a);
49
+ h[a.toString()] = await u.getTextContent();
12
50
  }
13
- return e;
14
- }, []), p = r(async (t) => {
15
- c(t);
16
- }, []), g = r(() => {
17
- l([]), c(void 0);
51
+ return h;
52
+ }, []), g = p(async (r) => {
53
+ c(r);
54
+ }, []), l = p(() => {
55
+ t([]), c(void 0);
18
56
  }, []);
19
- return C(() => {
20
- s && u(s).then((t) => {
57
+ return w(() => {
58
+ n && s(n).then((r) => {
21
59
  let i = [];
22
- for (const { keyword: e, highlightColor: o, options: h } of n) {
23
- if (!e)
60
+ for (const { keyword: h, highlightColor: a, options: u } of e) {
61
+ if (!h)
24
62
  continue;
25
- const y = H(h);
26
- for (const a of Object.keys(t)) {
27
- const b = M(
28
- [e],
29
- t[a],
30
- Number(a) - 1,
31
- y
32
- ).map((w, x) => ({
33
- ...w,
34
- page: Number(a),
35
- pageMatchIdx: x,
36
- color: o,
37
- keyword: e
63
+ const b = k(u);
64
+ for (const m of Object.keys(r)) {
65
+ const d = P(
66
+ [h],
67
+ r[m],
68
+ Number(m) - 1,
69
+ b
70
+ ).map((M, y) => ({
71
+ ...M,
72
+ page: Number(m),
73
+ pageMatchIdx: y,
74
+ color: a,
75
+ keyword: h
38
76
  }));
39
- i = [...i, ...b];
77
+ i = [...i, ...d];
40
78
  }
41
79
  }
42
- l(i);
80
+ t(v(i));
43
81
  }).catch(() => {
44
- g();
82
+ l();
45
83
  });
46
- }, [n, s, g, u]), {
47
- highlight: p,
48
- clear: g,
49
- highlightMatches: f,
50
- highlightKeywords: n
84
+ }, [e, n, l, s]), {
85
+ highlight: g,
86
+ clear: l,
87
+ highlightMatches: o,
88
+ highlightKeywords: e
51
89
  };
52
90
  };
53
91
  export {
54
- k as useHighlight
92
+ K as useHighlight
55
93
  };
@@ -1,6 +1,6 @@
1
1
  import { useState as E, useCallback as h, useEffect as A } from "react";
2
2
  import { appConsole as l } from "../appConsole.js";
3
- const b = /* @__PURE__ */ new Date("2026-02-24T04:09:54.598Z"), d = "Please visit https://www.react-pdf.dev/manage-license/ to generate a new license key.", s = {
3
+ const b = /* @__PURE__ */ new Date("2026-02-24T10:02:24.424Z"), d = "Please visit https://www.react-pdf.dev/manage-license/ to generate a new license key.", s = {
4
4
  invalidLicense: `You are currently using without a valid license. ${d}`,
5
5
  mismatchedDomain: `Your license key is not valid for the current domain / IP. ${d}`,
6
6
  expired: `Your license key has expired. ${d}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-pdf-kit/viewer",
3
- "version": "2.0.1-rc.0",
3
+ "version": "2.0.1-rc.2",
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": [