UNPKG

@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
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 };