@react-pdf-kit/viewer 2.8.0-beta.1 → 2.8.0-beta.11

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 (175) hide show
  1. package/README.md +44 -30
  2. package/dist/{AnnotationLayer-C6UTOVmc.js → AnnotationLayer-CyOYh0Tw.js} +2 -2
  3. package/dist/CanvasLayer-CJqCJ30J.js +111 -0
  4. package/dist/{LoadingIndicator-Bzzf28Xv.js → LoadingIndicator-0E8WHnSN.js} +7 -7
  5. package/dist/MenuItem-lItnKNd5.js +31 -0
  6. package/dist/Paginate.module-DhE7N8AA.js +9 -0
  7. package/dist/PaginationContext-DIzsZhFd.js +194 -0
  8. package/dist/{PasswordModal-BeLyLUsu.js → PasswordModal-CxHFn0pB.js} +12 -12
  9. package/dist/RPLayout.module-BH5r8dDc.js +14 -0
  10. package/dist/RPPages-cyO0Tn21.js +690 -0
  11. package/dist/{RPTooltip-CXBVXusS.js → RPTooltip-QWwWh4HW.js} +123 -91
  12. package/dist/SearchTool.module-DY8Ucfb_.js +17 -0
  13. package/dist/{SkipLink-CdcjClGB.js → SkipLink-Dj83gZdk.js} +3 -3
  14. package/dist/{TextLayer-DWGFN9SF.js → TextLayer-D-V9kogG.js} +5 -5
  15. package/dist/{Thumbnail-BO3QHzxR.js → Thumbnail-BXMk0OWF.js} +6 -6
  16. package/dist/{Thumbnails-DyeBsQJT.js → Thumbnails-BIuN8LZ8.js} +2 -2
  17. package/dist/assets/AnnotationLayer.css +1 -1
  18. package/dist/assets/CanvasLayer.css +1 -0
  19. package/dist/assets/LoadingIndicator.css +1 -1
  20. package/dist/assets/MenuItem.css +1 -1
  21. package/dist/assets/Paginate.css +1 -1
  22. package/dist/assets/PasswordModal.css +1 -1
  23. package/dist/assets/RPLayout.css +1 -1
  24. package/dist/assets/RPPages.css +1 -1
  25. package/dist/assets/SearchTool.css +1 -1
  26. package/dist/assets/SkipLink.css +1 -1
  27. package/dist/assets/TextLayer.css +1 -1
  28. package/dist/assets/Thumbnail.css +1 -1
  29. package/dist/assets/style.js +1 -1
  30. package/dist/components/RPController.js +39 -39
  31. package/dist/components/RPPages.js +1 -1
  32. package/dist/components/RPProvider.js +1 -1
  33. package/dist/components/layout/LayoutContainer.js +6 -6
  34. package/dist/components/layout/LayoutWrapper.js +5 -5
  35. package/dist/components/layout/RPDefaultLayout.js +56 -55
  36. package/dist/components/layout/RPLayout.js +39 -38
  37. package/dist/components/layout/SkipLink.js +1 -1
  38. package/dist/components/layout/sidebar/RPSidebar.js +2 -2
  39. package/dist/components/layout/sidebar/Thumbnail.js +1 -1
  40. package/dist/components/layout/sidebar/Thumbnails.js +1 -1
  41. package/dist/components/layout/toolbar/DarkModeTool.js +1 -1
  42. package/dist/components/layout/toolbar/DocumentProperties.js +6 -6
  43. package/dist/components/layout/toolbar/FileDownloadTool.js +6 -6
  44. package/dist/components/layout/toolbar/FileUploadTool.js +6 -6
  45. package/dist/components/layout/toolbar/FullScreenTool.js +9 -8
  46. package/dist/components/layout/toolbar/MenuItem.js +1 -1
  47. package/dist/components/layout/toolbar/MostPageTool.js +23 -29
  48. package/dist/components/layout/toolbar/OtherTool.js +1 -1
  49. package/dist/components/layout/toolbar/Paginate.js +18 -3
  50. package/dist/components/layout/toolbar/PrintTool.js +6 -6
  51. package/dist/components/layout/toolbar/RPMenuItem.js +2 -2
  52. package/dist/components/layout/toolbar/RPMoreOptions.js +1 -1
  53. package/dist/components/layout/toolbar/RPToolbar.js +1 -1
  54. package/dist/components/layout/toolbar/RotateTool.js +10 -10
  55. package/dist/components/layout/toolbar/ScrollModeTool.js +17 -17
  56. package/dist/components/layout/toolbar/SearchCloseButton.js +2 -2
  57. package/dist/components/layout/toolbar/SearchResultNavigator.js +2 -2
  58. package/dist/components/layout/toolbar/SearchTool.js +133 -121
  59. package/dist/components/layout/toolbar/SelectionModeTool.js +10 -10
  60. package/dist/components/layout/toolbar/ThumbnailTool.js +1 -1
  61. package/dist/components/layout/toolbar/ToolbarCustom.js +2 -2
  62. package/dist/components/layout/toolbar/ToolbarDefault.js +2 -2
  63. package/dist/components/layout/toolbar/ViewModeTool.js +16 -16
  64. package/dist/components/layout/toolbar/ZoomTool.js +82 -80
  65. package/dist/components/layout/toolbar/tools/DocumentPropertiesTool.js +1 -1
  66. package/dist/components/layout/toolbar/tools/DualPageTool.js +1 -1
  67. package/dist/components/layout/toolbar/tools/DualPageWithCoverTool.js +1 -1
  68. package/dist/components/layout/toolbar/tools/FileDownloadTool.js +1 -1
  69. package/dist/components/layout/toolbar/tools/FileUploadTool.js +1 -1
  70. package/dist/components/layout/toolbar/tools/FirstPageTool.js +1 -1
  71. package/dist/components/layout/toolbar/tools/FullScreenTool.js +1 -1
  72. package/dist/components/layout/toolbar/tools/HorizontalScrollingTool.js +3 -3
  73. package/dist/components/layout/toolbar/tools/InputPageTool.js +36 -25
  74. package/dist/components/layout/toolbar/tools/LastPageTool.js +1 -1
  75. package/dist/components/layout/toolbar/tools/NextPageTool.js +2 -2
  76. package/dist/components/layout/toolbar/tools/PageScrollingTool.js +1 -1
  77. package/dist/components/layout/toolbar/tools/PreviousPageTool.js +2 -2
  78. package/dist/components/layout/toolbar/tools/PrintTool.js +1 -1
  79. package/dist/components/layout/toolbar/tools/RotateClockwiseTool.js +1 -1
  80. package/dist/components/layout/toolbar/tools/RotateCounterclockwiseTool.js +1 -1
  81. package/dist/components/layout/toolbar/tools/SelectionModeSwitcherTool.js +1 -1
  82. package/dist/components/layout/toolbar/tools/SinglePageTool.js +1 -1
  83. package/dist/components/layout/toolbar/tools/ThemeSwitcherTool.js +1 -1
  84. package/dist/components/layout/toolbar/tools/ThumbnailTool.js +1 -1
  85. package/dist/components/layout/toolbar/tools/VerticalScrollingTool.js +1 -1
  86. package/dist/components/layout/toolbar/tools/ZoomInTool.js +25 -23
  87. package/dist/components/layout/toolbar/tools/ZoomLevelDisplay.js +1 -1
  88. package/dist/components/layout/toolbar/tools/ZoomLevelTool.js +2 -2
  89. package/dist/components/layout/toolbar/tools/ZoomOutTool.js +25 -23
  90. package/dist/components/layout/toolbar/tools/more-options/DocumentProperties.js +2 -2
  91. package/dist/components/layout/toolbar/tools/more-options/FileDownloadTool.js +2 -2
  92. package/dist/components/layout/toolbar/tools/more-options/FileUploadTool.js +2 -2
  93. package/dist/components/layout/toolbar/tools/more-options/FullScreenTool.js +2 -2
  94. package/dist/components/layout/toolbar/tools/more-options/MostPageTool.js +3 -3
  95. package/dist/components/layout/toolbar/tools/more-options/PrintTool.js +2 -2
  96. package/dist/components/layout/toolbar/tools/more-options/RotateTool.js +2 -2
  97. package/dist/components/layout/toolbar/tools/more-options/ScrollModeTool.js +7 -7
  98. package/dist/components/layout/toolbar/tools/more-options/SelectionModeTool.js +2 -2
  99. package/dist/components/layout/toolbar/tools/more-options/ViewModeTool.js +2 -2
  100. package/dist/components/page/AnnotationLayer.js +1 -1
  101. package/dist/components/page/CanvasLayer.js +2 -48
  102. package/dist/components/page/DualPage.js +2 -2
  103. package/dist/components/page/DualPageWithCover.js +2 -2
  104. package/dist/components/page/RPPage.js +94 -2
  105. package/dist/components/page/SinglePage.js +2 -2
  106. package/dist/components/page/TextHighlightLayer.js +1 -1
  107. package/dist/components/page/TextLayer.js +1 -1
  108. package/dist/components/ui/LoadingIndicator.js +1 -1
  109. package/dist/components/ui/PasswordModal.js +1 -1
  110. package/dist/components/ui/RPTooltip.js +1 -1
  111. package/dist/contexts/DimensionPagesContext.js +38 -22
  112. package/dist/contexts/ElementPageContext.js +46 -39
  113. package/dist/contexts/ElementThumbnailContext.js +1 -1
  114. package/dist/contexts/PaginationContext.js +1 -1
  115. package/dist/contexts/RenderQueueProvider.js +26 -18
  116. package/dist/contexts/RenderedPagesCache.js +32 -13
  117. package/dist/contexts/VirtualScrollContext.js +10 -13
  118. package/dist/contexts/ZoomContext.js +119 -61
  119. package/dist/{de_DE--0LF-SJR.js → de_DE-x4Z-jQrz.js} +54 -6
  120. package/dist/{main-0RC2E65p.js → main-DCzVrq0G.js} +2 -2
  121. package/dist/main.js +4 -4
  122. package/dist/style-CJtyyrJx.js +5 -0
  123. package/dist/types/components/page/CanvasLayer.d.ts +4 -1
  124. package/dist/types/components/ui/RPTooltip.d.ts +3 -2
  125. package/dist/types/contexts/RenderQueueProvider.d.ts +2 -0
  126. package/dist/types/contexts/RenderedPagesCache.d.ts +3 -0
  127. package/dist/types/contexts/VirtualScrollContext.d.ts +0 -3
  128. package/dist/types/locales/de_DE.json.d.ts +11 -2
  129. package/dist/types/locales/en_US.json.d.ts +11 -2
  130. package/dist/types/locales/it_IT.json.d.ts +11 -2
  131. package/dist/types/locales/pt_PT.json.d.ts +11 -2
  132. package/dist/types/locales/th_TH.json.d.ts +11 -2
  133. package/dist/types/locales/zh_CN.json.d.ts +11 -2
  134. package/dist/types/utils/Queue.d.ts +1 -0
  135. package/dist/types/utils/const.d.ts +3 -0
  136. package/dist/types/utils/constants.d.ts +9 -0
  137. package/dist/types/utils/documentLayout.d.ts +60 -0
  138. package/dist/types/utils/hooks/usePinch.d.ts +14 -1
  139. package/dist/types/utils/hooks/usePresentPage.d.ts +2 -2
  140. package/dist/types/utils/hooks/useZoomOrigin.d.ts +4 -0
  141. package/dist/types/utils/types.d.ts +24 -2
  142. package/dist/types/utils/zoom.d.ts +2 -0
  143. package/dist/utils/Queue.js +5 -0
  144. package/dist/utils/const.js +2 -2
  145. package/dist/utils/constants.js +2 -2
  146. package/dist/utils/documentLayout.js +141 -0
  147. package/dist/utils/hooks/useLicense.js +1 -1
  148. package/dist/utils/hooks/useLoadPdf.js +73 -63
  149. package/dist/utils/hooks/useLocalization.js +1 -1
  150. package/dist/utils/hooks/usePaginate.js +1 -1
  151. package/dist/utils/hooks/usePinch.js +109 -56
  152. package/dist/utils/hooks/usePresentPage.js +33 -57
  153. package/dist/utils/hooks/useScrollToPage.js +1 -1
  154. package/dist/utils/hooks/useSearch.js +66 -67
  155. package/dist/utils/hooks/useZoomOrigin.js +37 -0
  156. package/dist/utils/renderPage.js +21 -14
  157. package/dist/utils/types.js +3 -3
  158. package/dist/utils/zoom.js +8 -2
  159. package/package.json +1 -1
  160. package/dist/MenuItem-9kCH_GQ0.js +0 -15
  161. package/dist/Paginate.module-B0GMw-MB.js +0 -8
  162. package/dist/PaginationContext-C5CJiEW-.js +0 -242
  163. package/dist/RPLayout.module-Vc3h4xxS.js +0 -14
  164. package/dist/RPPage-BsDixmqF.js +0 -91
  165. package/dist/RPPages-Cf-FDd0a.js +0 -1007
  166. package/dist/SearchTool.module-DUkVXfOn.js +0 -16
  167. package/dist/assets/RPPage.css +0 -1
  168. package/dist/contexts/VirtualGridContext.js +0 -18
  169. package/dist/style-BPQRJJJ7.js +0 -5
  170. package/dist/types/contexts/VirtualGridContext.d.ts +0 -9
  171. package/dist/types/utils/calculatePage.d.ts +0 -12
  172. package/dist/types/utils/hooks/useVirtualReactWindow.d.ts +0 -17
  173. package/dist/utils/calculatePage.js +0 -30
  174. package/dist/utils/hooks/useVirtualReactWindow.js +0 -86
  175. /package/dist/{TextHighlightLayer-BSVgBxR3.js → TextHighlightLayer-3vIZbRyL.js} +0 -0
@@ -0,0 +1,60 @@
1
+ import { ScrollMode, ViewMode } from './types';
2
+ export type DocumentPagePlacement = {
3
+ pageNumber: number;
4
+ rowIndex: number;
5
+ left: number;
6
+ top: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ export type DocumentRow = {
11
+ index: number;
12
+ top: number;
13
+ width: number;
14
+ height: number;
15
+ pageNumbers: number[];
16
+ };
17
+ export type VisibleDocumentRow = DocumentRow & {
18
+ pages: DocumentPagePlacement[];
19
+ };
20
+ export type DocumentLayout = {
21
+ rows: DocumentRow[];
22
+ pages: DocumentPagePlacement[];
23
+ documentWidth: number;
24
+ documentHeight: number;
25
+ offsetLeft: number;
26
+ offsetTop: number;
27
+ scrollWidth: number;
28
+ scrollHeight: number;
29
+ viewportWidth: number;
30
+ viewportHeight: number;
31
+ scrollMode: ScrollMode;
32
+ viewMode: ViewMode;
33
+ };
34
+ export type PageDimensions = {
35
+ widths: number[];
36
+ heights: number[];
37
+ };
38
+ type BuildDocumentLayoutOptions = {
39
+ pageDimensions: PageDimensions;
40
+ viewportWidth: number;
41
+ viewportHeight: number;
42
+ scrollMode: ScrollMode;
43
+ viewMode: ViewMode;
44
+ focusedPage?: number;
45
+ };
46
+ export declare const getPageGroupForPage: (pageNumber: number, viewMode: ViewMode, totalPages: number) => number[];
47
+ export declare const buildDocumentLayout: (options: BuildDocumentLayoutOptions) => DocumentLayout;
48
+ export declare const getPagePlacement: (layout: DocumentLayout, pageNumber: number) => DocumentPagePlacement | null;
49
+ export declare const getPageContentOffset: (pageBoxWidth: number, pageBoxHeight: number, pageWidth: number, pageHeight: number) => {
50
+ x: number;
51
+ y: number;
52
+ };
53
+ export declare const getPageFromDocumentPoint: (layout: DocumentLayout, documentX: number, documentY: number) => DocumentPagePlacement | null;
54
+ export declare const getVisibleRows: (layout: DocumentLayout, scrollTop: number, scrollLeft: number, viewportWidth: number, viewportHeight: number, overscan?: number) => VisibleDocumentRow[];
55
+ export declare const getRowsByIndexes: (layout: DocumentLayout, rowIndexes: number[], pageNumbers?: number[]) => VisibleDocumentRow[];
56
+ export declare const getScrollTargetForPage: (layout: DocumentLayout, pageNumber: number) => {
57
+ left: number;
58
+ top: number;
59
+ } | null;
60
+ export {};
@@ -1 +1,14 @@
1
- export declare const usePinch: (container: HTMLDivElement | null) => void;
1
+ import { ZoomOrigin } from './useZoomOrigin';
2
+ export type PinchZoomGesture = 'touch' | 'wheel';
3
+ export interface PinchZoomMetadata {
4
+ gesture?: PinchZoomGesture;
5
+ previousScale: number;
6
+ nextScale: number;
7
+ origin?: ZoomOrigin;
8
+ }
9
+ interface UsePinchOptions {
10
+ onBeforeZoom?: (metadata: PinchZoomMetadata) => void;
11
+ onPinchEnd?: () => void;
12
+ }
13
+ export declare const usePinch: (container: HTMLDivElement | null, options?: UsePinchOptions) => void;
14
+ export {};
@@ -1,2 +1,2 @@
1
- import { ViewMode } from '../types';
2
- export declare const usePresentPage: (totalColumns: number, totalRows: number, element?: HTMLElement, viewMode?: ViewMode) => void;
1
+ import { DocumentLayout } from '../documentLayout';
2
+ export declare const usePresentPage: (element?: HTMLElement, layout?: DocumentLayout) => void;
@@ -0,0 +1,4 @@
1
+ export type ZoomOrigin = [number, number];
2
+ export declare const getZoomOriginFromClientPoint: (element: HTMLElement | null, clientX: number, clientY: number) => ZoomOrigin | null;
3
+ export declare const getZoomCenterOrigin: (element: HTMLElement | null) => ZoomOrigin | undefined;
4
+ export declare const useZoomOrigin: (element: HTMLElement | null) => () => ZoomOrigin | undefined;
@@ -47,7 +47,8 @@ export declare enum AnnotationType {
47
47
  }
48
48
  export declare enum ErrorType {
49
49
  NOT_SUPPORTED = "not-supported",
50
- INVALID_OR_CORRUPTED_PDF = "invalid-or-corrupted-pdf"
50
+ INVALID_OR_CORRUPTED_PDF = "invalid-or-corrupted-pdf",
51
+ WASM_URL_REQUIRED = "wasm-url-required"
51
52
  }
52
53
  export interface AnnotationEventPayload {
53
54
  type: AnnotationType;
@@ -86,9 +87,13 @@ export type Localization = {
86
87
  searchMatchCaseTooltip?: string;
87
88
  searchWholeWordsLabel?: string;
88
89
  searchWholeWordsTooltip?: string;
90
+ searchLoadingMessage?: string;
91
+ searchNoResultsMessage?: string;
92
+ searchResultsMessage?: string;
89
93
  previousPageTooltip?: string;
90
94
  currentPageTooltip?: string;
91
95
  nextPageTooltip?: string;
96
+ ofTotalPagesLabel?: string;
92
97
  zoomOutTooltip?: string;
93
98
  zoomInTooltip?: string;
94
99
  zoomSelectTooltip?: string;
@@ -124,6 +129,8 @@ export type Localization = {
124
129
  pageScrollingTooltip?: string;
125
130
  verticalScrollingLabel?: string;
126
131
  verticalScrollingTooltip?: string;
132
+ horizontalScrollingLabel?: string;
133
+ horizontalScrollingTooltip?: string;
127
134
  horizontalLabel?: string;
128
135
  horizontalTooltip?: string;
129
136
  singlePageLabel?: string;
@@ -153,6 +160,8 @@ export type Localization = {
153
160
  passwordConfirmLabel?: string;
154
161
  passwordError?: string;
155
162
  dragDropFileMessage?: string;
163
+ skipToMenuLabel?: string;
164
+ skipToMainContentLabel?: string;
156
165
  };
157
166
  interface Attachment {
158
167
  content: Uint8Array;
@@ -397,6 +406,7 @@ export declare enum ThemeVariables {
397
406
  INPUT_BORDER_RADIUS = "--rp-input-border-radius",
398
407
  INPUT_BACKGROUND_COLOR = "--rp-input-background-color",
399
408
  INPUT_PLACEHOLDER_COLOR = "--rp-input-placeholder-color",
409
+ SEARCH_INPUT_BORDER_COLOR = "--rp-search-input-border-color",
400
410
  PAGES_BACKGROUND_COLOR = "--rp-pages-background-color",
401
411
  PAGE_SHADOW = "--rp-page-shadow",
402
412
  PAGE_OUTLINE = "--rp-page-outline",
@@ -431,6 +441,7 @@ export declare enum ThemeVariables {
431
441
  MENU_ITEM_ICON_SIZE = "--rp-menu-item-icon-size",
432
442
  PRINT_PROGRESS_BACKGROUND = "--rp-print-progress-background",
433
443
  PRINT_PROGRESS_COLOR = "--rp-print-progress-color",
444
+ PRINT_PROGRESS_CANCEL_BUTTON_BORDER_COLOR = "--rp-print-progress-cancel-button-border-color",
434
445
  DROP_ZONE_BORDER = "--rp-drop-zone-border",
435
446
  DROP_ZONE_FONT_COLOR = "--rp-drop-zone-font-color",
436
447
  DROP_ZONE_FONT_SIZE = "--rp-drop-zone-font-size",
@@ -547,9 +558,20 @@ export interface DimensionPagesContextType {
547
558
  export interface ZoomContextType {
548
559
  zoomLevel: number | ZoomLevel;
549
560
  currentZoom: number;
561
+ targetZoom: number;
562
+ isZooming: boolean;
563
+ zoomOrigin: [number, number] | null;
564
+ zoomGesture: 'touch' | 'wheel' | 'toolbar' | null;
565
+ previousTargetZoom: number | null;
566
+ zoomTo: (zoomLevel: number | ZoomLevel, options?: {
567
+ immediate?: boolean;
568
+ origin?: [number, number];
569
+ gesture?: 'touch' | 'wheel' | 'toolbar';
570
+ previousTargetZoom?: number;
571
+ }) => void;
550
572
  setZoomLevel: (callback: number | ZoomLevel | ((prev: number) => number | ZoomLevel)) => void;
551
573
  }
552
- export type ZoomProps = Omit<ZoomContextType, 'currentZoom'>;
574
+ export type ZoomProps = Pick<ZoomContextType, 'zoomLevel' | 'setZoomLevel'>;
553
575
  export type InitialStateContextType = {
554
576
  interactiveForm?: boolean;
555
577
  } & ZoomProviderProps & PageProviderProps & ViewModeInitialProps & ScrollModeInitialProps & RotateProviderProps;
@@ -1,2 +1,4 @@
1
1
  export declare const isZoomOutDisabled: (currentZoom: number) => boolean;
2
2
  export declare const isZoomInDisabled: (currentZoom: number) => boolean;
3
+ export declare const getNextZoomInLevel: (currentZoomPercent: number) => number;
4
+ export declare const getNextZoomOutLevel: (currentZoomPercent: number) => number;
@@ -6,6 +6,7 @@ var e = class {
6
6
  this._triggerEnqueue = e;
7
7
  }
8
8
  enqueue(e, t, n = 0) {
9
+ this.removeQueue(e);
9
10
  let r = {
10
11
  id: e,
11
12
  data: t,
@@ -20,6 +21,10 @@ var e = class {
20
21
  let t = this._items.findIndex((t) => t.id === e);
21
22
  return t === -1 ? !1 : (this._items.splice(t, 1), !0);
22
23
  }
24
+ removeQueues(e) {
25
+ let t = new RegExp(e), n = this._items.length;
26
+ return this._items = this._items.filter((e) => !t.test(e.id)), n - this._items.length;
27
+ }
23
28
  changePagePriority(e, t) {
24
29
  let n = this._items.find((t) => new RegExp(e).test(t.id));
25
30
  return n ? (this.removeQueue(n.id), this.enqueue(n.id, n.data, t), !0) : !1;
@@ -3,6 +3,6 @@ var e = {
3
3
  keyword: "",
4
4
  regExp: /* @__PURE__ */ RegExp(" "),
5
5
  wholeWords: !1
6
- }, t = "This feature is only available for the Organization license", n = "Invalid or corrupted PDF file.", r = "React PDF Kit is unable to render on this browser.";
6
+ }, t = "https://www.react-pdf-kit.dev/docs", n = "This feature is only available for the Organization license", r = "Invalid or corrupted PDF file.", i = "React PDF Kit is unable to render on this browser.", a = "This PDF uses JPEG 2000 images and requires pdf.js WASM assets. Please set wasmUrl in RPConfig.", o = `${a} Learn more: ${t}/components/rp-config`;
7
7
  //#endregion
8
- export { r as BROWSER_NOT_SUPPORTED_MESSAGE, e as EMPTY_KEYWORD_REGEXP, n as INVALID_OR_CORRUPTED_PDF_MESSAGE, t as ORGANIZATION_ALLOWED_FEATURES_MESSAGE };
8
+ export { i as BROWSER_NOT_SUPPORTED_MESSAGE, t as DOCS_URL, e as EMPTY_KEYWORD_REGEXP, r as INVALID_OR_CORRUPTED_PDF_MESSAGE, n as ORGANIZATION_ALLOWED_FEATURES_MESSAGE, o as WASM_URL_REQUIRED_CONSOLE_MESSAGE, a as WASM_URL_REQUIRED_MESSAGE };
@@ -1,4 +1,4 @@
1
1
  //#region lib/utils/constants.ts
2
- var e = 4, t = 200, n = 20, r = 25, i = 1e3;
2
+ var e = 4, t = 200, n = 20, r = 25, i = 1e3, a = 25, o = 2, s = 400, c = 1e3, l = 32767, u = 33554432, d = 16777216, f = 5242880, p = 200;
3
3
  //#endregion
4
- export { i as MAX_ZOOM_SCALE, r as MIN_ZOOM_SCALE, e as PAGE_PADDING, n as SCROLL_BAR_WIDTH, t as THUMBNAIL_MIN_WIDTH };
4
+ export { p as CANVAS_AREA_CAP_FACTOR, f as IOS_MAX_CANVAS_PIXELS, l as MAX_CANVAS_DIM, u as MAX_CANVAS_PIXELS, i as MAX_ZOOM_SCALE, r as MIN_ZOOM_SCALE, e as PAGE_PADDING, d as SAFARI_MAX_CANVAS_PIXELS, n as SCROLL_BAR_WIDTH, t as THUMBNAIL_MIN_WIDTH, o as VIRTUAL_SCROLL_ROW_OVERSCAN, s as ZOOM_DEBOUNCE_MS, c as ZOOM_SAFETY_TIMEOUT_MS, a as ZOOM_STEP_PERCENT };
@@ -0,0 +1,141 @@
1
+ import { ScrollMode as e, ViewMode as t } from "./types.js";
2
+ //#region lib/utils/documentLayout.ts
3
+ var n = (e, t) => Math.max(0, (e - t) / 2), r = .5, i = (e, t, i) => {
4
+ let a = n(e, i), o = Math.max(0, e - t);
5
+ return Math.max(0, a - o * r);
6
+ }, a = (e) => e.reduce((e, t) => e + t, 0), o = (e) => Math.min(e.widths.length, e.heights.length), s = (e) => e === "WRAPPED", c = (e, t) => {
7
+ let n = t - 1;
8
+ return {
9
+ width: e.widths[n] || 0,
10
+ height: e.heights[n] || 0
11
+ };
12
+ }, l = (e, n, r) => {
13
+ if (!r) return [];
14
+ let i = Math.max(1, Math.min(e, r));
15
+ if (n === t.DUAL_PAGE) {
16
+ let e = Math.floor((i - 1) / 2) * 2 + 1;
17
+ return [e, e + 1].filter((e) => e <= r);
18
+ }
19
+ if (n === t.DUAL_PAGE_WITH_COVER) {
20
+ if (i === 1) return [1];
21
+ let e = Math.floor((i - 2) / 2) * 2 + 2;
22
+ return [e, e + 1].filter((e) => e <= r);
23
+ }
24
+ return [i];
25
+ }, u = (e, t) => {
26
+ let n = t.map((t) => c(e, t));
27
+ return {
28
+ pageNumbers: t,
29
+ width: a(n.map((e) => e.width)),
30
+ height: Math.max(...n.map((e) => e.height), 0)
31
+ };
32
+ }, d = (e, n) => {
33
+ let r = o(e), i = [];
34
+ if (n === t.DUAL_PAGE) {
35
+ for (let t = 1; t <= r; t += 2) i.push(u(e, [t, t + 1].filter((e) => e <= r)));
36
+ return i;
37
+ }
38
+ if (n === t.DUAL_PAGE_WITH_COVER) {
39
+ r >= 1 && i.push(u(e, [1]));
40
+ for (let t = 2; t <= r; t += 2) i.push(u(e, [t, t + 1].filter((e) => e <= r)));
41
+ return i;
42
+ }
43
+ for (let t = 1; t <= r; t += 1) i.push(u(e, [t]));
44
+ return i;
45
+ }, f = (e, t) => {
46
+ let n = o(e), r = Math.max(t, 1), i = [], a = [], s = 0;
47
+ for (let t = 1; t <= n; t += 1) {
48
+ let { width: n } = c(e, t);
49
+ a.length > 0 && s + n > r && (i.push(u(e, a)), a = [], s = 0), a.push(t), s += n;
50
+ }
51
+ return a.length && i.push(u(e, a)), i;
52
+ }, p = ({ pageDimensions: t, viewportWidth: n, scrollMode: r, viewMode: i, focusedPage: a }) => {
53
+ let c = o(t);
54
+ return c ? r === e.PAGE_SCROLLING ? [u(t, l(a || 1, i, c))] : r === e.HORIZONTAL_SCROLLING ? [u(t, Array.from({ length: c }, (e, t) => t + 1))] : s(r) ? f(t, n) : d(t, i) : [];
55
+ }, m = (t) => {
56
+ let { pageDimensions: r, viewportWidth: a, viewportHeight: o, scrollMode: l, viewMode: u } = t, d = p(t), f = s(l) ? Math.max(a, ...d.map((e) => e.width), 0) : Math.max(...d.map((e) => e.width), 0), m = [], h = [], g = 0;
57
+ d.forEach((t, o) => {
58
+ let u = s(l) ? Math.max(f, t.width) : t.width, d = {
59
+ index: o,
60
+ top: g,
61
+ width: u,
62
+ height: t.height,
63
+ pageNumbers: t.pageNumbers
64
+ }, p = l !== e.HORIZONTAL_SCROLLING && !s(l) && t.width < f ? i(f, a, t.width) : n(f, t.width);
65
+ t.pageNumbers.forEach((e) => {
66
+ let { width: t, height: n } = c(r, e);
67
+ h.push({
68
+ pageNumber: e,
69
+ rowIndex: o,
70
+ left: p,
71
+ top: g,
72
+ width: t,
73
+ height: n
74
+ }), p += t;
75
+ }), m.push(d), g += t.height;
76
+ });
77
+ let _ = g, v = l === e.HORIZONTAL_SCROLLING ? 0 : n(a, f), y = l === e.PAGE_SCROLLING || l === e.HORIZONTAL_SCROLLING ? n(o, _) : 0;
78
+ return {
79
+ rows: m,
80
+ pages: h,
81
+ documentWidth: f,
82
+ documentHeight: _,
83
+ offsetLeft: v,
84
+ offsetTop: y,
85
+ scrollWidth: Math.max(a, v + f),
86
+ scrollHeight: Math.max(o, y + _),
87
+ viewportWidth: a,
88
+ viewportHeight: o,
89
+ scrollMode: l,
90
+ viewMode: u
91
+ };
92
+ }, h = (e, t) => e.pages.find((e) => e.pageNumber === t) ?? null, g = (e, t, r, i) => ({
93
+ x: n(e, r),
94
+ y: n(t, i)
95
+ }), _ = (e, t, n) => {
96
+ let r = e.rows.find((e) => n >= e.top && n <= e.top + e.height) ?? e.rows.reduce((e, t) => {
97
+ if (!e) return t;
98
+ let r = e.top + e.height / 2, i = t.top + t.height / 2;
99
+ return Math.abs(n - i) < Math.abs(n - r) ? t : e;
100
+ }, null);
101
+ if (!r) return null;
102
+ let i = e.pages.filter((e) => e.rowIndex === r.index);
103
+ return i.find((e) => t >= e.left && t <= e.left + e.width && n >= e.top && n <= e.top + e.height) || i.reduce((e, n) => {
104
+ if (!e) return n;
105
+ let r = e.left + e.width / 2, i = n.left + n.width / 2;
106
+ return Math.abs(t - i) < Math.abs(t - r) ? n : e;
107
+ }, null);
108
+ }, v = (e, t, n, r, i, a = 1) => {
109
+ let o = t - e.offsetTop, s = o + i, c = n - e.offsetLeft, l = c + r, u = e.rows.filter((e) => e.top + e.height >= o && e.top <= s), d = u[0]?.index ?? 0, f = u[u.length - 1]?.index ?? d, p = Math.max(0, d - a), m = Math.min(e.rows.length - 1, f + a), h = r * Math.max(1, a), g = e.pages.reduce((e, t) => {
110
+ let n = e.get(t.rowIndex);
111
+ return n ? n.push(t) : e.set(t.rowIndex, [t]), e;
112
+ }, /* @__PURE__ */ new Map());
113
+ return e.rows.slice(p, m + 1).map((e) => ({
114
+ ...e,
115
+ pages: (g.get(e.index) ?? []).filter((e) => {
116
+ let t = e.left + e.width, n = e.top + e.height;
117
+ return t >= c - h && e.left <= l + h && n >= o && e.top <= s;
118
+ })
119
+ }));
120
+ }, y = (e, t, n) => {
121
+ let r = new Set(t), i = n ? new Set(n) : null, a = e.pages.reduce((e, t) => {
122
+ if (i && !i.has(t.pageNumber)) return e;
123
+ let n = e.get(t.rowIndex);
124
+ return n ? n.push(t) : e.set(t.rowIndex, [t]), e;
125
+ }, /* @__PURE__ */ new Map());
126
+ return e.rows.filter((e) => r.has(e.index)).map((e) => ({
127
+ ...e,
128
+ pages: a.get(e.index) ?? []
129
+ }));
130
+ }, b = (t, n) => {
131
+ let r = h(t, n);
132
+ return r ? t.scrollMode === e.HORIZONTAL_SCROLLING ? {
133
+ left: t.offsetLeft + r.left,
134
+ top: 0
135
+ } : (t.scrollMode, e.PAGE_SCROLLING, {
136
+ left: t.offsetLeft + r.left,
137
+ top: t.offsetTop + r.top
138
+ }) : null;
139
+ };
140
+ //#endregion
141
+ export { m as buildDocumentLayout, g as getPageContentOffset, _ as getPageFromDocumentPoint, l as getPageGroupForPage, h as getPagePlacement, y as getRowsByIndexes, b as getScrollTargetForPage, v as getVisibleRows };
@@ -3,7 +3,7 @@ import { LicenseType as t } from "../types.js";
3
3
  import { appConsole as n } from "../appConsole.js";
4
4
  import { useCallback as r, useEffect as i, useState as a } from "react";
5
5
  //#region lib/utils/hooks/useLicense.ts
6
- var o = /* @__PURE__ */ new Date("2026-05-22T06:50:08.563Z"), s = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIokvErJ0Fctu0jduSAx\ngr+5Har/VSuZLlOunS28hnlqqA+OF1apHL7RYkjBosS15yvviYdLrVWYHpHnoY4b\nHLQ9I6YX6FMB9T/VbB4xLdVdKvfi8r49aTScl5EKuSpgpPgz2VSJTfvVGcRuth/Y\nBm7PPGYdL2l2gvKDxchmmsHFPukGki9L4JOUeIVX0GXAxabENckaEH/iC1NZhX+W\nvXnpHeHuIIKlZ16LSivXNgo6BH2Z3GFdg4G3cAaXr6qNP8fsacYNqv2SpTW1viFD\nvzcGRabN25gpJAp9/syeScefWH3OiJY1lmw88oTiJbjIoiq6AkPhfn3G9mF54nvR\nkwIDAQAB\n-----END PUBLIC KEY-----", c = "Please visit https://app.react-pdf-kit.dev to generate a new license key.", l = {
6
+ var o = /* @__PURE__ */ new Date("2026-08-07T04:53:24.878Z"), s = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIokvErJ0Fctu0jduSAx\ngr+5Har/VSuZLlOunS28hnlqqA+OF1apHL7RYkjBosS15yvviYdLrVWYHpHnoY4b\nHLQ9I6YX6FMB9T/VbB4xLdVdKvfi8r49aTScl5EKuSpgpPgz2VSJTfvVGcRuth/Y\nBm7PPGYdL2l2gvKDxchmmsHFPukGki9L4JOUeIVX0GXAxabENckaEH/iC1NZhX+W\nvXnpHeHuIIKlZ16LSivXNgo6BH2Z3GFdg4G3cAaXr6qNP8fsacYNqv2SpTW1viFD\nvzcGRabN25gpJAp9/syeScefWH3OiJY1lmw88oTiJbjIoiq6AkPhfn3G9mF54nvR\nkwIDAQAB\n-----END PUBLIC KEY-----", c = "Please visit https://app.react-pdf-kit.dev to generate a new license key.", l = {
7
7
  invalidLicense: `You are currently using without a valid license. ${c}`,
8
8
  mismatchedDomain: `Your license key is not valid for the current domain / IP. ${c}`,
9
9
  expired: `Your license key has expired. ${c}`,
@@ -2,75 +2,83 @@
2
2
  import { ErrorType as e } from "../types.js";
3
3
  import { getThumbnailViewport as t } from "../getThumbnailViewport.js";
4
4
  import { useConfigContext as n } from "../../contexts/ConfigContext.js";
5
- import { useDocumentPasswordContext as r } from "../../contexts/DocumentPasswordContext.js";
6
- import { BROWSER_NOT_SUPPORTED_MESSAGE as i, INVALID_OR_CORRUPTED_PDF_MESSAGE as a } from "../const.js";
7
- import { useEffect as o, useRef as s, useState as c } from "react";
8
- import * as l from "pdfjs-dist";
5
+ import { appConsole as r } from "../appConsole.js";
6
+ import { useDocumentPasswordContext as i } from "../../contexts/DocumentPasswordContext.js";
7
+ import { BROWSER_NOT_SUPPORTED_MESSAGE as a, INVALID_OR_CORRUPTED_PDF_MESSAGE as o, WASM_URL_REQUIRED_CONSOLE_MESSAGE as s, WASM_URL_REQUIRED_MESSAGE as c } from "../const.js";
8
+ import { useEffect as l, useRef as u, useState as d } from "react";
9
+ import * as f from "pdfjs-dist";
9
10
  //#region lib/utils/hooks/useLoadPdf.ts
10
- function u(e) {
11
- let t = Error(a);
11
+ var p = new TextEncoder().encode("/JPXDecode");
12
+ function m(e) {
13
+ return e.some((t, n) => t === p[0] ? p.every((t, r) => e[n + r] === t) : !1);
14
+ }
15
+ function h(e) {
16
+ let t = Error(o);
12
17
  return t.cause = e, t;
13
18
  }
14
- function d(e) {
15
- let t = Error(i);
19
+ function g() {
20
+ return Error(c);
21
+ }
22
+ function _(e) {
23
+ let t = Error(a);
16
24
  return t.cause = e, t;
17
25
  }
18
- var f = (i, a, f = {}) => {
19
- let [p, m] = c(), { workerUrlAdded: h, wasmUrl: g } = n(), [_, v] = c(/* @__PURE__ */ new Map()), y = s(), [b, x] = c(0), [S, C] = c(!1), [w, T] = c(), { password: E, passwordError: D, setPasswordError: O, passwordRequired: k, setPasswordRequired: A } = r(), { onLoadError: j, onLoaded: M, onLoadProgress: N, disableAutoFetch: P, disableStream: F, rangeChunkSize: I, withCredentials: L, httpHeaders: R } = f;
20
- return o(() => {
21
- N && N(b);
22
- }, [b, N]), o(() => {
23
- if (!h || !i) return;
24
- x(0), T(void 0), y.current = Date.now();
25
- let t = y.current, n = {
26
- url: i,
27
- cMapPacked: a?.isCompressed ?? !0,
28
- ...a?.url && { cMapUrl: a.url },
29
- ...E && { password: E },
30
- ...P !== void 0 && { disableAutoFetch: P },
31
- ...F !== void 0 && { disableStream: F },
32
- ...I !== void 0 && { rangeChunkSize: I },
33
- ...L !== void 0 && { withCredentials: L },
34
- ...R !== void 0 && { httpHeaders: R },
35
- ...g && { wasmUrl: g },
36
- verbosity: l.VerbosityLevel.ERRORS
26
+ var v = (a, o, c = {}) => {
27
+ let [p, v] = d(), { workerUrlAdded: y, wasmUrl: b } = n(), [x, S] = d(/* @__PURE__ */ new Map()), C = u(), [w, T] = d(0), [E, D] = d(!1), [O, k] = d(), { password: A, passwordError: j, setPasswordError: M, passwordRequired: N, setPasswordRequired: P } = i(), { onLoadError: F, onLoaded: I, onLoadProgress: L, disableAutoFetch: R, disableStream: z, rangeChunkSize: B, withCredentials: V, httpHeaders: H } = c;
28
+ return l(() => {
29
+ L && L(w);
30
+ }, [w, L]), l(() => {
31
+ if (!y || !a) return;
32
+ T(0), k(void 0), C.current = Date.now();
33
+ let t = C.current, n = {
34
+ url: a,
35
+ cMapPacked: o?.isCompressed ?? !0,
36
+ ...o?.url && { cMapUrl: o.url },
37
+ ...A && { password: A },
38
+ ...R !== void 0 && { disableAutoFetch: R },
39
+ ...z !== void 0 && { disableStream: z },
40
+ ...B !== void 0 && { rangeChunkSize: B },
41
+ ...V !== void 0 && { withCredentials: V },
42
+ ...H !== void 0 && { httpHeaders: H },
43
+ ...b && { wasmUrl: b },
44
+ verbosity: f.VerbosityLevel.ERRORS
37
45
  };
38
46
  try {
39
- let r = l.getDocument(n);
40
- r.onProgress = (e) => {
41
- if (t === y.current) {
47
+ let i = f.getDocument(n);
48
+ i.onProgress = (e) => {
49
+ if (t === C.current) {
42
50
  let { loaded: t, total: n } = e;
43
- x(n ? Math.min(100, Math.round(t / n * 100)) : 0);
51
+ T(n ? Math.min(100, Math.round(t / n * 100)) : 0);
44
52
  }
45
- }, C(!0), m(void 0);
46
- let i = r.promise.then((e) => (t === y.current && (m(e), x(100)), M && M(e), A(!1), O(""), e)).catch((t) => {
53
+ }, D(!0), v(void 0);
54
+ let a = i.promise.then(async (n) => !b && m(await n.getData()) ? (t === C.current && (v(void 0), k(e.WASM_URL_REQUIRED)), r.error(s), F?.(g()), n) : (t === C.current && (v(n), T(100)), I && I(n), P(!1), M(""), n)).catch((t) => {
47
55
  if (t instanceof Error && t.name === "PasswordException") {
48
56
  let e = t.code;
49
- A(!0), e === l.PasswordResponses.INCORRECT_PASSWORD ? O("Incorrect password") : O(void 0);
50
- } else t instanceof Error && t.name === "InvalidPDFException" && E ? (A(!0), O("Incorrect password")) : t instanceof Error && t.name === "InvalidPDFException" ? (T(e.INVALID_OR_CORRUPTED_PDF), j?.(u(t))) : j && j(t);
57
+ P(!0), e === f.PasswordResponses.INCORRECT_PASSWORD ? M("Incorrect password") : M(void 0);
58
+ } else t instanceof Error && t.name === "InvalidPDFException" && A ? (P(!0), M("Incorrect password")) : t instanceof Error && t.name === "InvalidPDFException" ? (k(e.INVALID_OR_CORRUPTED_PDF), F?.(h(t))) : F && F(t);
51
59
  }).finally(() => {
52
- C(!1);
60
+ D(!1);
53
61
  });
54
62
  return () => {
55
- i.finally(() => {
56
- r.destroy();
63
+ a.finally(() => {
64
+ i.destroy();
57
65
  });
58
66
  };
59
67
  } catch (t) {
60
- T(e.NOT_SUPPORTED), j?.(d(t));
68
+ k(e.NOT_SUPPORTED), F?.(_(t));
61
69
  }
62
70
  }, [
63
- i,
64
- h,
65
- g,
66
- E,
67
- j,
68
- M
69
- ]), o(() => {
70
- if (k) return;
71
+ a,
72
+ y,
73
+ b,
74
+ A,
75
+ F,
76
+ I
77
+ ]), l(() => {
78
+ if (N) return;
71
79
  let n = /* @__PURE__ */ new Map();
72
- if (!p || S) {
73
- v(n);
80
+ if (!p || E) {
81
+ S(n);
74
82
  return;
75
83
  }
76
84
  let r = p.numPages, i = [];
@@ -78,8 +86,10 @@ var f = (i, a, f = {}) => {
78
86
  let t = p.getPage(e);
79
87
  i.push(t);
80
88
  }
81
- Promise.all(i).then((e) => {
82
- e.map((e) => {
89
+ Promise.allSettled(i).then((e) => {
90
+ let r = e.filter((e) => e.status === "fulfilled").map((e) => e.value);
91
+ if (!r.length) throw e.find((e) => e.status === "rejected")?.reason;
92
+ r.map((e) => {
83
93
  let { thumbnailViewport: r, scale: i } = t(e), a = e.getViewport();
84
94
  n.set(e.pageNumber, {
85
95
  page: e,
@@ -87,24 +97,24 @@ var f = (i, a, f = {}) => {
87
97
  thumbnailScale: i,
88
98
  defaultRotation: a.rotation
89
99
  });
90
- }), v(n);
100
+ }), S(n);
91
101
  }).catch((t) => {
92
- m(void 0), T(e.INVALID_OR_CORRUPTED_PDF), j?.(u(t));
102
+ v(void 0), k(e.INVALID_OR_CORRUPTED_PDF), F?.(h(t));
93
103
  });
94
104
  }, [
95
105
  p,
96
- S,
97
- k,
98
- j
106
+ E,
107
+ N,
108
+ F
99
109
  ]), {
100
110
  pdf: p,
101
- pages: _,
102
- loading: S,
103
- error: w,
104
- loadingProgress: b,
105
- passwordRequired: k,
106
- passwordError: D
111
+ pages: x,
112
+ loading: E,
113
+ error: O,
114
+ loadingProgress: w,
115
+ passwordRequired: N,
116
+ passwordError: j
107
117
  };
108
118
  };
109
119
  //#endregion
110
- export { f as useLoadPdf };
120
+ export { v as useLoadPdf };
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../../de_DE--0LF-SJR.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../../de_DE-x4Z-jQrz.js";
2
2
  import { useCallback as o, useMemo as s, useState as c } from "react";
3
3
  //#region lib/utils/hooks/useLocalization.ts
4
4
  var l = (l) => {
@@ -1,2 +1,2 @@
1
- import { i as e } from "../../PaginationContext-C5CJiEW-.js";
1
+ import { i as e } from "../../PaginationContext-DIzsZhFd.js";
2
2
  export { e as usePaginate };