@pdf-viewer/react
Version:
A react-pdf-viewer component for React and Next.js. Suitable for react-pdf document.
140 lines (139 loc) • 4.54 kB
JavaScript
import { jsx as z } from "react/jsx-runtime";
import { createContext as H, useState as N, useCallback as d, useContext as U, useRef as W, useMemo as q } from "react";
import { ScrollMode as g, LicenseType as B } from "../utils/types.js";
import { useDimensionPagesContext as J } from "./DimensionPagesContext.js";
import { usePagesRotateContext as K } from "./PagesRotateContext.js";
import { useLicenseContext as Q } from "./LicenseContext.js";
import { useZoomContext as X } from "./ZoomContext.js";
import { ORGANIZATION_ALLOWED_FEATURES_MESSAGE as x } from "../utils/const.js";
import { getScrollDistance as w } from "../utils/getScrollDistance.js";
import { useLayoutContainer as Y } from "./LayoutContainerContext.js";
import { useScrollModeContext as $ } from "./ScrollModeContext.js";
import { getElementPagePosition as ee } from "../utils/getElementPositionInPage.js";
import { useViewModeContext as te } from "./ViewModeContext.js";
import { useVirtualScrollContext as oe } from "./VirtualScrollContext.js";
import "../th_TH-d627cd51.js";
import "../utils/appConsole.js";
import "./RPDocumentContext.js";
import "../utils/hooks/useLoadPdf.js";
import "pdfjs-dist";
import "../utils/getThumbnailViewport.js";
import "./ConfigContext.js";
import "./DocumentPasswordContext.js";
import "../utils/hooks/usePdfProperties.js";
import "../utils/convertPdfDate.js";
import "../utils/formatFileSize.js";
import "../utils/constants.js";
import "./RotationContext.js";
import "./InitialStateContext.js";
import "./EventCallbackContext.js";
import "../utils/hooks/useLicense.js";
import "../utils/getZoomLevel.js";
import "./GlobalCurrentPage.js";
import "../utils/hooks/useDebounce.js";
const S = H(void 0), Ve = ({ children: l }) => {
const [s, m] = N({}), { widths: t, heights: r } = J(), { pagesRef: c } = Y(), { scrollMode: C } = $(), { pageRotate: u } = K(), { currentZoom: a } = X(), { columnCount: R } = te(), { pageScrollElementRef: I, virtualScrollableElementRef: T } = oe(), M = d(
(e, i, o = { behavior: "smooth" }) => {
var v;
const n = T || I;
if (!c || !n)
return;
const L = (v = s[e]) == null ? void 0 : v[i];
if (!L)
return;
let p = 0, P = 0;
if (C === g.VERTICAL_SCROLLING) {
const f = e - 1, E = R, j = f % E, k = Math.floor(f / E);
p = w(r, k), P = w(t, j);
}
C === g.HORIZONTAL_SCROLLING && (P = t.slice(0, e - 1).reduce((f, E) => f + E, 0));
const _ = {
height: r[e - 1],
width: t[e - 1]
}, D = u[e], { left: G, top: Z } = ee(
_,
c,
L,
D,
a
), V = P + G, b = p + Z, F = {
left: Math.max(V, 0),
top: Math.max(b, 0)
};
n.scrollTo({
...F,
behavior: o.behavior
});
},
[s, r, t, c, u, a, C]
), A = d(
(e, i) => {
m((o) => {
const n = { width: t[e - 1], height: r[e - 1] };
return {
...o,
[e]: i(
o[e],
n,
u[e],
a * 100
)
};
});
},
[t, r, a, u]
), O = d((e) => {
m((i) => {
const o = { ...i };
return delete o[e], o;
});
}, []), y = d((e, i) => {
m((o) => {
const n = { ...o };
return n[e] = n[e].filter((L, p) => p !== i), n;
});
}, []);
return /* @__PURE__ */ z(
S.Provider,
{
value: { updateElement: A, clearElements: O, removeElement: y, elementList: s, scrollToElement: M },
children: l
}
);
}, h = () => {
}, be = () => {
const l = U(S), { type: s, validating: m } = Q(), t = W(0), r = q(() => {
if (m !== !1)
return {
updateElement: h,
clearElements: h,
removeElement: h,
elementList: {},
scrollToElement: h
};
if (!(s !== B.Developer))
return {
updateElement: () => {
t.current === 0 && (console.error(x), t.current++);
},
clearElements: () => {
t.current === 0 && (console.error(x), t.current++);
},
removeElement: () => {
t.current === 0 && (console.error(x), t.current++);
},
elementList: {},
scrollToElement: () => {
t.current === 0 && (console.error(x), t.current++);
}
};
}, [s, m]);
if (!l)
throw new Error("useElementPageContext must be used within a ElementPageProvider");
return r || l;
};
export {
S as ElementPageContext,
Ve as ElementPageProvider,
be as useElementPageContext
};