@osdk/react-components 0.20.0-main-4e2a115a796e8664c3972548bb02e707baafa912 → 0.20.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.
Files changed (134) hide show
  1. package/CHANGELOG.md +2 -10
  2. package/build/browser/object-table/ObjectTable.js +2 -1
  3. package/build/browser/object-table/ObjectTable.js.map +1 -1
  4. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  5. package/build/browser/object-table/hooks/useObjectTableData.js +5 -3
  6. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  7. package/build/browser/pdf-viewer/PdfViewer.js +4 -6
  8. package/build/browser/pdf-viewer/PdfViewer.js.map +1 -1
  9. package/build/browser/pdf-viewer/components/PdfAnnotationOverlay.js +43 -0
  10. package/build/browser/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -0
  11. package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js +22 -14
  12. package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
  13. package/build/browser/pdf-viewer/components/PdfViewerContent.js +4 -6
  14. package/build/browser/pdf-viewer/components/PdfViewerContent.js.map +1 -1
  15. package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js +83 -13
  16. package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
  17. package/build/browser/pdf-viewer/types.js.map +1 -1
  18. package/build/browser/shared/calendar/DatePickerCommon.module.css +5 -0
  19. package/build/browser/styles.css +5 -0
  20. package/build/browser/util/UserAgent.js +1 -1
  21. package/build/browser/util/UserAgent.js.map +1 -1
  22. package/build/cjs/chunk-2GAPPUP5.cjs +11 -0
  23. package/build/cjs/{chunk-BN5MGNSI.cjs.map → chunk-2GAPPUP5.cjs.map} +1 -1
  24. package/build/cjs/{chunk-QYUADULX.cjs → chunk-4MGATUJ3.cjs} +17 -17
  25. package/build/cjs/{chunk-QYUADULX.cjs.map → chunk-4MGATUJ3.cjs.map} +1 -1
  26. package/build/cjs/{chunk-HOPH2463.cjs → chunk-4WDDVYWV.cjs} +3 -3
  27. package/build/cjs/chunk-4WDDVYWV.cjs.map +1 -0
  28. package/build/cjs/chunk-5UTN55T6.cjs +11 -0
  29. package/build/cjs/{chunk-LLGHXDSY.cjs.map → chunk-5UTN55T6.cjs.map} +1 -1
  30. package/build/cjs/{chunk-YWDLYGD5.cjs → chunk-AICPFRJQ.cjs} +32 -32
  31. package/build/cjs/{chunk-YWDLYGD5.cjs.map → chunk-AICPFRJQ.cjs.map} +1 -1
  32. package/build/cjs/{chunk-WYIUQ3FZ.cjs → chunk-DAHWLFFD.cjs} +4 -4
  33. package/build/cjs/{chunk-WYIUQ3FZ.cjs.map → chunk-DAHWLFFD.cjs.map} +1 -1
  34. package/build/cjs/{chunk-ETOC4FJE.cjs → chunk-FWZS3WQ4.cjs} +135 -34
  35. package/build/cjs/chunk-FWZS3WQ4.cjs.map +1 -0
  36. package/build/cjs/{chunk-67LMSFXM.cjs → chunk-GUBIWML7.cjs} +16 -13
  37. package/build/cjs/chunk-GUBIWML7.cjs.map +1 -0
  38. package/build/cjs/chunk-KLL6MAZL.cjs +11 -0
  39. package/build/cjs/{chunk-YWYFWFUF.cjs.map → chunk-KLL6MAZL.cjs.map} +1 -1
  40. package/build/cjs/{chunk-7CYKOZFL.cjs → chunk-LIF2LJ2I.cjs} +7 -7
  41. package/build/cjs/{chunk-7CYKOZFL.cjs.map → chunk-LIF2LJ2I.cjs.map} +1 -1
  42. package/build/cjs/{chunk-4JJP3RNQ.cjs → chunk-PPQSIR4K.cjs} +4 -4
  43. package/build/cjs/{chunk-4JJP3RNQ.cjs.map → chunk-PPQSIR4K.cjs.map} +1 -1
  44. package/build/cjs/{chunk-4V245Z6A.cjs → chunk-PWXV5SBK.cjs} +26 -28
  45. package/build/cjs/chunk-PWXV5SBK.cjs.map +1 -0
  46. package/build/cjs/chunk-UJKIIMIE.cjs +11 -0
  47. package/build/cjs/{chunk-DCRVOHKP.cjs.map → chunk-UJKIIMIE.cjs.map} +1 -1
  48. package/build/cjs/chunk-VBM5GWFP.cjs +11 -0
  49. package/build/cjs/{chunk-LGUTBX34.cjs.map → chunk-VBM5GWFP.cjs.map} +1 -1
  50. package/build/cjs/{chunk-4KC5U44T.cjs → chunk-XA3S7YAO.cjs} +2 -2
  51. package/build/cjs/chunk-XA3S7YAO.cjs.map +1 -0
  52. package/build/cjs/{chunk-GN3PIYGH.cjs → chunk-Y6BGC7DP.cjs} +22 -22
  53. package/build/cjs/{chunk-GN3PIYGH.cjs.map → chunk-Y6BGC7DP.cjs.map} +1 -1
  54. package/build/cjs/public/experimental/action-form.cjs +6 -6
  55. package/build/cjs/public/experimental/action-form.css +3 -0
  56. package/build/cjs/public/experimental/action-form.css.map +1 -1
  57. package/build/cjs/public/experimental/document-viewer.cjs +5 -5
  58. package/build/cjs/public/experimental/document-viewer.d.cts +1 -1
  59. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  60. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  61. package/build/cjs/public/experimental/filter-list.cjs +15 -15
  62. package/build/cjs/public/experimental/filter-list.css +3 -0
  63. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  64. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  65. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  66. package/build/cjs/public/experimental/object-table.cjs +10 -10
  67. package/build/cjs/public/experimental/object-table.css +3 -0
  68. package/build/cjs/public/experimental/object-table.css.map +1 -1
  69. package/build/cjs/public/experimental/object-table.d.cts +14 -1
  70. package/build/cjs/public/experimental/pdf-viewer.cjs +25 -25
  71. package/build/cjs/public/experimental/pdf-viewer.d.cts +9 -4
  72. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  73. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  74. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  75. package/build/cjs/public/experimental.cjs +67 -67
  76. package/build/cjs/public/experimental.css +3 -0
  77. package/build/cjs/public/experimental.css.map +1 -1
  78. package/build/cjs/public/experimental.d.cts +1 -1
  79. package/build/cjs/{types-CbSNeyzw.d.cts → types-Cg_LdKf-.d.cts} +1 -0
  80. package/build/esm/object-table/ObjectTable.js +2 -1
  81. package/build/esm/object-table/ObjectTable.js.map +1 -1
  82. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  83. package/build/esm/object-table/hooks/useObjectTableData.js +5 -3
  84. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  85. package/build/esm/pdf-viewer/PdfViewer.js +4 -6
  86. package/build/esm/pdf-viewer/PdfViewer.js.map +1 -1
  87. package/build/esm/pdf-viewer/components/PdfAnnotationOverlay.js +43 -0
  88. package/build/esm/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -0
  89. package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js +22 -14
  90. package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
  91. package/build/esm/pdf-viewer/components/PdfViewerContent.js +4 -6
  92. package/build/esm/pdf-viewer/components/PdfViewerContent.js.map +1 -1
  93. package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js +83 -13
  94. package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
  95. package/build/esm/pdf-viewer/types.js.map +1 -1
  96. package/build/esm/shared/calendar/DatePickerCommon.module.css +5 -0
  97. package/build/esm/util/UserAgent.js +1 -1
  98. package/build/esm/util/UserAgent.js.map +1 -1
  99. package/build/types/object-table/ObjectTable.d.ts +1 -1
  100. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  101. package/build/types/object-table/ObjectTableApi.d.ts +13 -0
  102. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  103. package/build/types/object-table/hooks/useObjectTableData.d.ts +1 -1
  104. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  105. package/build/types/pdf-viewer/PdfViewer.d.ts.map +1 -1
  106. package/build/types/pdf-viewer/components/PdfAnnotationOverlay.d.ts +9 -0
  107. package/build/types/pdf-viewer/components/PdfAnnotationOverlay.d.ts.map +1 -0
  108. package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts +2 -1
  109. package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts.map +1 -1
  110. package/build/types/pdf-viewer/components/PdfViewerContent.d.ts.map +1 -1
  111. package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts +5 -1
  112. package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts.map +1 -1
  113. package/build/types/pdf-viewer/types.d.ts +1 -0
  114. package/build/types/pdf-viewer/types.d.ts.map +1 -1
  115. package/docs/GettingStarted.md +65 -0
  116. package/docs/ObjectTable.md +6 -5
  117. package/docs/Prerequisites.md +1 -2
  118. package/docs/StylingOverview.md +146 -0
  119. package/docs/TokenColors.md +130 -0
  120. package/docs/TokenSpacing.md +73 -0
  121. package/docs/TokenTypography.md +57 -0
  122. package/docs/UsageWithOsdk.md +47 -0
  123. package/docs/Welcome.md +42 -0
  124. package/package.json +8 -8
  125. package/build/cjs/chunk-4KC5U44T.cjs.map +0 -1
  126. package/build/cjs/chunk-4V245Z6A.cjs.map +0 -1
  127. package/build/cjs/chunk-67LMSFXM.cjs.map +0 -1
  128. package/build/cjs/chunk-BN5MGNSI.cjs +0 -11
  129. package/build/cjs/chunk-DCRVOHKP.cjs +0 -11
  130. package/build/cjs/chunk-ETOC4FJE.cjs.map +0 -1
  131. package/build/cjs/chunk-HOPH2463.cjs.map +0 -1
  132. package/build/cjs/chunk-LGUTBX34.cjs +0 -11
  133. package/build/cjs/chunk-LLGHXDSY.cjs +0 -11
  134. package/build/cjs/chunk-YWYFWFUF.cjs +0 -11
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkIYJOHKJE_cjs = require('./chunk-IYJOHKJE.cjs');
4
- var chunkHOPH2463_cjs = require('./chunk-HOPH2463.cjs');
4
+ var chunk4WDDVYWV_cjs = require('./chunk-4WDDVYWV.cjs');
5
5
 
6
6
  // src/public/experimental/markdown-renderer.ts
7
- var MarkdownViewerMedia2 = chunkHOPH2463_cjs.withOsdkMetrics(chunkIYJOHKJE_cjs.MarkdownViewerMedia, "MarkdownViewerMedia");
7
+ var MarkdownViewerMedia2 = chunk4WDDVYWV_cjs.withOsdkMetrics(chunkIYJOHKJE_cjs.MarkdownViewerMedia, "MarkdownViewerMedia");
8
8
 
9
9
  exports.MarkdownViewerMedia = MarkdownViewerMedia2;
10
- //# sourceMappingURL=chunk-WYIUQ3FZ.cjs.map
11
- //# sourceMappingURL=chunk-WYIUQ3FZ.cjs.map
10
+ //# sourceMappingURL=chunk-DAHWLFFD.cjs.map
11
+ //# sourceMappingURL=chunk-DAHWLFFD.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public/experimental/markdown-renderer.ts"],"names":["MarkdownViewerMedia","withOsdkMetrics"],"mappings":";;;;;;AAsBO,IAAMA,oBAAAA,GAAsBC,iCAAA,CAAgBD,qCAAA,EAAsB,qBAAqB","file":"chunk-WYIUQ3FZ.cjs","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// MarkdownRenderer\nexport { MarkdownRenderer } from \"../../markdown-renderer/MarkdownRenderer.js\";\n\n// MarkdownViewerMedia (Media wrapper)\nimport { MarkdownViewerMedia as _MarkdownViewerMedia } from \"../../markdown-renderer/MarkdownViewerMedia.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const MarkdownViewerMedia = withOsdkMetrics(_MarkdownViewerMedia, \"MarkdownViewerMedia\");"]}
1
+ {"version":3,"sources":["../../src/public/experimental/markdown-renderer.ts"],"names":["MarkdownViewerMedia","withOsdkMetrics"],"mappings":";;;;;;AAsBO,IAAMA,oBAAAA,GAAsBC,iCAAA,CAAgBD,qCAAA,EAAsB,qBAAqB","file":"chunk-DAHWLFFD.cjs","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// MarkdownRenderer\nexport { MarkdownRenderer } from \"../../markdown-renderer/MarkdownRenderer.js\";\n\n// MarkdownViewerMedia (Media wrapper)\nimport { MarkdownViewerMedia as _MarkdownViewerMedia } from \"../../markdown-renderer/MarkdownViewerMedia.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const MarkdownViewerMedia = withOsdkMetrics(_MarkdownViewerMedia, \"MarkdownViewerMedia\");"]}
@@ -12,7 +12,6 @@ var input = require('@base-ui/react/input');
12
12
  var pdfjsDist = require('pdfjs-dist');
13
13
  var pdf_viewer_mjs = require('pdfjs-dist/web/pdf_viewer.mjs');
14
14
  require('pdfjs-dist/web/pdf_viewer.css');
15
- var reactDom = require('react-dom');
16
15
 
17
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
17
 
@@ -23,12 +22,17 @@ var React7__default = /*#__PURE__*/_interopDefault(React7);
23
22
  var PdfViewerAnnotationLayer_default = {};
24
23
 
25
24
  // src/pdf-viewer/components/PdfViewerAnnotationLayer.tsx
26
- function computeRectStyle(rect, pageHeight, scale, color) {
25
+ function applyTransform(point, m) {
26
+ return [m[0] * point[0] + m[2] * point[1] + m[4], m[1] * point[0] + m[3] * point[1] + m[5]];
27
+ }
28
+ function computeRectStyle(rect, transform, color) {
29
+ const [x1, y1] = applyTransform([rect.x, rect.y], transform);
30
+ const [x2, y2] = applyTransform([rect.x + rect.width, rect.y + rect.height], transform);
27
31
  return {
28
- left: rect.x * scale,
29
- top: (pageHeight - rect.y - rect.height) * scale,
30
- width: rect.width * scale,
31
- height: rect.height * scale,
32
+ left: Math.min(x1, x2),
33
+ top: Math.min(y1, y2),
34
+ width: Math.abs(x2 - x1),
35
+ height: Math.abs(y2 - y1),
32
36
  ...color != null ? {
33
37
  "--osdk-pdf-annotation-color": color
34
38
  } : {}
@@ -51,8 +55,7 @@ function useAnnotationHandlers(annotation, onClick) {
51
55
  }
52
56
  function AnnotationItem({
53
57
  annotation,
54
- pageHeight,
55
- scale,
58
+ transform,
56
59
  onClick
57
60
  }) {
58
61
  const {
@@ -62,7 +65,7 @@ function AnnotationItem({
62
65
  const className = classnames4__default.default(PdfViewerAnnotationLayer_default.annotation, PdfViewerAnnotationLayer_default[annotation.type]);
63
66
  const multiRects = annotation.rects;
64
67
  const hasMultipleRects = multiRects != null && multiRects.length > 1;
65
- const style = React7.useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, annotation.color), [annotation, pageHeight, scale]);
68
+ const style = React7.useMemo(() => computeRectStyle(annotation.rect, transform, annotation.color), [annotation, transform]);
66
69
  if (hasMultipleRects) {
67
70
  return /* @__PURE__ */ React7__default.default.createElement("div", {
68
71
  className: PdfViewerAnnotationLayer_default.annotationGroup,
@@ -75,7 +78,7 @@ function AnnotationItem({
75
78
  }, multiRects.map((rect, i) => /* @__PURE__ */ React7__default.default.createElement("div", {
76
79
  key: i,
77
80
  className,
78
- style: computeRectStyle(rect, pageHeight, scale, annotation.color)
81
+ style: computeRectStyle(rect, transform, annotation.color)
79
82
  })));
80
83
  }
81
84
  return /* @__PURE__ */ React7__default.default.createElement("div", {
@@ -93,18 +96,20 @@ function CustomAnnotationItem({
93
96
  annotation,
94
97
  pageHeight,
95
98
  scale,
99
+ transform,
96
100
  onClick
97
101
  }) {
98
102
  const {
99
103
  handleClick,
100
104
  handleKeyDown
101
105
  } = useAnnotationHandlers(annotation, onClick);
102
- const style = React7.useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, void 0), [annotation, pageHeight, scale]);
106
+ const style = React7.useMemo(() => computeRectStyle(annotation.rect, transform, void 0), [annotation, transform]);
103
107
  const renderProps = React7.useMemo(() => ({
104
108
  annotation,
105
109
  scale,
106
- pageHeight
107
- }), [annotation, scale, pageHeight]);
110
+ pageHeight,
111
+ transform
112
+ }), [annotation, scale, pageHeight, transform]);
108
113
  return /* @__PURE__ */ React7__default.default.createElement("div", {
109
114
  className: PdfViewerAnnotationLayer_default.annotation,
110
115
  style,
@@ -120,6 +125,7 @@ function PdfViewerAnnotationLayer({
120
125
  annotations,
121
126
  pageHeight,
122
127
  scale,
128
+ transform,
123
129
  onAnnotationClick
124
130
  }) {
125
131
  return /* @__PURE__ */ React7__default.default.createElement("div", {
@@ -129,12 +135,12 @@ function PdfViewerAnnotationLayer({
129
135
  annotation,
130
136
  pageHeight,
131
137
  scale,
138
+ transform,
132
139
  onClick: onAnnotationClick
133
140
  }) : /* @__PURE__ */ React7__default.default.createElement(AnnotationItem, {
134
141
  key: annotation.id,
135
142
  annotation,
136
- pageHeight,
137
- scale,
143
+ transform,
138
144
  onClick: onAnnotationClick
139
145
  })));
140
146
  }
@@ -1332,36 +1338,107 @@ async function extractHeadingsFromText(document) {
1332
1338
  }
1333
1339
  function usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document) {
1334
1340
  const [portalTargets, setPortalTargets] = React7.useState([]);
1335
- React7.useEffect(function subscribePageRendered() {
1341
+ React7.useEffect(function subscribePageEvents() {
1336
1342
  const eventBus = eventBusRef.current;
1337
1343
  const pdfViewer = pdfViewerRef.current;
1338
1344
  if (eventBus == null || pdfViewer == null) {
1339
1345
  return;
1340
1346
  }
1341
- const handlePageRendered = (evt) => {
1342
- const pageIndex = evt.pageNumber - 1;
1343
- const pageView = pdfViewer.getPageView(pageIndex);
1347
+ const measurePage = (pageNumber, containerRect, scrollContainer2) => {
1348
+ const pageView = pdfViewer.getPageView(pageNumber - 1);
1344
1349
  if (pageView?.div == null || pageView?.viewport == null) {
1350
+ return null;
1351
+ }
1352
+ const div = pageView.div;
1353
+ const divRect = div.getBoundingClientRect();
1354
+ if (divRect.width <= 0 || divRect.height <= 0) {
1355
+ return null;
1356
+ }
1357
+ return {
1358
+ pageNumber,
1359
+ // Assumes scrollContainer has zero border/padding; otherwise overlays will be offset.
1360
+ left: divRect.left - containerRect.left + scrollContainer2.scrollLeft,
1361
+ top: divRect.top - containerRect.top + scrollContainer2.scrollTop,
1362
+ width: divRect.width,
1363
+ height: divRect.height,
1364
+ // viewBox is [xMin, yMin, width, height] and we need the original height before scaling
1365
+ pageHeight: pageView.viewport.viewBox[3],
1366
+ scale: pageView.viewport.scale,
1367
+ transform: pageView.viewport.transform.slice()
1368
+ };
1369
+ };
1370
+ const readContainer = () => {
1371
+ const scrollContainer2 = pdfViewer.container;
1372
+ if (scrollContainer2 == null) {
1373
+ return null;
1374
+ }
1375
+ return {
1376
+ rect: scrollContainer2.getBoundingClientRect(),
1377
+ el: scrollContainer2
1378
+ };
1379
+ };
1380
+ const handlePageRendered = (evt) => {
1381
+ const container = readContainer();
1382
+ if (container == null) {
1345
1383
  return;
1346
1384
  }
1347
- const viewport = pageView.viewport;
1385
+ const next = measurePage(evt.pageNumber, container.rect, container.el);
1348
1386
  setPortalTargets((prev) => {
1349
1387
  const filtered = prev.filter((t) => t.pageNumber !== evt.pageNumber);
1350
- return [...filtered, {
1351
- pageNumber: evt.pageNumber,
1352
- container: pageView.div,
1353
- pageHeight: viewport.viewBox[3],
1354
- // viewBox is [xMin, yMin, width, height] and we need the original height before scaling
1355
- scale: viewport.scale
1356
- }].sort((a, b) => a.pageNumber - b.pageNumber);
1388
+ if (next == null) {
1389
+ return filtered;
1390
+ }
1391
+ return [...filtered, next].sort((a, b) => a.pageNumber - b.pageNumber);
1392
+ });
1393
+ };
1394
+ let rafHandle = null;
1395
+ const flushRemeasure = () => {
1396
+ rafHandle = null;
1397
+ setPortalTargets((prev) => {
1398
+ if (prev.length === 0) {
1399
+ return prev;
1400
+ }
1401
+ const container = readContainer();
1402
+ if (container == null) {
1403
+ return prev;
1404
+ }
1405
+ const next = [];
1406
+ for (const target of prev) {
1407
+ const remeasured = measurePage(target.pageNumber, container.rect, container.el);
1408
+ if (remeasured != null) {
1409
+ next.push(remeasured);
1410
+ }
1411
+ }
1412
+ return next;
1357
1413
  });
1358
1414
  };
1415
+ const remeasureAll = () => {
1416
+ if (rafHandle != null) {
1417
+ return;
1418
+ }
1419
+ rafHandle = requestAnimationFrame(flushRemeasure);
1420
+ };
1359
1421
  eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);
1422
+ eventBus.on("scalechanging", remeasureAll);
1423
+ eventBus.on("rotationchanging", remeasureAll);
1424
+ const scrollContainer = pdfViewer.container;
1425
+ let containerObserver;
1426
+ if (scrollContainer != null && typeof ResizeObserver !== "undefined") {
1427
+ containerObserver = new ResizeObserver(remeasureAll);
1428
+ containerObserver.observe(scrollContainer);
1429
+ }
1360
1430
  return () => {
1361
1431
  eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);
1432
+ eventBus.off("scalechanging", remeasureAll);
1433
+ eventBus.off("rotationchanging", remeasureAll);
1434
+ containerObserver?.disconnect();
1435
+ if (rafHandle != null) {
1436
+ cancelAnimationFrame(rafHandle);
1437
+ rafHandle = null;
1438
+ }
1362
1439
  setPortalTargets([]);
1363
1440
  };
1364
- }, [eventBusRef, pdfViewerRef, document]);
1441
+ }, [document]);
1365
1442
  return portalTargets;
1366
1443
  }
1367
1444
  var pdfWorkerUrl = new URL("pdfjs-dist/build/pdf.worker.min.mjs", chunkQ2W6GYRK_cjs.importMetaUrl);
@@ -1830,6 +1907,30 @@ function resolveDownloadFilename(src, filename) {
1830
1907
  }
1831
1908
  return "document.pdf";
1832
1909
  }
1910
+ var PdfAnnotationOverlay = ({
1911
+ target,
1912
+ annotations,
1913
+ onAnnotationClick
1914
+ }) => {
1915
+ const style = React7.useMemo(() => ({
1916
+ position: "absolute",
1917
+ left: target.left,
1918
+ top: target.top,
1919
+ width: target.width,
1920
+ height: target.height,
1921
+ pointerEvents: "none",
1922
+ zIndex: 1
1923
+ }), [target.left, target.top, target.width, target.height]);
1924
+ return /* @__PURE__ */ React7__default.default.createElement("div", {
1925
+ style
1926
+ }, /* @__PURE__ */ React7__default.default.createElement(PdfViewerAnnotationLayer, {
1927
+ annotations,
1928
+ pageHeight: target.pageHeight,
1929
+ scale: target.scale,
1930
+ transform: target.transform,
1931
+ onAnnotationClick
1932
+ }));
1933
+ };
1833
1934
 
1834
1935
  // src/pdf-viewer/PdfViewer.module.css
1835
1936
  var PdfViewer_default = {};
@@ -1977,13 +2078,12 @@ var BasePdfViewer = /* @__PURE__ */ React7.forwardRef(function BasePdfViewer2({
1977
2078
  if (pageAnnotations.length === 0) {
1978
2079
  return null;
1979
2080
  }
1980
- return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React7__default.default.createElement(PdfViewerAnnotationLayer, {
2081
+ return /* @__PURE__ */ React7__default.default.createElement(PdfAnnotationOverlay, {
1981
2082
  key: target.pageNumber,
2083
+ target,
1982
2084
  annotations: pageAnnotations,
1983
- pageHeight: target.pageHeight,
1984
- scale: target.scale,
1985
2085
  onAnnotationClick
1986
- }), target.container);
2086
+ });
1987
2087
  })))));
1988
2088
  });
1989
2089
  function _extends() {
@@ -2061,6 +2161,7 @@ function PdfViewer({
2061
2161
 
2062
2162
  exports.BasePdfViewer = BasePdfViewer;
2063
2163
  exports.EMPTY_ANNOTATION_ARRAY = EMPTY_ANNOTATION_ARRAY;
2164
+ exports.PdfAnnotationOverlay = PdfAnnotationOverlay;
2064
2165
  exports.PdfViewer = PdfViewer;
2065
2166
  exports.PdfViewerAnnotationLayer = PdfViewerAnnotationLayer;
2066
2167
  exports.PdfViewerOutlineSidebar = PdfViewerOutlineSidebar;
@@ -2079,5 +2180,5 @@ exports.usePdfViewerCore = usePdfViewerCore;
2079
2180
  exports.usePdfViewerSearch = usePdfViewerSearch;
2080
2181
  exports.usePdfViewerState = usePdfViewerState;
2081
2182
  exports.usePdfViewerSync = usePdfViewerSync;
2082
- //# sourceMappingURL=chunk-ETOC4FJE.cjs.map
2083
- //# sourceMappingURL=chunk-ETOC4FJE.cjs.map
2183
+ //# sourceMappingURL=chunk-FWZS3WQ4.cjs.map
2184
+ //# sourceMappingURL=chunk-FWZS3WQ4.cjs.map