@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":"LoadingStateTable.js","names":["classNames","React","useEffect","useMemo","useRef","useState","SkeletonBar","loadingStyles","LoadingRow","bodyStyles","TableHeader","headerStyles","DEFAULT_LOADING_COLUMN_WIDTH","DEFAULT_ROW_HEIGHT","MIN_LOADING_ROWS","LoadingStateTable","table","tableContainerRef","headerGroups","rowHeight","columnWidth","enableRowSelection","options","minHeaderCount","headers","length","hasHeadersLoaded","headerRef","bodyRef","loadingRowCount","setLoadingRowCount","loadingColumnCount","setLoadingColumnCount","current","tableWidth","clientWidth","columnsNeeded","Math","ceil","containerHeight","clientHeight","availableHeight","rowsNeeded","max","createElement","Fragment","className","osdkTableHeader","ref","osdkTableHeaderRow","Array","from","map","_","index","width","getSize","key","osdkTableHeaderCell","style","osdkLoadingHeaderCell","osdkCellSkeleton","osdkTableBody","columnCount","translateY"],"sources":["LoadingStateTable.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { HeaderGroup, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport loadingStyles from \"./LoadingCell.module.css\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport bodyStyles from \"./TableBody.module.css\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport headerStyles from \"./TableHeader.module.css\";\nimport {\n DEFAULT_LOADING_COLUMN_WIDTH,\n DEFAULT_ROW_HEIGHT,\n MIN_LOADING_ROWS,\n} from \"./utils/constants.js\";\n\ninterface LoadingStateTableProps<TData extends RowData> {\n table: Table<TData>;\n tableContainerRef: React.RefObject<HTMLDivElement>;\n headerGroups: Array<HeaderGroup<TData>>;\n rowHeight?: number;\n columnWidth?: number;\n}\n\nexport function LoadingStateTable<TData extends RowData>({\n table,\n tableContainerRef,\n headerGroups,\n rowHeight = DEFAULT_ROW_HEIGHT,\n columnWidth = DEFAULT_LOADING_COLUMN_WIDTH,\n}: LoadingStateTableProps<TData>): React.ReactElement {\n // If selection enabled, there will be a header for the selection column\n const enableRowSelection = table.options.enableRowSelection;\n const minHeaderCount = enableRowSelection ? 1 : 0;\n const headers = useMemo(\n () => headerGroups.length > 0 ? headerGroups[0].headers : [],\n [headerGroups],\n );\n const hasHeadersLoaded = headers.length > minHeaderCount;\n\n const headerRef = useRef<HTMLTableSectionElement>(null);\n const bodyRef = useRef<HTMLTableSectionElement>(null);\n const [loadingRowCount, setLoadingRowCount] = useState<number>(\n MIN_LOADING_ROWS,\n );\n const [loadingColumnCount, setLoadingColumnCount] = useState<number>(\n headers.length,\n );\n // Calculate number of columns needed to fill container width\n useEffect(() => {\n if (hasHeadersLoaded) {\n setLoadingColumnCount(headers.length);\n } else {\n if (tableContainerRef.current) {\n const tableWidth = tableContainerRef.current.clientWidth;\n if (tableWidth > 0) {\n const columnsNeeded = Math.ceil(tableWidth / columnWidth);\n setLoadingColumnCount(columnsNeeded);\n }\n }\n }\n }, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);\n\n // Calculate number of rows needed to fill container height\n useEffect(() => {\n if (tableContainerRef.current) {\n const containerHeight = tableContainerRef.current.clientHeight;\n const availableHeight = containerHeight - rowHeight;\n\n if (availableHeight > 0) {\n const rowsNeeded = Math.ceil(availableHeight / rowHeight);\n setLoadingRowCount(Math.max(rowsNeeded, MIN_LOADING_ROWS));\n }\n }\n }, [tableContainerRef, rowHeight]);\n\n return (\n <>\n {hasHeadersLoaded\n ? <TableHeader table={table} />\n : (\n <thead className={headerStyles.osdkTableHeader} ref={headerRef}>\n <tr className={headerStyles.osdkTableHeaderRow}>\n {Array.from({ length: loadingColumnCount }).map((\n _,\n index,\n ) => {\n const width = headers.length > index\n ? headers[index].getSize()\n : columnWidth;\n return (\n <th\n key={`loading-header-${index}`}\n className={headerStyles.osdkTableHeaderCell}\n style={{ width }}\n >\n <SkeletonBar\n className={classNames(\n headerStyles.osdkLoadingHeaderCell,\n loadingStyles.osdkCellSkeleton,\n )}\n />\n </th>\n );\n })}\n </tr>\n </thead>\n )}\n <tbody className={bodyStyles.osdkTableBody} ref={bodyRef}>\n {Array.from({ length: loadingRowCount }).map((_, index) => (\n <LoadingRow\n key={`skeleton-${index}`}\n columnCount={loadingColumnCount}\n headers={headers}\n translateY={rowHeight * index}\n rowHeight={rowHeight}\n columnWidth={columnWidth}\n />\n ))}\n </tbody>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LoadingStateTable.js","names":["classNames","React","useEffect","useMemo","useRef","useState","SkeletonBar","LoadingRow","TableHeader","DEFAULT_LOADING_COLUMN_WIDTH","DEFAULT_ROW_HEIGHT","MIN_LOADING_ROWS","loadingStyles","bodyStyles","headerStyles","LoadingStateTable","table","tableContainerRef","headerGroups","rowHeight","columnWidth","enableRowSelection","options","minHeaderCount","headers","length","hasHeadersLoaded","headerRef","bodyRef","loadingRowCount","setLoadingRowCount","loadingColumnCount","setLoadingColumnCount","current","tableWidth","clientWidth","columnsNeeded","Math","ceil","containerHeight","clientHeight","availableHeight","rowsNeeded","max","createElement","Fragment","className","osdkTableHeader","ref","osdkTableHeaderRow","Array","from","map","_","index","width","getSize","key","osdkTableHeaderCell","style","osdkLoadingHeaderCell","osdkCellSkeleton","osdkTableBody","columnCount","translateY"],"sources":["LoadingStateTable.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { HeaderGroup, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport {\n DEFAULT_LOADING_COLUMN_WIDTH,\n DEFAULT_ROW_HEIGHT,\n MIN_LOADING_ROWS,\n} from \"./utils/constants.js\";\n\nimport loadingStyles from \"./LoadingCell.module.css\";\nimport bodyStyles from \"./TableBody.module.css\";\nimport headerStyles from \"./TableHeader.module.css\";\n\ninterface LoadingStateTableProps<TData extends RowData> {\n table: Table<TData>;\n tableContainerRef: React.RefObject<HTMLDivElement>;\n headerGroups: Array<HeaderGroup<TData>>;\n rowHeight?: number;\n columnWidth?: number;\n}\n\nexport function LoadingStateTable<TData extends RowData>({\n table,\n tableContainerRef,\n headerGroups,\n rowHeight = DEFAULT_ROW_HEIGHT,\n columnWidth = DEFAULT_LOADING_COLUMN_WIDTH,\n}: LoadingStateTableProps<TData>): React.ReactElement {\n // If selection enabled, there will be a header for the selection column\n const enableRowSelection = table.options.enableRowSelection;\n const minHeaderCount = enableRowSelection ? 1 : 0;\n const headers = useMemo(\n () => (headerGroups.length > 0 ? headerGroups[0].headers : []),\n [headerGroups]\n );\n const hasHeadersLoaded = headers.length > minHeaderCount;\n\n const headerRef = useRef<HTMLTableSectionElement>(null);\n const bodyRef = useRef<HTMLTableSectionElement>(null);\n const [loadingRowCount, setLoadingRowCount] =\n useState<number>(MIN_LOADING_ROWS);\n const [loadingColumnCount, setLoadingColumnCount] = useState<number>(\n headers.length\n );\n // Calculate number of columns needed to fill container width\n useEffect(() => {\n if (hasHeadersLoaded) {\n setLoadingColumnCount(headers.length);\n } else {\n if (tableContainerRef.current) {\n const tableWidth = tableContainerRef.current.clientWidth;\n if (tableWidth > 0) {\n const columnsNeeded = Math.ceil(tableWidth / columnWidth);\n setLoadingColumnCount(columnsNeeded);\n }\n }\n }\n }, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);\n\n // Calculate number of rows needed to fill container height\n useEffect(() => {\n if (tableContainerRef.current) {\n const containerHeight = tableContainerRef.current.clientHeight;\n const availableHeight = containerHeight - rowHeight;\n\n if (availableHeight > 0) {\n const rowsNeeded = Math.ceil(availableHeight / rowHeight);\n setLoadingRowCount(Math.max(rowsNeeded, MIN_LOADING_ROWS));\n }\n }\n }, [tableContainerRef, rowHeight]);\n\n return (\n <>\n {hasHeadersLoaded ? (\n <TableHeader table={table} />\n ) : (\n <thead className={headerStyles.osdkTableHeader} ref={headerRef}>\n <tr className={headerStyles.osdkTableHeaderRow}>\n {Array.from({ length: loadingColumnCount }).map((_, index) => {\n const width =\n headers.length > index ? headers[index].getSize() : columnWidth;\n return (\n <th\n key={`loading-header-${index}`}\n className={headerStyles.osdkTableHeaderCell}\n style={{ width }}\n >\n <SkeletonBar\n className={classNames(\n headerStyles.osdkLoadingHeaderCell,\n loadingStyles.osdkCellSkeleton\n )}\n />\n </th>\n );\n })}\n </tr>\n </thead>\n )}\n <tbody className={bodyStyles.osdkTableBody} ref={bodyRef}>\n {Array.from({ length: loadingRowCount }).map((_, index) => (\n <LoadingRow\n key={`skeleton-${index}`}\n columnCount={loadingColumnCount}\n headers={headers}\n translateY={rowHeight * index}\n rowHeight={rowHeight}\n columnWidth={columnWidth}\n />\n ))}\n </tbody>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,8 +22,8 @@ import React, { useCallback, useEffect, useMemo, useState } from "react";
22
22
  import { ActionButton } from "../base-components/action-button/ActionButton.js";
23
23
  import { Dialog } from "../base-components/dialog/Dialog.js";
24
24
  import { SearchableMenu } from "../base-components/searchable-menu/SearchableMenu.js";
25
- import styles from "./MultiColumnSortDialog.module.css";
26
25
  import { SortableItemsList } from "./SortableItemsList.js";
26
+ import styles from "./MultiColumnSortDialog.module.css";
27
27
  export function MultiColumnSortDialog({
28
28
  isOpen,
29
29
  onClose,
@@ -1 +1 @@
1
- {"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchableMenu","styles","SortableItemsList","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","searchableMenuItems","key","label","name","handleMenuItemSelected","sortableItems","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","onItemSelected","trigger","addIcon","addColumnText","triggerClassName","addColumnButton","disabled","length","searchPlaceholder","emptyMessage"],"sources":["MultiColumnSortDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchableMenu } from \"../base-components/searchable-menu/SearchableMenu.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\nexport interface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n [],\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort\n && !selectedSortColumns.some((selected) => selected.id === col.id),\n ),\n [columnOptions, selectedSortColumns],\n );\n\n const searchableMenuItems = useMemo(\n () => availableColumns.map((col) => ({ key: col.id, label: col.name })),\n [availableColumns],\n );\n\n const handleMenuItemSelected = useCallback(\n (key: string) => {\n const column = availableColumns.find((col) => col.id === key);\n if (column) {\n handleAddColumn(column);\n }\n },\n [availableColumns, handleAddColumn],\n );\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\"\n ? (\n <SortAlphabetical\n className={styles.sortIcon}\n />\n )\n : (\n <SortAlphabeticalDesc\n className={styles.sortIcon}\n />\n )}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(() => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ), [handleApply, onClose]);\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <SearchableMenu\n items={searchableMenuItems}\n onItemSelected={handleMenuItemSelected}\n trigger={\n <>\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>\n Add Column to Sort\n </span>\n <CaretDown />\n </>\n }\n triggerClassName={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n searchPlaceholder=\"Search columns\"\n emptyMessage=\"No matching columns\"\n />\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />Sort on Multiple Columns\n </div>\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchableMenu","SortableItemsList","styles","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","searchableMenuItems","key","label","name","handleMenuItemSelected","sortableItems","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","onItemSelected","trigger","addIcon","addColumnText","triggerClassName","addColumnButton","disabled","length","searchPlaceholder","emptyMessage"],"sources":["MultiColumnSortDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchableMenu } from \"../base-components/searchable-menu/SearchableMenu.js\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nimport styles from \"./MultiColumnSortDialog.module.css\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\nexport interface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n []\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort &&\n !selectedSortColumns.some((selected) => selected.id === col.id)\n ),\n [columnOptions, selectedSortColumns]\n );\n\n const searchableMenuItems = useMemo(\n () => availableColumns.map((col) => ({ key: col.id, label: col.name })),\n [availableColumns]\n );\n\n const handleMenuItemSelected = useCallback(\n (key: string) => {\n const column = availableColumns.find((col) => col.id === key);\n if (column) {\n handleAddColumn(column);\n }\n },\n [availableColumns, handleAddColumn]\n );\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\" ? (\n <SortAlphabetical className={styles.sortIcon} />\n ) : (\n <SortAlphabeticalDesc className={styles.sortIcon} />\n )}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(\n () => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ),\n [handleApply, onClose]\n );\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <SearchableMenu\n items={searchableMenuItems}\n onItemSelected={handleMenuItemSelected}\n trigger={\n <>\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>Add Column to Sort</span>\n <CaretDown />\n </>\n }\n triggerClassName={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n searchPlaceholder=\"Search columns\"\n emptyMessage=\"No matching columns\"\n />\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />\n Sort on Multiple Columns\n </div>\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NonIdealState.js","names":["React","styles","NonIdealState","message","createElement","className","container"],"sources":["NonIdealState.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport styles from \"./NonIdealState.module.css\";\n\ninterface NonIdealStateProps {\n message: string;\n}\n\nexport function NonIdealState(\n { message }: NonIdealStateProps,\n): React.ReactElement {\n return (\n <div className={styles.container}>\n <div className={styles.message}>\n {message}\n </div>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,4BAA4B;AAM/C,OAAO,SAASC,aAAaA,CAC3B;EAAEC;AAA4B,CAAC,EACX;EACpB,oBACEH,KAAA,CAAAI,aAAA;IAAKC,SAAS,EAAEJ,MAAM,CAACK;EAAU,gBAC/BN,KAAA,CAAAI,aAAA;IAAKC,SAAS,EAAEJ,MAAM,CAACE;EAAQ,GAC5BA,OACE,CACF,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"NonIdealState.js","names":["React","styles","NonIdealState","message","createElement","className","container"],"sources":["NonIdealState.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\n\nimport styles from \"./NonIdealState.module.css\";\n\ninterface NonIdealStateProps {\n message: string;\n}\n\nexport function NonIdealState({\n message,\n}: NonIdealStateProps): React.ReactElement {\n return (\n <div className={styles.container}>\n <div className={styles.message}>{message}</div>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,4BAA4B;AAM/C,OAAO,SAASC,aAAaA,CAAC;EAC5BC;AACkB,CAAC,EAAsB;EACzC,oBACEH,KAAA,CAAAI,aAAA;IAAKC,SAAS,EAAEJ,MAAM,CAACK;EAAU,gBAC/BN,KAAA,CAAAI,aAAA;IAAKC,SAAS,EAAEJ,MAAM,CAACE;EAAQ,GAAEA,OAAa,CAC3C,CAAC;AAEV","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectTable.js","names":["getCoreRowModel","useReactTable","React","useCallback","useImperativeHandle","useMemo","useColumnDefs","useColumnPinning","useColumnResize","useColumnVisibility","useEditableTable","useObjectTableData","useObjectTableSnapshot","useRowSelection","useSelectionColumn","useTableSorting","BaseTable","deriveSelectionObjectSet","getRowId","getRowIdFromPrimaryKey","EMPTY_ARRAY","ObjectTable","objectType","objectSet","columnDefinitions","filter","objectSetOptions","dedupeIntervalMs","pageSize","streamUpdates","orderBy","defaultOrderBy","onOrderByChanged","onColumnsPinnedChanged","onColumnResize","onRowSelection","onRowSelectionChanged","onColumnHeaderClick","renderCellContextMenu","selectionMode","selectedRows","isAllSelected","isAllSelectedProp","onColumnVisibilityChanged","onCellValueChanged","onSubmitEdits","enableOrdering","enableColumnPinning","enableColumnResizing","enableColumnConfig","editMode","focusedRow","onFocusedRowChanged","tableRef","props","columnSizing","onColumnSizingChange","sorting","onSortingChange","orderByState","data","fetchMore","isLoading","error","totalCount","resultingObjectSet","columns","loading","isColumnsLoading","handleRowSelectionChanged","change","isSelectAll","rowSelection","hasSelection","onToggleAll","onToggleRow","enableRowSelection","selectionColumn","columnVisibility","onColumnVisibilityChange","columnOrder","onColumnOrderChange","allColumns","columnPinning","onColumnPinningChange","hasSelectionColumn","editableConfig","table","state","enableSorting","columnResizeMode","columnResizeDirection","manualSorting","defaultColumn","minSize","meta","onCellEdit","onCellValidationError","clearCellValidationError","cellEdits","isInEditMode","editModeState","isActive","validationErrors","getSnapshot","objectOrInterfaceType","onRenderCellContextMenu","row","cell","getValue","handleColumnHeaderClick","columnId","undefined","headerMenuFeatureFlags","showSortingItems","showPinningItems","showResizeItem","showConfigItem","createElement","fetchNextPage","onRowClick","rowHeight","renderEmptyState","className","getRowAttributes","showEditFooter","focusedRowId"],"sources":["ObjectTable.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, useImperativeHandle, useMemo } from \"react\";\nimport { useColumnDefs } from \"./hooks/useColumnDefs.js\";\nimport { useColumnPinning } from \"./hooks/useColumnPinning.js\";\nimport { useColumnResize } from \"./hooks/useColumnResize.js\";\nimport { useColumnVisibility } from \"./hooks/useColumnVisibility.js\";\nimport { useEditableTable } from \"./hooks/useEditableTable.js\";\nimport { useObjectTableData } from \"./hooks/useObjectTableData.js\";\nimport { useObjectTableSnapshot } from \"./hooks/useObjectTableSnapshot.js\";\nimport type { UseRowSelectionChange } from \"./hooks/useRowSelection.js\";\nimport { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport type { ObjectTableProps } from \"./ObjectTableApi.js\";\nimport { BaseTable } from \"./Table.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { deriveSelectionObjectSet } from \"./utils/deriveSelectionObjectSet.js\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"./utils/getRowId.js\";\nimport type { EditableConfig } from \"./utils/types.js\";\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * ObjectTable - A headless table component for displaying OSDK object sets\n *\n * @example\n * ```tsx\n * <ObjectTable objectType={MyObjectType} />\n * ```\n */\n\nexport function ObjectTable<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n objectType,\n objectSet,\n columnDefinitions,\n filter,\n objectSetOptions,\n dedupeIntervalMs,\n pageSize,\n streamUpdates,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- intentional pass-through to fire alongside onRowSelectionChanged for backwards compatibility\n onRowSelection,\n onRowSelectionChanged,\n onColumnHeaderClick,\n renderCellContextMenu,\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onColumnVisibilityChanged,\n onCellValueChanged,\n onSubmitEdits,\n enableOrdering = true,\n enableColumnPinning = true,\n enableColumnResizing = true,\n enableColumnConfig = true,\n editMode = \"manual\",\n focusedRow,\n onFocusedRowChanged,\n tableRef,\n ...props\n}: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement {\n const { columnSizing, onColumnSizingChange } = useColumnResize({\n onColumnResize,\n });\n\n const { sorting, onSortingChange, orderByState } = useTableSorting<\n Q,\n RDPs,\n FunctionColumns\n >(\n {\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n },\n );\n\n const {\n data,\n fetchMore,\n isLoading,\n error,\n totalCount,\n objectSet: resultingObjectSet,\n } = useObjectTableData<\n Q,\n RDPs,\n FunctionColumns\n >(\n objectType,\n columnDefinitions,\n filter,\n sorting,\n objectSet,\n objectSetOptions,\n dedupeIntervalMs,\n pageSize,\n streamUpdates,\n );\n\n const { columns, loading: isColumnsLoading } = useColumnDefs<\n Q,\n RDPs,\n FunctionColumns\n >(\n objectType,\n columnDefinitions,\n );\n\n const handleRowSelectionChanged = useCallback(\n (change: UseRowSelectionChange<Q, RDPs>) => {\n if (!onRowSelectionChanged) return;\n\n onRowSelectionChanged({\n selectedRows: change.selectedRows,\n isSelectAll: change.isSelectAll,\n objectSet: deriveSelectionObjectSet(resultingObjectSet, change),\n });\n },\n [\n onRowSelectionChanged,\n resultingObjectSet,\n ],\n );\n\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection,\n } = useRowSelection<Q, RDPs>({\n selectionMode,\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelection,\n onRowSelectionChanged: handleRowSelectionChanged,\n data,\n });\n\n const selectionColumn = useSelectionColumn<Q, RDPs>(\n {\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n },\n );\n\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange,\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged,\n });\n\n const { columnPinning, onColumnPinningChange } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged,\n });\n\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n\n const editableConfig: EditableConfig<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n > = useEditableTable({\n editMode,\n onCellValueChanged,\n onSubmitEdits,\n });\n\n const table = useReactTable<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >({\n data: data ?? EMPTY_ARRAY,\n columns: allColumns,\n getCoreRowModel: getCoreRowModel(),\n state: {\n columnVisibility,\n columnOrder,\n rowSelection,\n sorting,\n columnSizing,\n columnPinning,\n },\n onSortingChange,\n onColumnSizingChange,\n onColumnPinningChange,\n onColumnVisibilityChange,\n onColumnOrderChange,\n enableRowSelection,\n enableSorting: enableOrdering,\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n manualSorting: true, // Enable manual sorting to indicate server-side sorting\n defaultColumn: {\n minSize: 80,\n },\n getRowId,\n meta: {\n onCellEdit: editableConfig.onCellEdit,\n onCellValidationError: editableConfig.onCellValidationError,\n clearCellValidationError: editableConfig.clearCellValidationError,\n cellEdits: editableConfig.cellEdits,\n isInEditMode: editableConfig.editModeState.isActive,\n validationErrors: editableConfig.validationErrors,\n },\n });\n\n const { getSnapshot } = useObjectTableSnapshot<Q, RDPs, FunctionColumns>({\n objectOrInterfaceType: objectType,\n table,\n columnDefinitions,\n objectSet: resultingObjectSet,\n pageSize,\n totalCount,\n orderBy: orderByState,\n });\n\n useImperativeHandle(\n tableRef,\n () => ({ getSnapshot }),\n [getSnapshot],\n );\n\n const onRenderCellContextMenu = useCallback(\n (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cell: Cell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >,\n ) => {\n return renderCellContextMenu?.(row, cell.getValue());\n },\n [renderCellContextMenu],\n );\n\n const handleColumnHeaderClick = useMemo(\n () =>\n onColumnHeaderClick\n ? (columnId: string) =>\n onColumnHeaderClick(\n columnId as\n | PropertyKeys<Q>\n | keyof RDPs\n | keyof FunctionColumns,\n )\n : undefined,\n [onColumnHeaderClick],\n );\n\n const isTableLoading = isLoading || isColumnsLoading;\n\n const headerMenuFeatureFlags: HeaderMenuFeatureFlags = useMemo(() => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig,\n }), [\n enableOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnConfig,\n ]);\n\n return (\n <BaseTable<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n table={table}\n isLoading={isTableLoading}\n fetchNextPage={fetchMore}\n onRowClick={props.onRowClick}\n onColumnHeaderClick={handleColumnHeaderClick}\n rowHeight={props.rowHeight}\n renderCellContextMenu={onRenderCellContextMenu}\n renderEmptyState={props.renderEmptyState}\n className={props.className}\n error={error}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n editableConfig={editableConfig}\n getRowAttributes={props.getRowAttributes}\n showEditFooter={props.showEditFooter}\n focusedRowId={focusedRow == null\n ? focusedRow\n : getRowIdFromPrimaryKey<Q>(focusedRow)}\n onFocusedRowChanged={onFocusedRowChanged}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectTable.js","names":["getCoreRowModel","useReactTable","React","useCallback","useImperativeHandle","useMemo","useColumnDefs","useColumnPinning","useColumnResize","useColumnVisibility","useEditableTable","useObjectTableData","useObjectTableSnapshot","useRowSelection","useSelectionColumn","useTableSorting","BaseTable","deriveSelectionObjectSet","getRowId","getRowIdFromPrimaryKey","EMPTY_ARRAY","ObjectTable","objectType","objectSet","columnDefinitions","filter","objectSetOptions","dedupeIntervalMs","pageSize","streamUpdates","orderBy","defaultOrderBy","onOrderByChanged","onColumnsPinnedChanged","onColumnResize","onRowSelection","onRowSelectionChanged","onColumnHeaderClick","renderCellContextMenu","selectionMode","selectedRows","isAllSelected","isAllSelectedProp","onColumnVisibilityChanged","onCellValueChanged","onSubmitEdits","enableOrdering","enableColumnPinning","enableColumnResizing","enableColumnConfig","editMode","focusedRow","onFocusedRowChanged","tableRef","props","columnSizing","onColumnSizingChange","sorting","onSortingChange","orderByState","data","fetchMore","isLoading","error","totalCount","resultingObjectSet","columns","loading","isColumnsLoading","handleRowSelectionChanged","change","isSelectAll","rowSelection","hasSelection","onToggleAll","onToggleRow","enableRowSelection","selectionColumn","columnVisibility","onColumnVisibilityChange","columnOrder","onColumnOrderChange","allColumns","columnPinning","onColumnPinningChange","hasSelectionColumn","editableConfig","table","state","enableSorting","columnResizeMode","columnResizeDirection","manualSorting","defaultColumn","minSize","meta","onCellEdit","onCellValidationError","clearCellValidationError","cellEdits","isInEditMode","editModeState","isActive","validationErrors","getSnapshot","objectOrInterfaceType","onRenderCellContextMenu","row","cell","getValue","handleColumnHeaderClick","columnId","undefined","headerMenuFeatureFlags","showSortingItems","showPinningItems","showResizeItem","showConfigItem","createElement","fetchNextPage","onRowClick","rowHeight","renderEmptyState","className","getRowAttributes","showEditFooter","focusedRowId"],"sources":["ObjectTable.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, useImperativeHandle, useMemo } from \"react\";\n\nimport { useColumnDefs } from \"./hooks/useColumnDefs.js\";\nimport { useColumnPinning } from \"./hooks/useColumnPinning.js\";\nimport { useColumnResize } from \"./hooks/useColumnResize.js\";\nimport { useColumnVisibility } from \"./hooks/useColumnVisibility.js\";\nimport { useEditableTable } from \"./hooks/useEditableTable.js\";\nimport { useObjectTableData } from \"./hooks/useObjectTableData.js\";\nimport { useObjectTableSnapshot } from \"./hooks/useObjectTableSnapshot.js\";\nimport type { UseRowSelectionChange } from \"./hooks/useRowSelection.js\";\nimport { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport type { ObjectTableProps } from \"./ObjectTableApi.js\";\nimport { BaseTable } from \"./Table.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { deriveSelectionObjectSet } from \"./utils/deriveSelectionObjectSet.js\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"./utils/getRowId.js\";\nimport type { EditableConfig } from \"./utils/types.js\";\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * ObjectTable - A headless table component for displaying OSDK object sets\n *\n * @example\n * ```tsx\n * <ObjectTable objectType={MyObjectType} />\n * ```\n */\n\nexport function ObjectTable<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n objectType,\n objectSet,\n columnDefinitions,\n filter,\n objectSetOptions,\n dedupeIntervalMs,\n pageSize,\n streamUpdates,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- intentional pass-through to fire alongside onRowSelectionChanged for backwards compatibility\n onRowSelection,\n onRowSelectionChanged,\n onColumnHeaderClick,\n renderCellContextMenu,\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onColumnVisibilityChanged,\n onCellValueChanged,\n onSubmitEdits,\n enableOrdering = true,\n enableColumnPinning = true,\n enableColumnResizing = true,\n enableColumnConfig = true,\n editMode = \"manual\",\n focusedRow,\n onFocusedRowChanged,\n tableRef,\n ...props\n}: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement {\n const { columnSizing, onColumnSizingChange } = useColumnResize({\n onColumnResize,\n });\n\n const { sorting, onSortingChange, orderByState } = useTableSorting<\n Q,\n RDPs,\n FunctionColumns\n >({\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n });\n\n const {\n data,\n fetchMore,\n isLoading,\n error,\n totalCount,\n objectSet: resultingObjectSet,\n } = useObjectTableData<Q, RDPs, FunctionColumns>(\n objectType,\n columnDefinitions,\n filter,\n sorting,\n objectSet,\n objectSetOptions,\n dedupeIntervalMs,\n pageSize,\n streamUpdates\n );\n\n const { columns, loading: isColumnsLoading } = useColumnDefs<\n Q,\n RDPs,\n FunctionColumns\n >(objectType, columnDefinitions);\n\n const handleRowSelectionChanged = useCallback(\n (change: UseRowSelectionChange<Q, RDPs>) => {\n if (!onRowSelectionChanged) return;\n\n onRowSelectionChanged({\n selectedRows: change.selectedRows,\n isSelectAll: change.isSelectAll,\n objectSet: deriveSelectionObjectSet(resultingObjectSet, change),\n });\n },\n [onRowSelectionChanged, resultingObjectSet]\n );\n\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection,\n } = useRowSelection<Q, RDPs>({\n selectionMode,\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelection,\n onRowSelectionChanged: handleRowSelectionChanged,\n data,\n });\n\n const selectionColumn = useSelectionColumn<Q, RDPs>({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n });\n\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange,\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged,\n });\n\n const { columnPinning, onColumnPinningChange } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged,\n });\n\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n\n const editableConfig: EditableConfig<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n > = useEditableTable({\n editMode,\n onCellValueChanged,\n onSubmitEdits,\n });\n\n const table = useReactTable<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >({\n data: data ?? EMPTY_ARRAY,\n columns: allColumns,\n getCoreRowModel: getCoreRowModel(),\n state: {\n columnVisibility,\n columnOrder,\n rowSelection,\n sorting,\n columnSizing,\n columnPinning,\n },\n onSortingChange,\n onColumnSizingChange,\n onColumnPinningChange,\n onColumnVisibilityChange,\n onColumnOrderChange,\n enableRowSelection,\n enableSorting: enableOrdering,\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n manualSorting: true, // Enable manual sorting to indicate server-side sorting\n defaultColumn: {\n minSize: 80,\n },\n getRowId,\n meta: {\n onCellEdit: editableConfig.onCellEdit,\n onCellValidationError: editableConfig.onCellValidationError,\n clearCellValidationError: editableConfig.clearCellValidationError,\n cellEdits: editableConfig.cellEdits,\n isInEditMode: editableConfig.editModeState.isActive,\n validationErrors: editableConfig.validationErrors,\n },\n });\n\n const { getSnapshot } = useObjectTableSnapshot<Q, RDPs, FunctionColumns>({\n objectOrInterfaceType: objectType,\n table,\n columnDefinitions,\n objectSet: resultingObjectSet,\n pageSize,\n totalCount,\n orderBy: orderByState,\n });\n\n useImperativeHandle(tableRef, () => ({ getSnapshot }), [getSnapshot]);\n\n const onRenderCellContextMenu = useCallback(\n (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cell: Cell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >\n ) => {\n return renderCellContextMenu?.(row, cell.getValue());\n },\n [renderCellContextMenu]\n );\n\n const handleColumnHeaderClick = useMemo(\n () =>\n onColumnHeaderClick\n ? (columnId: string) =>\n onColumnHeaderClick(\n columnId as PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns\n )\n : undefined,\n [onColumnHeaderClick]\n );\n\n const isTableLoading = isLoading || isColumnsLoading;\n\n const headerMenuFeatureFlags: HeaderMenuFeatureFlags = useMemo(\n () => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig,\n }),\n [\n enableOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnConfig,\n ]\n );\n\n return (\n <BaseTable<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n table={table}\n isLoading={isTableLoading}\n fetchNextPage={fetchMore}\n onRowClick={props.onRowClick}\n onColumnHeaderClick={handleColumnHeaderClick}\n rowHeight={props.rowHeight}\n renderCellContextMenu={onRenderCellContextMenu}\n renderEmptyState={props.renderEmptyState}\n className={props.className}\n error={error}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n editableConfig={editableConfig}\n getRowAttributes={props.getRowAttributes}\n showEditFooter={props.showEditFooter}\n focusedRowId={\n focusedRow == null ? focusedRow : getRowIdFromPrimaryKey<Q>(focusedRow)\n }\n onFocusedRowChanged={onFocusedRowChanged}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectTableApi.js","names":[],"sources":["ObjectTableApi.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 {\n CompileTimeMetadata,\n DerivedProperty,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { QueryParameterType } from \"@osdk/client/observable\";\nimport type * as React from \"react\";\nimport type { CellEditInfo, EditFieldConfig } from \"./utils/types.js\";\n\nexport type { EditFieldConfig } from \"./utils/types.js\";\n\nexport type ColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> =\n | EditableColumnDefinition<Q, RDPs, FunctionColumns>\n | ReadonlyColumnDefinition<Q, RDPs, FunctionColumns>;\n\ninterface SharedColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>;\n\n /**\n * @default true\n */\n isVisible?: boolean;\n\n /**\n * @default none\n */\n pinned?: \"left\" | \"right\" | \"none\";\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n resizable?: boolean;\n orderable?: boolean;\n filterable?: boolean;\n\n /**\n * Custom renderer for the cell value.\n *\n * Interaction with `editable` columns:\n * - When `editMode: \"manual\"` (default), `renderCell` is used while the\n * table is read-only (Edit Table button visible) and the editable cell\n * takes over once the user enters edit mode.\n * - When `editMode: \"always\"`, the editable cell always wins on editable\n * columns and `renderCell` is ignored — `editMode: \"always\"` opts the\n * column into a permanently-editable surface, leaving no read-only\n * state for `renderCell` to render. Use `editMode: \"manual\"` if you\n * need a custom display alongside editing.\n */\n renderCell?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>,\n ) => React.ReactNode;\n\n /**\n * If provided, this will be used in the column header.\n * If both columnName and renderHeader are provided, renderHeader will take precedence in the table header.\n * columnName will still be used in other parts where the column name is displayed.\n *\n * If not provided,\n * for a property column, the property displayName will be used\n * for other columns, the id will be used.\n */\n columnName?: string;\n\n /**\n * If provided, this will be used to render the header component.\n * When both columnName and renderHeader are provided, renderHeader will take precedence in the table header.\n */\n renderHeader?: () => React.ReactNode;\n}\n\ninterface EditableColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> extends SharedColumnDefinition<Q, RDPs, FunctionColumns> {\n /**\n * `editable` can be a boolean or a predicate that receives the row's object\n * and returns whether the cell is editable\n */\n editable:\n | true\n | ((\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n ) => boolean);\n\n /**\n * Configuration for the cell editor component.\n *\n * When provided, the column uses the specified field component\n * (e.g. dropdown) instead of the default auto-detected text/number input.\n *\n * `getFieldComponentProps` receives the row's object and a map of any\n * pending edits for that row (keyed by column id), and returns the props to\n * pass to the field component. Editor configuration can depend on the\n * current row or on other in-progress edits within the row.\n */\n editFieldConfig?: EditFieldConfig<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >;\n\n /**\n * Additional function to validate the cell value during edit.\n *\n * @param value the current cell value\n * @returns a promise that resolves to an error message string if validation fails, or undefined if validation succeeds\n */\n validateEdit?: (\n value: unknown,\n ) => Promise<string | undefined>;\n}\n\n/**\n * Column definition for a read-only column (default).\n * `editFieldConfig` and `validateEdit` are not available.\n */\ninterface ReadonlyColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> extends SharedColumnDefinition<Q, RDPs, FunctionColumns> {\n editable?: false;\n}\n\nexport type ExtractQueryParameters<\n Q extends QueryDefinition,\n> = CompileTimeMetadata<Q>[\"parameters\"] extends Record<string, never>\n ? undefined\n : QueryParameterType<CompileTimeMetadata<Q>[\"parameters\"]>;\n\nexport interface PropertyColumnLocator<Q extends ObjectOrInterfaceDefinition> {\n type: \"property\";\n id: PropertyKeys<Q>;\n}\n\n/**\n * Concrete function column locator for a single key K.\n * Correlates the id, queryDefinition, and getFunctionParams types.\n */\ninterface FunctionColumnLocatorForKey<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n FunctionColumns extends Record<string, QueryDefinition<{}>>,\n K extends keyof FunctionColumns,\n> {\n /**\n * This is equivalent to workshop's function-backed columns.\n * The function needs to meet the specifications stated in https://www.palantir.com/docs/foundry/workshop/widgets-object-table/#function-backed-columns\n */\n type: \"function\";\n id: K;\n queryDefinition: FunctionColumns[K];\n\n /**\n * The function will be called with the current object set to get the input parameters for the function query.\n * @param objectSet - The current object set.\n * @returns - The function's input parameters including the object set.\n */\n getFunctionParams: (\n objectSet: ObjectSet<Q, RDPs>,\n ) => ExtractQueryParameters<FunctionColumns[K]>;\n\n /**\n * Function to generate keys for looking up results in the FunctionsMap.\n * @param object - The object instance\n * @returns - The key to use for looking up this object's result in the FunctionsMap\n */\n getKey: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n ) => string;\n\n /**\n * Function to extract the cell value from the raw cell data returned by the function.\n * This is useful when functions return custom types with multiple properties.\n * @param cellData - The raw data returned by the function for this object\n * @returns - The value to display in the cell\n */\n getValue?: (cellData?: unknown) => unknown;\n\n /**\n * Minimum time between re-fetches of the same function with the same parameters, in milliseconds.\n * Defaults to 5 minutes as it is expensive to fetch function columns for a large object set\n * and they are expected to be relatively static in the context of an object table\n *\n * @default 300_000 (5 minutes)\n */\n dedupeIntervalMs?: number;\n\n /**\n * Object type apiNames the function reads but doesn't take as a parameter (e.g.\n * linked object types the function traverses internally). The column auto-revalidates\n * when an action edits an object of any of these types. Param-derived types are\n * tracked automatically and don't need to be listed here.\n */\n dependsOn?: string[];\n}\n\n/**\n * Distributes over each key in FunctionColumns so that id, queryDefinition,\n * and getFunctionParams are correlated per key.\n */\nexport type FunctionColumnLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> = keyof FunctionColumns extends infer K\n ? K extends keyof FunctionColumns\n ? FunctionColumnLocatorForKey<Q, RDPs, FunctionColumns, K>\n : never\n : never;\n\nexport interface RdpColumnLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n type: \"rdp\";\n id: keyof RDPs;\n creator: DerivedProperty.Creator<Q, RDPs[keyof RDPs]>;\n}\n\nexport interface CustomColumnLocator {\n type: \"custom\";\n id: string;\n}\n\nexport type ColumnDefinitionLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> =\n | PropertyColumnLocator<Q>\n | FunctionColumnLocator<Q, RDPs, FunctionColumns>\n | RdpColumnLocator<Q, RDPs>\n | CustomColumnLocator;\n\nexport interface ObjectTableProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n /**\n * The object or interface type of the object\n * If objectSet is not provided, objects will be fetched based on this type.\n */\n objectType: Q;\n\n /**\n * The set of objects to show in the table.\n * If provided, the table fetches through this object set instead of fetching based on\n * objectType. Supported for both object and interface types.\n *\n * For an interface object set, rows expose the interface's declared properties (plus any\n * `withProperties` derived from `rdp` column locators); the underlying concrete object's\n * non-interface properties are not loaded. Use objectType-based fetching if you need those.\n */\n objectSet?: ObjectSet<Q>;\n\n objectSetOptions?: ObjectSetOptions<Q>;\n\n /**\n * Minimum time between fetch requests in milliseconds.\n * Increasing this value reduces redundant network calls when the same data\n * is requested multiple times in quick succession.\n *\n * @default 60_000 1 minute\n */\n dedupeIntervalMs?: number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the table will automatically update when matching\n * objects are added, updated, or removed in Foundry.\n *\n * Limitations: `streamUpdates` cannot be used together with `pivotTo` or\n * `withProperties`. The server does not support websocket subscriptions\n * for link-traversal or derived-property queries. Those queries still\n * fetch data normally but won't receive real-time updates.\n *\n * @default false\n */\n streamUpdates?: boolean;\n\n /**\n * Number of objects to fetch per page.\n *\n * @default 50\n */\n pageSize?: number;\n\n /**\n * Ordered list of column definitions to show in the table\n *\n * If not provided, all of the properties of the object type will be shown in default order.\n */\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;\n\n /**\n * Whether the table is filterable by the user.\n *\n * @default true\n */\n enableFiltering?: boolean;\n\n /**\n * The current where clause to filter the objects in the table.\n * If provided, the filter is controlled.\n */\n filter?: WhereClause<Q, RDPs>;\n\n /**\n * Called when the where clause is changed.\n * Required when filter is controlled.\n *\n * @param newWhere The new where clause\n */\n onFilterChanged?: (newWhere: WhereClause<Q, RDPs>) => void;\n\n /**\n * Whether the table is sortable by the user.\n *\n * @default true\n */\n enableOrdering?: boolean;\n\n /**\n * Whether columns can be pinned by the user.\n *\n * @default true\n */\n enableColumnPinning?: boolean;\n\n /**\n * Whether columns can be resized by the user.\n *\n * @default true\n */\n enableColumnResizing?: boolean;\n\n /**\n * Whether the column configuration dialog for column visibility and ordering is available to the user.\n *\n * @default true\n */\n enableColumnConfig?: boolean;\n\n /**\n * Controls the edit mode behavior of the table.\n * - \"always\": Editable cells are immediately in edit mode on row clicked.\n * - \"manual\": User can toggle edit mode on/off via the Edit Table button.\n *\n * @default \"manual\"\n */\n editMode?: \"always\" | \"manual\";\n\n /**\n * Whether to render the bottom edit footer that hosts the\n * \"Edit Table\" / \"Cancel\" / \"Submit Edits\" buttons and the edit-state\n * indicators (modification count, validation errors).\n *\n * @default true whenever the table has at least one column declared\n * editable (i.e. any column with `editable: true` or `editable: (object) => boolean`).\n * When `false`, the \"Edit Table\" and \"Submit Edits\" buttons will not be shown.\n */\n showEditFooter?: boolean;\n\n /**\n * The default order by clause to sort the objects in the table.\n * If provided without orderBy prop, the sorting is uncontrolled.\n * If both orderBy and defaultOrderBy are provided, orderBy takes precedence.\n */\n defaultOrderBy?: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>;\n\n /**\n * The current order by clause to sort the objects in the table.\n * If provided, the sorting is controlled.\n * If both orderBy and defaultOrderBy are provided, orderBy takes precedence.\n */\n orderBy?: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>;\n\n /**\n * Called when the order by clause is changed.\n * Required when sorting is controlled.\n *\n * @param newOrderBy The new order by clause\n */\n onOrderByChanged?: (\n newOrderBy: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>,\n ) => void;\n\n /**\n * Called after the value of a cell is edited and committed by the user.\n *\n * @param info An object containing details about the cell that was edited,\n * including the rowId, columnId, new and old values, and the row data before the edit\n */\n onCellValueChanged?: (\n info: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >,\n ) => void;\n\n /**\n * If provided, the \"Submit Edits\" button will be shown in the edit footer.\n *\n * @param edits an array of edit info containing details about the edited cells\n * including the rowId, columnId, new and old values, and the row data before the edit\n * @return a promise that resolves to true if the edits were successfully submitted\n */\n onSubmitEdits?: (edits: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >[]) => Promise<boolean>;\n\n /**\n * Called when the column visibility or ordering changed.\n *\n * If provided, the table will allow the user to show/hide columns.\n *\n * @param newStates The columns sorted in their display order in the table and their visibility state.\n */\n onColumnVisibilityChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n isVisible: boolean;\n }>,\n ) => void;\n\n /**\n * Called when the pinned columns change.\n *\n * If provided, the table will allow the user to pin/unpin columns.\n *\n * @param newStates The new list of column pin states\n */\n onColumnsPinnedChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n pinned: \"left\" | \"right\" | \"none\";\n }>,\n ) => void;\n\n /**\n * Called when a column is resized.\n *\n * @param columnId The ID of the resized column\n * @param newWidth The new width of the column. When newWidth = null, the column size is reset.\n */\n onColumnResize?: (\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns,\n newWidth: number | null,\n ) => void;\n\n /**\n * Called when a row is clicked.\n *\n * @param object The object representing the clicked row\n */\n onRowClick?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n ) => void;\n\n /**\n * The primary key of the row to render as visually focused (the\n * \"last interacted\" row). When provided, focus state is controlled by\n * the caller.\n *\n * Stored as a primary key rather than a full object so the focus does\n * not go stale when the underlying row data changes.\n *\n * Pass `null` to render no row as focused.\n */\n focusedRow?: PrimaryKeyType<Q> | null;\n\n /**\n * Called when the focused row changes — fires in both controlled and\n * uncontrolled modes so callers can observe focus without taking it\n * over.\n *\n * @param row The newly-focused row object, or `null` if focus was\n * cleared\n */\n onFocusedRowChanged?: (\n row:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n | null,\n ) => void;\n\n /**\n * Called when a column header is clicked.\n *\n * The columnId matches the `locator.id` configured on the column definition.\n * The dropdown menu trigger is excluded — clicking the chevron opens the\n * header menu instead of firing this callback.\n *\n * @param columnId The id of the clicked column\n */\n onColumnHeaderClick?: (\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns,\n ) => void;\n\n /**\n * Selection mode for the table rows.\n *\n * If multiple, a checkbox will be shown for each row to allow selecting multiple rows\n * as well as a top-level checkbox in the header to select all rows.\n *\n * @default \"none\"\n */\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n\n /**\n * The currently selected rows in the table.\n * If provided, the row selection is controlled.\n */\n selectedRows?: PrimaryKeyType<Q>[];\n\n /**\n * Indicates whether all rows are selected in controlled mode.\n * When true, the table will show all rows as selected regardless of the selectedRows array.\n */\n isAllSelected?: boolean;\n\n /**\n * Called when the row selection changes.\n *\n * @deprecated Use {@link onRowSelectionChanged} instead. The new callback\n * delivers a {@link RowSelectionChange} object with `selectedRows`,\n * `isSelectAll`, and a derived `objectSet`. This legacy callback\n * continues to fire alongside the new one for backwards compatibility.\n *\n * @param selectedRowIds The primary keys of currently selected rows\n * @param isSelectAll Whether the change was triggered by a \"select all\" action. Defaults to false\n */\n onRowSelection?: (\n selectedRowIds: PrimaryKeyType<Q>[],\n isSelectAll?: boolean,\n ) => void;\n\n /**\n * Called when the row selection changes, with a {@link RowSelectionChange}\n * payload describing the new state.\n *\n * @param change The new selection state. See {@link RowSelectionChange}.\n */\n onRowSelectionChanged?: (\n change: RowSelectionChange<Q, RDPs>,\n ) => void;\n /**\n * If provided, will render this context menu when right clicking on a cell\n */\n renderCellContextMenu?: (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cellValue: unknown,\n ) => React.ReactNode;\n\n /**\n * Render override for the empty state. Called when the table has no\n * rows and no error. When omitted, a default \"No Data\" indicator is\n * rendered.\n */\n renderEmptyState?: () => React.ReactNode;\n\n /**\n * The height of each row in pixels.\n *\n * @default 40\n */\n rowHeight?: number;\n\n /**\n * Returns extra HTML attributes (typically `data-*`) to apply to each\n * row element. Use this to drive conditional row styling\n */\n getRowAttributes?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n ) => Record<string, string | undefined>;\n\n /**\n * Imperative handle for programmatic table actions. Pass a ref\n * (`useRef<ObjectTableHandle<Q, RDPs>>(null)`) to call\n * {@link ObjectTableHandle} methods such as\n * {@link ObjectTableHandle.getSnapshot}.\n */\n tableRef?: React.Ref<ObjectTableHandle<Q, RDPs>>;\n\n className?: string;\n}\n\n/**\n * Imperative handle exposing programmatic actions on an {@link ObjectTable}.\n * Obtain it by passing {@link ObjectTableProps.tableRef}.\n */\nexport interface ObjectTableHandle<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n /**\n * Loads every row matching the object set and returns a format-agnostic\n * snapshot of the table's columns, row values, and total count. The caller\n * is responsible for turning the snapshot into a downloadable artifact\n * (CSV, Excel, JSON, clipboard, …).\n *\n * Property, derived-property, and function-backed columns are included.\n * Function-backed cells are fetched per page during snapshot collection;\n * when a page's fetch fails, `row.getValue(columnId)` returns the thrown\n * `Error` instance for the affected cells while the rest of the snapshot\n * resolves normally.\n * Columns defined with `locator.type === \"custom\"` are omitted because\n * they have no underlying value to export.\n *\n * The returned promise rejects up front when the object set's `totalCount`\n * exceeds `rowLimit`. When `totalCount` is unavailable, it instead rejects\n * mid-load once more than `rowLimit` rows have been pulled, so an unknown\n * count can't drain an unbounded set into the client. Otherwise every\n * matching row is loaded.\n *\n * @param options See {@link ObjectTableSnapshotOptions}.\n */\n getSnapshot: (\n options?: ObjectTableSnapshotOptions,\n ) => Promise<ObjectTableSnapshot<Q, RDPs>>;\n}\n\n/**\n * Options for {@link ObjectTableHandle[\"getSnapshot\"]}.\n */\nexport interface ObjectTableSnapshotOptions {\n /**\n * Upper bound on how many rows the snapshot may contain. When the object\n * set's total row count exceeds this value, `getSnapshot` rejects;\n * otherwise every matching row is loaded.\n *\n * @default 10_000\n */\n rowLimit?: number;\n}\n\n/**\n * A point-in-time capture of an {@link ObjectTable}'s columns and row values,\n * returned by {@link ObjectTableHandle.getSnapshot}.\n */\nexport interface ObjectTableSnapshot<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: ObjectTableDataColumn[];\n rows: ObjectTableDataRow<Q, RDPs>[];\n /**\n * Total number of objects matching the underlying object set, as reported\n * by the API. `undefined` when the API did not provide a count. Encoded as\n * a string to match the underlying list-payload representation.\n */\n totalCount: string | undefined;\n}\n\n/**\n * A single column in an {@link ObjectTableSnapshot}.\n */\nexport interface ObjectTableDataColumn {\n /** Column id, matching the `locator.id` of the column definition. */\n id: string;\n /** Display name shown in the table header. */\n name: string;\n}\n\n/**\n * A single row in an {@link ObjectTableSnapshot}.\n */\nexport interface ObjectTableDataRow<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n /** Row id (the underlying object's `$primaryKey` rendered as a string). */\n id: string;\n /** The underlying loaded object. */\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>;\n /**\n * Returns the cell value for a given column id, or `undefined` when the\n * column is not part of the snapshot. Function-backed cells whose query\n * failed surface the thrown `Error` instance as their value.\n */\n getValue: (columnId: string) => unknown;\n}\n\n/**\n * Payload for {@link ObjectTableProps.onRowSelectionChanged}. Consolidates\n * the loaded row instances, the `isSelectAll` semantic intent, and an\n * `ObjectSet` covering the selection.\n */\nexport interface RowSelectionChange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n /**\n * Loaded row instances currently selected. When `isSelectAll` is true,\n * this reflects only the rows currently in the table — pages not yet\n * fetched are absent. Use `objectSet` for the cross-page view, and\n * `selectedRows.map(r => r.$primaryKey)` if you need the primary keys.\n */\n selectedRows: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[];\n\n /**\n * True when the user invoked \"select all\" (header checkbox) or when\n * controlled mode supplies `isAllSelected={true}`. Distinct from \"every\n * loaded row happens to be selected\" — that condition is reflected by\n * `selectedRows.length` matching the visible row count but does not set\n * this flag.\n */\n isSelectAll: boolean;\n\n /**\n * An `ObjectSet` representing the selection.\n *\n * - \"Select all\" → the underlying `ObjectSet` (`objectSet` prop if\n * provided, otherwise derived from `objectType` via `client(...)`).\n * This includes rows not yet loaded into the table.\n * - Partial selection → the underlying `ObjectSet` narrowed to\n * `{ $primaryKey: { $in: selectedRows.map(r => r.$primaryKey) } }`.\n * - \"Deselect all\" → an empty `ObjectSet` (`$in: []`).\n *\n * Works for both object and interface types, since the `$primaryKey`\n * special property does not require resolving the underlying primary key\n * property name. `undefined` only when there is no underlying `ObjectSet`\n * to derive from.\n */\n objectSet: ObjectSet<Q, RDPs> | undefined;\n}\n\nexport interface ObjectSetOptions<\n Q extends ObjectOrInterfaceDefinition,\n> {\n /**\n * Object sets to union with\n */\n union?: ObjectSet<Q>[];\n\n /**\n * Object sets to intersect with\n */\n intersect?: ObjectSet<Q>[];\n\n /**\n * Object sets to subtract from\n */\n subtract?: ObjectSet<Q>[];\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"ObjectTableApi.js","names":[],"sources":["ObjectTableApi.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 {\n CompileTimeMetadata,\n DerivedProperty,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { QueryParameterType } from \"@osdk/client/observable\";\nimport type * as React from \"react\";\n\nimport type { CellEditInfo, EditFieldConfig } from \"./utils/types.js\";\n\nexport type { EditFieldConfig } from \"./utils/types.js\";\n\nexport type ColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> =\n | EditableColumnDefinition<Q, RDPs, FunctionColumns>\n | ReadonlyColumnDefinition<Q, RDPs, FunctionColumns>;\n\ninterface SharedColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>;\n\n /**\n * @default true\n */\n isVisible?: boolean;\n\n /**\n * @default none\n */\n pinned?: \"left\" | \"right\" | \"none\";\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n resizable?: boolean;\n orderable?: boolean;\n filterable?: boolean;\n\n /**\n * Custom renderer for the cell value.\n *\n * Interaction with `editable` columns:\n * - When `editMode: \"manual\"` (default), `renderCell` is used while the\n * table is read-only (Edit Table button visible) and the editable cell\n * takes over once the user enters edit mode.\n * - When `editMode: \"always\"`, the editable cell always wins on editable\n * columns and `renderCell` is ignored — `editMode: \"always\"` opts the\n * column into a permanently-editable surface, leaving no read-only\n * state for `renderCell` to render. Use `editMode: \"manual\"` if you\n * need a custom display alongside editing.\n */\n renderCell?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>\n ) => React.ReactNode;\n\n /**\n * If provided, this will be used in the column header.\n * If both columnName and renderHeader are provided, renderHeader will take precedence in the table header.\n * columnName will still be used in other parts where the column name is displayed.\n *\n * If not provided,\n * for a property column, the property displayName will be used\n * for other columns, the id will be used.\n */\n columnName?: string;\n\n /**\n * If provided, this will be used to render the header component.\n * When both columnName and renderHeader are provided, renderHeader will take precedence in the table header.\n */\n renderHeader?: () => React.ReactNode;\n}\n\ninterface EditableColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> extends SharedColumnDefinition<Q, RDPs, FunctionColumns> {\n /**\n * `editable` can be a boolean or a predicate that receives the row's object\n * and returns whether the cell is editable\n */\n editable:\n | true\n | ((\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n ) => boolean);\n\n /**\n * Configuration for the cell editor component.\n *\n * When provided, the column uses the specified field component\n * (e.g. dropdown) instead of the default auto-detected text/number input.\n *\n * `getFieldComponentProps` receives the row's object and a map of any\n * pending edits for that row (keyed by column id), and returns the props to\n * pass to the field component. Editor configuration can depend on the\n * current row or on other in-progress edits within the row.\n */\n editFieldConfig?: EditFieldConfig<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >;\n\n /**\n * Additional function to validate the cell value during edit.\n *\n * @param value the current cell value\n * @returns a promise that resolves to an error message string if validation fails, or undefined if validation succeeds\n */\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n}\n\n/**\n * Column definition for a read-only column (default).\n * `editFieldConfig` and `validateEdit` are not available.\n */\ninterface ReadonlyColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> extends SharedColumnDefinition<Q, RDPs, FunctionColumns> {\n editable?: false;\n}\n\nexport type ExtractQueryParameters<Q extends QueryDefinition> =\n CompileTimeMetadata<Q>[\"parameters\"] extends Record<string, never>\n ? undefined\n : QueryParameterType<CompileTimeMetadata<Q>[\"parameters\"]>;\n\nexport interface PropertyColumnLocator<Q extends ObjectOrInterfaceDefinition> {\n type: \"property\";\n id: PropertyKeys<Q>;\n}\n\n/**\n * Concrete function column locator for a single key K.\n * Correlates the id, queryDefinition, and getFunctionParams types.\n */\ninterface FunctionColumnLocatorForKey<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n FunctionColumns extends Record<string, QueryDefinition<{}>>,\n K extends keyof FunctionColumns,\n> {\n /**\n * This is equivalent to workshop's function-backed columns.\n * The function needs to meet the specifications stated in https://www.palantir.com/docs/foundry/workshop/widgets-object-table/#function-backed-columns\n */\n type: \"function\";\n id: K;\n queryDefinition: FunctionColumns[K];\n\n /**\n * The function will be called with the current object set to get the input parameters for the function query.\n * @param objectSet - The current object set.\n * @returns - The function's input parameters including the object set.\n */\n getFunctionParams: (\n objectSet: ObjectSet<Q, RDPs>\n ) => ExtractQueryParameters<FunctionColumns[K]>;\n\n /**\n * Function to generate keys for looking up results in the FunctionsMap.\n * @param object - The object instance\n * @returns - The key to use for looking up this object's result in the FunctionsMap\n */\n getKey: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n ) => string;\n\n /**\n * Function to extract the cell value from the raw cell data returned by the function.\n * This is useful when functions return custom types with multiple properties.\n * @param cellData - The raw data returned by the function for this object\n * @returns - The value to display in the cell\n */\n getValue?: (cellData?: unknown) => unknown;\n\n /**\n * Minimum time between re-fetches of the same function with the same parameters, in milliseconds.\n * Defaults to 5 minutes as it is expensive to fetch function columns for a large object set\n * and they are expected to be relatively static in the context of an object table\n *\n * @default 300_000 (5 minutes)\n */\n dedupeIntervalMs?: number;\n\n /**\n * Object type apiNames the function reads but doesn't take as a parameter (e.g.\n * linked object types the function traverses internally). The column auto-revalidates\n * when an action edits an object of any of these types. Param-derived types are\n * tracked automatically and don't need to be listed here.\n */\n dependsOn?: string[];\n}\n\n/**\n * Distributes over each key in FunctionColumns so that id, queryDefinition,\n * and getFunctionParams are correlated per key.\n */\nexport type FunctionColumnLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> = keyof FunctionColumns extends infer K\n ? K extends keyof FunctionColumns\n ? FunctionColumnLocatorForKey<Q, RDPs, FunctionColumns, K>\n : never\n : never;\n\nexport interface RdpColumnLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n type: \"rdp\";\n id: keyof RDPs;\n creator: DerivedProperty.Creator<Q, RDPs[keyof RDPs]>;\n}\n\nexport interface CustomColumnLocator {\n type: \"custom\";\n id: string;\n}\n\nexport type ColumnDefinitionLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> =\n | PropertyColumnLocator<Q>\n | FunctionColumnLocator<Q, RDPs, FunctionColumns>\n | RdpColumnLocator<Q, RDPs>\n | CustomColumnLocator;\n\nexport interface ObjectTableProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n /**\n * The object or interface type of the object\n * If objectSet is not provided, objects will be fetched based on this type.\n */\n objectType: Q;\n\n /**\n * The set of objects to show in the table.\n * If provided, the table fetches through this object set instead of fetching based on\n * objectType. Supported for both object and interface types.\n *\n * For an interface object set, rows expose the interface's declared properties (plus any\n * `withProperties` derived from `rdp` column locators); the underlying concrete object's\n * non-interface properties are not loaded. Use objectType-based fetching if you need those.\n */\n objectSet?: ObjectSet<Q>;\n\n objectSetOptions?: ObjectSetOptions<Q>;\n\n /**\n * Minimum time between fetch requests in milliseconds.\n * Increasing this value reduces redundant network calls when the same data\n * is requested multiple times in quick succession.\n *\n * @default 60_000 1 minute\n */\n dedupeIntervalMs?: number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the table will automatically update when matching\n * objects are added, updated, or removed in Foundry.\n *\n * Limitations: `streamUpdates` cannot be used together with `pivotTo` or\n * `withProperties`. The server does not support websocket subscriptions\n * for link-traversal or derived-property queries. Those queries still\n * fetch data normally but won't receive real-time updates.\n *\n * @default false\n */\n streamUpdates?: boolean;\n\n /**\n * Number of objects to fetch per page.\n *\n * @default 50\n */\n pageSize?: number;\n\n /**\n * Ordered list of column definitions to show in the table\n *\n * If not provided, all of the properties of the object type will be shown in default order.\n */\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;\n\n /**\n * Whether the table is filterable by the user.\n *\n * @default true\n */\n enableFiltering?: boolean;\n\n /**\n * The current where clause to filter the objects in the table.\n * If provided, the filter is controlled.\n */\n filter?: WhereClause<Q, RDPs>;\n\n /**\n * Called when the where clause is changed.\n * Required when filter is controlled.\n *\n * @param newWhere The new where clause\n */\n onFilterChanged?: (newWhere: WhereClause<Q, RDPs>) => void;\n\n /**\n * Whether the table is sortable by the user.\n *\n * @default true\n */\n enableOrdering?: boolean;\n\n /**\n * Whether columns can be pinned by the user.\n *\n * @default true\n */\n enableColumnPinning?: boolean;\n\n /**\n * Whether columns can be resized by the user.\n *\n * @default true\n */\n enableColumnResizing?: boolean;\n\n /**\n * Whether the column configuration dialog for column visibility and ordering is available to the user.\n *\n * @default true\n */\n enableColumnConfig?: boolean;\n\n /**\n * Controls the edit mode behavior of the table.\n * - \"always\": Editable cells are immediately in edit mode on row clicked.\n * - \"manual\": User can toggle edit mode on/off via the Edit Table button.\n *\n * @default \"manual\"\n */\n editMode?: \"always\" | \"manual\";\n\n /**\n * Whether to render the bottom edit footer that hosts the\n * \"Edit Table\" / \"Cancel\" / \"Submit Edits\" buttons and the edit-state\n * indicators (modification count, validation errors).\n *\n * @default true whenever the table has at least one column declared\n * editable (i.e. any column with `editable: true` or `editable: (object) => boolean`).\n * When `false`, the \"Edit Table\" and \"Submit Edits\" buttons will not be shown.\n */\n showEditFooter?: boolean;\n\n /**\n * The default order by clause to sort the objects in the table.\n * If provided without orderBy prop, the sorting is uncontrolled.\n * If both orderBy and defaultOrderBy are provided, orderBy takes precedence.\n */\n defaultOrderBy?: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>;\n\n /**\n * The current order by clause to sort the objects in the table.\n * If provided, the sorting is controlled.\n * If both orderBy and defaultOrderBy are provided, orderBy takes precedence.\n */\n orderBy?: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>;\n\n /**\n * Called when the order by clause is changed.\n * Required when sorting is controlled.\n *\n * @param newOrderBy The new order by clause\n */\n onOrderByChanged?: (\n newOrderBy: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>\n ) => void;\n\n /**\n * Called after the value of a cell is edited and committed by the user.\n *\n * @param info An object containing details about the cell that was edited,\n * including the rowId, columnId, new and old values, and the row data before the edit\n */\n onCellValueChanged?: (\n info: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >\n ) => void;\n\n /**\n * If provided, the \"Submit Edits\" button will be shown in the edit footer.\n *\n * @param edits an array of edit info containing details about the edited cells\n * including the rowId, columnId, new and old values, and the row data before the edit\n * @return a promise that resolves to true if the edits were successfully submitted\n */\n onSubmitEdits?: (\n edits: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >[]\n ) => Promise<boolean>;\n\n /**\n * Called when the column visibility or ordering changed.\n *\n * If provided, the table will allow the user to show/hide columns.\n *\n * @param newStates The columns sorted in their display order in the table and their visibility state.\n */\n onColumnVisibilityChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n isVisible: boolean;\n }>\n ) => void;\n\n /**\n * Called when the pinned columns change.\n *\n * If provided, the table will allow the user to pin/unpin columns.\n *\n * @param newStates The new list of column pin states\n */\n onColumnsPinnedChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n pinned: \"left\" | \"right\" | \"none\";\n }>\n ) => void;\n\n /**\n * Called when a column is resized.\n *\n * @param columnId The ID of the resized column\n * @param newWidth The new width of the column. When newWidth = null, the column size is reset.\n */\n onColumnResize?: (\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns,\n newWidth: number | null\n ) => void;\n\n /**\n * Called when a row is clicked.\n *\n * @param object The object representing the clicked row\n */\n onRowClick?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n ) => void;\n\n /**\n * The primary key of the row to render as visually focused (the\n * \"last interacted\" row). When provided, focus state is controlled by\n * the caller.\n *\n * Stored as a primary key rather than a full object so the focus does\n * not go stale when the underlying row data changes.\n *\n * Pass `null` to render no row as focused.\n */\n focusedRow?: PrimaryKeyType<Q> | null;\n\n /**\n * Called when the focused row changes — fires in both controlled and\n * uncontrolled modes so callers can observe focus without taking it\n * over.\n *\n * @param row The newly-focused row object, or `null` if focus was\n * cleared\n */\n onFocusedRowChanged?: (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs> | null\n ) => void;\n\n /**\n * Called when a column header is clicked.\n *\n * The columnId matches the `locator.id` configured on the column definition.\n * The dropdown menu trigger is excluded — clicking the chevron opens the\n * header menu instead of firing this callback.\n *\n * @param columnId The id of the clicked column\n */\n onColumnHeaderClick?: (\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns\n ) => void;\n\n /**\n * Selection mode for the table rows.\n *\n * If multiple, a checkbox will be shown for each row to allow selecting multiple rows\n * as well as a top-level checkbox in the header to select all rows.\n *\n * @default \"none\"\n */\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n\n /**\n * The currently selected rows in the table.\n * If provided, the row selection is controlled.\n */\n selectedRows?: PrimaryKeyType<Q>[];\n\n /**\n * Indicates whether all rows are selected in controlled mode.\n * When true, the table will show all rows as selected regardless of the selectedRows array.\n */\n isAllSelected?: boolean;\n\n /**\n * Called when the row selection changes.\n *\n * @deprecated Use {@link onRowSelectionChanged} instead. The new callback\n * delivers a {@link RowSelectionChange} object with `selectedRows`,\n * `isSelectAll`, and a derived `objectSet`. This legacy callback\n * continues to fire alongside the new one for backwards compatibility.\n *\n * @param selectedRowIds The primary keys of currently selected rows\n * @param isSelectAll Whether the change was triggered by a \"select all\" action. Defaults to false\n */\n onRowSelection?: (\n selectedRowIds: PrimaryKeyType<Q>[],\n isSelectAll?: boolean\n ) => void;\n\n /**\n * Called when the row selection changes, with a {@link RowSelectionChange}\n * payload describing the new state.\n *\n * @param change The new selection state. See {@link RowSelectionChange}.\n */\n onRowSelectionChanged?: (change: RowSelectionChange<Q, RDPs>) => void;\n /**\n * If provided, will render this context menu when right clicking on a cell\n */\n renderCellContextMenu?: (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cellValue: unknown\n ) => React.ReactNode;\n\n /**\n * Render override for the empty state. Called when the table has no\n * rows and no error. When omitted, a default \"No Data\" indicator is\n * rendered.\n */\n renderEmptyState?: () => React.ReactNode;\n\n /**\n * The height of each row in pixels.\n *\n * @default 40\n */\n rowHeight?: number;\n\n /**\n * Returns extra HTML attributes (typically `data-*`) to apply to each\n * row element. Use this to drive conditional row styling\n */\n getRowAttributes?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n ) => Record<string, string | undefined>;\n\n /**\n * Imperative handle for programmatic table actions. Pass a ref\n * (`useRef<ObjectTableHandle<Q, RDPs>>(null)`) to call\n * {@link ObjectTableHandle} methods such as\n * {@link ObjectTableHandle.getSnapshot}.\n */\n tableRef?: React.Ref<ObjectTableHandle<Q, RDPs>>;\n\n className?: string;\n}\n\n/**\n * Imperative handle exposing programmatic actions on an {@link ObjectTable}.\n * Obtain it by passing {@link ObjectTableProps.tableRef}.\n */\nexport interface ObjectTableHandle<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n /**\n * Loads every row matching the object set and returns a format-agnostic\n * snapshot of the table's columns, row values, and total count. The caller\n * is responsible for turning the snapshot into a downloadable artifact\n * (CSV, Excel, JSON, clipboard, …).\n *\n * Property, derived-property, and function-backed columns are included.\n * Function-backed cells are fetched per page during snapshot collection;\n * when a page's fetch fails, `row.getValue(columnId)` returns the thrown\n * `Error` instance for the affected cells while the rest of the snapshot\n * resolves normally.\n * Columns defined with `locator.type === \"custom\"` are omitted because\n * they have no underlying value to export.\n *\n * The returned promise rejects up front when the object set's `totalCount`\n * exceeds `rowLimit`. When `totalCount` is unavailable, it instead rejects\n * mid-load once more than `rowLimit` rows have been pulled, so an unknown\n * count can't drain an unbounded set into the client. Otherwise every\n * matching row is loaded.\n *\n * @param options See {@link ObjectTableSnapshotOptions}.\n */\n getSnapshot: (\n options?: ObjectTableSnapshotOptions\n ) => Promise<ObjectTableSnapshot<Q, RDPs>>;\n}\n\n/**\n * Options for {@link ObjectTableHandle[\"getSnapshot\"]}.\n */\nexport interface ObjectTableSnapshotOptions {\n /**\n * Upper bound on how many rows the snapshot may contain. When the object\n * set's total row count exceeds this value, `getSnapshot` rejects;\n * otherwise every matching row is loaded.\n *\n * @default 10_000\n */\n rowLimit?: number;\n}\n\n/**\n * A point-in-time capture of an {@link ObjectTable}'s columns and row values,\n * returned by {@link ObjectTableHandle.getSnapshot}.\n */\nexport interface ObjectTableSnapshot<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: ObjectTableDataColumn[];\n rows: ObjectTableDataRow<Q, RDPs>[];\n /**\n * Total number of objects matching the underlying object set, as reported\n * by the API. `undefined` when the API did not provide a count. Encoded as\n * a string to match the underlying list-payload representation.\n */\n totalCount: string | undefined;\n}\n\n/**\n * A single column in an {@link ObjectTableSnapshot}.\n */\nexport interface ObjectTableDataColumn {\n /** Column id, matching the `locator.id` of the column definition. */\n id: string;\n /** Display name shown in the table header. */\n name: string;\n}\n\n/**\n * A single row in an {@link ObjectTableSnapshot}.\n */\nexport interface ObjectTableDataRow<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n /** Row id (the underlying object's `$primaryKey` rendered as a string). */\n id: string;\n /** The underlying loaded object. */\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>;\n /**\n * Returns the cell value for a given column id, or `undefined` when the\n * column is not part of the snapshot. Function-backed cells whose query\n * failed surface the thrown `Error` instance as their value.\n */\n getValue: (columnId: string) => unknown;\n}\n\n/**\n * Payload for {@link ObjectTableProps.onRowSelectionChanged}. Consolidates\n * the loaded row instances, the `isSelectAll` semantic intent, and an\n * `ObjectSet` covering the selection.\n */\nexport interface RowSelectionChange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n /**\n * Loaded row instances currently selected. When `isSelectAll` is true,\n * this reflects only the rows currently in the table — pages not yet\n * fetched are absent. Use `objectSet` for the cross-page view, and\n * `selectedRows.map(r => r.$primaryKey)` if you need the primary keys.\n */\n selectedRows: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[];\n\n /**\n * True when the user invoked \"select all\" (header checkbox) or when\n * controlled mode supplies `isAllSelected={true}`. Distinct from \"every\n * loaded row happens to be selected\" — that condition is reflected by\n * `selectedRows.length` matching the visible row count but does not set\n * this flag.\n */\n isSelectAll: boolean;\n\n /**\n * An `ObjectSet` representing the selection.\n *\n * - \"Select all\" → the underlying `ObjectSet` (`objectSet` prop if\n * provided, otherwise derived from `objectType` via `client(...)`).\n * This includes rows not yet loaded into the table.\n * - Partial selection → the underlying `ObjectSet` narrowed to\n * `{ $primaryKey: { $in: selectedRows.map(r => r.$primaryKey) } }`.\n * - \"Deselect all\" → an empty `ObjectSet` (`$in: []`).\n *\n * Works for both object and interface types, since the `$primaryKey`\n * special property does not require resolving the underlying primary key\n * property name. `undefined` only when there is no underlying `ObjectSet`\n * to derive from.\n */\n objectSet: ObjectSet<Q, RDPs> | undefined;\n}\n\nexport interface ObjectSetOptions<Q extends ObjectOrInterfaceDefinition> {\n /**\n * Object sets to union with\n */\n union?: ObjectSet<Q>[];\n\n /**\n * Object sets to intersect with\n */\n intersect?: ObjectSet<Q>[];\n\n /**\n * Object sets to subtract from\n */\n subtract?: ObjectSet<Q>[];\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionCells.js","names":["React","useCallback","Checkbox","SelectionHeaderCell","isAllSelected","hasSelection","onToggleAll","checkboxLabel","createElement","indeterminate","checked","onCheckedChange","SelectionCell","row","onToggleRow","handleClick","event","stopPropagation","isShiftClick","shiftKey","id","index","handleKeyDown","key","onClick","onKeyDown","getIsSelected"],"sources":["SelectionCells.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Row, RowData } from \"@tanstack/react-table\";\nimport React, { useCallback } from \"react\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\n\ninterface SelectionHeaderCellProps {\n isAllSelected: boolean;\n hasSelection: boolean;\n onToggleAll: () => void;\n}\n\nexport function SelectionHeaderCell({\n isAllSelected,\n hasSelection,\n onToggleAll,\n}: SelectionHeaderCellProps): React.ReactElement {\n const checkboxLabel = hasSelection ? \"Deselect all rows\" : \"Select all rows\";\n\n return (\n <Checkbox\n indeterminate={hasSelection && !isAllSelected}\n checked={isAllSelected}\n onCheckedChange={onToggleAll}\n aria-label={checkboxLabel}\n />\n );\n}\n\ninterface SelectionCellProps<TData extends RowData> {\n row: Row<TData>;\n onToggleRow: (rowId: string, rowIndex: number, isShiftClick: boolean) => void;\n}\n\nexport function SelectionCell<TData extends RowData>({\n row,\n onToggleRow,\n}: SelectionCellProps<TData>): React.ReactElement {\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n // TODO: Create ActionBoundary component\n event.stopPropagation();\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n },\n [onToggleRow, row.id, row.index],\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n // TODO: support shift + space\n // It looks like when we handle shift key here, the checkbox gets toggled twice\n if (event.key === \"Enter\") {\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n }\n },\n [onToggleRow, row.id, row.index],\n );\n\n return (\n <div onClick={handleClick} onKeyDown={handleKeyDown}>\n <Checkbox\n checked={row.getIsSelected()}\n aria-label={`Select row ${row.index + 1}`}\n />\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,QAAQ,QAAQ,yCAAyC;AAQlE,OAAO,SAASC,mBAAmBA,CAAC;EAClCC,aAAa;EACbC,YAAY;EACZC;AACwB,CAAC,EAAsB;EAC/C,MAAMC,aAAa,GAAGF,YAAY,GAAG,mBAAmB,GAAG,iBAAiB;EAE5E,oBACEL,KAAA,CAAAQ,aAAA,CAACN,QAAQ;IACPO,aAAa,EAAEJ,YAAY,IAAI,CAACD,aAAc;IAC9CM,OAAO,EAAEN,aAAc;IACvBO,eAAe,EAAEL,WAAY;IAC7B,cAAYC;EAAc,CAC3B,CAAC;AAEN;AAOA,OAAO,SAASK,aAAaA,CAAwB;EACnDC,GAAG;EACHC;AACyB,CAAC,EAAsB;EAChD,MAAMC,WAAW,GAAGd,WAAW,CAC5Be,KAAmD,IAAK;IACvD;IACAA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvB,MAAMC,YAAY,GAAGF,KAAK,CAACG,QAAQ;IACnCL,WAAW,CAACD,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,EAAEH,YAAY,CAAC;EAC9C,CAAC,EACD,CAACJ,WAAW,EAAED,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,CACjC,CAAC;EAED,MAAMC,aAAa,GAAGrB,WAAW,CAC9Be,KAA0C,IAAK;IAC9C;IACA;IACA,IAAIA,KAAK,CAACO,GAAG,KAAK,OAAO,EAAE;MACzB,MAAML,YAAY,GAAGF,KAAK,CAACG,QAAQ;MACnCL,WAAW,CAACD,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,EAAEH,YAAY,CAAC;IAC9C;EACF,CAAC,EACD,CAACJ,WAAW,EAAED,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,CACjC,CAAC;EAED,oBACErB,KAAA,CAAAQ,aAAA;IAAKgB,OAAO,EAAET,WAAY;IAACU,SAAS,EAAEH;EAAc,gBAClDtB,KAAA,CAAAQ,aAAA,CAACN,QAAQ;IACPQ,OAAO,EAAEG,GAAG,CAACa,aAAa,CAAC,CAAE;IAC7B,cAAY,cAAcb,GAAG,CAACQ,KAAK,GAAG,CAAC;EAAG,CAC3C,CACE,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"SelectionCells.js","names":["React","useCallback","Checkbox","SelectionHeaderCell","isAllSelected","hasSelection","onToggleAll","checkboxLabel","createElement","indeterminate","checked","onCheckedChange","SelectionCell","row","onToggleRow","handleClick","event","stopPropagation","isShiftClick","shiftKey","id","index","handleKeyDown","key","onClick","onKeyDown","getIsSelected"],"sources":["SelectionCells.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Row, RowData } from \"@tanstack/react-table\";\nimport React, { useCallback } from \"react\";\n\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\n\ninterface SelectionHeaderCellProps {\n isAllSelected: boolean;\n hasSelection: boolean;\n onToggleAll: () => void;\n}\n\nexport function SelectionHeaderCell({\n isAllSelected,\n hasSelection,\n onToggleAll,\n}: SelectionHeaderCellProps): React.ReactElement {\n const checkboxLabel = hasSelection ? \"Deselect all rows\" : \"Select all rows\";\n\n return (\n <Checkbox\n indeterminate={hasSelection && !isAllSelected}\n checked={isAllSelected}\n onCheckedChange={onToggleAll}\n aria-label={checkboxLabel}\n />\n );\n}\n\ninterface SelectionCellProps<TData extends RowData> {\n row: Row<TData>;\n onToggleRow: (rowId: string, rowIndex: number, isShiftClick: boolean) => void;\n}\n\nexport function SelectionCell<TData extends RowData>({\n row,\n onToggleRow,\n}: SelectionCellProps<TData>): React.ReactElement {\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n // TODO: Create ActionBoundary component\n event.stopPropagation();\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n },\n [onToggleRow, row.id, row.index]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n // TODO: support shift + space\n // It looks like when we handle shift key here, the checkbox gets toggled twice\n if (event.key === \"Enter\") {\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n }\n },\n [onToggleRow, row.id, row.index]\n );\n\n return (\n <div onClick={handleClick} onKeyDown={handleKeyDown}>\n <Checkbox\n checked={row.getIsSelected()}\n aria-label={`Select row ${row.index + 1}`}\n />\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAE1C,SAASC,QAAQ,QAAQ,yCAAyC;AAQlE,OAAO,SAASC,mBAAmBA,CAAC;EAClCC,aAAa;EACbC,YAAY;EACZC;AACwB,CAAC,EAAsB;EAC/C,MAAMC,aAAa,GAAGF,YAAY,GAAG,mBAAmB,GAAG,iBAAiB;EAE5E,oBACEL,KAAA,CAAAQ,aAAA,CAACN,QAAQ;IACPO,aAAa,EAAEJ,YAAY,IAAI,CAACD,aAAc;IAC9CM,OAAO,EAAEN,aAAc;IACvBO,eAAe,EAAEL,WAAY;IAC7B,cAAYC;EAAc,CAC3B,CAAC;AAEN;AAOA,OAAO,SAASK,aAAaA,CAAwB;EACnDC,GAAG;EACHC;AACyB,CAAC,EAAsB;EAChD,MAAMC,WAAW,GAAGd,WAAW,CAC5Be,KAAmD,IAAK;IACvD;IACAA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvB,MAAMC,YAAY,GAAGF,KAAK,CAACG,QAAQ;IACnCL,WAAW,CAACD,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,EAAEH,YAAY,CAAC;EAC9C,CAAC,EACD,CAACJ,WAAW,EAAED,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,CACjC,CAAC;EAED,MAAMC,aAAa,GAAGrB,WAAW,CAC9Be,KAA0C,IAAK;IAC9C;IACA;IACA,IAAIA,KAAK,CAACO,GAAG,KAAK,OAAO,EAAE;MACzB,MAAML,YAAY,GAAGF,KAAK,CAACG,QAAQ;MACnCL,WAAW,CAACD,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,EAAEH,YAAY,CAAC;IAC9C;EACF,CAAC,EACD,CAACJ,WAAW,EAAED,GAAG,CAACO,EAAE,EAAEP,GAAG,CAACQ,KAAK,CACjC,CAAC;EAED,oBACErB,KAAA,CAAAQ,aAAA;IAAKgB,OAAO,EAAET,WAAY;IAACU,SAAS,EAAEH;EAAc,gBAClDtB,KAAA,CAAAQ,aAAA,CAACN,QAAQ;IACPQ,OAAO,EAAEG,GAAG,CAACa,aAAa,CAAC,CAAE;IAC7B,cAAY,cAAcb,GAAG,CAACQ,KAAK,GAAG,CAAC;EAAG,CAC3C,CACE,CAAC;AAEV","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"SortableItemsList.js","names":["React","useCallback","DraggableList","SortableItemsList","items","onReorder","onRemove","className","renderContent","item","content","createElement","removeIconVariant"],"sources":["SortableItemsList.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport {\n type DraggableItem,\n DraggableList,\n} from \"../base-components/draggable-list/DraggableList.js\";\n\nexport interface SortableItem extends DraggableItem {\n content: React.ReactNode;\n}\n\ninterface SortableItemsListProps {\n items: SortableItem[];\n onReorder: (fromIndex: number, toIndex: number) => void;\n onRemove: (id: string) => void;\n className?: string;\n}\n\nexport function SortableItemsList({\n items,\n onReorder,\n onRemove,\n className,\n}: SortableItemsListProps): React.ReactElement {\n const renderContent = useCallback((item: SortableItem) => item.content, []);\n\n return (\n <DraggableList\n items={items}\n onReorder={onReorder}\n onRemove={onRemove}\n removeIconVariant=\"cross\"\n renderContent={renderContent}\n className={className}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAEEC,aAAa,QACR,oDAAoD;AAa3D,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,KAAK;EACLC,SAAS;EACTC,QAAQ;EACRC;AACsB,CAAC,EAAsB;EAC7C,MAAMC,aAAa,GAAGP,WAAW,CAAEQ,IAAkB,IAAKA,IAAI,CAACC,OAAO,EAAE,EAAE,CAAC;EAE3E,oBACEV,KAAA,CAAAW,aAAA,CAACT,aAAa;IACZE,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IACnBM,iBAAiB,EAAC,OAAO;IACzBJ,aAAa,EAAEA,aAAc;IAC7BD,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"file":"SortableItemsList.js","names":["React","useCallback","DraggableList","SortableItemsList","items","onReorder","onRemove","className","renderContent","item","content","createElement","removeIconVariant"],"sources":["SortableItemsList.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\n\nimport {\n type DraggableItem,\n DraggableList,\n} from \"../base-components/draggable-list/DraggableList.js\";\n\nexport interface SortableItem extends DraggableItem {\n content: React.ReactNode;\n}\n\ninterface SortableItemsListProps {\n items: SortableItem[];\n onReorder: (fromIndex: number, toIndex: number) => void;\n onRemove: (id: string) => void;\n className?: string;\n}\n\nexport function SortableItemsList({\n items,\n onReorder,\n onRemove,\n className,\n}: SortableItemsListProps): React.ReactElement {\n const renderContent = useCallback((item: SortableItem) => item.content, []);\n\n return (\n <DraggableList\n items={items}\n onReorder={onReorder}\n onRemove={onRemove}\n removeIconVariant=\"cross\"\n renderContent={renderContent}\n className={className}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAE1C,SAEEC,aAAa,QACR,oDAAoD;AAa3D,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,KAAK;EACLC,SAAS;EACTC,QAAQ;EACRC;AACsB,CAAC,EAAsB;EAC7C,MAAMC,aAAa,GAAGP,WAAW,CAAEQ,IAAkB,IAAKA,IAAI,CAACC,OAAO,EAAE,EAAE,CAAC;EAE3E,oBACEV,KAAA,CAAAW,aAAA,CAACT,aAAa;IACZE,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IACnBM,iBAAiB,EAAC,OAAO;IACzBJ,aAAa,EAAEA,aAAc;IAC7BD,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN","ignoreList":[]}
@@ -20,13 +20,13 @@ import { PortalContainerProvider } from "../shared/PortalContainerContext.js";
20
20
  import { useFocusedRow } from "./hooks/useFocusedRow.js";
21
21
  import { LoadingStateTable } from "./LoadingStateTable.js";
22
22
  import { NonIdealState } from "./NonIdealState.js";
23
- import styles from "./Table.module.css";
24
23
  import { TableBody } from "./TableBody.js";
25
24
  import { TableEditContainer } from "./TableEditContainer.js";
26
25
  import { TableHeader } from "./TableHeader.js";
27
26
  import { SCROLL_FETCH_THRESHOLD } from "./utils/constants.js";
28
27
  import { isColumnDeclaredEditable } from "./utils/editableUtils.js";
29
28
  import { PortalTrackerProvider, usePortalTracker } from "./utils/PortalTracker.js";
29
+ import styles from "./Table.module.css";
30
30
  export function BaseTable(props) {
31
31
  return /*#__PURE__*/React.createElement(PortalTrackerProvider, null, /*#__PURE__*/React.createElement(BaseTableInner, props));
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["classNames","React","useCallback","useEffect","useRef","useState","PortalContainerProvider","useFocusedRow","LoadingStateTable","NonIdealState","styles","TableBody","TableEditContainer","TableHeader","SCROLL_FETCH_THRESHOLD","isColumnDeclaredEditable","PortalTrackerProvider","usePortalTracker","BaseTable","props","createElement","BaseTableInner","table","isLoading","fetchNextPage","onRowClick","onColumnHeaderClick","rowHeight","renderCellContextMenu","className","error","headerMenuFeatureFlags","editableConfig","getRowAttributes","showEditFooter","renderEmptyState","focusedRowId","focusedRowIdProp","onFocusedRowChanged","tableContainerRef","objectTablePortalRef","isLoadingMore","setIsLoadingMore","getRowById","id","getRow","original","setFocusedRowId","portalTracker","options","meta","fetchingRef","fetchMoreOnEndReached","containerRefElement","current","scrollHeight","scrollTop","clientHeight","handleScroll","e","currentTarget","rows","getRowModel","headerGroups","getHeaderGroups","hasData","length","hasEditableColumns","getAllColumns","some","column","columnDef","editable","handleClickOutside","event","target","contains","containsElement","document","addEventListener","removeEventListener","container","ref","osdkTableWrapper","osdkTableContainer","onScroll","Fragment","isInEditMode","editModeState","isActive","message","hasFocusedRow"],"sources":["Table.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Cell, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, {\n type ReactElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { PortalContainerProvider } from \"../shared/PortalContainerContext.js\";\nimport { useFocusedRow } from \"./hooks/useFocusedRow.js\";\nimport { LoadingStateTable } from \"./LoadingStateTable.js\";\nimport { NonIdealState } from \"./NonIdealState.js\";\nimport styles from \"./Table.module.css\";\nimport { TableBody } from \"./TableBody.js\";\nimport { TableEditContainer } from \"./TableEditContainer.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { SCROLL_FETCH_THRESHOLD } from \"./utils/constants.js\";\nimport { isColumnDeclaredEditable } from \"./utils/editableUtils.js\";\nimport {\n PortalTrackerProvider,\n usePortalTracker,\n} from \"./utils/PortalTracker.js\";\nimport type {\n CellEditInfo,\n EditableConfig,\n EditFieldConfig,\n} from \"./utils/types.js\";\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData = unknown, TValue = unknown> {\n columnName?: string;\n isAsyncColumn?: boolean;\n isVisible?: boolean;\n editable?: boolean | ((object: TData) => boolean);\n dataType?: string;\n /**\n * For columns backed by a `\"marking\"` property, the marking subtype as\n * surfaced by the platform: `\"CBAC\"` for classification-based access\n * control or `\"MANDATORY\"` for mandatory markings. Absent for\n * non-marking columns and for marking columns whose subtype isn't\n * exposed.\n */\n markingType?: \"CBAC\" | \"MANDATORY\";\n editFieldConfig?: EditFieldConfig<TData>;\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n }\n interface TableMeta<TData extends RowData = unknown> {\n onCellEdit?: (\n cellId: string,\n info: CellEditInfo<TData, unknown>,\n ) => void;\n onCellValidationError?: (\n cellId: string,\n error: string,\n ) => void;\n clearCellValidationError?: (cellId: string) => void;\n cellEdits?: Record<string, CellEditInfo<TData, unknown>>;\n isInEditMode?: boolean;\n validationErrors?: Map<string, string>;\n focusedRowId?: string | null;\n }\n}\n\nexport interface BaseTableProps<\n TData extends RowData,\n> {\n table: Table<TData>;\n isLoading?: boolean;\n fetchNextPage?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n onColumnHeaderClick?: (columnId: string) => void;\n rowHeight?: number;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n className?: string;\n error?: Error;\n headerMenuFeatureFlags?: HeaderMenuFeatureFlags;\n editableConfig?: EditableConfig<TData, unknown>;\n getRowAttributes?: (\n object: TData,\n ) => Record<string, string | undefined>;\n /**\n * Whether to render the bottom edit footer. Defaults to `true`; the\n * footer is only rendered when the table has at least one editable\n * column (`hasEditableColumns`).\n */\n showEditFooter?: boolean;\n /**\n * Render override for the empty state. Called when the table has no\n * rows and no error. When omitted, a default \"No Data\" indicator is\n * rendered.\n */\n renderEmptyState?: () => React.ReactNode;\n /**\n * Controlled focused row id. `undefined` enables internal management\n */\n focusedRowId?: string | null;\n /**\n * Fires whenever the focused row changes, in both controlled and\n * uncontrolled modes.\n */\n onFocusedRowChanged?: (row: TData | null) => void;\n}\n\nexport function BaseTable<\n TData extends RowData,\n>(props: BaseTableProps<TData>): ReactElement {\n return (\n <PortalTrackerProvider>\n <BaseTableInner {...props} />\n </PortalTrackerProvider>\n );\n}\n\nfunction BaseTableInner<\n TData extends RowData,\n>(\n {\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n onColumnHeaderClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig,\n getRowAttributes,\n showEditFooter = true,\n renderEmptyState,\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n }: BaseTableProps<TData>,\n): ReactElement {\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const objectTablePortalRef = useRef<HTMLDivElement>(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const getRowById = useCallback(\n (id: string) => {\n try {\n return table.getRow(id, true)?.original ?? null;\n } catch {\n // table.getRow throws when the id no longer matches a row\n // (e.g. the row was removed or has not loaded yet). Treat a\n // missing row as \"no focus\" rather than crashing.\n return null;\n }\n },\n [table],\n );\n\n const {\n focusedRowId,\n setFocusedRowId,\n } = useFocusedRow<TData>({\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n getRowById,\n });\n const portalTracker = usePortalTracker();\n\n // Sync focusedRowId into table meta so cell renderers (which only\n // receive `table`) can read it without extra prop drilling.\n // Assigned synchronously so children see the current value in the\n // same render pass. This is safe because meta is a mutable bag that\n // TanStack Table never snapshots or shallow-compares.\n if (table.options.meta) {\n table.options.meta.focusedRowId = focusedRowId;\n }\n\n // Using a ref to prevent duplicate fetches from rapid scroll events while a fetch is in-flight\n const fetchingRef = useRef(false);\n\n useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n\n const fetchMoreOnEndReached = useCallback(\n async (containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (\n scrollHeight - scrollTop - clientHeight < SCROLL_FETCH_THRESHOLD\n && !isLoading && fetchNextPage != null\n ) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n },\n [fetchNextPage, isLoading, isLoadingMore],\n );\n\n const handleScroll = useCallback(\n async (e: React.UIEvent<HTMLDivElement>) => {\n await fetchMoreOnEndReached(e.currentTarget);\n },\n [fetchMoreOnEndReached],\n );\n\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n\n const hasEditableColumns = table\n .getAllColumns()\n .some((column) =>\n isColumnDeclaredEditable(column.columnDef.meta?.editable)\n );\n\n // Use pointerdown instead of click to detect outside interactions.\n // base-ui's Select renders a full-screen backdrop that intercepts\n // pointerdown to close the popup. By the time the click event fires,\n // the backdrop is unmounted and event.target falls through to <body>,\n // which would incorrectly trigger the outside-click handler.\n // At pointerdown time the backdrop is still in the DOM, so\n // portalTracker.containsElement correctly identifies it.\n useEffect(() => {\n const handleClickOutside = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n tableContainerRef.current\n && !tableContainerRef.current.contains(target)\n && !portalTracker?.containsElement(target)\n ) {\n setFocusedRowId(null);\n }\n };\n\n document.addEventListener(\"pointerdown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"pointerdown\", handleClickOutside);\n };\n }, [portalTracker, setFocusedRowId]);\n\n return (\n <PortalContainerProvider container={objectTablePortalRef}>\n <div\n ref={objectTablePortalRef}\n className={classNames(styles.osdkTableWrapper, className)}\n >\n <div\n ref={tableContainerRef}\n className={styles.osdkTableContainer}\n onScroll={handleScroll}\n >\n <table>\n {isLoading && !hasData\n ? (\n <LoadingStateTable\n table={table}\n headerGroups={headerGroups}\n rowHeight={rowHeight}\n tableContainerRef={tableContainerRef}\n />\n )\n : (\n <>\n <TableHeader\n table={table}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n onColumnHeaderClick={onColumnHeaderClick}\n />\n <TableBody\n rows={rows}\n tableContainerRef={tableContainerRef}\n onRowClick={onRowClick}\n rowHeight={rowHeight}\n renderCellContextMenu={renderCellContextMenu}\n isLoadingMore={isLoadingMore}\n headerGroups={headerGroups}\n focusedRowId={focusedRowId}\n setFocusedRowId={setFocusedRowId}\n isInEditMode={editableConfig?.editModeState.isActive}\n getRowAttributes={getRowAttributes}\n />\n </>\n )}\n </table>\n {!hasData && error == null && (\n renderEmptyState != null\n ? renderEmptyState()\n : <NonIdealState message={\"No Data\"} />\n )}\n {error != null && (\n <NonIdealState message={`Error Loading Data: ${error.message}`} />\n )}\n </div>\n {showEditFooter && hasEditableColumns && editableConfig && (\n <TableEditContainer\n editableConfig={editableConfig}\n hasFocusedRow={focusedRowId != null}\n />\n )}\n </div>\n </PortalContainerProvider>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Table.js","names":["classNames","React","useCallback","useEffect","useRef","useState","PortalContainerProvider","useFocusedRow","LoadingStateTable","NonIdealState","TableBody","TableEditContainer","TableHeader","SCROLL_FETCH_THRESHOLD","isColumnDeclaredEditable","PortalTrackerProvider","usePortalTracker","styles","BaseTable","props","createElement","BaseTableInner","table","isLoading","fetchNextPage","onRowClick","onColumnHeaderClick","rowHeight","renderCellContextMenu","className","error","headerMenuFeatureFlags","editableConfig","getRowAttributes","showEditFooter","renderEmptyState","focusedRowId","focusedRowIdProp","onFocusedRowChanged","tableContainerRef","objectTablePortalRef","isLoadingMore","setIsLoadingMore","getRowById","id","getRow","original","setFocusedRowId","portalTracker","options","meta","fetchingRef","fetchMoreOnEndReached","containerRefElement","current","scrollHeight","scrollTop","clientHeight","handleScroll","e","currentTarget","rows","getRowModel","headerGroups","getHeaderGroups","hasData","length","hasEditableColumns","getAllColumns","some","column","columnDef","editable","handleClickOutside","event","target","contains","containsElement","document","addEventListener","removeEventListener","container","ref","osdkTableWrapper","osdkTableContainer","onScroll","Fragment","isInEditMode","editModeState","isActive","message","hasFocusedRow"],"sources":["Table.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Cell, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, {\n type ReactElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { PortalContainerProvider } from \"../shared/PortalContainerContext.js\";\nimport { useFocusedRow } from \"./hooks/useFocusedRow.js\";\nimport { LoadingStateTable } from \"./LoadingStateTable.js\";\nimport { NonIdealState } from \"./NonIdealState.js\";\nimport { TableBody } from \"./TableBody.js\";\nimport { TableEditContainer } from \"./TableEditContainer.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { SCROLL_FETCH_THRESHOLD } from \"./utils/constants.js\";\nimport { isColumnDeclaredEditable } from \"./utils/editableUtils.js\";\nimport {\n PortalTrackerProvider,\n usePortalTracker,\n} from \"./utils/PortalTracker.js\";\nimport type {\n CellEditInfo,\n EditableConfig,\n EditFieldConfig,\n} from \"./utils/types.js\";\n\nimport styles from \"./Table.module.css\";\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData = unknown, TValue = unknown> {\n columnName?: string;\n isAsyncColumn?: boolean;\n isVisible?: boolean;\n editable?: boolean | ((object: TData) => boolean);\n dataType?: string;\n /**\n * For columns backed by a `\"marking\"` property, the marking subtype as\n * surfaced by the platform: `\"CBAC\"` for classification-based access\n * control or `\"MANDATORY\"` for mandatory markings. Absent for\n * non-marking columns and for marking columns whose subtype isn't\n * exposed.\n */\n markingType?: \"CBAC\" | \"MANDATORY\";\n editFieldConfig?: EditFieldConfig<TData>;\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n }\n interface TableMeta<TData extends RowData = unknown> {\n onCellEdit?: (cellId: string, info: CellEditInfo<TData, unknown>) => void;\n onCellValidationError?: (cellId: string, error: string) => void;\n clearCellValidationError?: (cellId: string) => void;\n cellEdits?: Record<string, CellEditInfo<TData, unknown>>;\n isInEditMode?: boolean;\n validationErrors?: Map<string, string>;\n focusedRowId?: string | null;\n }\n}\n\nexport interface BaseTableProps<TData extends RowData> {\n table: Table<TData>;\n isLoading?: boolean;\n fetchNextPage?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n onColumnHeaderClick?: (columnId: string) => void;\n rowHeight?: number;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>\n ) => React.ReactNode;\n className?: string;\n error?: Error;\n headerMenuFeatureFlags?: HeaderMenuFeatureFlags;\n editableConfig?: EditableConfig<TData, unknown>;\n getRowAttributes?: (object: TData) => Record<string, string | undefined>;\n /**\n * Whether to render the bottom edit footer. Defaults to `true`; the\n * footer is only rendered when the table has at least one editable\n * column (`hasEditableColumns`).\n */\n showEditFooter?: boolean;\n /**\n * Render override for the empty state. Called when the table has no\n * rows and no error. When omitted, a default \"No Data\" indicator is\n * rendered.\n */\n renderEmptyState?: () => React.ReactNode;\n /**\n * Controlled focused row id. `undefined` enables internal management\n */\n focusedRowId?: string | null;\n /**\n * Fires whenever the focused row changes, in both controlled and\n * uncontrolled modes.\n */\n onFocusedRowChanged?: (row: TData | null) => void;\n}\n\nexport function BaseTable<TData extends RowData>(\n props: BaseTableProps<TData>\n): ReactElement {\n return (\n <PortalTrackerProvider>\n <BaseTableInner {...props} />\n </PortalTrackerProvider>\n );\n}\n\nfunction BaseTableInner<TData extends RowData>({\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n onColumnHeaderClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig,\n getRowAttributes,\n showEditFooter = true,\n renderEmptyState,\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n}: BaseTableProps<TData>): ReactElement {\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const objectTablePortalRef = useRef<HTMLDivElement>(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const getRowById = useCallback(\n (id: string) => {\n try {\n return table.getRow(id, true)?.original ?? null;\n } catch {\n // table.getRow throws when the id no longer matches a row\n // (e.g. the row was removed or has not loaded yet). Treat a\n // missing row as \"no focus\" rather than crashing.\n return null;\n }\n },\n [table]\n );\n\n const { focusedRowId, setFocusedRowId } = useFocusedRow<TData>({\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n getRowById,\n });\n const portalTracker = usePortalTracker();\n\n // Sync focusedRowId into table meta so cell renderers (which only\n // receive `table`) can read it without extra prop drilling.\n // Assigned synchronously so children see the current value in the\n // same render pass. This is safe because meta is a mutable bag that\n // TanStack Table never snapshots or shallow-compares.\n if (table.options.meta) {\n table.options.meta.focusedRowId = focusedRowId;\n }\n\n // Using a ref to prevent duplicate fetches from rapid scroll events while a fetch is in-flight\n const fetchingRef = useRef(false);\n\n useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n\n const fetchMoreOnEndReached = useCallback(\n async (containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (\n scrollHeight - scrollTop - clientHeight < SCROLL_FETCH_THRESHOLD &&\n !isLoading &&\n fetchNextPage != null\n ) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n },\n [fetchNextPage, isLoading, isLoadingMore]\n );\n\n const handleScroll = useCallback(\n async (e: React.UIEvent<HTMLDivElement>) => {\n await fetchMoreOnEndReached(e.currentTarget);\n },\n [fetchMoreOnEndReached]\n );\n\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n\n const hasEditableColumns = table\n .getAllColumns()\n .some((column) =>\n isColumnDeclaredEditable(column.columnDef.meta?.editable)\n );\n\n // Use pointerdown instead of click to detect outside interactions.\n // base-ui's Select renders a full-screen backdrop that intercepts\n // pointerdown to close the popup. By the time the click event fires,\n // the backdrop is unmounted and event.target falls through to <body>,\n // which would incorrectly trigger the outside-click handler.\n // At pointerdown time the backdrop is still in the DOM, so\n // portalTracker.containsElement correctly identifies it.\n useEffect(() => {\n const handleClickOutside = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n tableContainerRef.current &&\n !tableContainerRef.current.contains(target) &&\n !portalTracker?.containsElement(target)\n ) {\n setFocusedRowId(null);\n }\n };\n\n document.addEventListener(\"pointerdown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"pointerdown\", handleClickOutside);\n };\n }, [portalTracker, setFocusedRowId]);\n\n return (\n <PortalContainerProvider container={objectTablePortalRef}>\n <div\n ref={objectTablePortalRef}\n className={classNames(styles.osdkTableWrapper, className)}\n >\n <div\n ref={tableContainerRef}\n className={styles.osdkTableContainer}\n onScroll={handleScroll}\n >\n <table>\n {isLoading && !hasData ? (\n <LoadingStateTable\n table={table}\n headerGroups={headerGroups}\n rowHeight={rowHeight}\n tableContainerRef={tableContainerRef}\n />\n ) : (\n <>\n <TableHeader\n table={table}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n onColumnHeaderClick={onColumnHeaderClick}\n />\n <TableBody\n rows={rows}\n tableContainerRef={tableContainerRef}\n onRowClick={onRowClick}\n rowHeight={rowHeight}\n renderCellContextMenu={renderCellContextMenu}\n isLoadingMore={isLoadingMore}\n headerGroups={headerGroups}\n focusedRowId={focusedRowId}\n setFocusedRowId={setFocusedRowId}\n isInEditMode={editableConfig?.editModeState.isActive}\n getRowAttributes={getRowAttributes}\n />\n </>\n )}\n </table>\n {!hasData &&\n error == null &&\n (renderEmptyState != null ? (\n renderEmptyState()\n ) : (\n <NonIdealState message={\"No Data\"} />\n ))}\n {error != null && (\n <NonIdealState message={`Error Loading Data: ${error.message}`} />\n )}\n </div>\n {showEditFooter && hasEditableColumns && editableConfig && (\n <TableEditContainer\n editableConfig={editableConfig}\n hasFocusedRow={focusedRowId != null}\n />\n )}\n </div>\n </PortalContainerProvider>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAEVC,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,QAAQ,QACH,OAAO;AAEd,SAASC,uBAAuB,QAAQ,qCAAqC;AAC7E,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,SAASC,sBAAsB,QAAQ,sBAAsB;AAC7D,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,SACEC,qBAAqB,EACrBC,gBAAgB,QACX,0BAA0B;AAOjC,OAAOC,MAAM,MAAM,oBAAoB;AAsEvC,OAAO,SAASC,SAASA,CACvBC,KAA4B,EACd;EACd,oBACElB,KAAA,CAAAmB,aAAA,CAACL,qBAAqB,qBACpBd,KAAA,CAAAmB,aAAA,CAACC,cAAc,EAAKF,KAAQ,CACP,CAAC;AAE5B;AAEA,SAASE,cAAcA,CAAwB;EAC7CC,KAAK;EACLC,SAAS;EACTC,aAAa;EACbC,UAAU;EACVC,mBAAmB;EACnBC,SAAS;EACTC,qBAAqB;EACrBC,SAAS;EACTC,KAAK;EACLC,sBAAsB;EACtBC,cAAc;EACdC,gBAAgB;EAChBC,cAAc,GAAG,IAAI;EACrBC,gBAAgB;EAChBC,YAAY,EAAEC,gBAAgB;EAC9BC;AACqB,CAAC,EAAgB;EACtC,MAAMC,iBAAiB,GAAGnC,MAAM,CAAiB,IAAI,CAAC;EACtD,MAAMoC,oBAAoB,GAAGpC,MAAM,CAAiB,IAAI,CAAC;EACzD,MAAM,CAACqC,aAAa,EAAEC,gBAAgB,CAAC,GAAGrC,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMsC,UAAU,GAAGzC,WAAW,CAC3B0C,EAAU,IAAK;IACd,IAAI;MACF,OAAOtB,KAAK,CAACuB,MAAM,CAACD,EAAE,EAAE,IAAI,CAAC,EAAEE,QAAQ,IAAI,IAAI;IACjD,CAAC,CAAC,MAAM;MACN;MACA;MACA;MACA,OAAO,IAAI;IACb;EACF,CAAC,EACD,CAACxB,KAAK,CACR,CAAC;EAED,MAAM;IAAEc,YAAY;IAAEW;EAAgB,CAAC,GAAGxC,aAAa,CAAQ;IAC7D6B,YAAY,EAAEC,gBAAgB;IAC9BC,mBAAmB;IACnBK;EACF,CAAC,CAAC;EACF,MAAMK,aAAa,GAAGhC,gBAAgB,CAAC,CAAC;;EAExC;EACA;EACA;EACA;EACA;EACA,IAAIM,KAAK,CAAC2B,OAAO,CAACC,IAAI,EAAE;IACtB5B,KAAK,CAAC2B,OAAO,CAACC,IAAI,CAACd,YAAY,GAAGA,YAAY;EAChD;;EAEA;EACA,MAAMe,WAAW,GAAG/C,MAAM,CAAC,KAAK,CAAC;EAEjCD,SAAS,CAAC,MAAM;IACd,IAAI,CAACoB,SAAS,IAAIC,aAAa,IAAI,IAAI,EAAE;MACvCkB,gBAAgB,CAAC,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,CAACnB,SAAS,EAAEC,aAAa,CAAC,CAAC;EAE9B,MAAM4B,qBAAqB,GAAGlD,WAAW,CACvC,MAAOmD,mBAA2C,IAAK;IACrD,IAAIA,mBAAmB,IAAI,CAACF,WAAW,CAACG,OAAO,IAAI,CAACb,aAAa,EAAE;MACjE,MAAM;QAAEc,YAAY;QAAEC,SAAS;QAAEC;MAAa,CAAC,GAAGJ,mBAAmB;MACrE,IACEE,YAAY,GAAGC,SAAS,GAAGC,YAAY,GAAG5C,sBAAsB,IAChE,CAACU,SAAS,IACVC,aAAa,IAAI,IAAI,EACrB;QACA2B,WAAW,CAACG,OAAO,GAAG,IAAI;QAC1BZ,gBAAgB,CAAC,IAAI,CAAC;QACtB,IAAI;UACF,MAAMlB,aAAa,CAAC,CAAC;QACvB,CAAC,SAAS;UACR2B,WAAW,CAACG,OAAO,GAAG,KAAK;QAC7B;MACF;IACF;EACF,CAAC,EACD,CAAC9B,aAAa,EAAED,SAAS,EAAEkB,aAAa,CAC1C,CAAC;EAED,MAAMiB,YAAY,GAAGxD,WAAW,CAC9B,MAAOyD,CAAgC,IAAK;IAC1C,MAAMP,qBAAqB,CAACO,CAAC,CAACC,aAAa,CAAC;EAC9C,CAAC,EACD,CAACR,qBAAqB,CACxB,CAAC;EAED,MAAMS,IAAI,GAAGvC,KAAK,CAACwC,WAAW,CAAC,CAAC,CAACD,IAAI;EACrC,MAAME,YAAY,GAAGzC,KAAK,CAAC0C,eAAe,CAAC,CAAC;EAC5C,MAAMC,OAAO,GAAGJ,IAAI,CAACK,MAAM,GAAG,CAAC;EAE/B,MAAMC,kBAAkB,GAAG7C,KAAK,CAC7B8C,aAAa,CAAC,CAAC,CACfC,IAAI,CAAEC,MAAM,IACXxD,wBAAwB,CAACwD,MAAM,CAACC,SAAS,CAACrB,IAAI,EAAEsB,QAAQ,CAC1D,CAAC;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACArE,SAAS,CAAC,MAAM;IACd,MAAMsE,kBAAkB,GAAIC,KAAmB,IAAK;MAClD,MAAMC,MAAM,GAAGD,KAAK,CAACC,MAAc;MACnC,IACEpC,iBAAiB,CAACe,OAAO,IACzB,CAACf,iBAAiB,CAACe,OAAO,CAACsB,QAAQ,CAACD,MAAM,CAAC,IAC3C,CAAC3B,aAAa,EAAE6B,eAAe,CAACF,MAAM,CAAC,EACvC;QACA5B,eAAe,CAAC,IAAI,CAAC;MACvB;IACF,CAAC;IAED+B,QAAQ,CAACC,gBAAgB,CAAC,aAAa,EAAEN,kBAAkB,CAAC;IAC5D,OAAO,MAAM;MACXK,QAAQ,CAACE,mBAAmB,CAAC,aAAa,EAAEP,kBAAkB,CAAC;IACjE,CAAC;EACH,CAAC,EAAE,CAACzB,aAAa,EAAED,eAAe,CAAC,CAAC;EAEpC,oBACE9C,KAAA,CAAAmB,aAAA,CAACd,uBAAuB;IAAC2E,SAAS,EAAEzC;EAAqB,gBACvDvC,KAAA,CAAAmB,aAAA;IACE8D,GAAG,EAAE1C,oBAAqB;IAC1BX,SAAS,EAAE7B,UAAU,CAACiB,MAAM,CAACkE,gBAAgB,EAAEtD,SAAS;EAAE,gBAE1D5B,KAAA,CAAAmB,aAAA;IACE8D,GAAG,EAAE3C,iBAAkB;IACvBV,SAAS,EAAEZ,MAAM,CAACmE,kBAAmB;IACrCC,QAAQ,EAAE3B;EAAa,gBAEvBzD,KAAA,CAAAmB,aAAA,gBACGG,SAAS,IAAI,CAAC0C,OAAO,gBACpBhE,KAAA,CAAAmB,aAAA,CAACZ,iBAAiB;IAChBc,KAAK,EAAEA,KAAM;IACbyC,YAAY,EAAEA,YAAa;IAC3BpC,SAAS,EAAEA,SAAU;IACrBY,iBAAiB,EAAEA;EAAkB,CACtC,CAAC,gBAEFtC,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAqF,QAAA,qBACErF,KAAA,CAAAmB,aAAA,CAACR,WAAW;IACVU,KAAK,EAAEA,KAAM;IACbS,sBAAsB,EAAEA,sBAAuB;IAC/CL,mBAAmB,EAAEA;EAAoB,CAC1C,CAAC,eACFzB,KAAA,CAAAmB,aAAA,CAACV,SAAS;IACRmD,IAAI,EAAEA,IAAK;IACXtB,iBAAiB,EAAEA,iBAAkB;IACrCd,UAAU,EAAEA,UAAW;IACvBE,SAAS,EAAEA,SAAU;IACrBC,qBAAqB,EAAEA,qBAAsB;IAC7Ca,aAAa,EAAEA,aAAc;IAC7BsB,YAAY,EAAEA,YAAa;IAC3B3B,YAAY,EAAEA,YAAa;IAC3BW,eAAe,EAAEA,eAAgB;IACjCwC,YAAY,EAAEvD,cAAc,EAAEwD,aAAa,CAACC,QAAS;IACrDxD,gBAAgB,EAAEA;EAAiB,CACpC,CACD,CAEC,CAAC,EACP,CAACgC,OAAO,IACPnC,KAAK,IAAI,IAAI,KACZK,gBAAgB,IAAI,IAAI,GACvBA,gBAAgB,CAAC,CAAC,gBAElBlC,KAAA,CAAAmB,aAAA,CAACX,aAAa;IAACiF,OAAO,EAAE;EAAU,CAAE,CACrC,CAAC,EACH5D,KAAK,IAAI,IAAI,iBACZ7B,KAAA,CAAAmB,aAAA,CAACX,aAAa;IAACiF,OAAO,EAAE,uBAAuB5D,KAAK,CAAC4D,OAAO;EAAG,CAAE,CAEhE,CAAC,EACLxD,cAAc,IAAIiC,kBAAkB,IAAInC,cAAc,iBACrD/B,KAAA,CAAAmB,aAAA,CAACT,kBAAkB;IACjBqB,cAAc,EAAEA,cAAe;IAC/B2D,aAAa,EAAEvD,YAAY,IAAI;EAAK,CACrC,CAEA,CACkB,CAAC;AAE9B","ignoreList":[]}
@@ -17,9 +17,9 @@
17
17
  import { useVirtualizer } from "@tanstack/react-virtual";
18
18
  import React, { useLayoutEffect } from "react";
19
19
  import { LoadingRow } from "./LoadingRow.js";
20
- import styles from "./TableBody.module.css";
21
20
  import { TableRow } from "./TableRow.js";
22
21
  import { DEFAULT_ROW_HEIGHT, VIRTUALIZER_OVERSCAN } from "./utils/constants.js";
22
+ import styles from "./TableBody.module.css";
23
23
  export function TableBody({
24
24
  rows,
25
25
  tableContainerRef,
@@ -1 +1 @@
1
- {"version":3,"file":"TableBody.js","names":["useVirtualizer","React","useLayoutEffect","LoadingRow","styles","TableRow","DEFAULT_ROW_HEIGHT","VIRTUALIZER_OVERSCAN","TableBody","rows","tableContainerRef","onRowClick","renderCellContextMenu","rowHeight","isLoadingMore","headerGroups","focusedRowId","setFocusedRowId","isInEditMode","getRowAttributes","rowVirtualizer","count","length","estimateSize","getScrollElement","current","overscan","measure","totalSize","getTotalSize","bodyHeight","headers","createElement","className","osdkTableBody","style","height","getVirtualItems","map","virtualRow","row","index","key","id","isFocused","translateY","columnCount"],"sources":["TableBody.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Cell, HeaderGroup, Row, RowData } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useLayoutEffect } from \"react\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport styles from \"./TableBody.module.css\";\nimport { TableRow } from \"./TableRow.js\";\nimport { DEFAULT_ROW_HEIGHT, VIRTUALIZER_OVERSCAN } from \"./utils/constants.js\";\n\ninterface TableBodyProps<TData extends RowData> {\n rows: Array<Row<TData>>;\n tableContainerRef: React.RefObject<HTMLDivElement>;\n onRowClick?: (row: TData) => void;\n rowHeight?: number;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n isLoadingMore?: boolean;\n headerGroups?: Array<HeaderGroup<TData>>;\n focusedRowId?: string | null;\n setFocusedRowId?: (id: string | null) => void;\n isInEditMode?: boolean;\n getRowAttributes?: (\n object: TData,\n ) => Record<string, string | undefined>;\n}\n\nexport function TableBody<TData extends RowData>({\n rows,\n tableContainerRef,\n onRowClick,\n renderCellContextMenu,\n rowHeight = DEFAULT_ROW_HEIGHT,\n isLoadingMore = false,\n headerGroups = [],\n focusedRowId,\n setFocusedRowId,\n isInEditMode,\n getRowAttributes,\n}: TableBodyProps<TData>): React.ReactElement {\n // Important: Keep the row virtualizer in the lowest component possible to avoid unnecessary re-renders.\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => rowHeight,\n getScrollElement: () => tableContainerRef.current,\n overscan: VIRTUALIZER_OVERSCAN,\n });\n\n // Measure the virtualizer after the DOM has been laid out to ensure proper dimensions\n useLayoutEffect(() => {\n rowVirtualizer.measure();\n }, [rowVirtualizer, rows.length]);\n\n const totalSize = rowVirtualizer.getTotalSize();\n const bodyHeight = isLoadingMore\n ? totalSize + rowHeight\n : totalSize;\n\n const headers = headerGroups[0]?.headers ?? [];\n\n return (\n <tbody\n className={styles.osdkTableBody}\n style={{\n height: `${bodyHeight}px`,\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n\n return (\n <TableRow\n key={row.id}\n row={row}\n virtualRow={virtualRow}\n onRowClick={onRowClick}\n renderCellContextMenu={renderCellContextMenu}\n isFocused={focusedRowId === row.id}\n setFocusedRowId={setFocusedRowId}\n isInEditMode={isInEditMode}\n getRowAttributes={getRowAttributes}\n />\n );\n })}\n {isLoadingMore && (\n <LoadingRow\n headers={headers}\n translateY={totalSize}\n rowHeight={rowHeight}\n columnCount={headers.length}\n />\n )}\n </tbody>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,cAAc,QAAQ,yBAAyB;AACxD,OAAOC,KAAK,IAAIC,eAAe,QAAQ,OAAO;AAC9C,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,OAAOC,MAAM,MAAM,wBAAwB;AAC3C,SAASC,QAAQ,QAAQ,eAAe;AACxC,SAASC,kBAAkB,EAAEC,oBAAoB,QAAQ,sBAAsB;AAqB/E,OAAO,SAASC,SAASA,CAAwB;EAC/CC,IAAI;EACJC,iBAAiB;EACjBC,UAAU;EACVC,qBAAqB;EACrBC,SAAS,GAAGP,kBAAkB;EAC9BQ,aAAa,GAAG,KAAK;EACrBC,YAAY,GAAG,EAAE;EACjBC,YAAY;EACZC,eAAe;EACfC,YAAY;EACZC;AACqB,CAAC,EAAsB;EAC5C;EACA,MAAMC,cAAc,GAAGpB,cAAc,CAAsC;IACzEqB,KAAK,EAAEZ,IAAI,CAACa,MAAM;IAClBC,YAAY,EAAEA,CAAA,KAAMV,SAAS;IAC7BW,gBAAgB,EAAEA,CAAA,KAAMd,iBAAiB,CAACe,OAAO;IACjDC,QAAQ,EAAEnB;EACZ,CAAC,CAAC;;EAEF;EACAL,eAAe,CAAC,MAAM;IACpBkB,cAAc,CAACO,OAAO,CAAC,CAAC;EAC1B,CAAC,EAAE,CAACP,cAAc,EAAEX,IAAI,CAACa,MAAM,CAAC,CAAC;EAEjC,MAAMM,SAAS,GAAGR,cAAc,CAACS,YAAY,CAAC,CAAC;EAC/C,MAAMC,UAAU,GAAGhB,aAAa,GAC5Bc,SAAS,GAAGf,SAAS,GACrBe,SAAS;EAEb,MAAMG,OAAO,GAAGhB,YAAY,CAAC,CAAC,CAAC,EAAEgB,OAAO,IAAI,EAAE;EAE9C,oBACE9B,KAAA,CAAA+B,aAAA;IACEC,SAAS,EAAE7B,MAAM,CAAC8B,aAAc;IAChCC,KAAK,EAAE;MACLC,MAAM,EAAE,GAAGN,UAAU;IACvB;EAAE,GAEDV,cAAc,CAACiB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,UAAU,IAAK;IACpD,MAAMC,GAAG,GAAG/B,IAAI,CAAC8B,UAAU,CAACE,KAAK,CAAC;IAElC,oBACExC,KAAA,CAAA+B,aAAA,CAAC3B,QAAQ;MACPqC,GAAG,EAAEF,GAAG,CAACG,EAAG;MACZH,GAAG,EAAEA,GAAI;MACTD,UAAU,EAAEA,UAAW;MACvB5B,UAAU,EAAEA,UAAW;MACvBC,qBAAqB,EAAEA,qBAAsB;MAC7CgC,SAAS,EAAE5B,YAAY,KAAKwB,GAAG,CAACG,EAAG;MACnC1B,eAAe,EAAEA,eAAgB;MACjCC,YAAY,EAAEA,YAAa;MAC3BC,gBAAgB,EAAEA;IAAiB,CACpC,CAAC;EAEN,CAAC,CAAC,EACDL,aAAa,iBACZb,KAAA,CAAA+B,aAAA,CAAC7B,UAAU;IACT4B,OAAO,EAAEA,OAAQ;IACjBc,UAAU,EAAEjB,SAAU;IACtBf,SAAS,EAAEA,SAAU;IACrBiC,WAAW,EAAEf,OAAO,CAACT;EAAO,CAC7B,CAEE,CAAC;AAEZ","ignoreList":[]}
1
+ {"version":3,"file":"TableBody.js","names":["useVirtualizer","React","useLayoutEffect","LoadingRow","TableRow","DEFAULT_ROW_HEIGHT","VIRTUALIZER_OVERSCAN","styles","TableBody","rows","tableContainerRef","onRowClick","renderCellContextMenu","rowHeight","isLoadingMore","headerGroups","focusedRowId","setFocusedRowId","isInEditMode","getRowAttributes","rowVirtualizer","count","length","estimateSize","getScrollElement","current","overscan","measure","totalSize","getTotalSize","bodyHeight","headers","createElement","className","osdkTableBody","style","height","getVirtualItems","map","virtualRow","row","index","key","id","isFocused","translateY","columnCount"],"sources":["TableBody.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Cell, HeaderGroup, Row, RowData } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useLayoutEffect } from \"react\";\n\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport { TableRow } from \"./TableRow.js\";\nimport { DEFAULT_ROW_HEIGHT, VIRTUALIZER_OVERSCAN } from \"./utils/constants.js\";\n\nimport styles from \"./TableBody.module.css\";\n\ninterface TableBodyProps<TData extends RowData> {\n rows: Array<Row<TData>>;\n tableContainerRef: React.RefObject<HTMLDivElement>;\n onRowClick?: (row: TData) => void;\n rowHeight?: number;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>\n ) => React.ReactNode;\n isLoadingMore?: boolean;\n headerGroups?: Array<HeaderGroup<TData>>;\n focusedRowId?: string | null;\n setFocusedRowId?: (id: string | null) => void;\n isInEditMode?: boolean;\n getRowAttributes?: (object: TData) => Record<string, string | undefined>;\n}\n\nexport function TableBody<TData extends RowData>({\n rows,\n tableContainerRef,\n onRowClick,\n renderCellContextMenu,\n rowHeight = DEFAULT_ROW_HEIGHT,\n isLoadingMore = false,\n headerGroups = [],\n focusedRowId,\n setFocusedRowId,\n isInEditMode,\n getRowAttributes,\n}: TableBodyProps<TData>): React.ReactElement {\n // Important: Keep the row virtualizer in the lowest component possible to avoid unnecessary re-renders.\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: () => rowHeight,\n getScrollElement: () => tableContainerRef.current,\n overscan: VIRTUALIZER_OVERSCAN,\n });\n\n // Measure the virtualizer after the DOM has been laid out to ensure proper dimensions\n useLayoutEffect(() => {\n rowVirtualizer.measure();\n }, [rowVirtualizer, rows.length]);\n\n const totalSize = rowVirtualizer.getTotalSize();\n const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;\n\n const headers = headerGroups[0]?.headers ?? [];\n\n return (\n <tbody\n className={styles.osdkTableBody}\n style={{\n height: `${bodyHeight}px`,\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n\n return (\n <TableRow\n key={row.id}\n row={row}\n virtualRow={virtualRow}\n onRowClick={onRowClick}\n renderCellContextMenu={renderCellContextMenu}\n isFocused={focusedRowId === row.id}\n setFocusedRowId={setFocusedRowId}\n isInEditMode={isInEditMode}\n getRowAttributes={getRowAttributes}\n />\n );\n })}\n {isLoadingMore && (\n <LoadingRow\n headers={headers}\n translateY={totalSize}\n rowHeight={rowHeight}\n columnCount={headers.length}\n />\n )}\n </tbody>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,cAAc,QAAQ,yBAAyB;AACxD,OAAOC,KAAK,IAAIC,eAAe,QAAQ,OAAO;AAE9C,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,QAAQ,QAAQ,eAAe;AACxC,SAASC,kBAAkB,EAAEC,oBAAoB,QAAQ,sBAAsB;AAE/E,OAAOC,MAAM,MAAM,wBAAwB;AAmB3C,OAAO,SAASC,SAASA,CAAwB;EAC/CC,IAAI;EACJC,iBAAiB;EACjBC,UAAU;EACVC,qBAAqB;EACrBC,SAAS,GAAGR,kBAAkB;EAC9BS,aAAa,GAAG,KAAK;EACrBC,YAAY,GAAG,EAAE;EACjBC,YAAY;EACZC,eAAe;EACfC,YAAY;EACZC;AACqB,CAAC,EAAsB;EAC5C;EACA,MAAMC,cAAc,GAAGpB,cAAc,CAAsC;IACzEqB,KAAK,EAAEZ,IAAI,CAACa,MAAM;IAClBC,YAAY,EAAEA,CAAA,KAAMV,SAAS;IAC7BW,gBAAgB,EAAEA,CAAA,KAAMd,iBAAiB,CAACe,OAAO;IACjDC,QAAQ,EAAEpB;EACZ,CAAC,CAAC;;EAEF;EACAJ,eAAe,CAAC,MAAM;IACpBkB,cAAc,CAACO,OAAO,CAAC,CAAC;EAC1B,CAAC,EAAE,CAACP,cAAc,EAAEX,IAAI,CAACa,MAAM,CAAC,CAAC;EAEjC,MAAMM,SAAS,GAAGR,cAAc,CAACS,YAAY,CAAC,CAAC;EAC/C,MAAMC,UAAU,GAAGhB,aAAa,GAAGc,SAAS,GAAGf,SAAS,GAAGe,SAAS;EAEpE,MAAMG,OAAO,GAAGhB,YAAY,CAAC,CAAC,CAAC,EAAEgB,OAAO,IAAI,EAAE;EAE9C,oBACE9B,KAAA,CAAA+B,aAAA;IACEC,SAAS,EAAE1B,MAAM,CAAC2B,aAAc;IAChCC,KAAK,EAAE;MACLC,MAAM,EAAE,GAAGN,UAAU;IACvB;EAAE,GAEDV,cAAc,CAACiB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,UAAU,IAAK;IACpD,MAAMC,GAAG,GAAG/B,IAAI,CAAC8B,UAAU,CAACE,KAAK,CAAC;IAElC,oBACExC,KAAA,CAAA+B,aAAA,CAAC5B,QAAQ;MACPsC,GAAG,EAAEF,GAAG,CAACG,EAAG;MACZH,GAAG,EAAEA,GAAI;MACTD,UAAU,EAAEA,UAAW;MACvB5B,UAAU,EAAEA,UAAW;MACvBC,qBAAqB,EAAEA,qBAAsB;MAC7CgC,SAAS,EAAE5B,YAAY,KAAKwB,GAAG,CAACG,EAAG;MACnC1B,eAAe,EAAEA,eAAgB;MACjCC,YAAY,EAAEA,YAAa;MAC3BC,gBAAgB,EAAEA;IAAiB,CACpC,CAAC;EAEN,CAAC,CAAC,EACDL,aAAa,iBACZb,KAAA,CAAA+B,aAAA,CAAC7B,UAAU;IACT4B,OAAO,EAAEA,OAAQ;IACjBc,UAAU,EAAEjB,SAAU;IACtBf,SAAS,EAAEA,SAAU;IACrBiC,WAAW,EAAEf,OAAO,CAACT;EAAO,CAC7B,CAEE,CAAC;AAEZ","ignoreList":[]}