@osdk/react-components 0.34.0 → 0.34.1-main-e39a72892d538f3130e2cd51cee05d83d11fa493

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 (987) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/browser/action-form/ActionForm.js.map +1 -1
  3. package/build/browser/action-form/ActionFormApi.js.map +1 -1
  4. package/build/browser/action-form/BaseForm.js +3 -3
  5. package/build/browser/action-form/BaseForm.js.map +1 -1
  6. package/build/browser/action-form/FormField.js.map +1 -1
  7. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  8. package/build/browser/action-form/FormHeader.js.map +1 -1
  9. package/build/browser/action-form/FormSection.js.map +1 -1
  10. package/build/browser/action-form/fields/AsyncDropdownField.js +1 -1
  11. package/build/browser/action-form/fields/AsyncDropdownField.js.map +1 -1
  12. package/build/browser/action-form/fields/CustomField.js.map +1 -1
  13. package/build/browser/action-form/fields/DropdownField.js +2 -2
  14. package/build/browser/action-form/fields/DropdownField.js.map +1 -1
  15. package/build/browser/action-form/fields/FieldBridge.js.map +1 -1
  16. package/build/browser/action-form/fields/FilePickerField.js.map +1 -1
  17. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  18. package/build/browser/action-form/fields/NumberInputField.js.map +1 -1
  19. package/build/browser/action-form/fields/ObjectSelectField.js.map +1 -1
  20. package/build/browser/action-form/fields/ObjectSetField.js.map +1 -1
  21. package/build/browser/action-form/fields/RadioButtonsField.js.map +1 -1
  22. package/build/browser/action-form/fields/SwitchField.js.map +1 -1
  23. package/build/browser/action-form/fields/TextAreaField.js.map +1 -1
  24. package/build/browser/action-form/fields/TextInputField.js.map +1 -1
  25. package/build/browser/action-form/utils/coerceFieldValue.js.map +1 -1
  26. package/build/browser/action-form/utils/extractValidationRules.js.map +1 -1
  27. package/build/browser/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
  28. package/build/browser/aip-agent-chat/AipAgentChat.js.map +1 -1
  29. package/build/browser/aip-agent-chat/BaseAipAgentChat.js +1 -1
  30. package/build/browser/aip-agent-chat/BaseAipAgentChat.js.map +1 -1
  31. package/build/browser/aip-agent-chat/components/AipAgentChatComposer.js.map +1 -1
  32. package/build/browser/aip-agent-chat/components/AipAgentChatLoader.js.map +1 -1
  33. package/build/browser/aip-agent-chat/components/AipAgentChatMessage.js.map +1 -1
  34. package/build/browser/aip-agent-chat/components/AipAgentChatMessageList.js +1 -1
  35. package/build/browser/aip-agent-chat/components/AipAgentChatMessageList.js.map +1 -1
  36. package/build/browser/aip-agent-chat/components/AipAgentChatModelPicker.js.map +1 -1
  37. package/build/browser/aip-agent-chat/hooks/useChatAutoScroll.js.map +1 -1
  38. package/build/browser/base-components/action-button/ActionButton.js.map +1 -1
  39. package/build/browser/base-components/callout/Callout.js.map +1 -1
  40. package/build/browser/base-components/checkbox/Checkbox.js.map +1 -1
  41. package/build/browser/base-components/combobox/Combobox.js.map +1 -1
  42. package/build/browser/base-components/dialog/Dialog.js.map +1 -1
  43. package/build/browser/base-components/draggable-list/DraggableList.js +1 -1
  44. package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
  45. package/build/browser/base-components/icon/BlueprintIcon.js.map +1 -1
  46. package/build/browser/base-components/search-bar/SearchBar.js.map +1 -1
  47. package/build/browser/base-components/searchable-menu/SearchableMenu.js.map +1 -1
  48. package/build/browser/base-components/select/Select.js.map +1 -1
  49. package/build/browser/base-components/skeleton/SkeletonBar.js.map +1 -1
  50. package/build/browser/base-components/switch/Switch.js.map +1 -1
  51. package/build/browser/base-components/tooltip/Tooltip.js.map +1 -1
  52. package/build/browser/cbac-picker/CbacBanner.js.map +1 -1
  53. package/build/browser/cbac-picker/CbacBannerPopover.js.map +1 -1
  54. package/build/browser/cbac-picker/CbacPicker.js.map +1 -1
  55. package/build/browser/cbac-picker/CbacPickerDialog.js.map +1 -1
  56. package/build/browser/cbac-picker/base/BaseCbacBanner.js.map +1 -1
  57. package/build/browser/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -1
  58. package/build/browser/cbac-picker/base/BaseCbacPicker.js +1 -1
  59. package/build/browser/cbac-picker/base/BaseCbacPicker.js.map +1 -1
  60. package/build/browser/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -1
  61. package/build/browser/cbac-picker/base/CategoryMarkingGroup.js +1 -1
  62. package/build/browser/cbac-picker/base/CategoryMarkingGroup.js.map +1 -1
  63. package/build/browser/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -1
  64. package/build/browser/cbac-picker/base/InfoBanner.js.map +1 -1
  65. package/build/browser/cbac-picker/base/MarkingButton.js +1 -1
  66. package/build/browser/cbac-picker/base/MarkingButton.js.map +1 -1
  67. package/build/browser/cbac-picker/base/MaxClassificationField.js.map +1 -1
  68. package/build/browser/cbac-picker/base/OverflowButton.js +1 -1
  69. package/build/browser/cbac-picker/base/OverflowButton.js.map +1 -1
  70. package/build/browser/cbac-picker/base/OverflowItem.js +1 -1
  71. package/build/browser/cbac-picker/base/OverflowItem.js.map +1 -1
  72. package/build/browser/cbac-picker/base/ValidationWarning.js.map +1 -1
  73. package/build/browser/cbac-picker/base/selectionStateHelpers.js.map +1 -1
  74. package/build/browser/cbac-picker/useCbacPickerState.js.map +1 -1
  75. package/build/browser/cbac-picker/useCbacSelection.js.map +1 -1
  76. package/build/browser/cbac-picker/useConstraintCallout.js.map +1 -1
  77. package/build/browser/cbac-picker/utils/cbacPickerUtils.js.map +1 -1
  78. package/build/browser/cbac-picker/utils/errorMessages.js.map +1 -1
  79. package/build/browser/cbac-picker/utils/selectionLogic.js.map +1 -1
  80. package/build/browser/cbac-picker/utils/validationMessages.js.map +1 -1
  81. package/build/browser/document-viewer/DocumentViewer.js +1 -1
  82. package/build/browser/document-viewer/DocumentViewer.js.map +1 -1
  83. package/build/browser/document-viewer/DocumentViewerApi.js.map +1 -1
  84. package/build/browser/document-viewer/TiffDocumentViewer.js +1 -1
  85. package/build/browser/document-viewer/TiffDocumentViewer.js.map +1 -1
  86. package/build/browser/document-viewer/hooks/useTiffToPdf.js.map +1 -1
  87. package/build/browser/email-viewer/BaseEmailViewer.js.map +1 -1
  88. package/build/browser/email-viewer/EmailViewer.js +1 -1
  89. package/build/browser/email-viewer/EmailViewer.js.map +1 -1
  90. package/build/browser/email-viewer/EmailViewerApi.js.map +1 -1
  91. package/build/browser/email-viewer/parseEmail.js.map +1 -1
  92. package/build/browser/excel-viewer/BaseExcelViewer.js +1 -0
  93. package/build/browser/excel-viewer/BaseExcelViewer.js.map +1 -1
  94. package/build/browser/excel-viewer/ExcelViewer.js +1 -1
  95. package/build/browser/excel-viewer/ExcelViewer.js.map +1 -1
  96. package/build/browser/excel-viewer/ExcelViewerApi.js.map +1 -1
  97. package/build/browser/excel-viewer/parseSpreadsheet.js.map +1 -1
  98. package/build/browser/filter-list/FilterInput.js.map +1 -1
  99. package/build/browser/filter-list/FilterList.js.map +1 -1
  100. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  101. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  102. package/build/browser/filter-list/base/AddFilterPopover.js +1 -1
  103. package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -1
  104. package/build/browser/filter-list/base/BaseFilterList.js +1 -1
  105. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
  106. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
  107. package/build/browser/filter-list/base/ExcludeDropdown.js +1 -1
  108. package/build/browser/filter-list/base/ExcludeDropdown.js.map +1 -1
  109. package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -1
  110. package/build/browser/filter-list/base/FilterListContent.js +1 -1
  111. package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
  112. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
  113. package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
  114. package/build/browser/filter-list/base/FilterPopover.js.map +1 -1
  115. package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
  116. package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
  117. package/build/browser/filter-list/base/inputs/DateRangeHistogramInput.js.map +1 -1
  118. package/build/browser/filter-list/base/inputs/EmptyStringLabel.js +1 -0
  119. package/build/browser/filter-list/base/inputs/EmptyStringLabel.js.map +1 -1
  120. package/build/browser/filter-list/base/inputs/HistogramTooltip.js.map +1 -1
  121. package/build/browser/filter-list/base/inputs/ListogramInput.js +2 -2
  122. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  123. package/build/browser/filter-list/base/inputs/ListogramSkeleton.js.map +1 -1
  124. package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -1
  125. package/build/browser/filter-list/base/inputs/MultiSelectDropdownLayout.js.map +1 -1
  126. package/build/browser/filter-list/base/inputs/MultiSelectInlineLayout.js.map +1 -1
  127. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +2 -2
  128. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  129. package/build/browser/filter-list/base/inputs/NoValueLabel.js.map +1 -1
  130. package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  131. package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  132. package/build/browser/filter-list/base/inputs/OptionLabel.js.map +1 -1
  133. package/build/browser/filter-list/base/inputs/RangeInput.js +1 -1
  134. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
  135. package/build/browser/filter-list/base/inputs/SelectInputSkeleton.js.map +1 -1
  136. package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -1
  137. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +1 -1
  138. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  139. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  140. package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
  141. package/build/browser/filter-list/base/inputs/ToggleInput.js.map +1 -1
  142. package/build/browser/filter-list/base/inputs/comboboxFilter.js.map +1 -1
  143. package/build/browser/filter-list/base/inputs/createDateHistogramBuckets.js.map +1 -1
  144. package/build/browser/filter-list/base/inputs/createHistogramBuckets.js.map +1 -1
  145. package/build/browser/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
  146. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  147. package/build/browser/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -1
  148. package/build/browser/filter-list/hooks/useFilterVisibility.js.map +1 -1
  149. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  150. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
  151. package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
  152. package/build/browser/filter-list/inputs/LinkedPropertyInput.js +1 -1
  153. package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
  154. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  155. package/build/browser/filter-list/inputs/MultiDateFilterInput.js.map +1 -1
  156. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  157. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
  158. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  159. package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
  160. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  161. package/build/browser/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
  162. package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
  163. package/build/browser/filter-list/inputs/TimelineFilterInput.js.map +1 -1
  164. package/build/browser/filter-list/inputs/ToggleFilterInput.js.map +1 -1
  165. package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -1
  166. package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -1
  167. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  168. package/build/browser/filter-list/types/StaticValuesTypes.js.map +1 -1
  169. package/build/browser/filter-list/utils/aggregationHelpers.js.map +1 -1
  170. package/build/browser/filter-list/utils/coerceFilterValue.js.map +1 -1
  171. package/build/browser/filter-list/utils/emptyFilterDisplayState.js.map +1 -1
  172. package/build/browser/filter-list/utils/filterStateSerialization.js.map +1 -1
  173. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  174. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  175. package/build/browser/filter-list/utils/getFilterKey.js.map +1 -1
  176. package/build/browser/filter-list/utils/getFilterLabel.js.map +1 -1
  177. package/build/browser/filter-list/utils/narrowObjectSet.js.map +1 -1
  178. package/build/browser/filter-list/utils/summarizeFilterValue.js.map +1 -1
  179. package/build/browser/images/image-viewer/BaseImageViewer.js.map +1 -1
  180. package/build/browser/images/image-viewer/ImageViewer.js.map +1 -1
  181. package/build/browser/images/image-viewer/ImageViewerApi.js.map +1 -1
  182. package/build/browser/images/tiff-renderer/TiffRenderer.js +1 -0
  183. package/build/browser/images/tiff-renderer/TiffRenderer.js.map +1 -1
  184. package/build/browser/images/tiff-renderer/TiffViewerMedia.js.map +1 -1
  185. package/build/browser/markdown-renderer/MarkdownRenderer.js.map +1 -1
  186. package/build/browser/markdown-renderer/MarkdownViewerMedia.js.map +1 -1
  187. package/build/browser/object-table/CellContextMenu.js.map +1 -1
  188. package/build/browser/object-table/ColumnConfigDialog.js.map +1 -1
  189. package/build/browser/object-table/DefaultCellRenderer.js +4 -3
  190. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  191. package/build/browser/object-table/EditableCell.js +1 -1
  192. package/build/browser/object-table/EditableCell.js.map +1 -1
  193. package/build/browser/object-table/LoadingCell.js.map +1 -1
  194. package/build/browser/object-table/LoadingRow.js +1 -1
  195. package/build/browser/object-table/LoadingRow.js.map +1 -1
  196. package/build/browser/object-table/LoadingStateTable.js +3 -3
  197. package/build/browser/object-table/LoadingStateTable.js.map +1 -1
  198. package/build/browser/object-table/MultiColumnSortDialog.js +1 -1
  199. package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
  200. package/build/browser/object-table/NonIdealState.js.map +1 -1
  201. package/build/browser/object-table/ObjectTable.js.map +1 -1
  202. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  203. package/build/browser/object-table/SelectionCells.js.map +1 -1
  204. package/build/browser/object-table/SortableItemsList.js.map +1 -1
  205. package/build/browser/object-table/Table.js +1 -1
  206. package/build/browser/object-table/Table.js.map +1 -1
  207. package/build/browser/object-table/TableBody.js +1 -1
  208. package/build/browser/object-table/TableBody.js.map +1 -1
  209. package/build/browser/object-table/TableCell.js +1 -1
  210. package/build/browser/object-table/TableCell.js.map +1 -1
  211. package/build/browser/object-table/TableEditContainer.js.map +1 -1
  212. package/build/browser/object-table/TableHeader.js +1 -1
  213. package/build/browser/object-table/TableHeader.js.map +1 -1
  214. package/build/browser/object-table/TableHeaderContent.js.map +1 -1
  215. package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
  216. package/build/browser/object-table/TableRow.js.map +1 -1
  217. package/build/browser/object-table/components/AsyncValueCell.js.map +1 -1
  218. package/build/browser/object-table/components/CbacMarkingCell.js.map +1 -1
  219. package/build/browser/object-table/components/DatePickerCellField.js +1 -1
  220. package/build/browser/object-table/components/DatePickerCellField.js.map +1 -1
  221. package/build/browser/object-table/components/DropdownCellField.js +1 -1
  222. package/build/browser/object-table/components/DropdownCellField.js.map +1 -1
  223. package/build/browser/object-table/components/MandatoryMarkingCell.js.map +1 -1
  224. package/build/browser/object-table/components/ReadonlyDisplayCell.js.map +1 -1
  225. package/build/browser/object-table/components/TextInputCellField.js.map +1 -1
  226. package/build/browser/object-table/hooks/useCellContextMenu.js.map +1 -1
  227. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  228. package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -1
  229. package/build/browser/object-table/hooks/useColumnResize.js.map +1 -1
  230. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
  231. package/build/browser/object-table/hooks/useEditableTable.js.map +1 -1
  232. package/build/browser/object-table/hooks/useFocusedRow.js.map +1 -1
  233. package/build/browser/object-table/hooks/useFunctionColumnsData.js.map +1 -1
  234. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  235. package/build/browser/object-table/hooks/useObjectTableSnapshot.js.map +1 -1
  236. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  237. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  238. package/build/browser/object-table/hooks/useTableSorting.js.map +1 -1
  239. package/build/browser/object-table/utils/AsyncCellData.js.map +1 -1
  240. package/build/browser/object-table/utils/PortalTracker.js.map +1 -1
  241. package/build/browser/object-table/utils/deriveSelectionObjectSet.js.map +1 -1
  242. package/build/browser/object-table/utils/editableUtils.js.map +1 -1
  243. package/build/browser/object-table/utils/functionColumns.js.map +1 -1
  244. package/build/browser/object-table/utils/getColumnPinningStyles.js.map +1 -1
  245. package/build/browser/object-table/utils/getRowId.js.map +1 -1
  246. package/build/browser/object-table/utils/objectTableSnapshot.js.map +1 -1
  247. package/build/browser/object-table/utils/shouldShowEditableCell.js.map +1 -1
  248. package/build/browser/object-table/utils/types.js.map +1 -1
  249. package/build/browser/pdf-viewer/PdfRenderer.js.map +1 -1
  250. package/build/browser/pdf-viewer/PdfViewer.js.map +1 -1
  251. package/build/browser/pdf-viewer/PdfViewerContext.js.map +1 -1
  252. package/build/browser/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -1
  253. package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
  254. package/build/browser/pdf-viewer/components/PdfViewerContent.js +1 -1
  255. package/build/browser/pdf-viewer/components/PdfViewerContent.js.map +1 -1
  256. package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.js +1 -1
  257. package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.js.map +1 -1
  258. package/build/browser/pdf-viewer/components/PdfViewerSearchBar.js.map +1 -1
  259. package/build/browser/pdf-viewer/components/PdfViewerSidebar.js +1 -1
  260. package/build/browser/pdf-viewer/components/PdfViewerSidebar.js.map +1 -1
  261. package/build/browser/pdf-viewer/components/PdfViewerSidebarHeader.js.map +1 -1
  262. package/build/browser/pdf-viewer/components/PdfViewerThumbnail.js.map +1 -1
  263. package/build/browser/pdf-viewer/components/PdfViewerToolbar.js.map +1 -1
  264. package/build/browser/pdf-viewer/constants.js.map +1 -1
  265. package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
  266. package/build/browser/pdf-viewer/hooks/usePdfAnnotationsByPage.js.map +1 -1
  267. package/build/browser/pdf-viewer/hooks/usePdfDocument.js.map +1 -1
  268. package/build/browser/pdf-viewer/hooks/usePdfFormFields.js.map +1 -1
  269. package/build/browser/pdf-viewer/hooks/usePdfHighlightMode.js.map +1 -1
  270. package/build/browser/pdf-viewer/hooks/usePdfOutline.js.map +1 -1
  271. package/build/browser/pdf-viewer/hooks/usePdfViewer.js.map +1 -1
  272. package/build/browser/pdf-viewer/hooks/usePdfViewerCore.js.map +1 -1
  273. package/build/browser/pdf-viewer/hooks/usePdfViewerSearch.js.map +1 -1
  274. package/build/browser/pdf-viewer/hooks/usePdfViewerState.js.map +1 -1
  275. package/build/browser/pdf-viewer/hooks/usePdfViewerSync.js.map +1 -1
  276. package/build/browser/public/experimental/action-form.js.map +1 -1
  277. package/build/browser/public/experimental/cbac-picker.js.map +1 -1
  278. package/build/browser/public/experimental/document-viewer.js.map +1 -1
  279. package/build/browser/public/experimental/email-viewer.js.map +1 -1
  280. package/build/browser/public/experimental/excel-viewer.js.map +1 -1
  281. package/build/browser/public/experimental/filter-list.js.map +1 -1
  282. package/build/browser/public/experimental/image-viewer.js.map +1 -1
  283. package/build/browser/public/experimental/markdown-renderer.js.map +1 -1
  284. package/build/browser/public/experimental/object-table.js.map +1 -1
  285. package/build/browser/public/experimental/pdf-viewer.js.map +1 -1
  286. package/build/browser/public/experimental/tiff-renderer.js.map +1 -1
  287. package/build/browser/public/experimental/video-viewer.js.map +1 -1
  288. package/build/browser/public/experimental/xml-viewer.js.map +1 -1
  289. package/build/browser/shared/ErrorBoundary.js.map +1 -1
  290. package/build/browser/shared/PortalContainerContext.js.map +1 -1
  291. package/build/browser/shared/PortalDismissLayer.js.map +1 -1
  292. package/build/browser/shared/calendar/DateCalendar.js +1 -1
  293. package/build/browser/shared/calendar/DateCalendar.js.map +1 -1
  294. package/build/browser/shared/calendar/DatePicker.js +2 -2
  295. package/build/browser/shared/calendar/DatePicker.js.map +1 -1
  296. package/build/browser/shared/calendar/DateRangeCalendar.js.map +1 -1
  297. package/build/browser/shared/calendar/DateRangePicker.js +2 -2
  298. package/build/browser/shared/calendar/DateRangePicker.js.map +1 -1
  299. package/build/browser/shared/calendar/LazyDateCalendar.js.map +1 -1
  300. package/build/browser/shared/calendar/LazyDateRangeCalendar.js.map +1 -1
  301. package/build/browser/shared/calendar/TimePicker.js.map +1 -1
  302. package/build/browser/shared/calendar/calendarShared.js.map +1 -1
  303. package/build/browser/shared/calendar/useDateEditState.js.map +1 -1
  304. package/build/browser/shared/dateUtils.js.map +1 -1
  305. package/build/browser/shared/hooks/useAsyncAction.js.map +1 -1
  306. package/build/browser/shared/hooks/useDebouncedValue.js.map +1 -1
  307. package/build/browser/shared/hooks/useEventCallback.js.map +1 -1
  308. package/build/browser/shared/hooks/useInfiniteScroll.js.map +1 -1
  309. package/build/browser/shared/hooks/useMediaContents.js.map +1 -1
  310. package/build/browser/theme/OsdkThemeContext.js.map +1 -1
  311. package/build/browser/theme/OsdkThemeProvider.js.map +1 -1
  312. package/build/browser/theme/useOsdkTheme.js.map +1 -1
  313. package/build/browser/theme/useSystemTheme.js.map +1 -1
  314. package/build/browser/util/UserAgent.js +1 -1
  315. package/build/browser/util/UserAgent.js.map +1 -1
  316. package/build/browser/util/withOsdkMetrics.js.map +1 -1
  317. package/build/browser/video-viewer/BaseVideoViewer.js.map +1 -1
  318. package/build/browser/video-viewer/VideoViewer.js.map +1 -1
  319. package/build/browser/video-viewer/VideoViewerApi.js.map +1 -1
  320. package/build/browser/xml-viewer/BaseXmlViewer.js.map +1 -1
  321. package/build/browser/xml-viewer/XmlViewer.js.map +1 -1
  322. package/build/browser/xml-viewer/XmlViewerApi.js.map +1 -1
  323. package/build/cjs/{DateCalendar-OCDSESQR.cjs → DateCalendar-FCZXD24P.cjs} +6 -6
  324. package/build/cjs/{DateCalendar-OCDSESQR.cjs.map → DateCalendar-FCZXD24P.cjs.map} +1 -1
  325. package/build/cjs/{DateCalendar-FTW3OIEP.css → DateCalendar-VBZGPZ5P.css} +39 -39
  326. package/build/cjs/DateCalendar-VBZGPZ5P.css.map +1 -0
  327. package/build/cjs/{DateRangeCalendar-I4JHCZAK.css → DateRangeCalendar-2M2I5Q3Z.css} +39 -39
  328. package/build/cjs/DateRangeCalendar-2M2I5Q3Z.css.map +1 -0
  329. package/build/cjs/DateRangeCalendar-XN2ZWAFK.cjs +12 -0
  330. package/build/cjs/{DateRangeCalendar-PHC3VPW3.cjs.map → DateRangeCalendar-XN2ZWAFK.cjs.map} +1 -1
  331. package/build/cjs/{chunk-DA22W6ZO.cjs → chunk-BE226IHU.cjs} +8 -8
  332. package/build/cjs/chunk-BE226IHU.cjs.map +1 -0
  333. package/build/cjs/{chunk-XWT6S3FL.cjs → chunk-BFRUHBWM.cjs} +12 -12
  334. package/build/cjs/{chunk-XWT6S3FL.cjs.map → chunk-BFRUHBWM.cjs.map} +1 -1
  335. package/build/cjs/chunk-CXMIRPQU.cjs +11 -0
  336. package/build/cjs/{chunk-PYOEFNQH.cjs.map → chunk-CXMIRPQU.cjs.map} +1 -1
  337. package/build/cjs/{chunk-CASYBF4M.cjs → chunk-ENE2RWIL.cjs} +25 -23
  338. package/build/cjs/chunk-ENE2RWIL.cjs.map +1 -0
  339. package/build/cjs/{chunk-IHVPE5CD.cjs → chunk-G6AOIKDH.cjs} +66 -66
  340. package/build/cjs/chunk-G6AOIKDH.cjs.map +1 -0
  341. package/build/cjs/{chunk-U74WOMFV.cjs → chunk-GJ2KJKWI.cjs} +17 -17
  342. package/build/cjs/{chunk-U74WOMFV.cjs.map → chunk-GJ2KJKWI.cjs.map} +1 -1
  343. package/build/cjs/chunk-HBU5ZLVP.cjs +11 -0
  344. package/build/cjs/{chunk-F4JELV7M.cjs.map → chunk-HBU5ZLVP.cjs.map} +1 -1
  345. package/build/cjs/{chunk-KNZXFIIH.cjs → chunk-HWWTZKC5.cjs} +24 -24
  346. package/build/cjs/{chunk-KNZXFIIH.cjs.map → chunk-HWWTZKC5.cjs.map} +1 -1
  347. package/build/cjs/{chunk-YTDSW5OV.cjs → chunk-IHTYJU2F.cjs} +29 -28
  348. package/build/cjs/chunk-IHTYJU2F.cjs.map +1 -0
  349. package/build/cjs/{chunk-5KTGUKJT.cjs → chunk-JCN6P3YW.cjs} +4 -4
  350. package/build/cjs/{chunk-5KTGUKJT.cjs.map → chunk-JCN6P3YW.cjs.map} +1 -1
  351. package/build/cjs/{chunk-XK4H7EHE.cjs → chunk-KQ4B2XDH.cjs} +5 -5
  352. package/build/cjs/chunk-KQ4B2XDH.cjs.map +1 -0
  353. package/build/cjs/{chunk-IISDOJPR.cjs → chunk-LB3IHFAB.cjs} +2 -2
  354. package/build/cjs/{chunk-IISDOJPR.cjs.map → chunk-LB3IHFAB.cjs.map} +1 -1
  355. package/build/cjs/{chunk-PUQBJVFU.cjs → chunk-MUDJXY6I.cjs} +22 -22
  356. package/build/cjs/{chunk-PUQBJVFU.cjs.map → chunk-MUDJXY6I.cjs.map} +1 -1
  357. package/build/cjs/chunk-NN5IHTYW.cjs +11 -0
  358. package/build/cjs/{chunk-W6DWGABB.cjs.map → chunk-NN5IHTYW.cjs.map} +1 -1
  359. package/build/cjs/{chunk-PKJFOG2Z.cjs → chunk-OISZU73V.cjs} +2 -2
  360. package/build/cjs/{chunk-PKJFOG2Z.cjs.map → chunk-OISZU73V.cjs.map} +1 -1
  361. package/build/cjs/chunk-PPVWOEYX.cjs +11 -0
  362. package/build/cjs/{chunk-VRTFHF24.cjs.map → chunk-PPVWOEYX.cjs.map} +1 -1
  363. package/build/cjs/{chunk-3SJODG6U.cjs → chunk-S2FQCZAB.cjs} +2 -2
  364. package/build/cjs/{chunk-3SJODG6U.cjs.map → chunk-S2FQCZAB.cjs.map} +1 -1
  365. package/build/cjs/{chunk-4VNWCW75.cjs → chunk-V3ZJM4N2.cjs} +16 -16
  366. package/build/cjs/chunk-V3ZJM4N2.cjs.map +1 -0
  367. package/build/cjs/{chunk-MMPVBH5H.cjs → chunk-VT7TNOMD.cjs} +24 -21
  368. package/build/cjs/chunk-VT7TNOMD.cjs.map +1 -0
  369. package/build/cjs/chunk-WKKN2KJU.cjs +11 -0
  370. package/build/cjs/{chunk-Q5H4KPSL.cjs.map → chunk-WKKN2KJU.cjs.map} +1 -1
  371. package/build/cjs/{chunk-WE4REEMW.cjs → chunk-YIBSLDUU.cjs} +3 -3
  372. package/build/cjs/chunk-YIBSLDUU.cjs.map +1 -0
  373. package/build/cjs/chunk-YK3PUDSD.cjs +11 -0
  374. package/build/cjs/{chunk-LGGRMQCE.cjs.map → chunk-YK3PUDSD.cjs.map} +1 -1
  375. package/build/cjs/public/experimental/action-form.cjs +8 -8
  376. package/build/cjs/public/experimental/action-form.css +98 -98
  377. package/build/cjs/public/experimental/action-form.css.map +1 -1
  378. package/build/cjs/public/experimental/aip-agent-chat.cjs +2 -0
  379. package/build/cjs/public/experimental/aip-agent-chat.cjs.map +1 -1
  380. package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
  381. package/build/cjs/public/experimental/cbac-picker.css +110 -110
  382. package/build/cjs/public/experimental/cbac-picker.css.map +1 -1
  383. package/build/cjs/public/experimental/document-viewer.cjs +8 -8
  384. package/build/cjs/public/experimental/document-viewer.css +72 -72
  385. package/build/cjs/public/experimental/document-viewer.css.map +1 -1
  386. package/build/cjs/public/experimental/email-viewer.cjs +5 -5
  387. package/build/cjs/public/experimental/excel-viewer.cjs +5 -5
  388. package/build/cjs/public/experimental/filter-list.cjs +18 -18
  389. package/build/cjs/public/experimental/filter-list.css +225 -225
  390. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  391. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  392. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  393. package/build/cjs/public/experimental/object-table.cjs +12 -12
  394. package/build/cjs/public/experimental/object-table.css +151 -151
  395. package/build/cjs/public/experimental/object-table.css.map +1 -1
  396. package/build/cjs/public/experimental/pdf-viewer.cjs +25 -25
  397. package/build/cjs/public/experimental/pdf-viewer.css +72 -72
  398. package/build/cjs/public/experimental/pdf-viewer.css.map +1 -1
  399. package/build/cjs/public/experimental/pdf-viewer.d.cts +1 -1
  400. package/build/cjs/public/experimental/tiff-renderer.cjs +5 -5
  401. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  402. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  403. package/build/cjs/public/experimental.cjs +86 -86
  404. package/build/cjs/public/experimental.css +632 -632
  405. package/build/cjs/public/experimental.css.map +1 -1
  406. package/build/esm/action-form/ActionForm.js.map +1 -1
  407. package/build/esm/action-form/ActionFormApi.js.map +1 -1
  408. package/build/esm/action-form/BaseForm.js +3 -3
  409. package/build/esm/action-form/BaseForm.js.map +1 -1
  410. package/build/esm/action-form/FormField.js.map +1 -1
  411. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  412. package/build/esm/action-form/FormHeader.js.map +1 -1
  413. package/build/esm/action-form/FormSection.js.map +1 -1
  414. package/build/esm/action-form/fields/AsyncDropdownField.js +1 -1
  415. package/build/esm/action-form/fields/AsyncDropdownField.js.map +1 -1
  416. package/build/esm/action-form/fields/CustomField.js.map +1 -1
  417. package/build/esm/action-form/fields/DropdownField.js +2 -2
  418. package/build/esm/action-form/fields/DropdownField.js.map +1 -1
  419. package/build/esm/action-form/fields/FieldBridge.js.map +1 -1
  420. package/build/esm/action-form/fields/FilePickerField.js.map +1 -1
  421. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  422. package/build/esm/action-form/fields/NumberInputField.js.map +1 -1
  423. package/build/esm/action-form/fields/ObjectSelectField.js.map +1 -1
  424. package/build/esm/action-form/fields/ObjectSetField.js.map +1 -1
  425. package/build/esm/action-form/fields/RadioButtonsField.js.map +1 -1
  426. package/build/esm/action-form/fields/SwitchField.js.map +1 -1
  427. package/build/esm/action-form/fields/TextAreaField.js.map +1 -1
  428. package/build/esm/action-form/fields/TextInputField.js.map +1 -1
  429. package/build/esm/action-form/utils/coerceFieldValue.js.map +1 -1
  430. package/build/esm/action-form/utils/extractValidationRules.js.map +1 -1
  431. package/build/esm/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
  432. package/build/esm/aip-agent-chat/AipAgentChat.js.map +1 -1
  433. package/build/esm/aip-agent-chat/BaseAipAgentChat.js +1 -1
  434. package/build/esm/aip-agent-chat/BaseAipAgentChat.js.map +1 -1
  435. package/build/esm/aip-agent-chat/components/AipAgentChatComposer.js.map +1 -1
  436. package/build/esm/aip-agent-chat/components/AipAgentChatLoader.js.map +1 -1
  437. package/build/esm/aip-agent-chat/components/AipAgentChatMessage.js.map +1 -1
  438. package/build/esm/aip-agent-chat/components/AipAgentChatMessageList.js +1 -1
  439. package/build/esm/aip-agent-chat/components/AipAgentChatMessageList.js.map +1 -1
  440. package/build/esm/aip-agent-chat/components/AipAgentChatModelPicker.js.map +1 -1
  441. package/build/esm/aip-agent-chat/hooks/useChatAutoScroll.js.map +1 -1
  442. package/build/esm/base-components/action-button/ActionButton.js.map +1 -1
  443. package/build/esm/base-components/callout/Callout.js.map +1 -1
  444. package/build/esm/base-components/checkbox/Checkbox.js.map +1 -1
  445. package/build/esm/base-components/combobox/Combobox.js.map +1 -1
  446. package/build/esm/base-components/dialog/Dialog.js.map +1 -1
  447. package/build/esm/base-components/draggable-list/DraggableList.js +1 -1
  448. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
  449. package/build/esm/base-components/icon/BlueprintIcon.js.map +1 -1
  450. package/build/esm/base-components/search-bar/SearchBar.js.map +1 -1
  451. package/build/esm/base-components/searchable-menu/SearchableMenu.js.map +1 -1
  452. package/build/esm/base-components/select/Select.js.map +1 -1
  453. package/build/esm/base-components/skeleton/SkeletonBar.js.map +1 -1
  454. package/build/esm/base-components/switch/Switch.js.map +1 -1
  455. package/build/esm/base-components/tooltip/Tooltip.js.map +1 -1
  456. package/build/esm/cbac-picker/CbacBanner.js.map +1 -1
  457. package/build/esm/cbac-picker/CbacBannerPopover.js.map +1 -1
  458. package/build/esm/cbac-picker/CbacPicker.js.map +1 -1
  459. package/build/esm/cbac-picker/CbacPickerDialog.js.map +1 -1
  460. package/build/esm/cbac-picker/base/BaseCbacBanner.js.map +1 -1
  461. package/build/esm/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -1
  462. package/build/esm/cbac-picker/base/BaseCbacPicker.js +1 -1
  463. package/build/esm/cbac-picker/base/BaseCbacPicker.js.map +1 -1
  464. package/build/esm/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -1
  465. package/build/esm/cbac-picker/base/CategoryMarkingGroup.js +1 -1
  466. package/build/esm/cbac-picker/base/CategoryMarkingGroup.js.map +1 -1
  467. package/build/esm/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -1
  468. package/build/esm/cbac-picker/base/InfoBanner.js.map +1 -1
  469. package/build/esm/cbac-picker/base/MarkingButton.js +1 -1
  470. package/build/esm/cbac-picker/base/MarkingButton.js.map +1 -1
  471. package/build/esm/cbac-picker/base/MaxClassificationField.js.map +1 -1
  472. package/build/esm/cbac-picker/base/OverflowButton.js +1 -1
  473. package/build/esm/cbac-picker/base/OverflowButton.js.map +1 -1
  474. package/build/esm/cbac-picker/base/OverflowItem.js +1 -1
  475. package/build/esm/cbac-picker/base/OverflowItem.js.map +1 -1
  476. package/build/esm/cbac-picker/base/ValidationWarning.js.map +1 -1
  477. package/build/esm/cbac-picker/base/selectionStateHelpers.js.map +1 -1
  478. package/build/esm/cbac-picker/useCbacPickerState.js.map +1 -1
  479. package/build/esm/cbac-picker/useCbacSelection.js.map +1 -1
  480. package/build/esm/cbac-picker/useConstraintCallout.js.map +1 -1
  481. package/build/esm/cbac-picker/utils/cbacPickerUtils.js.map +1 -1
  482. package/build/esm/cbac-picker/utils/errorMessages.js.map +1 -1
  483. package/build/esm/cbac-picker/utils/selectionLogic.js.map +1 -1
  484. package/build/esm/cbac-picker/utils/validationMessages.js.map +1 -1
  485. package/build/esm/document-viewer/DocumentViewer.js +1 -1
  486. package/build/esm/document-viewer/DocumentViewer.js.map +1 -1
  487. package/build/esm/document-viewer/DocumentViewerApi.js.map +1 -1
  488. package/build/esm/document-viewer/TiffDocumentViewer.js +1 -1
  489. package/build/esm/document-viewer/TiffDocumentViewer.js.map +1 -1
  490. package/build/esm/document-viewer/hooks/useTiffToPdf.js.map +1 -1
  491. package/build/esm/email-viewer/BaseEmailViewer.js.map +1 -1
  492. package/build/esm/email-viewer/EmailViewer.js +1 -1
  493. package/build/esm/email-viewer/EmailViewer.js.map +1 -1
  494. package/build/esm/email-viewer/EmailViewerApi.js.map +1 -1
  495. package/build/esm/email-viewer/parseEmail.js.map +1 -1
  496. package/build/esm/excel-viewer/BaseExcelViewer.js +1 -0
  497. package/build/esm/excel-viewer/BaseExcelViewer.js.map +1 -1
  498. package/build/esm/excel-viewer/ExcelViewer.js +1 -1
  499. package/build/esm/excel-viewer/ExcelViewer.js.map +1 -1
  500. package/build/esm/excel-viewer/ExcelViewerApi.js.map +1 -1
  501. package/build/esm/excel-viewer/parseSpreadsheet.js.map +1 -1
  502. package/build/esm/filter-list/FilterInput.js.map +1 -1
  503. package/build/esm/filter-list/FilterList.js.map +1 -1
  504. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  505. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  506. package/build/esm/filter-list/base/AddFilterPopover.js +1 -1
  507. package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -1
  508. package/build/esm/filter-list/base/BaseFilterList.js +1 -1
  509. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
  510. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
  511. package/build/esm/filter-list/base/ExcludeDropdown.js +1 -1
  512. package/build/esm/filter-list/base/ExcludeDropdown.js.map +1 -1
  513. package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -1
  514. package/build/esm/filter-list/base/FilterListContent.js +1 -1
  515. package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
  516. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
  517. package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
  518. package/build/esm/filter-list/base/FilterPopover.js.map +1 -1
  519. package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
  520. package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
  521. package/build/esm/filter-list/base/inputs/DateRangeHistogramInput.js.map +1 -1
  522. package/build/esm/filter-list/base/inputs/EmptyStringLabel.js +1 -0
  523. package/build/esm/filter-list/base/inputs/EmptyStringLabel.js.map +1 -1
  524. package/build/esm/filter-list/base/inputs/HistogramTooltip.js.map +1 -1
  525. package/build/esm/filter-list/base/inputs/ListogramInput.js +2 -2
  526. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  527. package/build/esm/filter-list/base/inputs/ListogramSkeleton.js.map +1 -1
  528. package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -1
  529. package/build/esm/filter-list/base/inputs/MultiSelectDropdownLayout.js.map +1 -1
  530. package/build/esm/filter-list/base/inputs/MultiSelectInlineLayout.js.map +1 -1
  531. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +2 -2
  532. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  533. package/build/esm/filter-list/base/inputs/NoValueLabel.js.map +1 -1
  534. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  535. package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  536. package/build/esm/filter-list/base/inputs/OptionLabel.js.map +1 -1
  537. package/build/esm/filter-list/base/inputs/RangeInput.js +1 -1
  538. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
  539. package/build/esm/filter-list/base/inputs/SelectInputSkeleton.js.map +1 -1
  540. package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -1
  541. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +1 -1
  542. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  543. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  544. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
  545. package/build/esm/filter-list/base/inputs/ToggleInput.js.map +1 -1
  546. package/build/esm/filter-list/base/inputs/comboboxFilter.js.map +1 -1
  547. package/build/esm/filter-list/base/inputs/createDateHistogramBuckets.js.map +1 -1
  548. package/build/esm/filter-list/base/inputs/createHistogramBuckets.js.map +1 -1
  549. package/build/esm/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
  550. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  551. package/build/esm/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -1
  552. package/build/esm/filter-list/hooks/useFilterVisibility.js.map +1 -1
  553. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  554. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
  555. package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
  556. package/build/esm/filter-list/inputs/LinkedPropertyInput.js +1 -1
  557. package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
  558. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  559. package/build/esm/filter-list/inputs/MultiDateFilterInput.js.map +1 -1
  560. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  561. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
  562. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  563. package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
  564. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  565. package/build/esm/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
  566. package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
  567. package/build/esm/filter-list/inputs/TimelineFilterInput.js.map +1 -1
  568. package/build/esm/filter-list/inputs/ToggleFilterInput.js.map +1 -1
  569. package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -1
  570. package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -1
  571. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  572. package/build/esm/filter-list/types/StaticValuesTypes.js.map +1 -1
  573. package/build/esm/filter-list/utils/aggregationHelpers.js.map +1 -1
  574. package/build/esm/filter-list/utils/coerceFilterValue.js.map +1 -1
  575. package/build/esm/filter-list/utils/emptyFilterDisplayState.js.map +1 -1
  576. package/build/esm/filter-list/utils/filterStateSerialization.js.map +1 -1
  577. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  578. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  579. package/build/esm/filter-list/utils/getFilterKey.js.map +1 -1
  580. package/build/esm/filter-list/utils/getFilterLabel.js.map +1 -1
  581. package/build/esm/filter-list/utils/narrowObjectSet.js.map +1 -1
  582. package/build/esm/filter-list/utils/summarizeFilterValue.js.map +1 -1
  583. package/build/esm/images/image-viewer/BaseImageViewer.js.map +1 -1
  584. package/build/esm/images/image-viewer/ImageViewer.js.map +1 -1
  585. package/build/esm/images/image-viewer/ImageViewerApi.js.map +1 -1
  586. package/build/esm/images/tiff-renderer/TiffRenderer.js +1 -0
  587. package/build/esm/images/tiff-renderer/TiffRenderer.js.map +1 -1
  588. package/build/esm/images/tiff-renderer/TiffViewerMedia.js.map +1 -1
  589. package/build/esm/markdown-renderer/MarkdownRenderer.js.map +1 -1
  590. package/build/esm/markdown-renderer/MarkdownViewerMedia.js.map +1 -1
  591. package/build/esm/object-table/CellContextMenu.js.map +1 -1
  592. package/build/esm/object-table/ColumnConfigDialog.js.map +1 -1
  593. package/build/esm/object-table/DefaultCellRenderer.js +4 -3
  594. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  595. package/build/esm/object-table/EditableCell.js +1 -1
  596. package/build/esm/object-table/EditableCell.js.map +1 -1
  597. package/build/esm/object-table/LoadingCell.js.map +1 -1
  598. package/build/esm/object-table/LoadingRow.js +1 -1
  599. package/build/esm/object-table/LoadingRow.js.map +1 -1
  600. package/build/esm/object-table/LoadingStateTable.js +3 -3
  601. package/build/esm/object-table/LoadingStateTable.js.map +1 -1
  602. package/build/esm/object-table/MultiColumnSortDialog.js +1 -1
  603. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
  604. package/build/esm/object-table/NonIdealState.js.map +1 -1
  605. package/build/esm/object-table/ObjectTable.js.map +1 -1
  606. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  607. package/build/esm/object-table/SelectionCells.js.map +1 -1
  608. package/build/esm/object-table/SortableItemsList.js.map +1 -1
  609. package/build/esm/object-table/Table.js +1 -1
  610. package/build/esm/object-table/Table.js.map +1 -1
  611. package/build/esm/object-table/TableBody.js +1 -1
  612. package/build/esm/object-table/TableBody.js.map +1 -1
  613. package/build/esm/object-table/TableCell.js +1 -1
  614. package/build/esm/object-table/TableCell.js.map +1 -1
  615. package/build/esm/object-table/TableEditContainer.js.map +1 -1
  616. package/build/esm/object-table/TableHeader.js +1 -1
  617. package/build/esm/object-table/TableHeader.js.map +1 -1
  618. package/build/esm/object-table/TableHeaderContent.js.map +1 -1
  619. package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
  620. package/build/esm/object-table/TableRow.js.map +1 -1
  621. package/build/esm/object-table/components/AsyncValueCell.js.map +1 -1
  622. package/build/esm/object-table/components/CbacMarkingCell.js.map +1 -1
  623. package/build/esm/object-table/components/DatePickerCellField.js +1 -1
  624. package/build/esm/object-table/components/DatePickerCellField.js.map +1 -1
  625. package/build/esm/object-table/components/DropdownCellField.js +1 -1
  626. package/build/esm/object-table/components/DropdownCellField.js.map +1 -1
  627. package/build/esm/object-table/components/MandatoryMarkingCell.js.map +1 -1
  628. package/build/esm/object-table/components/ReadonlyDisplayCell.js.map +1 -1
  629. package/build/esm/object-table/components/TextInputCellField.js.map +1 -1
  630. package/build/esm/object-table/hooks/useCellContextMenu.js.map +1 -1
  631. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  632. package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -1
  633. package/build/esm/object-table/hooks/useColumnResize.js.map +1 -1
  634. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
  635. package/build/esm/object-table/hooks/useEditableTable.js.map +1 -1
  636. package/build/esm/object-table/hooks/useFocusedRow.js.map +1 -1
  637. package/build/esm/object-table/hooks/useFunctionColumnsData.js.map +1 -1
  638. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  639. package/build/esm/object-table/hooks/useObjectTableSnapshot.js.map +1 -1
  640. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  641. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  642. package/build/esm/object-table/hooks/useTableSorting.js.map +1 -1
  643. package/build/esm/object-table/utils/AsyncCellData.js.map +1 -1
  644. package/build/esm/object-table/utils/PortalTracker.js.map +1 -1
  645. package/build/esm/object-table/utils/deriveSelectionObjectSet.js.map +1 -1
  646. package/build/esm/object-table/utils/editableUtils.js.map +1 -1
  647. package/build/esm/object-table/utils/functionColumns.js.map +1 -1
  648. package/build/esm/object-table/utils/getColumnPinningStyles.js.map +1 -1
  649. package/build/esm/object-table/utils/getRowId.js.map +1 -1
  650. package/build/esm/object-table/utils/objectTableSnapshot.js.map +1 -1
  651. package/build/esm/object-table/utils/shouldShowEditableCell.js.map +1 -1
  652. package/build/esm/object-table/utils/types.js.map +1 -1
  653. package/build/esm/pdf-viewer/PdfRenderer.js.map +1 -1
  654. package/build/esm/pdf-viewer/PdfViewer.js.map +1 -1
  655. package/build/esm/pdf-viewer/PdfViewerContext.js.map +1 -1
  656. package/build/esm/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -1
  657. package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
  658. package/build/esm/pdf-viewer/components/PdfViewerContent.js +1 -1
  659. package/build/esm/pdf-viewer/components/PdfViewerContent.js.map +1 -1
  660. package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.js +1 -1
  661. package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.js.map +1 -1
  662. package/build/esm/pdf-viewer/components/PdfViewerSearchBar.js.map +1 -1
  663. package/build/esm/pdf-viewer/components/PdfViewerSidebar.js +1 -1
  664. package/build/esm/pdf-viewer/components/PdfViewerSidebar.js.map +1 -1
  665. package/build/esm/pdf-viewer/components/PdfViewerSidebarHeader.js.map +1 -1
  666. package/build/esm/pdf-viewer/components/PdfViewerThumbnail.js.map +1 -1
  667. package/build/esm/pdf-viewer/components/PdfViewerToolbar.js.map +1 -1
  668. package/build/esm/pdf-viewer/constants.js.map +1 -1
  669. package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
  670. package/build/esm/pdf-viewer/hooks/usePdfAnnotationsByPage.js.map +1 -1
  671. package/build/esm/pdf-viewer/hooks/usePdfDocument.js.map +1 -1
  672. package/build/esm/pdf-viewer/hooks/usePdfFormFields.js.map +1 -1
  673. package/build/esm/pdf-viewer/hooks/usePdfHighlightMode.js.map +1 -1
  674. package/build/esm/pdf-viewer/hooks/usePdfOutline.js.map +1 -1
  675. package/build/esm/pdf-viewer/hooks/usePdfViewer.js.map +1 -1
  676. package/build/esm/pdf-viewer/hooks/usePdfViewerCore.js.map +1 -1
  677. package/build/esm/pdf-viewer/hooks/usePdfViewerSearch.js.map +1 -1
  678. package/build/esm/pdf-viewer/hooks/usePdfViewerState.js.map +1 -1
  679. package/build/esm/pdf-viewer/hooks/usePdfViewerSync.js.map +1 -1
  680. package/build/esm/public/experimental/action-form.js.map +1 -1
  681. package/build/esm/public/experimental/cbac-picker.js.map +1 -1
  682. package/build/esm/public/experimental/document-viewer.js.map +1 -1
  683. package/build/esm/public/experimental/email-viewer.js.map +1 -1
  684. package/build/esm/public/experimental/excel-viewer.js.map +1 -1
  685. package/build/esm/public/experimental/filter-list.js.map +1 -1
  686. package/build/esm/public/experimental/image-viewer.js.map +1 -1
  687. package/build/esm/public/experimental/markdown-renderer.js.map +1 -1
  688. package/build/esm/public/experimental/object-table.js.map +1 -1
  689. package/build/esm/public/experimental/pdf-viewer.js.map +1 -1
  690. package/build/esm/public/experimental/tiff-renderer.js.map +1 -1
  691. package/build/esm/public/experimental/video-viewer.js.map +1 -1
  692. package/build/esm/public/experimental/xml-viewer.js.map +1 -1
  693. package/build/esm/shared/ErrorBoundary.js.map +1 -1
  694. package/build/esm/shared/PortalContainerContext.js.map +1 -1
  695. package/build/esm/shared/PortalDismissLayer.js.map +1 -1
  696. package/build/esm/shared/calendar/DateCalendar.js +1 -1
  697. package/build/esm/shared/calendar/DateCalendar.js.map +1 -1
  698. package/build/esm/shared/calendar/DatePicker.js +2 -2
  699. package/build/esm/shared/calendar/DatePicker.js.map +1 -1
  700. package/build/esm/shared/calendar/DateRangeCalendar.js.map +1 -1
  701. package/build/esm/shared/calendar/DateRangePicker.js +2 -2
  702. package/build/esm/shared/calendar/DateRangePicker.js.map +1 -1
  703. package/build/esm/shared/calendar/LazyDateCalendar.js.map +1 -1
  704. package/build/esm/shared/calendar/LazyDateRangeCalendar.js.map +1 -1
  705. package/build/esm/shared/calendar/TimePicker.js.map +1 -1
  706. package/build/esm/shared/calendar/calendarShared.js.map +1 -1
  707. package/build/esm/shared/calendar/useDateEditState.js.map +1 -1
  708. package/build/esm/shared/dateUtils.js.map +1 -1
  709. package/build/esm/shared/hooks/useAsyncAction.js.map +1 -1
  710. package/build/esm/shared/hooks/useDebouncedValue.js.map +1 -1
  711. package/build/esm/shared/hooks/useEventCallback.js.map +1 -1
  712. package/build/esm/shared/hooks/useInfiniteScroll.js.map +1 -1
  713. package/build/esm/shared/hooks/useMediaContents.js.map +1 -1
  714. package/build/esm/theme/OsdkThemeContext.js.map +1 -1
  715. package/build/esm/theme/OsdkThemeProvider.js.map +1 -1
  716. package/build/esm/theme/useOsdkTheme.js.map +1 -1
  717. package/build/esm/theme/useSystemTheme.js.map +1 -1
  718. package/build/esm/util/UserAgent.js +1 -1
  719. package/build/esm/util/UserAgent.js.map +1 -1
  720. package/build/esm/util/withOsdkMetrics.js.map +1 -1
  721. package/build/esm/video-viewer/BaseVideoViewer.js.map +1 -1
  722. package/build/esm/video-viewer/VideoViewer.js.map +1 -1
  723. package/build/esm/video-viewer/VideoViewerApi.js.map +1 -1
  724. package/build/esm/xml-viewer/BaseXmlViewer.js.map +1 -1
  725. package/build/esm/xml-viewer/XmlViewer.js.map +1 -1
  726. package/build/esm/xml-viewer/XmlViewerApi.js.map +1 -1
  727. package/build/types/action-form/ActionForm.d.ts.map +1 -1
  728. package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
  729. package/build/types/action-form/BaseForm.d.ts.map +1 -1
  730. package/build/types/action-form/FormField.d.ts.map +1 -1
  731. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  732. package/build/types/action-form/FormHeader.d.ts.map +1 -1
  733. package/build/types/action-form/FormSection.d.ts.map +1 -1
  734. package/build/types/action-form/fields/AsyncDropdownField.d.ts.map +1 -1
  735. package/build/types/action-form/fields/CustomField.d.ts.map +1 -1
  736. package/build/types/action-form/fields/DropdownField.d.ts.map +1 -1
  737. package/build/types/action-form/fields/FieldBridge.d.ts.map +1 -1
  738. package/build/types/action-form/fields/FilePickerField.d.ts.map +1 -1
  739. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  740. package/build/types/action-form/fields/NumberInputField.d.ts.map +1 -1
  741. package/build/types/action-form/fields/ObjectSelectField.d.ts.map +1 -1
  742. package/build/types/action-form/fields/ObjectSetField.d.ts.map +1 -1
  743. package/build/types/action-form/fields/RadioButtonsField.d.ts.map +1 -1
  744. package/build/types/action-form/fields/SwitchField.d.ts.map +1 -1
  745. package/build/types/action-form/fields/TextAreaField.d.ts.map +1 -1
  746. package/build/types/action-form/fields/TextInputField.d.ts.map +1 -1
  747. package/build/types/action-form/utils/extractValidationRules.d.ts.map +1 -1
  748. package/build/types/action-form/utils/getDefaultFieldDefinitions.d.ts.map +1 -1
  749. package/build/types/aip-agent-chat/AipAgentChat.d.ts.map +1 -1
  750. package/build/types/aip-agent-chat/BaseAipAgentChat.d.ts.map +1 -1
  751. package/build/types/aip-agent-chat/components/AipAgentChatComposer.d.ts.map +1 -1
  752. package/build/types/aip-agent-chat/components/AipAgentChatLoader.d.ts.map +1 -1
  753. package/build/types/aip-agent-chat/components/AipAgentChatMessage.d.ts.map +1 -1
  754. package/build/types/aip-agent-chat/components/AipAgentChatMessageList.d.ts.map +1 -1
  755. package/build/types/aip-agent-chat/components/AipAgentChatModelPicker.d.ts.map +1 -1
  756. package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -1
  757. package/build/types/base-components/callout/Callout.d.ts.map +1 -1
  758. package/build/types/base-components/checkbox/Checkbox.d.ts.map +1 -1
  759. package/build/types/base-components/combobox/Combobox.d.ts.map +1 -1
  760. package/build/types/base-components/dialog/Dialog.d.ts.map +1 -1
  761. package/build/types/base-components/draggable-list/DraggableList.d.ts.map +1 -1
  762. package/build/types/base-components/search-bar/SearchBar.d.ts.map +1 -1
  763. package/build/types/base-components/searchable-menu/SearchableMenu.d.ts.map +1 -1
  764. package/build/types/base-components/select/Select.d.ts.map +1 -1
  765. package/build/types/base-components/skeleton/SkeletonBar.d.ts.map +1 -1
  766. package/build/types/base-components/switch/Switch.d.ts.map +1 -1
  767. package/build/types/base-components/tooltip/Tooltip.d.ts.map +1 -1
  768. package/build/types/cbac-picker/CbacBanner.d.ts.map +1 -1
  769. package/build/types/cbac-picker/CbacBannerPopover.d.ts.map +1 -1
  770. package/build/types/cbac-picker/CbacPicker.d.ts.map +1 -1
  771. package/build/types/cbac-picker/CbacPickerDialog.d.ts.map +1 -1
  772. package/build/types/cbac-picker/base/BaseCbacBanner.d.ts.map +1 -1
  773. package/build/types/cbac-picker/base/BaseCbacBannerPopover.d.ts.map +1 -1
  774. package/build/types/cbac-picker/base/BaseCbacPicker.d.ts.map +1 -1
  775. package/build/types/cbac-picker/base/BaseCbacPickerDialog.d.ts.map +1 -1
  776. package/build/types/cbac-picker/base/CategoryMarkingGroup.d.ts.map +1 -1
  777. package/build/types/cbac-picker/base/CbacPickerDialogFooter.d.ts.map +1 -1
  778. package/build/types/cbac-picker/base/InfoBanner.d.ts.map +1 -1
  779. package/build/types/cbac-picker/base/MarkingButton.d.ts.map +1 -1
  780. package/build/types/cbac-picker/base/MaxClassificationField.d.ts.map +1 -1
  781. package/build/types/cbac-picker/base/OverflowButton.d.ts.map +1 -1
  782. package/build/types/cbac-picker/base/OverflowItem.d.ts.map +1 -1
  783. package/build/types/cbac-picker/base/ValidationWarning.d.ts.map +1 -1
  784. package/build/types/cbac-picker/useCbacPickerState.d.ts.map +1 -1
  785. package/build/types/cbac-picker/useCbacSelection.d.ts.map +1 -1
  786. package/build/types/cbac-picker/useConstraintCallout.d.ts.map +1 -1
  787. package/build/types/cbac-picker/utils/errorMessages.d.ts.map +1 -1
  788. package/build/types/document-viewer/DocumentViewer.d.ts.map +1 -1
  789. package/build/types/document-viewer/DocumentViewerApi.d.ts.map +1 -1
  790. package/build/types/document-viewer/TiffDocumentViewer.d.ts.map +1 -1
  791. package/build/types/document-viewer/hooks/useTiffToPdf.d.ts.map +1 -1
  792. package/build/types/email-viewer/BaseEmailViewer.d.ts.map +1 -1
  793. package/build/types/email-viewer/EmailViewer.d.ts.map +1 -1
  794. package/build/types/email-viewer/EmailViewerApi.d.ts.map +1 -1
  795. package/build/types/email-viewer/parseEmail.d.ts.map +1 -1
  796. package/build/types/excel-viewer/BaseExcelViewer.d.ts.map +1 -1
  797. package/build/types/excel-viewer/ExcelViewer.d.ts.map +1 -1
  798. package/build/types/excel-viewer/ExcelViewerApi.d.ts.map +1 -1
  799. package/build/types/excel-viewer/parseSpreadsheet.d.ts.map +1 -1
  800. package/build/types/filter-list/FilterInput.d.ts.map +1 -1
  801. package/build/types/filter-list/FilterList.d.ts.map +1 -1
  802. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  803. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  804. package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -1
  805. package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -1
  806. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
  807. package/build/types/filter-list/base/ExcludeDropdown.d.ts.map +1 -1
  808. package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -1
  809. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
  810. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
  811. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
  812. package/build/types/filter-list/base/FilterPopover.d.ts.map +1 -1
  813. package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
  814. package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts.map +1 -1
  815. package/build/types/filter-list/base/inputs/DateRangeHistogramInput.d.ts.map +1 -1
  816. package/build/types/filter-list/base/inputs/EmptyStringLabel.d.ts.map +1 -1
  817. package/build/types/filter-list/base/inputs/HistogramTooltip.d.ts.map +1 -1
  818. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  819. package/build/types/filter-list/base/inputs/ListogramSkeleton.d.ts.map +1 -1
  820. package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -1
  821. package/build/types/filter-list/base/inputs/MultiSelectDropdownLayout.d.ts.map +1 -1
  822. package/build/types/filter-list/base/inputs/MultiSelectInlineLayout.d.ts.map +1 -1
  823. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  824. package/build/types/filter-list/base/inputs/NoValueLabel.d.ts.map +1 -1
  825. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
  826. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -1
  827. package/build/types/filter-list/base/inputs/OptionLabel.d.ts.map +1 -1
  828. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
  829. package/build/types/filter-list/base/inputs/SelectInputSkeleton.d.ts.map +1 -1
  830. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -1
  831. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
  832. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
  833. package/build/types/filter-list/base/inputs/TimelineInput.d.ts.map +1 -1
  834. package/build/types/filter-list/base/inputs/ToggleInput.d.ts.map +1 -1
  835. package/build/types/filter-list/base/inputs/createDateHistogramBuckets.d.ts.map +1 -1
  836. package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts.map +1 -1
  837. package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts.map +1 -1
  838. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  839. package/build/types/filter-list/hooks/useFilterPropertyAggregation.d.ts.map +1 -1
  840. package/build/types/filter-list/hooks/useFilterVisibility.d.ts.map +1 -1
  841. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
  842. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts.map +1 -1
  843. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -1
  844. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -1
  845. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
  846. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts.map +1 -1
  847. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
  848. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -1
  849. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -1
  850. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -1
  851. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
  852. package/build/types/filter-list/inputs/StaticValuesFilterInput.d.ts.map +1 -1
  853. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -1
  854. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts.map +1 -1
  855. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts.map +1 -1
  856. package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -1
  857. package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -1
  858. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
  859. package/build/types/filter-list/types/StaticValuesTypes.d.ts.map +1 -1
  860. package/build/types/filter-list/utils/aggregationHelpers.d.ts.map +1 -1
  861. package/build/types/filter-list/utils/emptyFilterDisplayState.d.ts.map +1 -1
  862. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
  863. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  864. package/build/types/filter-list/utils/getFilterKey.d.ts.map +1 -1
  865. package/build/types/filter-list/utils/getFilterLabel.d.ts.map +1 -1
  866. package/build/types/filter-list/utils/narrowObjectSet.d.ts.map +1 -1
  867. package/build/types/filter-list/utils/summarizeFilterValue.d.ts.map +1 -1
  868. package/build/types/images/image-viewer/BaseImageViewer.d.ts.map +1 -1
  869. package/build/types/images/image-viewer/ImageViewer.d.ts.map +1 -1
  870. package/build/types/images/image-viewer/ImageViewerApi.d.ts.map +1 -1
  871. package/build/types/images/tiff-renderer/TiffRenderer.d.ts.map +1 -1
  872. package/build/types/images/tiff-renderer/TiffViewerMedia.d.ts.map +1 -1
  873. package/build/types/markdown-renderer/MarkdownRenderer.d.ts.map +1 -1
  874. package/build/types/markdown-renderer/MarkdownViewerMedia.d.ts.map +1 -1
  875. package/build/types/object-table/CellContextMenu.d.ts.map +1 -1
  876. package/build/types/object-table/ColumnConfigDialog.d.ts.map +1 -1
  877. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
  878. package/build/types/object-table/EditableCell.d.ts.map +1 -1
  879. package/build/types/object-table/LoadingCell.d.ts.map +1 -1
  880. package/build/types/object-table/LoadingRow.d.ts.map +1 -1
  881. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
  882. package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -1
  883. package/build/types/object-table/NonIdealState.d.ts.map +1 -1
  884. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  885. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  886. package/build/types/object-table/SelectionCells.d.ts.map +1 -1
  887. package/build/types/object-table/SortableItemsList.d.ts.map +1 -1
  888. package/build/types/object-table/Table.d.ts.map +1 -1
  889. package/build/types/object-table/TableBody.d.ts.map +1 -1
  890. package/build/types/object-table/TableCell.d.ts.map +1 -1
  891. package/build/types/object-table/TableEditContainer.d.ts.map +1 -1
  892. package/build/types/object-table/TableHeader.d.ts.map +1 -1
  893. package/build/types/object-table/TableHeaderContent.d.ts.map +1 -1
  894. package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -1
  895. package/build/types/object-table/TableRow.d.ts.map +1 -1
  896. package/build/types/object-table/components/AsyncValueCell.d.ts.map +1 -1
  897. package/build/types/object-table/components/CbacMarkingCell.d.ts.map +1 -1
  898. package/build/types/object-table/components/DatePickerCellField.d.ts.map +1 -1
  899. package/build/types/object-table/components/DropdownCellField.d.ts.map +1 -1
  900. package/build/types/object-table/components/MandatoryMarkingCell.d.ts.map +1 -1
  901. package/build/types/object-table/components/ReadonlyDisplayCell.d.ts.map +1 -1
  902. package/build/types/object-table/components/TextInputCellField.d.ts.map +1 -1
  903. package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
  904. package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -1
  905. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
  906. package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -1
  907. package/build/types/object-table/hooks/useFocusedRow.d.ts.map +1 -1
  908. package/build/types/object-table/hooks/useFunctionColumnsData.d.ts.map +1 -1
  909. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  910. package/build/types/object-table/hooks/useObjectTableSnapshot.d.ts.map +1 -1
  911. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  912. package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
  913. package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -1
  914. package/build/types/object-table/utils/AsyncCellData.d.ts.map +1 -1
  915. package/build/types/object-table/utils/PortalTracker.d.ts.map +1 -1
  916. package/build/types/object-table/utils/deriveSelectionObjectSet.d.ts.map +1 -1
  917. package/build/types/object-table/utils/functionColumns.d.ts.map +1 -1
  918. package/build/types/object-table/utils/getRowId.d.ts.map +1 -1
  919. package/build/types/object-table/utils/objectTableSnapshot.d.ts.map +1 -1
  920. package/build/types/object-table/utils/types.d.ts.map +1 -1
  921. package/build/types/pdf-viewer/PdfRenderer.d.ts.map +1 -1
  922. package/build/types/pdf-viewer/PdfViewer.d.ts.map +1 -1
  923. package/build/types/pdf-viewer/PdfViewerContext.d.ts.map +1 -1
  924. package/build/types/pdf-viewer/components/PdfAnnotationOverlay.d.ts.map +1 -1
  925. package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts.map +1 -1
  926. package/build/types/pdf-viewer/components/PdfViewerContent.d.ts.map +1 -1
  927. package/build/types/pdf-viewer/components/PdfViewerOutlineSidebar.d.ts.map +1 -1
  928. package/build/types/pdf-viewer/components/PdfViewerSearchBar.d.ts.map +1 -1
  929. package/build/types/pdf-viewer/components/PdfViewerSidebar.d.ts.map +1 -1
  930. package/build/types/pdf-viewer/components/PdfViewerSidebarHeader.d.ts.map +1 -1
  931. package/build/types/pdf-viewer/components/PdfViewerThumbnail.d.ts.map +1 -1
  932. package/build/types/pdf-viewer/components/PdfViewerToolbar.d.ts.map +1 -1
  933. package/build/types/pdf-viewer/constants.d.ts.map +1 -1
  934. package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts.map +1 -1
  935. package/build/types/pdf-viewer/hooks/usePdfAnnotationsByPage.d.ts.map +1 -1
  936. package/build/types/pdf-viewer/hooks/usePdfFormFields.d.ts.map +1 -1
  937. package/build/types/pdf-viewer/hooks/usePdfHighlightMode.d.ts.map +1 -1
  938. package/build/types/pdf-viewer/hooks/usePdfOutline.d.ts.map +1 -1
  939. package/build/types/pdf-viewer/hooks/usePdfViewer.d.ts.map +1 -1
  940. package/build/types/pdf-viewer/hooks/usePdfViewerCore.d.ts.map +1 -1
  941. package/build/types/pdf-viewer/hooks/usePdfViewerSearch.d.ts.map +1 -1
  942. package/build/types/pdf-viewer/hooks/usePdfViewerState.d.ts.map +1 -1
  943. package/build/types/pdf-viewer/hooks/usePdfViewerSync.d.ts.map +1 -1
  944. package/build/types/shared/ErrorBoundary.d.ts.map +1 -1
  945. package/build/types/shared/PortalContainerContext.d.ts.map +1 -1
  946. package/build/types/shared/PortalDismissLayer.d.ts.map +1 -1
  947. package/build/types/shared/calendar/DateCalendar.d.ts.map +1 -1
  948. package/build/types/shared/calendar/DatePicker.d.ts.map +1 -1
  949. package/build/types/shared/calendar/DateRangeCalendar.d.ts.map +1 -1
  950. package/build/types/shared/calendar/DateRangePicker.d.ts.map +1 -1
  951. package/build/types/shared/calendar/LazyDateCalendar.d.ts.map +1 -1
  952. package/build/types/shared/calendar/LazyDateRangeCalendar.d.ts.map +1 -1
  953. package/build/types/shared/calendar/TimePicker.d.ts.map +1 -1
  954. package/build/types/shared/calendar/useDateEditState.d.ts.map +1 -1
  955. package/build/types/shared/dateUtils.d.ts.map +1 -1
  956. package/build/types/shared/hooks/useAsyncAction.d.ts.map +1 -1
  957. package/build/types/shared/hooks/useInfiniteScroll.d.ts.map +1 -1
  958. package/build/types/theme/OsdkThemeContext.d.ts.map +1 -1
  959. package/build/types/theme/OsdkThemeProvider.d.ts.map +1 -1
  960. package/build/types/theme/useOsdkTheme.d.ts.map +1 -1
  961. package/build/types/theme/useSystemTheme.d.ts.map +1 -1
  962. package/build/types/util/UserAgent.d.ts.map +1 -1
  963. package/build/types/util/withOsdkMetrics.d.ts.map +1 -1
  964. package/build/types/video-viewer/BaseVideoViewer.d.ts.map +1 -1
  965. package/build/types/video-viewer/VideoViewer.d.ts.map +1 -1
  966. package/build/types/video-viewer/VideoViewerApi.d.ts.map +1 -1
  967. package/build/types/xml-viewer/BaseXmlViewer.d.ts.map +1 -1
  968. package/build/types/xml-viewer/XmlViewer.d.ts.map +1 -1
  969. package/build/types/xml-viewer/XmlViewerApi.d.ts.map +1 -1
  970. package/package.json +9 -10
  971. package/build/cjs/DateCalendar-FTW3OIEP.css.map +0 -1
  972. package/build/cjs/DateRangeCalendar-I4JHCZAK.css.map +0 -1
  973. package/build/cjs/DateRangeCalendar-PHC3VPW3.cjs +0 -12
  974. package/build/cjs/chunk-4VNWCW75.cjs.map +0 -1
  975. package/build/cjs/chunk-CASYBF4M.cjs.map +0 -1
  976. package/build/cjs/chunk-DA22W6ZO.cjs.map +0 -1
  977. package/build/cjs/chunk-F4JELV7M.cjs +0 -11
  978. package/build/cjs/chunk-IHVPE5CD.cjs.map +0 -1
  979. package/build/cjs/chunk-LGGRMQCE.cjs +0 -11
  980. package/build/cjs/chunk-MMPVBH5H.cjs.map +0 -1
  981. package/build/cjs/chunk-PYOEFNQH.cjs +0 -11
  982. package/build/cjs/chunk-Q5H4KPSL.cjs +0 -11
  983. package/build/cjs/chunk-VRTFHF24.cjs +0 -11
  984. package/build/cjs/chunk-W6DWGABB.cjs +0 -11
  985. package/build/cjs/chunk-WE4REEMW.cjs.map +0 -1
  986. package/build/cjs/chunk-XK4H7EHE.cjs.map +0 -1
  987. package/build/cjs/chunk-YTDSW5OV.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfHighlightMode.js","names":["AnnotationEditorType","useCallback","useEffect","useRef","useState","rgbArrayToHex","color","r","Math","round","g","b","toString","padStart","quadPointsToRects","quadPoints","rects","i","length","x1","y1","x2","y3","x","min","y","width","abs","height","push","usePdfHighlightMode","pdfViewerRef","document","enabled","onTextHighlight","onHighlightDelete","highlightModeActive","setHighlightModeActive","onTextHighlightRef","onHighlightDeleteRef","knownEditorIdsRef","Set","editorEventsRef","Map","current","pdfViewer","annotationEditorMode","mode","HIGHLIGHT","NONE","prevDocumentRef","undefined","clear","storage","annotationStorage","previousOnAnnotationEditor","onAnnotationEditor","originalRemove","remove","bind","key","savedEvent","get","delete","type","allEntries","getAll","id","entry","Object","entries","has","serialize","add","serialized","annotationType","Array","isArray","selectedText","div","getAttribute","event","editorId","page","pageIndex","set","toggleHighlightMode","prev","deleteHighlight","hasDiv","HTMLElement","obj"],"sources":["usePdfHighlightMode.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\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { PdfRect, PdfTextHighlightEvent } from \"../types.js\";\n\nexport interface UsePdfHighlightModeOptions {\n pdfViewerRef: RefObject<PDFViewer | null>;\n document: PDFDocumentProxy | undefined;\n enabled: boolean;\n onTextHighlight?: (event: PdfTextHighlightEvent) => void;\n onHighlightDelete?: (event: PdfTextHighlightEvent) => void;\n}\n\nexport interface UsePdfHighlightModeResult {\n highlightModeActive: boolean;\n toggleHighlightMode: () => void;\n deleteHighlight: (editorId: string) => void;\n}\n\n/**\n * Converts an RGB array (0.0–1.0 per channel) to a CSS hex color string.\n */\nexport function rgbArrayToHex(color: number[]): string {\n const r = Math.round(color[0] * 255);\n const g = Math.round(color[1] * 255);\n const b = Math.round(color[2] * 255);\n return `#${r.toString(16).padStart(2, \"0\")}${\n g.toString(16).padStart(2, \"0\")\n }${b.toString(16).padStart(2, \"0\")}`;\n}\n\n/**\n * Converts quadPoints (PDF spec format) back to PdfRect[].\n * QuadPoints are 8 values per quad: [x1,y1, x2,y2, x3,y3, x4,y4]\n * representing the four corners of each highlight rect.\n *\n * PDF.js highlight editor produces axis-aligned quads with ordering:\n * (x1,y1)=top-left, (x2,y2)=top-right, (x3,y3)=bottom-left, (x4,y4)=bottom-right\n * We derive the bounding rect from x1, y1 (top), x2 (right edge), y3 (bottom).\n */\nexport function quadPointsToRects(\n quadPoints: Float32Array,\n): PdfRect[] {\n const rects: PdfRect[] = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n const x1 = quadPoints[i];\n const y1 = quadPoints[i + 1];\n const x2 = quadPoints[i + 2];\n const y3 = quadPoints[i + 5];\n\n const x = Math.min(x1, x2);\n const y = Math.min(y1, y3);\n const width = Math.abs(x2 - x1);\n const height = Math.abs(y1 - y3);\n\n rects.push({ x, y, width, height });\n }\n return rects;\n}\n\n/**\n * Hook that manages the PDF.js built-in highlight annotation editor mode.\n * When active, users can select text to create highlights.\n * A callback fires with the annotation details for persistence.\n */\nexport function usePdfHighlightMode({\n pdfViewerRef,\n document,\n enabled,\n onTextHighlight,\n onHighlightDelete,\n}: UsePdfHighlightModeOptions): UsePdfHighlightModeResult {\n const [highlightModeActive, setHighlightModeActive] = useState(false);\n const onTextHighlightRef = useRef(onTextHighlight);\n const onHighlightDeleteRef = useRef(onHighlightDelete);\n const knownEditorIdsRef = useRef<Set<string>>(new Set());\n const editorEventsRef = useRef<Map<string, PdfTextHighlightEvent>>(new Map());\n\n // Keep callback refs in sync\n useEffect(function syncCallbackRef() {\n onTextHighlightRef.current = onTextHighlight;\n onHighlightDeleteRef.current = onHighlightDelete;\n }, [onTextHighlight, onHighlightDelete]);\n\n // Toggle the PDF.js annotation editor mode\n useEffect(function syncHighlightMode() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n\n try {\n if (highlightModeActive && enabled) {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.HIGHLIGHT,\n };\n } else {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.NONE,\n };\n }\n } catch {\n // AnnotationEditorUIManager may not be initialized yet\n }\n }, [pdfViewerRef, document, highlightModeActive, enabled]);\n\n // Deactivate highlight mode when the feature is disabled\n useEffect(function deactivateOnDisable() {\n if (!enabled) {\n setHighlightModeActive(false);\n }\n }, [enabled]);\n\n // Clear tracked editors when the document changes (but not on highlight toggle)\n const prevDocumentRef = useRef<PDFDocumentProxy | undefined>(undefined);\n useEffect(function clearOnDocumentChange() {\n if (document !== prevDocumentRef.current) {\n knownEditorIdsRef.current.clear();\n editorEventsRef.current.clear();\n prevDocumentRef.current = document;\n }\n }, [document]);\n\n // Listen for new highlights being added to annotation storage\n useEffect(function listenForHighlights() {\n if (document == null || !highlightModeActive || !enabled) {\n return;\n }\n\n const storage = document.annotationStorage;\n const previousOnAnnotationEditor = storage.onAnnotationEditor;\n\n // Monkey-patch storage.remove to detect highlight deletions.\n // This is fragile but necessary because PDF.js does not emit events\n // when editors are removed. Restore the original on cleanup.\n const originalRemove = storage.remove.bind(storage);\n storage.remove = (key: string) => {\n const savedEvent = editorEventsRef.current.get(key);\n if (savedEvent != null) {\n editorEventsRef.current.delete(key);\n knownEditorIdsRef.current.delete(key);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n originalRemove(key);\n };\n\n storage.onAnnotationEditor = (type: string | number | null) => {\n // onAnnotationEditor fires with the editor's static _type (string \"highlight\")\n if (type !== \"highlight\") {\n return;\n }\n\n // Find new editors in storage\n const allEntries = storage.getAll();\n if (allEntries == null) {\n return;\n }\n\n for (const [id, entry] of Object.entries(allEntries)) {\n if (knownEditorIdsRef.current.has(id)) {\n continue;\n }\n\n // Check if this is a highlight editor with serializable data\n if (\n typeof entry === \"object\" && entry != null\n && \"serialize\" in entry\n && typeof entry.serialize === \"function\"\n ) {\n knownEditorIdsRef.current.add(id);\n const serialized = entry.serialize(false);\n if (\n serialized == null\n || serialized.annotationType !== AnnotationEditorType.HIGHLIGHT\n ) {\n continue;\n }\n\n const rects = serialized.quadPoints != null\n ? quadPointsToRects(serialized.quadPoints)\n : [];\n\n if (rects.length === 0) {\n continue;\n }\n\n const color = Array.isArray(serialized.color)\n ? rgbArrayToHex(serialized.color)\n : \"#fff066\";\n\n // Extract text from the editor's aria-label (stores selected text)\n const selectedText = typeof entry.div?.getAttribute === \"function\"\n ? entry.div.getAttribute(\"aria-label\") ?? \"\"\n : \"\";\n\n const event: PdfTextHighlightEvent = {\n editorId: id,\n page: serialized.pageIndex + 1,\n rects,\n selectedText,\n color,\n };\n\n // Store the event so we can provide it back on delete\n editorEventsRef.current.set(id, event);\n\n onTextHighlightRef.current?.(event);\n }\n }\n };\n\n return () => {\n storage.onAnnotationEditor = previousOnAnnotationEditor;\n storage.remove = originalRemove;\n };\n }, [document, highlightModeActive, enabled]);\n\n const toggleHighlightMode = useCallback(() => {\n setHighlightModeActive((prev) => !prev);\n }, []);\n\n const deleteHighlight = useCallback((editorId: string) => {\n if (document == null) return;\n const storage = document.annotationStorage;\n\n // Fire the delete callback directly. The monkey-patch on storage.remove\n // only exists while highlight mode is active, so we handle it here to\n // ensure the callback fires regardless of highlight mode state.\n // Clean up refs first so the monkey-patch (if active) won't double-fire.\n const savedEvent = editorEventsRef.current.get(editorId);\n if (savedEvent != null) {\n editorEventsRef.current.delete(editorId);\n knownEditorIdsRef.current.delete(editorId);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n\n // Remove the editor's DOM element if it exists\n const allEntries = storage.getAll() as Record<string, unknown> | null;\n const entry = allEntries?.[editorId];\n if (hasDiv(entry) && entry.div instanceof HTMLElement) {\n entry.div.remove();\n }\n\n storage.remove(editorId);\n }, [document]);\n\n return {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight,\n };\n}\n\nfunction hasDiv(obj: unknown): obj is { div: unknown } {\n return obj != null && typeof obj === \"object\" && \"div\" in obj;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePdfHighlightMode.js","names":["AnnotationEditorType","useCallback","useEffect","useRef","useState","rgbArrayToHex","color","r","Math","round","g","b","toString","padStart","quadPointsToRects","quadPoints","rects","i","length","x1","y1","x2","y3","x","min","y","width","abs","height","push","usePdfHighlightMode","pdfViewerRef","document","enabled","onTextHighlight","onHighlightDelete","highlightModeActive","setHighlightModeActive","onTextHighlightRef","onHighlightDeleteRef","knownEditorIdsRef","Set","editorEventsRef","Map","current","pdfViewer","annotationEditorMode","mode","HIGHLIGHT","NONE","prevDocumentRef","undefined","clear","storage","annotationStorage","previousOnAnnotationEditor","onAnnotationEditor","originalRemove","remove","bind","key","savedEvent","get","delete","type","allEntries","getAll","id","entry","Object","entries","has","serialize","add","serialized","annotationType","Array","isArray","selectedText","div","getAttribute","event","editorId","page","pageIndex","set","toggleHighlightMode","prev","deleteHighlight","hasDiv","HTMLElement","obj"],"sources":["usePdfHighlightMode.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\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport type { PdfRect, PdfTextHighlightEvent } from \"../types.js\";\n\nexport interface UsePdfHighlightModeOptions {\n pdfViewerRef: RefObject<PDFViewer | null>;\n document: PDFDocumentProxy | undefined;\n enabled: boolean;\n onTextHighlight?: (event: PdfTextHighlightEvent) => void;\n onHighlightDelete?: (event: PdfTextHighlightEvent) => void;\n}\n\nexport interface UsePdfHighlightModeResult {\n highlightModeActive: boolean;\n toggleHighlightMode: () => void;\n deleteHighlight: (editorId: string) => void;\n}\n\n/**\n * Converts an RGB array (0.0–1.0 per channel) to a CSS hex color string.\n */\nexport function rgbArrayToHex(color: number[]): string {\n const r = Math.round(color[0] * 255);\n const g = Math.round(color[1] * 255);\n const b = Math.round(color[2] * 255);\n return `#${r.toString(16).padStart(2, \"0\")}${g\n .toString(16)\n .padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`;\n}\n\n/**\n * Converts quadPoints (PDF spec format) back to PdfRect[].\n * QuadPoints are 8 values per quad: [x1,y1, x2,y2, x3,y3, x4,y4]\n * representing the four corners of each highlight rect.\n *\n * PDF.js highlight editor produces axis-aligned quads with ordering:\n * (x1,y1)=top-left, (x2,y2)=top-right, (x3,y3)=bottom-left, (x4,y4)=bottom-right\n * We derive the bounding rect from x1, y1 (top), x2 (right edge), y3 (bottom).\n */\nexport function quadPointsToRects(quadPoints: Float32Array): PdfRect[] {\n const rects: PdfRect[] = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n const x1 = quadPoints[i];\n const y1 = quadPoints[i + 1];\n const x2 = quadPoints[i + 2];\n const y3 = quadPoints[i + 5];\n\n const x = Math.min(x1, x2);\n const y = Math.min(y1, y3);\n const width = Math.abs(x2 - x1);\n const height = Math.abs(y1 - y3);\n\n rects.push({ x, y, width, height });\n }\n return rects;\n}\n\n/**\n * Hook that manages the PDF.js built-in highlight annotation editor mode.\n * When active, users can select text to create highlights.\n * A callback fires with the annotation details for persistence.\n */\nexport function usePdfHighlightMode({\n pdfViewerRef,\n document,\n enabled,\n onTextHighlight,\n onHighlightDelete,\n}: UsePdfHighlightModeOptions): UsePdfHighlightModeResult {\n const [highlightModeActive, setHighlightModeActive] = useState(false);\n const onTextHighlightRef = useRef(onTextHighlight);\n const onHighlightDeleteRef = useRef(onHighlightDelete);\n const knownEditorIdsRef = useRef<Set<string>>(new Set());\n const editorEventsRef = useRef<Map<string, PdfTextHighlightEvent>>(new Map());\n\n // Keep callback refs in sync\n useEffect(\n function syncCallbackRef() {\n onTextHighlightRef.current = onTextHighlight;\n onHighlightDeleteRef.current = onHighlightDelete;\n },\n [onTextHighlight, onHighlightDelete]\n );\n\n // Toggle the PDF.js annotation editor mode\n useEffect(\n function syncHighlightMode() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n\n try {\n if (highlightModeActive && enabled) {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.HIGHLIGHT,\n };\n } else {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.NONE,\n };\n }\n } catch {\n // AnnotationEditorUIManager may not be initialized yet\n }\n },\n [pdfViewerRef, document, highlightModeActive, enabled]\n );\n\n // Deactivate highlight mode when the feature is disabled\n useEffect(\n function deactivateOnDisable() {\n if (!enabled) {\n setHighlightModeActive(false);\n }\n },\n [enabled]\n );\n\n // Clear tracked editors when the document changes (but not on highlight toggle)\n const prevDocumentRef = useRef<PDFDocumentProxy | undefined>(undefined);\n useEffect(\n function clearOnDocumentChange() {\n if (document !== prevDocumentRef.current) {\n knownEditorIdsRef.current.clear();\n editorEventsRef.current.clear();\n prevDocumentRef.current = document;\n }\n },\n [document]\n );\n\n // Listen for new highlights being added to annotation storage\n useEffect(\n function listenForHighlights() {\n if (document == null || !highlightModeActive || !enabled) {\n return;\n }\n\n const storage = document.annotationStorage;\n const previousOnAnnotationEditor = storage.onAnnotationEditor;\n\n // Monkey-patch storage.remove to detect highlight deletions.\n // This is fragile but necessary because PDF.js does not emit events\n // when editors are removed. Restore the original on cleanup.\n const originalRemove = storage.remove.bind(storage);\n storage.remove = (key: string) => {\n const savedEvent = editorEventsRef.current.get(key);\n if (savedEvent != null) {\n editorEventsRef.current.delete(key);\n knownEditorIdsRef.current.delete(key);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n originalRemove(key);\n };\n\n storage.onAnnotationEditor = (type: string | number | null) => {\n // onAnnotationEditor fires with the editor's static _type (string \"highlight\")\n if (type !== \"highlight\") {\n return;\n }\n\n // Find new editors in storage\n const allEntries = storage.getAll();\n if (allEntries == null) {\n return;\n }\n\n for (const [id, entry] of Object.entries(allEntries)) {\n if (knownEditorIdsRef.current.has(id)) {\n continue;\n }\n\n // Check if this is a highlight editor with serializable data\n if (\n typeof entry === \"object\" &&\n entry != null &&\n \"serialize\" in entry &&\n typeof entry.serialize === \"function\"\n ) {\n knownEditorIdsRef.current.add(id);\n const serialized = entry.serialize(false);\n if (\n serialized == null ||\n serialized.annotationType !== AnnotationEditorType.HIGHLIGHT\n ) {\n continue;\n }\n\n const rects =\n serialized.quadPoints != null\n ? quadPointsToRects(serialized.quadPoints)\n : [];\n\n if (rects.length === 0) {\n continue;\n }\n\n const color = Array.isArray(serialized.color)\n ? rgbArrayToHex(serialized.color)\n : \"#fff066\";\n\n // Extract text from the editor's aria-label (stores selected text)\n const selectedText =\n typeof entry.div?.getAttribute === \"function\"\n ? (entry.div.getAttribute(\"aria-label\") ?? \"\")\n : \"\";\n\n const event: PdfTextHighlightEvent = {\n editorId: id,\n page: serialized.pageIndex + 1,\n rects,\n selectedText,\n color,\n };\n\n // Store the event so we can provide it back on delete\n editorEventsRef.current.set(id, event);\n\n onTextHighlightRef.current?.(event);\n }\n }\n };\n\n return () => {\n storage.onAnnotationEditor = previousOnAnnotationEditor;\n storage.remove = originalRemove;\n };\n },\n [document, highlightModeActive, enabled]\n );\n\n const toggleHighlightMode = useCallback(() => {\n setHighlightModeActive((prev) => !prev);\n }, []);\n\n const deleteHighlight = useCallback(\n (editorId: string) => {\n if (document == null) return;\n const storage = document.annotationStorage;\n\n // Fire the delete callback directly. The monkey-patch on storage.remove\n // only exists while highlight mode is active, so we handle it here to\n // ensure the callback fires regardless of highlight mode state.\n // Clean up refs first so the monkey-patch (if active) won't double-fire.\n const savedEvent = editorEventsRef.current.get(editorId);\n if (savedEvent != null) {\n editorEventsRef.current.delete(editorId);\n knownEditorIdsRef.current.delete(editorId);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n\n // Remove the editor's DOM element if it exists\n const allEntries = storage.getAll() as Record<string, unknown> | null;\n const entry = allEntries?.[editorId];\n if (hasDiv(entry) && entry.div instanceof HTMLElement) {\n entry.div.remove();\n }\n\n storage.remove(editorId);\n },\n [document]\n );\n\n return {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight,\n };\n}\n\nfunction hasDiv(obj: unknown): obj is { div: unknown } {\n return obj != null && typeof obj === \"object\" && \"div\" in obj;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfOutline.js","names":["useEffect","useState","OUTLINE_HEADING_SIZE_RATIO","OUTLINE_MAX_HEADING_LENGTH","EMPTY_OUTLINE","usePdfOutline","document","outlineItems","setOutlineItems","cancelled","outline","getOutline","length","items","resolveBookmarkOutline","extractHeadingsFromText","resolveItems","nodes","depth","node","pageNumber","dest","getDestination","pageIndex","getPageIndex","Array","isArray","push","title","bold","italic","isTextItem","item","roundFontSize","size","Math","round","getFontSize","height","transform","sqrt","numPages","pageContents","Promise","all","from","_","i","getPage","then","page","getTextContent","sizeCounts","Map","textContent","rawItem","str","trim","fontSize","rounded","set","get","bodySize","maxCount","count","headingThreshold","headingSizes","Set","add","sortedSizes","sort","a","b","sizeToDepth","candidateHeadings","pageIdx","lineItems","linePageNumber","lineFontName","lineHeadingFontSize","lastFlushWasHeading","flushLine","headingChars","totalChars","li","len","text","has","fullText","map","join","fontName","contiguous","isHeadingSized","hasEOL","mergedHeadings","heading","prev","abs","filter"],"sources":["usePdfOutline.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport { useEffect, useState } from \"react\";\nimport {\n OUTLINE_HEADING_SIZE_RATIO,\n OUTLINE_MAX_HEADING_LENGTH,\n} from \"../constants.js\";\nimport type { OutlineItem } from \"../types.js\";\n\nconst EMPTY_OUTLINE: OutlineItem[] = [];\n\nexport function usePdfOutline(\n document: PDFDocumentProxy | undefined,\n): OutlineItem[] {\n const [outlineItems, setOutlineItems] = useState<OutlineItem[]>(\n EMPTY_OUTLINE,\n );\n\n useEffect(\n function loadOutline() {\n if (document == null) {\n setOutlineItems(EMPTY_OUTLINE);\n return;\n }\n\n let cancelled = false;\n\n void (async () => {\n try {\n // Try embedded bookmarks first\n const outline = await document.getOutline();\n if (cancelled) return;\n\n if (outline != null && outline.length > 0) {\n const items = await resolveBookmarkOutline(document, outline);\n if (!cancelled) {\n setOutlineItems(items);\n }\n return;\n }\n\n // Fall back to extracting headings from text content\n const items = await extractHeadingsFromText(document);\n if (!cancelled) {\n setOutlineItems(items.length > 0 ? items : EMPTY_OUTLINE);\n }\n } catch {\n // If extraction fails entirely, leave outline empty\n if (!cancelled) {\n setOutlineItems(EMPTY_OUTLINE);\n }\n }\n })();\n\n return () => {\n cancelled = true;\n };\n },\n [document],\n );\n\n return outlineItems;\n}\n\ntype BookmarkNode = Awaited<ReturnType<PDFDocumentProxy[\"getOutline\"]>>[number];\n\nasync function resolveBookmarkOutline(\n document: PDFDocumentProxy,\n outline: BookmarkNode[],\n): Promise<OutlineItem[]> {\n const items: OutlineItem[] = [];\n\n const resolveItems = async (\n nodes: BookmarkNode[],\n depth: number,\n ): Promise<void> => {\n for (const node of nodes) {\n let pageNumber = 1;\n try {\n if (typeof node.dest === \"string\") {\n const dest = await document.getDestination(node.dest);\n if (dest != null) {\n const pageIndex = await document.getPageIndex(dest[0]);\n pageNumber = pageIndex + 1;\n }\n } else if (Array.isArray(node.dest) && node.dest.length > 0) {\n const pageIndex = await document.getPageIndex(node.dest[0]);\n pageNumber = pageIndex + 1;\n }\n } catch {\n // If destination resolution fails, default to page 1\n }\n\n items.push({\n title: node.title,\n depth,\n pageNumber,\n bold: node.bold,\n italic: node.italic,\n });\n\n if (node.items.length > 0) {\n await resolveItems(node.items, depth + 1);\n }\n }\n };\n\n await resolveItems(outline, 0);\n return items;\n}\n\ninterface RawHeading {\n text: string;\n fontSize: number;\n pageNumber: number;\n fontName: string;\n /** True if this heading line immediately followed another heading line (no body text in between). */\n contiguous: boolean;\n}\n\ninterface TextItemLike {\n str: string;\n height: number;\n fontName: string;\n transform: number[];\n hasEOL: boolean;\n}\n\nfunction isTextItem(\n item: Record<string, unknown>,\n): item is Record<string, unknown> & TextItemLike {\n return \"str\" in item && \"transform\" in item;\n}\n\nfunction roundFontSize(size: number): number {\n return Math.round(size * 10) / 10;\n}\n\n/**\n * Extract the font size from a pdfjs TextItem.\n * Prefer `height` when available, otherwise derive from the transform matrix.\n * The transform is [scaleX, skewY, skewX, scaleY, translateX, translateY].\n * Font size = sqrt(skewX² + scaleY²), which handles rotated text too.\n */\nfunction getFontSize(item: TextItemLike): number {\n if (item.height > 0) {\n return item.height;\n }\n const transform = item.transform;\n if (Array.isArray(transform) && transform.length >= 4) {\n return Math.sqrt(\n (transform[2]) * (transform[2])\n + (transform[3]) * (transform[3]),\n );\n }\n return 0;\n}\n\nasync function extractHeadingsFromText(\n document: PDFDocumentProxy,\n): Promise<OutlineItem[]> {\n const numPages = document.numPages;\n\n // Fetch all pages' text content in parallel\n const pageContents = await Promise.all(\n Array.from(\n { length: numPages },\n (_, i) => document.getPage(i + 1).then(page => page.getTextContent()),\n ),\n );\n\n // Collect font size frequencies across all pages\n const sizeCounts = new Map<number, number>();\n for (const textContent of pageContents) {\n for (const rawItem of textContent.items) {\n const item = rawItem as Record<string, unknown>;\n if (!isTextItem(item) || item.str.trim().length === 0) {\n continue;\n }\n const fontSize = getFontSize(item);\n if (fontSize > 0) {\n const rounded = roundFontSize(fontSize);\n sizeCounts.set(rounded, (sizeCounts.get(rounded) ?? 0) + 1);\n }\n }\n }\n\n // Find the most common font size (body text)\n let bodySize = 0;\n let maxCount = 0;\n for (const [size, count] of sizeCounts) {\n if (count > maxCount) {\n maxCount = count;\n bodySize = size;\n }\n }\n\n if (bodySize === 0) {\n return [];\n }\n\n // Heading threshold: text significantly larger than body text\n const headingThreshold = bodySize * OUTLINE_HEADING_SIZE_RATIO;\n\n // Collect all unique heading sizes above threshold\n const headingSizes = new Set<number>();\n for (const [size] of sizeCounts) {\n if (size >= headingThreshold) {\n headingSizes.add(size);\n }\n }\n\n if (headingSizes.size === 0) {\n return [];\n }\n\n // Sort heading sizes descending (largest = depth 0)\n const sortedSizes = [...headingSizes].sort((a, b) => b - a);\n const sizeToDepth = new Map<number, number>();\n for (let i = 0; i < sortedSizes.length; i++) {\n sizeToDepth.set(sortedSizes[i], i);\n }\n\n // Extract headings with page numbers.\n // pdfjs splits visual lines into multiple TextItems (e.g. \"1.\" and\n // \"Introduction\" are separate items). We accumulate all items on the\n // same visual line and treat the line as a heading if most of its\n // content is at a heading font size.\n const candidateHeadings: RawHeading[] = [];\n\n for (let pageIdx = 0; pageIdx < pageContents.length; pageIdx++) {\n const textContent = pageContents[pageIdx];\n const pageNumber = pageIdx + 1;\n\n let lineItems: Array<{ text: string; fontSize: number }> = [];\n let linePageNumber = pageNumber;\n let lineFontName = \"\";\n let lineHeadingFontSize = 0;\n let lastFlushWasHeading = false;\n\n const flushLine = (): void => {\n if (lineItems.length === 0) return;\n\n // Check if the majority of the line's non-whitespace content is heading-sized\n let headingChars = 0;\n let totalChars = 0;\n for (const li of lineItems) {\n const len = li.text.trim().length;\n totalChars += len;\n if (sizeToDepth.has(roundFontSize(li.fontSize))) {\n headingChars += len;\n }\n }\n\n if (totalChars > 0 && headingChars / totalChars > 0.5) {\n const fullText = lineItems.map((li) => li.text).join(\"\").trim();\n if (fullText.length > 0) {\n candidateHeadings.push({\n text: fullText,\n fontSize: lineHeadingFontSize,\n pageNumber: linePageNumber,\n fontName: lineFontName,\n contiguous: lastFlushWasHeading,\n });\n }\n lastFlushWasHeading = true;\n } else {\n lastFlushWasHeading = false;\n }\n\n lineItems = [];\n lineHeadingFontSize = 0;\n };\n\n for (const rawItem of textContent.items) {\n const item = rawItem as Record<string, unknown>;\n if (!isTextItem(item)) {\n continue;\n }\n\n const fontSize = getFontSize(item);\n const rounded = roundFontSize(fontSize);\n const isHeadingSized = sizeToDepth.has(rounded);\n\n if (isHeadingSized && lineHeadingFontSize === 0) {\n lineHeadingFontSize = rounded;\n linePageNumber = pageNumber;\n lineFontName = item.fontName;\n }\n\n if (lineHeadingFontSize > 0) {\n lineItems.push({ text: item.str, fontSize });\n }\n\n if (item.hasEOL) {\n flushLine();\n }\n }\n\n // Flush remaining items at end of page\n flushLine();\n }\n\n // Merge consecutive heading lines that were contiguous (no body text between them)\n // and at the same font size. This joins multi-line titles that wrap in the PDF.\n const mergedHeadings: RawHeading[] = [];\n for (const heading of candidateHeadings) {\n const prev = mergedHeadings[mergedHeadings.length - 1];\n if (\n prev != null\n && heading.contiguous\n && Math.abs(prev.fontSize - heading.fontSize) < 0.1\n ) {\n prev.text += \" \" + heading.text;\n } else {\n mergedHeadings.push({ ...heading });\n }\n }\n\n return mergedHeadings\n .filter((heading) =>\n heading.text.trim().length <= OUTLINE_MAX_HEADING_LENGTH\n )\n .map((heading) => ({\n title: heading.text.trim(),\n depth: sizeToDepth.get(heading.fontSize) ?? 0,\n pageNumber: heading.pageNumber,\n bold: false,\n italic: false,\n }));\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePdfOutline.js","names":["useEffect","useState","OUTLINE_HEADING_SIZE_RATIO","OUTLINE_MAX_HEADING_LENGTH","EMPTY_OUTLINE","usePdfOutline","document","outlineItems","setOutlineItems","cancelled","outline","getOutline","length","items","resolveBookmarkOutline","extractHeadingsFromText","resolveItems","nodes","depth","node","pageNumber","dest","getDestination","pageIndex","getPageIndex","Array","isArray","push","title","bold","italic","isTextItem","item","roundFontSize","size","Math","round","getFontSize","height","transform","sqrt","numPages","pageContents","Promise","all","from","_","i","getPage","then","page","getTextContent","sizeCounts","Map","textContent","rawItem","str","trim","fontSize","rounded","set","get","bodySize","maxCount","count","headingThreshold","headingSizes","Set","add","sortedSizes","sort","a","b","sizeToDepth","candidateHeadings","pageIdx","lineItems","linePageNumber","lineFontName","lineHeadingFontSize","lastFlushWasHeading","flushLine","headingChars","totalChars","li","len","text","has","fullText","map","join","fontName","contiguous","isHeadingSized","hasEOL","mergedHeadings","heading","prev","abs","filter"],"sources":["usePdfOutline.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport { useEffect, useState } from \"react\";\n\nimport {\n OUTLINE_HEADING_SIZE_RATIO,\n OUTLINE_MAX_HEADING_LENGTH,\n} from \"../constants.js\";\nimport type { OutlineItem } from \"../types.js\";\n\nconst EMPTY_OUTLINE: OutlineItem[] = [];\n\nexport function usePdfOutline(\n document: PDFDocumentProxy | undefined\n): OutlineItem[] {\n const [outlineItems, setOutlineItems] =\n useState<OutlineItem[]>(EMPTY_OUTLINE);\n\n useEffect(\n function loadOutline() {\n if (document == null) {\n setOutlineItems(EMPTY_OUTLINE);\n return;\n }\n\n let cancelled = false;\n\n void (async () => {\n try {\n // Try embedded bookmarks first\n const outline = await document.getOutline();\n if (cancelled) return;\n\n if (outline != null && outline.length > 0) {\n const items = await resolveBookmarkOutline(document, outline);\n if (!cancelled) {\n setOutlineItems(items);\n }\n return;\n }\n\n // Fall back to extracting headings from text content\n const items = await extractHeadingsFromText(document);\n if (!cancelled) {\n setOutlineItems(items.length > 0 ? items : EMPTY_OUTLINE);\n }\n } catch {\n // If extraction fails entirely, leave outline empty\n if (!cancelled) {\n setOutlineItems(EMPTY_OUTLINE);\n }\n }\n })();\n\n return () => {\n cancelled = true;\n };\n },\n [document]\n );\n\n return outlineItems;\n}\n\ntype BookmarkNode = Awaited<ReturnType<PDFDocumentProxy[\"getOutline\"]>>[number];\n\nasync function resolveBookmarkOutline(\n document: PDFDocumentProxy,\n outline: BookmarkNode[]\n): Promise<OutlineItem[]> {\n const items: OutlineItem[] = [];\n\n const resolveItems = async (\n nodes: BookmarkNode[],\n depth: number\n ): Promise<void> => {\n for (const node of nodes) {\n let pageNumber = 1;\n try {\n if (typeof node.dest === \"string\") {\n const dest = await document.getDestination(node.dest);\n if (dest != null) {\n const pageIndex = await document.getPageIndex(dest[0]);\n pageNumber = pageIndex + 1;\n }\n } else if (Array.isArray(node.dest) && node.dest.length > 0) {\n const pageIndex = await document.getPageIndex(node.dest[0]);\n pageNumber = pageIndex + 1;\n }\n } catch {\n // If destination resolution fails, default to page 1\n }\n\n items.push({\n title: node.title,\n depth,\n pageNumber,\n bold: node.bold,\n italic: node.italic,\n });\n\n if (node.items.length > 0) {\n await resolveItems(node.items, depth + 1);\n }\n }\n };\n\n await resolveItems(outline, 0);\n return items;\n}\n\ninterface RawHeading {\n text: string;\n fontSize: number;\n pageNumber: number;\n fontName: string;\n /** True if this heading line immediately followed another heading line (no body text in between). */\n contiguous: boolean;\n}\n\ninterface TextItemLike {\n str: string;\n height: number;\n fontName: string;\n transform: number[];\n hasEOL: boolean;\n}\n\nfunction isTextItem(\n item: Record<string, unknown>\n): item is Record<string, unknown> & TextItemLike {\n return \"str\" in item && \"transform\" in item;\n}\n\nfunction roundFontSize(size: number): number {\n return Math.round(size * 10) / 10;\n}\n\n/**\n * Extract the font size from a pdfjs TextItem.\n * Prefer `height` when available, otherwise derive from the transform matrix.\n * The transform is [scaleX, skewY, skewX, scaleY, translateX, translateY].\n * Font size = sqrt(skewX² + scaleY²), which handles rotated text too.\n */\nfunction getFontSize(item: TextItemLike): number {\n if (item.height > 0) {\n return item.height;\n }\n const transform = item.transform;\n if (Array.isArray(transform) && transform.length >= 4) {\n return Math.sqrt(transform[2] * transform[2] + transform[3] * transform[3]);\n }\n return 0;\n}\n\nasync function extractHeadingsFromText(\n document: PDFDocumentProxy\n): Promise<OutlineItem[]> {\n const numPages = document.numPages;\n\n // Fetch all pages' text content in parallel\n const pageContents = await Promise.all(\n Array.from({ length: numPages }, (_, i) =>\n document.getPage(i + 1).then((page) => page.getTextContent())\n )\n );\n\n // Collect font size frequencies across all pages\n const sizeCounts = new Map<number, number>();\n for (const textContent of pageContents) {\n for (const rawItem of textContent.items) {\n const item = rawItem as Record<string, unknown>;\n if (!isTextItem(item) || item.str.trim().length === 0) {\n continue;\n }\n const fontSize = getFontSize(item);\n if (fontSize > 0) {\n const rounded = roundFontSize(fontSize);\n sizeCounts.set(rounded, (sizeCounts.get(rounded) ?? 0) + 1);\n }\n }\n }\n\n // Find the most common font size (body text)\n let bodySize = 0;\n let maxCount = 0;\n for (const [size, count] of sizeCounts) {\n if (count > maxCount) {\n maxCount = count;\n bodySize = size;\n }\n }\n\n if (bodySize === 0) {\n return [];\n }\n\n // Heading threshold: text significantly larger than body text\n const headingThreshold = bodySize * OUTLINE_HEADING_SIZE_RATIO;\n\n // Collect all unique heading sizes above threshold\n const headingSizes = new Set<number>();\n for (const [size] of sizeCounts) {\n if (size >= headingThreshold) {\n headingSizes.add(size);\n }\n }\n\n if (headingSizes.size === 0) {\n return [];\n }\n\n // Sort heading sizes descending (largest = depth 0)\n const sortedSizes = [...headingSizes].sort((a, b) => b - a);\n const sizeToDepth = new Map<number, number>();\n for (let i = 0; i < sortedSizes.length; i++) {\n sizeToDepth.set(sortedSizes[i], i);\n }\n\n // Extract headings with page numbers.\n // pdfjs splits visual lines into multiple TextItems (e.g. \"1.\" and\n // \"Introduction\" are separate items). We accumulate all items on the\n // same visual line and treat the line as a heading if most of its\n // content is at a heading font size.\n const candidateHeadings: RawHeading[] = [];\n\n for (let pageIdx = 0; pageIdx < pageContents.length; pageIdx++) {\n const textContent = pageContents[pageIdx];\n const pageNumber = pageIdx + 1;\n\n let lineItems: Array<{ text: string; fontSize: number }> = [];\n let linePageNumber = pageNumber;\n let lineFontName = \"\";\n let lineHeadingFontSize = 0;\n let lastFlushWasHeading = false;\n\n const flushLine = (): void => {\n if (lineItems.length === 0) return;\n\n // Check if the majority of the line's non-whitespace content is heading-sized\n let headingChars = 0;\n let totalChars = 0;\n for (const li of lineItems) {\n const len = li.text.trim().length;\n totalChars += len;\n if (sizeToDepth.has(roundFontSize(li.fontSize))) {\n headingChars += len;\n }\n }\n\n if (totalChars > 0 && headingChars / totalChars > 0.5) {\n const fullText = lineItems\n .map((li) => li.text)\n .join(\"\")\n .trim();\n if (fullText.length > 0) {\n candidateHeadings.push({\n text: fullText,\n fontSize: lineHeadingFontSize,\n pageNumber: linePageNumber,\n fontName: lineFontName,\n contiguous: lastFlushWasHeading,\n });\n }\n lastFlushWasHeading = true;\n } else {\n lastFlushWasHeading = false;\n }\n\n lineItems = [];\n lineHeadingFontSize = 0;\n };\n\n for (const rawItem of textContent.items) {\n const item = rawItem as Record<string, unknown>;\n if (!isTextItem(item)) {\n continue;\n }\n\n const fontSize = getFontSize(item);\n const rounded = roundFontSize(fontSize);\n const isHeadingSized = sizeToDepth.has(rounded);\n\n if (isHeadingSized && lineHeadingFontSize === 0) {\n lineHeadingFontSize = rounded;\n linePageNumber = pageNumber;\n lineFontName = item.fontName;\n }\n\n if (lineHeadingFontSize > 0) {\n lineItems.push({ text: item.str, fontSize });\n }\n\n if (item.hasEOL) {\n flushLine();\n }\n }\n\n // Flush remaining items at end of page\n flushLine();\n }\n\n // Merge consecutive heading lines that were contiguous (no body text between them)\n // and at the same font size. This joins multi-line titles that wrap in the PDF.\n const mergedHeadings: RawHeading[] = [];\n for (const heading of candidateHeadings) {\n const prev = mergedHeadings[mergedHeadings.length - 1];\n if (\n prev != null &&\n heading.contiguous &&\n Math.abs(prev.fontSize - heading.fontSize) < 0.1\n ) {\n prev.text += \" \" + heading.text;\n } else {\n mergedHeadings.push({ ...heading });\n }\n }\n\n return mergedHeadings\n .filter(\n (heading) => heading.text.trim().length <= OUTLINE_MAX_HEADING_LENGTH\n )\n .map((heading) => ({\n title: heading.text.trim(),\n depth: sizeToDepth.get(heading.fontSize) ?? 0,\n pageNumber: heading.pageNumber,\n bold: false,\n italic: false,\n }));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfViewer.js","names":["AnnotationEditorType","EventBus","PDFFindController","PDFLinkService","PDFViewer","useEffect","useRef","PAGES_LOADED_EVENT","usePdfViewer","containerRef","viewerRef","document","initialScale","initialPage","pdfViewerRef","eventBusRef","findControllerRef","container","current","viewer","eventBus","linkService","findController","updateMatchesCountOnProgress","pdfViewer","removePageBorders","annotationEditorMode","NONE","annotationEditorHighlightColors","setViewer","setDocument","onPagesLoaded","currentScale","currentPageNumber","scrollPageIntoView","pageNumber","off","on","cleanup"],"sources":["usePdfViewer.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\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport {\n EventBus,\n PDFFindController,\n PDFLinkService,\n PDFViewer,\n} from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport { PAGES_LOADED_EVENT } from \"../constants.js\";\n\nexport interface UsePdfViewerResult {\n pdfViewerRef: RefObject<PDFViewer | null>;\n eventBusRef: RefObject<EventBus | null>;\n findControllerRef: RefObject<PDFFindController | null>;\n}\n\nexport function usePdfViewer(\n containerRef: RefObject<HTMLDivElement | null>,\n viewerRef: RefObject<HTMLDivElement | null>,\n document: PDFDocumentProxy | undefined,\n initialScale?: number,\n initialPage?: number,\n): UsePdfViewerResult {\n const pdfViewerRef = useRef<PDFViewer | null>(null);\n const eventBusRef = useRef<EventBus | null>(null);\n const findControllerRef = useRef<PDFFindController | null>(null);\n\n useEffect(function initializePdfViewer() {\n const container = containerRef.current;\n const viewer = viewerRef.current;\n if (container == null || viewer == null || document == null) {\n return;\n }\n\n const eventBus = new EventBus();\n const linkService = new PDFLinkService({ eventBus });\n const findController = new PDFFindController({\n linkService,\n eventBus,\n updateMatchesCountOnProgress: true,\n });\n\n const pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n linkService,\n findController,\n removePageBorders: true,\n annotationEditorMode: AnnotationEditorType.NONE,\n annotationEditorHighlightColors:\n \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\",\n });\n\n linkService.setViewer(pdfViewer);\n linkService.setDocument(document);\n findController.setDocument(document);\n pdfViewer.setDocument(document);\n\n // Apply initial scale and page after pages are loaded to avoid\n // \"scrollPageIntoView: not a valid pageNumber\" console errors.\n const onPagesLoaded = () => {\n if (initialScale != null) {\n pdfViewer.currentScale = initialScale;\n }\n if (initialPage != null && initialPage > 1) {\n pdfViewer.currentPageNumber = initialPage;\n pdfViewer.scrollPageIntoView({ pageNumber: initialPage });\n }\n eventBus.off(PAGES_LOADED_EVENT, onPagesLoaded);\n };\n eventBus.on(PAGES_LOADED_EVENT, onPagesLoaded);\n\n eventBusRef.current = eventBus;\n findControllerRef.current = findController;\n pdfViewerRef.current = pdfViewer;\n\n return () => {\n pdfViewerRef.current = null;\n eventBusRef.current = null;\n findControllerRef.current = null;\n pdfViewer.cleanup();\n };\n }, [containerRef, viewerRef, document]);\n\n return { pdfViewerRef, eventBusRef, findControllerRef };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,YAAY;AAEjD,SACEC,QAAQ,EACRC,iBAAiB,EACjBC,cAAc,EACdC,SAAS,QACJ,+BAA+B;AAEtC,SAASC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,kBAAkB,QAAQ,iBAAiB;AAQpD,OAAO,SAASC,YAAYA,CAC1BC,YAA8C,EAC9CC,SAA2C,EAC3CC,QAAsC,EACtCC,YAAqB,EACrBC,WAAoB,EACA;EACpB,MAAMC,YAAY,GAAGR,MAAM,CAAmB,IAAI,CAAC;EACnD,MAAMS,WAAW,GAAGT,MAAM,CAAkB,IAAI,CAAC;EACjD,MAAMU,iBAAiB,GAAGV,MAAM,CAA2B,IAAI,CAAC;EAEhED,SAAS,CAAC,YAA+B;IACvC,MAAMY,SAAS,GAAGR,YAAY,CAACS,OAAO;IACtC,MAAMC,MAAM,GAAGT,SAAS,CAACQ,OAAO;IAChC,IAAID,SAAS,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,IAAIR,QAAQ,IAAI,IAAI,EAAE;MAC3D;IACF;IAEA,MAAMS,QAAQ,GAAG,IAAInB,QAAQ,CAAC,CAAC;IAC/B,MAAMoB,WAAW,GAAG,IAAIlB,cAAc,CAAC;MAAEiB;IAAS,CAAC,CAAC;IACpD,MAAME,cAAc,GAAG,IAAIpB,iBAAiB,CAAC;MAC3CmB,WAAW;MACXD,QAAQ;MACRG,4BAA4B,EAAE;IAChC,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAG,IAAIpB,SAAS,CAAC;MAC9Ba,SAAS;MACTE,MAAM;MACNC,QAAQ;MACRC,WAAW;MACXC,cAAc;MACdG,iBAAiB,EAAE,IAAI;MACvBC,oBAAoB,EAAE1B,oBAAoB,CAAC2B,IAAI;MAC/CC,+BAA+B,EAC7B;IACJ,CAAC,CAAC;IAEFP,WAAW,CAACQ,SAAS,CAACL,SAAS,CAAC;IAChCH,WAAW,CAACS,WAAW,CAACnB,QAAQ,CAAC;IACjCW,cAAc,CAACQ,WAAW,CAACnB,QAAQ,CAAC;IACpCa,SAAS,CAACM,WAAW,CAACnB,QAAQ,CAAC;;IAE/B;IACA;IACA,MAAMoB,aAAa,GAAGA,CAAA,KAAM;MAC1B,IAAInB,YAAY,IAAI,IAAI,EAAE;QACxBY,SAAS,CAACQ,YAAY,GAAGpB,YAAY;MACvC;MACA,IAAIC,WAAW,IAAI,IAAI,IAAIA,WAAW,GAAG,CAAC,EAAE;QAC1CW,SAAS,CAACS,iBAAiB,GAAGpB,WAAW;QACzCW,SAAS,CAACU,kBAAkB,CAAC;UAAEC,UAAU,EAAEtB;QAAY,CAAC,CAAC;MAC3D;MACAO,QAAQ,CAACgB,GAAG,CAAC7B,kBAAkB,EAAEwB,aAAa,CAAC;IACjD,CAAC;IACDX,QAAQ,CAACiB,EAAE,CAAC9B,kBAAkB,EAAEwB,aAAa,CAAC;IAE9ChB,WAAW,CAACG,OAAO,GAAGE,QAAQ;IAC9BJ,iBAAiB,CAACE,OAAO,GAAGI,cAAc;IAC1CR,YAAY,CAACI,OAAO,GAAGM,SAAS;IAEhC,OAAO,MAAM;MACXV,YAAY,CAACI,OAAO,GAAG,IAAI;MAC3BH,WAAW,CAACG,OAAO,GAAG,IAAI;MAC1BF,iBAAiB,CAACE,OAAO,GAAG,IAAI;MAChCM,SAAS,CAACc,OAAO,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAAC7B,YAAY,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAEvC,OAAO;IAAEG,YAAY;IAAEC,WAAW;IAAEC;EAAkB,CAAC;AACzD","ignoreList":[]}
1
+ {"version":3,"file":"usePdfViewer.js","names":["AnnotationEditorType","EventBus","PDFFindController","PDFLinkService","PDFViewer","useEffect","useRef","PAGES_LOADED_EVENT","usePdfViewer","containerRef","viewerRef","document","initialScale","initialPage","pdfViewerRef","eventBusRef","findControllerRef","container","current","viewer","eventBus","linkService","findController","updateMatchesCountOnProgress","pdfViewer","removePageBorders","annotationEditorMode","NONE","annotationEditorHighlightColors","setViewer","setDocument","onPagesLoaded","currentScale","currentPageNumber","scrollPageIntoView","pageNumber","off","on","cleanup"],"sources":["usePdfViewer.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\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport {\n EventBus,\n PDFFindController,\n PDFLinkService,\n PDFViewer,\n} from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nimport { PAGES_LOADED_EVENT } from \"../constants.js\";\n\nexport interface UsePdfViewerResult {\n pdfViewerRef: RefObject<PDFViewer | null>;\n eventBusRef: RefObject<EventBus | null>;\n findControllerRef: RefObject<PDFFindController | null>;\n}\n\nexport function usePdfViewer(\n containerRef: RefObject<HTMLDivElement | null>,\n viewerRef: RefObject<HTMLDivElement | null>,\n document: PDFDocumentProxy | undefined,\n initialScale?: number,\n initialPage?: number\n): UsePdfViewerResult {\n const pdfViewerRef = useRef<PDFViewer | null>(null);\n const eventBusRef = useRef<EventBus | null>(null);\n const findControllerRef = useRef<PDFFindController | null>(null);\n\n useEffect(\n function initializePdfViewer() {\n const container = containerRef.current;\n const viewer = viewerRef.current;\n if (container == null || viewer == null || document == null) {\n return;\n }\n\n const eventBus = new EventBus();\n const linkService = new PDFLinkService({ eventBus });\n const findController = new PDFFindController({\n linkService,\n eventBus,\n updateMatchesCountOnProgress: true,\n });\n\n const pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n linkService,\n findController,\n removePageBorders: true,\n annotationEditorMode: AnnotationEditorType.NONE,\n annotationEditorHighlightColors:\n \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\",\n });\n\n linkService.setViewer(pdfViewer);\n linkService.setDocument(document);\n findController.setDocument(document);\n pdfViewer.setDocument(document);\n\n // Apply initial scale and page after pages are loaded to avoid\n // \"scrollPageIntoView: not a valid pageNumber\" console errors.\n const onPagesLoaded = () => {\n if (initialScale != null) {\n pdfViewer.currentScale = initialScale;\n }\n if (initialPage != null && initialPage > 1) {\n pdfViewer.currentPageNumber = initialPage;\n pdfViewer.scrollPageIntoView({ pageNumber: initialPage });\n }\n eventBus.off(PAGES_LOADED_EVENT, onPagesLoaded);\n };\n eventBus.on(PAGES_LOADED_EVENT, onPagesLoaded);\n\n eventBusRef.current = eventBus;\n findControllerRef.current = findController;\n pdfViewerRef.current = pdfViewer;\n\n return () => {\n pdfViewerRef.current = null;\n eventBusRef.current = null;\n findControllerRef.current = null;\n pdfViewer.cleanup();\n };\n },\n [containerRef, viewerRef, document]\n );\n\n return { pdfViewerRef, eventBusRef, findControllerRef };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,YAAY;AAEjD,SACEC,QAAQ,EACRC,iBAAiB,EACjBC,cAAc,EACdC,SAAS,QACJ,+BAA+B;AAEtC,SAASC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,SAASC,kBAAkB,QAAQ,iBAAiB;AAQpD,OAAO,SAASC,YAAYA,CAC1BC,YAA8C,EAC9CC,SAA2C,EAC3CC,QAAsC,EACtCC,YAAqB,EACrBC,WAAoB,EACA;EACpB,MAAMC,YAAY,GAAGR,MAAM,CAAmB,IAAI,CAAC;EACnD,MAAMS,WAAW,GAAGT,MAAM,CAAkB,IAAI,CAAC;EACjD,MAAMU,iBAAiB,GAAGV,MAAM,CAA2B,IAAI,CAAC;EAEhED,SAAS,CACP,YAA+B;IAC7B,MAAMY,SAAS,GAAGR,YAAY,CAACS,OAAO;IACtC,MAAMC,MAAM,GAAGT,SAAS,CAACQ,OAAO;IAChC,IAAID,SAAS,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,IAAIR,QAAQ,IAAI,IAAI,EAAE;MAC3D;IACF;IAEA,MAAMS,QAAQ,GAAG,IAAInB,QAAQ,CAAC,CAAC;IAC/B,MAAMoB,WAAW,GAAG,IAAIlB,cAAc,CAAC;MAAEiB;IAAS,CAAC,CAAC;IACpD,MAAME,cAAc,GAAG,IAAIpB,iBAAiB,CAAC;MAC3CmB,WAAW;MACXD,QAAQ;MACRG,4BAA4B,EAAE;IAChC,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAG,IAAIpB,SAAS,CAAC;MAC9Ba,SAAS;MACTE,MAAM;MACNC,QAAQ;MACRC,WAAW;MACXC,cAAc;MACdG,iBAAiB,EAAE,IAAI;MACvBC,oBAAoB,EAAE1B,oBAAoB,CAAC2B,IAAI;MAC/CC,+BAA+B,EAC7B;IACJ,CAAC,CAAC;IAEFP,WAAW,CAACQ,SAAS,CAACL,SAAS,CAAC;IAChCH,WAAW,CAACS,WAAW,CAACnB,QAAQ,CAAC;IACjCW,cAAc,CAACQ,WAAW,CAACnB,QAAQ,CAAC;IACpCa,SAAS,CAACM,WAAW,CAACnB,QAAQ,CAAC;;IAE/B;IACA;IACA,MAAMoB,aAAa,GAAGA,CAAA,KAAM;MAC1B,IAAInB,YAAY,IAAI,IAAI,EAAE;QACxBY,SAAS,CAACQ,YAAY,GAAGpB,YAAY;MACvC;MACA,IAAIC,WAAW,IAAI,IAAI,IAAIA,WAAW,GAAG,CAAC,EAAE;QAC1CW,SAAS,CAACS,iBAAiB,GAAGpB,WAAW;QACzCW,SAAS,CAACU,kBAAkB,CAAC;UAAEC,UAAU,EAAEtB;QAAY,CAAC,CAAC;MAC3D;MACAO,QAAQ,CAACgB,GAAG,CAAC7B,kBAAkB,EAAEwB,aAAa,CAAC;IACjD,CAAC;IACDX,QAAQ,CAACiB,EAAE,CAAC9B,kBAAkB,EAAEwB,aAAa,CAAC;IAE9ChB,WAAW,CAACG,OAAO,GAAGE,QAAQ;IAC9BJ,iBAAiB,CAACE,OAAO,GAAGI,cAAc;IAC1CR,YAAY,CAACI,OAAO,GAAGM,SAAS;IAEhC,OAAO,MAAM;MACXV,YAAY,CAACI,OAAO,GAAG,IAAI;MAC3BH,WAAW,CAACG,OAAO,GAAG,IAAI;MAC1BF,iBAAiB,CAACE,OAAO,GAAG,IAAI;MAChCM,SAAS,CAACc,OAAO,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EACD,CAAC7B,YAAY,EAAEC,SAAS,EAAEC,QAAQ,CACpC,CAAC;EAED,OAAO;IAAEG,YAAY;IAAEC,WAAW;IAAEC;EAAkB,CAAC;AACzD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfViewerCore.js","names":["useCallback","useMemo","useRef","useState","usePdfAnnotationPortals","usePdfDocument","usePdfViewer","usePdfViewerSync","usePdfViewerCore","src","initialPage","initialScale","initialAutoSize","document","numPages","loading","error","scale","setScale","currentPage","setCurrentPage","autoSize","setAutoSize","containerRef","viewerRef","pdfViewerRef","eventBusRef","findControllerRef","handleScaleChange","newScale","handlePageChange","page","scrollToPage","syncScrollToPage","onScaleChange","onPageChange","portalTargets"],"sources":["usePdfViewerCore.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type {\n EventBus,\n PDFFindController,\n PDFViewer,\n} from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { AnnotationPortalTarget } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfAnnotationPortals } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfDocument } from \"./usePdfDocument.js\";\nimport { usePdfViewer } from \"./usePdfViewer.js\";\nimport { usePdfViewerSync } from \"./usePdfViewerSync.js\";\n\nexport interface UsePdfViewerCoreOptions {\n /** PDF source — URL string or ArrayBuffer */\n src: string | ArrayBuffer;\n /** Initial page number (1-indexed, default 1) */\n initialPage?: number;\n /** Initial zoom scale (default 1.0) */\n initialScale?: number;\n /** Whether auto-size (fit to width) is initially enabled (default false) */\n initialAutoSize?: boolean;\n}\n\nexport interface UsePdfViewerCoreResult {\n /** The loaded PDF document, or undefined while loading */\n document: PDFDocumentProxy | undefined;\n /** Total number of pages in the document */\n numPages: number;\n /** Whether the document is currently loading */\n loading: boolean;\n /** Error encountered while loading the document */\n error: Error | undefined;\n\n /** Ref to attach to the scroll-container div */\n containerRef: RefObject<HTMLDivElement>;\n /** Ref to attach to the inner viewer div (className=\"pdfViewer\") */\n viewerRef: RefObject<HTMLDivElement>;\n\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Navigate to a specific page (updates state and scrolls the viewer) */\n scrollToPage: (page: number) => void;\n\n /** Current zoom scale */\n scale: number;\n /** Set the zoom scale directly */\n setScale: (scale: number) => void;\n\n /** Whether auto-size (fit to width) is active */\n autoSize: boolean;\n /** Enable or disable auto-size */\n setAutoSize: (autoSize: boolean) => void;\n\n /** Portal targets for rendering annotation overlays on each page */\n portalTargets: AnnotationPortalTarget[];\n\n /** Ref to the internal pdfjs PDFViewer instance */\n pdfViewerRef: RefObject<PDFViewer | null>;\n /** Ref to the internal pdfjs EventBus instance */\n eventBusRef: RefObject<EventBus | null>;\n /** Ref to the internal pdfjs PDFFindController instance */\n findControllerRef: RefObject<PDFFindController | null>;\n}\n\nexport function usePdfViewerCore({\n src,\n initialPage = 1,\n initialScale = 1.0,\n initialAutoSize = false,\n}: UsePdfViewerCoreOptions): UsePdfViewerCoreResult {\n const { document, numPages, loading, error } = usePdfDocument(src);\n const [scale, setScale] = useState(initialScale);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const [autoSize, setAutoSize] = useState(initialAutoSize);\n const containerRef = useRef<HTMLDivElement>(null);\n const viewerRef = useRef<HTMLDivElement>(null);\n\n const { pdfViewerRef, eventBusRef, findControllerRef } = usePdfViewer(\n containerRef,\n viewerRef,\n document,\n initialScale,\n initialPage,\n );\n\n const handleScaleChange = useCallback((newScale: number) => {\n setScale(newScale);\n }, []);\n\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n }, []);\n\n const { scrollToPage: syncScrollToPage } = usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n containerRef,\n document,\n scale,\n autoSize,\n onScaleChange: handleScaleChange,\n onPageChange: handlePageChange,\n });\n\n const scrollToPage = useCallback(\n (page: number) => {\n setCurrentPage(page);\n syncScrollToPage(page);\n },\n [syncScrollToPage],\n );\n\n const portalTargets = usePdfAnnotationPortals(\n pdfViewerRef,\n eventBusRef,\n document,\n );\n\n return useMemo((): UsePdfViewerCoreResult => ({\n document,\n numPages,\n loading,\n error,\n containerRef,\n viewerRef,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n autoSize,\n setAutoSize,\n portalTargets,\n pdfViewerRef,\n eventBusRef,\n findControllerRef,\n }), [\n document,\n numPages,\n loading,\n error,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n autoSize,\n setAutoSize,\n portalTargets,\n ]);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAE9D,SAASC,uBAAuB,QAAQ,8BAA8B;AACtE,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,gBAAgB,QAAQ,uBAAuB;AAsDxD,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,GAAG;EACHC,WAAW,GAAG,CAAC;EACfC,YAAY,GAAG,GAAG;EAClBC,eAAe,GAAG;AACK,CAAC,EAA0B;EAClD,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGX,cAAc,CAACI,GAAG,CAAC;EAClE,MAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGf,QAAQ,CAACQ,YAAY,CAAC;EAChD,MAAM,CAACQ,WAAW,EAAEC,cAAc,CAAC,GAAGjB,QAAQ,CAACO,WAAW,CAAC;EAC3D,MAAM,CAACW,QAAQ,EAAEC,WAAW,CAAC,GAAGnB,QAAQ,CAACS,eAAe,CAAC;EACzD,MAAMW,YAAY,GAAGrB,MAAM,CAAiB,IAAI,CAAC;EACjD,MAAMsB,SAAS,GAAGtB,MAAM,CAAiB,IAAI,CAAC;EAE9C,MAAM;IAAEuB,YAAY;IAAEC,WAAW;IAAEC;EAAkB,CAAC,GAAGrB,YAAY,CACnEiB,YAAY,EACZC,SAAS,EACTX,QAAQ,EACRF,YAAY,EACZD,WACF,CAAC;EAED,MAAMkB,iBAAiB,GAAG5B,WAAW,CAAE6B,QAAgB,IAAK;IAC1DX,QAAQ,CAACW,QAAQ,CAAC;EACpB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG9B,WAAW,CAAE+B,IAAY,IAAK;IACrDX,cAAc,CAACW,IAAI,CAAC;EACtB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM;IAAEC,YAAY,EAAEC;EAAiB,CAAC,GAAG1B,gBAAgB,CAAC;IAC1DkB,YAAY;IACZC,WAAW;IACXH,YAAY;IACZV,QAAQ;IACRI,KAAK;IACLI,QAAQ;IACRa,aAAa,EAAEN,iBAAiB;IAChCO,YAAY,EAAEL;EAChB,CAAC,CAAC;EAEF,MAAME,YAAY,GAAGhC,WAAW,CAC7B+B,IAAY,IAAK;IAChBX,cAAc,CAACW,IAAI,CAAC;IACpBE,gBAAgB,CAACF,IAAI,CAAC;EACxB,CAAC,EACD,CAACE,gBAAgB,CACnB,CAAC;EAED,MAAMG,aAAa,GAAGhC,uBAAuB,CAC3CqB,YAAY,EACZC,WAAW,EACXb,QACF,CAAC;EAED,OAAOZ,OAAO,CAAC,OAA+B;IAC5CY,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC,KAAK;IACLO,YAAY;IACZC,SAAS;IACTL,WAAW;IACXa,YAAY;IACZf,KAAK;IACLC,QAAQ;IACRG,QAAQ;IACRC,WAAW;IACXc,aAAa;IACbX,YAAY;IACZC,WAAW;IACXC;EACF,CAAC,CAAC,EAAE,CACFd,QAAQ,EACRC,QAAQ,EACRC,OAAO,EACPC,KAAK,EACLG,WAAW,EACXa,YAAY,EACZf,KAAK,EACLC,QAAQ,EACRG,QAAQ,EACRC,WAAW,EACXc,aAAa,CACd,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"usePdfViewerCore.js","names":["useCallback","useMemo","useRef","useState","usePdfAnnotationPortals","usePdfDocument","usePdfViewer","usePdfViewerSync","usePdfViewerCore","src","initialPage","initialScale","initialAutoSize","document","numPages","loading","error","scale","setScale","currentPage","setCurrentPage","autoSize","setAutoSize","containerRef","viewerRef","pdfViewerRef","eventBusRef","findControllerRef","handleScaleChange","newScale","handlePageChange","page","scrollToPage","syncScrollToPage","onScaleChange","onPageChange","portalTargets"],"sources":["usePdfViewerCore.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type {\n EventBus,\n PDFFindController,\n PDFViewer,\n} from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport type { AnnotationPortalTarget } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfAnnotationPortals } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfDocument } from \"./usePdfDocument.js\";\nimport { usePdfViewer } from \"./usePdfViewer.js\";\nimport { usePdfViewerSync } from \"./usePdfViewerSync.js\";\n\nexport interface UsePdfViewerCoreOptions {\n /** PDF source — URL string or ArrayBuffer */\n src: string | ArrayBuffer;\n /** Initial page number (1-indexed, default 1) */\n initialPage?: number;\n /** Initial zoom scale (default 1.0) */\n initialScale?: number;\n /** Whether auto-size (fit to width) is initially enabled (default false) */\n initialAutoSize?: boolean;\n}\n\nexport interface UsePdfViewerCoreResult {\n /** The loaded PDF document, or undefined while loading */\n document: PDFDocumentProxy | undefined;\n /** Total number of pages in the document */\n numPages: number;\n /** Whether the document is currently loading */\n loading: boolean;\n /** Error encountered while loading the document */\n error: Error | undefined;\n\n /** Ref to attach to the scroll-container div */\n containerRef: RefObject<HTMLDivElement>;\n /** Ref to attach to the inner viewer div (className=\"pdfViewer\") */\n viewerRef: RefObject<HTMLDivElement>;\n\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Navigate to a specific page (updates state and scrolls the viewer) */\n scrollToPage: (page: number) => void;\n\n /** Current zoom scale */\n scale: number;\n /** Set the zoom scale directly */\n setScale: (scale: number) => void;\n\n /** Whether auto-size (fit to width) is active */\n autoSize: boolean;\n /** Enable or disable auto-size */\n setAutoSize: (autoSize: boolean) => void;\n\n /** Portal targets for rendering annotation overlays on each page */\n portalTargets: AnnotationPortalTarget[];\n\n /** Ref to the internal pdfjs PDFViewer instance */\n pdfViewerRef: RefObject<PDFViewer | null>;\n /** Ref to the internal pdfjs EventBus instance */\n eventBusRef: RefObject<EventBus | null>;\n /** Ref to the internal pdfjs PDFFindController instance */\n findControllerRef: RefObject<PDFFindController | null>;\n}\n\nexport function usePdfViewerCore({\n src,\n initialPage = 1,\n initialScale = 1.0,\n initialAutoSize = false,\n}: UsePdfViewerCoreOptions): UsePdfViewerCoreResult {\n const { document, numPages, loading, error } = usePdfDocument(src);\n const [scale, setScale] = useState(initialScale);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const [autoSize, setAutoSize] = useState(initialAutoSize);\n const containerRef = useRef<HTMLDivElement>(null);\n const viewerRef = useRef<HTMLDivElement>(null);\n\n const { pdfViewerRef, eventBusRef, findControllerRef } = usePdfViewer(\n containerRef,\n viewerRef,\n document,\n initialScale,\n initialPage\n );\n\n const handleScaleChange = useCallback((newScale: number) => {\n setScale(newScale);\n }, []);\n\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n }, []);\n\n const { scrollToPage: syncScrollToPage } = usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n containerRef,\n document,\n scale,\n autoSize,\n onScaleChange: handleScaleChange,\n onPageChange: handlePageChange,\n });\n\n const scrollToPage = useCallback(\n (page: number) => {\n setCurrentPage(page);\n syncScrollToPage(page);\n },\n [syncScrollToPage]\n );\n\n const portalTargets = usePdfAnnotationPortals(\n pdfViewerRef,\n eventBusRef,\n document\n );\n\n return useMemo(\n (): UsePdfViewerCoreResult => ({\n document,\n numPages,\n loading,\n error,\n containerRef,\n viewerRef,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n autoSize,\n setAutoSize,\n portalTargets,\n pdfViewerRef,\n eventBusRef,\n findControllerRef,\n }),\n [\n document,\n numPages,\n loading,\n error,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n autoSize,\n setAutoSize,\n portalTargets,\n ]\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAG9D,SAASC,uBAAuB,QAAQ,8BAA8B;AACtE,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,gBAAgB,QAAQ,uBAAuB;AAsDxD,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,GAAG;EACHC,WAAW,GAAG,CAAC;EACfC,YAAY,GAAG,GAAG;EAClBC,eAAe,GAAG;AACK,CAAC,EAA0B;EAClD,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGX,cAAc,CAACI,GAAG,CAAC;EAClE,MAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGf,QAAQ,CAACQ,YAAY,CAAC;EAChD,MAAM,CAACQ,WAAW,EAAEC,cAAc,CAAC,GAAGjB,QAAQ,CAACO,WAAW,CAAC;EAC3D,MAAM,CAACW,QAAQ,EAAEC,WAAW,CAAC,GAAGnB,QAAQ,CAACS,eAAe,CAAC;EACzD,MAAMW,YAAY,GAAGrB,MAAM,CAAiB,IAAI,CAAC;EACjD,MAAMsB,SAAS,GAAGtB,MAAM,CAAiB,IAAI,CAAC;EAE9C,MAAM;IAAEuB,YAAY;IAAEC,WAAW;IAAEC;EAAkB,CAAC,GAAGrB,YAAY,CACnEiB,YAAY,EACZC,SAAS,EACTX,QAAQ,EACRF,YAAY,EACZD,WACF,CAAC;EAED,MAAMkB,iBAAiB,GAAG5B,WAAW,CAAE6B,QAAgB,IAAK;IAC1DX,QAAQ,CAACW,QAAQ,CAAC;EACpB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG9B,WAAW,CAAE+B,IAAY,IAAK;IACrDX,cAAc,CAACW,IAAI,CAAC;EACtB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM;IAAEC,YAAY,EAAEC;EAAiB,CAAC,GAAG1B,gBAAgB,CAAC;IAC1DkB,YAAY;IACZC,WAAW;IACXH,YAAY;IACZV,QAAQ;IACRI,KAAK;IACLI,QAAQ;IACRa,aAAa,EAAEN,iBAAiB;IAChCO,YAAY,EAAEL;EAChB,CAAC,CAAC;EAEF,MAAME,YAAY,GAAGhC,WAAW,CAC7B+B,IAAY,IAAK;IAChBX,cAAc,CAACW,IAAI,CAAC;IACpBE,gBAAgB,CAACF,IAAI,CAAC;EACxB,CAAC,EACD,CAACE,gBAAgB,CACnB,CAAC;EAED,MAAMG,aAAa,GAAGhC,uBAAuB,CAC3CqB,YAAY,EACZC,WAAW,EACXb,QACF,CAAC;EAED,OAAOZ,OAAO,CACZ,OAA+B;IAC7BY,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC,KAAK;IACLO,YAAY;IACZC,SAAS;IACTL,WAAW;IACXa,YAAY;IACZf,KAAK;IACLC,QAAQ;IACRG,QAAQ;IACRC,WAAW;IACXc,aAAa;IACbX,YAAY;IACZC,WAAW;IACXC;EACF,CAAC,CAAC,EACF,CACEd,QAAQ,EACRC,QAAQ,EACRC,OAAO,EACPC,KAAK,EACLG,WAAW,EACXa,YAAY,EACZf,KAAK,EACLC,QAAQ,EACRG,QAAQ,EACRC,WAAW,EACXc,aAAa,CAEjB,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfViewerSearch.js","names":["useCallback","useEffect","useMemo","useState","EMPTY_STRING","FIND_EVENT","UPDATE_FIND_CONTROL_STATE_EVENT","UPDATE_FIND_MATCHES_COUNT_EVENT","usePdfViewerSearch","eventBusRef","findControllerRef","document","query","setQueryState","totalMatches","setTotalMatches","currentMatchIndex","setCurrentMatchIndex","isSearchOpen","setIsSearchOpen","dispatchFind","queryString","findPrevious","current","dispatch","source","undefined","type","caseSensitive","highlightAll","phraseSearch","dispatchFindAgain","setQuery","input","nextMatch","prevMatch","openSearch","closeSearch","eventBus","handleMatchesCount","evt","matchesCount","total","handleControlState","on","off"],"sources":["usePdfViewerSearch.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type {\n EventBus,\n PDFFindController,\n} from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n EMPTY_STRING,\n FIND_EVENT,\n UPDATE_FIND_CONTROL_STATE_EVENT,\n UPDATE_FIND_MATCHES_COUNT_EVENT,\n} from \"../constants.js\";\n\nexport interface UsePdfViewerSearchResult {\n query: string;\n totalMatches: number;\n currentMatchIndex: number;\n isSearchOpen: boolean;\n setQuery: (query: string) => void;\n nextMatch: () => void;\n prevMatch: () => void;\n openSearch: () => void;\n closeSearch: () => void;\n}\n\nexport function usePdfViewerSearch(\n eventBusRef: RefObject<EventBus | null>,\n findControllerRef: RefObject<PDFFindController | null>,\n document: PDFDocumentProxy | undefined,\n): UsePdfViewerSearchResult {\n const [query, setQueryState] = useState(EMPTY_STRING);\n const [totalMatches, setTotalMatches] = useState(0);\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n\n const dispatchFind = useCallback(\n (queryString: string, findPrevious: boolean) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"\",\n query: queryString,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious,\n });\n },\n [eventBusRef],\n );\n\n const dispatchFindAgain = useCallback(\n (findPrevious: boolean) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"again\",\n query,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious,\n });\n },\n [eventBusRef, query],\n );\n\n const setQuery = useCallback(\n (input: string) => {\n setQueryState(input);\n\n if (input === EMPTY_STRING) {\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Dispatch empty query to clear highlights\n dispatchFind(EMPTY_STRING, false);\n return;\n }\n\n dispatchFind(input, false);\n },\n [dispatchFind],\n );\n\n const nextMatch = useCallback(() => {\n dispatchFindAgain(false);\n }, [dispatchFindAgain]);\n\n const prevMatch = useCallback(() => {\n dispatchFindAgain(true);\n }, [dispatchFindAgain]);\n\n const openSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n\n const closeSearch = useCallback(() => {\n setIsSearchOpen(false);\n setQueryState(EMPTY_STRING);\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Clear highlights\n dispatchFind(EMPTY_STRING, false);\n }, [dispatchFind]);\n\n useEffect(function subscribeSearchEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n\n const handleMatchesCount = (evt: {\n matchesCount: { current: number; total: number };\n }) => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(\n evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0,\n );\n };\n\n const handleControlState = (evt: {\n state: number;\n matchesCount: { current: number; total: number };\n }) => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(\n evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0,\n );\n };\n\n eventBus.on(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.on(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n\n return () => {\n eventBus.off(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.off(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n };\n }, [eventBusRef, findControllerRef, document]);\n\n return useMemo((): UsePdfViewerSearchResult => ({\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch,\n }), [\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch,\n ]);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePdfViewerSearch.js","names":["useCallback","useEffect","useMemo","useState","EMPTY_STRING","FIND_EVENT","UPDATE_FIND_CONTROL_STATE_EVENT","UPDATE_FIND_MATCHES_COUNT_EVENT","usePdfViewerSearch","eventBusRef","findControllerRef","document","query","setQueryState","totalMatches","setTotalMatches","currentMatchIndex","setCurrentMatchIndex","isSearchOpen","setIsSearchOpen","dispatchFind","queryString","findPrevious","current","dispatch","source","undefined","type","caseSensitive","highlightAll","phraseSearch","dispatchFindAgain","setQuery","input","nextMatch","prevMatch","openSearch","closeSearch","eventBus","handleMatchesCount","evt","matchesCount","total","handleControlState","on","off"],"sources":["usePdfViewerSearch.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type {\n EventBus,\n PDFFindController,\n} from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport {\n EMPTY_STRING,\n FIND_EVENT,\n UPDATE_FIND_CONTROL_STATE_EVENT,\n UPDATE_FIND_MATCHES_COUNT_EVENT,\n} from \"../constants.js\";\n\nexport interface UsePdfViewerSearchResult {\n query: string;\n totalMatches: number;\n currentMatchIndex: number;\n isSearchOpen: boolean;\n setQuery: (query: string) => void;\n nextMatch: () => void;\n prevMatch: () => void;\n openSearch: () => void;\n closeSearch: () => void;\n}\n\nexport function usePdfViewerSearch(\n eventBusRef: RefObject<EventBus | null>,\n findControllerRef: RefObject<PDFFindController | null>,\n document: PDFDocumentProxy | undefined\n): UsePdfViewerSearchResult {\n const [query, setQueryState] = useState(EMPTY_STRING);\n const [totalMatches, setTotalMatches] = useState(0);\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n\n const dispatchFind = useCallback(\n (queryString: string, findPrevious: boolean) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"\",\n query: queryString,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious,\n });\n },\n [eventBusRef]\n );\n\n const dispatchFindAgain = useCallback(\n (findPrevious: boolean) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"again\",\n query,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious,\n });\n },\n [eventBusRef, query]\n );\n\n const setQuery = useCallback(\n (input: string) => {\n setQueryState(input);\n\n if (input === EMPTY_STRING) {\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Dispatch empty query to clear highlights\n dispatchFind(EMPTY_STRING, false);\n return;\n }\n\n dispatchFind(input, false);\n },\n [dispatchFind]\n );\n\n const nextMatch = useCallback(() => {\n dispatchFindAgain(false);\n }, [dispatchFindAgain]);\n\n const prevMatch = useCallback(() => {\n dispatchFindAgain(true);\n }, [dispatchFindAgain]);\n\n const openSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n\n const closeSearch = useCallback(() => {\n setIsSearchOpen(false);\n setQueryState(EMPTY_STRING);\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Clear highlights\n dispatchFind(EMPTY_STRING, false);\n }, [dispatchFind]);\n\n useEffect(\n function subscribeSearchEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n\n const handleMatchesCount = (evt: {\n matchesCount: { current: number; total: number };\n }) => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(\n evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0\n );\n };\n\n const handleControlState = (evt: {\n state: number;\n matchesCount: { current: number; total: number };\n }) => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(\n evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0\n );\n };\n\n eventBus.on(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.on(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n\n return () => {\n eventBus.off(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.off(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n };\n },\n [eventBusRef, findControllerRef, document]\n );\n\n return useMemo(\n (): UsePdfViewerSearchResult => ({\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch,\n }),\n [\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch,\n ]\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfViewerState.js","names":["useCallback","useEffect","useMemo","useRef","useState","MAX_SCALE","MIN_SCALE","PAGE_WIDTH_SCALE_VALUE","SCALE_STEP","usePdfOutline","usePdfViewerCore","usePdfViewerSearch","usePdfViewerState","src","initialPage","initialScale","initialAutoSize","initialSidebarOpen","sidebarMode","sidebarModeProp","onDownload","core","rotation","setRotation","sidebarOpen","setSidebarOpen","setSidebarMode","search","eventBusRef","findControllerRef","document","outlineItems","pdfViewer","pdfViewerRef","current","pagesRotation","prevRotationRef","autoSize","currentScaleValue","handleKeyDown","e","ctrlKey","metaKey","key","preventDefault","openSearch","window","addEventListener","removeEventListener","zoomIn","setAutoSize","setScale","Math","min","scale","zoomOut","max","toggleAutoSize","rotateLeft","prev","rotateRight","toggleSidebar","download","filename","getData","then","data","blob","Blob","buffer","type","url","URL","createObjectURL","resolvedFilename","resolveDownloadFilename","a","globalThis","createElement","href","click","revokeObjectURL","success","catch","err","error","Error","split","pop"],"sources":["usePdfViewerState.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\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n MAX_SCALE,\n MIN_SCALE,\n PAGE_WIDTH_SCALE_VALUE,\n SCALE_STEP,\n} from \"../constants.js\";\nimport type { PdfDownloadResult, SidebarMode } from \"../types.js\";\nimport { usePdfOutline } from \"./usePdfOutline.js\";\nimport type {\n UsePdfViewerCoreOptions,\n UsePdfViewerCoreResult,\n} from \"./usePdfViewerCore.js\";\nimport { usePdfViewerCore } from \"./usePdfViewerCore.js\";\nimport type { UsePdfViewerSearchResult } from \"./usePdfViewerSearch.js\";\nimport { usePdfViewerSearch } from \"./usePdfViewerSearch.js\";\n\nexport interface UsePdfViewerStateOptions extends UsePdfViewerCoreOptions {\n /** Whether the sidebar is initially open (default false) */\n initialSidebarOpen?: boolean;\n /** Which sidebar panel to show (default \"thumbnails\") */\n sidebarMode?: SidebarMode;\n /** Callback fired when a download completes or fails */\n onDownload?: (result: PdfDownloadResult) => void;\n}\n\nexport interface UsePdfViewerStateResult extends UsePdfViewerCoreResult {\n /** Zoom in by one step (disables auto-size) */\n zoomIn: () => void;\n /** Zoom out by one step (disables auto-size) */\n zoomOut: () => void;\n /** Toggle auto-size (fit to width) on or off */\n toggleAutoSize: () => void;\n\n /** Current rotation in degrees (0, 90, 180, 270) */\n rotation: number;\n /** Rotate 90 degrees counter-clockwise */\n rotateLeft: () => void;\n /** Rotate 90 degrees clockwise */\n rotateRight: () => void;\n\n /** Whether the sidebar panel is open */\n sidebarOpen: boolean;\n /** Which sidebar panel is active */\n sidebarMode: SidebarMode;\n /** Change the active sidebar panel */\n setSidebarMode: (mode: SidebarMode) => void;\n /** Toggle sidebar open/closed */\n toggleSidebar: () => void;\n\n /** Search state and actions */\n search: UsePdfViewerSearchResult;\n\n /** Document outline items (from bookmarks or text extraction) */\n outlineItems: ReturnType<typeof usePdfOutline>;\n\n /** Download the PDF as a file */\n download: (filename?: string) => void;\n}\n\nexport function usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialAutoSize,\n initialSidebarOpen = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n onDownload,\n}: UsePdfViewerStateOptions): UsePdfViewerStateResult {\n const core = usePdfViewerCore({\n src,\n initialPage,\n initialScale,\n initialAutoSize,\n });\n\n const [rotation, setRotation] = useState(0);\n const [sidebarOpen, setSidebarOpen] = useState(initialSidebarOpen);\n const [sidebarMode, setSidebarMode] = useState<SidebarMode>(sidebarModeProp);\n\n const search = usePdfViewerSearch(\n core.eventBusRef,\n core.findControllerRef,\n core.document,\n );\n\n const outlineItems = usePdfOutline(core.document);\n\n // Sync sidebarMode prop changes to state\n useEffect(function syncSidebarMode() {\n setSidebarMode(sidebarModeProp);\n }, [sidebarModeProp]);\n\n // Sync rotation → PDFViewer\n useEffect(function syncRotationToViewer() {\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.pagesRotation = rotation;\n }\n }, [core.pdfViewerRef, rotation]);\n\n // Re-apply page-width after rotation changes while auto-size is active.\n // Rotation changes the effective page width, so auto-size must re-fit.\n const prevRotationRef = useRef(rotation);\n useEffect(function reapplyAutoSizeAfterRotation() {\n if (prevRotationRef.current === rotation) {\n return;\n }\n prevRotationRef.current = rotation;\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer == null || !core.autoSize) {\n return;\n }\n pdfViewer.currentScaleValue = PAGE_WIDTH_SCALE_VALUE;\n }, [core.pdfViewerRef, core.autoSize, rotation]);\n\n // Ctrl+F keyboard shortcut\n useEffect(function registerSearchShortcut() {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.ctrlKey || e.metaKey) && e.key === \"f\") {\n e.preventDefault();\n search.openSearch();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [search.openSearch]);\n\n const zoomIn = useCallback(() => {\n core.setAutoSize(false);\n core.setScale(Math.min(core.scale + SCALE_STEP, MAX_SCALE));\n }, [core.scale, core.setScale, core.setAutoSize]);\n\n const zoomOut = useCallback(() => {\n core.setAutoSize(false);\n core.setScale(Math.max(core.scale - SCALE_STEP, MIN_SCALE));\n }, [core.scale, core.setScale, core.setAutoSize]);\n\n const toggleAutoSize = useCallback(() => {\n core.setAutoSize(!core.autoSize);\n }, [core.autoSize, core.setAutoSize]);\n\n const rotateLeft = useCallback(() => {\n setRotation((prev) => (prev - 90 + 360) % 360);\n }, []);\n\n const rotateRight = useCallback(() => {\n setRotation((prev) => (prev + 90) % 360);\n }, []);\n\n const toggleSidebar = useCallback(() => {\n setSidebarOpen((prev) => !prev);\n }, []);\n\n const download = useCallback((filename?: string) => {\n if (core.document == null) {\n return;\n }\n void core.document.getData().then((data) => {\n const blob = new Blob([data.buffer as ArrayBuffer], {\n type: \"application/pdf\",\n });\n const url = URL.createObjectURL(blob);\n const resolvedFilename = resolveDownloadFilename(src, filename);\n const a = globalThis.document.createElement(\"a\");\n a.href = url;\n a.download = resolvedFilename;\n a.click();\n URL.revokeObjectURL(url);\n onDownload?.({ success: true, filename: resolvedFilename });\n }).catch((err: unknown) => {\n onDownload?.({\n success: false,\n error: err instanceof Error\n ? err\n : new Error(\"Failed to download PDF\"),\n });\n });\n }, [core.document, src, onDownload]);\n\n return useMemo((): UsePdfViewerStateResult => ({\n ...core,\n zoomIn,\n zoomOut,\n toggleAutoSize,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download,\n }), [\n core,\n zoomIn,\n zoomOut,\n toggleAutoSize,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download,\n ]);\n}\n\n/** Derive a download filename from an explicit name, the src URL, or a fallback. */\nfunction resolveDownloadFilename(\n src: string | ArrayBuffer,\n filename: string | undefined,\n): string {\n if (filename != null) {\n return filename;\n }\n if (typeof src === \"string\") {\n return src.split(\"/\").pop()?.split(\"?\")[0] || \"document.pdf\";\n }\n return \"document.pdf\";\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePdfViewerState.js","names":["useCallback","useEffect","useMemo","useRef","useState","MAX_SCALE","MIN_SCALE","PAGE_WIDTH_SCALE_VALUE","SCALE_STEP","usePdfOutline","usePdfViewerCore","usePdfViewerSearch","usePdfViewerState","src","initialPage","initialScale","initialAutoSize","initialSidebarOpen","sidebarMode","sidebarModeProp","onDownload","core","rotation","setRotation","sidebarOpen","setSidebarOpen","setSidebarMode","search","eventBusRef","findControllerRef","document","outlineItems","pdfViewer","pdfViewerRef","current","pagesRotation","prevRotationRef","autoSize","currentScaleValue","handleKeyDown","e","ctrlKey","metaKey","key","preventDefault","openSearch","window","addEventListener","removeEventListener","zoomIn","setAutoSize","setScale","Math","min","scale","zoomOut","max","toggleAutoSize","rotateLeft","prev","rotateRight","toggleSidebar","download","filename","getData","then","data","blob","Blob","buffer","type","url","URL","createObjectURL","resolvedFilename","resolveDownloadFilename","a","globalThis","createElement","href","click","revokeObjectURL","success","catch","err","error","Error","split","pop"],"sources":["usePdfViewerState.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\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n MAX_SCALE,\n MIN_SCALE,\n PAGE_WIDTH_SCALE_VALUE,\n SCALE_STEP,\n} from \"../constants.js\";\nimport type { PdfDownloadResult, SidebarMode } from \"../types.js\";\nimport { usePdfOutline } from \"./usePdfOutline.js\";\nimport type {\n UsePdfViewerCoreOptions,\n UsePdfViewerCoreResult,\n} from \"./usePdfViewerCore.js\";\nimport { usePdfViewerCore } from \"./usePdfViewerCore.js\";\nimport type { UsePdfViewerSearchResult } from \"./usePdfViewerSearch.js\";\nimport { usePdfViewerSearch } from \"./usePdfViewerSearch.js\";\n\nexport interface UsePdfViewerStateOptions extends UsePdfViewerCoreOptions {\n /** Whether the sidebar is initially open (default false) */\n initialSidebarOpen?: boolean;\n /** Which sidebar panel to show (default \"thumbnails\") */\n sidebarMode?: SidebarMode;\n /** Callback fired when a download completes or fails */\n onDownload?: (result: PdfDownloadResult) => void;\n}\n\nexport interface UsePdfViewerStateResult extends UsePdfViewerCoreResult {\n /** Zoom in by one step (disables auto-size) */\n zoomIn: () => void;\n /** Zoom out by one step (disables auto-size) */\n zoomOut: () => void;\n /** Toggle auto-size (fit to width) on or off */\n toggleAutoSize: () => void;\n\n /** Current rotation in degrees (0, 90, 180, 270) */\n rotation: number;\n /** Rotate 90 degrees counter-clockwise */\n rotateLeft: () => void;\n /** Rotate 90 degrees clockwise */\n rotateRight: () => void;\n\n /** Whether the sidebar panel is open */\n sidebarOpen: boolean;\n /** Which sidebar panel is active */\n sidebarMode: SidebarMode;\n /** Change the active sidebar panel */\n setSidebarMode: (mode: SidebarMode) => void;\n /** Toggle sidebar open/closed */\n toggleSidebar: () => void;\n\n /** Search state and actions */\n search: UsePdfViewerSearchResult;\n\n /** Document outline items (from bookmarks or text extraction) */\n outlineItems: ReturnType<typeof usePdfOutline>;\n\n /** Download the PDF as a file */\n download: (filename?: string) => void;\n}\n\nexport function usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialAutoSize,\n initialSidebarOpen = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n onDownload,\n}: UsePdfViewerStateOptions): UsePdfViewerStateResult {\n const core = usePdfViewerCore({\n src,\n initialPage,\n initialScale,\n initialAutoSize,\n });\n\n const [rotation, setRotation] = useState(0);\n const [sidebarOpen, setSidebarOpen] = useState(initialSidebarOpen);\n const [sidebarMode, setSidebarMode] = useState<SidebarMode>(sidebarModeProp);\n\n const search = usePdfViewerSearch(\n core.eventBusRef,\n core.findControllerRef,\n core.document\n );\n\n const outlineItems = usePdfOutline(core.document);\n\n // Sync sidebarMode prop changes to state\n useEffect(\n function syncSidebarMode() {\n setSidebarMode(sidebarModeProp);\n },\n [sidebarModeProp]\n );\n\n // Sync rotation → PDFViewer\n useEffect(\n function syncRotationToViewer() {\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.pagesRotation = rotation;\n }\n },\n [core.pdfViewerRef, rotation]\n );\n\n // Re-apply page-width after rotation changes while auto-size is active.\n // Rotation changes the effective page width, so auto-size must re-fit.\n const prevRotationRef = useRef(rotation);\n useEffect(\n function reapplyAutoSizeAfterRotation() {\n if (prevRotationRef.current === rotation) {\n return;\n }\n prevRotationRef.current = rotation;\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer == null || !core.autoSize) {\n return;\n }\n pdfViewer.currentScaleValue = PAGE_WIDTH_SCALE_VALUE;\n },\n [core.pdfViewerRef, core.autoSize, rotation]\n );\n\n // Ctrl+F keyboard shortcut\n useEffect(\n function registerSearchShortcut() {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.ctrlKey || e.metaKey) && e.key === \"f\") {\n e.preventDefault();\n search.openSearch();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n },\n [search.openSearch]\n );\n\n const zoomIn = useCallback(() => {\n core.setAutoSize(false);\n core.setScale(Math.min(core.scale + SCALE_STEP, MAX_SCALE));\n }, [core.scale, core.setScale, core.setAutoSize]);\n\n const zoomOut = useCallback(() => {\n core.setAutoSize(false);\n core.setScale(Math.max(core.scale - SCALE_STEP, MIN_SCALE));\n }, [core.scale, core.setScale, core.setAutoSize]);\n\n const toggleAutoSize = useCallback(() => {\n core.setAutoSize(!core.autoSize);\n }, [core.autoSize, core.setAutoSize]);\n\n const rotateLeft = useCallback(() => {\n setRotation((prev) => (prev - 90 + 360) % 360);\n }, []);\n\n const rotateRight = useCallback(() => {\n setRotation((prev) => (prev + 90) % 360);\n }, []);\n\n const toggleSidebar = useCallback(() => {\n setSidebarOpen((prev) => !prev);\n }, []);\n\n const download = useCallback(\n (filename?: string) => {\n if (core.document == null) {\n return;\n }\n void core.document\n .getData()\n .then((data) => {\n const blob = new Blob([data.buffer as ArrayBuffer], {\n type: \"application/pdf\",\n });\n const url = URL.createObjectURL(blob);\n const resolvedFilename = resolveDownloadFilename(src, filename);\n const a = globalThis.document.createElement(\"a\");\n a.href = url;\n a.download = resolvedFilename;\n a.click();\n URL.revokeObjectURL(url);\n onDownload?.({ success: true, filename: resolvedFilename });\n })\n .catch((err: unknown) => {\n onDownload?.({\n success: false,\n error:\n err instanceof Error ? err : new Error(\"Failed to download PDF\"),\n });\n });\n },\n [core.document, src, onDownload]\n );\n\n return useMemo(\n (): UsePdfViewerStateResult => ({\n ...core,\n zoomIn,\n zoomOut,\n toggleAutoSize,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download,\n }),\n [\n core,\n zoomIn,\n zoomOut,\n toggleAutoSize,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download,\n ]\n );\n}\n\n/** Derive a download filename from an explicit name, the src URL, or a fallback. */\nfunction resolveDownloadFilename(\n src: string | ArrayBuffer,\n filename: string | undefined\n): string {\n if (filename != null) {\n return filename;\n }\n if (typeof src === \"string\") {\n return src.split(\"/\").pop()?.split(\"?\")[0] || \"document.pdf\";\n }\n return \"document.pdf\";\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePdfViewerSync.js","names":["useCallback","useEffect","useRef","PAGE_CHANGING_EVENT","PAGE_WIDTH_SCALE_VALUE","PAGES_LOADED_EVENT","SCALE_CHANGING_EVENT","usePdfViewerSync","pdfViewerRef","eventBusRef","containerRef","document","scale","autoSize","onScaleChange","onPageChange","lastScaleRef","pdfViewer","current","Math","abs","currentScale","eventBus","applyPageWidth","currentScaleValue","pagesCount","on","off","container","observer","ResizeObserver","observe","disconnect","handlePageChanging","evt","pageNumber","handleScaleChanging","scrollToPage","page","currentPageNumber"],"sources":["usePdfViewerSync.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { EventBus, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport {\n PAGE_CHANGING_EVENT,\n PAGE_WIDTH_SCALE_VALUE,\n PAGES_LOADED_EVENT,\n SCALE_CHANGING_EVENT,\n} from \"../constants.js\";\n\ninterface UsePdfViewerSyncOptions {\n pdfViewerRef: RefObject<PDFViewer | null>;\n eventBusRef: RefObject<EventBus | null>;\n containerRef: RefObject<HTMLDivElement | null>;\n document: PDFDocumentProxy | undefined;\n scale: number;\n autoSize: boolean;\n onScaleChange: (scale: number) => void;\n onPageChange: (page: number) => void;\n}\n\nexport function usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n containerRef,\n document,\n scale,\n autoSize,\n onScaleChange,\n onPageChange,\n}: UsePdfViewerSyncOptions): {\n scrollToPage: (page: number) => void;\n} {\n const lastScaleRef = useRef(scale);\n\n // Sync React scale → PDFViewer (only when not in auto-size mode)\n useEffect(function syncScaleToViewer() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || autoSize) {\n return;\n }\n if (Math.abs(lastScaleRef.current - scale) > 0.001) {\n lastScaleRef.current = scale;\n pdfViewer.currentScale = scale;\n }\n }, [pdfViewerRef, scale, autoSize]);\n\n // Apply page-width scale when auto-size is enabled.\n // On initial load, pagesloaded fires after usePdfViewer sets the initial\n // numeric scale, so we must listen for that event to apply page-width last.\n // When toggled on later (pagesLoaded already fired), apply immediately.\n useEffect(function syncAutoSizeToViewer() {\n const pdfViewer = pdfViewerRef.current;\n const eventBus = eventBusRef.current;\n if (pdfViewer == null || !autoSize) {\n return;\n }\n\n const applyPageWidth = () => {\n pdfViewer.currentScaleValue = PAGE_WIDTH_SCALE_VALUE;\n };\n\n // If pages are already rendered (pagesCount > 0), apply immediately.\n // Otherwise wait for the pagesloaded event.\n if (pdfViewer.pagesCount > 0) {\n applyPageWidth();\n }\n\n if (eventBus != null) {\n eventBus.on(PAGES_LOADED_EVENT, applyPageWidth);\n return () => {\n eventBus.off(PAGES_LOADED_EVENT, applyPageWidth);\n };\n }\n }, [pdfViewerRef, eventBusRef, autoSize, document]);\n\n // ResizeObserver: re-apply page-width on container resize when auto-size is active\n useEffect(function observeContainerResize() {\n const container = containerRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (container == null || pdfViewer == null || !autoSize) {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n pdfViewer.currentScaleValue = PAGE_WIDTH_SCALE_VALUE;\n });\n observer.observe(container);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef, pdfViewerRef, autoSize, document]);\n\n // Listen to PDFViewer events → React state\n useEffect(function subscribeViewerEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n\n const handlePageChanging = (evt: { pageNumber: number }) => {\n onPageChange(evt.pageNumber);\n };\n\n const handleScaleChanging = (evt: { scale: number }) => {\n lastScaleRef.current = evt.scale;\n onScaleChange(evt.scale);\n };\n\n eventBus.on(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.on(SCALE_CHANGING_EVENT, handleScaleChanging);\n\n return () => {\n eventBus.off(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.off(SCALE_CHANGING_EVENT, handleScaleChanging);\n };\n }, [eventBusRef, document, onPageChange, onScaleChange]);\n\n const scrollToPage = useCallback(\n (page: number) => {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.currentPageNumber = page;\n }\n },\n [pdfViewerRef],\n );\n\n return { scrollToPage };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePdfViewerSync.js","names":["useCallback","useEffect","useRef","PAGE_CHANGING_EVENT","PAGE_WIDTH_SCALE_VALUE","PAGES_LOADED_EVENT","SCALE_CHANGING_EVENT","usePdfViewerSync","pdfViewerRef","eventBusRef","containerRef","document","scale","autoSize","onScaleChange","onPageChange","lastScaleRef","pdfViewer","current","Math","abs","currentScale","eventBus","applyPageWidth","currentScaleValue","pagesCount","on","off","container","observer","ResizeObserver","observe","disconnect","handlePageChanging","evt","pageNumber","handleScaleChanging","scrollToPage","page","currentPageNumber"],"sources":["usePdfViewerSync.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\nimport type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { EventBus, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\nimport {\n PAGE_CHANGING_EVENT,\n PAGE_WIDTH_SCALE_VALUE,\n PAGES_LOADED_EVENT,\n SCALE_CHANGING_EVENT,\n} from \"../constants.js\";\n\ninterface UsePdfViewerSyncOptions {\n pdfViewerRef: RefObject<PDFViewer | null>;\n eventBusRef: RefObject<EventBus | null>;\n containerRef: RefObject<HTMLDivElement | null>;\n document: PDFDocumentProxy | undefined;\n scale: number;\n autoSize: boolean;\n onScaleChange: (scale: number) => void;\n onPageChange: (page: number) => void;\n}\n\nexport function usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n containerRef,\n document,\n scale,\n autoSize,\n onScaleChange,\n onPageChange,\n}: UsePdfViewerSyncOptions): {\n scrollToPage: (page: number) => void;\n} {\n const lastScaleRef = useRef(scale);\n\n // Sync React scale → PDFViewer (only when not in auto-size mode)\n useEffect(\n function syncScaleToViewer() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || autoSize) {\n return;\n }\n if (Math.abs(lastScaleRef.current - scale) > 0.001) {\n lastScaleRef.current = scale;\n pdfViewer.currentScale = scale;\n }\n },\n [pdfViewerRef, scale, autoSize]\n );\n\n // Apply page-width scale when auto-size is enabled.\n // On initial load, pagesloaded fires after usePdfViewer sets the initial\n // numeric scale, so we must listen for that event to apply page-width last.\n // When toggled on later (pagesLoaded already fired), apply immediately.\n useEffect(\n function syncAutoSizeToViewer() {\n const pdfViewer = pdfViewerRef.current;\n const eventBus = eventBusRef.current;\n if (pdfViewer == null || !autoSize) {\n return;\n }\n\n const applyPageWidth = () => {\n pdfViewer.currentScaleValue = PAGE_WIDTH_SCALE_VALUE;\n };\n\n // If pages are already rendered (pagesCount > 0), apply immediately.\n // Otherwise wait for the pagesloaded event.\n if (pdfViewer.pagesCount > 0) {\n applyPageWidth();\n }\n\n if (eventBus != null) {\n eventBus.on(PAGES_LOADED_EVENT, applyPageWidth);\n return () => {\n eventBus.off(PAGES_LOADED_EVENT, applyPageWidth);\n };\n }\n },\n [pdfViewerRef, eventBusRef, autoSize, document]\n );\n\n // ResizeObserver: re-apply page-width on container resize when auto-size is active\n useEffect(\n function observeContainerResize() {\n const container = containerRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (container == null || pdfViewer == null || !autoSize) {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n pdfViewer.currentScaleValue = PAGE_WIDTH_SCALE_VALUE;\n });\n observer.observe(container);\n\n return () => {\n observer.disconnect();\n };\n },\n [containerRef, pdfViewerRef, autoSize, document]\n );\n\n // Listen to PDFViewer events → React state\n useEffect(\n function subscribeViewerEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n\n const handlePageChanging = (evt: { pageNumber: number }) => {\n onPageChange(evt.pageNumber);\n };\n\n const handleScaleChanging = (evt: { scale: number }) => {\n lastScaleRef.current = evt.scale;\n onScaleChange(evt.scale);\n };\n\n eventBus.on(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.on(SCALE_CHANGING_EVENT, handleScaleChanging);\n\n return () => {\n eventBus.off(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.off(SCALE_CHANGING_EVENT, handleScaleChanging);\n };\n },\n [eventBusRef, document, onPageChange, onScaleChange]\n );\n\n const scrollToPage = useCallback(\n (page: number) => {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.currentPageNumber = page;\n }\n },\n [pdfViewerRef]\n );\n\n return { scrollToPage };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"action-form.js","names":["ActionForm","_ActionForm","withOsdkMetrics","BaseForm"],"sources":["action-form.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\nimport { ActionForm as _ActionForm } from \"../../action-form/ActionForm.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ActionForm: typeof _ActionForm = withOsdkMetrics(\n _ActionForm,\n \"ActionForm\",\n);\nexport type {\n ActionFormProps,\n BaseFormProps,\n FormContentItem,\n FormError,\n FormSectionDefinition,\n FormState,\n} from \"../../action-form/ActionFormApi.js\";\nexport { BaseForm } from \"../../action-form/BaseForm.js\";\nexport type {\n ActionParameters,\n BaseFormFieldProps,\n CustomFieldProps,\n DropdownFieldProps,\n FieldComponent,\n FieldValueType,\n FilePickerProps,\n FormFieldDefinition,\n FormFieldPropsByType,\n NumberInputFieldProps,\n ObjectSelectFieldProps,\n ObjectSetFieldProps,\n Option,\n PortalContainer,\n RadioButtonsFieldProps,\n RendererFieldDefinition,\n TextAreaFieldProps,\n TextInputFieldProps,\n UnsupportedFieldProps,\n ValidationError,\n} from \"../../action-form/FormFieldApi.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AASD,SAASE,QAAQ,QAAQ,+BAA+B","ignoreList":[]}
1
+ {"version":3,"file":"action-form.js","names":["ActionForm","_ActionForm","withOsdkMetrics","BaseForm"],"sources":["action-form.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\nimport { ActionForm as _ActionForm } from \"../../action-form/ActionForm.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ActionForm: typeof _ActionForm = withOsdkMetrics(\n _ActionForm,\n \"ActionForm\"\n);\nexport type {\n ActionFormProps,\n BaseFormProps,\n FormContentItem,\n FormError,\n FormSectionDefinition,\n FormState,\n} from \"../../action-form/ActionFormApi.js\";\nexport { BaseForm } from \"../../action-form/BaseForm.js\";\nexport type {\n ActionParameters,\n BaseFormFieldProps,\n CustomFieldProps,\n DropdownFieldProps,\n FieldComponent,\n FieldValueType,\n FilePickerProps,\n FormFieldDefinition,\n FormFieldPropsByType,\n NumberInputFieldProps,\n ObjectSelectFieldProps,\n ObjectSetFieldProps,\n Option,\n PortalContainer,\n RadioButtonsFieldProps,\n RendererFieldDefinition,\n TextAreaFieldProps,\n TextInputFieldProps,\n UnsupportedFieldProps,\n ValidationError,\n} from \"../../action-form/FormFieldApi.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AASD,SAASE,QAAQ,QAAQ,+BAA+B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"cbac-picker.js","names":["CbacBanner","CbacBannerPopover","CbacPicker","_CbacPicker","withOsdkMetrics","CbacPickerDialog","BaseCbacBanner","BaseCbacPicker","BaseCbacPickerDialog","computeMarkingStates","groupMarkingsByCategory","toggleMarking","MaxClassificationField"],"sources":["cbac-picker.ts"],"sourcesContent":["/*\n * Copyright 2026 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// CBAC Picker - OSDK-aware components\nexport { CbacBanner } from \"../../cbac-picker/CbacBanner.js\";\nexport { CbacBannerPopover } from \"../../cbac-picker/CbacBannerPopover.js\";\nimport { CbacPicker as _CbacPicker } from \"../../cbac-picker/CbacPicker.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const CbacPicker: typeof _CbacPicker = withOsdkMetrics(\n _CbacPicker,\n \"CbacPicker\",\n);\nexport { CbacPickerDialog } from \"../../cbac-picker/CbacPickerDialog.js\";\n\n// CBAC Picker - Base components\nexport { BaseCbacBanner } from \"../../cbac-picker/base/BaseCbacBanner.js\";\nexport { BaseCbacPicker } from \"../../cbac-picker/base/BaseCbacPicker.js\";\nexport { BaseCbacPickerDialog } from \"../../cbac-picker/base/BaseCbacPickerDialog.js\";\n\n// CBAC Picker - Selection logic utilities\nexport {\n computeMarkingStates,\n groupMarkingsByCategory,\n toggleMarking,\n} from \"../../cbac-picker/utils/selectionLogic.js\";\n// CBAC Picker - Types\nexport type {\n CategoryMarkingGroup,\n CbacBannerData,\n MarkingSelectionState,\n MaxClassificationConstraint,\n PickerMarking,\n PickerMarkingCategory,\n RequiredMarkingGroup,\n} from \"../../cbac-picker/types.js\";\n\n// CBAC Picker - MaxClassificationField\nexport { MaxClassificationField } from \"../../cbac-picker/base/MaxClassificationField.js\";\nexport type { MaxClassificationFieldProps } from \"../../cbac-picker/base/MaxClassificationField.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AACD,SAASE,gBAAgB,QAAQ,uCAAuC;;AAExE;AACA,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,oBAAoB,QAAQ,gDAAgD;;AAErF;AACA,SACEC,oBAAoB,EACpBC,uBAAuB,EACvBC,aAAa,QACR,2CAA2C;AAClD;;AAWA;AACA,SAASC,sBAAsB,QAAQ,kDAAkD","ignoreList":[]}
1
+ {"version":3,"file":"cbac-picker.js","names":["CbacBanner","CbacBannerPopover","CbacPicker","_CbacPicker","withOsdkMetrics","CbacPickerDialog","BaseCbacBanner","BaseCbacPicker","BaseCbacPickerDialog","computeMarkingStates","groupMarkingsByCategory","toggleMarking","MaxClassificationField"],"sources":["cbac-picker.ts"],"sourcesContent":["/*\n * Copyright 2026 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// CBAC Picker - OSDK-aware components\nexport { CbacBanner } from \"../../cbac-picker/CbacBanner.js\";\nexport { CbacBannerPopover } from \"../../cbac-picker/CbacBannerPopover.js\";\nimport { CbacPicker as _CbacPicker } from \"../../cbac-picker/CbacPicker.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const CbacPicker: typeof _CbacPicker = withOsdkMetrics(\n _CbacPicker,\n \"CbacPicker\"\n);\nexport { CbacPickerDialog } from \"../../cbac-picker/CbacPickerDialog.js\";\n\n// CBAC Picker - Base components\nexport { BaseCbacBanner } from \"../../cbac-picker/base/BaseCbacBanner.js\";\nexport { BaseCbacPicker } from \"../../cbac-picker/base/BaseCbacPicker.js\";\nexport { BaseCbacPickerDialog } from \"../../cbac-picker/base/BaseCbacPickerDialog.js\";\n\n// CBAC Picker - Selection logic utilities\nexport {\n computeMarkingStates,\n groupMarkingsByCategory,\n toggleMarking,\n} from \"../../cbac-picker/utils/selectionLogic.js\";\n// CBAC Picker - Types\nexport type {\n CategoryMarkingGroup,\n CbacBannerData,\n MarkingSelectionState,\n MaxClassificationConstraint,\n PickerMarking,\n PickerMarkingCategory,\n RequiredMarkingGroup,\n} from \"../../cbac-picker/types.js\";\n\n// CBAC Picker - MaxClassificationField\nexport { MaxClassificationField } from \"../../cbac-picker/base/MaxClassificationField.js\";\nexport type { MaxClassificationFieldProps } from \"../../cbac-picker/base/MaxClassificationField.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AACD,SAASE,gBAAgB,QAAQ,uCAAuC;;AAExE;AACA,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,oBAAoB,QAAQ,gDAAgD;;AAErF;AACA,SACEC,oBAAoB,EACpBC,uBAAuB,EACvBC,aAAa,QACR,2CAA2C;AAClD;;AAWA;AACA,SAASC,sBAAsB,QAAQ,kDAAkD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"document-viewer.js","names":["DocumentViewer","_DocumentViewer","withOsdkMetrics","ViewerType"],"sources":["document-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// DocumentViewer\nimport { DocumentViewer as _DocumentViewer } from \"../../document-viewer/DocumentViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const DocumentViewer: typeof _DocumentViewer = withOsdkMetrics(\n _DocumentViewer,\n \"DocumentViewer\",\n);\nexport type { DocumentViewerProps } from \"../../document-viewer/DocumentViewerApi.js\";\nexport { ViewerType } from \"../../document-viewer/DocumentViewerApi.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,cAAc,IAAIC,eAAe,QAAQ,yCAAyC;AAC3F,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,cAAsC,GAAGE,eAAe,CACnED,eAAe,EACf,gBACF,CAAC;AAED,SAASE,UAAU,QAAQ,4CAA4C","ignoreList":[]}
1
+ {"version":3,"file":"document-viewer.js","names":["DocumentViewer","_DocumentViewer","withOsdkMetrics","ViewerType"],"sources":["document-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// DocumentViewer\nimport { DocumentViewer as _DocumentViewer } from \"../../document-viewer/DocumentViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const DocumentViewer: typeof _DocumentViewer = withOsdkMetrics(\n _DocumentViewer,\n \"DocumentViewer\"\n);\nexport type { DocumentViewerProps } from \"../../document-viewer/DocumentViewerApi.js\";\nexport { ViewerType } from \"../../document-viewer/DocumentViewerApi.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,cAAc,IAAIC,eAAe,QAAQ,yCAAyC;AAC3F,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,cAAsC,GAAGE,eAAe,CACnED,eAAe,EACf,gBACF,CAAC;AAED,SAASE,UAAU,QAAQ,4CAA4C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"email-viewer.js","names":["BaseEmailViewer","EmailViewer","_EmailViewer","withOsdkMetrics"],"sources":["email-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// BaseEmailViewer\nexport { BaseEmailViewer } from \"../../email-viewer/BaseEmailViewer.js\";\nexport type {\n BaseEmailViewerProps,\n EmailAddress,\n EmailViewerMediaProps,\n ParsedEmail,\n} from \"../../email-viewer/EmailViewerApi.js\";\n\n// EmailViewer (Media wrapper)\nimport { EmailViewer as _EmailViewer } from \"../../email-viewer/EmailViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const EmailViewer: typeof _EmailViewer = withOsdkMetrics(\n _EmailViewer,\n \"EmailViewer\",\n);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,eAAe,QAAQ,uCAAuC;AAQvE;AACA,SAASC,WAAW,IAAIC,YAAY,QAAQ,mCAAmC;AAC/E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"email-viewer.js","names":["BaseEmailViewer","EmailViewer","_EmailViewer","withOsdkMetrics"],"sources":["email-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// BaseEmailViewer\nexport { BaseEmailViewer } from \"../../email-viewer/BaseEmailViewer.js\";\nexport type {\n BaseEmailViewerProps,\n EmailAddress,\n EmailViewerMediaProps,\n ParsedEmail,\n} from \"../../email-viewer/EmailViewerApi.js\";\n\n// EmailViewer (Media wrapper)\nimport { EmailViewer as _EmailViewer } from \"../../email-viewer/EmailViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const EmailViewer: typeof _EmailViewer = withOsdkMetrics(\n _EmailViewer,\n \"EmailViewer\"\n);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,eAAe,QAAQ,uCAAuC;AAQvE;AACA,SAASC,WAAW,IAAIC,YAAY,QAAQ,mCAAmC;AAC/E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"excel-viewer.js","names":["BaseExcelViewer","ExcelViewer","_ExcelViewer","withOsdkMetrics"],"sources":["excel-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// BaseExcelViewer\nexport { BaseExcelViewer } from \"../../excel-viewer/BaseExcelViewer.js\";\nexport type {\n BaseExcelViewerProps,\n ExcelViewerMediaProps,\n ParsedSpreadsheet,\n SheetData,\n} from \"../../excel-viewer/ExcelViewerApi.js\";\n\n// ExcelViewer (Media wrapper)\nimport { ExcelViewer as _ExcelViewer } from \"../../excel-viewer/ExcelViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ExcelViewer: typeof _ExcelViewer = withOsdkMetrics(\n _ExcelViewer,\n \"ExcelViewer\",\n);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,eAAe,QAAQ,uCAAuC;AAQvE;AACA,SAASC,WAAW,IAAIC,YAAY,QAAQ,mCAAmC;AAC/E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"excel-viewer.js","names":["BaseExcelViewer","ExcelViewer","_ExcelViewer","withOsdkMetrics"],"sources":["excel-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// BaseExcelViewer\nexport { BaseExcelViewer } from \"../../excel-viewer/BaseExcelViewer.js\";\nexport type {\n BaseExcelViewerProps,\n ExcelViewerMediaProps,\n ParsedSpreadsheet,\n SheetData,\n} from \"../../excel-viewer/ExcelViewerApi.js\";\n\n// ExcelViewer (Media wrapper)\nimport { ExcelViewer as _ExcelViewer } from \"../../excel-viewer/ExcelViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ExcelViewer: typeof _ExcelViewer = withOsdkMetrics(\n _ExcelViewer,\n \"ExcelViewer\"\n);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,eAAe,QAAQ,uCAAuC;AAQvE;AACA,SAASC,WAAW,IAAIC,YAAY,QAAQ,mCAAmC;AAC/E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-list.js","names":["BaseFilterList","FilterList","_FilterList","withOsdkMetrics","deserializeFilterStates","serializeFilterStates","FilterPopover","FilterInput","useFilterListState","filterHasActiveState","NO_VALUE","getFilterKey","getFilterLabel","summarizeFilterValue","narrowObjectSet"],"sources":["filter-list.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\nexport { BaseFilterList } from \"../../filter-list/base/BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"../../filter-list/base/BaseFilterListApi.js\";\nimport { FilterList as _FilterList } from \"../../filter-list/FilterList.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const FilterList: typeof _FilterList = withOsdkMetrics(\n _FilterList,\n \"FilterList\",\n);\n\nexport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"../../filter-list/FilterListApi.js\";\nexport type {\n FilterComponentType,\n FilterDefinitionControls,\n FilterListItemProps,\n FilterState,\n PropertyFilterDefinition,\n} from \"../../filter-list/FilterListItemApi.js\";\nexport {\n deserializeFilterStates,\n serializeFilterStates,\n} from \"../../filter-list/utils/filterStateSerialization.js\";\n\nexport { FilterPopover } from \"../../filter-list/base/FilterPopover.js\";\nexport type { FilterPopoverProps } from \"../../filter-list/base/FilterPopover.js\";\n\nexport { FilterInput } from \"../../filter-list/FilterInput.js\";\nexport type { FilterInputProps } from \"../../filter-list/FilterInput.js\";\n\nexport { useFilterListState } from \"../../filter-list/hooks/useFilterListState.js\";\nexport type { UseFilterListStateResult } from \"../../filter-list/hooks/useFilterListState.js\";\n\nexport {\n filterHasActiveState,\n NO_VALUE,\n} from \"../../filter-list/utils/filterValues.js\";\nexport { getFilterKey } from \"../../filter-list/utils/getFilterKey.js\";\nexport { getFilterLabel } from \"../../filter-list/utils/getFilterLabel.js\";\nexport { summarizeFilterValue } from \"../../filter-list/utils/summarizeFilterValue.js\";\n\nexport type { LinkedFilter } from \"../../filter-list/types/LinkedFilterTypes.js\";\nexport { narrowObjectSet } from \"../../filter-list/utils/narrowObjectSet.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,0CAA0C;AAKzE,SAASC,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AAaD,SACEE,uBAAuB,EACvBC,qBAAqB,QAChB,qDAAqD;AAE5D,SAASC,aAAa,QAAQ,yCAAyC;AAGvE,SAASC,WAAW,QAAQ,kCAAkC;AAG9D,SAASC,kBAAkB,QAAQ,+CAA+C;AAGlF,SACEC,oBAAoB,EACpBC,QAAQ,QACH,yCAAyC;AAChD,SAASC,YAAY,QAAQ,yCAAyC;AACtE,SAASC,cAAc,QAAQ,2CAA2C;AAC1E,SAASC,oBAAoB,QAAQ,iDAAiD;AAGtF,SAASC,eAAe,QAAQ,4CAA4C","ignoreList":[]}
1
+ {"version":3,"file":"filter-list.js","names":["BaseFilterList","FilterList","_FilterList","withOsdkMetrics","deserializeFilterStates","serializeFilterStates","FilterPopover","FilterInput","useFilterListState","filterHasActiveState","NO_VALUE","getFilterKey","getFilterLabel","summarizeFilterValue","narrowObjectSet"],"sources":["filter-list.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\nexport { BaseFilterList } from \"../../filter-list/base/BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"../../filter-list/base/BaseFilterListApi.js\";\nimport { FilterList as _FilterList } from \"../../filter-list/FilterList.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const FilterList: typeof _FilterList = withOsdkMetrics(\n _FilterList,\n \"FilterList\"\n);\n\nexport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"../../filter-list/FilterListApi.js\";\nexport type {\n FilterComponentType,\n FilterDefinitionControls,\n FilterListItemProps,\n FilterState,\n PropertyFilterDefinition,\n} from \"../../filter-list/FilterListItemApi.js\";\nexport {\n deserializeFilterStates,\n serializeFilterStates,\n} from \"../../filter-list/utils/filterStateSerialization.js\";\n\nexport { FilterPopover } from \"../../filter-list/base/FilterPopover.js\";\nexport type { FilterPopoverProps } from \"../../filter-list/base/FilterPopover.js\";\n\nexport { FilterInput } from \"../../filter-list/FilterInput.js\";\nexport type { FilterInputProps } from \"../../filter-list/FilterInput.js\";\n\nexport { useFilterListState } from \"../../filter-list/hooks/useFilterListState.js\";\nexport type { UseFilterListStateResult } from \"../../filter-list/hooks/useFilterListState.js\";\n\nexport {\n filterHasActiveState,\n NO_VALUE,\n} from \"../../filter-list/utils/filterValues.js\";\nexport { getFilterKey } from \"../../filter-list/utils/getFilterKey.js\";\nexport { getFilterLabel } from \"../../filter-list/utils/getFilterLabel.js\";\nexport { summarizeFilterValue } from \"../../filter-list/utils/summarizeFilterValue.js\";\n\nexport type { LinkedFilter } from \"../../filter-list/types/LinkedFilterTypes.js\";\nexport { narrowObjectSet } from \"../../filter-list/utils/narrowObjectSet.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,0CAA0C;AAKzE,SAASC,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AAaD,SACEE,uBAAuB,EACvBC,qBAAqB,QAChB,qDAAqD;AAE5D,SAASC,aAAa,QAAQ,yCAAyC;AAGvE,SAASC,WAAW,QAAQ,kCAAkC;AAG9D,SAASC,kBAAkB,QAAQ,+CAA+C;AAGlF,SACEC,oBAAoB,EACpBC,QAAQ,QACH,yCAAyC;AAChD,SAASC,YAAY,QAAQ,yCAAyC;AACtE,SAASC,cAAc,QAAQ,2CAA2C;AAC1E,SAASC,oBAAoB,QAAQ,iDAAiD;AAGtF,SAASC,eAAe,QAAQ,4CAA4C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"image-viewer.js","names":["BaseImageViewer","ImageViewer","_ImageViewer","withOsdkMetrics"],"sources":["image-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// BaseImageViewer\nexport { BaseImageViewer } from \"../../images/image-viewer/BaseImageViewer.js\";\nexport type {\n BaseImageViewerProps,\n ImageViewerMediaProps,\n} from \"../../images/image-viewer/ImageViewerApi.js\";\n\n// ImageViewer (Media wrapper)\nimport { ImageViewer as _ImageViewer } from \"../../images/image-viewer/ImageViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ImageViewer: typeof _ImageViewer = withOsdkMetrics(\n _ImageViewer,\n \"ImageViewer\",\n);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,eAAe,QAAQ,8CAA8C;AAM9E;AACA,SAASC,WAAW,IAAIC,YAAY,QAAQ,0CAA0C;AACtF,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"image-viewer.js","names":["BaseImageViewer","ImageViewer","_ImageViewer","withOsdkMetrics"],"sources":["image-viewer.ts"],"sourcesContent":["/*\n * Copyright 2026 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// BaseImageViewer\nexport { BaseImageViewer } from \"../../images/image-viewer/BaseImageViewer.js\";\nexport type {\n BaseImageViewerProps,\n ImageViewerMediaProps,\n} from \"../../images/image-viewer/ImageViewerApi.js\";\n\n// ImageViewer (Media wrapper)\nimport { ImageViewer as _ImageViewer } from \"../../images/image-viewer/ImageViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ImageViewer: typeof _ImageViewer = withOsdkMetrics(\n _ImageViewer,\n \"ImageViewer\"\n);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,eAAe,QAAQ,8CAA8C;AAM9E;AACA,SAASC,WAAW,IAAIC,YAAY,QAAQ,0CAA0C;AACtF,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-renderer.js","names":["MarkdownRenderer","MarkdownViewerMedia","_MarkdownViewerMedia","withOsdkMetrics"],"sources":["markdown-renderer.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// MarkdownRenderer\nexport {\n MarkdownRenderer,\n type MarkdownRendererProps,\n} 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: typeof _MarkdownViewerMedia = withOsdkMetrics(\n _MarkdownViewerMedia,\n \"MarkdownViewerMedia\",\n);\nexport type { MarkdownViewerMediaProps } from \"../../markdown-renderer/MarkdownViewerMedia.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SACEA,gBAAgB,QAEX,6CAA6C;;AAEpD;AACA,SAASC,mBAAmB,IAAIC,oBAAoB,QAAQ,gDAAgD;AAC5G,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,mBAAgD,GAAGE,eAAe,CAC7ED,oBAAoB,EACpB,qBACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"markdown-renderer.js","names":["MarkdownRenderer","MarkdownViewerMedia","_MarkdownViewerMedia","withOsdkMetrics"],"sources":["markdown-renderer.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// MarkdownRenderer\nexport {\n MarkdownRenderer,\n type MarkdownRendererProps,\n} 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: typeof _MarkdownViewerMedia = withOsdkMetrics(\n _MarkdownViewerMedia,\n \"MarkdownViewerMedia\"\n);\nexport type { MarkdownViewerMediaProps } from \"../../markdown-renderer/MarkdownViewerMedia.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SACEA,gBAAgB,QAEX,6CAA6C;;AAEpD;AACA,SAASC,mBAAmB,IAAIC,oBAAoB,QAAQ,gDAAgD;AAC5G,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,mBAAgD,GAAGE,eAAe,CAC7ED,oBAAoB,EACpB,qBACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"object-table.js","names":["ObjectTable","_ObjectTable","withOsdkMetrics","BaseTable","ColumnConfigDialog","MultiColumnSortDialog","LoadingCell","LoadingCellContent"],"sources":["object-table.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// ObjectTable that loads and displays data for a given objectSet\nimport { ObjectTable as _ObjectTable } from \"../../object-table/ObjectTable.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ObjectTable: typeof _ObjectTable = withOsdkMetrics(\n _ObjectTable,\n \"ObjectTable\",\n);\nexport type {\n ColumnDefinition,\n ColumnDefinitionLocator,\n CustomColumnLocator,\n EditFieldConfig,\n FunctionColumnLocator,\n ObjectTableDataColumn,\n ObjectTableDataRow,\n ObjectTableHandle,\n ObjectTableProps,\n ObjectTableSnapshot,\n ObjectTableSnapshotOptions,\n PropertyColumnLocator,\n RdpColumnLocator,\n} from \"../../object-table/ObjectTableApi.js\";\nexport type { CellEditInfo } from \"../../object-table/utils/types.js\";\n\n// BaseTable that does not handle data fetching\nexport type { BaseTableProps } from \"../../object-table/Table.js\";\nexport { BaseTable } from \"../../object-table/Table.js\";\n\nexport { ColumnConfigDialog } from \"../../object-table/ColumnConfigDialog.js\";\nexport type {\n ColumnConfigDialogProps,\n ColumnConfigOptions,\n} from \"../../object-table/ColumnConfigDialog.js\";\n\nexport { MultiColumnSortDialog } from \"../../object-table/MultiColumnSortDialog.js\";\nexport type {\n MultiColumnSortDialogProps,\n SortColumnItem,\n} from \"../../object-table/MultiColumnSortDialog.js\";\n\n// Loading cell components for custom column renderers.\n// Use `LoadingCell` when rendering a full `<td>` element (e.g. in a custom row renderer).\n// Use `LoadingCellContent` when rendering just the skeleton content inside an existing cell.\nexport {\n LoadingCell,\n LoadingCellContent,\n} from \"../../object-table/LoadingCell.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,WAAW,IAAIC,YAAY,QAAQ,mCAAmC;AAC/E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC;;AAkBD;;AAEA,SAASE,SAAS,QAAQ,6BAA6B;AAEvD,SAASC,kBAAkB,QAAQ,0CAA0C;AAM7E,SAASC,qBAAqB,QAAQ,6CAA6C;AAMnF;AACA;AACA;AACA,SACEC,WAAW,EACXC,kBAAkB,QACb,mCAAmC","ignoreList":[]}
1
+ {"version":3,"file":"object-table.js","names":["ObjectTable","_ObjectTable","withOsdkMetrics","BaseTable","ColumnConfigDialog","MultiColumnSortDialog","LoadingCell","LoadingCellContent"],"sources":["object-table.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// ObjectTable that loads and displays data for a given objectSet\nimport { ObjectTable as _ObjectTable } from \"../../object-table/ObjectTable.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ObjectTable: typeof _ObjectTable = withOsdkMetrics(\n _ObjectTable,\n \"ObjectTable\"\n);\nexport type {\n ColumnDefinition,\n ColumnDefinitionLocator,\n CustomColumnLocator,\n EditFieldConfig,\n FunctionColumnLocator,\n ObjectTableDataColumn,\n ObjectTableDataRow,\n ObjectTableHandle,\n ObjectTableProps,\n ObjectTableSnapshot,\n ObjectTableSnapshotOptions,\n PropertyColumnLocator,\n RdpColumnLocator,\n} from \"../../object-table/ObjectTableApi.js\";\nexport type { CellEditInfo } from \"../../object-table/utils/types.js\";\n\n// BaseTable that does not handle data fetching\nexport type { BaseTableProps } from \"../../object-table/Table.js\";\nexport { BaseTable } from \"../../object-table/Table.js\";\n\nexport { ColumnConfigDialog } from \"../../object-table/ColumnConfigDialog.js\";\nexport type {\n ColumnConfigDialogProps,\n ColumnConfigOptions,\n} from \"../../object-table/ColumnConfigDialog.js\";\n\nexport { MultiColumnSortDialog } from \"../../object-table/MultiColumnSortDialog.js\";\nexport type {\n MultiColumnSortDialogProps,\n SortColumnItem,\n} from \"../../object-table/MultiColumnSortDialog.js\";\n\n// Loading cell components for custom column renderers.\n// Use `LoadingCell` when rendering a full `<td>` element (e.g. in a custom row renderer).\n// Use `LoadingCellContent` when rendering just the skeleton content inside an existing cell.\nexport {\n LoadingCell,\n LoadingCellContent,\n} from \"../../object-table/LoadingCell.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,WAAW,IAAIC,YAAY,QAAQ,mCAAmC;AAC/E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,WAAgC,GAAGE,eAAe,CAC7DD,YAAY,EACZ,aACF,CAAC;;AAkBD;;AAEA,SAASE,SAAS,QAAQ,6BAA6B;AAEvD,SAASC,kBAAkB,QAAQ,0CAA0C;AAM7E,SAASC,qBAAqB,QAAQ,6CAA6C;AAMnF;AACA;AACA;AACA,SACEC,WAAW,EACXC,kBAAkB,QACb,mCAAmC","ignoreList":[]}