@osdk/react-components 0.2.0-beta.22 → 0.2.0-beta.23

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 (292) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +22 -6
  3. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  4. package/build/browser/action-form/fields/DateCalendar.js +70 -0
  5. package/build/browser/action-form/fields/DateCalendar.js.map +1 -0
  6. package/build/browser/action-form/fields/DateCalendar.module.css +136 -0
  7. package/build/browser/action-form/fields/DateCalendar.module.css.js +22 -0
  8. package/build/browser/action-form/fields/DatetimePickerField.js +98 -0
  9. package/build/browser/action-form/fields/DatetimePickerField.js.map +1 -0
  10. package/build/browser/action-form/fields/DatetimePickerField.module.css +66 -0
  11. package/build/browser/action-form/fields/DatetimePickerField.module.css.js +10 -0
  12. package/build/browser/action-form/fields/FormFieldRenderer.js +10 -1
  13. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  14. package/build/browser/action-form/fields/LazyDateCalendar.js +27 -0
  15. package/build/browser/action-form/fields/LazyDateCalendar.js.map +1 -0
  16. package/build/browser/filter-list/FilterList.js +9 -5
  17. package/build/browser/filter-list/FilterList.js.map +1 -1
  18. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  19. package/build/browser/filter-list/base/BaseFilterList.js +3 -1
  20. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
  21. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
  22. package/build/browser/filter-list/base/FilterListHeader.js +3 -2
  23. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
  24. package/build/browser/filter-list/base/inputs/DateRangeInput.js +1 -1
  25. package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  26. package/build/browser/filter-list/base/inputs/MultiDateInput.js +1 -1
  27. package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -1
  28. package/build/browser/filter-list/base/inputs/SingleDateInput.js +1 -1
  29. package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -1
  30. package/build/browser/filter-list/base/inputs/TimelineInput.js +1 -1
  31. package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
  32. package/build/browser/filter-list/base/inputs/index.js +1 -1
  33. package/build/browser/filter-list/base/inputs/index.js.map +1 -1
  34. package/build/browser/filter-list/hooks/useFilterListState.js +3 -0
  35. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  36. package/build/browser/filter-list/hooks/useFilterVisibility.js +7 -1
  37. package/build/browser/filter-list/hooks/useFilterVisibility.js.map +1 -1
  38. package/build/browser/filter-list/utils/filterStateToWhereClause.js +1 -1
  39. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  40. package/build/browser/object-table/LoadingCell.js +2 -1
  41. package/build/browser/object-table/LoadingCell.js.map +1 -1
  42. package/build/browser/object-table/LoadingCell.module.css +3 -20
  43. package/build/browser/object-table/LoadingCell.module.css.js +1 -2
  44. package/build/browser/object-table/LoadingStateTable.js +2 -1
  45. package/build/browser/object-table/LoadingStateTable.js.map +1 -1
  46. package/build/browser/pdf-viewer/PdfRenderer.js +1 -1
  47. package/build/browser/pdf-viewer/PdfRenderer.js.map +1 -1
  48. package/build/browser/pdf-viewer/PdfViewer.js +59 -118
  49. package/build/browser/pdf-viewer/PdfViewer.js.map +1 -1
  50. package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -0
  51. package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.module.css.js +11 -0
  52. package/build/browser/pdf-viewer/components/PdfViewerContent.js +113 -0
  53. package/build/browser/pdf-viewer/components/PdfViewerContent.js.map +1 -0
  54. package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.js +98 -0
  55. package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.js.map +1 -0
  56. package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.module.css +89 -0
  57. package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.module.css.js +15 -0
  58. package/build/browser/pdf-viewer/components/PdfViewerSearchBar.js.map +1 -0
  59. package/build/browser/pdf-viewer/components/PdfViewerSearchBar.module.css.js +10 -0
  60. package/build/browser/pdf-viewer/{PdfViewerSidebar.js → components/PdfViewerSidebar.js} +9 -5
  61. package/build/browser/pdf-viewer/components/PdfViewerSidebar.js.map +1 -0
  62. package/build/{esm/pdf-viewer → browser/pdf-viewer/components}/PdfViewerSidebar.module.css +0 -9
  63. package/build/browser/pdf-viewer/{PdfViewerSidebar.module.css.js → components/PdfViewerSidebar.module.css.js} +5 -6
  64. package/build/browser/pdf-viewer/components/PdfViewerSidebarHeader.js +54 -0
  65. package/build/browser/pdf-viewer/components/PdfViewerSidebarHeader.js.map +1 -0
  66. package/build/browser/pdf-viewer/components/PdfViewerSidebarHeader.module.css +70 -0
  67. package/build/browser/pdf-viewer/components/PdfViewerSidebarHeader.module.css.js +8 -0
  68. package/build/browser/pdf-viewer/{PdfViewerThumbnail.js → components/PdfViewerThumbnail.js} +1 -1
  69. package/build/browser/pdf-viewer/components/PdfViewerThumbnail.js.map +1 -0
  70. package/build/browser/pdf-viewer/{PdfViewerThumbnail.module.css.js → components/PdfViewerThumbnail.module.css.js} +3 -3
  71. package/build/browser/pdf-viewer/{PdfViewerToolbar.js → components/PdfViewerToolbar.js} +39 -12
  72. package/build/browser/pdf-viewer/components/PdfViewerToolbar.js.map +1 -0
  73. package/build/browser/pdf-viewer/{PdfViewerToolbar.module.css → components/PdfViewerToolbar.module.css} +2 -2
  74. package/build/browser/pdf-viewer/components/PdfViewerToolbar.module.css.js +12 -0
  75. package/build/browser/pdf-viewer/constants.js +7 -5
  76. package/build/browser/pdf-viewer/constants.js.map +1 -1
  77. package/build/browser/pdf-viewer/hooks/usePdfDocument.js +2 -3
  78. package/build/browser/pdf-viewer/hooks/usePdfDocument.js.map +1 -1
  79. package/build/browser/pdf-viewer/hooks/usePdfOutline.js +268 -0
  80. package/build/browser/pdf-viewer/hooks/usePdfOutline.js.map +1 -0
  81. package/build/browser/pdf-viewer/hooks/usePdfViewer.js +12 -1
  82. package/build/browser/pdf-viewer/hooks/usePdfViewer.js.map +1 -1
  83. package/build/browser/pdf-viewer/hooks/usePdfViewerCore.js +80 -0
  84. package/build/browser/pdf-viewer/hooks/usePdfViewerCore.js.map +1 -0
  85. package/build/browser/pdf-viewer/hooks/usePdfViewerState.js +135 -0
  86. package/build/browser/pdf-viewer/hooks/usePdfViewerState.js.map +1 -0
  87. package/build/browser/pdf-viewer/types.js.map +1 -1
  88. package/build/browser/public/experimental.js +21 -2
  89. package/build/browser/public/experimental.js.map +1 -1
  90. package/build/browser/public/primitives.js +20 -0
  91. package/build/browser/public/primitives.js.map +1 -0
  92. package/build/browser/{filter-list/base/inputs → shared}/dateUtils.js +38 -2
  93. package/build/browser/shared/dateUtils.js.map +1 -0
  94. package/build/browser/styles.css +421 -74
  95. package/build/cjs/DateCalendar-QWGFKD6J.css +113 -0
  96. package/build/cjs/DateCalendar-QWGFKD6J.css.map +1 -0
  97. package/build/cjs/DateCalendar-R44GMN3O.cjs +67 -0
  98. package/build/cjs/DateCalendar-R44GMN3O.cjs.map +1 -0
  99. package/build/cjs/chunk-GT6IV6LV.cjs +163 -0
  100. package/build/cjs/chunk-GT6IV6LV.cjs.map +1 -0
  101. package/build/cjs/chunk-HMQTYQEX.cjs +9 -0
  102. package/build/cjs/chunk-HMQTYQEX.cjs.map +1 -0
  103. package/build/cjs/chunk-UZ2E5NRX.cjs +8 -0
  104. package/build/cjs/chunk-UZ2E5NRX.cjs.map +1 -0
  105. package/build/cjs/index.cjs +2 -0
  106. package/build/cjs/public/experimental.cjs +2157 -1592
  107. package/build/cjs/public/experimental.cjs.map +1 -1
  108. package/build/cjs/public/experimental.css +388 -116
  109. package/build/cjs/public/experimental.css.map +1 -1
  110. package/build/cjs/public/experimental.d.cts +273 -14
  111. package/build/cjs/public/primitives.cjs +25 -0
  112. package/build/cjs/public/primitives.cjs.map +1 -0
  113. package/build/cjs/public/primitives.css +154 -0
  114. package/build/cjs/public/primitives.css.map +1 -0
  115. package/build/cjs/public/primitives.d.cts +49 -0
  116. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  117. package/build/esm/action-form/fields/DateCalendar.js +70 -0
  118. package/build/esm/action-form/fields/DateCalendar.js.map +1 -0
  119. package/build/esm/action-form/fields/DateCalendar.module.css +136 -0
  120. package/build/esm/action-form/fields/DatetimePickerField.js +98 -0
  121. package/build/esm/action-form/fields/DatetimePickerField.js.map +1 -0
  122. package/build/esm/action-form/fields/DatetimePickerField.module.css +66 -0
  123. package/build/esm/action-form/fields/FormFieldRenderer.js +10 -1
  124. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  125. package/build/esm/action-form/fields/LazyDateCalendar.js +27 -0
  126. package/build/esm/action-form/fields/LazyDateCalendar.js.map +1 -0
  127. package/build/esm/filter-list/FilterList.js +9 -5
  128. package/build/esm/filter-list/FilterList.js.map +1 -1
  129. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  130. package/build/esm/filter-list/base/BaseFilterList.js +3 -1
  131. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
  132. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
  133. package/build/esm/filter-list/base/FilterListHeader.js +3 -2
  134. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
  135. package/build/esm/filter-list/base/inputs/DateRangeInput.js +1 -1
  136. package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  137. package/build/esm/filter-list/base/inputs/MultiDateInput.js +1 -1
  138. package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -1
  139. package/build/esm/filter-list/base/inputs/SingleDateInput.js +1 -1
  140. package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -1
  141. package/build/esm/filter-list/base/inputs/TimelineInput.js +1 -1
  142. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
  143. package/build/esm/filter-list/base/inputs/index.js +1 -1
  144. package/build/esm/filter-list/base/inputs/index.js.map +1 -1
  145. package/build/esm/filter-list/hooks/useFilterListState.js +3 -0
  146. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  147. package/build/esm/filter-list/hooks/useFilterVisibility.js +7 -1
  148. package/build/esm/filter-list/hooks/useFilterVisibility.js.map +1 -1
  149. package/build/esm/filter-list/utils/filterStateToWhereClause.js +1 -1
  150. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  151. package/build/esm/object-table/LoadingCell.js +2 -1
  152. package/build/esm/object-table/LoadingCell.js.map +1 -1
  153. package/build/esm/object-table/LoadingCell.module.css +3 -20
  154. package/build/esm/object-table/LoadingStateTable.js +2 -1
  155. package/build/esm/object-table/LoadingStateTable.js.map +1 -1
  156. package/build/esm/pdf-viewer/PdfRenderer.js +1 -1
  157. package/build/esm/pdf-viewer/PdfRenderer.js.map +1 -1
  158. package/build/esm/pdf-viewer/PdfViewer.js +59 -118
  159. package/build/esm/pdf-viewer/PdfViewer.js.map +1 -1
  160. package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -0
  161. package/build/esm/pdf-viewer/components/PdfViewerContent.js +113 -0
  162. package/build/esm/pdf-viewer/components/PdfViewerContent.js.map +1 -0
  163. package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.js +98 -0
  164. package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.js.map +1 -0
  165. package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.module.css +89 -0
  166. package/build/esm/pdf-viewer/components/PdfViewerSearchBar.js.map +1 -0
  167. package/build/esm/pdf-viewer/{PdfViewerSidebar.js → components/PdfViewerSidebar.js} +9 -5
  168. package/build/esm/pdf-viewer/components/PdfViewerSidebar.js.map +1 -0
  169. package/build/{browser/pdf-viewer → esm/pdf-viewer/components}/PdfViewerSidebar.module.css +0 -9
  170. package/build/esm/pdf-viewer/components/PdfViewerSidebarHeader.js +54 -0
  171. package/build/esm/pdf-viewer/components/PdfViewerSidebarHeader.js.map +1 -0
  172. package/build/esm/pdf-viewer/components/PdfViewerSidebarHeader.module.css +70 -0
  173. package/build/esm/pdf-viewer/{PdfViewerThumbnail.js → components/PdfViewerThumbnail.js} +1 -1
  174. package/build/esm/pdf-viewer/components/PdfViewerThumbnail.js.map +1 -0
  175. package/build/esm/pdf-viewer/{PdfViewerToolbar.js → components/PdfViewerToolbar.js} +39 -12
  176. package/build/esm/pdf-viewer/components/PdfViewerToolbar.js.map +1 -0
  177. package/build/esm/pdf-viewer/{PdfViewerToolbar.module.css → components/PdfViewerToolbar.module.css} +2 -2
  178. package/build/esm/pdf-viewer/constants.js +7 -5
  179. package/build/esm/pdf-viewer/constants.js.map +1 -1
  180. package/build/esm/pdf-viewer/hooks/usePdfDocument.js +2 -3
  181. package/build/esm/pdf-viewer/hooks/usePdfDocument.js.map +1 -1
  182. package/build/esm/pdf-viewer/hooks/usePdfOutline.js +268 -0
  183. package/build/esm/pdf-viewer/hooks/usePdfOutline.js.map +1 -0
  184. package/build/esm/pdf-viewer/hooks/usePdfViewer.js +12 -1
  185. package/build/esm/pdf-viewer/hooks/usePdfViewer.js.map +1 -1
  186. package/build/esm/pdf-viewer/hooks/usePdfViewerCore.js +80 -0
  187. package/build/esm/pdf-viewer/hooks/usePdfViewerCore.js.map +1 -0
  188. package/build/esm/pdf-viewer/hooks/usePdfViewerState.js +135 -0
  189. package/build/esm/pdf-viewer/hooks/usePdfViewerState.js.map +1 -0
  190. package/build/esm/pdf-viewer/types.js.map +1 -1
  191. package/build/esm/public/experimental.js +21 -2
  192. package/build/esm/public/experimental.js.map +1 -1
  193. package/build/esm/public/primitives.js +20 -0
  194. package/build/esm/public/primitives.js.map +1 -0
  195. package/build/esm/{filter-list/base/inputs → shared}/dateUtils.js +38 -2
  196. package/build/esm/shared/dateUtils.js.map +1 -0
  197. package/build/types/action-form/FormFieldApi.d.ts +21 -7
  198. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  199. package/build/types/action-form/fields/DateCalendar.d.ts +9 -0
  200. package/build/types/action-form/fields/DateCalendar.d.ts.map +1 -0
  201. package/build/types/action-form/fields/DatetimePickerField.d.ts +3 -0
  202. package/build/types/action-form/fields/DatetimePickerField.d.ts.map +1 -0
  203. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  204. package/build/types/action-form/fields/LazyDateCalendar.d.ts +3 -0
  205. package/build/types/action-form/fields/LazyDateCalendar.d.ts.map +1 -0
  206. package/build/types/filter-list/FilterListApi.d.ts +2 -1
  207. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  208. package/build/types/filter-list/base/BaseFilterListApi.d.ts +2 -1
  209. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
  210. package/build/types/filter-list/base/FilterListHeader.d.ts +3 -2
  211. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
  212. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -1
  213. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -1
  214. package/build/types/filter-list/base/inputs/index.d.ts +1 -1
  215. package/build/types/filter-list/base/inputs/index.d.ts.map +1 -1
  216. package/build/types/filter-list/hooks/useFilterVisibility.d.ts +2 -0
  217. package/build/types/filter-list/hooks/useFilterVisibility.d.ts.map +1 -1
  218. package/build/types/object-table/LoadingCell.d.ts.map +1 -1
  219. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
  220. package/build/types/pdf-viewer/PdfRenderer.d.ts +2 -2
  221. package/build/types/pdf-viewer/PdfRenderer.d.ts.map +1 -1
  222. package/build/types/pdf-viewer/PdfViewer.d.ts +1 -1
  223. package/build/types/pdf-viewer/PdfViewer.d.ts.map +1 -1
  224. package/build/types/pdf-viewer/{PdfViewerAnnotationLayer.d.ts → components/PdfViewerAnnotationLayer.d.ts} +2 -3
  225. package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts.map +1 -0
  226. package/build/types/pdf-viewer/components/PdfViewerContent.d.ts +22 -0
  227. package/build/types/pdf-viewer/components/PdfViewerContent.d.ts.map +1 -0
  228. package/build/types/pdf-viewer/components/PdfViewerOutlineSidebar.d.ts +11 -0
  229. package/build/types/pdf-viewer/components/PdfViewerOutlineSidebar.d.ts.map +1 -0
  230. package/build/types/pdf-viewer/{PdfViewerSearchBar.d.ts → components/PdfViewerSearchBar.d.ts} +1 -2
  231. package/build/types/pdf-viewer/components/PdfViewerSearchBar.d.ts.map +1 -0
  232. package/build/types/pdf-viewer/components/PdfViewerSidebar.d.ts +12 -0
  233. package/build/types/pdf-viewer/components/PdfViewerSidebar.d.ts.map +1 -0
  234. package/build/types/pdf-viewer/components/PdfViewerSidebarHeader.d.ts +7 -0
  235. package/build/types/pdf-viewer/components/PdfViewerSidebarHeader.d.ts.map +1 -0
  236. package/build/types/pdf-viewer/{PdfViewerThumbnail.d.ts.map → components/PdfViewerThumbnail.d.ts.map} +1 -1
  237. package/build/types/pdf-viewer/{PdfViewerToolbar.d.ts → components/PdfViewerToolbar.d.ts} +5 -3
  238. package/build/types/pdf-viewer/components/PdfViewerToolbar.d.ts.map +1 -0
  239. package/build/types/pdf-viewer/constants.d.ts +5 -0
  240. package/build/types/pdf-viewer/constants.d.ts.map +1 -1
  241. package/build/types/pdf-viewer/hooks/usePdfDocument.d.ts.map +1 -1
  242. package/build/types/pdf-viewer/hooks/usePdfOutline.d.ts +3 -0
  243. package/build/types/pdf-viewer/hooks/usePdfOutline.d.ts.map +1 -0
  244. package/build/types/pdf-viewer/hooks/usePdfViewer.d.ts +1 -1
  245. package/build/types/pdf-viewer/hooks/usePdfViewer.d.ts.map +1 -1
  246. package/build/types/pdf-viewer/hooks/usePdfViewerCore.d.ts +43 -0
  247. package/build/types/pdf-viewer/hooks/usePdfViewerCore.d.ts.map +1 -0
  248. package/build/types/pdf-viewer/hooks/usePdfViewerState.d.ts +39 -0
  249. package/build/types/pdf-viewer/hooks/usePdfViewerState.d.ts.map +1 -0
  250. package/build/types/pdf-viewer/types.d.ts +42 -0
  251. package/build/types/pdf-viewer/types.d.ts.map +1 -1
  252. package/build/types/public/experimental.d.ts +17 -2
  253. package/build/types/public/experimental.d.ts.map +1 -1
  254. package/build/types/public/primitives.d.ts +3 -0
  255. package/build/types/public/primitives.d.ts.map +1 -0
  256. package/build/types/shared/dateUtils.d.ts +31 -0
  257. package/build/types/shared/dateUtils.d.ts.map +1 -0
  258. package/package.json +14 -4
  259. package/primitives.d.ts +17 -0
  260. package/build/browser/filter-list/base/inputs/dateUtils.js.map +0 -1
  261. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.js.map +0 -1
  262. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.module.css.js +0 -11
  263. package/build/browser/pdf-viewer/PdfViewerSearchBar.js.map +0 -1
  264. package/build/browser/pdf-viewer/PdfViewerSearchBar.module.css.js +0 -10
  265. package/build/browser/pdf-viewer/PdfViewerSidebar.js.map +0 -1
  266. package/build/browser/pdf-viewer/PdfViewerThumbnail.js.map +0 -1
  267. package/build/browser/pdf-viewer/PdfViewerToolbar.js.map +0 -1
  268. package/build/browser/pdf-viewer/PdfViewerToolbar.module.css.js +0 -12
  269. package/build/esm/filter-list/base/inputs/dateUtils.js.map +0 -1
  270. package/build/esm/pdf-viewer/PdfViewerAnnotationLayer.js.map +0 -1
  271. package/build/esm/pdf-viewer/PdfViewerSearchBar.js.map +0 -1
  272. package/build/esm/pdf-viewer/PdfViewerSidebar.js.map +0 -1
  273. package/build/esm/pdf-viewer/PdfViewerThumbnail.js.map +0 -1
  274. package/build/esm/pdf-viewer/PdfViewerToolbar.js.map +0 -1
  275. package/build/types/filter-list/base/inputs/dateUtils.d.ts +0 -17
  276. package/build/types/filter-list/base/inputs/dateUtils.d.ts.map +0 -1
  277. package/build/types/pdf-viewer/PdfViewerAnnotationLayer.d.ts.map +0 -1
  278. package/build/types/pdf-viewer/PdfViewerSearchBar.d.ts.map +0 -1
  279. package/build/types/pdf-viewer/PdfViewerSidebar.d.ts +0 -10
  280. package/build/types/pdf-viewer/PdfViewerSidebar.d.ts.map +0 -1
  281. package/build/types/pdf-viewer/PdfViewerToolbar.d.ts.map +0 -1
  282. /package/build/browser/pdf-viewer/{PdfViewerAnnotationLayer.js → components/PdfViewerAnnotationLayer.js} +0 -0
  283. /package/build/browser/pdf-viewer/{PdfViewerAnnotationLayer.module.css → components/PdfViewerAnnotationLayer.module.css} +0 -0
  284. /package/build/browser/pdf-viewer/{PdfViewerSearchBar.js → components/PdfViewerSearchBar.js} +0 -0
  285. /package/build/browser/pdf-viewer/{PdfViewerSearchBar.module.css → components/PdfViewerSearchBar.module.css} +0 -0
  286. /package/build/browser/pdf-viewer/{PdfViewerThumbnail.module.css → components/PdfViewerThumbnail.module.css} +0 -0
  287. /package/build/esm/pdf-viewer/{PdfViewerAnnotationLayer.js → components/PdfViewerAnnotationLayer.js} +0 -0
  288. /package/build/esm/pdf-viewer/{PdfViewerAnnotationLayer.module.css → components/PdfViewerAnnotationLayer.module.css} +0 -0
  289. /package/build/esm/pdf-viewer/{PdfViewerSearchBar.js → components/PdfViewerSearchBar.js} +0 -0
  290. /package/build/esm/pdf-viewer/{PdfViewerSearchBar.module.css → components/PdfViewerSearchBar.module.css} +0 -0
  291. /package/build/esm/pdf-viewer/{PdfViewerThumbnail.module.css → components/PdfViewerThumbnail.module.css} +0 -0
  292. /package/build/types/pdf-viewer/{PdfViewerThumbnail.d.ts → components/PdfViewerThumbnail.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerAnnotationLayer.js","names":["classnames","React","useCallback","useMemo","styles","AnnotationItem","annotation","pageHeight","scale","onClick","handleClick","handleKeyDown","e","key","preventDefault","style","left","rect","x","top","y","height","width","color","className","type","createElement","onKeyDown","role","tabIndex","title","label","id","PdfViewerAnnotationLayer","annotations","onAnnotationClick","annotationLayer","map"],"sources":["PdfViewerAnnotationLayer.tsx"],"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\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerAnnotationLayer.module.css\";\nimport type { PdfAnnotation } from \"./types.js\";\n\ninterface PdfViewerAnnotationLayerProps {\n annotations: PdfAnnotation[];\n pageHeight: number;\n scale: number;\n onAnnotationClick?: (annotation: PdfAnnotation) => void;\n}\n\ninterface AnnotationItemProps {\n annotation: PdfAnnotation;\n pageHeight: number;\n scale: number;\n onClick?: (annotation: PdfAnnotation) => void;\n}\n\nfunction AnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick,\n}: AnnotationItemProps): React.ReactElement {\n const handleClick = useCallback(() => {\n onClick?.(annotation);\n }, [onClick, annotation]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n onClick?.(annotation);\n }\n },\n [onClick, annotation],\n );\n\n // Convert PDF coordinates (bottom-left origin) to CSS (top-left origin)\n const style = useMemo(\n () => ({\n left: annotation.rect.x * scale,\n top: (pageHeight - annotation.rect.y - annotation.rect.height) * scale,\n width: annotation.rect.width * scale,\n height: annotation.rect.height * scale,\n ...(annotation.color != null\n ? {\n \"--osdk-pdf-annotation-color\": annotation.color,\n } as React.CSSProperties\n : {}),\n }),\n [annotation, pageHeight, scale],\n );\n\n const className = classnames(\n styles.annotation,\n styles[annotation.type],\n );\n\n return (\n <div\n className={className}\n style={style}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n title={annotation.label}\n data-annotation-id={annotation.id}\n />\n );\n}\n\nexport function PdfViewerAnnotationLayer({\n annotations,\n pageHeight,\n scale,\n onAnnotationClick,\n}: PdfViewerAnnotationLayerProps): React.ReactElement {\n return (\n <div className={styles.annotationLayer}>\n {annotations.map((annotation) => (\n <AnnotationItem\n key={annotation.id}\n annotation={annotation}\n pageHeight={pageHeight}\n scale={scale}\n onClick={onAnnotationClick}\n />\n ))}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,OAAOC,MAAM,MAAM,uCAAuC;AAiB1D,SAASC,cAAcA,CAAC;EACtBC,UAAU;EACVC,UAAU;EACVC,KAAK;EACLC;AACmB,CAAC,EAAsB;EAC1C,MAAMC,WAAW,GAAGR,WAAW,CAAC,MAAM;IACpCO,OAAO,GAAGH,UAAU,CAAC;EACvB,CAAC,EAAE,CAACG,OAAO,EAAEH,UAAU,CAAC,CAAC;EAEzB,MAAMK,aAAa,GAAGT,WAAW,CAC9BU,CAAsB,IAAK;IAC1B,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MACrBD,CAAC,CAACE,cAAc,CAAC,CAAC;MAClBL,OAAO,GAAGH,UAAU,CAAC;IACvB;EACF,CAAC,EACD,CAACG,OAAO,EAAEH,UAAU,CACtB,CAAC;;EAED;EACA,MAAMS,KAAK,GAAGZ,OAAO,CACnB,OAAO;IACLa,IAAI,EAAEV,UAAU,CAACW,IAAI,CAACC,CAAC,GAAGV,KAAK;IAC/BW,GAAG,EAAE,CAACZ,UAAU,GAAGD,UAAU,CAACW,IAAI,CAACG,CAAC,GAAGd,UAAU,CAACW,IAAI,CAACI,MAAM,IAAIb,KAAK;IACtEc,KAAK,EAAEhB,UAAU,CAACW,IAAI,CAACK,KAAK,GAAGd,KAAK;IACpCa,MAAM,EAAEf,UAAU,CAACW,IAAI,CAACI,MAAM,GAAGb,KAAK;IACtC,IAAIF,UAAU,CAACiB,KAAK,IAAI,IAAI,GACxB;MACA,6BAA6B,EAAEjB,UAAU,CAACiB;IAC5C,CAAC,GACC,CAAC,CAAC;EACR,CAAC,CAAC,EACF,CAACjB,UAAU,EAAEC,UAAU,EAAEC,KAAK,CAChC,CAAC;EAED,MAAMgB,SAAS,GAAGxB,UAAU,CAC1BI,MAAM,CAACE,UAAU,EACjBF,MAAM,CAACE,UAAU,CAACmB,IAAI,CACxB,CAAC;EAED,oBACExB,KAAA,CAAAyB,aAAA;IACEF,SAAS,EAAEA,SAAU;IACrBT,KAAK,EAAEA,KAAM;IACbN,OAAO,EAAEC,WAAY;IACrBiB,SAAS,EAAEhB,aAAc;IACzBiB,IAAI,EAAC,QAAQ;IACbC,QAAQ,EAAE,CAAE;IACZC,KAAK,EAAExB,UAAU,CAACyB,KAAM;IACxB,sBAAoBzB,UAAU,CAAC0B;EAAG,CACnC,CAAC;AAEN;AAEA,OAAO,SAASC,wBAAwBA,CAAC;EACvCC,WAAW;EACX3B,UAAU;EACVC,KAAK;EACL2B;AAC6B,CAAC,EAAsB;EACpD,oBACElC,KAAA,CAAAyB,aAAA;IAAKF,SAAS,EAAEpB,MAAM,CAACgC;EAAgB,GACpCF,WAAW,CAACG,GAAG,CAAE/B,UAAU,iBAC1BL,KAAA,CAAAyB,aAAA,CAACrB,cAAc;IACbQ,GAAG,EAAEP,UAAU,CAAC0B,EAAG;IACnB1B,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEA,UAAW;IACvBC,KAAK,EAAEA,KAAM;IACbC,OAAO,EAAE0B;EAAkB,CAC5B,CACF,CACE,CAAC;AAEV","ignoreList":[]}
@@ -1,11 +0,0 @@
1
- // CSS Module proxy for PdfViewerAnnotationLayer.module.css
2
- const styles = {
3
- "annotationLayer": "PdfViewerAnnotationLayer-module__annotationLayer___9qNMaJ-S",
4
- "annotation": "PdfViewerAnnotationLayer-module__annotation___5hTAzm8w",
5
- "highlight": "PdfViewerAnnotationLayer-module__highlight___hu-LZv1e",
6
- "underline": "PdfViewerAnnotationLayer-module__underline___SjTKjwwv",
7
- "comment": "PdfViewerAnnotationLayer-module__comment___darli8TU",
8
- "pin": "PdfViewerAnnotationLayer-module__pin___VeZrPTVU"
9
- };
10
-
11
- export default styles;
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerSearchBar.js","names":["ChevronDown","ChevronUp","Cross","React","useCallback","styles","PdfViewerSearchBar","query","totalMatches","currentMatchIndex","onQueryChange","onNext","onPrev","onClose","handleInputChange","e","target","value","handleKeyDown","key","preventDefault","shiftKey","matchDisplay","length","createElement","className","searchBar","autoFocus","searchInput","type","onChange","onKeyDown","placeholder","matchCount","navButton","onClick","disabled","size","closeButton"],"sources":["PdfViewerSearchBar.tsx"],"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\nimport { ChevronDown, ChevronUp, Cross } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSearchBar.module.css\";\n\ninterface PdfViewerSearchBarProps {\n query: string;\n totalMatches: number;\n currentMatchIndex: number;\n onQueryChange: (query: string) => void;\n onNext: () => void;\n onPrev: () => void;\n onClose: () => void;\n}\n\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose,\n}: PdfViewerSearchBarProps): React.ReactElement {\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onQueryChange(e.target.value);\n },\n [onQueryChange],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (e.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n },\n [onNext, onPrev, onClose],\n );\n\n const matchDisplay = totalMatches > 0\n ? `${currentMatchIndex + 1} of ${totalMatches}`\n : query.length > 0\n ? \"No results\"\n : \"\";\n\n return (\n <div className={styles.searchBar}>\n <input\n autoFocus\n className={styles.searchInput}\n type=\"text\"\n value={query}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"Find in document...\"\n aria-label=\"Search in PDF\"\n />\n {matchDisplay.length > 0 && (\n <span className={styles.matchCount}>{matchDisplay}</span>\n )}\n <button\n className={styles.navButton}\n onClick={onPrev}\n disabled={totalMatches === 0}\n aria-label=\"Previous match\"\n type=\"button\"\n >\n <ChevronUp size={16} />\n </button>\n <button\n className={styles.navButton}\n onClick={onNext}\n disabled={totalMatches === 0}\n aria-label=\"Next match\"\n type=\"button\"\n >\n <ChevronDown size={16} />\n </button>\n <button\n className={styles.closeButton}\n onClick={onClose}\n aria-label=\"Close search\"\n type=\"button\"\n >\n <Cross size={16} />\n </button>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,EAAEC,SAAS,EAAEC,KAAK,QAAQ,oBAAoB;AAClE,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,OAAOC,MAAM,MAAM,iCAAiC;AAYpD,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,KAAK;EACLC,YAAY;EACZC,iBAAiB;EACjBC,aAAa;EACbC,MAAM;EACNC,MAAM;EACNC;AACuB,CAAC,EAAsB;EAC9C,MAAMC,iBAAiB,GAAGV,WAAW,CAClCW,CAAsC,IAAK;IAC1CL,aAAa,CAACK,CAAC,CAACC,MAAM,CAACC,KAAK,CAAC;EAC/B,CAAC,EACD,CAACP,aAAa,CAChB,CAAC;EAED,MAAMQ,aAAa,GAAGd,WAAW,CAC9BW,CAAsB,IAAK;IAC1B,IAAIA,CAAC,CAACI,GAAG,KAAK,OAAO,EAAE;MACrBJ,CAAC,CAACK,cAAc,CAAC,CAAC;MAClB,IAAIL,CAAC,CAACM,QAAQ,EAAE;QACdT,MAAM,CAAC,CAAC;MACV,CAAC,MAAM;QACLD,MAAM,CAAC,CAAC;MACV;IACF,CAAC,MAAM,IAAII,CAAC,CAACI,GAAG,KAAK,QAAQ,EAAE;MAC7BJ,CAAC,CAACK,cAAc,CAAC,CAAC;MAClBP,OAAO,CAAC,CAAC;IACX;EACF,CAAC,EACD,CAACF,MAAM,EAAEC,MAAM,EAAEC,OAAO,CAC1B,CAAC;EAED,MAAMS,YAAY,GAAGd,YAAY,GAAG,CAAC,GACjC,GAAGC,iBAAiB,GAAG,CAAC,OAAOD,YAAY,EAAE,GAC7CD,KAAK,CAACgB,MAAM,GAAG,CAAC,GAChB,YAAY,GACZ,EAAE;EAEN,oBACEpB,KAAA,CAAAqB,aAAA;IAAKC,SAAS,EAAEpB,MAAM,CAACqB;EAAU,gBAC/BvB,KAAA,CAAAqB,aAAA;IACEG,SAAS;IACTF,SAAS,EAAEpB,MAAM,CAACuB,WAAY;IAC9BC,IAAI,EAAC,MAAM;IACXZ,KAAK,EAAEV,KAAM;IACbuB,QAAQ,EAAEhB,iBAAkB;IAC5BiB,SAAS,EAAEb,aAAc;IACzBc,WAAW,EAAC,qBAAqB;IACjC,cAAW;EAAe,CAC3B,CAAC,EACDV,YAAY,CAACC,MAAM,GAAG,CAAC,iBACtBpB,KAAA,CAAAqB,aAAA;IAAMC,SAAS,EAAEpB,MAAM,CAAC4B;EAAW,GAAEX,YAAmB,CACzD,eACDnB,KAAA,CAAAqB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAAC6B,SAAU;IAC5BC,OAAO,EAAEvB,MAAO;IAChBwB,QAAQ,EAAE5B,YAAY,KAAK,CAAE;IAC7B,cAAW,gBAAgB;IAC3BqB,IAAI,EAAC;EAAQ,gBAEb1B,KAAA,CAAAqB,aAAA,CAACvB,SAAS;IAACoC,IAAI,EAAE;EAAG,CAAE,CAChB,CAAC,eACTlC,KAAA,CAAAqB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAAC6B,SAAU;IAC5BC,OAAO,EAAExB,MAAO;IAChByB,QAAQ,EAAE5B,YAAY,KAAK,CAAE;IAC7B,cAAW,YAAY;IACvBqB,IAAI,EAAC;EAAQ,gBAEb1B,KAAA,CAAAqB,aAAA,CAACxB,WAAW;IAACqC,IAAI,EAAE;EAAG,CAAE,CAClB,CAAC,eACTlC,KAAA,CAAAqB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAACiC,WAAY;IAC9BH,OAAO,EAAEtB,OAAQ;IACjB,cAAW,cAAc;IACzBgB,IAAI,EAAC;EAAQ,gBAEb1B,KAAA,CAAAqB,aAAA,CAACtB,KAAK;IAACmC,IAAI,EAAE;EAAG,CAAE,CACZ,CACL,CAAC;AAEV","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- // CSS Module proxy for PdfViewerSearchBar.module.css
2
- const styles = {
3
- "searchBar": "PdfViewerSearchBar-module__searchBar___UR3IbGXb",
4
- "searchInput": "PdfViewerSearchBar-module__searchInput___uGexyYcH",
5
- "matchCount": "PdfViewerSearchBar-module__matchCount___np-TCNhQ",
6
- "navButton": "PdfViewerSearchBar-module__navButton___WhEoIW0p",
7
- "closeButton": "PdfViewerSearchBar-module__closeButton___Sgtlmr-- PdfViewerSearchBar-module__navButton___WhEoIW0p"
8
- };
9
-
10
- export default styles;
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerSidebar.js","names":["useVirtualizer","React","useEffect","useRef","DEFAULT_PAGE_HEIGHT","THUMBNAIL_GAP","THUMBNAIL_SCALE","styles","PdfViewerThumbnail","PdfViewerSidebar","document","numPages","currentPage","onPageClick","scrollContainerRef","estimatedItemHeight","Math","floor","virtualizer","count","getScrollElement","current","estimateSize","overscan","scrollToIndex","align","createElement","className","sidebar","sidebarHeader","ref","scrollContainer","thumbnailsContainer","style","height","getTotalSize","getVirtualItems","map","virtualItem","pageNumber","index","key","thumbnailWrapper","top","start","size","isActive","onClick"],"sources":["PdfViewerSidebar.tsx"],"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\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport React, { useEffect, useRef } from \"react\";\nimport {\n DEFAULT_PAGE_HEIGHT,\n THUMBNAIL_GAP,\n THUMBNAIL_SCALE,\n} from \"./constants.js\";\nimport styles from \"./PdfViewerSidebar.module.css\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\n\ninterface PdfViewerSidebarProps {\n document: PDFDocumentProxy;\n numPages: number;\n currentPage: number;\n onPageClick: (page: number) => void;\n}\n\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n}: PdfViewerSidebarProps): React.ReactElement {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const estimatedItemHeight = Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE)\n + THUMBNAIL_GAP + 20;\n\n const virtualizer = useVirtualizer({\n count: numPages,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => estimatedItemHeight,\n overscan: 2,\n });\n\n // Auto-scroll to keep the active thumbnail visible\n useEffect(function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, { align: \"auto\" });\n }, [currentPage, virtualizer]);\n\n return (\n <div className={styles.sidebar}>\n <div className={styles.sidebarHeader}>Pages</div>\n <div ref={scrollContainerRef} className={styles.scrollContainer}>\n <div\n className={styles.thumbnailsContainer}\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const pageNumber = virtualItem.index + 1;\n return (\n <div\n key={virtualItem.key}\n className={styles.thumbnailWrapper}\n style={{\n top: virtualItem.start,\n height: virtualItem.size,\n }}\n >\n <div>\n <PdfViewerThumbnail\n document={document}\n pageNumber={pageNumber}\n isActive={pageNumber === currentPage}\n onClick={() => onPageClick(pageNumber)}\n />\n <div className={styles.pageNumber}>{pageNumber}</div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,yBAAyB;AAExD,OAAOC,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SACEC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,QACV,gBAAgB;AACvB,OAAOC,MAAM,MAAM,+BAA+B;AAClD,SAASC,kBAAkB,QAAQ,yBAAyB;AAS5D,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC;AACqB,CAAC,EAAsB;EAC5C,MAAMC,kBAAkB,GAAGX,MAAM,CAAiB,IAAI,CAAC;EACvD,MAAMY,mBAAmB,GAAGC,IAAI,CAACC,KAAK,CAACb,mBAAmB,GAAGE,eAAe,CAAC,GACzED,aAAa,GAAG,EAAE;EAEtB,MAAMa,WAAW,GAAGlB,cAAc,CAAC;IACjCmB,KAAK,EAAER,QAAQ;IACfS,gBAAgB,EAAEA,CAAA,KAAMN,kBAAkB,CAACO,OAAO;IAClDC,YAAY,EAAEA,CAAA,KAAMP,mBAAmB;IACvCQ,QAAQ,EAAE;EACZ,CAAC,CAAC;;EAEF;EACArB,SAAS,CAAC,YAA+B;IACvCgB,WAAW,CAACM,aAAa,CAACZ,WAAW,GAAG,CAAC,EAAE;MAAEa,KAAK,EAAE;IAAO,CAAC,CAAC;EAC/D,CAAC,EAAE,CAACb,WAAW,EAAEM,WAAW,CAAC,CAAC;EAE9B,oBACEjB,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAEpB,MAAM,CAACqB;EAAQ,gBAC7B3B,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAEpB,MAAM,CAACsB;EAAc,GAAC,OAAU,CAAC,eACjD5B,KAAA,CAAAyB,aAAA;IAAKI,GAAG,EAAEhB,kBAAmB;IAACa,SAAS,EAAEpB,MAAM,CAACwB;EAAgB,gBAC9D9B,KAAA,CAAAyB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAACyB,mBAAoB;IACtCC,KAAK,EAAE;MAAEC,MAAM,EAAEhB,WAAW,CAACiB,YAAY,CAAC;IAAE;EAAE,GAE7CjB,WAAW,CAACkB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,WAAW,IAAK;IAClD,MAAMC,UAAU,GAAGD,WAAW,CAACE,KAAK,GAAG,CAAC;IACxC,oBACEvC,KAAA,CAAAyB,aAAA;MACEe,GAAG,EAAEH,WAAW,CAACG,GAAI;MACrBd,SAAS,EAAEpB,MAAM,CAACmC,gBAAiB;MACnCT,KAAK,EAAE;QACLU,GAAG,EAAEL,WAAW,CAACM,KAAK;QACtBV,MAAM,EAAEI,WAAW,CAACO;MACtB;IAAE,gBAEF5C,KAAA,CAAAyB,aAAA,2BACEzB,KAAA,CAAAyB,aAAA,CAAClB,kBAAkB;MACjBE,QAAQ,EAAEA,QAAS;MACnB6B,UAAU,EAAEA,UAAW;MACvBO,QAAQ,EAAEP,UAAU,KAAK3B,WAAY;MACrCmC,OAAO,EAAEA,CAAA,KAAMlC,WAAW,CAAC0B,UAAU;IAAE,CACxC,CAAC,eACFtC,KAAA,CAAAyB,aAAA;MAAKC,SAAS,EAAEpB,MAAM,CAACgC;IAAW,GAAEA,UAAgB,CACjD,CACF,CAAC;EAEV,CAAC,CACE,CACF,CACF,CAAC;AAEV","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerThumbnail.js","names":["classnames","React","useCallback","useEffect","useRef","useState","DEVICE_PIXEL_RATIO","THUMBNAIL_SCALE","styles","PdfViewerThumbnail","document","pageNumber","isActive","onClick","canvasRef","renderTaskRef","dimensions","setDimensions","undefined","cancelled","getPage","then","page","current","viewport","getViewport","scale","canvas","context","getContext","width","Math","floor","height","style","cancel","setTransform","renderTask","render","canvasContext","promise","catch","err","Error","message","includes","handleKeyDown","e","key","preventDefault","containerClassName","thumbnailContainer","active","createElement","className","onKeyDown","role","tabIndex","ref"],"sources":["PdfViewerThumbnail.tsx"],"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\nimport classnames from \"classnames\";\nimport type { PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"./constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\n\ninterface PdfViewerThumbnailProps {\n document: PDFDocumentProxy;\n pageNumber: number;\n isActive: boolean;\n onClick: () => void;\n}\n\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick,\n}: PdfViewerThumbnailProps): React.ReactElement {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const renderTaskRef = useRef<ReturnType<PDFPageProxy[\"render\"]> | null>(null);\n const [dimensions, setDimensions] = useState<\n { width: number; height: number } | undefined\n >(undefined);\n\n useEffect(() => {\n let cancelled = false;\n\n void document.getPage(pageNumber).then((page) => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n\n const viewport = page.getViewport({ scale: THUMBNAIL_SCALE });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\n\n canvas.width = Math.floor(viewport.width * DEVICE_PIXEL_RATIO);\n canvas.height = Math.floor(viewport.height * DEVICE_PIXEL_RATIO);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height),\n });\n\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n\n context.setTransform(\n DEVICE_PIXEL_RATIO,\n 0,\n 0,\n DEVICE_PIXEL_RATIO,\n 0,\n 0,\n );\n\n const renderTask = page.render({\n canvasContext: context,\n viewport,\n });\n renderTaskRef.current = renderTask;\n\n void renderTask.promise.catch((err: unknown) => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\n });\n\n return () => {\n cancelled = true;\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n renderTaskRef.current = null;\n }\n };\n }, [document, pageNumber]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n },\n [onClick],\n );\n\n const containerClassName = classnames(\n styles.thumbnailContainer,\n isActive && styles.active,\n );\n\n return (\n <div\n className={containerClassName}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-label={`Page ${pageNumber}`}\n aria-current={isActive ? \"page\" : undefined}\n style={dimensions != null\n ? { width: dimensions.width, height: dimensions.height }\n : undefined}\n >\n <canvas ref={canvasRef} className={styles.canvas} />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerToolbar.js","names":["Input","ChevronLeft","ChevronRight","Download","Menu","Minus","Plus","Search","React","useCallback","useEffect","useState","MAX_SCALE","MIN_SCALE","SCALE_STEP","styles","PdfViewerToolbar","currentPage","numPages","scale","sidebarOpen","onPageChange","onScaleChange","onSearchOpen","onSidebarToggle","onDownload","pageInputValue","setPageInputValue","String","handlePrevPage","newPage","handleNextPage","handlePageInputChange","e","target","value","handlePageInputKeyDown","key","page","parseInt","isNaN","handlePageInputBlur","handleZoomIn","newScale","Math","min","handleZoomOut","max","scalePercent","round","createElement","className","toolbar","toolbarButton","onClick","title","type","size","separator","toolbarGroup","disabled","pageInput","onChange","onKeyDown","onBlur","pageCount","scaleDisplay"],"sources":["PdfViewerToolbar.tsx"],"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\nimport { Input } from \"@base-ui/react/input\";\nimport {\n ChevronLeft,\n ChevronRight,\n Download,\n Menu,\n Minus,\n Plus,\n Search,\n} from \"@blueprintjs/icons\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"./constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\n\ninterface PdfViewerToolbarProps {\n currentPage: number;\n numPages: number;\n scale: number;\n sidebarOpen: boolean;\n onPageChange: (page: number) => void;\n onScaleChange: (scale: number) => void;\n onSearchOpen: () => void;\n onSidebarToggle: () => void;\n onDownload: () => void;\n}\n\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n sidebarOpen,\n onPageChange,\n onScaleChange,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n}: PdfViewerToolbarProps): React.ReactElement {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(function syncPageInput() {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n\n const handlePrevPage = useCallback(() => {\n if (currentPage > 1) {\n const newPage = currentPage - 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, onPageChange]);\n\n const handleNextPage = useCallback(() => {\n if (currentPage < numPages) {\n const newPage = currentPage + 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, numPages, onPageChange]);\n\n const handlePageInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setPageInputValue(e.target.value);\n },\n [],\n );\n\n const handlePageInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n const page = parseInt(pageInputValue, 10);\n if (!isNaN(page) && page >= 1 && page <= numPages) {\n onPageChange(page);\n } else {\n setPageInputValue(String(currentPage));\n }\n }\n },\n [pageInputValue, numPages, onPageChange, currentPage],\n );\n\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n\n const handleZoomIn = useCallback(() => {\n const newScale = Math.min(scale + SCALE_STEP, MAX_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n\n const handleZoomOut = useCallback(() => {\n const newScale = Math.max(scale - SCALE_STEP, MIN_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n\n const scalePercent = `${Math.round(scale * 100)}%`;\n\n return (\n <div className={styles.toolbar}>\n <button\n className={styles.toolbarButton}\n onClick={onSidebarToggle}\n aria-label={sidebarOpen ? \"Close sidebar\" : \"Open sidebar\"}\n title={sidebarOpen ? \"Close sidebar\" : \"Open sidebar\"}\n aria-pressed={sidebarOpen}\n type=\"button\"\n >\n <Menu size={16} />\n </button>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <button\n className={styles.toolbarButton}\n onClick={handlePrevPage}\n disabled={currentPage <= 1}\n aria-label=\"Previous page\"\n title=\"Previous page\"\n type=\"button\"\n >\n <ChevronLeft size={16} />\n </button>\n <Input\n className={styles.pageInput}\n type=\"text\"\n value={pageInputValue}\n onChange={handlePageInputChange}\n onKeyDown={handlePageInputKeyDown}\n onBlur={handlePageInputBlur}\n aria-label=\"Page number\"\n />\n <span className={styles.pageCount}>of {numPages}</span>\n <button\n className={styles.toolbarButton}\n onClick={handleNextPage}\n disabled={currentPage >= numPages}\n aria-label=\"Next page\"\n title=\"Next page\"\n type=\"button\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <button\n className={styles.toolbarButton}\n onClick={handleZoomOut}\n disabled={scale <= MIN_SCALE}\n aria-label=\"Zoom out\"\n title=\"Zoom out\"\n type=\"button\"\n >\n <Minus size={16} />\n </button>\n <span className={styles.scaleDisplay}>{scalePercent}</span>\n <button\n className={styles.toolbarButton}\n onClick={handleZoomIn}\n disabled={scale >= MAX_SCALE}\n aria-label=\"Zoom in\"\n title=\"Zoom in\"\n type=\"button\"\n >\n <Plus size={16} />\n </button>\n </div>\n\n <div className={styles.separator} />\n\n <button\n className={styles.toolbarButton}\n onClick={onSearchOpen}\n aria-label=\"Search\"\n title=\"Search\"\n type=\"button\"\n >\n <Search size={16} />\n </button>\n\n <div className={styles.separator} />\n\n <button\n className={styles.toolbarButton}\n onClick={onDownload}\n aria-label=\"Download\"\n title=\"Download\"\n type=\"button\"\n >\n <Download size={16} />\n </button>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- // CSS Module proxy for PdfViewerToolbar.module.css
2
- const styles = {
3
- "toolbar": "PdfViewerToolbar-module__toolbar___mMEUJkpy",
4
- "toolbarGroup": "PdfViewerToolbar-module__toolbarGroup___JQ8lhuSw",
5
- "separator": "PdfViewerToolbar-module__separator___B7J-o2nO",
6
- "toolbarButton": "PdfViewerToolbar-module__toolbarButton___VPja8Zmi",
7
- "pageInput": "PdfViewerToolbar-module__pageInput___TOvquG6P",
8
- "pageCount": "PdfViewerToolbar-module__pageCount___koZz4nUT",
9
- "scaleDisplay": "PdfViewerToolbar-module__scaleDisplay___JpCw8z-e"
10
- };
11
-
12
- export default styles;
@@ -1 +0,0 @@
1
- {"version":3,"file":"dateUtils.js","names":["formatDateForInput","date","year","getFullYear","month","String","getMonth","padStart","day","getDate","parseDateFromInput","value","undefined","Date","isNaN","getTime","formatDateForDisplay","fallback","toLocaleDateString","parseDateFromISO"],"sources":["dateUtils.ts"],"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/**\n * Date utilities for HTML date inputs.\n *\n * These functions operate on local time by design. HTML <input type=\"date\">\n * returns and expects values in \"YYYY-MM-DD\" format without timezone info.\n *\n * `parseDateFromInput` appends \"T00:00:00\" (no \"Z\") so the date is parsed as\n * local midnight rather than UTC midnight. Without this, negative-offset\n * timezones (e.g. US timezones) would shift \"2024-01-15\" to Jan 14 locally.\n *\n * Consumers providing dates from an API (typically UTC) should handle\n * UTC-to-local conversion before passing values to these functions.\n */\n\nexport function formatDateForInput(date: Date | undefined): string {\n if (!date) return \"\";\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nexport function parseDateFromInput(value: string): Date | undefined {\n if (!value) return undefined;\n const date = new Date(value + \"T00:00:00\");\n return isNaN(date.getTime()) ? undefined : date;\n}\n\nexport function formatDateForDisplay(\n date: Date | undefined,\n fallback: string = \"\",\n): string {\n if (!date) return fallback;\n return date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n}\n\nexport function parseDateFromISO(\n value: string | Date | undefined | null,\n): Date | undefined {\n if (value == null) return undefined;\n if (value instanceof Date) return value;\n const date = new Date(value);\n return isNaN(date.getTime()) ? undefined : date;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASA,kBAAkBA,CAACC,IAAsB,EAAU;EACjE,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,MAAMC,IAAI,GAAGD,IAAI,CAACE,WAAW,CAAC,CAAC;EAC/B,MAAMC,KAAK,GAAGC,MAAM,CAACJ,IAAI,CAACK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC1D,MAAMC,GAAG,GAAGH,MAAM,CAACJ,IAAI,CAACQ,OAAO,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACnD,OAAO,GAAGL,IAAI,IAAIE,KAAK,IAAII,GAAG,EAAE;AAClC;AAEA,OAAO,SAASE,kBAAkBA,CAACC,KAAa,EAAoB;EAClE,IAAI,CAACA,KAAK,EAAE,OAAOC,SAAS;EAC5B,MAAMX,IAAI,GAAG,IAAIY,IAAI,CAACF,KAAK,GAAG,WAAW,CAAC;EAC1C,OAAOG,KAAK,CAACb,IAAI,CAACc,OAAO,CAAC,CAAC,CAAC,GAAGH,SAAS,GAAGX,IAAI;AACjD;AAEA,OAAO,SAASe,oBAAoBA,CAClCf,IAAsB,EACtBgB,QAAgB,GAAG,EAAE,EACb;EACR,IAAI,CAAChB,IAAI,EAAE,OAAOgB,QAAQ;EAC1B,OAAOhB,IAAI,CAACiB,kBAAkB,CAACN,SAAS,EAAE;IACxCV,IAAI,EAAE,SAAS;IACfE,KAAK,EAAE,OAAO;IACdI,GAAG,EAAE;EACP,CAAC,CAAC;AACJ;AAEA,OAAO,SAASW,gBAAgBA,CAC9BR,KAAuC,EACrB;EAClB,IAAIA,KAAK,IAAI,IAAI,EAAE,OAAOC,SAAS;EACnC,IAAID,KAAK,YAAYE,IAAI,EAAE,OAAOF,KAAK;EACvC,MAAMV,IAAI,GAAG,IAAIY,IAAI,CAACF,KAAK,CAAC;EAC5B,OAAOG,KAAK,CAACb,IAAI,CAACc,OAAO,CAAC,CAAC,CAAC,GAAGH,SAAS,GAAGX,IAAI;AACjD","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerAnnotationLayer.js","names":["classnames","React","useCallback","useMemo","styles","AnnotationItem","annotation","pageHeight","scale","onClick","handleClick","handleKeyDown","e","key","preventDefault","style","left","rect","x","top","y","height","width","color","className","type","createElement","onKeyDown","role","tabIndex","title","label","id","PdfViewerAnnotationLayer","annotations","onAnnotationClick","annotationLayer","map"],"sources":["PdfViewerAnnotationLayer.tsx"],"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\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerAnnotationLayer.module.css\";\nimport type { PdfAnnotation } from \"./types.js\";\n\ninterface PdfViewerAnnotationLayerProps {\n annotations: PdfAnnotation[];\n pageHeight: number;\n scale: number;\n onAnnotationClick?: (annotation: PdfAnnotation) => void;\n}\n\ninterface AnnotationItemProps {\n annotation: PdfAnnotation;\n pageHeight: number;\n scale: number;\n onClick?: (annotation: PdfAnnotation) => void;\n}\n\nfunction AnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick,\n}: AnnotationItemProps): React.ReactElement {\n const handleClick = useCallback(() => {\n onClick?.(annotation);\n }, [onClick, annotation]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n onClick?.(annotation);\n }\n },\n [onClick, annotation],\n );\n\n // Convert PDF coordinates (bottom-left origin) to CSS (top-left origin)\n const style = useMemo(\n () => ({\n left: annotation.rect.x * scale,\n top: (pageHeight - annotation.rect.y - annotation.rect.height) * scale,\n width: annotation.rect.width * scale,\n height: annotation.rect.height * scale,\n ...(annotation.color != null\n ? {\n \"--osdk-pdf-annotation-color\": annotation.color,\n } as React.CSSProperties\n : {}),\n }),\n [annotation, pageHeight, scale],\n );\n\n const className = classnames(\n styles.annotation,\n styles[annotation.type],\n );\n\n return (\n <div\n className={className}\n style={style}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n title={annotation.label}\n data-annotation-id={annotation.id}\n />\n );\n}\n\nexport function PdfViewerAnnotationLayer({\n annotations,\n pageHeight,\n scale,\n onAnnotationClick,\n}: PdfViewerAnnotationLayerProps): React.ReactElement {\n return (\n <div className={styles.annotationLayer}>\n {annotations.map((annotation) => (\n <AnnotationItem\n key={annotation.id}\n annotation={annotation}\n pageHeight={pageHeight}\n scale={scale}\n onClick={onAnnotationClick}\n />\n ))}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,OAAOC,MAAM,MAAM,uCAAuC;AAiB1D,SAASC,cAAcA,CAAC;EACtBC,UAAU;EACVC,UAAU;EACVC,KAAK;EACLC;AACmB,CAAC,EAAsB;EAC1C,MAAMC,WAAW,GAAGR,WAAW,CAAC,MAAM;IACpCO,OAAO,GAAGH,UAAU,CAAC;EACvB,CAAC,EAAE,CAACG,OAAO,EAAEH,UAAU,CAAC,CAAC;EAEzB,MAAMK,aAAa,GAAGT,WAAW,CAC9BU,CAAsB,IAAK;IAC1B,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MACrBD,CAAC,CAACE,cAAc,CAAC,CAAC;MAClBL,OAAO,GAAGH,UAAU,CAAC;IACvB;EACF,CAAC,EACD,CAACG,OAAO,EAAEH,UAAU,CACtB,CAAC;;EAED;EACA,MAAMS,KAAK,GAAGZ,OAAO,CACnB,OAAO;IACLa,IAAI,EAAEV,UAAU,CAACW,IAAI,CAACC,CAAC,GAAGV,KAAK;IAC/BW,GAAG,EAAE,CAACZ,UAAU,GAAGD,UAAU,CAACW,IAAI,CAACG,CAAC,GAAGd,UAAU,CAACW,IAAI,CAACI,MAAM,IAAIb,KAAK;IACtEc,KAAK,EAAEhB,UAAU,CAACW,IAAI,CAACK,KAAK,GAAGd,KAAK;IACpCa,MAAM,EAAEf,UAAU,CAACW,IAAI,CAACI,MAAM,GAAGb,KAAK;IACtC,IAAIF,UAAU,CAACiB,KAAK,IAAI,IAAI,GACxB;MACA,6BAA6B,EAAEjB,UAAU,CAACiB;IAC5C,CAAC,GACC,CAAC,CAAC;EACR,CAAC,CAAC,EACF,CAACjB,UAAU,EAAEC,UAAU,EAAEC,KAAK,CAChC,CAAC;EAED,MAAMgB,SAAS,GAAGxB,UAAU,CAC1BI,MAAM,CAACE,UAAU,EACjBF,MAAM,CAACE,UAAU,CAACmB,IAAI,CACxB,CAAC;EAED,oBACExB,KAAA,CAAAyB,aAAA;IACEF,SAAS,EAAEA,SAAU;IACrBT,KAAK,EAAEA,KAAM;IACbN,OAAO,EAAEC,WAAY;IACrBiB,SAAS,EAAEhB,aAAc;IACzBiB,IAAI,EAAC,QAAQ;IACbC,QAAQ,EAAE,CAAE;IACZC,KAAK,EAAExB,UAAU,CAACyB,KAAM;IACxB,sBAAoBzB,UAAU,CAAC0B;EAAG,CACnC,CAAC;AAEN;AAEA,OAAO,SAASC,wBAAwBA,CAAC;EACvCC,WAAW;EACX3B,UAAU;EACVC,KAAK;EACL2B;AAC6B,CAAC,EAAsB;EACpD,oBACElC,KAAA,CAAAyB,aAAA;IAAKF,SAAS,EAAEpB,MAAM,CAACgC;EAAgB,GACpCF,WAAW,CAACG,GAAG,CAAE/B,UAAU,iBAC1BL,KAAA,CAAAyB,aAAA,CAACrB,cAAc;IACbQ,GAAG,EAAEP,UAAU,CAAC0B,EAAG;IACnB1B,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEA,UAAW;IACvBC,KAAK,EAAEA,KAAM;IACbC,OAAO,EAAE0B;EAAkB,CAC5B,CACF,CACE,CAAC;AAEV","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerSearchBar.js","names":["ChevronDown","ChevronUp","Cross","React","useCallback","styles","PdfViewerSearchBar","query","totalMatches","currentMatchIndex","onQueryChange","onNext","onPrev","onClose","handleInputChange","e","target","value","handleKeyDown","key","preventDefault","shiftKey","matchDisplay","length","createElement","className","searchBar","autoFocus","searchInput","type","onChange","onKeyDown","placeholder","matchCount","navButton","onClick","disabled","size","closeButton"],"sources":["PdfViewerSearchBar.tsx"],"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\nimport { ChevronDown, ChevronUp, Cross } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSearchBar.module.css\";\n\ninterface PdfViewerSearchBarProps {\n query: string;\n totalMatches: number;\n currentMatchIndex: number;\n onQueryChange: (query: string) => void;\n onNext: () => void;\n onPrev: () => void;\n onClose: () => void;\n}\n\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose,\n}: PdfViewerSearchBarProps): React.ReactElement {\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onQueryChange(e.target.value);\n },\n [onQueryChange],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (e.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n },\n [onNext, onPrev, onClose],\n );\n\n const matchDisplay = totalMatches > 0\n ? `${currentMatchIndex + 1} of ${totalMatches}`\n : query.length > 0\n ? \"No results\"\n : \"\";\n\n return (\n <div className={styles.searchBar}>\n <input\n autoFocus\n className={styles.searchInput}\n type=\"text\"\n value={query}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"Find in document...\"\n aria-label=\"Search in PDF\"\n />\n {matchDisplay.length > 0 && (\n <span className={styles.matchCount}>{matchDisplay}</span>\n )}\n <button\n className={styles.navButton}\n onClick={onPrev}\n disabled={totalMatches === 0}\n aria-label=\"Previous match\"\n type=\"button\"\n >\n <ChevronUp size={16} />\n </button>\n <button\n className={styles.navButton}\n onClick={onNext}\n disabled={totalMatches === 0}\n aria-label=\"Next match\"\n type=\"button\"\n >\n <ChevronDown size={16} />\n </button>\n <button\n className={styles.closeButton}\n onClick={onClose}\n aria-label=\"Close search\"\n type=\"button\"\n >\n <Cross size={16} />\n </button>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,EAAEC,SAAS,EAAEC,KAAK,QAAQ,oBAAoB;AAClE,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,OAAOC,MAAM,MAAM,iCAAiC;AAYpD,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,KAAK;EACLC,YAAY;EACZC,iBAAiB;EACjBC,aAAa;EACbC,MAAM;EACNC,MAAM;EACNC;AACuB,CAAC,EAAsB;EAC9C,MAAMC,iBAAiB,GAAGV,WAAW,CAClCW,CAAsC,IAAK;IAC1CL,aAAa,CAACK,CAAC,CAACC,MAAM,CAACC,KAAK,CAAC;EAC/B,CAAC,EACD,CAACP,aAAa,CAChB,CAAC;EAED,MAAMQ,aAAa,GAAGd,WAAW,CAC9BW,CAAsB,IAAK;IAC1B,IAAIA,CAAC,CAACI,GAAG,KAAK,OAAO,EAAE;MACrBJ,CAAC,CAACK,cAAc,CAAC,CAAC;MAClB,IAAIL,CAAC,CAACM,QAAQ,EAAE;QACdT,MAAM,CAAC,CAAC;MACV,CAAC,MAAM;QACLD,MAAM,CAAC,CAAC;MACV;IACF,CAAC,MAAM,IAAII,CAAC,CAACI,GAAG,KAAK,QAAQ,EAAE;MAC7BJ,CAAC,CAACK,cAAc,CAAC,CAAC;MAClBP,OAAO,CAAC,CAAC;IACX;EACF,CAAC,EACD,CAACF,MAAM,EAAEC,MAAM,EAAEC,OAAO,CAC1B,CAAC;EAED,MAAMS,YAAY,GAAGd,YAAY,GAAG,CAAC,GACjC,GAAGC,iBAAiB,GAAG,CAAC,OAAOD,YAAY,EAAE,GAC7CD,KAAK,CAACgB,MAAM,GAAG,CAAC,GAChB,YAAY,GACZ,EAAE;EAEN,oBACEpB,KAAA,CAAAqB,aAAA;IAAKC,SAAS,EAAEpB,MAAM,CAACqB;EAAU,gBAC/BvB,KAAA,CAAAqB,aAAA;IACEG,SAAS;IACTF,SAAS,EAAEpB,MAAM,CAACuB,WAAY;IAC9BC,IAAI,EAAC,MAAM;IACXZ,KAAK,EAAEV,KAAM;IACbuB,QAAQ,EAAEhB,iBAAkB;IAC5BiB,SAAS,EAAEb,aAAc;IACzBc,WAAW,EAAC,qBAAqB;IACjC,cAAW;EAAe,CAC3B,CAAC,EACDV,YAAY,CAACC,MAAM,GAAG,CAAC,iBACtBpB,KAAA,CAAAqB,aAAA;IAAMC,SAAS,EAAEpB,MAAM,CAAC4B;EAAW,GAAEX,YAAmB,CACzD,eACDnB,KAAA,CAAAqB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAAC6B,SAAU;IAC5BC,OAAO,EAAEvB,MAAO;IAChBwB,QAAQ,EAAE5B,YAAY,KAAK,CAAE;IAC7B,cAAW,gBAAgB;IAC3BqB,IAAI,EAAC;EAAQ,gBAEb1B,KAAA,CAAAqB,aAAA,CAACvB,SAAS;IAACoC,IAAI,EAAE;EAAG,CAAE,CAChB,CAAC,eACTlC,KAAA,CAAAqB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAAC6B,SAAU;IAC5BC,OAAO,EAAExB,MAAO;IAChByB,QAAQ,EAAE5B,YAAY,KAAK,CAAE;IAC7B,cAAW,YAAY;IACvBqB,IAAI,EAAC;EAAQ,gBAEb1B,KAAA,CAAAqB,aAAA,CAACxB,WAAW;IAACqC,IAAI,EAAE;EAAG,CAAE,CAClB,CAAC,eACTlC,KAAA,CAAAqB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAACiC,WAAY;IAC9BH,OAAO,EAAEtB,OAAQ;IACjB,cAAW,cAAc;IACzBgB,IAAI,EAAC;EAAQ,gBAEb1B,KAAA,CAAAqB,aAAA,CAACtB,KAAK;IAACmC,IAAI,EAAE;EAAG,CAAE,CACZ,CACL,CAAC;AAEV","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerSidebar.js","names":["useVirtualizer","React","useEffect","useRef","DEFAULT_PAGE_HEIGHT","THUMBNAIL_GAP","THUMBNAIL_SCALE","styles","PdfViewerThumbnail","PdfViewerSidebar","document","numPages","currentPage","onPageClick","scrollContainerRef","estimatedItemHeight","Math","floor","virtualizer","count","getScrollElement","current","estimateSize","overscan","scrollToIndex","align","createElement","className","sidebar","sidebarHeader","ref","scrollContainer","thumbnailsContainer","style","height","getTotalSize","getVirtualItems","map","virtualItem","pageNumber","index","key","thumbnailWrapper","top","start","size","isActive","onClick"],"sources":["PdfViewerSidebar.tsx"],"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\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport React, { useEffect, useRef } from \"react\";\nimport {\n DEFAULT_PAGE_HEIGHT,\n THUMBNAIL_GAP,\n THUMBNAIL_SCALE,\n} from \"./constants.js\";\nimport styles from \"./PdfViewerSidebar.module.css\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\n\ninterface PdfViewerSidebarProps {\n document: PDFDocumentProxy;\n numPages: number;\n currentPage: number;\n onPageClick: (page: number) => void;\n}\n\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n}: PdfViewerSidebarProps): React.ReactElement {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const estimatedItemHeight = Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE)\n + THUMBNAIL_GAP + 20;\n\n const virtualizer = useVirtualizer({\n count: numPages,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => estimatedItemHeight,\n overscan: 2,\n });\n\n // Auto-scroll to keep the active thumbnail visible\n useEffect(function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, { align: \"auto\" });\n }, [currentPage, virtualizer]);\n\n return (\n <div className={styles.sidebar}>\n <div className={styles.sidebarHeader}>Pages</div>\n <div ref={scrollContainerRef} className={styles.scrollContainer}>\n <div\n className={styles.thumbnailsContainer}\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const pageNumber = virtualItem.index + 1;\n return (\n <div\n key={virtualItem.key}\n className={styles.thumbnailWrapper}\n style={{\n top: virtualItem.start,\n height: virtualItem.size,\n }}\n >\n <div>\n <PdfViewerThumbnail\n document={document}\n pageNumber={pageNumber}\n isActive={pageNumber === currentPage}\n onClick={() => onPageClick(pageNumber)}\n />\n <div className={styles.pageNumber}>{pageNumber}</div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,yBAAyB;AAExD,OAAOC,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SACEC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,QACV,gBAAgB;AACvB,OAAOC,MAAM,MAAM,+BAA+B;AAClD,SAASC,kBAAkB,QAAQ,yBAAyB;AAS5D,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC;AACqB,CAAC,EAAsB;EAC5C,MAAMC,kBAAkB,GAAGX,MAAM,CAAiB,IAAI,CAAC;EACvD,MAAMY,mBAAmB,GAAGC,IAAI,CAACC,KAAK,CAACb,mBAAmB,GAAGE,eAAe,CAAC,GACzED,aAAa,GAAG,EAAE;EAEtB,MAAMa,WAAW,GAAGlB,cAAc,CAAC;IACjCmB,KAAK,EAAER,QAAQ;IACfS,gBAAgB,EAAEA,CAAA,KAAMN,kBAAkB,CAACO,OAAO;IAClDC,YAAY,EAAEA,CAAA,KAAMP,mBAAmB;IACvCQ,QAAQ,EAAE;EACZ,CAAC,CAAC;;EAEF;EACArB,SAAS,CAAC,YAA+B;IACvCgB,WAAW,CAACM,aAAa,CAACZ,WAAW,GAAG,CAAC,EAAE;MAAEa,KAAK,EAAE;IAAO,CAAC,CAAC;EAC/D,CAAC,EAAE,CAACb,WAAW,EAAEM,WAAW,CAAC,CAAC;EAE9B,oBACEjB,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAEpB,MAAM,CAACqB;EAAQ,gBAC7B3B,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAEpB,MAAM,CAACsB;EAAc,GAAC,OAAU,CAAC,eACjD5B,KAAA,CAAAyB,aAAA;IAAKI,GAAG,EAAEhB,kBAAmB;IAACa,SAAS,EAAEpB,MAAM,CAACwB;EAAgB,gBAC9D9B,KAAA,CAAAyB,aAAA;IACEC,SAAS,EAAEpB,MAAM,CAACyB,mBAAoB;IACtCC,KAAK,EAAE;MAAEC,MAAM,EAAEhB,WAAW,CAACiB,YAAY,CAAC;IAAE;EAAE,GAE7CjB,WAAW,CAACkB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,WAAW,IAAK;IAClD,MAAMC,UAAU,GAAGD,WAAW,CAACE,KAAK,GAAG,CAAC;IACxC,oBACEvC,KAAA,CAAAyB,aAAA;MACEe,GAAG,EAAEH,WAAW,CAACG,GAAI;MACrBd,SAAS,EAAEpB,MAAM,CAACmC,gBAAiB;MACnCT,KAAK,EAAE;QACLU,GAAG,EAAEL,WAAW,CAACM,KAAK;QACtBV,MAAM,EAAEI,WAAW,CAACO;MACtB;IAAE,gBAEF5C,KAAA,CAAAyB,aAAA,2BACEzB,KAAA,CAAAyB,aAAA,CAAClB,kBAAkB;MACjBE,QAAQ,EAAEA,QAAS;MACnB6B,UAAU,EAAEA,UAAW;MACvBO,QAAQ,EAAEP,UAAU,KAAK3B,WAAY;MACrCmC,OAAO,EAAEA,CAAA,KAAMlC,WAAW,CAAC0B,UAAU;IAAE,CACxC,CAAC,eACFtC,KAAA,CAAAyB,aAAA;MAAKC,SAAS,EAAEpB,MAAM,CAACgC;IAAW,GAAEA,UAAgB,CACjD,CACF,CAAC;EAEV,CAAC,CACE,CACF,CACF,CAAC;AAEV","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerThumbnail.js","names":["classnames","React","useCallback","useEffect","useRef","useState","DEVICE_PIXEL_RATIO","THUMBNAIL_SCALE","styles","PdfViewerThumbnail","document","pageNumber","isActive","onClick","canvasRef","renderTaskRef","dimensions","setDimensions","undefined","cancelled","getPage","then","page","current","viewport","getViewport","scale","canvas","context","getContext","width","Math","floor","height","style","cancel","setTransform","renderTask","render","canvasContext","promise","catch","err","Error","message","includes","handleKeyDown","e","key","preventDefault","containerClassName","thumbnailContainer","active","createElement","className","onKeyDown","role","tabIndex","ref"],"sources":["PdfViewerThumbnail.tsx"],"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\nimport classnames from \"classnames\";\nimport type { PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"./constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\n\ninterface PdfViewerThumbnailProps {\n document: PDFDocumentProxy;\n pageNumber: number;\n isActive: boolean;\n onClick: () => void;\n}\n\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick,\n}: PdfViewerThumbnailProps): React.ReactElement {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const renderTaskRef = useRef<ReturnType<PDFPageProxy[\"render\"]> | null>(null);\n const [dimensions, setDimensions] = useState<\n { width: number; height: number } | undefined\n >(undefined);\n\n useEffect(() => {\n let cancelled = false;\n\n void document.getPage(pageNumber).then((page) => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n\n const viewport = page.getViewport({ scale: THUMBNAIL_SCALE });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\n\n canvas.width = Math.floor(viewport.width * DEVICE_PIXEL_RATIO);\n canvas.height = Math.floor(viewport.height * DEVICE_PIXEL_RATIO);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height),\n });\n\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n\n context.setTransform(\n DEVICE_PIXEL_RATIO,\n 0,\n 0,\n DEVICE_PIXEL_RATIO,\n 0,\n 0,\n );\n\n const renderTask = page.render({\n canvasContext: context,\n viewport,\n });\n renderTaskRef.current = renderTask;\n\n void renderTask.promise.catch((err: unknown) => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\n });\n\n return () => {\n cancelled = true;\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n renderTaskRef.current = null;\n }\n };\n }, [document, pageNumber]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n },\n [onClick],\n );\n\n const containerClassName = classnames(\n styles.thumbnailContainer,\n isActive && styles.active,\n );\n\n return (\n <div\n className={containerClassName}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-label={`Page ${pageNumber}`}\n aria-current={isActive ? \"page\" : undefined}\n style={dimensions != null\n ? { width: dimensions.width, height: dimensions.height }\n : undefined}\n >\n <canvas ref={canvasRef} className={styles.canvas} />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfViewerToolbar.js","names":["Input","ChevronLeft","ChevronRight","Download","Menu","Minus","Plus","Search","React","useCallback","useEffect","useState","MAX_SCALE","MIN_SCALE","SCALE_STEP","styles","PdfViewerToolbar","currentPage","numPages","scale","sidebarOpen","onPageChange","onScaleChange","onSearchOpen","onSidebarToggle","onDownload","pageInputValue","setPageInputValue","String","handlePrevPage","newPage","handleNextPage","handlePageInputChange","e","target","value","handlePageInputKeyDown","key","page","parseInt","isNaN","handlePageInputBlur","handleZoomIn","newScale","Math","min","handleZoomOut","max","scalePercent","round","createElement","className","toolbar","toolbarButton","onClick","title","type","size","separator","toolbarGroup","disabled","pageInput","onChange","onKeyDown","onBlur","pageCount","scaleDisplay"],"sources":["PdfViewerToolbar.tsx"],"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\nimport { Input } from \"@base-ui/react/input\";\nimport {\n ChevronLeft,\n ChevronRight,\n Download,\n Menu,\n Minus,\n Plus,\n Search,\n} from \"@blueprintjs/icons\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"./constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\n\ninterface PdfViewerToolbarProps {\n currentPage: number;\n numPages: number;\n scale: number;\n sidebarOpen: boolean;\n onPageChange: (page: number) => void;\n onScaleChange: (scale: number) => void;\n onSearchOpen: () => void;\n onSidebarToggle: () => void;\n onDownload: () => void;\n}\n\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n sidebarOpen,\n onPageChange,\n onScaleChange,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n}: PdfViewerToolbarProps): React.ReactElement {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(function syncPageInput() {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n\n const handlePrevPage = useCallback(() => {\n if (currentPage > 1) {\n const newPage = currentPage - 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, onPageChange]);\n\n const handleNextPage = useCallback(() => {\n if (currentPage < numPages) {\n const newPage = currentPage + 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, numPages, onPageChange]);\n\n const handlePageInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setPageInputValue(e.target.value);\n },\n [],\n );\n\n const handlePageInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n const page = parseInt(pageInputValue, 10);\n if (!isNaN(page) && page >= 1 && page <= numPages) {\n onPageChange(page);\n } else {\n setPageInputValue(String(currentPage));\n }\n }\n },\n [pageInputValue, numPages, onPageChange, currentPage],\n );\n\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n\n const handleZoomIn = useCallback(() => {\n const newScale = Math.min(scale + SCALE_STEP, MAX_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n\n const handleZoomOut = useCallback(() => {\n const newScale = Math.max(scale - SCALE_STEP, MIN_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n\n const scalePercent = `${Math.round(scale * 100)}%`;\n\n return (\n <div className={styles.toolbar}>\n <button\n className={styles.toolbarButton}\n onClick={onSidebarToggle}\n aria-label={sidebarOpen ? \"Close sidebar\" : \"Open sidebar\"}\n title={sidebarOpen ? \"Close sidebar\" : \"Open sidebar\"}\n aria-pressed={sidebarOpen}\n type=\"button\"\n >\n <Menu size={16} />\n </button>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <button\n className={styles.toolbarButton}\n onClick={handlePrevPage}\n disabled={currentPage <= 1}\n aria-label=\"Previous page\"\n title=\"Previous page\"\n type=\"button\"\n >\n <ChevronLeft size={16} />\n </button>\n <Input\n className={styles.pageInput}\n type=\"text\"\n value={pageInputValue}\n onChange={handlePageInputChange}\n onKeyDown={handlePageInputKeyDown}\n onBlur={handlePageInputBlur}\n aria-label=\"Page number\"\n />\n <span className={styles.pageCount}>of {numPages}</span>\n <button\n className={styles.toolbarButton}\n onClick={handleNextPage}\n disabled={currentPage >= numPages}\n aria-label=\"Next page\"\n title=\"Next page\"\n type=\"button\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <button\n className={styles.toolbarButton}\n onClick={handleZoomOut}\n disabled={scale <= MIN_SCALE}\n aria-label=\"Zoom out\"\n title=\"Zoom out\"\n type=\"button\"\n >\n <Minus size={16} />\n </button>\n <span className={styles.scaleDisplay}>{scalePercent}</span>\n <button\n className={styles.toolbarButton}\n onClick={handleZoomIn}\n disabled={scale >= MAX_SCALE}\n aria-label=\"Zoom in\"\n title=\"Zoom in\"\n type=\"button\"\n >\n <Plus size={16} />\n </button>\n </div>\n\n <div className={styles.separator} />\n\n <button\n className={styles.toolbarButton}\n onClick={onSearchOpen}\n aria-label=\"Search\"\n title=\"Search\"\n type=\"button\"\n >\n <Search size={16} />\n </button>\n\n <div className={styles.separator} />\n\n <button\n className={styles.toolbarButton}\n onClick={onDownload}\n aria-label=\"Download\"\n title=\"Download\"\n type=\"button\"\n >\n <Download size={16} />\n </button>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,17 +0,0 @@
1
- /**
2
- * Date utilities for HTML date inputs.
3
- *
4
- * These functions operate on local time by design. HTML <input type="date">
5
- * returns and expects values in "YYYY-MM-DD" format without timezone info.
6
- *
7
- * `parseDateFromInput` appends "T00:00:00" (no "Z") so the date is parsed as
8
- * local midnight rather than UTC midnight. Without this, negative-offset
9
- * timezones (e.g. US timezones) would shift "2024-01-15" to Jan 14 locally.
10
- *
11
- * Consumers providing dates from an API (typically UTC) should handle
12
- * UTC-to-local conversion before passing values to these functions.
13
- */
14
- export declare function formatDateForInput(date: Date | undefined): string;
15
- export declare function parseDateFromInput(value: string): Date | undefined;
16
- export declare function formatDateForDisplay(date: Date | undefined, fallback?: string): string;
17
- export declare function parseDateFromISO(value: string | Date | undefined | null): Date | undefined;
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;AA8BA,OAAO,iBAAS,mBAAmBA,MAAM;AAQzC,OAAO,iBAAS,mBAAmBC,gBAAgB;AAMnD,OAAO,iBAAS,qBACdD,MAAM,kBACNE;AAUF,OAAO,iBAAS,iBACdC,gBAAgB,0BACf","names":["date: Date | undefined","value: string","fallback: string","value: string | Date | undefined | null"],"sources":["../../../../../src/filter-list/base/inputs/dateUtils.ts"],"version":3,"file":"dateUtils.d.ts"}
@@ -1 +0,0 @@
1
- {"mappings":"AAiBA,OAAO,WAAqC,OAAQ;AAEpD,cAAc,qBAAqB,YAAa;UAEtC,8BAA8B;CACtC,aAAa;CACb;CACA;CACA,qBAAqBA,YAAY;AAClC;AAgED,OAAO,iBAAS,yBAAyB,EACvC,aACA,YACA,OACA,mBAC8B,EAA7B,gCAAgC,MAAM","names":["annotation: PdfAnnotation"],"sources":["../../../src/pdf-viewer/PdfViewerAnnotationLayer.tsx"],"version":3,"file":"PdfViewerAnnotationLayer.d.ts"}
@@ -1 +0,0 @@
1
- {"mappings":"AAiBA,OAAO,WAA4B,OAAQ;UAGjC,wBAAwB;CAChC;CACA;CACA;CACA,gBAAgBA;CAChB;CACA;CACA;AACD;AAED,OAAO,iBAAS,mBAAmB,EACjC,OACA,cACA,mBACA,eACA,QACA,QACA,SACwB,EAAvB,0BAA0B,MAAM","names":["query: string"],"sources":["../../../src/pdf-viewer/PdfViewerSearchBar.tsx"],"version":3,"file":"PdfViewerSearchBar.d.ts"}
@@ -1,10 +0,0 @@
1
- import type { PDFDocumentProxy } from "pdfjs-dist";
2
- import React from "react";
3
- interface PdfViewerSidebarProps {
4
- document: PDFDocumentProxy;
5
- numPages: number;
6
- currentPage: number;
7
- onPageClick: (page: number) => void;
8
- }
9
- export declare function PdfViewerSidebar({ document, numPages, currentPage, onPageClick }: PdfViewerSidebarProps): React.ReactElement;
10
- export {};
@@ -1 +0,0 @@
1
- {"mappings":"AAiBA,cAAc,wBAAwB,YAAa;AACnD,OAAO,WAAkC,OAAQ;UASvC,sBAAsB;CAC9B,UAAU;CACV;CACA;CACA,cAAcA;AACf;AAED,OAAO,iBAAS,iBAAiB,EAC/B,UACA,UACA,aACA,aACsB,EAArB,wBAAwB,MAAM","names":["page: number"],"sources":["../../../src/pdf-viewer/PdfViewerSidebar.tsx"],"version":3,"file":"PdfViewerSidebar.d.ts"}
@@ -1 +0,0 @@
1
- {"mappings":"AA0BA,OAAO,WAAiD,OAAQ;UAItD,sBAAsB;CAC9B;CACA;CACA;CACA;CACA,eAAeA;CACf,gBAAgBC;CAChB;CACA;CACA;AACD;AAED,OAAO,iBAAS,iBAAiB,EAC/B,aACA,UACA,OACA,aACA,cACA,eACA,cACA,iBACA,YACsB,EAArB,wBAAwB,MAAM","names":["page: number","scale: number"],"sources":["../../../src/pdf-viewer/PdfViewerToolbar.tsx"],"version":3,"file":"PdfViewerToolbar.d.ts"}