@react-pdf-kit/viewer 2.1.0 → 2.2.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.
@@ -1,17 +1,25 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { RPTheme as s } from "./RPTheme.js";
3
- import { ConfigContextProvider as d } from "../contexts/ConfigContext.js";
2
+ import { RPTheme as d } from "./RPTheme.js";
3
+ import { ConfigContextProvider as l } from "../contexts/ConfigContext.js";
4
4
  import { useLoadWorker as f } from "../utils/hooks/useLoadWorker.js";
5
- import { LicenseProvider as l } from "../contexts/LicenseContext.js";
5
+ import { LicenseProvider as a } from "../contexts/LicenseContext.js";
6
6
  import "../contexts/ThemeContext.js";
7
7
  import "react";
8
8
  import "pdfjs-dist";
9
9
  import "../utils/hooks/useLicense.js";
10
10
  import "../utils/appConsole.js";
11
- const w = (o) => {
12
- const { children: e, customVariables: i, customDarkVariables: t, workerUrl: m, licenseKey: n, ...c } = o, { workerUrlAdded: p } = f(m);
13
- return /* @__PURE__ */ r(l, { licenseKey: n, children: /* @__PURE__ */ r(d, { workerUrlAdded: p, ...c, children: /* @__PURE__ */ r(s, { customDarkVariables: t, customVariables: i, children: e }) }) });
11
+ const v = (o) => {
12
+ const {
13
+ children: e,
14
+ customVariables: i,
15
+ customDarkVariables: m,
16
+ workerUrl: t,
17
+ wasmUrl: n,
18
+ licenseKey: s,
19
+ ...c
20
+ } = o, { workerUrlAdded: p } = f(t);
21
+ return /* @__PURE__ */ r(a, { licenseKey: s, children: /* @__PURE__ */ r(l, { workerUrlAdded: p, wasmUrl: n, ...c, children: /* @__PURE__ */ r(d, { customDarkVariables: m, customVariables: i, children: e }) }) });
14
22
  };
15
23
  export {
16
- w as RPConfig
24
+ v as RPConfig
17
25
  };
@@ -1,13 +1,12 @@
1
- import { jsxs as p, Fragment as i, jsx as o } from "react/jsx-runtime";
2
- import { useCallback as u } from "react";
3
- import { c as D } from "../clsx-0c6e471a.js";
4
- import { useDropFileZoneContext as g } from "../contexts/DropFileZoneContext.js";
5
- import { LightPdfIcon as h } from "./icons/LightPdfIcon.js";
6
- import { DarkPdfIcon as C } from "./icons/DarkPdfIcon.js";
7
- import { useDarkModeContext as x } from "../contexts/DarkModeContext.js";
8
- import { useToolbarComponentContext as F } from "../contexts/ToolbarComponentContext.js";
9
- import { useLocalizationContext as v } from "../contexts/LocalizationContext.js";
10
- import { useToolComponentContext as z } from "../contexts/ToolComponentContext.js";
1
+ import { jsxs as s, Fragment as t, jsx as r } from "react/jsx-runtime";
2
+ import { useCallback as F } from "react";
3
+ import { c as v } from "../clsx-0c6e471a.js";
4
+ import { useDropFileZoneContext as Z } from "../contexts/DropFileZoneContext.js";
5
+ import { LightPdfIcon as x } from "./icons/LightPdfIcon.js";
6
+ import { DarkPdfIcon as z } from "./icons/DarkPdfIcon.js";
7
+ import { useDarkModeContext as C } from "../contexts/DarkModeContext.js";
8
+ import { useLocalizationContext as _ } from "../contexts/LocalizationContext.js";
9
+ import { useDropFileZone as k } from "../utils/hooks/useDropFileZone.js";
11
10
  import "../contexts/RPDocumentContext.js";
12
11
  import "../utils/hooks/useLoadPdf.js";
13
12
  import "pdfjs-dist";
@@ -20,34 +19,42 @@ import "../utils/appConsole.js";
20
19
  import "../utils/hooks/usePdfProperties.js";
21
20
  import "../utils/convertPdfDate.js";
22
21
  import "../utils/formatFileSize.js";
22
+ import "../contexts/ToolbarComponentContext.js";
23
+ import "../contexts/ToolComponentContext.js";
23
24
  import "../utils/hooks/useDarkMode.js";
24
25
  import "../utils/hooks/useLocalization.js";
25
- const m = {
26
+ import "../contexts/LayoutDropFileZoneContext.js";
27
+ const l = {
26
28
  "rp-drop-zone": "_rp-drop-zone_1sc50_1",
27
29
  "rp-drop-zone-transparent": "_rp-drop-zone-transparent_1sc50_15"
28
- }, Z = {}, U = () => {
29
- const { dragging: s, handleDragLeave: a, handleDrop: l } = g(), { darkMode: n } = x(), { dropFileZone: r = !0 } = F(), { dropFileZone: e = !0 } = z(), { localeMessages: t } = v(), d = u((f) => {
30
- f.preventDefault();
30
+ }, L = {}, $ = () => {
31
+ const { dragging: d, handleDragLeave: c, handleDrop: f } = Z(), { darkMode: p } = C(), { localeMessages: e } = _(), { DropFileZoneLayout: i, DropFileZoneTool: m, DropFileZoneToolbar: a } = k(), u = [i, m, a].includes(
32
+ !1
33
+ ), D = F((o) => {
34
+ o.preventDefault();
31
35
  }, []);
32
- if (!r || !e || !s)
36
+ if (!d || u)
33
37
  return null;
34
- const c = () => typeof r == "function" ? /* @__PURE__ */ o(r, {}) : typeof e == "function" ? /* @__PURE__ */ o(e, {}) : /* @__PURE__ */ p(i, { children: [
35
- /* @__PURE__ */ o("div", { children: n ? /* @__PURE__ */ o(C, {}) : /* @__PURE__ */ o(h, {}) }),
36
- /* @__PURE__ */ o("p", { children: t == null ? void 0 : t.dragDropFileMessage })
37
- ] });
38
- return /* @__PURE__ */ p(i, { children: [
39
- /* @__PURE__ */ o("div", { className: D(m["rp-drop-zone"], n ? Z["rp-dark-mode"] : ""), children: /* @__PURE__ */ o(c, {}) }),
40
- /* @__PURE__ */ o(
38
+ const n = (o) => o ? typeof o == "function" ? /* @__PURE__ */ r("slot", {}) : typeof o != "boolean" ? /* @__PURE__ */ r(t, { children: o }) : null : null, h = /* @__PURE__ */ s(t, { children: [
39
+ /* @__PURE__ */ r("div", { children: p ? /* @__PURE__ */ r(z, {}) : /* @__PURE__ */ r(x, {}) }),
40
+ /* @__PURE__ */ r("p", { children: e == null ? void 0 : e.dragDropFileMessage })
41
+ ] }), g = () => (
42
+ // Priority: RPLayout > RPHorizontalBar\RPDefaultLayout (slots)
43
+ n(i) ?? n(m) ?? n(a) ?? h
44
+ );
45
+ return /* @__PURE__ */ s(t, { children: [
46
+ /* @__PURE__ */ r("div", { className: v(l["rp-drop-zone"], p ? L["rp-dark-mode"] : ""), children: /* @__PURE__ */ r(g, {}) }),
47
+ /* @__PURE__ */ r(
41
48
  "div",
42
49
  {
43
- className: m["rp-drop-zone-transparent"],
44
- onDragOver: d,
45
- onDragLeave: a,
46
- onDrop: l
50
+ className: l["rp-drop-zone-transparent"],
51
+ onDragOver: D,
52
+ onDragLeave: c,
53
+ onDrop: f
47
54
  }
48
55
  )
49
56
  ] });
50
57
  };
51
58
  export {
52
- U as RPDropFileZone
59
+ $ as RPDropFileZone
53
60
  };
@@ -146,13 +146,15 @@ import "../../utils/hooks/useInfiniteScroll.js";
146
146
  import "../../contexts/DropFileZoneContext.js";
147
147
  import "../icons/LightPdfIcon.js";
148
148
  import "../icons/DarkPdfIcon.js";
149
+ import "../../utils/hooks/useDropFileZone.js";
150
+ import "../../contexts/LayoutDropFileZoneContext.js";
149
151
  import "../../utils/hooks/useLoadPdf.js";
150
152
  import "../../contexts/ConfigContext.js";
151
153
  import "../../utils/hooks/usePdfProperties.js";
152
154
  import "../../utils/convertPdfDate.js";
153
155
  import "../../utils/formatFileSize.js";
154
156
  import "../../contexts/ThemeContext.js";
155
- const kt = L((n, a) => {
157
+ const jt = L((n, a) => {
156
158
  const {
157
159
  children: l,
158
160
  slots: s,
@@ -234,5 +236,5 @@ const kt = L((n, a) => {
234
236
  ] }) }) }) }) });
235
237
  });
236
238
  export {
237
- kt as RPDefaultLayout
239
+ jt as RPDefaultLayout
238
240
  };
@@ -1,15 +1,16 @@
1
1
  import { jsx as o, jsxs as m } from "react/jsx-runtime";
2
- import { useEffect as u } from "react";
3
- import { useLayoutContainer as y } from "../../contexts/LayoutContainerContext.js";
2
+ import { useEffect as y } from "react";
3
+ import { useLayoutContainer as L } from "../../contexts/LayoutContainerContext.js";
4
4
  import { Container as C } from "./Container.js";
5
- import { ViewportProvider as L } from "../../contexts/ViewportContext.js";
6
- import { ToolbarLayout as g } from "./toolbar/ToolbarLayout.js";
7
- import { WrapperLayout as b } from "./WrapperLayout.js";
8
- import { useDocumentContext as x } from "../../contexts/RPDocumentContext.js";
5
+ import { ViewportProvider as g } from "../../contexts/ViewportContext.js";
6
+ import { ToolbarLayout as b } from "./toolbar/ToolbarLayout.js";
7
+ import { WrapperLayout as x } from "./WrapperLayout.js";
8
+ import { useDocumentContext as v } from "../../contexts/RPDocumentContext.js";
9
9
  import { RPDropFileZone as k } from "../RPDropFileZone.js";
10
+ import { LayoutDropFileZoneProvider as P } from "../../contexts/LayoutDropFileZoneContext.js";
10
11
  import { c as j } from "../../RPLayout.module-b4b23e29.js";
11
- import { useLoaderContext as v } from "../../contexts/LoaderContext.js";
12
- import { LayoutContainer as w } from "./LayoutContainer.js";
12
+ import { useLoaderContext as w } from "../../contexts/LoaderContext.js";
13
+ import { LayoutContainer as D } from "./LayoutContainer.js";
13
14
  import { SkipLink as p } from "./SkipLink.js";
14
15
  import "../../clsx-0c6e471a.js";
15
16
  import "./toolbar/ToolbarDefault.js";
@@ -156,8 +157,9 @@ import "../../utils/convertPdfDate.js";
156
157
  import "../../utils/formatFileSize.js";
157
158
  import "../icons/LightPdfIcon.js";
158
159
  import "../icons/DarkPdfIcon.js";
160
+ import "../../utils/hooks/useDropFileZone.js";
159
161
  import "../../contexts/ThemeContext.js";
160
- const vr = (e) => {
162
+ const Fr = (e) => {
161
163
  const {
162
164
  children: n,
163
165
  style: a,
@@ -166,16 +168,17 @@ const vr = (e) => {
166
168
  onLoaded: t,
167
169
  cleanupOnLoaded: r,
168
170
  onLayoutWidthChange: d,
169
- toolbar: f
170
- } = e, { setContainer: c } = y(), { loading: h } = x(), { LoaderImageComponent: i } = v();
171
- return u(() => (t && t(), () => {
171
+ toolbar: f,
172
+ dropFileZone: c = !0
173
+ } = e, { setContainer: u } = L(), { loading: h } = v(), { LoaderImageComponent: i } = w();
174
+ return y(() => (t && t(), () => {
172
175
  r && r();
173
176
  }), [t, r]), // TODO: deprecated in v2.0.0, remove later ("LayoutContainer") ~
174
- /* @__PURE__ */ o(w, { children: /* @__PURE__ */ o(L, { mobileWidth: s, onLayoutWidthChange: d, children: /* @__PURE__ */ m(C, { getContainerRef: c, style: a, className: l, children: [
177
+ /* @__PURE__ */ o(D, { children: /* @__PURE__ */ o(P, { value: c, children: /* @__PURE__ */ o(g, { mobileWidth: s, onLayoutWidthChange: d, children: /* @__PURE__ */ m(C, { getContainerRef: u, style: a, className: l, children: [
175
178
  /* @__PURE__ */ o(p, { href: "#rp-menu", label: "Skip to Menu" }),
176
179
  /* @__PURE__ */ o(p, { href: "#rp-main-content", label: "Skip to Main Content" }),
177
- /* @__PURE__ */ m(b, { children: [
178
- /* @__PURE__ */ o(g, { toolbar: f, children: n }),
180
+ /* @__PURE__ */ m(x, { children: [
181
+ /* @__PURE__ */ o(b, { toolbar: f, children: n }),
179
182
  /* @__PURE__ */ o(k, {})
180
183
  ] }),
181
184
  h ? /* @__PURE__ */ o(
@@ -206,8 +209,8 @@ const vr = (e) => {
206
209
  )
207
210
  }
208
211
  ) : null
209
- ] }) }) });
212
+ ] }) }) }) });
210
213
  };
211
214
  export {
212
- vr as RPLayout
215
+ Fr as RPLayout
213
216
  };
@@ -1,7 +1,5 @@
1
- import { jsx as r, Fragment as e } from "react/jsx-runtime";
2
- import { useDropFileZoneContext as n } from "../../contexts/DropFileZoneContext.js";
3
- import { useToolbarComponentContext as i } from "../../contexts/ToolbarComponentContext.js";
4
- import { useToolComponentContext as a } from "../../contexts/ToolComponentContext.js";
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import { useDropFileZoneContext as t } from "../../contexts/DropFileZoneContext.js";
5
3
  import "react";
6
4
  import "../../contexts/RPDocumentContext.js";
7
5
  import "../../utils/hooks/useLoadPdf.js";
@@ -15,12 +13,14 @@ import "../../utils/appConsole.js";
15
13
  import "../../utils/hooks/usePdfProperties.js";
16
14
  import "../../utils/convertPdfDate.js";
17
15
  import "../../utils/formatFileSize.js";
18
- const s = {
16
+ import "../../contexts/ToolbarComponentContext.js";
17
+ import "../../contexts/ToolComponentContext.js";
18
+ const m = {
19
19
  "rp-wrapper-layout": "_rp-wrapper-layout_2cghq_1"
20
- }, j = ({ children: o }) => {
21
- const { handleDragEnter: m } = n(), { dropFileZone: t } = i(), { dropFileZone: p } = a();
22
- return typeof t == "boolean" && !t ? /* @__PURE__ */ r(e, { children: o }) : typeof p == "boolean" && !p ? /* @__PURE__ */ r(e, { children: o }) : /* @__PURE__ */ r("div", { className: s["rp-wrapper-layout"], onDragEnter: m, children: o });
20
+ }, E = ({ children: r }) => {
21
+ const { handleDragEnter: o } = t();
22
+ return /* @__PURE__ */ p("div", { className: m["rp-wrapper-layout"], onDragEnter: o, children: r });
23
23
  };
24
24
  export {
25
- j as WrapperLayout
25
+ E as WrapperLayout
26
26
  };
@@ -69,6 +69,7 @@ import "../../../ui/LoadingIndicator.js";
69
69
  import "../../../../RPSplitter-f6acf13b.js";
70
70
  import "../../WrapperLayout.js";
71
71
  import "../../../RPDropFileZone.js";
72
+ import "../../../../contexts/LayoutDropFileZoneContext.js";
72
73
  import "../../../../RPLayout.module-b4b23e29.js";
73
74
  import "../../LayoutContainer.js";
74
75
  import "../../SkipLink.js";
@@ -186,7 +187,8 @@ import "../../sidebar/Thumbnail.js";
186
187
  import "../../../../utils/hooks/useInfiniteScroll.js";
187
188
  import "../../../icons/LightPdfIcon.js";
188
189
  import "../../../icons/DarkPdfIcon.js";
189
- const C = ({ children: t, className: i, localeMessages: o }) => /* @__PURE__ */ r(m, { className: i, content: o == null ? void 0 : o.dualPageWithCoverTooltip, children: t }), Er = ({ icon: t }) => {
190
+ import "../../../../utils/hooks/useDropFileZone.js";
191
+ const C = ({ children: t, className: i, localeMessages: o }) => /* @__PURE__ */ r(m, { className: i, content: o == null ? void 0 : o.dualPageWithCoverTooltip, children: t }), Gr = ({ icon: t }) => {
190
192
  const { setDualPageWithCover: i } = e(), { localeMessages: o } = u();
191
193
  return /* @__PURE__ */ r(C, { localeMessages: o, children: /* @__PURE__ */ r(
192
194
  p,
@@ -198,5 +200,5 @@ const C = ({ children: t, className: i, localeMessages: o }) => /* @__PURE__ */
198
200
  ) });
199
201
  };
200
202
  export {
201
- Er as DualPageWithCoverTool
203
+ Gr as DualPageWithCoverTool
202
204
  };
@@ -69,6 +69,7 @@ import "../../../ui/LoadingIndicator.js";
69
69
  import "../../../../RPSplitter-f6acf13b.js";
70
70
  import "../../WrapperLayout.js";
71
71
  import "../../../RPDropFileZone.js";
72
+ import "../../../../contexts/LayoutDropFileZoneContext.js";
72
73
  import "../../../../RPLayout.module-b4b23e29.js";
73
74
  import "../../LayoutContainer.js";
74
75
  import "../../SkipLink.js";
@@ -186,12 +187,13 @@ import "../../sidebar/Thumbnail.js";
186
187
  import "../../../../utils/hooks/useInfiniteScroll.js";
187
188
  import "../../../icons/LightPdfIcon.js";
188
189
  import "../../../icons/DarkPdfIcon.js";
189
- const l = ({ children: t, className: r, localeMessages: o }) => /* @__PURE__ */ i(n, { className: r, content: o == null ? void 0 : o.firstPageTooltip, children: t }), Hr = ({ icon: t }) => {
190
+ import "../../../../utils/hooks/useDropFileZone.js";
191
+ const l = ({ children: t, className: r, localeMessages: o }) => /* @__PURE__ */ i(n, { className: r, content: o == null ? void 0 : o.firstPageTooltip, children: t }), Kr = ({ icon: t }) => {
190
192
  const { goToPage: r } = f(), { localeMessages: o } = c(), m = p(() => {
191
193
  r(1);
192
194
  }, [r]);
193
195
  return /* @__PURE__ */ i(l, { localeMessages: o, children: /* @__PURE__ */ i(a, { onClick: m, "aria-label": o == null ? void 0 : o.firstPageTooltip, children: t || /* @__PURE__ */ i(T, { className: P["rp-go-to-Top"] }) }) });
194
196
  };
195
197
  export {
196
- Hr as FirstPageTool
198
+ Kr as FirstPageTool
197
199
  };
@@ -69,6 +69,7 @@ import "../../../ui/LoadingIndicator.js";
69
69
  import "../../../../RPSplitter-f6acf13b.js";
70
70
  import "../../WrapperLayout.js";
71
71
  import "../../../RPDropFileZone.js";
72
+ import "../../../../contexts/LayoutDropFileZoneContext.js";
72
73
  import "../../../../RPLayout.module-b4b23e29.js";
73
74
  import "../../LayoutContainer.js";
74
75
  import "../../SkipLink.js";
@@ -186,12 +187,13 @@ import "../../sidebar/Thumbnail.js";
186
187
  import "../../../../utils/hooks/useInfiniteScroll.js";
187
188
  import "../../../icons/LightPdfIcon.js";
188
189
  import "../../../icons/DarkPdfIcon.js";
189
- const c = ({ children: t, className: r, localeMessages: o }) => /* @__PURE__ */ m(a, { className: r, content: o == null ? void 0 : o.lastPageTooltip, children: t }), Jr = ({ icon: t }) => {
190
+ import "../../../../utils/hooks/useDropFileZone.js";
191
+ const c = ({ children: t, className: r, localeMessages: o }) => /* @__PURE__ */ m(a, { className: r, content: o == null ? void 0 : o.lastPageTooltip, children: t }), Nr = ({ icon: t }) => {
190
192
  const { goToPage: r, totalPages: o } = T(), { localeMessages: i } = f(), p = n(() => {
191
193
  r(o);
192
194
  }, [r, o]);
193
195
  return /* @__PURE__ */ m(c, { localeMessages: i, children: /* @__PURE__ */ m(P, { onClick: p, "aria-label": i == null ? void 0 : i.lastPageTooltip, children: t || /* @__PURE__ */ m(l, {}) }) });
194
196
  };
195
197
  export {
196
- Jr as LastPageTool
198
+ Nr as LastPageTool
197
199
  };
@@ -1,13 +1,14 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
2
  import { createContext as i, useContext as s } from "react";
3
3
  const o = i({
4
- workerUrlAdded: !1
5
- }), f = () => s(o), x = (t) => {
4
+ workerUrlAdded: !1,
5
+ wasmUrl: void 0
6
+ }), d = () => s(o), f = (t) => {
6
7
  const { children: e, ...r } = t;
7
8
  return /* @__PURE__ */ n(o.Provider, { value: r, children: e });
8
9
  };
9
10
  export {
10
11
  o as ConfigContext,
11
- x as ConfigContextProvider,
12
- f as useConfigContext
12
+ f as ConfigContextProvider,
13
+ d as useConfigContext
13
14
  };
@@ -0,0 +1,11 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { createContext as n, useContext as u } from "react";
3
+ const i = !0, o = n(i), p = () => u(o), x = ({
4
+ value: t,
5
+ children: e
6
+ }) => /* @__PURE__ */ r(o.Provider, { value: t, children: e });
7
+ export {
8
+ o as LayoutDropFileZoneContext,
9
+ x as LayoutDropFileZoneProvider,
10
+ p as useLayoutDropFileZoneContext
11
+ };
package/dist/main.js CHANGED
@@ -1,54 +1,54 @@
1
- import { RPProvider as dt } from "./components/RPProvider.js";
2
- import { RPPages as Dt } from "./components/RPPages.js";
3
- import { RPConfig as Ft } from "./components/RPConfig.js";
4
- import { RPDefaultLayout as Mt } from "./components/layout/RPDefaultLayout.js";
5
- import { RPLayout as vt } from "./components/layout/RPLayout.js";
6
- import { RPTheme as Bt } from "./components/RPTheme.js";
7
- import { default as Ht } from "./components/ui/RPTooltip.js";
8
- import { UIButton as bt } from "./components/ui/Button.js";
9
- import { useDarkModeContext as zt } from "./contexts/DarkModeContext.js";
10
- import { u as Ut } from "./PaginationContext-9217cab4.js";
11
- import { useDocumentContext as Nt } from "./contexts/RPDocumentContext.js";
12
- import { useRotationContext as jt } from "./contexts/RotationContext.js";
13
- import { useViewModeContext as At } from "./contexts/ViewModeContext.js";
14
- import { useDropFileZoneContext as Jt } from "./contexts/DropFileZoneContext.js";
15
- import { useFileDownload as Qt } from "./utils/hooks/useFileDownload.js";
16
- import { useOpenFileContext as Yt } from "./contexts/FileInputContext.js";
17
- import { usePrintContext as $t } from "./contexts/PrintContext.js";
18
- import { useZoomContext as rm } from "./contexts/ZoomContext.js";
19
- import { useSearchContext as mm } from "./contexts/SearchContext.js";
20
- import { useHighlightContext as im } from "./contexts/HighlightContext.js";
21
- import { useFullScreenContext as lm } from "./contexts/FullScreenContext.js";
22
- import { usePageRotateContext as fm } from "./utils/hooks/usePageRotateContext.js";
23
- import { useElementPageContext as nm } from "./contexts/ElementPageContext.js";
24
- import { SearchTool as Tm } from "./components/layout/toolbar/SearchTool.js";
25
- import { ThemeSwitcherTool as sm } from "./components/layout/toolbar/tools/ThemeSwitcherTool.js";
26
- import { ThumbnailTool as gm } from "./components/layout/toolbar/tools/ThumbnailTool.js";
27
- import { FileUploadTool as Rm } from "./components/layout/toolbar/tools/FileUploadTool.js";
28
- import { FileDownloadTool as dm } from "./components/layout/toolbar/tools/FileDownloadTool.js";
29
- import { PrintTool as Dm } from "./components/layout/toolbar/tools/PrintTool.js";
30
- import { FullScreenTool as Fm } from "./components/layout/toolbar/tools/FullScreenTool.js";
31
- import { PreviousPageTool as Mm } from "./components/layout/toolbar/tools/PreviousPageTool.js";
32
- import { NextPageTool as vm } from "./components/layout/toolbar/tools/NextPageTool.js";
33
- import { InputPageTool as Bm } from "./components/layout/toolbar/tools/InputPageTool.js";
34
- import { ZoomInTool as Hm } from "./components/layout/toolbar/tools/ZoomInTool.js";
35
- import { ZoomOutTool as bm } from "./components/layout/toolbar/tools/ZoomOutTool.js";
36
- import { ZoomLevelTool as zm } from "./components/layout/toolbar/tools/ZoomLevelTool.js";
37
- import { DocumentPropertiesTool as Um } from "./components/layout/toolbar/tools/DocumentPropertiesTool.js";
38
- import { RotateClockwiseTool as Nm } from "./components/layout/toolbar/tools/RotateClockwiseTool.js";
39
- import { RotateCounterclockwiseTool as jm } from "./components/layout/toolbar/tools/RotateCounterclockwiseTool.js";
40
- import { RPHorizontalBar as Am } from "./components/layout/toolbar/tools/defaults/RPHorizontalBar.js";
41
- import { RPVerticalBar as Jm } from "./components/layout/toolbar/tools/defaults/RPVerticalBar.js";
42
- import { SelectionModeSwitcherTool as Qm } from "./components/layout/toolbar/tools/SelectionModeSwitcherTool.js";
43
- import { SinglePageTool as Ym } from "./components/layout/toolbar/tools/SinglePageTool.js";
44
- import { DualPageTool as $m } from "./components/layout/toolbar/tools/DualPageTool.js";
45
- import { DualPageWithCoverTool as rp } from "./components/layout/toolbar/tools/DualPageWithCoverTool.js";
46
- import { PageScrollingTool as mp } from "./components/layout/toolbar/tools/PageScrollingTool.js";
47
- import { VerticalScrollingTool as ip } from "./components/layout/toolbar/tools/VerticalScrollingTool.js";
48
- import { HorizontalScrollingTool as lp } from "./components/layout/toolbar/tools/HorizontalScrollingTool.js";
49
- import { FirstPageTool as fp } from "./components/layout/toolbar/tools/FirstPageTool.js";
50
- import { LastPageTool as np } from "./components/layout/toolbar/tools/LastPageTool.js";
51
- import { Locales as Tp, ScrollMode as Pp, SelectionMode as sp, ThemeVariables as cp, ViewMode as gp, ZoomLevel as Cp } from "./utils/types.js";
1
+ import { RPProvider as Dt } from "./components/RPProvider.js";
2
+ import { RPPages as Ft } from "./components/RPPages.js";
3
+ import { RPConfig as Mt } from "./components/RPConfig.js";
4
+ import { RPDefaultLayout as vt } from "./components/layout/RPDefaultLayout.js";
5
+ import { RPLayout as Bt } from "./components/layout/RPLayout.js";
6
+ import { RPTheme as Ht } from "./components/RPTheme.js";
7
+ import { default as bt } from "./components/ui/RPTooltip.js";
8
+ import { UIButton as zt } from "./components/ui/Button.js";
9
+ import { useDarkModeContext as Ut } from "./contexts/DarkModeContext.js";
10
+ import { u as Nt } from "./PaginationContext-9217cab4.js";
11
+ import { useDocumentContext as jt } from "./contexts/RPDocumentContext.js";
12
+ import { useRotationContext as At } from "./contexts/RotationContext.js";
13
+ import { useViewModeContext as Jt } from "./contexts/ViewModeContext.js";
14
+ import { useDropFileZoneContext as Qt } from "./contexts/DropFileZoneContext.js";
15
+ import { useFileDownload as Yt } from "./utils/hooks/useFileDownload.js";
16
+ import { useOpenFileContext as $t } from "./contexts/FileInputContext.js";
17
+ import { usePrintContext as rm } from "./contexts/PrintContext.js";
18
+ import { useZoomContext as mm } from "./contexts/ZoomContext.js";
19
+ import { useSearchContext as im } from "./contexts/SearchContext.js";
20
+ import { useHighlightContext as lm } from "./contexts/HighlightContext.js";
21
+ import { useFullScreenContext as fm } from "./contexts/FullScreenContext.js";
22
+ import { usePageRotateContext as nm } from "./utils/hooks/usePageRotateContext.js";
23
+ import { useElementPageContext as Tm } from "./contexts/ElementPageContext.js";
24
+ import { SearchTool as sm } from "./components/layout/toolbar/SearchTool.js";
25
+ import { ThemeSwitcherTool as gm } from "./components/layout/toolbar/tools/ThemeSwitcherTool.js";
26
+ import { ThumbnailTool as Rm } from "./components/layout/toolbar/tools/ThumbnailTool.js";
27
+ import { FileUploadTool as dm } from "./components/layout/toolbar/tools/FileUploadTool.js";
28
+ import { FileDownloadTool as Dm } from "./components/layout/toolbar/tools/FileDownloadTool.js";
29
+ import { PrintTool as Fm } from "./components/layout/toolbar/tools/PrintTool.js";
30
+ import { FullScreenTool as Mm } from "./components/layout/toolbar/tools/FullScreenTool.js";
31
+ import { PreviousPageTool as vm } from "./components/layout/toolbar/tools/PreviousPageTool.js";
32
+ import { NextPageTool as Bm } from "./components/layout/toolbar/tools/NextPageTool.js";
33
+ import { InputPageTool as Hm } from "./components/layout/toolbar/tools/InputPageTool.js";
34
+ import { ZoomInTool as bm } from "./components/layout/toolbar/tools/ZoomInTool.js";
35
+ import { ZoomOutTool as zm } from "./components/layout/toolbar/tools/ZoomOutTool.js";
36
+ import { ZoomLevelTool as Um } from "./components/layout/toolbar/tools/ZoomLevelTool.js";
37
+ import { DocumentPropertiesTool as Nm } from "./components/layout/toolbar/tools/DocumentPropertiesTool.js";
38
+ import { RotateClockwiseTool as jm } from "./components/layout/toolbar/tools/RotateClockwiseTool.js";
39
+ import { RotateCounterclockwiseTool as Am } from "./components/layout/toolbar/tools/RotateCounterclockwiseTool.js";
40
+ import { RPHorizontalBar as Jm } from "./components/layout/toolbar/tools/defaults/RPHorizontalBar.js";
41
+ import { RPVerticalBar as Qm } from "./components/layout/toolbar/tools/defaults/RPVerticalBar.js";
42
+ import { SelectionModeSwitcherTool as Ym } from "./components/layout/toolbar/tools/SelectionModeSwitcherTool.js";
43
+ import { SinglePageTool as $m } from "./components/layout/toolbar/tools/SinglePageTool.js";
44
+ import { DualPageTool as rp } from "./components/layout/toolbar/tools/DualPageTool.js";
45
+ import { DualPageWithCoverTool as mp } from "./components/layout/toolbar/tools/DualPageWithCoverTool.js";
46
+ import { PageScrollingTool as ip } from "./components/layout/toolbar/tools/PageScrollingTool.js";
47
+ import { VerticalScrollingTool as lp } from "./components/layout/toolbar/tools/VerticalScrollingTool.js";
48
+ import { HorizontalScrollingTool as fp } from "./components/layout/toolbar/tools/HorizontalScrollingTool.js";
49
+ import { FirstPageTool as np } from "./components/layout/toolbar/tools/FirstPageTool.js";
50
+ import { LastPageTool as Tp } from "./components/layout/toolbar/tools/LastPageTool.js";
51
+ import { Locales as sp, ScrollMode as cp, SelectionMode as gp, ThemeVariables as Cp, ViewMode as Rp, ZoomLevel as Sp } from "./utils/types.js";
52
52
  import "react/jsx-runtime";
53
53
  import "react";
54
54
  import "./contexts/DocumentPasswordContext.js";
@@ -202,6 +202,8 @@ import "./components/layout/WrapperLayout.js";
202
202
  import "./components/RPDropFileZone.js";
203
203
  import "./components/icons/LightPdfIcon.js";
204
204
  import "./components/icons/DarkPdfIcon.js";
205
+ import "./utils/hooks/useDropFileZone.js";
206
+ import "./contexts/LayoutDropFileZoneContext.js";
205
207
  import "./components/layout/SkipLink.js";
206
208
  import "./components/layout/toolbar/ToolbarLayout.js";
207
209
  import "./components/layout/toolbar/ToolbarDefault.js";
@@ -230,60 +232,60 @@ import "./components/layout/toolbar/SearchCloseButton.js";
230
232
  import "./components/icons/ChevronDownIcon.js";
231
233
  import "./components/layout/toolbar/ThumbnailTool.js";
232
234
  export {
233
- Um as DocumentPropertiesTool,
234
- $m as DualPageTool,
235
- rp as DualPageWithCoverTool,
236
- dm as FileDownloadTool,
237
- Rm as FileUploadTool,
238
- fp as FirstPageTool,
239
- Fm as FullScreenTool,
240
- lp as HorizontalScrollingTool,
241
- Bm as InputPageTool,
242
- np as LastPageTool,
243
- Tp as Locales,
244
- vm as NextPageTool,
245
- mp as PageScrollingTool,
246
- Mm as PreviousPageTool,
247
- Dm as PrintTool,
248
- bt as RPButton,
249
- Ft as RPConfig,
250
- Mt as RPDefaultLayout,
251
- Am as RPHorizontalBar,
252
- vt as RPLayout,
253
- Dt as RPPages,
254
- dt as RPProvider,
255
- Bt as RPTheme,
256
- Ht as RPTooltip,
257
- Jm as RPVerticalBar,
258
- Nm as RotateClockwiseTool,
259
- jm as RotateCounterclockwiseTool,
260
- Pp as ScrollMode,
261
- Tm as SearchTool,
262
- sp as SelectionMode,
263
- Qm as SelectionModeSwitcherTool,
264
- Ym as SinglePageTool,
265
- sm as ThemeSwitcherTool,
266
- cp as ThemeVariables,
267
- gm as ThumbnailTool,
268
- ip as VerticalScrollingTool,
269
- gp as ViewMode,
270
- Hm as ZoomInTool,
271
- Cp as ZoomLevel,
272
- zm as ZoomLevelTool,
273
- bm as ZoomOutTool,
274
- zt as useDarkModeContext,
275
- Nt as useDocumentContext,
276
- Jt as useDropFileZoneContext,
277
- nm as useElementPageContext,
278
- Qt as useFileDownload,
279
- lm as useFullScreenContext,
280
- im as useHighlightContext,
281
- Yt as useOpenFileContext,
282
- fm as usePageRotateContext,
283
- Ut as usePaginationContext,
284
- $t as usePrintContext,
285
- jt as useRotationContext,
286
- mm as useSearchContext,
287
- At as useViewModeContext,
288
- rm as useZoomContext
235
+ Nm as DocumentPropertiesTool,
236
+ rp as DualPageTool,
237
+ mp as DualPageWithCoverTool,
238
+ Dm as FileDownloadTool,
239
+ dm as FileUploadTool,
240
+ np as FirstPageTool,
241
+ Mm as FullScreenTool,
242
+ fp as HorizontalScrollingTool,
243
+ Hm as InputPageTool,
244
+ Tp as LastPageTool,
245
+ sp as Locales,
246
+ Bm as NextPageTool,
247
+ ip as PageScrollingTool,
248
+ vm as PreviousPageTool,
249
+ Fm as PrintTool,
250
+ zt as RPButton,
251
+ Mt as RPConfig,
252
+ vt as RPDefaultLayout,
253
+ Jm as RPHorizontalBar,
254
+ Bt as RPLayout,
255
+ Ft as RPPages,
256
+ Dt as RPProvider,
257
+ Ht as RPTheme,
258
+ bt as RPTooltip,
259
+ Qm as RPVerticalBar,
260
+ jm as RotateClockwiseTool,
261
+ Am as RotateCounterclockwiseTool,
262
+ cp as ScrollMode,
263
+ sm as SearchTool,
264
+ gp as SelectionMode,
265
+ Ym as SelectionModeSwitcherTool,
266
+ $m as SinglePageTool,
267
+ gm as ThemeSwitcherTool,
268
+ Cp as ThemeVariables,
269
+ Rm as ThumbnailTool,
270
+ lp as VerticalScrollingTool,
271
+ Rp as ViewMode,
272
+ bm as ZoomInTool,
273
+ Sp as ZoomLevel,
274
+ Um as ZoomLevelTool,
275
+ zm as ZoomOutTool,
276
+ Ut as useDarkModeContext,
277
+ jt as useDocumentContext,
278
+ Qt as useDropFileZoneContext,
279
+ Tm as useElementPageContext,
280
+ Yt as useFileDownload,
281
+ fm as useFullScreenContext,
282
+ lm as useHighlightContext,
283
+ $t as useOpenFileContext,
284
+ nm as usePageRotateContext,
285
+ Nt as usePaginationContext,
286
+ rm as usePrintContext,
287
+ At as useRotationContext,
288
+ im as useSearchContext,
289
+ Jt as useViewModeContext,
290
+ mm as useZoomContext
289
291
  };
@@ -0,0 +1,9 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ interface LayoutDropFileZoneProviderProps extends PropsWithChildren {
3
+ value: LayoutDropFileZoneValue;
4
+ }
5
+ type LayoutDropFileZoneValue = boolean | React.ReactNode | React.ComponentType;
6
+ export declare const LayoutDropFileZoneContext: import('react').Context<LayoutDropFileZoneValue>;
7
+ export declare const useLayoutDropFileZoneContext: () => LayoutDropFileZoneValue;
8
+ export declare const LayoutDropFileZoneProvider: FC<LayoutDropFileZoneProviderProps>;
9
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare const useDropFileZone: () => {
2
+ DropFileZoneLayout: import('react').ReactNode | import('react').ComponentType<{}>;
3
+ DropFileZoneTool: import('react').ReactNode | import('react').ComponentType<{}>;
4
+ DropFileZoneToolbar: import('react').ReactNode | import('react').ComponentType<{}>;
5
+ };
@@ -363,6 +363,7 @@ export interface PdfProperties {
363
363
  }
364
364
  export interface ConfigContextType {
365
365
  workerUrlAdded: boolean;
366
+ wasmUrl?: string;
366
367
  }
367
368
  export declare enum ThemeVariables {
368
369
  FONT_FAMILY = "--rp-font-family",
@@ -521,6 +522,7 @@ export interface RPDefaultLayoutProps extends PropsWithChildren, ViewportProps {
521
522
  cleanupOnLoaded?: () => void;
522
523
  }
523
524
  export interface RPLayoutProps extends PropsWithChildren, ViewportProps {
525
+ dropFileZone?: boolean | React.ReactNode | React.ComponentType;
524
526
  toolbar?: boolean | Partial<ToolbarProps>;
525
527
  style?: React.CSSProperties;
526
528
  className?: string;
@@ -0,0 +1,12 @@
1
+ import { useLayoutDropFileZoneContext as r } from "../../contexts/LayoutDropFileZoneContext.js";
2
+ import { useToolComponentContext as n } from "../../contexts/ToolComponentContext.js";
3
+ import { useToolbarComponentContext as p } from "../../contexts/ToolbarComponentContext.js";
4
+ import "react/jsx-runtime";
5
+ import "react";
6
+ const F = () => {
7
+ const o = r(), { dropFileZone: e } = n(), { dropFileZone: t } = p();
8
+ return { DropFileZoneLayout: o, DropFileZoneTool: e, DropFileZoneToolbar: t };
9
+ };
10
+ export {
11
+ F as useDropFileZone
12
+ };
@@ -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-03-11T13:00:44.647Z"), d = "Please visit https://www.react-pdf.dev/manage-license/ to generate a new license key.", s = {
3
+ const b = /* @__PURE__ */ new Date("2026-03-12T07:27:29.050Z"), 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}`,
@@ -1,42 +1,43 @@
1
- import { useState as d, useRef as A, useEffect as k } from "react";
2
- import * as I from "pdfjs-dist";
3
- import { ErrorType as F } from "../types.js";
4
- import { getThumbnailViewport as j } from "../getThumbnailViewport.js";
5
- import { useConfigContext as z } from "../../contexts/ConfigContext.js";
6
- import { useDocumentPasswordContext as _ } from "../../contexts/DocumentPasswordContext.js";
1
+ import { useState as a, useRef as F, useEffect as v } from "react";
2
+ import * as U from "pdfjs-dist";
3
+ import { ErrorType as j } from "../types.js";
4
+ import { getThumbnailViewport as z } from "../getThumbnailViewport.js";
5
+ import { useConfigContext as _ } from "../../contexts/ConfigContext.js";
6
+ import { useDocumentPasswordContext as B } from "../../contexts/DocumentPasswordContext.js";
7
7
  import "../../de_DE-a553b162.js";
8
8
  import "react/jsx-runtime";
9
9
  import "../appConsole.js";
10
- const Y = (m, s, h = {}) => {
11
- const [n, q] = d(), { workerUrlAdded: v } = z(), [D, S] = d(/* @__PURE__ */ new Map()), a = A(), [f, g] = d(0), [P, T] = d(!1), [N, O] = d(), { password: u, passwordError: U, setPasswordError: c, passwordRequired: p, setPasswordRequired: w } = _(), { onLoadError: i, onLoaded: E, onLoadProgress: b, disableAutoFetch: x, disableStream: C, rangeChunkSize: V } = h;
12
- return k(() => {
13
- b && b(f);
14
- }, [f, b]), k(() => {
15
- if (!v || !m)
10
+ const Z = (m, s, h = {}) => {
11
+ const [n, q] = a(), { workerUrlAdded: S, wasmUrl: f } = _(), [D, T] = a(/* @__PURE__ */ new Map()), d = F(), [g, P] = a(0), [c, x] = a(!1), [N, O] = a(), { password: u, passwordError: A, setPasswordError: p, passwordRequired: w, setPasswordRequired: E } = B(), { onLoadError: i, onLoaded: b, onLoadProgress: R, disableAutoFetch: C, disableStream: V, rangeChunkSize: I } = h;
12
+ return v(() => {
13
+ R && R(g);
14
+ }, [g, R]), v(() => {
15
+ if (!S || !m)
16
16
  return;
17
- g(0), a.current = Date.now();
18
- const r = a.current, R = {
17
+ P(0), d.current = Date.now();
18
+ const r = d.current, y = {
19
19
  url: m,
20
20
  cMapPacked: (s == null ? void 0 : s.isCompressed) ?? !0,
21
21
  ...(s == null ? void 0 : s.url) && { cMapUrl: s.url },
22
22
  ...u && { password: u },
23
- ...x !== void 0 && { disableAutoFetch: x },
24
- ...C !== void 0 && { disableStream: C },
25
- ...V !== void 0 && { rangeChunkSize: V },
26
- verbosity: I.VerbosityLevel.ERRORS
23
+ ...C !== void 0 && { disableAutoFetch: C },
24
+ ...V !== void 0 && { disableStream: V },
25
+ ...I !== void 0 && { rangeChunkSize: I },
26
+ ...f && { wasmUrl: f },
27
+ verbosity: U.VerbosityLevel.ERRORS
27
28
  };
28
29
  try {
29
- const e = I.getDocument(R);
30
+ const e = U.getDocument(y);
30
31
  e.onProgress = (o) => {
31
- if (r === a.current) {
32
- const { loaded: y, total: l } = o, L = l ? Math.min(100, Math.round(y / l * 100)) : 0;
33
- g(L);
32
+ if (r === d.current) {
33
+ const { loaded: L, total: l } = o, k = l ? Math.min(100, Math.round(L / l * 100)) : 0;
34
+ P(k);
34
35
  }
35
- }, T(!0);
36
- const t = e.promise.then((o) => (r === a.current && (q(o), g(100)), E && E(o), w(!1), c(""), o)).catch((o) => {
37
- o instanceof Error && o.name === "PasswordException" ? (w(!0), c(o.message || "Password required")) : o instanceof Error && o.name === "InvalidPDFException" && u ? (w(!0), c("Incorrect password")) : i && i(o);
36
+ }, x(!0);
37
+ const t = e.promise.then((o) => (r === d.current && (q(o), P(100)), b && b(o), E(!1), p(""), o)).catch((o) => {
38
+ o instanceof Error && o.name === "PasswordException" ? (E(!0), p(o.message || "Password required")) : o instanceof Error && o.name === "InvalidPDFException" && u ? (E(!0), p("Incorrect password")) : i && i(o);
38
39
  }).finally(() => {
39
- T(!1);
40
+ x(!1);
40
41
  });
41
42
  return () => {
42
43
  t.finally(() => {
@@ -44,42 +45,42 @@ const Y = (m, s, h = {}) => {
44
45
  });
45
46
  };
46
47
  } catch (e) {
47
- O(F.NOT_SUPPORTED), i && i(e);
48
+ O(j.NOT_SUPPORTED), i && i(e);
48
49
  }
49
- }, [m, v, u, i, E]), k(() => {
50
- if (p)
50
+ }, [m, S, f, u, i, b]), v(() => {
51
+ if (w)
51
52
  return;
52
53
  const r = /* @__PURE__ */ new Map();
53
- if (!n || P) {
54
- S(r);
54
+ if (!n || c) {
55
+ T(r);
55
56
  return;
56
57
  }
57
- const R = n.numPages, e = [];
58
- for (let t = 1; t <= R; t++) {
58
+ const y = n.numPages, e = [];
59
+ for (let t = 1; t <= y; t++) {
59
60
  const o = n.getPage(t);
60
61
  e.push(o);
61
62
  }
62
63
  Promise.all(e).then((t) => {
63
64
  t.map((o) => {
64
- const { thumbnailViewport: y, scale: l } = j(o), L = o.getViewport();
65
+ const { thumbnailViewport: L, scale: l } = z(o), k = o.getViewport();
65
66
  r.set(o.pageNumber, {
66
67
  page: o,
67
- thumbnailViewport: y,
68
+ thumbnailViewport: L,
68
69
  thumbnailScale: l,
69
- defaultRotation: L.rotation
70
+ defaultRotation: k.rotation
70
71
  });
71
- }), S(r);
72
+ }), T(r);
72
73
  });
73
- }, [n, P, p]), {
74
+ }, [n, c, w]), {
74
75
  pdf: n,
75
76
  pages: D,
76
- loading: P,
77
+ loading: c,
77
78
  error: N,
78
- loadingProgress: f,
79
- passwordRequired: p,
80
- passwordError: U
79
+ loadingProgress: g,
80
+ passwordRequired: w,
81
+ passwordError: A
81
82
  };
82
83
  };
83
84
  export {
84
- Y as useLoadPdf
85
+ Z as useLoadPdf
85
86
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-pdf-kit/viewer",
3
- "version": "2.1.0",
3
+ "version": "2.2.0-beta.0",
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": [