@osdk/react-components 0.3.0 → 0.4.0-main-90a01d202dfa1e497125bd6cfcdc8175278fb7ec

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 (99) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/browser/action-form/ActionFormApi.js.map +1 -1
  3. package/build/browser/action-form/BaseForm.js +100 -12
  4. package/build/browser/action-form/BaseForm.js.map +1 -1
  5. package/build/browser/action-form/BaseForm.module.css +21 -1
  6. package/build/browser/action-form/BaseForm.module.css.js +4 -1
  7. package/build/browser/action-form/FormField.js +3 -1
  8. package/build/browser/action-form/FormField.js.map +1 -1
  9. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  10. package/build/browser/action-form/fields/BaseInput.module.css +4 -0
  11. package/build/browser/action-form/fields/DatetimePickerField.js +3 -1
  12. package/build/browser/action-form/fields/DatetimePickerField.js.map +1 -1
  13. package/build/browser/action-form/fields/DatetimePickerField.module.css +4 -0
  14. package/build/browser/action-form/fields/FieldBridge.js +31 -4
  15. package/build/browser/action-form/fields/FieldBridge.js.map +1 -1
  16. package/build/browser/action-form/fields/FilePickerField.js +6 -2
  17. package/build/browser/action-form/fields/FilePickerField.js.map +1 -1
  18. package/build/browser/action-form/fields/FilePickerField.module.css +4 -0
  19. package/build/browser/action-form/fields/FormFieldRenderer.js +24 -12
  20. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  21. package/build/browser/action-form/fields/NumberInputField.js +12 -8
  22. package/build/browser/action-form/fields/NumberInputField.js.map +1 -1
  23. package/build/browser/action-form/fields/NumberInputField.module.css +4 -0
  24. package/build/browser/action-form/fields/TextAreaField.js +3 -1
  25. package/build/browser/action-form/fields/TextAreaField.js.map +1 -1
  26. package/build/browser/action-form/fields/TextInputField.js +3 -1
  27. package/build/browser/action-form/fields/TextInputField.js.map +1 -1
  28. package/build/browser/action-form/utils/extractValidationRules.js +186 -0
  29. package/build/browser/action-form/utils/extractValidationRules.js.map +1 -0
  30. package/build/browser/public/experimental.js.map +1 -1
  31. package/build/browser/shared/hooks/useAsyncAction.js +56 -0
  32. package/build/browser/shared/hooks/useAsyncAction.js.map +1 -0
  33. package/build/browser/shared/hooks/useIsMounted.js +32 -0
  34. package/build/browser/shared/hooks/useIsMounted.js.map +1 -0
  35. package/build/browser/styles.css +37 -1
  36. package/build/cjs/public/experimental.cjs +361 -37
  37. package/build/cjs/public/experimental.cjs.map +1 -1
  38. package/build/cjs/public/experimental.css +30 -1
  39. package/build/cjs/public/experimental.css.map +1 -1
  40. package/build/cjs/public/experimental.d.cts +40 -13
  41. package/build/esm/action-form/ActionFormApi.js.map +1 -1
  42. package/build/esm/action-form/BaseForm.js +100 -12
  43. package/build/esm/action-form/BaseForm.js.map +1 -1
  44. package/build/esm/action-form/BaseForm.module.css +21 -1
  45. package/build/esm/action-form/FormField.js +3 -1
  46. package/build/esm/action-form/FormField.js.map +1 -1
  47. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  48. package/build/esm/action-form/fields/BaseInput.module.css +4 -0
  49. package/build/esm/action-form/fields/DatetimePickerField.js +3 -1
  50. package/build/esm/action-form/fields/DatetimePickerField.js.map +1 -1
  51. package/build/esm/action-form/fields/DatetimePickerField.module.css +4 -0
  52. package/build/esm/action-form/fields/FieldBridge.js +31 -4
  53. package/build/esm/action-form/fields/FieldBridge.js.map +1 -1
  54. package/build/esm/action-form/fields/FilePickerField.js +6 -2
  55. package/build/esm/action-form/fields/FilePickerField.js.map +1 -1
  56. package/build/esm/action-form/fields/FilePickerField.module.css +4 -0
  57. package/build/esm/action-form/fields/FormFieldRenderer.js +24 -12
  58. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  59. package/build/esm/action-form/fields/NumberInputField.js +12 -8
  60. package/build/esm/action-form/fields/NumberInputField.js.map +1 -1
  61. package/build/esm/action-form/fields/NumberInputField.module.css +4 -0
  62. package/build/esm/action-form/fields/TextAreaField.js +3 -1
  63. package/build/esm/action-form/fields/TextAreaField.js.map +1 -1
  64. package/build/esm/action-form/fields/TextInputField.js +3 -1
  65. package/build/esm/action-form/fields/TextInputField.js.map +1 -1
  66. package/build/esm/action-form/utils/extractValidationRules.js +186 -0
  67. package/build/esm/action-form/utils/extractValidationRules.js.map +1 -0
  68. package/build/esm/public/experimental.js.map +1 -1
  69. package/build/esm/shared/hooks/useAsyncAction.js +56 -0
  70. package/build/esm/shared/hooks/useAsyncAction.js.map +1 -0
  71. package/build/esm/shared/hooks/useIsMounted.js +32 -0
  72. package/build/esm/shared/hooks/useIsMounted.js.map +1 -0
  73. package/build/types/action-form/ActionFormApi.d.ts +1 -1
  74. package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
  75. package/build/types/action-form/BaseForm.d.ts.map +1 -1
  76. package/build/types/action-form/FormField.d.ts +1 -0
  77. package/build/types/action-form/FormField.d.ts.map +1 -1
  78. package/build/types/action-form/FormFieldApi.d.ts +39 -12
  79. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  80. package/build/types/action-form/fields/DatetimePickerField.d.ts +1 -1
  81. package/build/types/action-form/fields/DatetimePickerField.d.ts.map +1 -1
  82. package/build/types/action-form/fields/FieldBridge.d.ts.map +1 -1
  83. package/build/types/action-form/fields/FormFieldRenderer.d.ts +2 -0
  84. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  85. package/build/types/action-form/fields/NumberInputField.d.ts +1 -1
  86. package/build/types/action-form/fields/NumberInputField.d.ts.map +1 -1
  87. package/build/types/action-form/fields/TextAreaField.d.ts +1 -1
  88. package/build/types/action-form/fields/TextAreaField.d.ts.map +1 -1
  89. package/build/types/action-form/fields/TextInputField.d.ts +1 -1
  90. package/build/types/action-form/fields/TextInputField.d.ts.map +1 -1
  91. package/build/types/action-form/utils/extractValidationRules.d.ts +13 -0
  92. package/build/types/action-form/utils/extractValidationRules.d.ts.map +1 -0
  93. package/build/types/public/experimental.d.ts +1 -1
  94. package/build/types/public/experimental.d.ts.map +1 -1
  95. package/build/types/shared/hooks/useAsyncAction.d.ts +16 -0
  96. package/build/types/shared/hooks/useAsyncAction.d.ts.map +1 -0
  97. package/build/types/shared/hooks/useIsMounted.d.ts +5 -0
  98. package/build/types/shared/hooks/useIsMounted.d.ts.map +1 -0
  99. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/filter-list/base/FilterIcons.tsx","../../../src/filter-list/base/FilterList.module.css","../../../src/filter-list/base/FilterListContent.module.css","../../../src/shared/ErrorBoundary.module.css","../../../src/shared/ErrorBoundary.tsx","../../../src/filter-list/utils/filterValues.ts","../../../src/filter-list/base/DragHandleIcon.tsx","../../../src/filter-list/base/FilterListItem.module.css","../../../src/filter-list/base/FilterListItem.tsx","../../../src/filter-list/base/SortableFilterListItem.tsx","../../../src/filter-list/base/FilterListContent.tsx","../../../src/filter-list/base/FilterListHeader.module.css","../../../src/filter-list/base/FilterListHeader.tsx","../../../src/filter-list/base/BaseFilterList.tsx","../../../src/base-components/search-bar/SearchBar.module.css","../../../src/base-components/search-bar/SearchBar.tsx","../../../src/base-components/searchable-menu/SearchableMenu.module.css","../../../src/base-components/searchable-menu/SearchableMenu.tsx","../../../src/filter-list/base/AddFilterPopover.module.css","../../../src/filter-list/base/AddFilterPopover.tsx","../../../src/filter-list/base/inputs/ContainsTextInput.module.css","../../../src/filter-list/base/inputs/ContainsTextInput.tsx","../../../src/base-components/switch/Switch.module.css","../../../src/base-components/switch/Switch.tsx","../../../src/filter-list/base/inputs/ToggleInput.module.css","../../../src/filter-list/base/inputs/ToggleInput.tsx","../../../src/shared/assertUnreachable.ts","../../../src/shared/dateUtils.ts","../../../src/filter-list/base/inputs/createHistogramBuckets.ts","../../../src/filter-list/base/inputs/RangeInput.module.css","../../../src/filter-list/base/inputs/shared.module.css","../../../src/filter-list/base/inputs/useStableData.ts","../../../src/filter-list/base/inputs/RangeInput.tsx","../../../src/filter-list/base/inputs/DateRangeInput.tsx","../../../src/filter-list/base/inputs/LinkedPropertyInput.module.css","../../../src/base-components/checkbox/Checkbox.module.css","../../../src/base-components/checkbox/Checkbox.tsx","../../../src/filter-list/base/inputs/ListogramInput.module.css","../../../src/filter-list/base/inputs/ListogramSkeleton.module.css","../../../src/filter-list/base/inputs/ListogramSkeleton.tsx","../../../src/filter-list/base/inputs/ListogramInput.tsx","../../../src/filter-list/base/inputs/MultiDateInput.module.css","../../../src/filter-list/base/inputs/MultiDateInput.tsx","../../../src/base-components/combobox/Combobox.module.css","../../../src/base-components/combobox/Combobox.tsx","../../../src/filter-list/base/inputs/MultiSelectInput.module.css","../../../src/filter-list/base/inputs/MultiSelectInput.tsx","../../../src/filter-list/base/inputs/NullValueWrapper.module.css","../../../src/filter-list/base/inputs/NullValueWrapper.tsx","../../../src/filter-list/base/inputs/NumberRangeInput.tsx","../../../src/filter-list/base/inputs/SingleDateInput.module.css","../../../src/filter-list/base/inputs/SingleDateInput.tsx","../../../src/filter-list/base/inputs/SingleSelectInput.module.css","../../../src/filter-list/base/inputs/SingleSelectInput.tsx","../../../src/filter-list/base/inputs/TextTagsInput.module.css","../../../src/filter-list/base/inputs/TextTagsInput.tsx","../../../src/filter-list/base/inputs/TimelineInput.module.css","../../../src/filter-list/base/inputs/TimelineInput.tsx","../../../src/filter-list/hooks/usePropertyAggregation.ts","../../../src/filter-list/utils/aggregationHelpers.ts","../../../src/filter-list/utils/coerceFilterValue.ts","../../../src/filter-list/inputs/LinkedPropertyInput.tsx","../../../src/filter-list/base/ExcludeDropdown.module.css","../../../src/filter-list/base/ExcludeDropdown.tsx","../../../src/filter-list/base/FilterInputExcludeRow.tsx","../../../src/filter-list/inputs/ContainsTextFilterInput.tsx","../../../src/filter-list/inputs/DateRangeFilterInput.tsx","../../../src/filter-list/inputs/ListogramFilterInput.tsx","../../../src/filter-list/inputs/MultiDateFilterInput.tsx","../../../src/filter-list/inputs/MultiSelectFilterInput.tsx","../../../src/filter-list/inputs/NumberRangeFilterInput.tsx","../../../src/filter-list/inputs/SingleDateFilterInput.tsx","../../../src/filter-list/inputs/SingleSelectFilterInput.tsx","../../../src/filter-list/inputs/TextTagsFilterInput.tsx","../../../src/filter-list/inputs/TimelineFilterInput.tsx","../../../src/filter-list/inputs/ToggleFilterInput.tsx","../../../src/filter-list/inputs/PropertyFilterInput.tsx","../../../src/filter-list/FilterInput.tsx","../../../src/filter-list/utils/getFilterKey.ts","../../../src/filter-list/utils/filterStateToWhereClause.ts","../../../src/filter-list/hooks/useFilterListState.ts","../../../src/filter-list/hooks/useFilterVisibility.ts","../../../src/filter-list/utils/getFilterLabel.ts","../../../src/filter-list/FilterList.tsx","../../../src/filter-list/utils/filterStateSerialization.ts","../../../src/object-table/LoadingCell.module.css","../../../src/object-table/TableCell.module.css","../../../src/object-table/LoadingCell.tsx","../../../src/object-table/components/AsyncValueCell.tsx","../../../src/object-table/EditableCell.module.css","../../../src/object-table/EditableCell.tsx","../../../src/object-table/utils/AsyncCellData.ts","../../../src/object-table/utils/getCellId.ts","../../../src/object-table/DefaultCellRenderer.tsx","../../../src/object-table/hooks/useColumnDefs.ts","../../../src/object-table/utils/constants.ts","../../../src/object-table/hooks/useColumnPinning.ts","../../../src/object-table/hooks/useColumnResize.ts","../../../src/object-table/hooks/useColumnVisibility.ts","../../../src/object-table/hooks/useEditableTable.ts","../../../src/object-table/utils/addFilterClauseToObjectSet.ts","../../../src/object-table/utils/stripDerivedPropertiesFromParams.ts","../../../src/object-table/hooks/useFunctionColumnsData.ts","../../../src/object-table/hooks/useObjectTableData.ts","../../../src/object-table/utils/getRowId.ts","../../../src/object-table/hooks/useRowSelection.ts","../../../src/object-table/SelectionCells.tsx","../../../src/object-table/hooks/useSelectionColumn.tsx","../../../src/object-table/hooks/useTableSorting.ts","../../../src/object-table/TableRow.module.css","../../../src/object-table/LoadingRow.tsx","../../../src/object-table/TableBody.module.css","../../../src/base-components/draggable-list/DraggableList.module.css","../../../src/base-components/draggable-list/DraggableList.tsx","../../../src/object-table/ColumnConfigDialog.module.css","../../../src/object-table/ColumnConfigDialog.tsx","../../../src/object-table/MultiColumnSortDialog.module.css","../../../src/object-table/SortableItemsList.tsx","../../../src/object-table/MultiColumnSortDialog.tsx","../../../src/object-table/TableHeader.module.css","../../../src/object-table/TableHeaderContent.module.css","../../../src/object-table/TableHeaderContent.tsx","../../../src/object-table/TableHeaderWithPopover.module.css","../../../src/object-table/TableHeaderWithPopover.tsx","../../../src/object-table/utils/getColumnPinningStyles.ts","../../../src/object-table/TableHeader.tsx","../../../src/object-table/LoadingStateTable.tsx","../../../src/object-table/NonIdealState.module.css","../../../src/object-table/NonIdealState.tsx","../../../src/object-table/Table.module.css","../../../src/object-table/CellContextMenu.module.css","../../../src/object-table/CellContextMenu.tsx","../../../src/object-table/hooks/useCellContextMenu.ts","../../../src/object-table/TableCell.tsx","../../../src/object-table/TableRow.tsx","../../../src/object-table/TableBody.tsx","../../../src/object-table/TableEditContainer.module.css","../../../src/object-table/TableEditContainer.tsx","../../../src/object-table/Table.tsx","../../../src/object-table/ObjectTable.tsx","../../../src/pdf-viewer/components/PdfViewerAnnotationLayer.module.css","../../../src/pdf-viewer/components/PdfViewerAnnotationLayer.tsx","../../../src/pdf-viewer/components/PdfViewerOutlineSidebar.module.css","../../../src/pdf-viewer/components/PdfViewerSidebarHeader.module.css","../../../src/pdf-viewer/components/PdfViewerSidebarHeader.tsx","../../../src/pdf-viewer/components/PdfViewerOutlineSidebar.tsx","../../../src/pdf-viewer/components/PdfViewerSearchBar.module.css","../../../src/pdf-viewer/components/PdfViewerSearchBar.tsx","../../../src/pdf-viewer/constants.ts","../../../src/pdf-viewer/components/PdfViewerSidebar.module.css","../../../src/pdf-viewer/components/PdfViewerThumbnail.module.css","../../../src/pdf-viewer/components/PdfViewerThumbnail.tsx","../../../src/pdf-viewer/components/PdfViewerSidebar.tsx","../../../src/pdf-viewer/components/PdfViewerToolbar.module.css","../../../src/pdf-viewer/components/PdfViewerToolbar.tsx","../../../src/pdf-viewer/hooks/usePdfAnnotationsByPage.ts","../../../src/pdf-viewer/hooks/usePdfFormFields.ts","../../../src/pdf-viewer/hooks/usePdfHighlightMode.ts","../../../src/pdf-viewer/hooks/usePdfOutline.ts","../../../src/pdf-viewer/hooks/usePdfAnnotationPortals.ts","../../../src/pdf-viewer/hooks/usePdfDocument.ts","../../../src/pdf-viewer/hooks/usePdfViewer.ts","../../../src/pdf-viewer/hooks/usePdfViewerSync.ts","../../../src/pdf-viewer/hooks/usePdfViewerCore.ts","../../../src/pdf-viewer/hooks/usePdfViewerSearch.ts","../../../src/pdf-viewer/hooks/usePdfViewerState.ts","../../../src/pdf-viewer/PdfViewer.module.css","../../../src/pdf-viewer/PdfViewer.tsx","../../../src/pdf-viewer/components/PdfViewerContent.tsx","../../../src/pdf-viewer/PdfViewerContext.tsx","../../../src/pdf-viewer/PdfRenderer.tsx","../../../src/shared/typedMemo.ts","../../../src/action-form/BaseForm.module.css","../../../src/action-form/FormField.module.css","../../../src/action-form/FormField.tsx","../../../src/action-form/fields/CustomField.tsx","../../../src/action-form/fields/DatetimePickerField.module.css","../../../src/action-form/fields/LazyDateCalendar.tsx","../../../src/action-form/fields/DatetimePickerField.tsx","../../../src/base-components/select/Select.module.css","../../../src/base-components/select/Select.tsx","../../../src/action-form/fields/DropdownField.tsx","../../../src/action-form/fields/FilePickerField.module.css","../../../src/action-form/fields/FilePickerField.tsx","../../../src/action-form/fields/NumberInputField.module.css","../../../src/action-form/fields/NumberInputField.tsx","../../../src/base-components/icon/BlueprintIcon.tsx","../../../src/action-form/fields/ObjectSetField.module.css","../../../src/action-form/fields/ObjectSetField.tsx","../../../src/action-form/fields/RadioButtonsField.module.css","../../../src/action-form/fields/RadioButtonsField.tsx","../../../src/action-form/fields/BaseInput.module.css","../../../src/action-form/fields/TextAreaField.tsx","../../../src/action-form/fields/TextInputField.tsx","../../../src/action-form/fields/FormFieldRenderer.tsx","../../../src/action-form/fields/FieldBridge.tsx","../../../src/action-form/FormHeader.module.css","../../../src/action-form/FormHeader.tsx","../../../src/action-form/BaseForm.tsx","../../../src/action-form/utils/coerceFieldValue.ts","../../../src/action-form/utils/getDefaultFieldDefinitions.ts","../../../src/action-form/ActionForm.tsx"],"names":["React","Cross","Search","More","ChevronDown","DoubleChevronLeft","DoubleChevronRight","Reset","Tick","Disable","Component","Button","useState","useCallback","classnames","Input","useSortable","useMemo","CSS","memo","getFilterKey","getFilterLabel","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","useSensors","arrayMove","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DragOverlay","classNames","Menu","useRef","debounce","useEffect","_extends","BaseUISwitch","useId","BaseUICheckbox","Minus","SkeletonBar","BaseUICombobox","TagItem","useOsdkAggregation","value","includeNull","selectedDates","selectedValues","selectedDate","startDate","endDate","enabled","HasLinkInput","hasLink","KeywordSearchInput","key","useOsdkMetadata","abortController","Tooltip","Error","isObjectSet","getWireObjectSet","useOsdkFunctions","chunk","useObjectSet","useOsdkObjects","RemoveIcon","Trash","SmallCross","DragHandleVertical","BaseDndContext","ActionButton","Dialog","Cog","Collapsible","CaretDown","SmallInfoSign","SortAlphabetical","SortAlphabeticalDesc","DialogTitle","Add","flexRender","Pin","Unpin","Sort","Remove","VerticalDistribution","Settings","header","createPortal","useVirtualizer","useLayoutEffect","useReactTable","getCoreRowModel","ToggleGroup","Toggle","GridView","Properties","ChevronUp","document","ChevronLeft","ChevronRight","Plus","RotatePage","Highlight","Download","FloppyDisk","stored","AnnotationEditorType","items","importMetaUrl","GlobalWorkerOptions","getDocument","EventBus","PDFLinkService","PDFFindController","PDFViewer","forwardRef","BasePdfViewer","useImperativeHandle","Spin","ErrorIcon","useContext","Suspense","DateCalendar_default","Popover","BaseUISelect","SVGIconContainer","Icons","IconSize","RadioGroup","Radio","useController","useForm","useOsdkAction"],"mappings":"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","file":"experimental.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChevronDown, Cross, Disable, DoubleChevronLeft, DoubleChevronRight, More, Reset, Search, Tick } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport function RemoveIcon() {\n return /*#__PURE__*/React.createElement(Cross, {\n size: 14\n });\n}\nexport function SearchIcon() {\n return /*#__PURE__*/React.createElement(Search, {\n size: 14\n });\n}\nexport function OverflowMenuIcon() {\n return /*#__PURE__*/React.createElement(More, {\n size: 14\n });\n}\nexport function ChevronDownIcon() {\n return /*#__PURE__*/React.createElement(ChevronDown, {\n size: 10\n });\n}\nexport function CollapseIcon() {\n return /*#__PURE__*/React.createElement(DoubleChevronLeft, {\n size: 14\n });\n}\nexport function ExpandIcon() {\n return /*#__PURE__*/React.createElement(DoubleChevronRight, {\n size: 14\n });\n}\nexport function ResetIcon() {\n return /*#__PURE__*/React.createElement(Reset, {\n size: 12\n });\n}\nexport function CheckIcon() {\n return /*#__PURE__*/React.createElement(Tick, {\n size: 12\n });\n}\nexport function ExcludeIcon() {\n return /*#__PURE__*/React.createElement(Disable, {\n color: \"currentColor\",\n size: 12\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.filterList {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.filterListCollapsed {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: var(--osdk-filter-list-collapsed-width);\n height: 100%;\n background: var(--osdk-filter-list-bg);\n border: var(--osdk-filter-list-border);\n border-radius: var(--osdk-filter-list-border-radius);\n padding: var(--osdk-surface-spacing) 0;\n gap: var(--osdk-surface-spacing);\n}\n\n.expandedContent {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--osdk-filter-list-bg);\n border: var(--osdk-filter-list-border);\n border-radius: var(--osdk-filter-list-border-radius);\n box-shadow: var(--osdk-filter-list-shadow);\n padding: var(--osdk-filter-list-padding);\n gap: var(--osdk-filter-list-gap);\n}\n\n.scrollableContent {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.hiddenContent {\n display: none;\n}\n\n.expandButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-header-button-padding);\n border: none;\n background: var(--osdk-filter-header-button-bg);\n cursor: pointer;\n border-radius: var(--osdk-filter-header-button-border-radius);\n color: var(--osdk-filter-header-collapse-icon-color);\n transition: background-color var(--osdk-filter-header-button-transition);\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.collapsedLabel {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-family: var(--osdk-filter-list-collapsed-label-font-family);\n font-size: var(--osdk-filter-list-collapsed-label-font-size);\n color: var(--osdk-filter-list-collapsed-label-color);\n font-weight: var(--osdk-filter-header-font-weight);\n user-select: none;\n}\n\n.addButtonContainer {\n display: flex;\n justify-content: center;\n padding: var(--osdk-filter-list-addButton-container-padding);\n background: var(--osdk-filter-list-addButton-container-bg);\n border-top: var(--osdk-filter-list-addButton-container-border-top);\n flex-shrink: 0;\n}\n\n.addButtonContainer > * {\n flex: 1;\n}\n\n.addButton {\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-reset-font-size);\n color: var(--osdk-typography-color-default-rest);\n background: var(--osdk-filter-header-button-bg);\n border: var(--osdk-filter-list-addButton-border);\n cursor: pointer;\n padding: var(--osdk-filter-header-reset-padding);\n min-height: var(--osdk-filter-list-addButton-height);\n border-radius: var(--osdk-filter-header-button-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.content {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-list-content-gap);\n}\n\n.emptyMessage {\n margin: 0;\n color: var(--osdk-filter-list-empty-text-color);\n font-size: var(--osdk-filter-list-empty-font-size);\n}\n\n.dragOverlay {\n box-shadow: var(--osdk-filter-item-drag-overlay-shadow);\n border-radius: var(--osdk-filter-item-drag-overlay-border-radius);\n background: var(--osdk-filter-item-drag-overlay-bg);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.errorContainer {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--osdk-error-boundary-gap, 8px);\n padding: var(--osdk-error-boundary-padding, 8px);\n border-radius: var(--osdk-error-boundary-border-radius, 4px);\n background-color: var(--osdk-error-boundary-bg, color-mix(in srgb, var(--osdk-intent-danger-rest, #c23030) 5%, transparent));\n}\n\n.errorMessage {\n margin: 0;\n font-size: var(--osdk-error-boundary-font-size, 13px);\n color: var(--osdk-error-boundary-text-color, var(--osdk-intent-danger-rest, #c23030));\n}\n\n.retryButton {\n padding: var(--osdk-error-boundary-button-padding, 4px 8px);\n border: var(--osdk-surface-border-width, 1px) solid var(--osdk-error-boundary-button-border-color, currentColor);\n border-radius: var(--osdk-error-boundary-button-border-radius, 3px);\n background: transparent;\n font-size: var(--osdk-error-boundary-button-font-size, 12px);\n color: var(--osdk-error-boundary-button-color, inherit);\n cursor: pointer;\n transition: background-color var(--osdk-filter-input-transition, 150ms ease);\n\n &:hover {\n background-color: var(--osdk-error-boundary-button-hover-bg, color-mix(in srgb, currentColor 5%, transparent));\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width, 2px) solid var(--osdk-filter-input-focus-outline-color, rgba(45, 114, 210, 0.6));\n outline-offset: var(--osdk-filter-input-focus-outline-offset, 2px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\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 React, { Component } from \"react\";\nimport styles from \"./ErrorBoundary.module.css\";\nexport class ErrorBoundary extends Component {\n state = {\n hasError: false,\n error: null\n };\n static getDerivedStateFromError(error) {\n return {\n hasError: true,\n error\n };\n }\n componentDidCatch(error, errorInfo) {\n // eslint-disable-next-line no-console\n console.error(\"[ErrorBoundary]\", error);\n // eslint-disable-next-line no-console\n console.error(\"[ErrorBoundary] Component stack:\", errorInfo.componentStack);\n this.props.onError?.(error);\n }\n handleRetry = () => {\n this.setState({\n hasError: false,\n error: null\n });\n };\n render() {\n if (this.state.hasError) {\n if (this.props.fallback) {\n return this.props.fallback;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: styles.errorMessage\n }, this.props.errorMessage ?? \"Something went wrong\"), /*#__PURE__*/React.createElement(Button, {\n className: styles.retryButton,\n onClick: this.handleRetry,\n \"aria-label\": \"Retry\"\n }, \"Retry\"));\n }\n return this.props.children;\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state) {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default:\n {\n const _exhaustive = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state) {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default:\n {\n const _exhaustive = state;\n return false;\n }\n }\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch(values, searchValue, getValue) {\n const trimmed = searchValue.trim();\n if (!trimmed) return values;\n const lowerSearch = trimmed.toLowerCase();\n return values.filter(v => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state) {\n if (!state) return false;\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default:\n {\n const _exhaustive = state;\n return false;\n }\n }\n}","/*\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\";\nexport function DragHandleIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5.5\",\n cy: \"3.5\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"10.5\",\n cy: \"3.5\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5.5\",\n cy: \"8\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"10.5\",\n cy: \"8\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5.5\",\n cy: \"12.5\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"10.5\",\n cy: \"12.5\",\n r: \"1.5\"\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.filterItem {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-item-gap);\n border-radius: var(--osdk-filter-item-border-radius);\n padding: var(--osdk-filter-item-padding);\n}\n\n.itemHeader {\n display: flex;\n align-items: center;\n}\n\n.itemLabel {\n flex: 1;\n font-family: var(--osdk-filter-item-label-font-family);\n font-size: var(--osdk-filter-item-label-font-size);\n font-weight: var(--osdk-filter-item-label-font-weight);\n color: var(--osdk-filter-item-label-color);\n}\n\n.itemContent {\n display: flex;\n flex-direction: column;\n min-width: 0;\n overflow: hidden;\n}\n\n.dragHandle {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-item-drag-handle-padding);\n margin-right: var(--osdk-surface-spacing);\n border: none;\n background: var(--osdk-filter-item-drag-handle-bg);\n cursor: var(--osdk-drag-handle-cursor);\n border-radius: var(--osdk-filter-item-drag-handle-border-radius);\n color: var(--osdk-filter-item-drag-handle-color);\n touch-action: none;\n\n &:hover {\n color: var(--osdk-filter-item-drag-handle-color-hover);\n background: var(--osdk-filter-item-drag-handle-bg-hover);\n }\n\n &:active {\n cursor: var(--osdk-drag-handle-cursor-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-item-drag-handle-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.headerActionButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-item-header-action-padding);\n margin-left: calc(var(--osdk-surface-spacing) * 0.5);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-filter-item-header-action-border-radius);\n color: var(--osdk-filter-item-header-action-color);\n opacity: 0;\n transition: opacity var(--osdk-filter-header-button-transition),\n background-color var(--osdk-filter-header-button-transition);\n\n &:hover {\n color: var(--osdk-typography-color-default-rest);\n background: var(--osdk-filter-item-header-action-bg-hover);\n }\n\n &:focus-visible {\n opacity: 1;\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.filterItem:hover .headerActionButton {\n opacity: 1;\n}\n\n.headerActionButton[data-popup-open],\n.headerActionButton[aria-pressed=\"true\"] {\n opacity: 1;\n}\n\n.searchRow {\n display: flex;\n align-items: center;\n background: var(--osdk-filter-input-bg);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n padding: var(--osdk-filter-input-padding);\n gap: var(--osdk-filter-input-gap);\n}\n\n.searchInput {\n flex: 1;\n border: none;\n background: transparent;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-input-font-size);\n color: var(--osdk-filter-input-color);\n outline: none;\n\n &::placeholder {\n color: var(--osdk-filter-input-placeholder-color);\n }\n}\n\n.searchClearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-input-clear-padding);\n border: none;\n background: var(--osdk-filter-input-clear-bg);\n color: var(--osdk-filter-input-icon-color);\n cursor: pointer;\n border-radius: var(--osdk-filter-input-clear-border-radius);\n transition: background-color var(--osdk-filter-input-transition);\n\n &:hover {\n background: var(--osdk-filter-input-clear-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-input-clear-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.excludeRow {\n display: flex;\n align-items: center;\n opacity: 0;\n height: 0;\n overflow: hidden;\n transition: opacity var(--osdk-filter-header-button-transition),\n height var(--osdk-filter-header-button-transition);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.excludeRowVisible {\n opacity: 1;\n height: auto;\n overflow: visible;\n}\n\n.excludeCountLabel {\n font-family: var(--osdk-filter-item-exclude-dropdown-font-family);\n font-size: var(--osdk-filter-item-exclude-dropdown-font-size);\n color: var(--osdk-filter-item-exclude-dropdown-color);\n margin-left: calc(var(--osdk-surface-spacing) * 0.5);\n}\n\n.clearAllButton {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--osdk-filter-item-exclude-dropdown-font-family);\n font-size: var(--osdk-filter-item-exclude-dropdown-font-size);\n color: var(--osdk-filter-item-exclude-dropdown-color);\n padding: 0;\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.dragging {\n opacity: var(--osdk-filter-item-dragging-opacity);\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport { supportsExcluding, supportsSearch } from \"../utils/filterValues.js\";\nimport { DragHandleIcon } from \"./DragHandleIcon.js\";\nimport { OverflowMenuIcon, RemoveIcon, SearchIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction hasActiveSelection(filterState) {\n if (filterState == null) {\n return false;\n }\n switch (filterState.type) {\n case \"EXACT_MATCH\":\n return filterState.values.length > 0;\n case \"SELECT\":\n return filterState.selectedValues.length > 0;\n case \"CONTAINS_TEXT\":\n return filterState.value != null && filterState.value.length > 0;\n case \"NUMBER_RANGE\":\n return filterState.minValue != null || filterState.maxValue != null;\n case \"DATE_RANGE\":\n return filterState.minValue != null || filterState.maxValue != null;\n case \"TIMELINE\":\n return filterState.startDate != null || filterState.endDate != null;\n case \"TOGGLE\":\n return filterState.enabled;\n case \"keywordSearch\":\n return filterState.searchTerm.length > 0;\n case \"hasLink\":\n return filterState.hasLink;\n case \"linkedProperty\":\n return hasActiveSelection(filterState.linkedFilterState);\n case \"custom\":\n return true;\n default:\n return false;\n }\n}\nfunction FilterListItemInner({\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n dragHandleAttributes,\n dragHandleListeners,\n className,\n style\n}) {\n const [searchState, setSearchState] = useState({\n type: \"closed\"\n });\n const [excludeRowOpen, setExcludeRowOpen] = useState(false);\n const handleFilterStateChanged = useCallback(newState => {\n onFilterStateChanged(filterKey, newState);\n }, [filterKey, onFilterStateChanged]);\n const handleToggleSearch = useCallback(() => {\n setSearchState(prev => prev.type === \"closed\" ? {\n type: \"open\",\n query: \"\"\n } : {\n type: \"closed\"\n });\n }, []);\n const handleSearchChange = useCallback(e => {\n setSearchState({\n type: \"open\",\n query: e.target.value\n });\n }, []);\n const handleSearchClear = useCallback(() => {\n setSearchState({\n type: \"open\",\n query: \"\"\n });\n }, []);\n const handleRemove = useCallback(() => {\n onFilterRemoved?.(filterKey);\n }, [filterKey, onFilterRemoved]);\n const handleToggleExcludeRow = useCallback(() => {\n setExcludeRowOpen(prev => !prev);\n }, []);\n const searchInputRef = useCallback(element => {\n element?.focus({\n preventScroll: true\n });\n }, []);\n const showExcludeDropdown = supportsExcluding(filterState);\n const showSearch = supportsSearch(filterState);\n const hasOverflowActions = showExcludeDropdown;\n const searchOpen = searchState.type === \"open\";\n const searchQuery = searchState.type === \"open\" ? searchState.query : \"\";\n const searchQueryForInput = searchState.type === \"open\" ? searchState.query : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.filterItem, className),\n style: style,\n \"data-has-selection\": hasActiveSelection(filterState) || undefined\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemHeader\n }, dragHandleAttributes && /*#__PURE__*/React.createElement(Button, _extends({\n className: styles.dragHandle,\n \"aria-label\": `Reorder ${label}`\n }, dragHandleAttributes, dragHandleListeners), /*#__PURE__*/React.createElement(DragHandleIcon, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, label), showSearch && /*#__PURE__*/React.createElement(Button, {\n className: styles.headerActionButton,\n onClick: handleToggleSearch,\n \"aria-label\": \"Search values\",\n \"aria-pressed\": searchOpen\n }, /*#__PURE__*/React.createElement(SearchIcon, null)), onFilterRemoved && /*#__PURE__*/React.createElement(Button, {\n className: styles.headerActionButton,\n onClick: handleRemove,\n \"aria-label\": `Remove ${label} filter`\n }, /*#__PURE__*/React.createElement(RemoveIcon, null)), hasOverflowActions && /*#__PURE__*/React.createElement(Button, {\n className: styles.headerActionButton,\n onClick: handleToggleExcludeRow,\n \"aria-label\": \"More actions\",\n \"aria-pressed\": excludeRowOpen\n }, /*#__PURE__*/React.createElement(OverflowMenuIcon, null))), searchOpen && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.searchRow\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n className: styles.searchInput,\n value: searchQuery,\n onChange: handleSearchChange,\n placeholder: \"Search property values...\",\n \"aria-label\": \"Search property values\",\n ref: searchInputRef\n }), searchQuery && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.searchClearButton,\n onClick: handleSearchClear,\n \"aria-label\": \"Clear search\"\n }, /*#__PURE__*/React.createElement(RemoveIcon, null))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemContent\n }, /*#__PURE__*/React.createElement(ErrorBoundary, {\n errorMessage: \"Error loading filter\"\n }, renderInput({\n definition,\n filterKey,\n filterState,\n onFilterStateChanged: handleFilterStateChanged,\n searchQuery: searchQueryForInput,\n excludeRowOpen\n }))));\n}\nexport const FilterListItem = /*#__PURE__*/memo(FilterListItemInner);","/*\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 { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classnames from \"classnames\";\nimport React, { memo, useMemo } from \"react\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction SortableFilterListItemInner({\n id,\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n const style = useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition: transition ?? undefined\n }), [transform, transition]);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: setNodeRef,\n style: style,\n className: classnames(isDragging && styles.dragging)\n }, /*#__PURE__*/React.createElement(FilterListItem, {\n definition: definition,\n filterKey: filterKey,\n label: label,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput,\n dragHandleAttributes: attributes,\n dragHandleListeners: listeners\n }));\n}\nexport const SortableFilterListItem = /*#__PURE__*/memo(SortableFilterListItemInner);","/*\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 { closestCenter, DndContext, DragOverlay, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport styles from \"./FilterListContent.module.css\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport { SortableFilterListItem } from \"./SortableFilterListItem.js\";\nconst restrictToVerticalAxis = ({\n transform\n}) => ({\n ...transform,\n x: 0\n});\nconst POINTER_ACTIVATION_CONSTRAINT = {\n distance: 8\n};\nconst MODIFIERS = [restrictToVerticalAxis];\nconst DRAG_OVERLAY_HANDLE_ATTRIBUTES = {\n role: \"button\",\n tabIndex: -1,\n \"aria-disabled\": true,\n \"aria-pressed\": undefined,\n \"aria-roledescription\": \"sortable\",\n \"aria-describedby\": \"\"\n};\nexport function FilterListContent({\n filterDefinitions,\n filterStates,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n getFilterKey,\n getFilterLabel,\n enableSorting,\n className,\n style\n}) {\n const [dragOrder, setDragOrder] = useState(null);\n const [activeId, setActiveId] = useState(null);\n const renderDefinitions = useMemo(() => {\n if (!enableSorting || !dragOrder || !filterDefinitions) {\n return filterDefinitions;\n }\n const defsByKey = new Map(filterDefinitions.map(d => [getFilterKey(d), d]));\n const ordered = [];\n for (const key of dragOrder) {\n const def = defsByKey.get(key);\n if (def) {\n ordered.push(def);\n defsByKey.delete(key);\n }\n }\n for (const def of defsByKey.values()) {\n ordered.push(def);\n }\n return ordered;\n }, [enableSorting, dragOrder, filterDefinitions, getFilterKey]);\n const sortableIds = useMemo(() => enableSorting && renderDefinitions ? renderDefinitions.map(def => getFilterKey(def)) : [], [enableSorting, renderDefinitions, getFilterKey]);\n const pointerSensor = useSensor(PointerSensor, {\n activationConstraint: POINTER_ACTIVATION_CONSTRAINT\n });\n const keyboardSensor = useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n });\n const sensors = useSensors(pointerSensor, keyboardSensor);\n const activeIndex = activeId != null ? sortableIds.indexOf(String(activeId)) : -1;\n const activeDefinition = activeIndex >= 0 && renderDefinitions ? renderDefinitions[activeIndex] : undefined;\n const activeFilterKey = useMemo(() => activeDefinition ? getFilterKey(activeDefinition) : undefined, [activeDefinition, getFilterKey]);\n const handleDragStart = useCallback(event => {\n setActiveId(event.active.id);\n }, []);\n const handleDragEnd = useCallback(event => {\n setActiveId(null);\n const {\n active,\n over\n } = event;\n if (!over || active.id === over.id) {\n return;\n }\n const oldIndex = sortableIds.indexOf(String(active.id));\n const newIndex = sortableIds.indexOf(String(over.id));\n if (oldIndex !== -1 && newIndex !== -1) {\n setDragOrder(arrayMove(sortableIds, oldIndex, newIndex));\n }\n }, [sortableIds]);\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n const announcements = useMemo(() => ({\n onDragStart({\n active\n }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 && renderDefinitions ? renderDefinitions[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Picked up ${label} filter`;\n },\n onDragOver({\n over\n }) {\n if (!over) {\n return \"Not over a droppable area\";\n }\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Moved to position ${overIdx + 1} of ${sortableIds.length}`;\n },\n onDragEnd({\n active,\n over\n }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 && renderDefinitions ? renderDefinitions[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n if (over && active.id !== over.id) {\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Dropped ${label} filter at position ${overIdx + 1}`;\n }\n return `Dropped ${label} filter back in its original position`;\n },\n onDragCancel({\n active\n }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 && renderDefinitions ? renderDefinitions[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Cancelled dragging ${label} filter`;\n }\n }), [renderDefinitions, sortableIds, getFilterLabel]);\n const accessibility = useMemo(() => ({\n announcements\n }), [announcements]);\n if (!renderDefinitions || renderDefinitions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style,\n \"data-empty\": \"true\"\n });\n }\n if (enableSorting) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style\n }, /*#__PURE__*/React.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n modifiers: MODIFIERS,\n onDragStart: handleDragStart,\n onDragEnd: handleDragEnd,\n onDragCancel: handleDragCancel,\n accessibility: accessibility\n }, /*#__PURE__*/React.createElement(SortableContext, {\n items: sortableIds,\n strategy: verticalListSortingStrategy\n }, renderDefinitions.map((definition, index) => {\n const id = sortableIds[index];\n const filterKey = getFilterKey(definition);\n const label = getFilterLabel(definition);\n const state = filterStates.get(filterKey);\n return /*#__PURE__*/React.createElement(SortableFilterListItem, {\n key: id,\n id: id,\n definition: definition,\n filterKey: filterKey,\n label: label,\n filterState: state,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput\n });\n })), /*#__PURE__*/React.createElement(DragOverlay, {\n dropAnimation: null,\n className: styles.dragOverlay\n }, activeDefinition && activeFilterKey && /*#__PURE__*/React.createElement(FilterListItem, {\n definition: activeDefinition,\n filterKey: activeFilterKey,\n label: getFilterLabel(activeDefinition),\n filterState: filterStates.get(activeFilterKey),\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput,\n dragHandleAttributes: DRAG_OVERLAY_HANDLE_ATTRIBUTES\n }))));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style\n }, renderDefinitions.map(definition => {\n const filterKey = getFilterKey(definition);\n const state = filterStates.get(filterKey);\n return /*#__PURE__*/React.createElement(FilterListItem, {\n key: filterKey,\n definition: definition,\n filterKey: filterKey,\n label: getFilterLabel(definition),\n filterState: state,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput\n });\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--osdk-filter-header-padding);\n gap: var(--osdk-filter-header-gap);\n border-bottom: var(--osdk-filter-header-border-bottom);\n flex-shrink: 0;\n}\n\n.titleContainer {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-header-titleContainer-gap);\n flex: 1;\n min-width: 0;\n}\n\n.title {\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-font-size);\n font-weight: var(--osdk-filter-header-font-weight);\n color: var(--osdk-filter-header-color);\n margin: 0;\n}\n\n.titleIcon {\n color: var(--osdk-filter-header-icon-color);\n display: flex;\n align-items: center;\n}\n\n.activeCount {\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-activeCount-font-size);\n color: var(--osdk-filter-header-activeCount-color);\n font-variant-numeric: tabular-nums;\n}\n\n.actions {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n\n &:empty {\n display: none;\n }\n}\n\n.collapseButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-header-button-padding);\n border: none;\n background: var(--osdk-filter-header-button-bg);\n cursor: pointer;\n border-radius: var(--osdk-filter-header-button-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n color: var(--osdk-filter-header-collapse-icon-color);\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.resetButton {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 0.5);\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-reset-font-size);\n color: var(--osdk-filter-header-reset-color);\n background: var(--osdk-filter-header-button-bg);\n border: var(--osdk-filter-header-reset-border);\n cursor: pointer;\n padding: var(--osdk-filter-header-reset-padding);\n border-radius: var(--osdk-filter-header-reset-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n\n &:hover:not(:disabled) {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:disabled {\n color: var(--osdk-filter-header-reset-color-disabled);\n border: var(--osdk-filter-header-reset-border-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\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 React, { memo, useCallback } from \"react\";\nimport { CollapseIcon, ResetIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterListHeader.module.css\";\nfunction FilterListHeaderInner({\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n showResetButton,\n onReset,\n showActiveFilterCount,\n activeFilterCount = 0,\n hasVisibilityChanges = false\n}) {\n const showCollapseButton = onCollapsedChange != null;\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.header\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.titleContainer\n }, titleIcon && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.titleIcon\n }, titleIcon), title && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.title\n }, title), showActiveFilterCount && activeFilterCount > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.activeCount\n }, \"(\", activeFilterCount, \")\")), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.actions\n }, showResetButton && /*#__PURE__*/React.createElement(Button, {\n className: styles.resetButton,\n onClick: onReset,\n disabled: activeFilterCount === 0 && !hasVisibilityChanges\n }, /*#__PURE__*/React.createElement(ResetIcon, null), \" Reset filters\"), showCollapseButton && /*#__PURE__*/React.createElement(Button, {\n className: styles.collapseButton,\n onClick: handleCollapseClick,\n \"aria-expanded\": !collapsed,\n \"aria-label\": collapsed ? \"Expand filters\" : \"Collapse filters\"\n }, /*#__PURE__*/React.createElement(CollapseIcon, null))));\n}\nexport const FilterListHeader = /*#__PURE__*/memo(FilterListHeaderInner);","/*\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 classnames from \"classnames\";\nimport React, { useCallback } from \"react\";\nimport { ExpandIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterList.module.css\";\nimport { FilterListContent } from \"./FilterListContent.js\";\nimport { FilterListHeader } from \"./FilterListHeader.js\";\nexport function BaseFilterList(props) {\n const {\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n filterDefinitions,\n filterStates,\n onFilterStateChanged,\n renderInput,\n getFilterKey,\n getFilterLabel,\n activeFilterCount,\n onReset,\n onFilterAdded,\n onFilterRemoved,\n showResetButton = false,\n showActiveFilterCount = false,\n hasVisibilityChanges,\n enableSorting,\n className,\n renderAddFilterButton\n } = props;\n const showHeader = title || titleIcon || showResetButton || showActiveFilterCount || onCollapsedChange;\n const showAddButton = renderAddFilterButton != null || onFilterAdded != null;\n const handleExpand = useCallback(() => {\n onCollapsedChange?.(false);\n }, [onCollapsedChange]);\n const isCollapsed = collapsed && onCollapsedChange != null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.filterList, className)\n }, isCollapsed && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.filterListCollapsed,\n \"data-collapsed\": \"true\"\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.expandButton,\n onClick: handleExpand,\n \"aria-label\": \"Expand filters\"\n }, /*#__PURE__*/React.createElement(ExpandIcon, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.collapsedLabel\n }, title ?? \"Filters\")), /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.expandedContent, isCollapsed && styles.hiddenContent),\n \"data-active-count\": activeFilterCount\n }, showHeader && /*#__PURE__*/React.createElement(FilterListHeader, {\n title: title,\n titleIcon: titleIcon,\n collapsed: collapsed,\n onCollapsedChange: onCollapsedChange,\n showResetButton: showResetButton,\n onReset: onReset,\n showActiveFilterCount: showActiveFilterCount,\n activeFilterCount: activeFilterCount,\n hasVisibilityChanges: hasVisibilityChanges\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollableContent\n }, /*#__PURE__*/React.createElement(FilterListContent, {\n filterDefinitions: filterDefinitions,\n filterStates: filterStates,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput,\n getFilterKey: getFilterKey,\n getFilterLabel: getFilterLabel,\n enableSorting: enableSorting\n })), showAddButton && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.addButtonContainer\n }, renderAddFilterButton ? renderAddFilterButton() : /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.addButton,\n onClick: onFilterAdded\n }, \"+ Add filter\"))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.searchBar {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 3);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 3);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n\n &:focus-within {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.searchIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-typography-color-muted);\n pointer-events: none;\n flex-shrink: 0;\n}\n\n.searchInput {\n border: none;\n width: 100%;\n padding: var(--osdk-surface-spacing) 0;\n font-size: var(--osdk-typography-size-body-medium);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--osdk-typography-color-muted);\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Search } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./SearchBar.module.css\";\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search\",\n \"aria-label\": ariaLabel,\n className,\n onKeyDown\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.searchBar, className)\n }, /*#__PURE__*/React.createElement(Search, {\n className: styles.searchIcon\n }), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n placeholder: placeholder,\n \"aria-label\": ariaLabel ?? placeholder,\n value: value,\n onChange: onChange,\n className: styles.searchInput,\n onKeyDown: onKeyDown\n }));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.positioner {\n z-index: var(--osdk-surface-z-index-3);\n}\n\n.popup {\n background-color: var(--osdk-surface-background-color-default-rest);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n max-height: calc(var(--osdk-dialog-max-height) * 0.5);\n overflow-y: auto;\n width: var(--anchor-width);\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.searchContainer {\n border: none;\n border-bottom: var(--osdk-surface-border);\n border-radius: 0;\n position: sticky;\n top: 0;\n background-color: var(--osdk-surface-background-color-default-rest);\n}\n\n.menuItem {\n display: block;\n width: 100%;\n text-align: left;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-default-rest);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &[data-highlighted] {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 3);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-medium);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Menu } from \"@base-ui/react/menu\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { SearchBar } from \"../search-bar/SearchBar.js\";\nimport styles from \"./SearchableMenu.module.css\";\nfunction SearchableMenuInner({\n items,\n onItemSelected,\n trigger,\n triggerClassName,\n disabled,\n searchPlaceholder = \"Search\",\n emptyMessage = \"No matching items\",\n className\n}) {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const filteredItems = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n if (!query) return items;\n return items.filter(item => item.label.toLowerCase().includes(query));\n }, [items, searchQuery]);\n const handleSearchChange = useCallback(event => {\n setSearchQuery(event.target.value);\n }, []);\n const handleMenuOpenChange = useCallback(open => {\n if (open) {\n setSearchQuery(\"\");\n }\n }, []);\n const handleKeyDown = useCallback(event => {\n event.stopPropagation();\n }, []);\n return /*#__PURE__*/React.createElement(Menu.Root, {\n onOpenChange: handleMenuOpenChange\n }, /*#__PURE__*/React.createElement(Menu.Trigger, {\n className: triggerClassName,\n disabled: disabled\n }, trigger), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {\n className: classnames(styles.positioner, className),\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.popup\n }, /*#__PURE__*/React.createElement(SearchBar, {\n value: searchQuery,\n onChange: handleSearchChange,\n placeholder: searchPlaceholder,\n \"aria-label\": searchPlaceholder,\n className: styles.searchContainer,\n onKeyDown: handleKeyDown\n }), filteredItems.map(item => /*#__PURE__*/React.createElement(SearchableMenuItemRow, {\n key: item.key,\n item: item,\n onItemSelected: onItemSelected\n })), filteredItems.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, emptyMessage)))));\n}\nexport const SearchableMenu = /*#__PURE__*/memo(SearchableMenuInner);\nfunction SearchableMenuItemRowInner({\n item,\n onItemSelected\n}) {\n const handleClick = useCallback(() => onItemSelected(item.key), [onItemSelected, item.key]);\n return /*#__PURE__*/React.createElement(Menu.Item, {\n className: styles.menuItem,\n onClick: handleClick\n }, item.label);\n}\nconst SearchableMenuItemRow = /*#__PURE__*/memo(SearchableMenuItemRowInner);","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-reset-font-size);\n color: var(--osdk-typography-color-default-rest);\n background: var(--osdk-filter-header-button-bg);\n border: var(--osdk-filter-list-addButton-border);\n cursor: pointer;\n padding: var(--osdk-filter-header-reset-padding);\n min-height: var(--osdk-filter-list-addButton-height);\n border-radius: var(--osdk-filter-header-button-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n width: 100%;\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { SearchableMenu } from \"../../base-components/searchable-menu/SearchableMenu.js\";\nimport styles from \"./AddFilterPopover.module.css\";\nfunction AddFilterPopoverInner({\n hiddenDefinitions,\n onShowFilter,\n renderTrigger\n}) {\n return /*#__PURE__*/React.createElement(SearchableMenu, {\n items: hiddenDefinitions,\n onItemSelected: onShowFilter,\n trigger: renderTrigger != null ? renderTrigger() : \"+ Add filter\",\n triggerClassName: renderTrigger == null ? styles.trigger : undefined,\n searchPlaceholder: \"Search filters\",\n emptyMessage: \"No matching filters\"\n });\n}\nexport const AddFilterPopover = /*#__PURE__*/memo(AddFilterPopoverInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.textInput {\n position: relative;\n}\n\n.inputGroup {\n display: flex;\n align-items: center;\n background: var(--osdk-filter-input-bg);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n padding: var(--osdk-filter-input-padding);\n gap: var(--osdk-filter-input-gap);\n transition: border-color var(--osdk-filter-input-transition);\n\n &:focus-within {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.searchIcon {\n color: var(--osdk-filter-input-icon-color);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.input {\n flex: 1;\n border: none;\n background: transparent;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-input-font-size);\n color: var(--osdk-filter-input-color);\n outline: none;\n\n &::placeholder {\n color: var(--osdk-filter-input-placeholder-color);\n }\n}\n\n.clearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-input-clear-padding);\n border: none;\n background: var(--osdk-filter-input-clear-bg);\n color: var(--osdk-filter-input-icon-color);\n cursor: pointer;\n border-radius: var(--osdk-filter-input-clear-border-radius);\n transition: background-color var(--osdk-filter-input-transition);\n\n &:hover {\n background: var(--osdk-filter-input-clear-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-input-clear-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport { Cross, Search } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport { debounce } from \"lodash-es\";\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport styles from \"./ContainsTextInput.module.css\";\nfunction ContainsTextInputInner({\n value,\n onChange,\n placeholder = \"Search...\",\n debounceMs = 300,\n className,\n style,\n renderSearchIcon,\n renderClearIcon\n}) {\n const [localValue, setLocalValue] = useState(value ?? \"\");\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const debouncedOnChange = useMemo(() => debounce(newValue => {\n onChangeRef.current(newValue.length > 0 ? newValue : undefined);\n }, debounceMs), [debounceMs]);\n useEffect(() => {\n return () => {\n debouncedOnChange.cancel();\n };\n }, [debouncedOnChange]);\n useEffect(() => {\n setLocalValue(value ?? \"\");\n debouncedOnChange.cancel();\n }, [value, debouncedOnChange]);\n const handleInputChange = useCallback(e => {\n setLocalValue(e.target.value);\n debouncedOnChange(e.target.value);\n }, [debouncedOnChange]);\n const handleClear = useCallback(() => {\n setLocalValue(\"\");\n debouncedOnChange.cancel();\n onChangeRef.current(undefined);\n }, [debouncedOnChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.textInput, className),\n style: style,\n \"data-has-value\": !!localValue\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.inputGroup\n }, renderSearchIcon ? renderSearchIcon() : /*#__PURE__*/React.createElement(\"span\", {\n className: styles.searchIcon\n }, /*#__PURE__*/React.createElement(Search, null)), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n className: styles.input,\n value: localValue,\n onChange: handleInputChange,\n placeholder: placeholder,\n \"aria-label\": placeholder\n }), localValue && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.clearButton,\n onClick: handleClear,\n \"aria-label\": \"Clear search\"\n }, renderClearIcon ? renderClearIcon() : /*#__PURE__*/React.createElement(Cross, null))));\n}\nexport const ContainsTextInput = /*#__PURE__*/memo(ContainsTextInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkSwitchRoot {\n --osdk-switch-track-width: var(--osdk-switch-track-width-override, 28px);\n --osdk-switch-track-height: var(--osdk-switch-track-height-override, 16px);\n --osdk-switch-thumb-size: var(--osdk-switch-thumb-size-override, 12px);\n --osdk-switch-thumb-offset: var(--osdk-switch-thumb-offset-override, 2px);\n\n display: inline-flex;\n align-items: center;\n width: var(--osdk-switch-track-width);\n height: var(--osdk-switch-track-height);\n padding: 0;\n cursor: pointer;\n border-radius: var(--osdk-switch-border-radius, var(--osdk-surface-border-radius));\n position: relative;\n border: none;\n transition: background-color var(--osdk-switch-transition-duration, var(--osdk-emphasis-transition-duration))\n var(--osdk-switch-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-unchecked] {\n background-color: var(--osdk-switch-track-bg, var(--osdk-intent-default-rest));\n\n &:hover {\n background-color: var(--osdk-switch-track-bg-hover, var(--osdk-intent-default-hover));\n }\n\n &:active {\n background-color: var(--osdk-switch-track-bg-active, var(--osdk-intent-default-active));\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-switch-track-bg-checked, var(--osdk-intent-primary-rest));\n\n &:hover {\n background-color: var(--osdk-switch-track-bg-checked-hover, var(--osdk-intent-primary-hover));\n }\n\n &:active {\n background-color: var(--osdk-switch-track-bg-checked-active, var(--osdk-intent-primary-active));\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &:focus-visible {\n outline: var(--osdk-switch-focus-width, var(--osdk-emphasis-focus-width)) solid\n var(--osdk-switch-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(--osdk-switch-focus-offset, var(--osdk-emphasis-focus-offset));\n }\n}\n\n.osdkSwitchThumb {\n display: block;\n width: var(--osdk-switch-thumb-size);\n height: var(--osdk-switch-thumb-size);\n background-color: var(--osdk-switch-thumb-bg, var(--osdk-palette-white));\n border-radius: 50%;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n transition: left var(--osdk-switch-transition-duration, var(--osdk-emphasis-transition-duration))\n var(--osdk-switch-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-unchecked] {\n left: var(--osdk-switch-thumb-offset);\n }\n\n &[data-checked] {\n left: calc(var(--osdk-switch-track-width) - var(--osdk-switch-thumb-size) - var(--osdk-switch-thumb-offset));\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Switch as BaseUISwitch } from \"@base-ui/react/switch\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Switch.module.css\";\nexport function Switch({\n className,\n thumbProps,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISwitch.Root, _extends({\n className: classnames(styles.osdkSwitchRoot, className)\n }, rest), /*#__PURE__*/React.createElement(BaseUISwitch.Thumb, _extends({}, thumbProps, {\n className: classnames(styles.osdkSwitchThumb, thumbProps?.className)\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.toggleInput {\n display: flex;\n align-items: center;\n}\n\n.toggleLabel {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-toggle-label-gap);\n cursor: pointer;\n}\n\n.labelText {\n font-family: var(--osdk-filter-toggle-label-font-family);\n font-size: var(--osdk-filter-toggle-label-font-size);\n line-height: var(--osdk-filter-toggle-label-line-height);\n color: var(--osdk-filter-toggle-label-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo } from \"react\";\nimport { Switch } from \"../../../base-components/switch/Switch.js\";\nimport styles from \"./ToggleInput.module.css\";\nfunction ToggleInputInner({\n enabled,\n onChange,\n label,\n className,\n style\n}) {\n const rootClassName = classnames(styles.toggleInput, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName,\n style: style,\n \"data-enabled\": enabled\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.toggleLabel\n }, /*#__PURE__*/React.createElement(Switch, {\n checked: enabled,\n onCheckedChange: onChange\n }), label && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.labelText\n }, label)));\n}\nexport const ToggleInput = /*#__PURE__*/memo(ToggleInputInner);","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Exhaustive type checking helper.\n * Use in default cases of switch statements to ensure all cases are handled.\n * TypeScript will error if a case is missing.\n */\nexport function assertUnreachable(value) {\n throw new Error(`Unhandled value: ${String(value)}`);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Date utilities for HTML date inputs.\n *\n * These functions operate on local time by design. HTML <input type=\"date\">\n * returns and expects values in \"YYYY-MM-DD\" format without timezone info.\n *\n * `parseDateFromInput` appends \"T00:00:00\" (no \"Z\") so the date is parsed as\n * local midnight rather than UTC midnight. Without this, negative-offset\n * timezones (e.g. US timezones) would shift \"2024-01-15\" to Jan 14 locally.\n *\n * Consumers providing dates from an API (typically UTC) should handle\n * UTC-to-local conversion before passing values to these functions.\n */\n\nexport function formatDateForInput(date) {\n if (date == null) return \"\";\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\n/** Formats the time portion of a Date as \"HH:mm\". */\nexport function formatTime(date) {\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n}\nexport function parseDateFromInput(value) {\n if (!value) return undefined;\n const date = new Date(value + \"T00:00:00\");\n return isNaN(date.getTime()) ? undefined : date;\n}\nexport function formatDatetimeForInput(date) {\n if (date == null) return \"\";\n return `${formatDateForInput(date)}T${formatTime(date)}`;\n}\n\n/**\n * Parses a datetime-local input string (e.g. \"2024-01-15T14:30\") into a Date.\n * Delegates to `parseDateFromISO` since the parsing logic is identical for\n * string inputs — datetime-local strings already include the time component\n * and have no \"Z\" suffix, so `new Date()` parses them as local time.\n */\nexport function parseDatetimeFromInput(value) {\n if (!value) return undefined;\n return parseDateFromISO(value);\n}\nexport function formatDateForDisplay(date, fallback = \"\") {\n if (date == null) return fallback;\n return date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\"\n });\n}\n\n/** Formats a Date as \"2024-06-15 14:30\" — space-separated, more readable than T. */\nexport function formatDatetimeForDisplay(date) {\n if (date == null) return \"\";\n return `${formatDateForInput(date)} ${formatTime(date)}`;\n}\n\n/** Parses space-separated (\"2024-06-15 14:30\") or T-separated datetime strings. */\nexport function parseDatetimeFromDisplay(value) {\n if (!value) return undefined;\n const normalized = value.includes(\"T\") ? value : value.replace(\" \", \"T\");\n const date = new Date(normalized);\n return isNaN(date.getTime()) ? undefined : date;\n}\nexport function parseDateFromISO(value) {\n if (value == null) return undefined;\n if (value instanceof Date) return value;\n const date = new Date(value);\n return isNaN(date.getTime()) ? undefined : date;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const HISTOGRAM_BUCKETS = 20;\nexport function createHistogramBuckets(pairs, range, toNumber, fromNumber) {\n if (pairs.length === 0) return [];\n const minNum = toNumber(range.min);\n const maxNum = toNumber(range.max);\n const rangeSize = maxNum - minNum;\n\n // Handle single-value case\n if (rangeSize === 0) {\n const totalCount = pairs.reduce((sum, p) => sum + p.count, 0);\n return [{\n min: range.min,\n max: range.max,\n count: totalCount\n }];\n }\n\n // Create buckets\n const bucketSize = rangeSize / HISTOGRAM_BUCKETS;\n const bucketCounts = new Array(HISTOGRAM_BUCKETS).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const bucketIndex = Math.min(Math.floor((toNumber(value) - minNum) / bucketSize), HISTOGRAM_BUCKETS - 1);\n bucketCounts[bucketIndex] += count;\n }\n return bucketCounts.map((count, i) => ({\n min: fromNumber(minNum + i * bucketSize),\n max: fromNumber(minNum + (i + 1) * bucketSize),\n count\n }));\n}\nexport function getMaxBucketCount(buckets) {\n return Math.max(...buckets.map(b => b.count), 1);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.rangeInput {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-range-gap);\n min-width: 0;\n transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.rangeInput[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n.histogramContainer {\n display: flex;\n align-items: flex-end;\n height: var(--osdk-filter-range-histogram-height);\n gap: var(--osdk-filter-range-histogram-bar-gap);\n padding-bottom: var(--osdk-filter-range-histogram-padding-bottom);\n padding-inline: var(--osdk-filter-range-histogram-padding-inline);\n overflow: hidden;\n}\n\n.histogramBar {\n flex: 1;\n background: var(--osdk-filter-range-histogram-bar-color);\n min-width: var(--osdk-filter-range-histogram-bar-min-width);\n transition: background-color var(--osdk-filter-range-histogram-bar-transition);\n}\n\n.histogramBar[data-in-range=\"true\"] {\n background: var(--osdk-filter-range-histogram-bar-active-color);\n}\n\n.rangeInputs {\n display: flex;\n align-items: flex-end;\n gap: var(--osdk-filter-range-inputs-gap);\n min-width: 0;\n}\n\n.inputWrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-range-input-wrapper-gap);\n min-width: 0;\n}\n\n.inputLabel {\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-label-font-size);\n color: var(--osdk-filter-range-label-color);\n}\n\n.input {\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n min-width: 0;\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n &::placeholder {\n color: var(--osdk-filter-input-placeholder-color);\n }\n}\n\n.separator {\n display: flex;\n align-items: center;\n height: calc(\n var(--osdk-filter-input-font-size) + var(--osdk-filter-input-padding) * 2\n );\n color: var(--osdk-filter-range-separator-color);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .histogramContainer,\n .rangeInput {\n transition: none;\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Shared message styles for filter inputs */\n.loadingMessage,\n.errorMessage,\n.emptyMessage {\n font-family: var(--osdk-filter-message-font-family);\n font-size: var(--osdk-filter-message-font-size);\n padding: var(--osdk-filter-message-padding);\n}\n\n.loadingMessage,\n.emptyMessage {\n color: var(--osdk-filter-message-color-muted);\n}\n\n.errorMessage {\n color: var(--osdk-filter-message-color-danger);\n}\n\n/* Shared tag styles */\n.tagContainer {\n display: flex;\n flex-wrap: wrap;\n gap: var(--osdk-filter-tag-container-gap);\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-filter-tag-gap);\n padding: var(--osdk-filter-tag-padding);\n border-radius: var(--osdk-filter-tag-border-radius);\n background-color: var(--osdk-filter-tag-bg);\n font-family: var(--osdk-filter-tag-font-family);\n font-size: var(--osdk-filter-tag-font-size);\n line-height: var(--osdk-filter-tag-line-height);\n color: var(--osdk-filter-tag-color);\n}\n\n.tagRemove {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-tag-remove-color);\n font-size: var(--osdk-filter-tag-remove-font-size);\n line-height: 1;\n transition: color var(--osdk-filter-tag-remove-transition);\n\n &:hover {\n color: var(--osdk-filter-tag-remove-color-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useRef } from \"react\";\n\n// Preserves the last non-loading data value so filter inputs don't flash\n// blank during revalidation. @osdk/react hooks don't provide stale-while-\n// revalidate behavior natively, so this bridges the gap at the UI layer.\nexport function useStableData(data, isLoading) {\n const ref = useRef(data);\n if (!isLoading) {\n ref.current = data;\n }\n return ref.current;\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport { debounce } from \"lodash-es\";\nimport React, { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { createHistogramBuckets, getMaxBucketCount } from \"./createHistogramBuckets.js\";\nimport styles from \"./RangeInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\nconst DEBOUNCE_MS = 300;\nfunction RangeInputInner({\n valueCountPairs,\n isLoading,\n minValue,\n maxValue,\n onChange,\n showHistogram = true,\n className,\n style,\n config\n}) {\n const minInputId = useId();\n const maxInputId = useId();\n const [localMin, setLocalMin] = useState(config.formatValue(minValue));\n const [localMax, setLocalMax] = useState(config.formatValue(maxValue));\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const minValueRef = useRef(minValue);\n minValueRef.current = minValue;\n const maxValueRef = useRef(maxValue);\n maxValueRef.current = maxValue;\n const debouncedMinChange = useMemo(() => debounce(newValue => {\n const parsed = config.parseValue(newValue);\n onChangeRef.current(parsed, maxValueRef.current);\n }, DEBOUNCE_MS), [config]);\n const debouncedMaxChange = useMemo(() => debounce(newValue => {\n const parsed = config.parseValue(newValue);\n onChangeRef.current(minValueRef.current, parsed);\n }, DEBOUNCE_MS), [config]);\n useEffect(() => {\n setLocalMin(config.formatValue(minValue));\n debouncedMinChange.cancel();\n }, [minValue, config, debouncedMinChange]);\n useEffect(() => {\n setLocalMax(config.formatValue(maxValue));\n debouncedMaxChange.cancel();\n }, [maxValue, config, debouncedMaxChange]);\n useEffect(() => {\n return () => {\n debouncedMinChange.cancel();\n debouncedMaxChange.cancel();\n };\n }, [debouncedMinChange, debouncedMaxChange]);\n const displayPairs = useStableData(valueCountPairs, isLoading);\n const computedRange = useMemo(() => {\n if (displayPairs.length === 0) return {\n min: undefined,\n max: undefined\n };\n const min = displayPairs.reduce((acc, p) => Math.min(acc, config.toNumber(p.value)), Infinity);\n const max = displayPairs.reduce((acc, p) => Math.max(acc, config.toNumber(p.value)), -Infinity);\n return {\n min: config.fromNumber(min),\n max: config.fromNumber(max)\n };\n }, [displayPairs, config]);\n const dataRange = useMemo(() => ({\n dataMin: computedRange.min,\n dataMax: computedRange.max\n }), [computedRange.min, computedRange.max]);\n const buckets = useMemo(() => {\n if (!showHistogram || displayPairs.length === 0 || computedRange.min === undefined || computedRange.max === undefined) {\n return [];\n }\n return createHistogramBuckets(displayPairs, {\n min: computedRange.min,\n max: computedRange.max\n }, config.toNumber, config.fromNumber);\n }, [showHistogram, displayPairs, computedRange, config]);\n const maxBucketCount = useMemo(() => getMaxBucketCount(buckets), [buckets]);\n const handleMinChange = useCallback(e => {\n const newValue = e.target.value;\n setLocalMin(newValue);\n debouncedMinChange(newValue);\n }, [debouncedMinChange]);\n const handleMaxChange = useCallback(e => {\n const newValue = e.target.value;\n setLocalMax(newValue);\n debouncedMaxChange(newValue);\n }, [debouncedMaxChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.rangeInput, className),\n style: style,\n \"data-loading\": isLoading\n }, showHistogram && buckets.length === 0 && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No values available\"), showHistogram && buckets.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.histogramContainer\n }, buckets.map((bucket, index) => {\n const height = bucket.count / maxBucketCount * 100;\n const isInRange = (minValue === undefined || config.toNumber(bucket.max) >= config.toNumber(minValue)) && (maxValue === undefined || config.toNumber(bucket.min) <= config.toNumber(maxValue));\n return /*#__PURE__*/React.createElement(\"div\", {\n key: index,\n className: styles.histogramBar,\n \"data-in-range\": isInRange,\n style: {\n height: `${Math.max(height, 2)}%`\n },\n title: config.formatTooltip(bucket.min, bucket.max, bucket.count)\n });\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.rangeInputs\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.inputWrapper\n }, /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: minInputId,\n className: styles.inputLabel\n }, config.minLabel), /*#__PURE__*/React.createElement(Input, _extends({\n id: minInputId,\n type: config.inputType,\n className: styles.input,\n value: localMin,\n onChange: handleMinChange,\n placeholder: dataRange.dataMin !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMin) : undefined\n }, config.inputProps))), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.separator,\n \"aria-hidden\": \"true\"\n }, \"\\u2013\"), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.inputWrapper\n }, /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: maxInputId,\n className: styles.inputLabel\n }, config.maxLabel), /*#__PURE__*/React.createElement(Input, _extends({\n id: maxInputId,\n type: config.inputType,\n className: styles.input,\n value: localMax,\n onChange: handleMaxChange,\n placeholder: dataRange.dataMax !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMax) : undefined\n }, config.inputProps)))));\n}\nexport const RangeInput = /*#__PURE__*/memo(RangeInputInner);","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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, { memo } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport { RangeInput } from \"./RangeInput.js\";\nconst dateConfig = {\n inputType: \"date\",\n formatValue: formatDateForInput,\n parseValue: parseDateFromInput,\n toNumber: d => d.getTime(),\n fromNumber: t => new Date(t),\n minLabel: \"From\",\n maxLabel: \"To\",\n formatTooltip: (min, max, count) => `${formatDateForInput(min)} - ${formatDateForInput(max)}: ${count.toLocaleString()}`\n};\nfunction DateRangeInputInner(props) {\n return /*#__PURE__*/React.createElement(RangeInput, _extends({}, props, {\n config: dateConfig\n }));\n}\nexport const DateRangeInput = /*#__PURE__*/memo(DateRangeInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.linkedProperty {\n display: flex;\n flex-direction: column;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCheckboxRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n height: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n flex-shrink: 0;\n padding: var(--osdk-checkbox-padding);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-checkbox-border);\n\n &[data-unchecked] {\n background-color: var(--osdk-checkbox-bg);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-active);\n }\n }\n\n &[data-checked],\n &[data-indeterminate] {\n background-color: var(--osdk-checkbox-bg-checked);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-checked-active);\n }\n }\n\n &[data-excluding][data-checked] {\n background-color: var(--osdk-checkbox-bg-checked);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-checked-active);\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkCheckboxIndicator {\n color: var(--osdk-checkbox-checked-foreground);\n width: var(--osdk-checkbox-icon-size);\n height: var(--osdk-checkbox-icon-size);\n\n &[data-unchecked] {\n display: none;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Checkbox as BaseUICheckbox } from \"@base-ui/react/checkbox\";\nimport { Cross, Minus, Tick } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Checkbox.module.css\";\nexport function Checkbox({\n indeterminate,\n className,\n isExcluding,\n indicatorProps,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICheckbox.Root, _extends({\n className: classnames(styles.osdkCheckboxRoot, className),\n indeterminate: indeterminate,\n \"data-excluding\": isExcluding || undefined\n }, rest), /*#__PURE__*/React.createElement(BaseUICheckbox.Indicator, _extends({}, indicatorProps, {\n className: classnames(styles.osdkCheckboxIndicator, indicatorProps?.className)\n }), indeterminate ? /*#__PURE__*/React.createElement(Minus, {\n size: 16\n }) : isExcluding ? /*#__PURE__*/React.createElement(Cross, {\n size: 16\n }) : /*#__PURE__*/React.createElement(Tick, {\n size: 16\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.listogram {\n display: flex;\n flex-direction: column;\n transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.listogram[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .listogram {\n transition: none;\n }\n}\n\n.container {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-listogram-gap);\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-listogram-row-gap);\n padding: var(--osdk-filter-listogram-row-padding);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-filter-listogram-row-border-radius);\n text-align: left;\n width: 100%;\n transition: background-color var(--osdk-filter-listogram-row-transition);\n\n &:hover {\n background: var(--osdk-filter-listogram-row-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-listogram-row-focus-outline);\n outline-offset: var(--osdk-filter-listogram-row-focus-offset);\n }\n}\n\n.row[aria-pressed=\"true\"] {\n background: var(--osdk-filter-listogram-row-bg-active);\n}\n\n.label {\n flex: 1;\n font-family: var(--osdk-filter-listogram-label-font-family);\n font-size: var(--osdk-filter-listogram-label-font-size);\n color: var(--osdk-filter-listogram-label-color);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.label[data-excluding] {\n text-decoration: line-through;\n}\n\n.bar {\n width: var(--osdk-filter-listogram-bar-width);\n flex-shrink: 0;\n height: var(--osdk-filter-listogram-bar-height);\n background: var(--osdk-filter-listogram-bar-bg);\n border-radius: var(--osdk-filter-listogram-bar-border-radius);\n overflow: hidden;\n}\n\n.barFill {\n display: block;\n height: 100%;\n width: 100%;\n background: var(--osdk-filter-listogram-row-bar-color, var(--osdk-filter-listogram-bar-color));\n border-radius: var(--osdk-filter-listogram-bar-border-radius);\n transform-origin: left;\n transform: scaleX(var(--osdk-filter-listogram-bar-fill-scale, 0));\n transition: transform var(--osdk-filter-listogram-bar-fill-transition);\n}\n\n.row[aria-pressed=\"true\"] .barFill {\n background: var(--osdk-filter-listogram-row-bar-color, var(--osdk-filter-listogram-selected-color));\n}\n\n.viewAllButton {\n display: flex;\n align-items: center;\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: var(--osdk-filter-listogram-label-font-family);\n font-size: var(--osdk-filter-listogram-view-all-font-size);\n color: var(--osdk-filter-listogram-view-all-color);\n padding: var(--osdk-filter-listogram-row-padding);\n text-align: left;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-listogram-row-focus-outline);\n outline-offset: var(--osdk-filter-listogram-row-focus-offset);\n }\n}\n\n.checkbox {\n display: flex;\n}\n\n.count {\n font-family: var(--osdk-filter-listogram-count-font-family);\n font-size: var(--osdk-filter-listogram-count-font-size);\n font-variant-numeric: tabular-nums;\n color: var(--osdk-filter-listogram-count-color);\n min-width: 3ch;\n text-align: right;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.container {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-listogram-gap);\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-listogram-row-gap);\n padding: var(--osdk-filter-listogram-row-padding);\n}\n\n.flexBar {\n flex: 1;\n}\n","/*\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 { SkeletonBar } from \"../../../base-components/skeleton/SkeletonBar.js\";\nimport styles from \"./ListogramSkeleton.module.css\";\nconst SKELETON_ROWS = [{\n textWidth: \"50%\"\n}, {\n textWidth: \"35%\"\n}, {\n textWidth: \"60%\"\n}];\nexport function ListogramSkeleton() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, SKELETON_ROWS.map((row, index) => /*#__PURE__*/React.createElement(\"div\", {\n key: index,\n className: styles.row\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n height: \"var(--osdk-filter-skeleton-text-height)\",\n maxWidth: row.textWidth,\n className: styles.flexBar\n }), /*#__PURE__*/React.createElement(SkeletonBar, {\n width: \"var(--osdk-filter-listogram-bar-width)\",\n height: \"var(--osdk-filter-listogram-bar-height)\"\n }), /*#__PURE__*/React.createElement(SkeletonBar, {\n width: \"var(--osdk-filter-skeleton-count-width)\",\n height: \"var(--osdk-filter-skeleton-text-height)\"\n }))));\n}","/*\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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport { filterValuesBySearch } from \"../../utils/filterValues.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport { ListogramSkeleton } from \"./ListogramSkeleton.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\nfunction ListogramInputInner({\n values,\n maxCount,\n isLoading,\n error,\n selectedValues,\n onChange,\n colorMap,\n displayMode = \"full\",\n isExcluding,\n className,\n style,\n maxVisibleItems,\n searchQuery\n}) {\n const [isExpanded, setIsExpanded] = useState(false);\n const stableValues = useStableData(values, isLoading);\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n const toggleValue = useCallback(value => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter(v => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n }, [selectedValues, selectedSet, onChange]);\n const filteredValues = useMemo(() => {\n if (searchQuery) {\n return filterValuesBySearch(stableValues, searchQuery, v => v.value);\n }\n return stableValues;\n }, [stableValues, searchQuery]);\n const sortedValues = useMemo(() => {\n const selected = filteredValues.filter(v => selectedSet.has(v.value));\n const unselected = filteredValues.filter(v => !selectedSet.has(v.value));\n return [...selected, ...unselected];\n }, [filteredValues, selectedSet]);\n const displayValues = useMemo(() => {\n if (isExpanded || !maxVisibleItems) return sortedValues;\n return sortedValues.slice(0, maxVisibleItems);\n }, [sortedValues, maxVisibleItems, isExpanded]);\n const hasMore = maxVisibleItems != null && sortedValues.length > maxVisibleItems;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.listogram, className),\n style: style,\n \"data-loading\": isLoading && filteredValues.length > 0\n }, error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading values: \", error.message), !error && filteredValues.length === 0 && isLoading && /*#__PURE__*/React.createElement(ListogramSkeleton, null), !error && filteredValues.length === 0 && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No values available\"), filteredValues.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, displayValues.map(({\n value,\n count\n }) => {\n const percentage = maxCount > 0 ? count / maxCount * 100 : 0;\n const perRowColor = colorMap?.[value];\n return /*#__PURE__*/React.createElement(Button, {\n key: value,\n className: styles.row,\n onClick: () => toggleValue(value),\n \"aria-pressed\": selectedSet.has(value),\n style: perRowColor || percentage > 0 ? {\n \"--osdk-filter-listogram-bar-fill-scale\": percentage / 100,\n ...(perRowColor ? {\n \"--osdk-filter-listogram-row-bar-color\": perRowColor\n } : undefined)\n } : undefined\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.checkbox,\n onClick: e => e.stopPropagation()\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: selectedSet.has(value),\n onCheckedChange: () => toggleValue(value),\n isExcluding: isExcluding\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.label,\n \"data-excluding\": isExcluding && selectedSet.has(value) || undefined\n }, value), displayMode !== \"minimal\" && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count\n }, count.toLocaleString()), displayMode === \"full\" && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.bar\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.barFill\n })));\n }), hasMore && !isExpanded && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.viewAllButton,\n onClick: () => setIsExpanded(true)\n }, \"View all (\", sortedValues.length, \")\")));\n}\nexport const ListogramInput = /*#__PURE__*/memo(ListogramInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.multiDate {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-multiselect-gap);\n}\n\n.clearAll {\n font-family: var(--osdk-filter-date-clear-font-family);\n font-size: var(--osdk-filter-date-clear-font-size);\n color: var(--osdk-filter-date-clear-color);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: var(--osdk-filter-date-clear-padding);\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.calendarContainer {\n display: flex;\n}\n\n.input {\n flex: 1;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-timeline-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport styles from \"./MultiDateInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nfunction MultiDateInputInner({\n selectedDates,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n showClearAll = true\n}) {\n const addDate = useCallback(date => {\n const dateStr = formatDateForInput(date);\n const exists = selectedDates.some(d => formatDateForInput(d) === dateStr);\n if (!exists) {\n onChange([...selectedDates, date].sort((a, b) => a.getTime() - b.getTime()));\n }\n }, [selectedDates, onChange]);\n const removeDate = useCallback(date => {\n const dateStr = formatDateForInput(date);\n onChange(selectedDates.filter(d => formatDateForInput(d) !== dateStr));\n }, [selectedDates, onChange]);\n const clearAll = useCallback(() => {\n onChange([]);\n }, [onChange]);\n const handleDateChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n if (date) {\n addDate(date);\n e.target.value = \"\";\n }\n }, [addDate]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.multiDate, className),\n style: style\n }, selectedDates.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.tagContainer\n }, selectedDates.map(date => /*#__PURE__*/React.createElement(\"span\", {\n key: date.toISOString(),\n className: sharedStyles.tag\n }, formatDateForDisplay(date), /*#__PURE__*/React.createElement(Button, {\n className: sharedStyles.tagRemove,\n onClick: () => removeDate(date),\n \"aria-label\": `Remove ${formatDateForDisplay(date)}`\n }, \"\\xD7\"))), showClearAll && selectedDates.length > 1 && /*#__PURE__*/React.createElement(Button, {\n className: styles.clearAll,\n onClick: clearAll,\n \"aria-label\": \"Clear all dates\"\n }, \"Clear all\")), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarContainer\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n onChange: handleDateChange,\n min: minDate ? formatDateForInput(minDate) : undefined,\n max: maxDate ? formatDateForInput(maxDate) : undefined,\n \"aria-label\": \"Add date\"\n })));\n}\nexport const MultiDateInput = /*#__PURE__*/memo(MultiDateInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkComboboxInputWrapper {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--osdk-combobox-spacing, var(--osdk-surface-spacing));\n width: 100%;\n min-height: var(--osdk-combobox-min-height, 30px);\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-combobox-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-combobox-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-combobox-input-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n transition: border-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:focus-within {\n border-color: var(\n --osdk-combobox-focus-border-color,\n var(--osdk-intent-primary-rest)\n );\n outline: var(--osdk-combobox-focus-width, var(--osdk-emphasis-focus-width))\n solid var(--osdk-combobox-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(\n --osdk-combobox-focus-offset,\n var(--osdk-emphasis-focus-offset)\n );\n }\n}\n\n.osdkComboboxSearchIcon {\n flex-shrink: 0;\n color: var(--osdk-combobox-icon-color, var(--osdk-iconography-color-muted));\n}\n\n.osdkComboboxInput {\n flex: 1;\n min-width: 0;\n width: 100%;\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-combobox-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-combobox-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-combobox-input-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n transition: border-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:focus {\n border-color: var(\n --osdk-combobox-focus-border-color,\n var(--osdk-intent-primary-rest)\n );\n outline: none;\n }\n\n .osdkComboboxInputWrapper & {\n padding: 0;\n border: none;\n border-radius: 0;\n background: transparent;\n\n &:focus {\n border-color: unset;\n outline: none;\n outline-offset: unset;\n }\n }\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-combobox-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-combobox-input-color,\n var(--osdk-typography-color-default-rest)\n );\n outline: none;\n\n &::placeholder {\n color: var(\n --osdk-combobox-placeholder-color,\n var(--osdk-typography-color-muted)\n );\n }\n}\n\n.osdkComboboxPositioner {\n z-index: var(--osdk-combobox-z-index, var(--osdk-surface-z-index-3));\n}\n\n.osdkComboboxPopup {\n display: flex;\n flex-direction: column;\n min-width: var(--anchor-width);\n max-height: var(--available-height);\n overflow-y: auto;\n padding: calc(\n var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5\n );\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-combobox-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-combobox-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-combobox-popup-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n box-shadow: var(--osdk-combobox-popup-shadow, var(--osdk-surface-shadow-2));\n}\n\n.osdkComboboxItem {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5);\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n cursor: pointer;\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-combobox-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-combobox-item-color,\n var(--osdk-typography-color-default-rest)\n );\n transition: background-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-highlighted] {\n background-color: var(\n --osdk-combobox-item-bg-highlighted,\n var(--osdk-surface-background-color-default-hover)\n );\n outline: none;\n }\n\n &[data-selected] {\n background-color: var(\n --osdk-combobox-item-bg-selected,\n var(--osdk-surface-layer-primary)\n );\n color: var(\n --osdk-combobox-item-color-selected,\n var(--osdk-intent-primary-rest)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n}\n\n.osdkComboboxItemIndicator {\n display: flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 4);\n flex-shrink: 0;\n color: var(--osdk-combobox-item-color-selected, var(--osdk-intent-primary-rest));\n visibility: hidden;\n\n &[data-selected] {\n visibility: visible;\n }\n}\n\n.osdkComboboxChips {\n display: flex;\n flex-wrap: wrap;\n gap: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5);\n margin-bottom: calc(\n var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2\n );\n}\n\n.osdkComboboxChip {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-combobox-spacing, var(--osdk-surface-spacing));\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 0.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n background-color: var(\n --osdk-combobox-chip-bg,\n var(--osdk-surface-background-color-default-hover)\n );\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-chip-font-size,\n var(--osdk-typography-size-body-small)\n );\n line-height: var(\n --osdk-combobox-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-combobox-chip-color,\n var(--osdk-typography-color-default-rest)\n );\n}\n\n.osdkComboboxChipRemove {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(\n --osdk-combobox-chip-remove-color,\n var(--osdk-iconography-color-muted)\n );\n transition: color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n color: var(\n --osdk-combobox-chip-remove-color-hover,\n var(--osdk-typography-color-default-rest)\n );\n }\n}\n\n.osdkComboboxClear {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: calc(\n var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 0.5\n );\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-combobox-clear-color, var(--osdk-iconography-color-muted));\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n transition:\n color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default)),\n background-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n color: var(\n --osdk-combobox-clear-color-hover,\n var(--osdk-typography-color-default-rest)\n );\n background-color: var(\n --osdk-combobox-clear-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n }\n}\n\n.osdkComboboxList {\n display: flex;\n flex-direction: column;\n}\n\n.osdkComboboxEmpty {\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 3)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n text-align: center;\n color: var(--osdk-combobox-empty-color, var(--osdk-typography-color-muted));\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-font-size,\n var(--osdk-typography-size-body-medium)\n );\n\n &:empty {\n display: none;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Combobox as BaseUICombobox } from \"@base-ui/react/combobox\";\nimport { Cross, Search, Tick } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Combobox.module.css\";\nfunction ComboboxSearchInput({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkComboboxInputWrapper, className)\n }, /*#__PURE__*/React.createElement(Search, {\n className: styles.osdkComboboxSearchIcon\n }), /*#__PURE__*/React.createElement(BaseUICombobox.Input, _extends({\n className: styles.osdkComboboxInput\n }, rest)));\n}\nfunction ComboboxInput({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Input, _extends({\n className: classnames(styles.osdkComboboxInput, className)\n }, rest));\n}\nfunction ComboboxPositioner({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Positioner, _extends({\n className: classnames(styles.osdkComboboxPositioner, className),\n sideOffset: 4\n }, rest), children);\n}\nfunction ComboboxPopup({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Popup, _extends({\n className: classnames(styles.osdkComboboxPopup, className)\n }, rest), children);\n}\nfunction ComboboxItem({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Item, _extends({\n className: classnames(styles.osdkComboboxItem, className)\n }, rest), children);\n}\nfunction ComboboxChips({\n children,\n className\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Chips, {\n render: props => /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: classnames(styles.osdkComboboxInputWrapper, className)\n }), props.children)\n }, children);\n}\nfunction ComboboxChip({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Chip, _extends({\n className: classnames(styles.osdkComboboxChip, className)\n }, rest), children);\n}\nfunction ComboboxChipRemove({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.ChipRemove, _extends({\n className: classnames(styles.osdkComboboxChipRemove, className),\n \"aria-label\": \"Remove\"\n }, rest), /*#__PURE__*/React.createElement(Cross, null));\n}\nfunction ComboboxClear({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Clear, _extends({\n className: classnames(styles.osdkComboboxClear, className),\n \"aria-label\": \"Clear all\"\n }, rest), /*#__PURE__*/React.createElement(Cross, null));\n}\nfunction ComboboxEmpty({\n children,\n className\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Empty, {\n className: classnames(styles.osdkComboboxEmpty, className)\n }, children);\n}\nfunction ComboboxList({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.List, _extends({\n className: classnames(styles.osdkComboboxList, className)\n }, rest), children);\n}\nfunction ComboboxItemIndicator({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.ItemIndicator, _extends({\n className: classnames(styles.osdkComboboxItemIndicator, className),\n keepMounted: true\n }, rest), children ?? /*#__PURE__*/React.createElement(Tick, {\n size: 16\n }));\n}\nexport const Combobox = {\n Root: BaseUICombobox.Root,\n SearchInput: ComboboxSearchInput,\n Input: ComboboxInput,\n Portal: BaseUICombobox.Portal,\n Positioner: ComboboxPositioner,\n Popup: ComboboxPopup,\n List: ComboboxList,\n Item: ComboboxItem,\n ItemIndicator: ComboboxItemIndicator,\n Chips: ComboboxChips,\n Chip: ComboboxChip,\n ChipRemove: ComboboxChipRemove,\n Clear: ComboboxClear,\n Empty: ComboboxEmpty,\n Value: BaseUICombobox.Value\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.multiSelect {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-multiselect-gap);\n}\n\n.itemLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.itemCount {\n font-family: var(--osdk-filter-multiselect-count-font-family);\n font-size: var(--osdk-filter-multiselect-count-font-size);\n font-variant-numeric: tabular-nums;\n color: var(--osdk-filter-multiselect-count-color);\n flex-shrink: 0;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport styles from \"./MultiSelectInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nfunction MultiSelectInputInner({\n values,\n isLoading,\n error,\n selectedValues,\n onChange,\n className,\n style,\n placeholder = \"Select values...\",\n ariaLabel = \"Search values\"\n}) {\n const handleValueChange = useCallback(newValues => {\n onChange(newValues ?? []);\n }, [onChange]);\n const items = useMemo(() => values.map(({\n value\n }) => value), [values]);\n const countByValue = useMemo(() => new Map(values.map(({\n value,\n count\n }) => [value, count])), [values]);\n const renderItem = useCallback(value => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, value), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", (countByValue.get(value) ?? 0).toLocaleString(), \")\")), [countByValue]);\n const renderChips = useCallback(selectedItems => /*#__PURE__*/React.createElement(React.Fragment, null, selectedItems.map(value => /*#__PURE__*/React.createElement(Combobox.Chip, {\n key: value,\n \"aria-label\": value\n }, value, /*#__PURE__*/React.createElement(Combobox.ChipRemove, null))), /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: selectedItems.length > 0 ? \"\" : placeholder,\n \"aria-label\": ariaLabel\n })), [placeholder, ariaLabel]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.multiSelect, className),\n style: style,\n \"data-loading\": isLoading\n }, error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), !error && values.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, isLoading ? \"Loading options...\" : \"No options available\"), (values.length > 0 || isLoading) && /*#__PURE__*/React.createElement(Combobox.Root, {\n multiple: true,\n value: selectedValues,\n onValueChange: handleValueChange,\n items: items\n }, isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.loadingMessage\n }, \"Updating...\"), /*#__PURE__*/React.createElement(Combobox.Chips, null, /*#__PURE__*/React.createElement(Combobox.Value, null, renderChips)), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem))))));\n}\nexport const MultiSelectInput = /*#__PURE__*/memo(MultiSelectInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.nullWrapper {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-null-wrapper-gap);\n}\n\n.nullValueRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--osdk-filter-null-row-padding);\n border-top: var(--osdk-filter-null-row-border-top);\n}\n\n.nullLabel {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-null-label-gap);\n cursor: pointer;\n}\n\n.nullLabelText {\n font-family: var(--osdk-filter-null-label-font-family);\n font-size: var(--osdk-filter-null-label-font-size);\n line-height: var(--osdk-filter-null-label-line-height);\n color: var(--osdk-filter-null-label-color);\n}\n\n.count {\n font-family: var(--osdk-filter-null-count-font-family);\n font-size: var(--osdk-filter-null-count-font-size);\n font-variant-numeric: tabular-nums;\n color: var(--osdk-filter-null-count-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport styles from \"./NullValueWrapper.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nfunction NullValueWrapperInner({\n nullCount,\n isLoading,\n error,\n includeNull = false,\n onIncludeNullChange,\n showNullCount = true,\n children,\n className,\n style\n}) {\n const handleToggle = useCallback(() => {\n onIncludeNullChange(!includeNull);\n }, [includeNull, onIncludeNullChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.nullWrapper, className),\n style: style\n }, children, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.nullValueRow,\n \"data-checked\": includeNull,\n \"data-loading\": isLoading\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.nullLabel\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: includeNull,\n onCheckedChange: handleToggle\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.nullLabelText\n }, \"No value\")), showNullCount && !error && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count\n }, nullCount.toLocaleString())), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Failed to load null count\"));\n}\nexport const NullValueWrapper = /*#__PURE__*/memo(NullValueWrapperInner);","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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, { memo } from \"react\";\nimport { RangeInput } from \"./RangeInput.js\";\nfunction formatNumber(value) {\n return value !== undefined ? String(value) : \"\";\n}\nfunction parseNumber(value) {\n if (value === \"\") return undefined;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? undefined : parsed;\n}\nconst numberConfig = {\n inputType: \"number\",\n formatValue: formatNumber,\n parseValue: parseNumber,\n toNumber: v => v,\n fromNumber: v => v,\n minLabel: \"Min\",\n maxLabel: \"Max\",\n formatTooltip: (min, max, count) => `${min.toFixed(1)} - ${max.toFixed(1)}: ${count.toLocaleString()}`,\n formatPlaceholder: value => value.toFixed(0),\n inputProps: {\n step: \"any\"\n }\n};\nfunction NumberRangeInputInner(props) {\n return /*#__PURE__*/React.createElement(RangeInput, _extends({}, props, {\n config: numberConfig\n }));\n}\nexport const NumberRangeInput = /*#__PURE__*/memo(NumberRangeInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.singleDate {\n display: flex;\n flex-direction: column;\n}\n\n.dateContainer {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-select-container-gap);\n}\n\n.input {\n flex: 1;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-timeline-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.clearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-input-clear-padding);\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-input-icon-color);\n border-radius: var(--osdk-filter-input-clear-border-radius);\n transition: background-color var(--osdk-filter-input-transition);\n\n &:hover {\n background: var(--osdk-filter-input-clear-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-input-clear-bg-active);\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport styles from \"./SingleDateInput.module.css\";\nfunction SingleDateInputInner({\n selectedDate,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n placeholder = \"Select a date...\",\n showClearButton = true\n}) {\n const handleChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n onChange(date);\n }, [onChange]);\n const handleClear = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.singleDate, className),\n style: style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.dateContainer\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n value: formatDateForInput(selectedDate),\n onChange: handleChange,\n min: minDate ? formatDateForInput(minDate) : undefined,\n max: maxDate ? formatDateForInput(maxDate) : undefined,\n placeholder: placeholder,\n \"aria-label\": \"Select date\"\n }), showClearButton && selectedDate !== undefined && /*#__PURE__*/React.createElement(Button, {\n className: styles.clearButton,\n onClick: handleClear,\n \"aria-label\": \"Clear date\"\n }, \"\\xD7\")));\n}\nexport const SingleDateInput = /*#__PURE__*/memo(SingleDateInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.singleSelect {\n display: flex;\n flex-direction: column;\n}\n\n.selectContainer {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-select-container-gap);\n position: relative;\n}\n\n.clearButton {\n flex-shrink: 0;\n}\n\n.itemLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.itemCount {\n font-variant-numeric: tabular-nums;\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./SingleSelectInput.module.css\";\nfunction SingleSelectInputInner({\n values,\n isLoading,\n error,\n selectedValue,\n onChange,\n className,\n style,\n placeholder = \"Select a value...\",\n showClearButton = true,\n showCounts = false,\n ariaLabel = \"Select value\"\n}) {\n const handleValueChange = useCallback(value => {\n onChange(value ?? undefined);\n }, [onChange]);\n const items = useMemo(() => values.map(({\n value\n }) => value), [values]);\n const countByValue = useMemo(() => new Map(values.map(({\n value,\n count\n }) => [value, count])), [values]);\n const renderItem = useCallback(value => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, value), showCounts && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", (countByValue.get(value) ?? 0).toLocaleString(), \")\")), [countByValue, showCounts]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.singleSelect, className),\n style: style,\n \"data-loading\": isLoading\n }, isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.loadingMessage\n }, \"Loading options...\"), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), !isLoading && !error && values.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No options available\"), (values.length > 0 || isLoading) && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.selectContainer\n }, /*#__PURE__*/React.createElement(Combobox.Root, {\n value: selectedValue ?? null,\n onValueChange: handleValueChange,\n items: items\n }, /*#__PURE__*/React.createElement(Combobox.SearchInput, {\n placeholder: placeholder,\n \"aria-label\": ariaLabel\n }), showClearButton && selectedValue !== undefined && /*#__PURE__*/React.createElement(Combobox.Clear, {\n className: styles.clearButton\n }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem)))))));\n}\nexport const SingleSelectInput = /*#__PURE__*/memo(SingleSelectInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.textTags {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-texttags-gap);\n}\n\n.input {\n flex: 1;\n}\n","/*\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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./TextTagsInput.module.css\";\nconst TAG_SEPARATOR_PATTERN = /[,\\n]/;\nconst TagItem = /*#__PURE__*/memo(function TagItem({\n tag,\n onRemove\n}) {\n const handleRemove = useCallback(() => {\n onRemove(tag);\n }, [tag, onRemove]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.tag\n }, tag, /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: sharedStyles.tagRemove,\n onClick: handleRemove,\n \"aria-label\": `Remove ${tag}`\n }, \"\\xD7\"));\n});\nfunction TextTagsInputInner({\n suggestions,\n isLoading,\n error,\n tags,\n onChange,\n className,\n style,\n placeholder = \"Add a tag...\",\n allowCustomTags = true,\n suggestionLimit = 10,\n ariaLabel = \"Add tag\"\n}) {\n const [inputValue, setInputValue] = useState(\"\");\n const filteredSuggestions = useMemo(() => {\n if (!suggestionLimit) return [];\n const lowerInput = inputValue.toLowerCase();\n return suggestions.filter(s => (!inputValue.trim() || s.value.toLowerCase().includes(lowerInput)) && !tags.includes(s.value)).slice(0, suggestionLimit);\n }, [suggestions, inputValue, tags, suggestionLimit]);\n const addTag = useCallback(tag => {\n const trimmedTag = tag.trim();\n if (trimmedTag && !tags.includes(trimmedTag)) {\n onChange([...tags, trimmedTag]);\n }\n setInputValue(\"\");\n }, [tags, onChange]);\n const removeTag = useCallback(tag => {\n onChange(tags.filter(t => t !== tag));\n }, [tags, onChange]);\n const handleValueChange = useCallback(newTags => {\n onChange(newTags ?? []);\n }, [onChange]);\n const handleInputValueChange = useCallback(value => {\n setInputValue(value);\n }, []);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" && inputValue.trim()) {\n if (filteredSuggestions.length > 0) {\n return;\n }\n e.preventDefault();\n if (allowCustomTags) {\n addTag(inputValue);\n }\n } else if (e.key === \"Backspace\" && !inputValue && tags.length > 0) {\n removeTag(tags[tags.length - 1]);\n }\n }, [inputValue, tags, addTag, removeTag, allowCustomTags, filteredSuggestions]);\n const handlePaste = useCallback(e => {\n const pastedText = e.clipboardData.getData(\"text\");\n if (TAG_SEPARATOR_PATTERN.test(pastedText)) {\n e.preventDefault();\n const newTags = pastedText.split(TAG_SEPARATOR_PATTERN).map(t => t.trim()).filter(t => t && !tags.includes(t));\n if (newTags.length > 0) {\n onChange([...tags, ...newTags]);\n }\n }\n }, [tags, onChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.textTags, className),\n style: style,\n \"data-loading\": isLoading\n }, error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading suggestions: \", error.message), /*#__PURE__*/React.createElement(Combobox.Root, {\n multiple: true,\n value: tags,\n onValueChange: handleValueChange,\n inputValue: inputValue,\n onInputValueChange: handleInputValueChange\n }, tags.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.tagContainer\n }, tags.map(tag => /*#__PURE__*/React.createElement(TagItem, {\n key: tag,\n tag: tag,\n onRemove: removeTag\n }))), /*#__PURE__*/React.createElement(Combobox.SearchInput, {\n className: styles.input,\n placeholder: tags.length > 0 ? \"\" : placeholder,\n onKeyDown: handleKeyDown,\n onPaste: handlePaste,\n \"aria-label\": ariaLabel\n }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, filteredSuggestions.length === 0 ? allowCustomTags && inputValue.trim() ? /*#__PURE__*/React.createElement(Combobox.Empty, null, \"Press Enter to add \\\"\", inputValue, \"\\\"\") : /*#__PURE__*/React.createElement(Combobox.Empty, null, suggestionLimit ? \"No suggestions\" : \"Type to add a tag\") : filteredSuggestions.map(({\n value,\n count\n }) => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value\n }, value, \" (\", count.toLocaleString(), \")\")))))), isLoading && !!suggestionLimit && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.loadingMessage\n }, \"Loading suggestions...\"));\n}\nexport const TextTagsInput = /*#__PURE__*/memo(TextTagsInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.timeline {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-range-gap);\n}\n\n.labels {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-timeline-labels-gap);\n font-family: var(--osdk-filter-timeline-labels-font-family);\n font-size: var(--osdk-filter-timeline-labels-font-size);\n color: var(--osdk-filter-timeline-labels-color);\n}\n\n.clearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-timeline-button-padding);\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-timeline-button-color);\n border-radius: var(--osdk-filter-timeline-button-border-radius);\n margin-left: auto;\n\n &:hover {\n background: var(--osdk-filter-timeline-button-bg-hover);\n color: var(--osdk-filter-timeline-button-color-hover);\n }\n}\n\n.brush {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-timeline-labels-gap);\n}\n\n.brush span {\n color: var(--osdk-filter-timeline-brush-color);\n}\n\n.input {\n flex: 1;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-timeline-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport styles from \"./TimelineInput.module.css\";\nfunction TimelineInputInner({\n startDate,\n endDate,\n onChange,\n className,\n minDate,\n maxDate\n}) {\n const handleStartChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n onChange(date, endDate);\n }, [onChange, endDate]);\n const handleEndChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n onChange(startDate, date);\n }, [onChange, startDate]);\n const handleClear = useCallback(() => {\n onChange(undefined, undefined);\n }, [onChange]);\n const startInputMax = useMemo(() => endDate ?? maxDate, [endDate, maxDate]);\n const endInputMin = useMemo(() => startDate ?? minDate, [startDate, minDate]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.timeline, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.labels\n }, /*#__PURE__*/React.createElement(\"span\", null, formatDateForDisplay(startDate, \"—\")), /*#__PURE__*/React.createElement(\"span\", null, \"to\"), /*#__PURE__*/React.createElement(\"span\", null, formatDateForDisplay(endDate, \"—\")), (startDate || endDate) && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n onClick: handleClear,\n \"aria-label\": \"Clear range\",\n className: styles.clearButton\n }, \"\\xD7\")), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.brush\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n value: formatDateForInput(startDate),\n onChange: handleStartChange,\n min: minDate ? formatDateForInput(minDate) : undefined,\n max: startInputMax ? formatDateForInput(startInputMax) : undefined,\n \"aria-label\": \"Start date\"\n }), /*#__PURE__*/React.createElement(\"span\", null, \"\\u2014\"), /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n value: formatDateForInput(endDate),\n onChange: handleEndChange,\n min: endInputMin ? formatDateForInput(endInputMin) : undefined,\n max: maxDate ? formatDateForInput(maxDate) : undefined,\n \"aria-label\": \"End date\"\n })));\n}\nexport const TimelineInput = /*#__PURE__*/memo(TimelineInputInner);","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport { useMemo } from \"react\";\nexport function usePropertyAggregation(objectType, propertyKey, objectSet, options) {\n // AggregateOpts requires specific property keys from Q, but we're dynamically\n // using propertyKey. The cast is unavoidable for this dynamic filter pattern.\n const aggregateOptions = useMemo(() => ({\n $select: {\n $count: \"unordered\"\n },\n $groupBy: {\n [propertyKey]: {\n $exact: {\n $includeNullValue: true\n }\n }\n }\n }), [propertyKey]);\n const aggregationArgs = useMemo(() => objectSet != null ? {\n aggregate: aggregateOptions,\n where: options?.where,\n objectSet\n } : {\n aggregate: aggregateOptions,\n where: options?.where\n }, [aggregateOptions, options?.where, objectSet]);\n const {\n data: countData,\n isLoading,\n error\n } = useOsdkAggregation(objectType, aggregationArgs);\n const result = useMemo(() => {\n if (!countData) {\n return {\n data: [],\n maxCount: 0\n };\n }\n const values = [];\n let maxCount = 0;\n\n // The aggregation result type varies by query structure. Since we're building\n // the query dynamically based on propertyKey, we cast to a known shape that\n // matches the $groupBy + $count aggregation pattern.\n const dataArray = countData;\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n const count = item.$count ?? 0;\n if (rawValue == null) {\n values.push({\n value: \"\",\n count,\n isNull: true\n });\n } else {\n values.push({\n value: String(rawValue),\n count\n });\n }\n maxCount = Math.max(maxCount, count);\n }\n const sortBy = options?.sortBy ?? \"count\";\n if (sortBy === \"count\") {\n values.sort((a, b) => b.count - a.count || a.value.localeCompare(b.value));\n } else {\n values.sort((a, b) => a.value.localeCompare(b.value));\n }\n if (options?.limit && values.length > options.limit) {\n return {\n data: values.slice(0, options.limit),\n maxCount\n };\n }\n return {\n data: values,\n maxCount\n };\n }, [countData, propertyKey, options?.limit, options?.sortBy]);\n return {\n data: result.data,\n maxCount: result.maxCount,\n isLoading,\n error: error ?? null\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function createGroupByAggregateOptions(propertyKey) {\n return {\n $select: {\n $count: \"unordered\"\n },\n $groupBy: {\n [propertyKey]: \"exact\"\n }\n };\n}\nexport function createNullCountAggregateOptions() {\n return {\n $select: {\n $count: \"unordered\"\n }\n };\n}\n\n/** Shape returned by $groupBy + $count aggregations when iterated. */\n\nexport function createNullWhereClause(propertyKey) {\n return {\n [propertyKey]: {\n $isNull: true\n }\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a filter value to a string for display.\n * Returns undefined if the value is undefined.\n */\nexport function coerceToString(value) {\n if (value === undefined) return undefined;\n return String(value);\n}\n\n/**\n * Coerces an array of filter values to string[] for display.\n */\nexport function coerceToStringArray(values) {\n if (values === undefined) return [];\n return values.map(v => String(v));\n}","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport { DateRangeInput } from \"../base/inputs/DateRangeInput.js\";\nimport styles from \"../base/inputs/LinkedPropertyInput.module.css\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { TimelineInput } from \"../base/inputs/TimelineInput.js\";\nimport { ToggleInput } from \"../base/inputs/ToggleInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nimport { coerceToString, coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction LinkedPropertyInputInner({\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n className,\n style\n}) {\n const linkedObjectSet = useMemo(() => objectSet.pivotTo(definition.linkName), [objectSet, definition.linkName]);\n const linkedObjectType = linkedObjectSet.$objectSetInternals.def;\n const linkedPropertyKey = definition.linkedPropertyKey;\n const innerState = filterState?.type === \"linkedProperty\" ? filterState.linkedFilterState : undefined;\n const isExcluding = innerState?.isExcluding ?? false;\n const includeNull = innerState?.includeNull;\n const wrappedOnChange = useCallback(innerFilterState => {\n onFilterStateChanged({\n type: \"linkedProperty\",\n linkedFilterState: innerFilterState\n });\n }, [onFilterStateChanged]);\n const onSelectChange = useCallback(selectedValues => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues,\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onSingleSelectChange = useCallback(selectedValue => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: selectedValue !== undefined ? [selectedValue] : [],\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onContainsTextChange = useCallback(value => {\n wrappedOnChange({\n type: \"CONTAINS_TEXT\",\n value\n });\n }, [wrappedOnChange]);\n const onToggleChange = useCallback(enabled => {\n wrappedOnChange({\n type: \"TOGGLE\",\n enabled\n });\n }, [wrappedOnChange]);\n const onNumberRangeChange = useCallback((minValue, maxValue) => {\n wrappedOnChange({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [wrappedOnChange, includeNull]);\n const onDateRangeChange = useCallback((minValue, maxValue) => {\n wrappedOnChange({\n type: \"DATE_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [wrappedOnChange, includeNull]);\n const onExactMatchChange = useCallback(values => {\n wrappedOnChange({\n type: \"EXACT_MATCH\",\n values,\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onDateSelectChange = useCallback(date => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: date !== undefined ? [date] : [],\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onMultiDateChange = useCallback(dates => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: dates\n });\n }, [wrappedOnChange]);\n const onTimelineChange = useCallback((start, end) => {\n wrappedOnChange({\n type: \"TIMELINE\",\n startDate: start,\n endDate: end,\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onNullChange = useCallback(newIncludeNull => {\n if (innerState?.type === \"NUMBER_RANGE\") {\n wrappedOnChange({\n ...innerState,\n includeNull: newIncludeNull\n });\n } else if (innerState?.type === \"DATE_RANGE\") {\n wrappedOnChange({\n ...innerState,\n includeNull: newIncludeNull\n });\n } else {\n wrappedOnChange({\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: newIncludeNull\n });\n }\n }, [wrappedOnChange, innerState]);\n const content = (() => {\n switch (definition.linkedFilterComponent) {\n case \"MULTI_SELECT\":\n {\n const values = innerState?.type === \"SELECT\" ? coerceToStringArray(innerState.selectedValues) : [];\n return /*#__PURE__*/React.createElement(LinkedMultiSelectInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: values,\n onChange: onSelectChange\n });\n }\n case \"SINGLE_SELECT\":\n {\n const value = innerState?.type === \"SELECT\" ? coerceToString(innerState.selectedValues[0]) : undefined;\n return /*#__PURE__*/React.createElement(LinkedSingleSelectInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValue: value,\n onChange: onSingleSelectChange\n });\n }\n case \"CONTAINS_TEXT\":\n {\n const value = innerState?.type === \"CONTAINS_TEXT\" ? innerState.value : undefined;\n return /*#__PURE__*/React.createElement(ContainsTextInput, {\n value: value,\n onChange: onContainsTextChange,\n placeholder: `Search ${String(definition.linkedPropertyKey)}...`\n });\n }\n case \"TOGGLE\":\n {\n const enabled = innerState?.type === \"TOGGLE\" ? innerState.enabled : false;\n return /*#__PURE__*/React.createElement(ToggleInput, {\n enabled: enabled,\n onChange: onToggleChange\n });\n }\n case \"NUMBER_RANGE\":\n {\n const nr = innerState?.type === \"NUMBER_RANGE\" ? innerState : undefined;\n return /*#__PURE__*/React.createElement(LinkedNumberRangeInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n minValue: nr?.minValue,\n maxValue: nr?.maxValue,\n includeNull: nr?.includeNull,\n onChange: onNumberRangeChange,\n onNullChange: onNullChange\n });\n }\n case \"DATE_RANGE\":\n {\n const dr = innerState?.type === \"DATE_RANGE\" ? innerState : undefined;\n return /*#__PURE__*/React.createElement(LinkedDateRangeInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n minValue: dr?.minValue,\n maxValue: dr?.maxValue,\n includeNull: dr?.includeNull,\n onChange: onDateRangeChange,\n onNullChange: onNullChange\n });\n }\n case \"LISTOGRAM\":\n {\n const exactState = innerState?.type === \"EXACT_MATCH\" ? innerState : undefined;\n const selectedValues = exactState ? coerceToStringArray(exactState.values) : [];\n return /*#__PURE__*/React.createElement(LinkedListogramInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: selectedValues,\n onChange: onExactMatchChange,\n searchQuery: searchQuery\n });\n }\n case \"TEXT_TAGS\":\n {\n const exactState = innerState?.type === \"EXACT_MATCH\" ? innerState : undefined;\n const tags = exactState ? coerceToStringArray(exactState.values) : [];\n return /*#__PURE__*/React.createElement(LinkedTextTagsInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n tags: tags,\n onChange: onExactMatchChange\n });\n }\n case \"SINGLE_DATE\":\n {\n const selectedDate = innerState?.type === \"SELECT\" ? innerState.selectedValues[0] instanceof Date ? innerState.selectedValues[0] : undefined : undefined;\n return /*#__PURE__*/React.createElement(SingleDateInput, {\n selectedDate: selectedDate,\n onChange: onDateSelectChange,\n showClearButton: true\n });\n }\n case \"MULTI_DATE\":\n {\n const selectedDates = innerState?.type === \"SELECT\" ? innerState.selectedValues.filter(v => v instanceof Date) : [];\n return /*#__PURE__*/React.createElement(MultiDateInput, {\n selectedDates: selectedDates,\n onChange: onMultiDateChange,\n showClearAll: true\n });\n }\n case \"TIMELINE\":\n {\n const tl = innerState?.type === \"TIMELINE\" ? innerState : undefined;\n return /*#__PURE__*/React.createElement(TimelineInput, {\n startDate: tl?.startDate,\n endDate: tl?.endDate,\n onChange: onTimelineChange\n });\n }\n default:\n return assertUnreachable(definition.linkedFilterComponent);\n }\n })();\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.linkedProperty, className),\n style: style\n }, content);\n}\nexport const LinkedPropertyInput = /*#__PURE__*/memo(LinkedPropertyInputInner);\nfunction LinkedMultiSelectInput({\n objectType,\n objectSet,\n propertyKey,\n selectedValues,\n onChange\n}) {\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet);\n return /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: onChange\n });\n}\nfunction LinkedSingleSelectInput({\n objectType,\n objectSet,\n propertyKey,\n selectedValue,\n onChange\n}) {\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet);\n return /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValue: selectedValue,\n onChange: onChange,\n ariaLabel: `Select ${propertyKey}`\n });\n}\nfunction LinkedListogramInput({\n objectType,\n objectSet,\n propertyKey,\n selectedValues,\n onChange,\n searchQuery\n}) {\n const {\n data,\n maxCount,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet);\n return /*#__PURE__*/React.createElement(ListogramInput, {\n values: data,\n maxCount: maxCount,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: onChange,\n searchQuery: searchQuery\n });\n}\nfunction LinkedTextTagsInput({\n objectType,\n objectSet,\n propertyKey,\n tags,\n onChange\n}) {\n const aggregationOptions = useMemo(() => ({\n limit: 50\n }), []);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(TextTagsInput, {\n suggestions: data,\n isLoading: isLoading,\n error: error,\n tags: tags,\n onChange: onChange,\n suggestionLimit: 10\n });\n}\nfunction useLinkedRangeData(objectType, propertyKey, objectSet) {\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => ({\n aggregate: aggregateOptions,\n objectSet\n }), [aggregateOptions, objectSet]);\n const {\n data: aggregateData,\n isLoading: histLoading\n } = useOsdkAggregation(objectType, histogramArgs);\n const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);\n const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);\n const nullCountArgs = useMemo(() => ({\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n }), [nullWhereClause, nullCountAggregateOptions, objectSet]);\n const {\n data: nullCountData,\n isLoading: nullLoading\n } = useOsdkAggregation(objectType, nullCountArgs);\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n return {\n aggregateData,\n histLoading,\n nullCount,\n nullLoading\n };\n}\nfunction LinkedNumberRangeInput({\n objectType,\n objectSet,\n propertyKey,\n minValue,\n maxValue,\n includeNull,\n onChange,\n onNullChange\n}) {\n const {\n aggregateData,\n histLoading,\n nullCount,\n nullLoading\n } = useLinkedRangeData(objectType, propertyKey, objectSet);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({\n value: parsed,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: nullLoading,\n includeNull: includeNull,\n onIncludeNullChange: onNullChange\n }, /*#__PURE__*/React.createElement(NumberRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: histLoading,\n minValue: minValue,\n maxValue: maxValue,\n onChange: onChange\n }));\n}\nfunction LinkedDateRangeInput({\n objectType,\n objectSet,\n propertyKey,\n minValue,\n maxValue,\n includeNull,\n onChange,\n onNullChange\n}) {\n const {\n aggregateData,\n histLoading,\n nullCount,\n nullLoading\n } = useLinkedRangeData(objectType, propertyKey, objectSet);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const date = new Date(String(rawValue));\n if (!isNaN(date.getTime())) {\n pairs.push({\n value: date,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: nullLoading,\n includeNull: includeNull,\n onIncludeNullChange: onNullChange\n }, /*#__PURE__*/React.createElement(DateRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: histLoading,\n minValue: minValue,\n maxValue: maxValue,\n onChange: onChange\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.excludeDropdownContainer {\n display: flex;\n align-items: center;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 0.5);\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: var(--osdk-filter-item-exclude-dropdown-font-family);\n font-size: var(--osdk-filter-item-exclude-dropdown-font-size);\n color: var(--osdk-filter-item-exclude-dropdown-trigger-color);\n padding: calc(var(--osdk-surface-spacing) * 1)\n calc(var(--osdk-surface-spacing) * 1);\n border-radius: var(--osdk-filter-item-exclude-dropdown-trigger-border-radius);\n\n &:hover {\n background: var(--osdk-filter-item-header-action-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid\n var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.triggerLabel {\n white-space: nowrap;\n}\n\n.positioner {\n z-index: var(--osdk-surface-z-index-3);\n}\n\n.popup {\n background: var(--osdk-filter-item-menu-bg);\n border: var(--osdk-filter-item-menu-border);\n border-radius: var(--osdk-filter-item-menu-border-radius);\n box-shadow: var(--osdk-filter-item-menu-shadow);\n padding: var(--osdk-filter-item-menu-padding);\n min-width: var(--osdk-filter-item-exclude-dropdown-min-width);\n}\n\n.menuItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n padding: var(--osdk-filter-item-menu-item-padding);\n font-family: var(--osdk-filter-item-menu-item-font-family);\n font-size: var(--osdk-filter-item-menu-item-font-size);\n color: var(--osdk-filter-item-menu-item-color);\n border-radius: var(--osdk-filter-item-menu-item-border-radius);\n cursor: pointer;\n border: none;\n background: transparent;\n width: 100%;\n text-align: left;\n\n &:hover,\n &[data-highlighted] {\n background: var(--osdk-filter-item-menu-item-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid\n var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.menuItemCheck {\n display: flex;\n align-items: center;\n width: var(--osdk-filter-item-menu-check-size);\n flex-shrink: 0;\n}\n","/*\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 { Menu } from \"@base-ui/react/menu\";\nimport React, { memo, useCallback } from \"react\";\nimport styles from \"./ExcludeDropdown.module.css\";\nimport { CheckIcon, ChevronDownIcon, ExcludeIcon } from \"./FilterIcons.js\";\nfunction ExcludeDropdownInner({\n isExcluding,\n onToggleExclude\n}) {\n const label = isExcluding ? \"Excluding\" : \"Keeping\";\n const handleSelectKeeping = useCallback(() => {\n if (isExcluding) {\n onToggleExclude();\n }\n }, [isExcluding, onToggleExclude]);\n const handleSelectExcluding = useCallback(() => {\n if (!isExcluding) {\n onToggleExclude();\n }\n }, [isExcluding, onToggleExclude]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.excludeDropdownContainer\n }, /*#__PURE__*/React.createElement(Menu.Root, null, /*#__PURE__*/React.createElement(Menu.Trigger, {\n className: styles.trigger,\n \"aria-label\": label,\n \"data-excluding\": isExcluding || undefined\n }, isExcluding && /*#__PURE__*/React.createElement(ExcludeIcon, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.triggerLabel\n }, label), /*#__PURE__*/React.createElement(ChevronDownIcon, null)), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {\n className: styles.positioner,\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.popup\n }, /*#__PURE__*/React.createElement(Menu.Item, {\n className: styles.menuItem,\n onClick: handleSelectKeeping\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.menuItemCheck\n }, !isExcluding && /*#__PURE__*/React.createElement(CheckIcon, null)), \"Keeping\"), /*#__PURE__*/React.createElement(Menu.Item, {\n className: styles.menuItem,\n onClick: handleSelectExcluding\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.menuItemCheck\n }, isExcluding && /*#__PURE__*/React.createElement(CheckIcon, null)), \"Excluding\"))))));\n}\nexport const ExcludeDropdown = /*#__PURE__*/memo(ExcludeDropdownInner);","/*\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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { supportsExcluding } from \"../utils/filterValues.js\";\nimport { ExcludeDropdown } from \"./ExcludeDropdown.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction getSelectedCount(filterState) {\n if (!filterState) return 0;\n if (filterState.type === \"EXACT_MATCH\") return filterState.values.length;\n if (filterState.type === \"SELECT\") return filterState.selectedValues.length;\n return 0;\n}\nfunction FilterInputExcludeRowInner({\n excludeRowOpen,\n filterState,\n onFilterStateChanged,\n totalValueCount,\n onClearAll,\n children\n}) {\n const handleToggleExclude = useCallback(() => {\n if (filterState) {\n onFilterStateChanged({\n ...filterState,\n isExcluding: !filterState.isExcluding\n });\n }\n }, [filterState, onFilterStateChanged]);\n const isExcluding = filterState?.isExcluding ?? false;\n const isOpen = excludeRowOpen ?? false;\n const selectedCount = useMemo(() => getSelectedCount(filterState), [filterState]);\n if (!supportsExcluding(filterState)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n \"data-exclude-row\": true,\n className: classnames(styles.excludeRow, {\n [styles.excludeRowVisible]: isOpen\n })\n }, /*#__PURE__*/React.createElement(ExcludeDropdown, {\n isExcluding: isExcluding,\n onToggleExclude: handleToggleExclude\n }), totalValueCount != null && totalValueCount > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.excludeCountLabel,\n title: \"Approximate count of unique values\"\n }, selectedCount.toLocaleString(), \" of\", \" \", totalValueCount.toLocaleString(), \" values\"), onClearAll && selectedCount > 0 && /*#__PURE__*/React.createElement(Button, {\n className: styles.clearAllButton,\n onClick: onClearAll\n }, \"Clear all\")), children);\n}\nexport const FilterInputExcludeRow = /*#__PURE__*/memo(FilterInputExcludeRowInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nfunction ContainsTextFilterInputInner({\n propertyKey,\n filterState,\n onFilterStateChanged\n}) {\n const value = useMemo(() => filterState?.type === \"CONTAINS_TEXT\" ? filterState.value : undefined, [filterState]);\n const handleChange = useCallback(value => {\n onFilterStateChanged({\n type: \"CONTAINS_TEXT\",\n value\n });\n }, [onFilterStateChanged]);\n return /*#__PURE__*/React.createElement(ContainsTextInput, {\n value: value,\n onChange: handleChange,\n placeholder: \"Search...\"\n });\n}\nexport const ContainsTextFilterInput = /*#__PURE__*/memo(ContainsTextFilterInputInner);","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { DateRangeInput } from \"../base/inputs/DateRangeInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction DateRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged\n}) {\n const dateRangeState = filterState?.type === \"DATE_RANGE\" ? filterState : undefined;\n const includeNull = filterState?.includeNull;\n const handleNullChange = useCallback(includeNull => {\n onFilterStateChanged({\n type: \"DATE_RANGE\",\n minValue: dateRangeState?.minValue,\n maxValue: dateRangeState?.maxValue,\n includeNull\n });\n }, [onFilterStateChanged, dateRangeState?.minValue, dateRangeState?.maxValue]);\n const handleRangeChange = useCallback((minValue, maxValue) => {\n onFilterStateChanged({\n type: \"DATE_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [onFilterStateChanged, includeNull]);\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => objectSet != null ? {\n aggregate: aggregateOptions,\n objectSet\n } : {\n aggregate: aggregateOptions\n }, [aggregateOptions, objectSet]);\n const {\n data: aggregateData,\n isLoading: histLoading\n } = useOsdkAggregation(objectType, histogramArgs);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const date = new Date(String(rawValue));\n if (!isNaN(date.getTime())) {\n pairs.push({\n value: date,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);\n const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);\n const nullCountArgs = useMemo(() => objectSet != null ? {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n } : {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions\n }, [nullWhereClause, nullCountAggregateOptions, objectSet]);\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError\n } = useOsdkAggregation(objectType, nullCountArgs);\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n const isLoading = histLoading || nullLoading;\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: isLoading,\n error: nullError,\n includeNull: includeNull,\n onIncludeNullChange: handleNullChange\n }, /*#__PURE__*/React.createElement(DateRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: isLoading,\n minValue: dateRangeState?.minValue,\n maxValue: dateRangeState?.maxValue,\n onChange: handleRangeChange\n }));\n}\nexport const DateRangeFilterInput = /*#__PURE__*/memo(DateRangeFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction ListogramFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n colorMap,\n displayMode,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen\n}) {\n const selectedValues = useMemo(() => filterState?.type === \"EXACT_MATCH\" ? coerceToStringArray(filterState.values) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(values => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const sortBy = displayMode === \"minimal\" ? \"value\" : \"count\";\n const aggregationOptions = useMemo(() => ({\n where: whereClause,\n sortBy\n }), [whereClause, sortBy]);\n const {\n data,\n maxCount,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(ListogramInput, {\n values: data,\n maxCount: maxCount,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: handleChange,\n colorMap: colorMap,\n displayMode: displayMode,\n isExcluding: isExcluding,\n maxVisibleItems: maxVisibleItems,\n searchQuery: searchQuery\n }));\n}\nexport const ListogramFilterInput = /*#__PURE__*/memo(ListogramFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nfunction MultiDateFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const selectedDates = useMemo(() => filterState?.type === \"SELECT\" ? filterState.selectedValues.filter(v => v instanceof Date) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleChange = useCallback(selectedDates => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: selectedDates,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return /*#__PURE__*/React.createElement(MultiDateInput, {\n selectedDates: selectedDates,\n onChange: handleChange\n });\n}\nexport const MultiDateFilterInput = /*#__PURE__*/memo(MultiDateFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction MultiSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen\n}) {\n const selectedValues = useMemo(() => filterState?.type === \"SELECT\" ? coerceToStringArray(filterState.selectedValues) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(selectedValues => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const aggregationOptions = useMemo(() => ({\n where: whereClause\n }), [whereClause]);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: handleChange,\n ariaLabel: `Search ${propertyKey} values`\n }));\n}\nexport const MultiSelectFilterInput = /*#__PURE__*/memo(MultiSelectFilterInputInner);","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction NumberRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged\n}) {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\" ? filterState : undefined;\n const includeNull = filterState?.includeNull;\n const handleNullChange = useCallback(includeNull => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull\n });\n }, [onFilterStateChanged, numberRangeState?.minValue, numberRangeState?.maxValue]);\n const handleRangeChange = useCallback((minValue, maxValue) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [onFilterStateChanged, includeNull]);\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => objectSet != null ? {\n aggregate: aggregateOptions,\n objectSet\n } : {\n aggregate: aggregateOptions\n }, [aggregateOptions, objectSet]);\n const {\n data: aggregateData,\n isLoading: histLoading\n } = useOsdkAggregation(objectType, histogramArgs);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({\n value: parsed,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);\n const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);\n const nullCountArgs = useMemo(() => objectSet != null ? {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n } : {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions\n }, [nullWhereClause, nullCountAggregateOptions, objectSet]);\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError\n } = useOsdkAggregation(objectType, nullCountArgs);\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n const isLoading = histLoading || nullLoading;\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: isLoading,\n error: nullError,\n includeNull: includeNull,\n onIncludeNullChange: handleNullChange\n }, /*#__PURE__*/React.createElement(NumberRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: isLoading,\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n onChange: handleRangeChange\n }));\n}\nexport const NumberRangeFilterInput = /*#__PURE__*/memo(NumberRangeFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nfunction SingleDateFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const selectedDate = useMemo(() => filterState?.type === \"SELECT\" ? filterState.selectedValues[0] instanceof Date ? filterState.selectedValues[0] : undefined : undefined, [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleChange = useCallback(selectedDate => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: selectedDate !== undefined ? [selectedDate] : [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return /*#__PURE__*/React.createElement(SingleDateInput, {\n selectedDate: selectedDate,\n onChange: handleChange\n });\n}\nexport const SingleDateFilterInput = /*#__PURE__*/memo(SingleDateFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\nfunction SingleSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen\n}) {\n const selectedValue = useMemo(() => filterState?.type === \"SELECT\" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(value => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const aggregationOptions = useMemo(() => ({\n where: whereClause\n }), [whereClause]);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValue: selectedValue,\n onChange: handleChange,\n ariaLabel: `Select ${propertyKey}`\n }));\n}\nexport const SingleSelectFilterInput = /*#__PURE__*/memo(SingleSelectFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction TextTagsFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen\n}) {\n const tags = useMemo(() => filterState?.type === \"EXACT_MATCH\" ? coerceToStringArray(filterState.values) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(values => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const aggregationOptions = useMemo(() => ({\n where: whereClause\n }), [whereClause]);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(TextTagsInput, {\n suggestions: data,\n isLoading: isLoading,\n error: error,\n tags: tags,\n onChange: handleChange\n }));\n}\nexport const TextTagsFilterInput = /*#__PURE__*/memo(TextTagsFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { TimelineInput } from \"../base/inputs/TimelineInput.js\";\nfunction TimelineFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const {\n startDate,\n endDate\n } = useMemo(() => filterState?.type === \"TIMELINE\" ? {\n startDate: filterState.startDate,\n endDate: filterState.endDate\n } : {\n startDate: undefined,\n endDate: undefined\n }, [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleChange = useCallback((startDate, endDate) => {\n onFilterStateChanged({\n type: \"TIMELINE\",\n startDate,\n endDate,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return /*#__PURE__*/React.createElement(TimelineInput, {\n startDate: startDate,\n endDate: endDate,\n onChange: handleChange\n });\n}\nexport const TimelineFilterInput = /*#__PURE__*/memo(TimelineFilterInputInner);","/*\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, { memo, useCallback } from \"react\";\nimport { ToggleInput } from \"../base/inputs/ToggleInput.js\";\nfunction ToggleFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const enabled = filterState?.type === \"TOGGLE\" ? filterState.enabled : false;\n const handleChange = useCallback(enabled => {\n onFilterStateChanged({\n type: \"TOGGLE\",\n enabled\n });\n }, [onFilterStateChanged]);\n return /*#__PURE__*/React.createElement(ToggleInput, {\n enabled: enabled,\n onChange: handleChange\n });\n}\nexport const ToggleFilterInput = /*#__PURE__*/memo(ToggleFilterInputInner);","/*\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, { memo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\nfunction PropertyFilterInputInner({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen\n}) {\n switch (definition.filterComponent) {\n case \"CONTAINS_TEXT\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }, /*#__PURE__*/React.createElement(ContainsTextFilterInput, {\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }));\n case \"TOGGLE\":\n return /*#__PURE__*/React.createElement(ToggleFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"NUMBER_RANGE\":\n return /*#__PURE__*/React.createElement(NumberRangeFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"DATE_RANGE\":\n return /*#__PURE__*/React.createElement(DateRangeFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"SINGLE_SELECT\":\n return /*#__PURE__*/React.createElement(SingleSelectFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n excludeRowOpen: excludeRowOpen\n });\n case \"MULTI_SELECT\":\n return /*#__PURE__*/React.createElement(MultiSelectFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n excludeRowOpen: excludeRowOpen\n });\n case \"SINGLE_DATE\":\n return /*#__PURE__*/React.createElement(SingleDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"MULTI_DATE\":\n return /*#__PURE__*/React.createElement(MultiDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"LISTOGRAM\":\n return /*#__PURE__*/React.createElement(ListogramFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n colorMap: definition.colorMap,\n displayMode: definition.listogramConfig?.displayMode,\n maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n });\n case \"TEXT_TAGS\":\n return /*#__PURE__*/React.createElement(TextTagsFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n excludeRowOpen: excludeRowOpen\n });\n case \"TIMELINE\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }, /*#__PURE__*/React.createElement(TimelineFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }));\n default:\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Unsupported filter component: \", definition.filterComponent);\n }\n}\nexport const PropertyFilterInput = /*#__PURE__*/memo(PropertyFilterInputInner);","/*\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, { memo, useCallback } from \"react\";\nimport { ContainsTextInput } from \"./base/inputs/ContainsTextInput.js\";\nimport { ToggleInput } from \"./base/inputs/ToggleInput.js\";\nimport { LinkedPropertyInput } from \"./inputs/LinkedPropertyInput.js\";\nimport { PropertyFilterInput } from \"./inputs/PropertyFilterInput.js\";\nfunction FilterInputInner({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen\n}) {\n return /*#__PURE__*/React.createElement(FilterInputContent, {\n objectType: objectType,\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n });\n}\nexport const FilterInput = /*#__PURE__*/memo(FilterInputInner);\nfunction FilterInputContent({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen\n}) {\n switch (definition.type) {\n case \"HAS_LINK\":\n return /*#__PURE__*/React.createElement(HasLinkInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"LINKED_PROPERTY\":\n {\n if (objectSet == null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null);\n }\n return /*#__PURE__*/React.createElement(LinkedPropertyInput, {\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n searchQuery: searchQuery\n });\n }\n case \"KEYWORD_SEARCH\":\n return /*#__PURE__*/React.createElement(KeywordSearchInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n placeholder: definition.label ?? \"Search...\"\n });\n case \"CUSTOM\":\n {\n if (!definition.renderInput) {\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Custom filter missing renderInput\");\n }\n const customFilterState = filterState?.type === \"custom\" ? filterState : definition.filterState;\n return /*#__PURE__*/React.createElement(React.Fragment, null, definition.renderInput({\n objectType,\n objectSet,\n filterState: customFilterState,\n onFilterStateChanged: state => onFilterStateChanged(state)\n }));\n }\n case \"PROPERTY\":\n return /*#__PURE__*/React.createElement(PropertyFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n });\n default:\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Unsupported filter type\");\n }\n}\nconst HasLinkInput = /*#__PURE__*/memo(function HasLinkInput({\n filterState,\n onFilterStateChanged\n}) {\n const hasLink = filterState?.type === \"hasLink\" ? filterState.hasLink : false;\n const handleChange = useCallback(hasLink => {\n onFilterStateChanged({\n type: \"hasLink\",\n hasLink\n });\n }, [onFilterStateChanged]);\n return /*#__PURE__*/React.createElement(ToggleInput, {\n enabled: hasLink,\n onChange: handleChange\n });\n});\nconst KeywordSearchInput = /*#__PURE__*/memo(function KeywordSearchInput({\n filterState,\n onFilterStateChanged,\n placeholder\n}) {\n const searchTerm = filterState?.type === \"keywordSearch\" ? filterState.searchTerm : undefined;\n const operator = filterState?.type === \"keywordSearch\" ? filterState.operator : \"AND\";\n const handleChange = useCallback(newSearchTerm => {\n onFilterStateChanged({\n type: \"keywordSearch\",\n searchTerm: newSearchTerm ?? \"\",\n operator\n });\n }, [onFilterStateChanged, operator]);\n return /*#__PURE__*/React.createElement(ContainsTextInput, {\n value: searchTerm,\n onChange: handleChange,\n placeholder: placeholder\n });\n});","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nexport function getFilterKey(definition) {\n switch (definition.type) {\n case \"PROPERTY\":\n return definition.id ?? definition.key;\n case \"HAS_LINK\":\n return definition.id ?? `hasLink:${definition.linkName}`;\n case \"LINKED_PROPERTY\":\n return definition.id ?? `linkedProperty:${definition.linkName}:${definition.linkedPropertyKey}`;\n case \"KEYWORD_SEARCH\":\n return definition.id ?? `keywordSearch-${Array.isArray(definition.properties) ? definition.properties.join(\"-\") : \"all\"}`;\n case \"CUSTOM\":\n return definition.id ?? definition.key;\n default:\n return assertUnreachable(definition);\n }\n}","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport { getFilterKey } from \"./getFilterKey.js\";\nfunction isCompoundFilter(f) {\n return typeof f === \"object\" && f != null && \"__compound\" in f;\n}\nconst NUMERIC_BOUNDS = {\n byte: {\n min: -128,\n max: 127\n },\n short: {\n min: -32_768,\n max: 32_767\n },\n integer: {\n min: -2_147_483_648,\n max: 2_147_483_647\n },\n long: {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER\n }\n};\nfunction clampToPropertyBounds(value, propertyType) {\n if (propertyType === undefined) {\n return value;\n }\n const bounds = NUMERIC_BOUNDS[propertyType];\n if (bounds === undefined) {\n return value;\n }\n return Math.max(bounds.min, Math.min(bounds.max, value));\n}\nfunction formatDateValue(date, propertyType) {\n if (propertyType === \"datetime\") {\n return formatDateForInput(date);\n }\n return date.toISOString();\n}\nfunction filterStateToPropertyFilter(state, propertyType) {\n switch (state.type) {\n case \"CONTAINS_TEXT\":\n {\n if (!state.value) {\n return undefined;\n }\n return {\n $containsAnyTerm: state.value\n };\n }\n case \"TOGGLE\":\n {\n return state.enabled;\n }\n case \"DATE_RANGE\":\n {\n const conditions = [];\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.minValue, propertyType)\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.maxValue, propertyType)\n });\n }\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n if (conditions.length === 0 && state.includeNull) {\n return {\n $isNull: true\n };\n }\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false\n };\n }\n case \"NUMBER_RANGE\":\n {\n const conditions = [];\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: clampToPropertyBounds(state.minValue, propertyType)\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: clampToPropertyBounds(state.maxValue, propertyType)\n });\n }\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n if (conditions.length === 0 && state.includeNull) {\n return {\n $isNull: true\n };\n }\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false\n };\n }\n case \"EXACT_MATCH\":\n {\n if (state.values.length === 0) {\n return undefined;\n }\n return state.values.length === 1 ? state.values[0] : {\n $in: state.values\n };\n }\n case \"SELECT\":\n {\n if (state.selectedValues.length === 0) {\n return undefined;\n }\n const values = state.selectedValues.map(v => v instanceof Date ? formatDateValue(v, propertyType) : v);\n return values.length === 1 ? values[0] : {\n $in: values\n };\n }\n case \"TIMELINE\":\n {\n const conditions = [];\n if (state.startDate !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.startDate, propertyType)\n });\n }\n if (state.endDate !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.endDate, propertyType)\n });\n }\n if (conditions.length === 0) {\n return undefined;\n }\n if (conditions.length === 1) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: false\n };\n }\n\n // These filter types are handled separately in buildWhereClause\n // since they need access to the full definition, not just state\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return undefined;\n default:\n return assertUnreachable(state);\n }\n}\n\n/**\n * Builds a WhereClause from filter definitions and their current states.\n *\n * The filterStates map uses string keys derived from filter definitions via\n * getFilterKey(). This ensures stable state lookups even when filters are\n * reordered or definition object references change.\n *\n * Note: The `as WhereClause<Q>` casts are necessary because we're building\n * clauses dynamically from property keys determined at runtime. TypeScript\n * cannot verify that the constructed clause structure matches the generic Q's\n * expected shape, but the structure is guaranteed to be valid by construction.\n */\n\nexport function buildWhereClause(definitions, filterStates, propertyTypes, excludeFilterKey) {\n if (!definitions || definitions.length === 0) {\n return {};\n }\n const clauses = [];\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n if (!state) {\n continue;\n }\n switch (definition.type) {\n case \"PROPERTY\":\n {\n const propertyType = propertyTypes?.get(definition.key)?.type;\n const filter = filterStateToPropertyFilter(state, propertyType);\n if (filter !== undefined) {\n const isExcluding = \"isExcluding\" in state && state.isExcluding;\n if (isCompoundFilter(filter)) {\n const fieldClauses = filter.conditions.map(c => ({\n [definition.key]: c\n }));\n let rangeClause = fieldClauses.length === 1 ? fieldClauses[0] : {\n $and: fieldClauses\n };\n if (filter.includeNull) {\n rangeClause = {\n $or: [rangeClause, {\n [definition.key]: {\n $isNull: true\n }\n }]\n };\n }\n clauses.push(isExcluding ? {\n $not: rangeClause\n } : rangeClause);\n } else {\n const clause = {\n [definition.key]: filter\n };\n clauses.push(isExcluding ? {\n $not: clause\n } : clause);\n }\n }\n break;\n }\n case \"HAS_LINK\":\n {\n if (state.type !== \"hasLink\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`[FilterList] State type mismatch for hasLink filter \"${definition.linkName}\": expected hasLink, got ${state.type}`);\n }\n break;\n }\n if (!state.hasLink) {\n break;\n }\n clauses.push({\n [definition.linkName]: {\n $isNotNull: true\n }\n });\n break;\n }\n case \"LINKED_PROPERTY\":\n {\n // OSDK WhereClause does not support filtering through links.\n // Link-based filtering requires ObjectSet operations (pivotTo/intersect).\n // LinkedProperty filters render UI for selection but cannot be included\n // in the where clause. Consumers needing linked property filtering must\n // implement it using ObjectSet.pivotTo() and intersect().\n break;\n }\n case \"KEYWORD_SEARCH\":\n {\n if (state.type !== \"keywordSearch\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`[FilterList] State type mismatch for keywordSearch filter: expected keywordSearch, got ${state.type}`);\n }\n break;\n }\n if (!state.searchTerm) {\n break;\n }\n // TypeScript narrows state to KeywordSearchFilterState\n const searchTerm = state.searchTerm.trim();\n if (!searchTerm) {\n break;\n }\n const properties = definition.properties;\n let propertiesToSearch;\n if (properties === \"all\") {\n if (propertyTypes && propertyTypes.size > 0) {\n propertiesToSearch = [];\n for (const [key, info] of propertyTypes) {\n if (info.type === \"string\" && !info.multiplicity) {\n propertiesToSearch.push(key);\n }\n }\n } else {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"[FilterList] Keyword search with properties: 'all' requires propertyTypes to be provided. Filter will be skipped.\");\n }\n break;\n }\n } else {\n propertiesToSearch = properties;\n }\n if (propertiesToSearch.length === 0) {\n break;\n }\n const containsOp = state.operator === \"AND\" ? \"$containsAllTerms\" : \"$containsAnyTerm\";\n const propertySearches = propertiesToSearch.map(prop => ({\n [prop]: {\n [containsOp]: searchTerm\n }\n }));\n let searchClause;\n if (propertySearches.length === 1) {\n searchClause = propertySearches[0];\n } else {\n searchClause = {\n $or: propertySearches\n };\n }\n clauses.push(state.isExcluding ? {\n $not: searchClause\n } : searchClause);\n break;\n }\n case \"CUSTOM\":\n {\n if (state.type !== \"custom\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`[FilterList] State type mismatch for custom filter \"${definition.key}\": expected custom, got ${state.type}`);\n }\n break;\n }\n // TypeScript narrows state to CustomFilterState\n const customClause = definition.toWhereClause(state);\n if (customClause && Object.keys(customClause).length > 0) {\n clauses.push(customClause);\n }\n break;\n }\n default:\n assertUnreachable(definition);\n }\n }\n if (clauses.length === 0) {\n return {};\n }\n if (clauses.length === 1) {\n return clauses[0];\n }\n return {\n $and: clauses\n };\n}","/*\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { buildWhereClause } from \"../utils/filterStateToWhereClause.js\";\nimport { filterHasActiveState } from \"../utils/filterValues.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\n/**\n * Build initial states from filter definitions.\n * Uses string keys derived from getFilterKey() for stable lookups.\n */\nfunction buildInitialStates(definitions) {\n const states = new Map();\n if (!definitions) {\n return states;\n }\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n switch (definition.type) {\n case \"PROPERTY\":\n {\n const state = definition.filterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"HAS_LINK\":\n case \"KEYWORD_SEARCH\":\n case \"CUSTOM\":\n {\n const state = definition.defaultFilterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"LINKED_PROPERTY\":\n {\n const innerState = definition.defaultLinkedFilterState;\n if (innerState) {\n const state = {\n type: \"linkedProperty\",\n linkedFilterState: innerState\n };\n states.set(key, state);\n }\n break;\n }\n default:\n assertUnreachable(definition);\n }\n }\n return states;\n}\nexport function useFilterListState(props) {\n const {\n objectType,\n filterDefinitions,\n onFilterStateChanged,\n onFilterClauseChanged,\n initialFilterStates\n } = props;\n const {\n metadata\n } = useOsdkMetadata(objectType);\n const propertyTypes = useMemo(() => {\n const map = new Map();\n if (metadata?.properties) {\n for (const [key, prop] of Object.entries(metadata.properties)) {\n if (typeof prop.type === \"string\") {\n map.set(key, {\n type: prop.type,\n multiplicity: prop.multiplicity === true\n });\n }\n }\n }\n return map;\n }, [metadata?.properties]);\n const [filterStates, setFilterStates] = useState(() => {\n const states = buildInitialStates(filterDefinitions);\n if (initialFilterStates) {\n for (const [key, state] of initialFilterStates) {\n states.set(key, state);\n }\n }\n return states;\n });\n const setFilterState = useCallback((filterKey, state) => {\n let newWhereClause;\n setFilterStates(prev => {\n const next = new Map(prev);\n next.set(filterKey, state);\n newWhereClause = buildWhereClause(filterDefinitions, next, propertyTypes);\n return next;\n });\n if (newWhereClause !== undefined) {\n onFilterClauseChanged?.(newWhereClause);\n }\n const definition = filterDefinitions?.find(d => getFilterKey(d) === filterKey);\n if (definition) {\n onFilterStateChanged?.(definition, state);\n }\n }, [filterDefinitions, propertyTypes, onFilterClauseChanged, onFilterStateChanged]);\n const clearFilterState = useCallback(filterKey => {\n const clearedStates = new Map(filterStates);\n clearedStates.delete(filterKey);\n setFilterStates(clearedStates);\n const newWhereClause = buildWhereClause(filterDefinitions, clearedStates, propertyTypes);\n onFilterClauseChanged?.(newWhereClause);\n }, [filterStates, filterDefinitions, propertyTypes, onFilterClauseChanged]);\n const whereClause = useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);\n const perFilterWhereClauses = useMemo(() => {\n const map = new Map();\n if (!filterDefinitions) {\n return map;\n }\n for (const definition of filterDefinitions) {\n const key = getFilterKey(definition);\n map.set(key, buildWhereClause(filterDefinitions, filterStates, propertyTypes, key));\n }\n return map;\n }, [filterDefinitions, filterStates, propertyTypes]);\n const activeFilterCount = useMemo(() => {\n let count = 0;\n for (const state of filterStates.values()) {\n if (filterHasActiveState(state)) {\n count++;\n }\n }\n return count;\n }, [filterStates]);\n const reset = useCallback(() => {\n const initialStates = buildInitialStates(filterDefinitions);\n setFilterStates(initialStates);\n const newWhereClause = buildWhereClause(filterDefinitions, initialStates, propertyTypes);\n onFilterClauseChanged?.(newWhereClause);\n }, [filterDefinitions, propertyTypes, onFilterClauseChanged]);\n return useMemo(() => ({\n filterStates,\n setFilterState,\n clearFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset\n }), [filterStates, setFilterState, clearFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nexport function useFilterVisibility(filterDefinitions, getFilterKey, getIsVisible) {\n const [visibilityOverrides, setVisibilityOverrides] = useState(() => new Map());\n const {\n visibleDefinitions,\n hiddenDefinitions\n } = useMemo(() => {\n if (filterDefinitions == null) {\n return {\n visibleDefinitions: [],\n hiddenDefinitions: []\n };\n }\n const visible = [];\n const hidden = [];\n for (const def of filterDefinitions) {\n const key = getFilterKey(def);\n const override = visibilityOverrides.get(key);\n const isVisible = override ?? getIsVisible(def);\n if (isVisible) {\n visible.push(def);\n } else {\n hidden.push(def);\n }\n }\n return {\n visibleDefinitions: visible,\n hiddenDefinitions: hidden\n };\n }, [filterDefinitions, getFilterKey, getIsVisible, visibilityOverrides]);\n const showFilter = useCallback(key => {\n setVisibilityOverrides(prev => {\n const next = new Map(prev);\n next.set(key, true);\n return next;\n });\n }, []);\n const hideFilter = useCallback(key => {\n setVisibilityOverrides(prev => {\n const next = new Map(prev);\n next.set(key, false);\n return next;\n });\n }, []);\n const hasVisibilityChanges = visibilityOverrides.size > 0;\n const resetVisibility = useCallback(() => {\n setVisibilityOverrides(new Map());\n }, []);\n return {\n visibleDefinitions,\n hiddenDefinitions,\n showFilter,\n hideFilter,\n hasVisibilityChanges,\n resetVisibility\n };\n}","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nexport function getFilterLabel(definition) {\n if (\"label\" in definition && definition.label) {\n return definition.label;\n }\n switch (definition.type) {\n case \"PROPERTY\":\n return definition.key;\n case \"HAS_LINK\":\n case \"LINKED_PROPERTY\":\n return definition.linkName;\n case \"KEYWORD_SEARCH\":\n return \"Search\";\n case \"CUSTOM\":\n return definition.key;\n default:\n return assertUnreachable(definition);\n }\n}","/*\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, useMemo } from \"react\";\nimport { AddFilterPopover } from \"./base/AddFilterPopover.js\";\nimport { BaseFilterList } from \"./base/BaseFilterList.js\";\nimport { FilterInput } from \"./FilterInput.js\";\nimport { useFilterListState } from \"./hooks/useFilterListState.js\";\nimport { useFilterVisibility } from \"./hooks/useFilterVisibility.js\";\nimport { getFilterKey } from \"./utils/getFilterKey.js\";\nimport { getFilterLabel } from \"./utils/getFilterLabel.js\";\nexport function FilterList(props) {\n const {\n objectType,\n objectSet,\n title,\n titleIcon,\n collapsed,\n onCollapsedChange,\n filterDefinitions,\n addFilterMode = \"uncontrolled\",\n showResetButton = false,\n onReset,\n showActiveFilterCount = false,\n className,\n enableSorting,\n onFilterAdded,\n onFilterRemoved,\n renderAddFilterButton\n } = props;\n const {\n filterStates,\n setFilterState,\n clearFilterState,\n perFilterWhereClauses,\n activeFilterCount,\n reset\n } = useFilterListState(props);\n const uncontrolledAddFilterMode = addFilterMode === \"uncontrolled\";\n const getIsVisible = useCallback(def => def.isVisible !== false, []);\n const {\n visibleDefinitions: managedVisibleDefinitions,\n hiddenDefinitions: managedHiddenDefinitions,\n showFilter,\n hideFilter,\n hasVisibilityChanges,\n resetVisibility\n } = useFilterVisibility(filterDefinitions, getFilterKey, getIsVisible);\n const handleReset = useCallback(() => {\n reset();\n resetVisibility();\n onReset?.();\n }, [reset, resetVisibility, onReset]);\n const simpleVisibleDefinitions = useMemo(() => {\n if (filterDefinitions == null) {\n return undefined;\n }\n return filterDefinitions.filter(def => def.isVisible !== false);\n }, [filterDefinitions]);\n const effectiveVisibleDefinitions = uncontrolledAddFilterMode ? managedVisibleDefinitions : simpleVisibleDefinitions;\n const handleFilterRemoved = useCallback(filterKey => {\n clearFilterState(filterKey);\n if (uncontrolledAddFilterMode) {\n hideFilter(filterKey);\n }\n onFilterRemoved?.(filterKey);\n }, [clearFilterState, uncontrolledAddFilterMode, hideFilter, onFilterRemoved]);\n const handleFilterShown = useCallback(filterKey => {\n showFilter(filterKey);\n onFilterAdded?.(filterKey, filterDefinitions ?? []);\n }, [showFilter, onFilterAdded, filterDefinitions]);\n const hiddenFilterItems = useMemo(() => managedHiddenDefinitions.map(def => ({\n key: getFilterKey(def),\n label: getFilterLabel(def)\n })), [managedHiddenDefinitions]);\n const effectiveRenderAddFilterButton = useMemo(() => {\n if (uncontrolledAddFilterMode) {\n if (managedHiddenDefinitions.length === 0) {\n return undefined;\n }\n return () => /*#__PURE__*/React.createElement(AddFilterPopover, {\n hiddenDefinitions: hiddenFilterItems,\n onShowFilter: handleFilterShown,\n renderTrigger: renderAddFilterButton\n });\n }\n return renderAddFilterButton;\n }, [uncontrolledAddFilterMode, managedHiddenDefinitions.length, hiddenFilterItems, handleFilterShown, renderAddFilterButton]);\n const effectiveOnFilterRemoved = uncontrolledAddFilterMode ? handleFilterRemoved : onFilterRemoved;\n const renderInput = useCallback(({\n definition,\n filterKey,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen\n }) => /*#__PURE__*/React.createElement(FilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: perFilterWhereClauses.get(filterKey) ?? {},\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n }), [objectType, objectSet, perFilterWhereClauses]);\n return /*#__PURE__*/React.createElement(BaseFilterList, {\n title: title,\n titleIcon: titleIcon,\n collapsed: collapsed,\n onCollapsedChange: onCollapsedChange,\n filterDefinitions: effectiveVisibleDefinitions,\n filterStates: filterStates,\n onFilterStateChanged: setFilterState,\n renderInput: renderInput,\n getFilterKey: getFilterKey,\n getFilterLabel: getFilterLabel,\n activeFilterCount: activeFilterCount,\n onReset: handleReset,\n showResetButton: showResetButton,\n showActiveFilterCount: showActiveFilterCount,\n hasVisibilityChanges: hasVisibilityChanges,\n enableSorting: enableSorting,\n onFilterRemoved: effectiveOnFilterRemoved,\n className: className,\n renderAddFilterButton: effectiveRenderAddFilterButton\n });\n}","/*\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\nconst DATE_PREFIX = \"__date__:\";\nfunction replacer(_key, value) {\n if (value instanceof Date) {\n return DATE_PREFIX + value.toISOString();\n }\n return value;\n}\nfunction reviver(_key, value) {\n if (typeof value === \"string\" && value.startsWith(DATE_PREFIX)) {\n return new Date(value.slice(DATE_PREFIX.length));\n }\n return value;\n}\nexport function serializeFilterStates(states) {\n const entries = Array.from(states.entries());\n return JSON.stringify(entries, replacer);\n}\nexport function deserializeFilterStates(json) {\n try {\n const entries = JSON.parse(json, reviver);\n return new Map(entries);\n } catch {\n return new Map();\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkLoadingCell {\n height: var(--osdk-table-cell-fontSize);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n flex: 1;\n}\n\n.osdkCellSkeleton.osdkCellSkeleton {\n --osdk-background-skeleton-from: var(--osdk-table-skeleton-color-from);\n --osdk-background-skeleton-to: var(--osdk-table-skeleton-color-to);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n box-shadow: none;\n color: transparent;\n cursor: default;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableCell {\n display: flex;\n align-items: center;\n height: 100%;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-size: var(--osdk-table-cell-fontSize);\n color: var(--osdk-table-cell-color);\n background-color: inherit;\n border-right: var(--osdk-table-cell-divider);\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: none;\n }\n}\n\n.osdkTableCell[data-pinned=\"left\"],\n.osdkTableCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-1);\n background-color: inherit;\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableCell:has([role=\"checkbox\"]) {\n justify-content: center;\n padding: 0;\n}\n\n.osdkTableCellContent:not(:has([role=\"checkbox\"])) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n flex: 1;\n}\n\n.osdkCheckboxContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport styles from \"./LoadingCell.module.css\";\nimport cellStyles from \"./TableCell.module.css\";\nexport function LoadingCellContent() {\n return /*#__PURE__*/React.createElement(SkeletonBar, {\n className: classNames(styles.osdkLoadingCell, styles.osdkCellSkeleton)\n });\n}\nexport function LoadingCell({\n width\n}) {\n return /*#__PURE__*/React.createElement(\"td\", {\n className: cellStyles.osdkTableCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(LoadingCellContent, null));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { LoadingCellContent } from \"../LoadingCell.js\";\nexport function AsyncValueCell({\n data,\n isLoading,\n error\n}) {\n if (error != null) {\n return \"Error\";\n }\n if (data != null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, data);\n }\n if (isLoading) {\n return /*#__PURE__*/React.createElement(LoadingCellContent, null);\n }\n return \"No value\";\n}",".osdkEditableCell {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 3);\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-surface-border-width) solid transparent;\n background: inherit;\n\n tr[data-focused=\"true\"] & {\n border: var(--osdk-table-cell-editable-border);\n background: var(--osdk-table-cell-editable-bg);\n\n &.osdkEditedInput {\n border: var(--osdk-table-cell-edited-border);\n }\n\n &:focus-within,\n &.osdkEditedInput:focus-within {\n border: var(--osdk-emphasis-focus-width) solid\n var(--osdk-emphasis-focus-color);\n }\n\n &.error {\n border: var(--osdk-table-cell-edited-border-error);\n\n &:focus-within {\n border: var(--osdk-emphasis-focus-width) solid\n var(--osdk-intent-danger-rest);\n }\n }\n }\n\n &.error {\n background: var(--osdk-table-cell-editable-bg);\n border: var(--osdk-table-cell-edited-border-error);\n }\n}\n\n.osdkEditableInput {\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n background: inherit;\n border: none;\n\n &:focus {\n outline: none;\n }\n}\n\n.osdkEditedInput {\n border: var(--osdk-table-cell-edited-border);\n background: var(--osdk-table-cell-editable-bg);\n}\n\n.validationError {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.errorIcon {\n color: var(--osdk-intent-danger-rest);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Error } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport styles from \"./EditableCell.module.css\";\nconst NUMBER_TYPES = [\"double\", \"integer\", \"long\", \"float\", \"decimal\", \"byte\", \"short\"];\nconst VALIDATION_ERROR_MESSAGE = \"Validation error\";\nfunction valueToString(value) {\n if (value == null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n // At this point, value is a primitive (string, number, boolean, symbol, bigint)\n return String(value);\n}\nfunction parseValueByType(value, dataType) {\n if (!dataType || !NUMBER_TYPES.includes(dataType)) {\n return value;\n }\n if (value === \"\") {\n return null;\n }\n const parsedNumber = Number(value);\n if (isNaN(parsedNumber)) {\n return value;\n }\n return parsedNumber;\n}\nfunction EditableCellInner({\n initialValue,\n currentValue,\n cellId,\n dataType,\n onCellEdit,\n onCellValidationError,\n clearCellValidationError,\n originalRowData,\n rowId,\n columnId,\n validateEdit,\n validationError\n}) {\n const [inputValue, setInputValue] = useState(valueToString(currentValue));\n const isCancelled = useRef(false);\n const validationAbortControllerRef = useRef(null);\n const abortController = useCallback(() => {\n if (validationAbortControllerRef.current) {\n validationAbortControllerRef.current.abort();\n validationAbortControllerRef.current = null;\n }\n }, []);\n const hasValidationError = validationError != null;\n const isEdited = currentValue !== initialValue;\n useEffect(() => {\n setInputValue(valueToString(currentValue));\n }, [currentValue]);\n useEffect(() => {\n // Cleanup abort controller on unmount\n return () => {\n abortController();\n };\n }, [abortController]);\n const handleBlur = useCallback(() => {\n // Do not commit the edit if it was cancelled with Escape key\n if (isCancelled.current) {\n isCancelled.current = false;\n return;\n }\n\n // Cancel any in-flight validation\n abortController();\n const parsedValue = parseValueByType(inputValue, dataType);\n onCellEdit(cellId, {\n rowId,\n columnId,\n newValue: parsedValue,\n oldValue: initialValue,\n originalRowData\n });\n if (validateEdit) {\n // Create new AbortController for this validation\n const abortController = new AbortController();\n validationAbortControllerRef.current = abortController;\n const validationPromise = validateEdit(parsedValue);\n\n // Race between validation and abort\n Promise.race([validationPromise, new Promise((_, reject) => {\n abortController.signal.addEventListener(\"abort\", () => {\n reject(new DOMException(\"Aborted\", \"AbortError\"));\n });\n })]).then(errorMessage => {\n if (abortController.signal.aborted) {\n return;\n }\n if (errorMessage) {\n onCellValidationError?.(cellId, errorMessage);\n } else {\n clearCellValidationError?.(cellId);\n }\n }, error => {\n if (!abortController.signal.aborted && error.name !== \"AbortError\") {\n onCellValidationError?.(cellId, VALIDATION_ERROR_MESSAGE);\n }\n });\n }\n }, [abortController, inputValue, dataType, onCellEdit, cellId, rowId, columnId, initialValue, originalRowData, validateEdit, onCellValidationError, clearCellValidationError]);\n const handleChange = useCallback(value => {\n // Cancel any in-flight validation\n abortController();\n setInputValue(value);\n }, [abortController]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n if (e.key === \"Escape\") {\n isCancelled.current = true;\n setInputValue(valueToString(currentValue));\n e.currentTarget.blur();\n }\n }, [currentValue]);\n const inputType = dataType && NUMBER_TYPES.includes(dataType) ? \"number\" : \"text\";\n return /*#__PURE__*/React.createElement(Tooltip.Provider, null, /*#__PURE__*/React.createElement(Tooltip.Root, {\n disabled: !hasValidationError\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, null, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkEditableCell, {\n [styles.error]: hasValidationError,\n [styles.osdkEditedInput]: isEdited\n })\n }, /*#__PURE__*/React.createElement(Input, {\n type: inputType,\n value: inputValue,\n className: styles.osdkEditableInput,\n onValueChange: handleChange,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n \"aria-invalid\": hasValidationError\n }), hasValidationError && /*#__PURE__*/React.createElement(Error, {\n className: styles.errorIcon\n }))), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, {\n sideOffset: 4,\n side: \"bottom\"\n }, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.validationError\n }, /*#__PURE__*/React.createElement(Error, {\n className: styles.errorIcon\n }), validationError), /*#__PURE__*/React.createElement(Tooltip.Arrow, null))))));\n}\nexport const EditableCell = /*#__PURE__*/React.memo(EditableCellInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const isAsyncCellData = value => {\n return value != null && typeof value === \"object\" && \"__asyncCell\" in value && value.__asyncCell === true;\n};\nexport const createAsyncCellData = ({\n data,\n isLoading,\n error\n}) => ({\n __asyncCell: true,\n data,\n isLoading,\n error\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getCellId(cellIdentifier) {\n return JSON.stringify(cellIdentifier);\n}","/*\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 { AsyncValueCell } from \"./components/AsyncValueCell.js\";\nimport { EditableCell } from \"./EditableCell.js\";\nimport { isAsyncCellData } from \"./utils/AsyncCellData.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\nexport function renderDefaultCell(cellContext) {\n const meta = cellContext.table.options.meta;\n const columnMeta = cellContext.column.columnDef.meta;\n const cellValue = cellContext.getValue();\n const asyncCellData = isAsyncCellData(cellValue) ? cellValue : undefined;\n\n // Function-backed columns are read-only: the value is server-computed\n // and cannot be edited in the table. Return the async cell directly.\n if (columnMeta?.isAsyncColumn && asyncCellData) {\n return /*#__PURE__*/React.createElement(AsyncValueCell, asyncCellData);\n }\n if (!columnMeta?.editable || !meta?.onCellEdit || !meta?.isInEditMode) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, cellValue);\n }\n const rowId = cellContext.row.id;\n const columnId = cellContext.column.id;\n const cellId = getCellId({\n rowId,\n columnId\n });\n const cellEdits = meta.cellEdits;\n const editedValue = cellEdits?.[cellId];\n const currentValue = editedValue?.newValue ?? cellValue;\n const validationError = meta.validationErrors?.get(cellId);\n return /*#__PURE__*/React.createElement(EditableCell, {\n initialValue: cellValue,\n currentValue: currentValue,\n cellId: cellId,\n dataType: columnMeta?.dataType,\n onCellEdit: meta.onCellEdit,\n onCellValidationError: meta.onCellValidationError,\n clearCellValidationError: meta.clearCellValidationError,\n originalRowData: cellContext.row.original,\n rowId: rowId,\n columnId: columnId,\n validateEdit: columnMeta?.validateEdit,\n validationError: validationError\n });\n}","/*\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs(objectType, columnDefinitions) {\n const {\n metadata,\n loading,\n error\n } = useOsdkMetadata(objectType);\n const columns = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n return {\n columns,\n loading,\n error\n };\n}\nfunction getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {\n return columnDefinitions.map(col => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName\n } = col;\n const propertyMetadata = locator.type === \"property\" ? objectProperties?.[locator.id] : undefined;\n const colKey = locator.id;\n const dataType = propertyMetadata?.type && typeof propertyMetadata.type === \"string\" ? propertyMetadata.type : undefined;\n const colDef = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isAsyncColumn: locator.type === \"function\",\n isVisible: col.isVisible !== false,\n editable,\n dataType,\n validateEdit: col.validateEdit\n },\n size: width,\n ...(minWidth ? {\n minSize: minWidth\n } : {}),\n ...(maxWidth ? {\n maxSize: maxWidth\n } : {}),\n enableResizing: resizable,\n // Function-backed columns must be sorted on the frontend, so disable sorting for now\n enableSorting: locator.type === \"function\" ? false : orderable,\n enableColumnFilter: filterable,\n cell: cellContext => {\n const object = cellContext.row.original;\n if (renderCell) {\n return renderCell(object, locator);\n }\n return renderDefaultCell(cellContext);\n }\n };\n return colDef;\n });\n}\nfunction getDefaultColumns(objectProperties) {\n if (!objectProperties) return [];\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef = {\n accessorKey: key,\n header: property.displayName ?? key\n };\n return colDef;\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const SELECTION_COLUMN_ID = \"__selection__\";\nexport const DEFAULT_COLUMN_WIDTH = 80;\nexport const DEFAULT_ROW_HEIGHT = 40;\nexport const DEFAULT_LOADING_COLUMN_WIDTH = 120;\nexport const MIN_LOADING_ROWS = 5;\nexport const SCROLL_FETCH_THRESHOLD = 100;\nexport const VIRTUALIZER_OVERSCAN = 5;\nexport const DEFAULT_PAGE_SIZE = 50;\nexport const DEFAULT_OBJECT_TABLE_DEDUPE_INTERVAL_MS = 60_000;\nexport const DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS = 300_000;\n\n// The main goal here is to split function executions into smaller pieces.\n// The executor should be happy to run several smaller pieces at once, so run\n// up to 10 at a time to improve performance.\nexport const DEFAULT_MAX_CONCURRENT_REQUESTS = 10;\nexport const SELECTION_COLUMN_WIDTH = 50;","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\nexport const useColumnPinning = ({\n columnDefinitions,\n hasSelectionColumn,\n onColumnsPinnedChanged\n}) => {\n const [columnPinning, setColumnPinning] = useState({\n left: [],\n right: []\n });\n\n // Update column pinning when columnDefinitions change\n useEffect(() => {\n const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);\n const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];\n setColumnPinning({\n left: [...selectionCol, ...(defaultState.left ?? [])],\n right: [...(defaultState.right ?? [])]\n });\n }, [columnDefinitions, hasSelectionColumn]);\n const onColumnPinningChange = useCallback(updater => {\n setColumnPinning(prev => {\n const newPinning = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnsPinnedChanged) {\n const newStates = convertColumnPinningStateToArray(newPinning);\n const stateWithoutSelectionCol = newStates.filter(state => state.columnId !== SELECTION_COLUMN_ID);\n onColumnsPinnedChanged(stateWithoutSelectionCol);\n }\n return newPinning;\n });\n }, [onColumnsPinnedChanged]);\n return {\n columnPinning,\n onColumnPinningChange\n };\n};\nconst getColumnPinningStateFromColumnDefs = columnDefinitions => {\n if (!columnDefinitions) {\n return {};\n }\n const columnPinningState = columnDefinitions.reduce((acc, {\n locator,\n pinned\n }) => {\n const colKey = locator.id.toString();\n const isPinned = pinned != null && pinned !== \"none\";\n if (!isPinned) {\n return acc;\n }\n if (pinned === \"left\") {\n return {\n ...acc,\n left: [...(acc.left ?? []), colKey]\n };\n }\n return {\n ...acc,\n right: [...(acc.right ?? []), colKey]\n };\n }, {\n left: [],\n right: []\n });\n return columnPinningState;\n};\n\n/**\n * Converts ColumnPinningState to array format for the callback\n */\nfunction convertColumnPinningStateToArray(pinningState) {\n return [...(pinningState.left ?? []).map(columnId => ({\n columnId,\n pinned: \"left\"\n })), ...(pinningState.right ?? []).map(columnId => ({\n columnId,\n pinned: \"right\"\n }))];\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useColumnResize = ({\n onColumnResize\n}) => {\n const [columnSizing, setColumnSizing] = useState({});\n const onColumnSizingChange = useCallback(updater => {\n setColumnSizing(prev => {\n const newState = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnResize) {\n for (const columnId of Object.keys(newState)) {\n if (newState[columnId] !== prev[columnId]) {\n onColumnResize(columnId, newState[columnId]);\n }\n }\n for (const columnId of Object.keys(prev)) {\n if (!(columnId in newState)) {\n onColumnResize(columnId, null);\n }\n }\n }\n return newState;\n });\n }, [onColumnResize]);\n return {\n columnSizing,\n onColumnSizingChange\n };\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nexport const useColumnVisibility = ({\n allColumns,\n onColumnVisibilityChanged\n}) => {\n const [columnVisibility, setColumnVisibility] = useState(() => getColumnVisibilityState(allColumns));\n const [columnOrder, setColumnOrder] = useState(() => getColumnOrder(allColumns));\n\n // TODO: Explore other ways to respond to props changes for controlled mode\n useEffect(() => {\n setColumnVisibility(getColumnVisibilityState(allColumns));\n }, [allColumns]);\n useEffect(() => {\n setColumnOrder(getColumnOrder(allColumns));\n }, [allColumns]);\n const onColumnVisibilityChange = useCallback(updaterOrValue => {\n setColumnVisibility(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n if (onColumnVisibilityChanged) {\n const changes = Object.entries(newState).map(([columnId, isVisible]) => ({\n columnId,\n isVisible\n }));\n onColumnVisibilityChanged(changes);\n }\n return newState;\n });\n }, [onColumnVisibilityChanged]);\n const onColumnOrderChange = useCallback(updaterOrValue => {\n setColumnOrder(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n return newState;\n });\n }, []);\n return {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n };\n};\nconst getColumnVisibilityState = allColumns => {\n return allColumns.reduce((acc, col) => {\n const colId = col.id ?? col.accessorKey;\n if (colId) {\n return {\n ...acc,\n [colId]: col.meta?.isVisible !== false\n };\n }\n return acc;\n }, {});\n};\nconst getColumnOrder = allColumns => {\n return allColumns.map(col => col.id ?? col.accessorKey).filter(id => id != null);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport function useEditableTable({\n editMode = \"manual\",\n onCellValueChanged,\n onSubmitEdits\n}) {\n const [isActive, setActive] = useState(editMode === \"always\");\n const [cellEdits, setCellEdits] = useState({});\n const [validationErrors, setValidationErrors] = useState(new Map());\n const clearCellValidationError = useCallback(cellId => {\n setValidationErrors(prev => {\n const newErrors = new Map(prev);\n newErrors.delete(cellId);\n return newErrors;\n });\n }, []);\n const handleCellEdit = useCallback((cellId, info) => {\n // If value is changed back to original, remove it from edits\n if (info.newValue === info.oldValue) {\n setCellEdits(prev => {\n const {\n [cellId]: _,\n ...rest\n } = prev;\n return rest;\n });\n } else {\n setCellEdits(prev => ({\n ...prev,\n [cellId]: info\n }));\n }\n onCellValueChanged?.(info);\n }, [onCellValueChanged]);\n const clearEdits = useCallback(() => {\n setCellEdits({});\n setValidationErrors(new Map());\n }, []);\n const handleSubmitEdits = useCallback(async () => {\n const edits = Object.values(cellEdits);\n return onSubmitEdits ? onSubmitEdits(edits) : false;\n }, [cellEdits, onSubmitEdits]);\n const onCellValidationError = useCallback((cellId, error) => {\n setValidationErrors(prev => {\n const newErrors = new Map(prev);\n newErrors.set(cellId, error);\n return newErrors;\n });\n }, []);\n const editModeState = editMode === \"always\" ? {\n type: \"always\",\n isActive: true\n } : {\n type: \"manual\",\n isActive,\n setActive\n };\n return {\n cellEdits,\n onCellEdit: handleCellEdit,\n onSubmitEdits: onSubmitEdits ? handleSubmitEdits : undefined,\n clearEdits,\n editModeState,\n onCellValidationError,\n validationErrors,\n clearCellValidationError\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isObjectSet } from \"@osdk/client\";\nexport function addFilterClauseToObjectSet(objectSet, whereClause) {\n if (objectSet == null || typeof objectSet !== \"object\" || !isObjectSet(objectSet)) {\n return objectSet;\n }\n return objectSet.where(whereClause);\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getWireObjectSet, isObjectSet } from \"@osdk/client\";\n\n// TODO: Remove this workaround once function queries support\n// derivedProperties (withProperties) in the ObjectSet payload.\n\n/**\n * Function queries fail when the payload contains ObjectSets with\n * derivedProperties (withProperties nodes). This strips them by\n * converting any ObjectSet param values to their wire representation\n * with withProperties nodes unwrapped.\n */\nexport function stripDerivedPropertiesFromParams(params) {\n if (params == null || typeof params !== \"object\") {\n return params;\n }\n if (isObjectSet(params)) {\n const wire = getWireObjectSet(params);\n return stripWithPropertiesFromWire(wire);\n }\n if (Array.isArray(params)) {\n return params.map(stripDerivedPropertiesFromParams);\n }\n const result = {};\n for (const [key, value] of Object.entries(params)) {\n result[key] = stripDerivedPropertiesFromParams(value);\n }\n return result;\n}\nexport function stripWithPropertiesFromWire(wire) {\n if (wire.type === \"withProperties\") {\n return stripWithPropertiesFromWire(wire.objectSet);\n }\n const result = {};\n for (const [key, value] of Object.entries(wire)) {\n if (key === \"objectSet\" && value != null && typeof value === \"object\" && !Array.isArray(value)) {\n result[key] = stripWithPropertiesFromWire(value);\n } else if (key === \"objectSets\" && Array.isArray(value)) {\n result[key] = value.map(os => stripWithPropertiesFromWire(os));\n } else {\n result[key] = value;\n }\n }\n return result;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkFunctions } from \"@osdk/react/experimental\";\nimport { chunk } from \"lodash-es\";\nimport { useMemo, useRef } from \"react\";\nimport { addFilterClauseToObjectSet } from \"../utils/addFilterClauseToObjectSet.js\";\nimport { createAsyncCellData } from \"../utils/AsyncCellData.js\";\nimport { DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS, DEFAULT_MAX_CONCURRENT_REQUESTS, DEFAULT_PAGE_SIZE } from \"../utils/constants.js\";\nimport { stripDerivedPropertiesFromParams } from \"../utils/stripDerivedPropertiesFromParams.js\";\nexport function useFunctionColumnsData({\n objectSet,\n objects,\n columnDefinitions,\n primaryKeyApiName,\n pageSize = DEFAULT_PAGE_SIZE\n}) {\n const prevDataRef = useRef({});\n const stableObjects = useStableObjects(objects);\n // TODO: replace with useDeepEqual when it's added\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stableObjectSet = useMemo(() => objectSet, [JSON.stringify(objectSet)]);\n const functionColDefs = useMemo(() => extractFunctionLocators(columnDefinitions), [columnDefinitions]);\n const disabled = !stableObjectSet || !stableObjects?.length || functionColDefs.length === 0;\n\n // When a new page loads, only that page's queries fire — old pages\n // hit the dedupeIntervalMs cache since their params are unchanged.\n const pagedObjectSets = useMemo(() => {\n if (!stableObjectSet || !stableObjects?.length) return [];\n return buildPagedObjectSets(stableObjectSet, stableObjects, primaryKeyApiName, pageSize);\n }, [stableObjectSet, stableObjects, primaryKeyApiName, pageSize]);\n const queryGrid = useMemo(() => {\n if (pagedObjectSets.length === 0 || functionColDefs.length === 0) {\n return EMPTY_QUERY_GRID;\n }\n return buildQueryGrid(pagedObjectSets, functionColDefs);\n }, [pagedObjectSets, functionColDefs]);\n const results = useOsdkFunctions({\n queries: queryGrid.queries,\n enabled: !disabled,\n maxConcurrent: DEFAULT_MAX_CONCURRENT_REQUESTS\n });\n const mergedResults = useMemo(() => mergePagedResults(results, queryGrid.numColumns), [results, queryGrid.numColumns]);\n const data = useMemo(() => {\n const columnData = buildFunctionColumnData(mergedResults, functionColDefs, stableObjects, disabled, prevDataRef.current);\n prevDataRef.current = columnData;\n return columnData;\n }, [mergedResults, functionColDefs, stableObjects, disabled]);\n return data;\n}\n\n/**\n * Pairs a flat queries array with the layout metadata needed to recover per-column\n * results back into per-column groups. The numColumns value is produced by\n * the same function that builds the queries, so the two are always in sync.\n */\n\nconst EMPTY_QUERY_GRID = {\n queries: [],\n numColumns: 0\n};\n\n/** Filters columnDefinitions down to only function-backed locators. */\nfunction extractFunctionLocators(columnDefinitions) {\n if (!columnDefinitions) return [];\n return columnDefinitions.filter(colDef => colDef.locator.type === \"function\").map(colDef => colDef.locator);\n}\n\n/** Chunks objects into pages and creates a filtered ObjectSet per page. */\nfunction buildPagedObjectSets(objectSet, objects, primaryKeyApiName, pageSize) {\n if (!primaryKeyApiName) {\n return [stripDerivedPropertiesFromParams(objectSet)];\n }\n return chunk(objects, pageSize).map(page => {\n const whereClause = {\n [primaryKeyApiName]: {\n $in: page.map(obj => obj.$primaryKey)\n }\n };\n return stripDerivedPropertiesFromParams(addFilterClauseToObjectSet(objectSet, whereClause));\n });\n}\n\n/**\n * Builds a flat query array and the layout metadata needed to recover per-column results.\n *\n * Layout: [page0_col0, page0_col1, ..., page1_col0, page1_col1, ...]\n * Page-first ordering ensures first concurrent queries prioritizes the first page,\n * so visible rows get all their columns populated before later pages.\n */\nfunction buildQueryGrid(pagedObjectSets, functionColDefs) {\n const queries = [];\n for (const pagedObjectSet of pagedObjectSets) {\n for (const locator of functionColDefs) {\n queries.push({\n queryDefinition: locator.queryDefinition,\n options: {\n params: locator.getFunctionParams(pagedObjectSet),\n dedupeIntervalMs: locator.dedupeIntervalMs ?? DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS\n }\n });\n }\n }\n return {\n queries,\n numColumns: functionColDefs.length\n };\n}\n\n/**\n * Merges paged results into one merged result per column.\n * Each column has results spread across pages — this combines their\n * functionsMaps so buildFunctionColumnData can look up any object by key.\n *\n * Relies on QueryGrid layout: results[i] belongs to column (i % numColumns).\n * i.e. the first N results are the first page of each column, the next N results are the second page, etc.\n */\nfunction mergePagedResults(results, numColumns) {\n if (numColumns === 0) return [];\n const merged = Array.from({\n length: numColumns\n }, () => ({\n isLoading: false,\n error: undefined,\n functionsMap: {}\n }));\n results.forEach((result, index) => {\n const columnIndex = index % numColumns;\n const entry = merged[columnIndex];\n if (result.isLoading) {\n entry.isLoading = true;\n }\n if (result.error) {\n entry.error = result.error;\n }\n const pageData = result.data;\n if (pageData) {\n Object.assign(entry.functionsMap, pageData);\n }\n });\n return merged;\n}\nfunction buildFunctionColumnData(results, functionColDefs, objects, disabled, prevColumnData) {\n const columnData = {};\n if (disabled || !objects) return columnData;\n results.forEach((result, index) => {\n const locator = functionColDefs[index];\n if (!locator) return;\n const columnId = String(locator.id);\n columnData[columnId] = {};\n objects.forEach(obj => {\n const key = String(obj.$primaryKey);\n const prevData = prevColumnData[columnId]?.[key]?.data;\n columnData[columnId][key] = createAsyncCellData(resolveCell(result, locator.getKey(obj), locator.getValue, prevData));\n });\n });\n return columnData;\n}\n\n/** Resolves the cell state: error, loaded, or loading with previous data. */\nfunction resolveCell(result, objectKey, getValue, prevData) {\n if (result.error) {\n return {\n isLoading: false,\n error: result.error\n };\n }\n if (objectKey in result.functionsMap) {\n const rawData = result.functionsMap[objectKey];\n return {\n isLoading: false,\n data: getValue ? getValue(rawData) : rawData\n };\n }\n // Key not in results — still loading, or query returned no data for this object\n // Return with previous data\n return {\n isLoading: result.isLoading,\n data: prevData\n };\n}\nconst useStableObjects = objects => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => objects, [\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify((objects ?? []).map(item => ({\n $apiName: item.$apiName,\n $primaryKey: item.$primaryKey\n })).sort((a, b) => {\n if (a.$apiName !== b.$apiName) {\n return a.$apiName.localeCompare(b.$apiName);\n }\n return String(a.$primaryKey).localeCompare(String(b.$primaryKey));\n }))]);\n};","/*\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 { useObjectSet, useOsdkObjects } from \"@osdk/react/experimental\";\nimport { useMemo } from \"react\";\nimport { DEFAULT_OBJECT_TABLE_DEDUPE_INTERVAL_MS, DEFAULT_PAGE_SIZE } from \"../utils/constants.js\";\nimport { useFunctionColumnsData } from \"./useFunctionColumnsData.js\";\n/**\n * This hook is a wrapper that conditionally uses either useObjectSet or useOsdkObjects\n * based on whether an objectSet prop is provided.\n * It extracts RDP locators from columnDefinitions and applies withProperties\n * to return data containing the derived properties.\n */\nexport function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting, objectSet, objectSetOptions, dedupeIntervalMs = DEFAULT_OBJECT_TABLE_DEDUPE_INTERVAL_MS, pageSize = DEFAULT_PAGE_SIZE) {\n const orderBy = useMemo(() => {\n if (!sorting || sorting.length === 0) {\n return undefined;\n }\n return sorting.reduce((acc, sort) => {\n acc[sort.id] = sort.desc ? \"desc\" : \"asc\";\n return acc;\n }, {});\n }, [sorting]);\n\n // Extract derived properties definition\n const withProperties = useMemo(() => {\n if (!columnDefinitions) {\n return;\n }\n const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(colLocator => {\n return colLocator.type === \"rdp\";\n });\n if (!rdpColumns.length) {\n return;\n }\n return rdpColumns.reduce((acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur.creator\n };\n }, {});\n }, [columnDefinitions]);\n\n // When objectSet is provided and it's an object type, use useObjectSet. Otherwise, use useOsdkObjects.\n const isObjectType = objectOrInterfaceType.type === \"object\";\n const shouldUseObjectSet = !!objectSet && isObjectType;\n\n // When shouldUseObjectSet is true, we know objectSet is defined\n // and objectOrInterfaceType is an ObjectTypeDefinition\n const objectSetResult = useObjectSet(shouldUseObjectSet ? objectSet : undefined, {\n ...objectSetOptions,\n withProperties: withProperties,\n where: filter,\n orderBy,\n pageSize,\n enabled: shouldUseObjectSet,\n dedupeIntervalMs\n });\n const osdkObjectsResult = useOsdkObjects(objectOrInterfaceType, {\n withProperties,\n pageSize,\n where: filter,\n orderBy,\n enabled: !shouldUseObjectSet,\n dedupeIntervalMs\n });\n\n // Get the result from the appropriate hook\n const baseResult = shouldUseObjectSet ? objectSetResult : osdkObjectsResult;\n const primaryKeyApiName = objectOrInterfaceType.type === \"object\" ? objectOrInterfaceType.primaryKeyApiName : undefined;\n\n // Call useFunctionColumnsData to get function column data\n const functionColumnData = useFunctionColumnsData({\n objectSet: baseResult.objectSet,\n objects: baseResult.data,\n columnDefinitions,\n primaryKeyApiName,\n pageSize\n });\n\n // Merge function column data into each object\n const mergedData = useMemo(() => {\n if (!baseResult.data) return baseResult.data;\n return baseResult.data.map(obj => {\n const objKey = String(obj.$primaryKey);\n const functionData = {};\n\n // Collect all function column data for this object\n Object.entries(functionColumnData).forEach(([columnId, columnData]) => {\n if (columnData[objKey]) {\n functionData[columnId] = columnData[objKey];\n }\n });\n\n // Return object with function data merged in\n return {\n ...obj,\n ...functionData\n };\n });\n }, [baseResult.data, functionColumnData]);\n\n // Return the result with merged data\n return {\n ...baseResult,\n data: mergedData\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const getRowId = row => {\n return getRowIdFromPrimaryKey(row.$primaryKey);\n};\nexport const getRowIdFromPrimaryKey = primaryKey => primaryKey.toString();","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\nexport function useRowSelection({\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelection,\n data\n}) {\n // The rowSelectionState in uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState({});\n\n // Used for shift-click behavior in \"multiple\" mode\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState(null);\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n // Row selection state\n // If controlled mode, return the state from selectedRows prop\n // If uncontrolled, return the internalRowSelection state\n const rowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled) {\n const selectedRowIds = isAllSelectedProp ? (data ?? []).map(item => item.$primaryKey) : selectedRows;\n return getRowSelectionState(selectedRowIds);\n }\n return internalRowSelection;\n }, [enableRowSelection, isControlled, selectedRows, isAllSelectedProp, internalRowSelection, data]);\n const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;\n const totalCount = data?.length ?? 0;\n // In controlled mode, use the prop if provided, otherwise calculate based on selected count\n const isAllSelected = isControlled && isAllSelectedProp !== undefined ? isAllSelectedProp : totalCount > 0 && selectedCount === totalCount;\n const hasSelection = isAllSelected || selectedCount > 0;\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n const newSelectedRows = isAllSelected ? [] : data.map(item => item.$primaryKey);\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows, true);\n }, [enableRowSelection, data, isAllSelected, isControlled, onRowSelection]);\n const onToggleRow = useCallback((rowId, rowIndex, isShiftClick = false) => {\n if (!enableRowSelection || !data) return;\n let newSelectedRows = [];\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n } else {\n // Multiple selection mode\n\n // When user does shiftClick but lastSelectedRowIndex is null,\n // it is treated as a normal click in multiple selection\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows({\n rowId,\n rowIndex,\n data,\n lastSelectedRowIndex,\n rowSelectionState\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n newSelectedRows = getMultipleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n // Only update lastSelectedRowIndex if we're selecting (not deselecting)\n if (!isCurrentlySelected({\n rowIndex,\n data,\n rowSelectionState\n })) {\n setLastSelectedRowIndex(rowIndex);\n }\n }\n }\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows, false);\n }, [enableRowSelection, data, selectionMode, isControlled, onRowSelection, rowSelectionState, lastSelectedRowIndex]);\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow\n };\n}\nfunction getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n // Toggle row selection in single selection mode\n const newSelectedRows = rowSelectionState[rowId] ? [] : [primaryKey];\n return newSelectedRows;\n}\nfunction getRangeSelectionRows({\n lastSelectedRowIndex,\n rowIndex,\n data,\n rowSelectionState\n}) {\n // This function is only called if lastSelectedRowIndex is not null\n // This condition is added for typechecks only\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n // Add all rows in range to selectedRows if not yet selected\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\nfunction isCurrentlySelected({\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return currentlySelected.includes(primaryKey);\n}\nfunction getMultipleSelectionRows({\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n // Handles single row toggle in multiple selection mode\n const newSelectedRows = isCurrentlySelected({\n rowIndex,\n data,\n rowSelectionState\n }) ? currentlySelected.filter(i => i !== primaryKey) : [...currentlySelected, primaryKey];\n return newSelectedRows;\n}\n\n/**\n * Builds a range of rows from startIndex to endIndex\n */\nfunction getRowsInRange(data, startIndex, endIndex) {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows = [];\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n return rows;\n}\n\n/**\n * Converts an array of primary keys to a RowSelectionState object\n */\nfunction getRowSelectionState(primaryKeys) {\n return primaryKeys.reduce((acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n }, {});\n}\n\n/**\n * Converts from a RowSelectionState object back to an array of primary keys\n */\nfunction getSelectedPrimaryKeys(selectionState, data) {\n return data.filter(item => selectionState[getRowId(item)]).map(item => item.$primaryKey);\n}","/*\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 { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nexport function SelectionHeaderCell({\n isAllSelected,\n hasSelection,\n onToggleAll\n}) {\n return /*#__PURE__*/React.createElement(Checkbox, {\n indeterminate: hasSelection && !isAllSelected,\n checked: isAllSelected,\n onCheckedChange: onToggleAll,\n \"aria-label\": \"Select all rows\"\n });\n}\nexport function SelectionCell({\n row,\n onToggleRow\n}) {\n const handleClick = useCallback(event => {\n // TODO: Create ActionBoundary component\n event.stopPropagation();\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n }, [onToggleRow, row.id, row.index]);\n const handleKeyDown = useCallback(event => {\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 }, [onToggleRow, row.id, row.index]);\n return /*#__PURE__*/React.createElement(\"div\", {\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: row.getIsSelected(),\n \"aria-label\": `Select row ${row.index + 1}`\n }));\n}","/*\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, { useMemo, useRef } from \"react\";\nimport { SelectionCell, SelectionHeaderCell } from \"../SelectionCells.js\";\nimport { SELECTION_COLUMN_ID, SELECTION_COLUMN_WIDTH } from \"../utils/constants.js\";\nexport const useSelectionColumn = ({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n}) => {\n // TODO: Replace with useLatestRef\n const isAllSelectedRef = useRef(isAllSelected);\n isAllSelectedRef.current = isAllSelected;\n const hasSelectionRef = useRef(hasSelection);\n hasSelectionRef.current = hasSelection;\n const onToggleAllRef = useRef(onToggleAll);\n onToggleAllRef.current = onToggleAll;\n const onToggleRowRef = useRef(onToggleRow);\n onToggleRowRef.current = onToggleRow;\n const selectionColumn = useMemo(() => {\n if (selectionMode === \"none\") return null;\n const colDef = {\n id: SELECTION_COLUMN_ID,\n header: () => selectionMode === \"multiple\" ? /*#__PURE__*/React.createElement(SelectionHeaderCell, {\n isAllSelected: isAllSelectedRef.current,\n hasSelection: hasSelectionRef.current,\n onToggleAll: onToggleAllRef.current\n }) : null,\n cell: ({\n row\n }) => /*#__PURE__*/React.createElement(SelectionCell, {\n row: row,\n onToggleRow: onToggleRowRef.current\n }),\n size: SELECTION_COLUMN_WIDTH,\n minSize: SELECTION_COLUMN_WIDTH,\n maxSize: SELECTION_COLUMN_WIDTH,\n enableSorting: false,\n enableResizing: false,\n enablePinning: false\n };\n return colDef;\n }, [selectionMode]);\n return selectionColumn;\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nexport const useTableSorting = ({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n}) => {\n // The sorting state in uncontrolled mode\n const [internalSorting, setInternalSorting] = useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);\n const isControlled = orderBy !== undefined;\n\n // Sorting state\n // If controlled mode, return the state from orderBy prop\n // If uncontrolled, return the internalSorting state\n const sortingState = useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);\n const onSortingChange = useCallback(updater => {\n const newSorting = typeof updater === \"function\" ? updater(sortingState) : updater;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSorting(newSorting);\n }\n if (onOrderByChanged) {\n const newOrderBy = convertSortingStateToOrderBy(newSorting);\n onOrderByChanged(newOrderBy);\n }\n }, [isControlled, sortingState, onOrderByChanged]);\n return {\n sorting: sortingState,\n onSortingChange\n };\n};\nfunction convertOrderByToSortingState(orderBy) {\n return orderBy.map(({\n property,\n direction\n }) => ({\n id: property,\n desc: direction === \"desc\"\n }));\n}\nfunction convertSortingStateToOrderBy(sorting) {\n return sorting.map(({\n id,\n desc\n }) => ({\n property: id,\n direction: desc ? \"desc\" : \"asc\"\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableRow {\n position: absolute;\n display: flex;\n width: max-content;\n min-width: 100%;\n background-color: var(--osdk-table-row-bg-default);\n border-top: var(--osdk-table-row-divider);\n border-bottom: var(--osdk-table-border-width) solid transparent;\n\n &:last-child {\n border-bottom: var(--osdk-table-border);\n }\n\n /* Zebra rows */\n &:nth-child(even) {\n background-color: var(\n --osdk-table-row-bg-alternate,\n var(--osdk-table-row-bg-default)\n );\n }\n\n &:hover {\n z-index: 1;\n background-color: var(\n --osdk-table-row-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n border-top-color: var(--osdk-table-row-border-color-hover);\n border-bottom-color: var(--osdk-table-row-border-color-hover);\n }\n\n &[data-selected=\"true\"],\n &[data-focused=\"true\"] {\n z-index: 2;\n background-color: var(--osdk-table-row-bg-active);\n border-top-color: var(--osdk-table-row-border-color-active);\n border-bottom-color: var(--osdk-table-row-border-color-active);\n }\n\n &[data-selected=\"true\"] + &[data-selected=\"true\"] {\n border-top-color: transparent;\n }\n\n &[data-selected=\"true\"]:has(+ &[data-selected=\"true\"]) {\n border-bottom-color: transparent;\n }\n}\n","/*\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 { LoadingCell } from \"./LoadingCell.js\";\nimport rowStyles from \"./TableRow.module.css\";\nimport { DEFAULT_COLUMN_WIDTH, DEFAULT_ROW_HEIGHT } from \"./utils/constants.js\";\nexport function LoadingRow({\n headers,\n columnCount,\n translateY,\n rowHeight = DEFAULT_ROW_HEIGHT,\n columnWidth = DEFAULT_COLUMN_WIDTH\n}) {\n return /*#__PURE__*/React.createElement(\"tr\", {\n className: rowStyles.osdkTableRow,\n style: {\n height: `${rowHeight}px`,\n transform: `translateY(${translateY}px)`\n }\n }, /*#__PURE__*/React.createElement(React.Fragment, null, Array.from({\n length: columnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(LoadingCell, {\n key: `loading-cell-${index}`,\n width: width\n });\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableBody {\n display: grid;\n position: relative;\n width: max-content;\n min-width: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.draggableListContainer {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-draggable-item-gap);\n overflow-y: auto;\n}\n\n.draggableItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-draggable-item-gap);\n padding: var(--osdk-draggable-item-padding);\n background-color: var(--osdk-draggable-item-bg);\n border: var(--osdk-draggable-item-border);\n border-radius: var(--osdk-draggable-item-border-radius);\n width: 100%;\n touch-action: none;\n user-select: none;\n}\n\n.draggableItem[data-dragging=\"true\"] {\n opacity: 0.5;\n}\n\n.dragHandle {\n display: flex;\n cursor: var(--osdk-drag-handle-cursor);\n color: var(--osdk-draggable-item-drag-icon-color);\n\n &:hover {\n color: var(--osdk-draggable-item-drag-icon-color-hover);\n }\n\n &:active {\n cursor: var(--osdk-drag-handle-cursor-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.itemContent {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.removeButton {\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--osdk-draggable-item-drag-icon-color);\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n color: var(--osdk-typography-color-danger-rest);\n }\n\n &:active {\n color: var(--osdk-typography-color-danger-rest);\n background: oklch(\n from var(--osdk-surface-background-color-danger-hover) l c h / 0.2\n );\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { DragHandleVertical, SmallCross, Trash } from \"@blueprintjs/icons\";\nimport { closestCenter, DndContext as BaseDndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport styles from \"./DraggableList.module.css\";\nfunction DraggableListItem({\n item,\n onRemove,\n removeIconVariant = \"trash\",\n renderContent\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id: item.id\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition\n };\n const handleRemove = useCallback(() => {\n onRemove?.(item.id);\n }, [item.id, onRemove]);\n const RemoveIcon = removeIconVariant === \"trash\" ? Trash : SmallCross;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: setNodeRef,\n style: style,\n className: styles.draggableItem,\n \"data-dragging\": isDragging\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: styles.dragHandle,\n \"aria-label\": `Reorder ${item.label}`\n }, attributes, listeners), /*#__PURE__*/React.createElement(DragHandleVertical, {\n className: styles.icon\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemContent\n }, renderContent ? renderContent(item) : item.label), onRemove && /*#__PURE__*/React.createElement(Button, {\n className: styles.removeButton,\n onClick: handleRemove,\n \"aria-label\": `Remove ${item.label}`\n }, /*#__PURE__*/React.createElement(RemoveIcon, {\n className: styles.icon\n })));\n}\nexport function DraggableList({\n items,\n onReorder,\n onRemove,\n removeIconVariant = \"cross\",\n renderContent,\n emptyMessage,\n className\n}) {\n const itemIds = useMemo(() => items.map(item => item.id), [items]);\n const sensors = useSensors(useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5\n }\n }), useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n }));\n const handleDragEnd = useCallback(event => {\n const {\n active,\n over\n } = event;\n if (over && active.id !== over.id) {\n const oldIndex = items.findIndex(item => item.id === active.id);\n const newIndex = items.findIndex(item => item.id === over.id);\n onReorder(oldIndex, newIndex);\n }\n }, [items, onReorder]);\n const containerRef = useRef(null);\n useKeyboardEvents(containerRef);\n\n // TODO: Revert when @types/react is fixed\n const DndContext = BaseDndContext;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(styles.draggableListContainer, className)\n }, /*#__PURE__*/React.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n onDragEnd: handleDragEnd\n }, /*#__PURE__*/React.createElement(SortableContext, {\n items: itemIds,\n strategy: verticalListSortingStrategy\n }, items.map(item => /*#__PURE__*/React.createElement(DraggableListItem, {\n key: item.id,\n item: item,\n onRemove: onRemove,\n removeIconVariant: removeIconVariant,\n renderContent: renderContent\n })))), items.length === 0 && emptyMessage && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, emptyMessage));\n}\nconst useKeyboardEvents = containerRef => {\n // Base UI's DialogPopup calls stopPropagation on arrow key events, which\n // prevents them from reaching @dnd-kit's document-level KeyboardSensor\n // listener. We use a native capture-phase listener to intercept arrow keys\n // before the dialog can swallow them, and re-dispatch them on the document\n // so @dnd-kit can process keyboard-driven reordering.\n useEffect(() => {\n const el = containerRef.current;\n if (el == null) {\n return;\n }\n const ARROW_KEYS = new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\n function handleCapture(event) {\n if (!ARROW_KEYS.has(event.key)) {\n return;\n }\n\n // Only intercept when a drag is active (an item has [data-dragging=\"true\"])\n if (el.querySelector(\"[data-dragging=\\\"true\\\"]\") == null) {\n return;\n }\n event.stopPropagation();\n document.dispatchEvent(new KeyboardEvent(\"keydown\", {\n key: event.key,\n code: event.code,\n bubbles: true\n }));\n }\n el.addEventListener(\"keydown\", handleCapture, true);\n return () => el.removeEventListener(\"keydown\", handleCapture, true);\n }, [containerRef]);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n/* Override dialog styling */\n.columnConfigDialog {\n --osdk-dialog-min-width: var(--osdk-table-column-config-dialog-min-width);\n --osdk-dialog-min-height: var(--osdk-table-column-config-dialog-min-height);\n --osdk-dialog-body-padding: 0;\n}\n\n.dialogLayout {\n display: flex;\n flex-direction: row;\n gap: 0;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.visibleColumnsContainer {\n flex: 1.5;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5);\n background: var(--osdk-table-column-config-visible-columns-bg);\n border-right: 1px solid var(--osdk-surface-border-color-default);\n}\n\n.availableColumnsContainer {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5)\n calc(var(--osdk-surface-spacing) * 3);\n}\n\n.sectionHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--osdk-surface-spacing) * 5);\n}\n\n.sectionTitle {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: var(--osdk-typography-weight-bold);\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n gap: var(--osdk-surface-spacing);\n}\n\n.countTag {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--osdk-custom-color-gray-3);\n padding: calc(var(--osdk-surface-spacing) / 2)\n calc(var(--osdk-surface-spacing) * 1.5);\n border-radius: var(--osdk-surface-border-radius);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-default);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.sectionHint {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n.columnList {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.searchContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n flex-shrink: 0;\n}\n\n.propertiesList {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.categoryHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n margin: 0;\n gap: calc(var(--osdk-surface-spacing) * 3);\n flex-shrink: 0;\n}\n\n.categoryTrigger {\n display: flex;\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.categoryTitle {\n flex: 1;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-bold);\n text-align: left;\n}\n\n.categoryCount {\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n margin-left: var(--osdk-surface-spacing);\n}\n\n.caretIcon {\n color: var(--osdk-typography-color-muted);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.categoryTrigger[data-panel-open] .caretIcon {\n transform: rotate(180deg);\n}\n\n.checkbox {\n flex-shrink: 0;\n}\n\n.propertyList {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.propertyItem {\n display: flex;\n align-items: center;\n flex-direction: row;\n width: 100%;\n gap: calc(var(--osdk-surface-spacing) * 3);\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n}\n\n.checkboxIndicator {\n color: var(--osdk-intent-primary-foreground);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.selectAllLabel {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 3);\n cursor: pointer;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-bold);\n}\n\n.propertyLabel {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 3);\n cursor: pointer;\n flex: 1;\n min-width: 0;\n}\n\n.propertyName {\n text-align: left;\n flex: 1;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: 400;\n color: var(--osdk-typography-color-default-rest);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.infoIcon {\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n width: calc(var(--osdk-checkbox-icon-size) * 0.75);\n height: calc(var(--osdk-checkbox-icon-size) * 0.75);\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\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 { Collapsible } from \"@base-ui/react/collapsible\";\nimport { CaretDown, Cog, SmallInfoSign } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./ColumnConfigDialog.module.css\";\nexport function ColumnConfigDialog({\n isOpen,\n onClose,\n columnOptions,\n currentVisibility,\n currentColumnOrder,\n onApply,\n isValidConfig\n}) {\n const [visibleColumns, setVisibleColumns] = useState([]);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const allColumns = useMemo(() => {\n return columnOptions.map(opt => {\n const isVisible = currentVisibility ? currentVisibility[opt.id] : false;\n return {\n id: opt.id,\n label: opt.name,\n isVisible\n };\n });\n }, [columnOptions, currentVisibility]);\n\n // Sync local state with prop when dialog is opened\n useEffect(() => {\n if (isOpen) {\n const visibleCols = allColumns.filter(col => col.isVisible);\n\n // Sort by current column order if available\n if (!!currentColumnOrder?.length) {\n visibleCols.sort((a, b) => {\n const indexA = currentColumnOrder.indexOf(a.id);\n const indexB = currentColumnOrder.indexOf(b.id);\n // If not in order array, put at end\n const orderA = indexA === -1 ? Infinity : indexA;\n const orderB = indexB === -1 ? Infinity : indexB;\n return orderA - orderB;\n });\n }\n setVisibleColumns(visibleCols);\n setSearchQuery(\"\");\n }\n }, [isOpen, allColumns, currentColumnOrder]);\n const handleApply = useCallback(() => {\n onApply(getColumnConfig(allColumns, visibleColumns));\n onClose();\n }, [allColumns, visibleColumns, onApply, onClose]);\n\n // If no condition provided, default to valid\n const isValid = isValidConfig ? isValidConfig(getColumnConfig(allColumns, visibleColumns)) : true;\n const isApplyDisabled = visibleColumns.length === 0 || !isValid;\n const handleReorderColumns = useCallback((fromIndex, toIndex) => {\n setVisibleColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleRemoveColumn = useCallback(columnId => {\n setVisibleColumns(prev => prev.filter(col => col.id !== columnId));\n }, []);\n const handleToggleColumn = useCallback(column => {\n setVisibleColumns(prev => {\n const isCurrentlyVisible = prev.some(col => col.id === column.id);\n if (isCurrentlyVisible) {\n return prev.filter(col => col.id !== column.id);\n } else {\n return [...prev, column];\n }\n });\n }, []);\n const handleSearchChange = useCallback(event => {\n setSearchQuery(event.target.value);\n }, []);\n const handleSelectAll = useCallback(columns => {\n setVisibleColumns(prev => {\n const allSelected = columns.every(col => prev.some(v => v.id === col.id));\n if (allSelected) {\n // Deselect all filtered columns\n return prev.filter(v => !columns.some(col => col.id === v.id));\n } else {\n // Select all filtered columns that aren't already selected\n const newColumns = columns.filter(col => !prev.some(v => v.id === col.id));\n return [...prev, ...newColumns];\n }\n });\n }, []);\n const filteredAvailableColumns = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n if (!query) {\n return allColumns;\n }\n return allColumns.filter(col => (col.label?.toLowerCase().includes(query) ?? false) || col.id.toLowerCase().includes(query));\n }, [allColumns, searchQuery]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply,\n disabled: isApplyDisabled\n }, \"Apply\")), [onClose, handleApply, isApplyDisabled]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer,\n className: styles.columnConfigDialog\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.dialogLayout\n }, /*#__PURE__*/React.createElement(VisibleColumnsList, {\n columns: visibleColumns,\n onReorder: handleReorderColumns,\n onRemove: handleRemoveColumn\n }), /*#__PURE__*/React.createElement(AvailableColumnsList, {\n visibleColumns: visibleColumns,\n searchQuery: searchQuery,\n onSearchChange: handleSearchChange,\n onToggleColumn: handleToggleColumn,\n onSelectAll: handleSelectAll,\n filteredColumns: filteredAvailableColumns\n })));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Configure Table Columns\");\nconst getColumnConfig = (allColumns, visibleColumns) => {\n const hiddenColumns = allColumns.filter(col => !visibleColumns.some(v => v.id === col.id));\n return [...visibleColumns.map(col => ({\n columnId: col.id,\n isVisible: true\n })), ...hiddenColumns.map(col => ({\n columnId: col.id,\n isVisible: false\n }))];\n};\nfunction VisibleColumnsList({\n columns,\n onReorder,\n onRemove\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.visibleColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionTitle\n }, /*#__PURE__*/React.createElement(\"span\", null, \"Visible Columns\"), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.countTag\n }, columns.length)), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHint\n }, \"Drag to reorder\")), /*#__PURE__*/React.createElement(DraggableList, {\n items: columns,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"trash\",\n emptyMessage: \"No visible columns\",\n className: styles.columnList\n }));\n}\nfunction AvailableColumnsList({\n visibleColumns,\n searchQuery,\n onSearchChange,\n onToggleColumn,\n onSelectAll,\n filteredColumns\n}) {\n const selectedCount = visibleColumns.length;\n const totalCount = filteredColumns.length;\n const allFilteredSelected = filteredColumns.every(col => visibleColumns.some(v => v.id === col.id));\n const someFilteredSelected = filteredColumns.some(col => visibleColumns.some(v => v.id === col.id));\n const handleSelectAllClick = useCallback(() => {\n onSelectAll(filteredColumns);\n }, [filteredColumns, onSelectAll]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.availableColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.sectionHeader, styles.sectionTitle)\n }, \"Add or Remove Columns\"), /*#__PURE__*/React.createElement(SearchBar, {\n value: searchQuery,\n onChange: onSearchChange,\n placeholder: \"Search...\",\n \"aria-label\": \"Search available columns\",\n className: styles.searchContainer\n }), /*#__PURE__*/React.createElement(Collapsible.Root, {\n defaultOpen: true,\n className: styles.propertiesList\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.categoryHeader\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.selectAllLabel\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: allFilteredSelected,\n indeterminate: someFilteredSelected && !allFilteredSelected,\n onCheckedChange: handleSelectAllClick,\n className: styles.checkbox\n }), \"All Columns\"), /*#__PURE__*/React.createElement(Collapsible.Trigger, {\n className: styles.categoryTrigger\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.categoryCount\n }, selectedCount, \"/\", totalCount), /*#__PURE__*/React.createElement(CaretDown, {\n className: styles.caretIcon\n }))), /*#__PURE__*/React.createElement(Collapsible.Panel, {\n className: styles.propertyList\n }, filteredColumns.length === 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, \"No matching columns found\") : filteredColumns.map(column => /*#__PURE__*/React.createElement(PropertyItem, {\n key: column.id,\n column: column,\n isSelected: visibleColumns.some(v => v.id === column.id),\n onToggle: onToggleColumn\n })))));\n}\nfunction PropertyItem({\n column,\n isSelected,\n onToggle,\n showInfoIcon = false\n}) {\n const handleClick = useCallback(() => {\n onToggle(column);\n }, [onToggle, column]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.propertyItem\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.propertyLabel\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: isSelected,\n onCheckedChange: handleClick,\n className: styles.checkbox\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.propertyName\n }, column.label)), showInfoIcon && /*#__PURE__*/React.createElement(SmallInfoSign, {\n className: styles.infoIcon\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.sortColumnsList {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-surface-spacing);\n flex: 1;\n justify-content: space-between;\n overflow-x: hidden;\n}\n\n.sortableList {\n flex: 1;\n}\n\n.selectedColumnsContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n}\n\n.sortColumnItem {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n width: 100%;\n}\n\n.sortColumnName {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.sortDirectionButton {\n flex-shrink: 0;\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.sortIcon {\n color: var(--osdk-typography-color-muted);\n}\n\n.addColumnButton {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background-color: var(--osdk-button-secondary-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n cursor: pointer;\n color: var(--osdk-button-secondary-color);\n margin-top: calc(var(--osdk-surface-spacing) * 2);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.addIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n}\n\n.addColumnText {\n flex: 1;\n text-align: left;\n}\n\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","/*\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 { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nexport function SortableItemsList({\n items,\n onReorder,\n onRemove,\n className\n}) {\n const renderContent = useCallback(item => item.content, []);\n return /*#__PURE__*/React.createElement(DraggableList, {\n items: items,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"cross\",\n renderContent: renderContent,\n className: className\n });\n}","/*\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 { Add, CaretDown, Cog, SortAlphabetical, SortAlphabeticalDesc } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\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 { SortableItemsList } from \"./SortableItemsList.js\";\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions\n}) {\n const [selectedSortColumns, setSelectedSortColumns] = useState([]);\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns = [];\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 const handleAddColumn = useCallback(column => {\n setSelectedSortColumns(prev => [...prev, {\n ...column,\n direction: \"asc\"\n }]);\n }, []);\n const handleRemoveSortColumn = useCallback(id => {\n setSelectedSortColumns(prev => prev.filter(item => item.id !== id));\n }, []);\n const handleReorderSortColumns = useCallback((fromIndex, toIndex) => {\n setSelectedSortColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleToggleSortDirection = useCallback(id => {\n setSelectedSortColumns(prev => prev.map(item => item.id === id ? {\n ...item,\n direction: item.direction === \"asc\" ? \"desc\" : \"asc\"\n } : item));\n }, []);\n const handleApply = useCallback(() => {\n const sortingState = selectedSortColumns.map(col => ({\n id: col.id,\n desc: col.direction === \"desc\"\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n const availableColumns = useMemo(() => columnOptions.filter(col => col.canSort && !selectedSortColumns.some(selected => selected.id === col.id)), [columnOptions, selectedSortColumns]);\n const searchableMenuItems = useMemo(() => availableColumns.map(col => ({\n key: col.id,\n label: col.name\n })), [availableColumns]);\n const handleMenuItemSelected = useCallback(key => {\n const column = availableColumns.find(col => col.id === key);\n if (column) {\n handleAddColumn(column);\n }\n }, [availableColumns, handleAddColumn]);\n const sortableItems = useMemo(() => {\n return selectedSortColumns.map(item => ({\n id: item.id,\n label: item.name,\n content: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnItem\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(styles.sortColumnName, styles.truncate)\n }, item.name), /*#__PURE__*/React.createElement(Button, {\n className: styles.sortDirectionButton,\n onClick: () => handleToggleSortDirection(item.id),\n \"aria-label\": `Toggle sort direction for ${item.name}`\n }, item.direction === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.sortIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.sortIcon\n })))\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply\n }, \"Apply\")), [handleApply, onClose]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnsList\n }, /*#__PURE__*/React.createElement(SortableItemsList, {\n items: sortableItems,\n onReorder: handleReorderSortColumns,\n onRemove: handleRemoveSortColumn,\n className: styles.sortableList\n }), /*#__PURE__*/React.createElement(SearchableMenu, {\n items: searchableMenuItems,\n onItemSelected: handleMenuItemSelected,\n trigger: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Add, {\n className: styles.addIcon\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.addColumnText\n }, \"Add Column to Sort\"), /*#__PURE__*/React.createElement(CaretDown, null)),\n triggerClassName: styles.addColumnButton,\n disabled: availableColumns.length === 0,\n searchPlaceholder: \"Search columns\",\n emptyMessage: \"No matching columns\"\n })));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Sort on Multiple Columns\");","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableHeader {\n display: grid;\n position: sticky;\n top: 0;\n width: max-content;\n min-width: 100%;\n height: var(--osdk-table-header-height);\n z-index: var(--osdk-surface-z-index-1);\n background-color: var(--osdk-table-header-bg);\n}\n\n.osdkTableHeader[data-resizing=\"true\"] {\n cursor: col-resize;\n user-select: none;\n}\n\n.osdkTableHeaderRow {\n display: flex;\n width: max-content;\n min-width: 100%;\n border-top: var(--osdk-table-border);\n border-bottom: var(--osdk-table-border);\n}\n\n.osdkTableHeaderCell {\n display: flex;\n align-items: center;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-weight: var(--osdk-table-header-fontWeight);\n font-size: var(--osdk-table-header-fontSize);\n color: var(--osdk-table-header-color);\n border-right: var(--osdk-table-header-divider);\n background-color: inherit;\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: none;\n }\n}\n\n.osdkTableHeaderCell[data-pinned=\"left\"],\n.osdkTableHeaderCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-2);\n background-color: var(--osdk-table-header-bg);\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableHeaderCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableHeaderCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableSelectionHeaderCell {\n justify-content: center;\n padding: 0;\n}\n\n.osdkTableHeaderResizer {\n background: none;\n cursor: col-resize;\n height: 100%;\n position: absolute;\n right: calc(-1 * var(--osdk-table-border-width));\n top: 0;\n touch-action: none;\n width: 3px;\n z-index: var(--osdk-surface-z-index-2);\n\n &:hover {\n background: var(--osdk-table-resizer-color-hover);\n }\n\n &:active {\n background: var(--osdk-table-resizer-color-active);\n }\n}\n\n.osdkLoadingHeaderCell {\n height: var(--osdk-table-header-fontSize);\n flex: 1;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkHeaderContent {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.osdkHeaderContent:has([role=\"checkbox\"]) {\n display: flex;\n justify-content: center;\n}\n","/*\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 { flexRender } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport styles from \"./TableHeaderContent.module.css\";\nexport function TableHeaderContent({\n header\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkHeaderContent\n }, flexRender(header.column.columnDef.header, header.getContext()));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCenterContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.osdkContentGap {\n display: flex;\n gap: calc(var(--osdk-surface-spacing) * 2);\n}\n\n.osdkHeaderContainer {\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n align-self: stretch;\n}\n\n.osdkHeaderContentLeft {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.osdkHeaderContentRight {\n flex-shrink: 0;\n}\n\n.osdkHeaderText {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n line-clamp: 3;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-grow: 1;\n}\n\n.osdkHeaderPopoverTrigger {\n padding: var(--osdk-table-header-menu-padding);\n flex-shrink: 0;\n flex-grow: 0;\n background-color: var(--osdk-table-header-menu-bg);\n border: var(--osdk-table-header-menu-border);\n border-radius: var(--osdk-surface-border-radius);\n color: var(--osdk-table-header-menu-color);\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background-color: var(--osdk-table-header-menu-bg-hover);\n }\n\n &[data-popup-open] {\n background-color: var(--osdk-table-header-menu-bg-active);\n color: var(--osdk-table-header-menu-color-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-table-header-menu-icon-color);\n}\n\n.osdkHeaderPopup {\n box-sizing: border-box;\n padding: var(--osdk-surface-spacing);\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-surface-border);\n background-color: var(--osdk-surface-background-color-default-rest);\n color: var(--osdk-typography-color-default-rest);\n box-shadow: var(--osdk-surface-shadow-2);\n font-size: var(--osdk-typography-size-body-medium);\n}\n\n.osdkHeaderMenuItem {\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);\n cursor: pointer;\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n border-radius: var(--osdk-surface-border-radius);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderMenuItem .osdkHeaderActiveMenuItem {\n background-color: var(--osdk-intent-primary-rest);\n color: var(--osdk-intent-primary-foreground);\n\n &:hover {\n background-color: var(--osdk-intent-primary-hover);\n }\n\n &:active {\n background-color: var(--osdk-intent-primary-active);\n }\n}\n\n.sortIndex {\n font-size: var(--osdk-typography-size-body-x-small);\n margin-left: var(--osdk-surface-spacing);\n color: var(--osdk-typography-color-muted);\n}\n","/*\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 { Menu } from \"@base-ui/react/menu\";\nimport { ChevronDown, Pin, Remove, Settings, Sort, SortAlphabetical, SortAlphabeticalDesc, Unpin, VerticalDistribution } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport styles from \"./TableHeaderWithPopover.module.css\";\nfunction HeaderMenuItem({\n onClick,\n icon: Icon,\n label,\n active = false\n}) {\n return /*#__PURE__*/React.createElement(Menu.Item, {\n closeOnClick: true,\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderMenuItem, active && styles.osdkHeaderActiveMenuItem),\n onClick: onClick\n }, /*#__PURE__*/React.createElement(Icon, {\n className: styles.osdkHeaderIcon\n }), /*#__PURE__*/React.createElement(\"span\", null, label));\n}\nexport function TableHeaderWithPopover({\n header,\n table,\n isColumnPinned,\n onResetSize,\n columnOptions,\n featureFlags,\n onOpenColumnConfig,\n onOpenMultiSort\n}) {\n const {\n showSortingItems = false,\n showPinningItems = false,\n showResizeItem = false,\n showConfigItem = false\n } = featureFlags ?? {};\n const {\n setColumnPinning,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const [isOpen, setIsOpen] = useState(false);\n const handlePinLeft = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: [...(prev.left || []), header.column.id],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleUnpin = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: prev.left?.filter(id => id !== header.column.id) || [],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleSortAscending = useCallback(() => {\n header.column.toggleSorting(false);\n setSorting?.([{\n id: header.column.id,\n desc: false\n }]);\n }, [header.column, setSorting]);\n const handleSortDescending = useCallback(() => {\n header.column.toggleSorting(true);\n setSorting?.([{\n id: header.column.id,\n desc: true\n }]);\n }, [header.column, setSorting]);\n const handleClearAllSorts = useCallback(() => {\n header.column.clearSorting();\n setSorting?.([]);\n }, [header.column, setSorting]);\n const handleResetSize = useCallback(() => {\n header.column.resetSize();\n if (onResetSize) {\n onResetSize();\n }\n }, [header.column, onResetSize]);\n const handleInteraction = useCallback(e => {\n e.preventDefault();\n setIsOpen(prev => !prev);\n }, []);\n const handleOpenColumnConfig = useCallback(() => {\n onOpenColumnConfig?.();\n setIsOpen(false);\n }, [onOpenColumnConfig]);\n const handleOpenMultiSort = useCallback(() => {\n onOpenMultiSort?.();\n setIsOpen(false);\n }, [onOpenMultiSort]);\n const isSorted = header.column.getIsSorted();\n const isSortable = header.column.getCanSort();\n const sortIndex = currentSorting?.findIndex(s => s.id === header.column.id) ?? -1;\n const hasAnyMenuItems = showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Menu.Root, {\n open: isOpen,\n onOpenChange: setIsOpen\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContainer),\n onContextMenu: handleInteraction\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentLeft)\n }, isColumnPinned && /*#__PURE__*/React.createElement(Pin, {\n className: styles.osdkHeaderIcon\n }), /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentRight)\n }, isSorted && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkCenterContainer\n }, isSorted === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.osdkHeaderIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.osdkHeaderIcon\n }), currentSorting.length > 1 && sortIndex >= 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.sortIndex\n }, sortIndex + 1)), hasAnyMenuItems && /*#__PURE__*/React.createElement(Menu.Trigger, {\n \"aria-label\": `Open header menu for column with id=${header.column.id}`,\n className: classNames(styles.osdkCenterContainer, styles.osdkHeaderPopoverTrigger)\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n className: styles.osdkHeaderIcon\n }))), /*#__PURE__*/React.createElement(Menu.Portal, {\n container: document.body\n }, /*#__PURE__*/React.createElement(Menu.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.osdkHeaderPopup\n }, showPinningItems && !isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handlePinLeft,\n icon: Pin,\n label: \"Pin column\"\n }), showPinningItems && isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleUnpin,\n icon: Unpin,\n label: \"Unpin Column\",\n active: true\n }), showSortingItems && isSortable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortAscending,\n icon: SortAlphabetical,\n label: \"Sort ascending\",\n active: isSorted === \"asc\"\n }), /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortDescending,\n icon: SortAlphabeticalDesc,\n label: \"Sort descending\",\n active: isSorted === \"desc\"\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenMultiSort,\n icon: Sort,\n label: \"Sort on multiple columns\"\n })), showSortingItems && !!currentSorting?.length && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleClearAllSorts,\n icon: Remove,\n label: \"Clear all sorts\"\n }), showResizeItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleResetSize,\n icon: VerticalDistribution,\n label: \"Reset Column Size\"\n }), showConfigItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenColumnConfig,\n icon: Settings,\n label: \"Configure Columns\"\n })))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getColumnPinningStyles(column) {\n const isPinned = column.getIsPinned();\n return {\n columnStyles: {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n width: column.getSize()\n }\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { ColumnConfigDialog } from \"./ColumnConfigDialog.js\";\nimport { MultiColumnSortDialog } from \"./MultiColumnSortDialog.js\";\nimport styles from \"./TableHeader.module.css\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport { TableHeaderWithPopover } from \"./TableHeaderWithPopover.js\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nconst getHeaderName = (column, allHeaders) => {\n const {\n id,\n columnDef\n } = column;\n const header = allHeaders.find(header => header.id === id);\n const headerDef = columnDef.header;\n if (headerDef) {\n if (typeof headerDef === \"string\") {\n return headerDef;\n }\n // Try to get header name from the renderHeader function\n if (header) {\n const displayedHeader = headerDef(header.getContext());\n if (typeof displayedHeader === \"string\") return displayedHeader;\n }\n }\n // Fallback to use the columnName provided by user or id\n const {\n meta\n } = columnDef;\n return meta?.columnName ?? id;\n};\nexport function TableHeader({\n table,\n headerMenuFeatureFlags\n}) {\n // TODO: If value is number type, right align header\n\n const {\n setColumnOrder,\n setColumnVisibility,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const currentVisibility = table.getState().columnVisibility;\n const currentColumnOrder = table.getState().columnOrder;\n const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;\n const [configDialogOpen, setConfigDialogOpen] = useState(false);\n const [multiSortDialogOpen, setMultiSortDialogOpen] = useState(false);\n const handleOpenColumnConfig = useCallback(() => {\n setConfigDialogOpen(true);\n }, []);\n const handleCloseColumnConfig = useCallback(() => {\n setConfigDialogOpen(false);\n }, []);\n const handleOpenMultiSort = useCallback(() => {\n setMultiSortDialogOpen(true);\n }, []);\n const handleCloseMultiSort = useCallback(() => {\n setMultiSortDialogOpen(false);\n }, []);\n const handleApplyMultiSort = useCallback(sortColumns => {\n setMultiSortDialogOpen(false);\n setSorting?.(sortColumns);\n }, [setSorting]);\n const handleApplyColumnConfig = useCallback(updates => {\n const newVisibilityState = {};\n for (const update of updates) {\n newVisibilityState[update.columnId] = update.isVisible;\n }\n setColumnOrder(updates.map(col => col.columnId));\n setColumnVisibility(newVisibilityState);\n }, [setColumnOrder, setColumnVisibility]);\n const columnOptions = useMemo(() => {\n const allHeaders = table.getHeaderGroups().flatMap(headerGroup => headerGroup.headers);\n return table.getAllColumns().filter(column => column.id !== SELECTION_COLUMN_ID).map(column => {\n return {\n id: column.id,\n name: getHeaderName(column, allHeaders),\n canSort: column.getCanSort()\n };\n });\n }, [table]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"thead\", {\n className: styles.osdkTableHeader,\n \"data-resizing\": isResizing\n }, table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement(\"tr\", {\n key: headerGroup.id,\n className: styles.osdkTableHeaderRow\n }, headerGroup.headers.map(header => {\n const {\n columnStyles\n } = getColumnPinningStyles(header.column);\n const isColumnPinned = header.column.getIsPinned();\n const isSelectColumn = header.id === SELECTION_COLUMN_ID;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id,\n \"data-pinned\": header.column.getIsPinned(),\n className: classNames(styles.osdkTableHeaderCell, {\n [styles.osdkTableSelectionHeaderCell]: isSelectColumn\n }),\n style: columnStyles\n }, header.isPlaceholder ? null : isSelectColumn ? /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n }) : /*#__PURE__*/React.createElement(TableHeaderWithPopover, {\n table: table,\n header: header,\n isColumnPinned: isColumnPinned,\n columnOptions: columnOptions,\n featureFlags: headerMenuFeatureFlags,\n onOpenColumnConfig: handleOpenColumnConfig,\n onOpenMultiSort: handleOpenMultiSort\n }), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableHeaderResizer,\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler()\n }));\n })))), !!columnOptions?.length && /*#__PURE__*/React.createElement(ColumnConfigDialog, {\n isOpen: configDialogOpen,\n onClose: handleCloseColumnConfig,\n columnOptions: columnOptions,\n currentVisibility: currentVisibility,\n currentColumnOrder: currentColumnOrder,\n onApply: handleApplyColumnConfig\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(MultiColumnSortDialog, {\n isOpen: multiSortDialogOpen,\n onClose: handleCloseMultiSort,\n columnOptions: columnOptions,\n currentSorting: currentSorting,\n onApply: handleApplyMultiSort\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { 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 { DEFAULT_LOADING_COLUMN_WIDTH, DEFAULT_ROW_HEIGHT, MIN_LOADING_ROWS } from \"./utils/constants.js\";\nexport function LoadingStateTable({\n table,\n tableContainerRef,\n headerGroups,\n rowHeight = DEFAULT_ROW_HEIGHT,\n columnWidth = DEFAULT_LOADING_COLUMN_WIDTH\n}) {\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(() => headerGroups.length > 0 ? headerGroups[0].headers : [], [headerGroups]);\n const hasHeadersLoaded = headers.length > minHeaderCount;\n const headerRef = useRef(null);\n const bodyRef = useRef(null);\n const [loadingRowCount, setLoadingRowCount] = useState(MIN_LOADING_ROWS);\n const [loadingColumnCount, setLoadingColumnCount] = useState(headers.length);\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 if (availableHeight > 0) {\n const rowsNeeded = Math.ceil(availableHeight / rowHeight);\n setLoadingRowCount(Math.max(rowsNeeded, MIN_LOADING_ROWS));\n }\n }\n }, [tableContainerRef, rowHeight]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasHeadersLoaded ? /*#__PURE__*/React.createElement(TableHeader, {\n table: table\n }) : /*#__PURE__*/React.createElement(\"thead\", {\n className: headerStyles.osdkTableHeader,\n ref: headerRef\n }, /*#__PURE__*/React.createElement(\"tr\", {\n className: headerStyles.osdkTableHeaderRow\n }, Array.from({\n length: loadingColumnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: `loading-header-${index}`,\n className: headerStyles.osdkTableHeaderCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: classNames(headerStyles.osdkLoadingHeaderCell, loadingStyles.osdkCellSkeleton)\n }));\n }))), /*#__PURE__*/React.createElement(\"tbody\", {\n className: bodyStyles.osdkTableBody,\n ref: bodyRef\n }, Array.from({\n length: loadingRowCount\n }).map((_, index) => /*#__PURE__*/React.createElement(LoadingRow, {\n key: `skeleton-${index}`,\n columnCount: loadingColumnCount,\n headers: headers,\n translateY: rowHeight * index,\n rowHeight: rowHeight,\n columnWidth: columnWidth\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.container {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.message {\n padding: calc(var(--osdk-surface-spacing) * 5);\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\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\";\nexport function NonIdealState({\n message\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.message\n }, message));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableWrapper {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: relative;\n}\n\n.osdkTableContainer {\n flex: 1;\n min-height: 0;\n overflow: auto;\n position: relative;\n}\n\n.osdkTableContainer table {\n border-collapse: collapse;\n display: grid;\n table-layout: fixed;\n width: max-content;\n min-width: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCellContextMenu {\n position: fixed;\n z-index: var(--osdk-surface-z-index-2);\n}\n","/*\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, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./CellContextMenu.module.css\";\nexport function CellContextMenu({\n cell,\n position,\n onClose,\n renderContent\n}) {\n const ref = useRef(null);\n useEffect(() => {\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClose();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: styles.osdkCellContextMenu,\n style: {\n left: position.left,\n top: position.top,\n minWidth: position.width\n }\n }, renderContent(cell.row.original, cell)), document.body);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useCellContextMenu = ({\n tdRef\n}) => {\n const [popoverPosition, setPopoverPosition] = useState(null);\n const [isContextMenuOpen, setIsContextMenuOpen] = useState(false);\n const handleOpenContextMenu = useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n if (tdRef.current) {\n const rect = tdRef.current.getBoundingClientRect();\n const position = {\n left: rect.left,\n top: rect.bottom,\n width: rect.width\n };\n setPopoverPosition(position);\n setIsContextMenuOpen(true);\n }\n }, [tdRef]);\n const handleCloseContextMenu = useCallback(() => {\n setIsContextMenuOpen(false);\n setPopoverPosition(null);\n }, []);\n return {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n };\n};","/*\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 { flexRender } from \"@tanstack/react-table\";\nimport React, { useRef } from \"react\";\nimport { CellContextMenu } from \"./CellContextMenu.js\";\nimport { useCellContextMenu } from \"./hooks/useCellContextMenu.js\";\nimport styles from \"./TableCell.module.css\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nexport function TableCell({\n cell,\n renderCellContextMenu\n}) {\n const tdRef = useRef(null);\n const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;\n const {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n } = useCellContextMenu({\n tdRef\n });\n const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;\n const {\n columnStyles\n } = getColumnPinningStyles(cell.column);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"td\", {\n ref: tdRef,\n \"data-pinned\": cell.column.getIsPinned(),\n className: styles.osdkTableCell,\n style: columnStyles,\n onContextMenu: handleOpenContextMenu\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableCellContent\n }, flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /*#__PURE__*/React.createElement(CellContextMenu, {\n cell: cell,\n position: popoverPosition,\n onClose: handleCloseContextMenu,\n renderContent: renderCellContextMenu\n }));\n}","/*\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 { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\nexport function TableRow({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu,\n isFocused,\n setFocusedRowId,\n isInEditMode\n}) {\n const handleClick = useCallback(() => {\n setFocusedRowId?.(row.id);\n if (!isInEditMode) {\n onRowClick?.(row.original);\n }\n }, [isInEditMode, onRowClick, row.original, row.id, setFocusedRowId]);\n return /*#__PURE__*/React.createElement(\"tr\", {\n \"data-selected\": row.getIsSelected(),\n \"data-focused\": isFocused,\n className: styles.osdkTableRow,\n style: {\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`\n },\n onClick: handleClick\n }, row.getVisibleCells().map(cell => /*#__PURE__*/React.createElement(TableCell, {\n key: cell.id,\n cell: cell,\n renderCellContextMenu: renderCellContextMenu\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport 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\";\nexport function TableBody({\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}) {\n // Important: Keep the row virtualizer in the lowest component possible to avoid unnecessary re-renders.\n const rowVirtualizer = useVirtualizer({\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 const totalSize = rowVirtualizer.getTotalSize();\n const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;\n const headers = headerGroups[0]?.headers ?? [];\n return /*#__PURE__*/React.createElement(\"tbody\", {\n className: styles.osdkTableBody,\n style: {\n height: `${bodyHeight}px`\n }\n }, rowVirtualizer.getVirtualItems().map(virtualRow => {\n const row = rows[virtualRow.index];\n return /*#__PURE__*/React.createElement(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 });\n }), isLoadingMore && /*#__PURE__*/React.createElement(LoadingRow, {\n headers: headers,\n translateY: totalSize,\n rowHeight: rowHeight,\n columnCount: headers.length\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.tableEditContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--osdk-surface-background-color-default-rest);\n border-top: var(--osdk-table-border);\n padding: var(--osdk-table-edit-container-padding);\n min-height: var(--osdk-table-edit-container-min-height);\n}\n\n.placeholder {\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n padding: calc(var(--osdk-surface-spacing) * 2) 0;\n}\n\n.editsInfoContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n gap: calc(var(--osdk-surface-spacing) * 3);\n font-size: var(--osdk-typography-size-body-small);\n}\n\n.modificationCount {\n color: var(--osdk-intent-primary-rest);\n font-size: var(--osdk-typography-size-body-small);\n padding: calc(var(--osdk-surface-spacing) * 2) 0;\n}\n\n.editButtons {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n flex: 1;\n}\n\n.validationError {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-intent-danger-rest);\n}\n\n.errorIcon {\n color: var(--osdk-intent-danger-rest);\n}\n\n.divider {\n width: 1px;\n height: 8px;\n background-color: var(--osdk-surface-border-color-default);\n align-self: center;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error } from \"@blueprintjs/icons\";\nimport React, { useCallback, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport styles from \"./TableEditContainer.module.css\";\nexport function TableEditContainer({\n editableConfig,\n focusedRowId\n}) {\n const {\n cellEdits,\n onSubmitEdits,\n clearEdits,\n editModeState,\n validationErrors\n } = editableConfig;\n const hasEdits = Object.keys(cellEdits ?? {}).length > 0;\n const hasValidationError = (validationErrors?.size ?? 0) > 0;\n const [isSubmitting, setIsSubmitting] = useState(false);\n const isInEditMode = editModeState.isActive;\n const canToggleEditMode = editModeState.type === \"manual\";\n const handleSubmitEdits = useCallback(async () => {\n setIsSubmitting(true);\n try {\n const success = await onSubmitEdits?.();\n if (success) {\n clearEdits?.();\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(false);\n }\n }\n } finally {\n setIsSubmitting(false);\n }\n }, [editModeState, onSubmitEdits, clearEdits]);\n const handleCancelEdits = useCallback(() => {\n clearEdits?.();\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(false);\n }\n }, [clearEdits, editModeState]);\n const handleEnterEditMode = useCallback(() => {\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(true);\n }\n }, [editModeState]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.tableEditContainer\n }, hasEdits || hasValidationError ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.editsInfoContainer\n }, hasEdits && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.modificationCount\n }, `${cellEdits ? Object.keys(cellEdits).length : 0} modifications`), hasEdits && hasValidationError && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.divider\n }), hasValidationError && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.validationError\n }, /*#__PURE__*/React.createElement(Error, {\n className: styles.errorIcon\n }), \"Validation error\")) : isInEditMode && !focusedRowId && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.placeholder\n }, \"Select a row to edit data\\u2026\"), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.editButtons\n }, !isInEditMode && canToggleEditMode && /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleEnterEditMode\n }, \"Edit Table\"), isInEditMode && canToggleEditMode && /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"secondary\",\n onClick: handleCancelEdits\n }, \"Cancel\"), isInEditMode && !!onSubmitEdits && /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleSubmitEdits,\n disabled: !hasEdits || isSubmitting || hasValidationError\n }, \"Submit Edits\")));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\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 { SCROLL_FETCH_THRESHOLD } from \"./utils/constants.js\";\nexport function BaseTable({\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig\n}) {\n const tableContainerRef = useRef(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [focusedRowId, setFocusedRowId] = useState(null);\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 useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n const fetchMoreOnEndReached = useCallback(async containerRefElement => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const {\n scrollHeight,\n scrollTop,\n clientHeight\n } = containerRefElement;\n if (scrollHeight - scrollTop - clientHeight < SCROLL_FETCH_THRESHOLD && !isLoading && fetchNextPage != null) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n }, [fetchNextPage, isLoading, isLoadingMore]);\n const handleScroll = useCallback(async e => {\n await fetchMoreOnEndReached(e.currentTarget);\n }, [fetchMoreOnEndReached]);\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n const hasEditableColumns = table.getAllColumns().some(column => column.columnDef.meta?.editable === true);\n useEffect(() => {\n const handleClickOutside = event => {\n if (tableContainerRef.current && !tableContainerRef.current.contains(event.target)) {\n setFocusedRowId(null);\n }\n };\n document.addEventListener(\"click\", handleClickOutside);\n return () => {\n document.removeEventListener(\"click\", handleClickOutside);\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkTableWrapper, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tableContainerRef,\n className: styles.osdkTableContainer,\n onScroll: handleScroll\n }, /*#__PURE__*/React.createElement(\"table\", null, isLoading && !hasData ? /*#__PURE__*/React.createElement(LoadingStateTable, {\n table: table,\n headerGroups: headerGroups,\n rowHeight: rowHeight,\n tableContainerRef: tableContainerRef\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableHeader, {\n table: table,\n headerMenuFeatureFlags: headerMenuFeatureFlags\n }), /*#__PURE__*/React.createElement(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 }))), !hasData && error == null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: \"No Data\"\n }), error != null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: `Error Loading Data: ${error.message}`\n })), hasEditableColumns && editableConfig && /*#__PURE__*/React.createElement(TableEditContainer, {\n editableConfig: editableConfig,\n focusedRowId: focusedRowId\n }));\n}","/*\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 { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, 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 { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport { BaseTable } from \"./Table.js\";\nimport { getRowId } from \"./utils/getRowId.js\";\nconst EMPTY_ARRAY = [];\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 objectType,\n objectSet,\n columnDefinitions,\n filter,\n objectSetOptions,\n dedupeIntervalMs,\n pageSize,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n onRowSelection,\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 ...props\n}) {\n const {\n columnSizing,\n onColumnSizingChange\n } = useColumnResize({\n onColumnResize\n });\n const {\n sorting,\n onSortingChange\n } = useTableSorting({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n });\n const {\n data,\n fetchMore,\n isLoading,\n error\n } = useObjectTableData(objectType, columnDefinitions, filter, sorting, objectSet, objectSetOptions, dedupeIntervalMs, pageSize);\n const {\n columns,\n loading: isColumnsLoading\n } = useColumnDefs(objectType, columnDefinitions);\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection\n } = useRowSelection({\n selectionMode,\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelection,\n data\n });\n const selectionColumn = useSelectionColumn({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n });\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged\n });\n const {\n columnPinning,\n onColumnPinningChange\n } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged\n });\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n const editableConfig = useEditableTable({\n editMode,\n onCellValueChanged,\n onSubmitEdits\n });\n const table = useReactTable({\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,\n // 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 const onRenderCellContextMenu = useCallback((row, cell) => {\n return renderCellContextMenu?.(row, cell.getValue());\n }, [renderCellContextMenu]);\n const isTableLoading = isLoading || isColumnsLoading;\n const headerMenuFeatureFlags = useMemo(() => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig\n }), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);\n return /*#__PURE__*/React.createElement(BaseTable, {\n table: table,\n isLoading: isTableLoading,\n fetchNextPage: fetchMore,\n onRowClick: props.onRowClick,\n rowHeight: props.rowHeight,\n renderCellContextMenu: onRenderCellContextMenu,\n className: props.className,\n error: error,\n headerMenuFeatureFlags: headerMenuFeatureFlags,\n editableConfig: editableConfig\n });\n}",".annotationLayer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 3;\n}\n\n.annotationGroup {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.annotationGroup:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.annotationGroup .annotation {\n pointer-events: auto;\n}\n\n.annotation {\n position: absolute;\n pointer-events: auto;\n cursor: pointer;\n transition: opacity var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.annotation:hover {\n opacity: 0.8;\n}\n\n.annotation:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.highlight {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-highlight)\n );\n border-radius: 2px;\n}\n\n.underline {\n background-color: transparent;\n border-bottom: 2px solid\n var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-underline)\n );\n}\n\n.comment {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-comment)\n );\n border-radius: 50%;\n width: 16px !important;\n height: 16px !important;\n}\n\n.pin {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-pin)\n );\n border-radius: 50% 50% 50% 0;\n width: 16px !important;\n height: 16px !important;\n transform: rotate(-45deg);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerAnnotationLayer.module.css\";\n/** Convert a single PDF rect (bottom-left origin) to CSS positioning (top-left origin). */\nfunction computeRectStyle(rect, pageHeight, scale, color) {\n return {\n left: rect.x * scale,\n top: (pageHeight - rect.y - rect.height) * scale,\n width: rect.width * scale,\n height: rect.height * scale,\n ...(color != null ? {\n \"--osdk-pdf-annotation-color\": color\n } : {})\n };\n}\nfunction useAnnotationHandlers(annotation, onClick) {\n const handleClick = useCallback(() => {\n onClick?.(annotation);\n }, [onClick, annotation]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n onClick?.(annotation);\n }\n }, [onClick, annotation]);\n return {\n handleClick,\n handleKeyDown\n };\n}\nfunction AnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const className = classnames(styles.annotation, styles[annotation.type]);\n const multiRects = annotation.rects;\n const hasMultipleRects = multiRects != null && multiRects.length > 1;\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, annotation.color), [annotation, pageHeight, scale]);\n\n // Multi-rect: render a group wrapper with one div per rect\n if (hasMultipleRects) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationGroup,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, multiRects.map((rect, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: className,\n style: computeRectStyle(rect, pageHeight, scale, annotation.color)\n })));\n }\n\n // Single rect: existing behavior\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n });\n}\nfunction CustomAnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, undefined), [annotation, pageHeight, scale]);\n const renderProps = useMemo(() => ({\n annotation,\n scale,\n pageHeight\n }), [annotation, scale, pageHeight]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotation,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, annotation.render(renderProps));\n}\nexport function PdfViewerAnnotationLayer({\n annotations,\n pageHeight,\n scale,\n onAnnotationClick\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationLayer\n }, annotations.map(annotation => annotation.type === \"custom\" ? /*#__PURE__*/React.createElement(CustomAnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n }) : /*#__PURE__*/React.createElement(AnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n })));\n}",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.outlineItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-outline-item-gap, 6px);\n padding: var(--osdk-pdf-viewer-outline-item-padding-y, 4px)\n var(--osdk-pdf-viewer-outline-item-padding-x, 12px);\n cursor: pointer;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default);\n text-decoration: none;\n border: none;\n background: none;\n text-align: left;\n width: 100%;\n line-height: 1.4;\n border-radius: var(--osdk-pdf-viewer-outline-item-radius, 4px);\n transition: background-color 0.15s ease;\n}\n\n.outlineItem:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-hover-bg, rgba(0, 0, 0, 0.06));\n}\n\n.outlineItem:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.outlineItemActive {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n font-weight: var(--osdk-typography-weight-semibold);\n}\n\n.outlineItemBold {\n font-weight: var(--osdk-typography-weight-bold);\n}\n\n.outlineItemItalic {\n font-style: italic;\n}\n\n.outlineItemIcon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.outlineItemTitle {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.emptyState {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-outline-empty-gap, 12px);\n padding: var(--osdk-pdf-viewer-outline-empty-padding, 24px);\n flex: 1;\n text-align: center;\n}\n\n.emptyStateText {\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.sidebarHeader {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing);\n border-bottom: var(--osdk-pdf-viewer-sidebar-border);\n flex-shrink: 0;\n}\n\n.toggleGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-spacing-2xs, 2px);\n padding: var(--osdk-spacing-2xs, 2px);\n border: none;\n border-radius: var(--osdk-surface-border-radius);\n background-color: var(--osdk-surface-background-color, transparent);\n}\n\n.modeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.modeButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.modeButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.modeButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.modeButton[data-pressed] {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n}\n\n.modeButton[data-pressed]:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n}\n","/*\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 { Toggle } from \"@base-ui/react/toggle\";\nimport { ToggleGroup } from \"@base-ui/react/toggle-group\";\nimport { GridView, Properties } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSidebarHeader.module.css\";\nconst SIDEBAR_MODE_VALUE = Object.freeze([\"thumbnails\"]);\nconst OUTLINE_MODE_VALUE = Object.freeze([\"outline\"]);\nexport function PdfViewerSidebarHeader({\n sidebarMode,\n onSidebarModeChange\n}) {\n const value = sidebarMode === \"thumbnails\" ? SIDEBAR_MODE_VALUE : OUTLINE_MODE_VALUE;\n const handleValueChange = useCallback(newValue => {\n if (newValue.length > 0) {\n onSidebarModeChange(newValue[0]);\n }\n }, [onSidebarModeChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebarHeader\n }, /*#__PURE__*/React.createElement(ToggleGroup, {\n value: value,\n onValueChange: handleValueChange,\n className: styles.toggleGroup\n }, /*#__PURE__*/React.createElement(Toggle, {\n value: \"thumbnails\",\n className: styles.modeButton,\n \"aria-label\": \"Page thumbnails\"\n }, /*#__PURE__*/React.createElement(GridView, {\n size: 16\n })), /*#__PURE__*/React.createElement(Toggle, {\n value: \"outline\",\n className: styles.modeButton,\n \"aria-label\": \"Document outline\"\n }, /*#__PURE__*/React.createElement(Properties, {\n size: 16\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerOutlineSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nconst INDENT_PER_DEPTH = 16;\nexport function PdfViewerOutlineSidebar({\n outlineItems,\n currentPage,\n onItemClick,\n sidebarMode,\n onSidebarModeChange,\n outlineIcons\n}) {\n const activeIndex = useMemo(() => {\n return computeActiveIndex(outlineItems, currentPage);\n }, [outlineItems, currentPage]);\n if (outlineItems.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyStateText\n }, \"No outline available\")));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainer\n }, outlineItems.map((item, index) => /*#__PURE__*/React.createElement(PdfViewerOutlineItem, {\n key: index,\n item: item,\n isActive: index === activeIndex,\n onClick: onItemClick,\n iconComponent: outlineIcons?.[item.depth]\n }))));\n}\nfunction PdfViewerOutlineItem({\n item,\n isActive,\n onClick,\n iconComponent: IconComponent\n}) {\n const handleClick = useCallback(() => {\n onClick(item.pageNumber);\n }, [onClick, item.pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick(item.pageNumber);\n }\n }, [onClick, item.pageNumber]);\n const itemClassName = classnames(styles.outlineItem, isActive && styles.outlineItemActive, item.bold && styles.outlineItemBold, item.italic && styles.outlineItemItalic);\n const paddingLeft = INDENT_PER_DEPTH * item.depth + 12;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: itemClassName,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": item.title,\n \"aria-current\": isActive ? \"location\" : undefined,\n style: {\n paddingLeft\n }\n }, IconComponent != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemIcon\n }, /*#__PURE__*/React.createElement(IconComponent, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemTitle\n }, item.title));\n}\nfunction computeActiveIndex(items, currentPage) {\n const idx = items.findIndex(item => item.pageNumber > currentPage);\n return idx === -1 ? items.length - 1 : idx - 1;\n}",".searchBar {\n position: absolute;\n top: 0;\n right: 0;\n z-index: var(--osdk-surface-z-index-3);\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-search-bar-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n margin: var(--osdk-surface-spacing);\n}\n\n.searchInput {\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n outline: none;\n min-width: 200px;\n}\n\n.searchInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.matchCount {\n font-size: var(--osdk-typography-size-body-x-small);\n color: var(--osdk-typography-color-muted);\n white-space: nowrap;\n}\n\n.navButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-default-rest);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.navButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.navButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.closeButton {\n composes: navButton;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChevronDown, ChevronUp, Cross } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSearchBar.module.css\";\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose\n}) {\n const handleInputChange = useCallback(e => {\n onQueryChange(e.target.value);\n }, [onQueryChange]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (e.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n }, [onNext, onPrev, onClose]);\n const matchDisplay = totalMatches > 0 ? `${currentMatchIndex + 1} of ${totalMatches}` : query.length > 0 ? \"No results\" : \"\";\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.searchBar\n }, /*#__PURE__*/React.createElement(\"input\", {\n autoFocus: true,\n className: styles.searchInput,\n type: \"text\",\n value: query,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n placeholder: \"Find in document...\",\n \"aria-label\": \"Search in PDF\"\n }), matchDisplay.length > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.matchCount\n }, matchDisplay), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onPrev,\n disabled: totalMatches === 0,\n \"aria-label\": \"Previous match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onNext,\n disabled: totalMatches === 0,\n \"aria-label\": \"Next match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.closeButton,\n onClick: onClose,\n \"aria-label\": \"Close search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Cross, {\n size: 16\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default empty values (stable references to avoid re-renders)\nexport const EMPTY_ANNOTATION_ARRAY = [];\nexport const EMPTY_STRING = \"\";\n\n// Scale and dimension configuration\nexport const SCALE_STEP = 0.25;\nexport const MIN_SCALE = 0.25;\nexport const MAX_SCALE = 5.0;\nexport const DEFAULT_PAGE_HEIGHT = 792;\nexport const THUMBNAIL_GAP = 12;\nexport const THUMBNAIL_SCALE = 0.2;\nexport const DEVICE_PIXEL_RATIO = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1;\n\n// Outline heading extraction\n/** Text must be at least 15% larger than the most common font size to be considered a heading. */\nexport const OUTLINE_HEADING_SIZE_RATIO = 1.15;\n/** Headings longer than this are likely paragraphs and are filtered out. */\nexport const OUTLINE_MAX_HEADING_LENGTH = 200;\n\n// pdfjs EventBus event names\nexport const FIND_EVENT = \"find\";\nexport const UPDATE_FIND_CONTROL_STATE_EVENT = \"updatefindcontrolstate\";\nexport const UPDATE_FIND_MATCHES_COUNT_EVENT = \"updatefindmatchescount\";\nexport const PAGE_CHANGING_EVENT = \"pagechanging\";\nexport const SCALE_CHANGING_EVENT = \"scalechanging\";\nexport const PAGE_RENDERED_EVENT = \"pagerendered\";\nexport const PAGES_LOADED_EVENT = \"pagesloaded\";\n// cspell:disable-next-line -- pdfjs EventBus event name\nexport const ANNOTATION_LAYER_RENDERED_EVENT = \"annotationlayerrendered\";",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n}\n\n.thumbnailsContainer {\n position: relative;\n}\n\n.thumbnailWrapper {\n position: absolute;\n left: 0;\n width: 100%;\n display: flex;\n justify-content: center;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap)\n var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.pageNumber {\n text-align: center;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n margin-top: 4px;\n}\n",".thumbnailContainer {\n position: relative;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n overflow: hidden;\n transition: border-color var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.thumbnailContainer:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-border);\n}\n\n.active {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.active:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.canvas {\n display: block;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick\n}) {\n const canvasRef = useRef(null);\n const renderTaskRef = useRef(null);\n const [dimensions, setDimensions] = useState(undefined);\n useEffect(() => {\n let cancelled = false;\n void document.getPage(pageNumber).then(page => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n const viewport = page.getViewport({\n scale: THUMBNAIL_SCALE\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\n canvas.width = Math.floor(viewport.width * DEVICE_PIXEL_RATIO);\n canvas.height = Math.floor(viewport.height * DEVICE_PIXEL_RATIO);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height)\n });\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n context.setTransform(DEVICE_PIXEL_RATIO, 0, 0, DEVICE_PIXEL_RATIO, 0, 0);\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n renderTaskRef.current = renderTask;\n void renderTask.promise.catch(err => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\n });\n return () => {\n cancelled = true;\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n renderTaskRef.current = null;\n }\n };\n }, [document, pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }, [onClick]);\n const containerClassName = classnames(styles.thumbnailContainer, isActive && styles.active);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": `Page ${pageNumber}`,\n \"aria-current\": isActive ? \"page\" : undefined,\n style: dimensions != null ? {\n width: dimensions.width,\n height: dimensions.height\n } : undefined\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n className: styles.canvas\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useEffect, useRef } from \"react\";\nimport { DEFAULT_PAGE_HEIGHT, THUMBNAIL_GAP, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n sidebarMode,\n onSidebarModeChange\n}) {\n const scrollContainerRef = useRef(null);\n const estimatedItemHeight = Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE) + THUMBNAIL_GAP + 20;\n const virtualizer = useVirtualizer({\n count: numPages,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => estimatedItemHeight,\n overscan: 2\n });\n\n // Auto-scroll to keep the active thumbnail visible\n useEffect(function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, {\n align: \"auto\"\n });\n }, [currentPage, virtualizer]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollContainerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.thumbnailsContainer,\n style: {\n height: virtualizer.getTotalSize()\n }\n }, virtualizer.getVirtualItems().map(virtualItem => {\n const pageNumber = virtualItem.index + 1;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: virtualItem.key,\n className: styles.thumbnailWrapper,\n style: {\n top: virtualItem.start,\n height: virtualItem.size\n }\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(PdfViewerThumbnail, {\n document: document,\n pageNumber: pageNumber,\n isActive: pageNumber === currentPage,\n onClick: () => onPageClick(pageNumber)\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.pageNumber\n }, pageNumber)));\n }))));\n}",".toolbar {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-toolbar-bg);\n border-bottom: var(--osdk-pdf-viewer-toolbar-border);\n color: var(--osdk-pdf-viewer-toolbar-color);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n flex-shrink: 0;\n}\n\n.toolbarGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.separator {\n width: 1px;\n height: 20px;\n background-color: var(--osdk-surface-border-color-default);\n margin: 0 var(--osdk-surface-spacing);\n}\n\n.toolbarButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.toolbarButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.toolbarButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.toolbarButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.toolbarButton:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.toolbarButtonActive {\n background-color: var(--osdk-surface-background-color-default-active);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.pageInput {\n width: 48px;\n text-align: center;\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: calc(0.5 * var(--osdk-surface-spacing)) var(--osdk-surface-spacing);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n}\n\n.pageInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.pageCount {\n color: var(--osdk-typography-color-muted);\n}\n\n.scaleDisplay {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n min-width: 40px;\n text-align: center;\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport { ChevronLeft, ChevronRight, Download, FloppyDisk, Highlight, Menu, Minus, Plus, RotatePage, Search } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n sidebarOpen,\n onPageChange,\n onScaleChange,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n enableDownload,\n onRotateLeft,\n onRotateRight,\n enableHighlight,\n highlightModeActive,\n onHighlightToggle,\n enableFormSave = false,\n onFormSave\n}) {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(function syncPageInput() {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handlePrevPage = useCallback(() => {\n if (currentPage > 1) {\n const newPage = currentPage - 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, onPageChange]);\n const handleNextPage = useCallback(() => {\n if (currentPage < numPages) {\n const newPage = currentPage + 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, numPages, onPageChange]);\n const handlePageInputChange = useCallback(e => {\n setPageInputValue(e.target.value);\n }, []);\n const handlePageInputKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n const page = parseInt(pageInputValue, 10);\n if (!isNaN(page) && page >= 1 && page <= numPages) {\n onPageChange(page);\n } else {\n setPageInputValue(String(currentPage));\n }\n }\n }, [pageInputValue, numPages, onPageChange, currentPage]);\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handleZoomIn = useCallback(() => {\n const newScale = Math.min(scale + SCALE_STEP, MAX_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const handleZoomOut = useCallback(() => {\n const newScale = Math.max(scale - SCALE_STEP, MIN_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const scalePercent = `${Math.round(scale * 100)}%`;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbar\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSidebarToggle,\n \"aria-label\": sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n title: sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n \"aria-pressed\": sidebarOpen,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Menu, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handlePrevPage,\n disabled: currentPage <= 1,\n \"aria-label\": \"Previous page\",\n title: \"Previous page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronLeft, {\n size: 16\n })), /*#__PURE__*/React.createElement(Input, {\n className: styles.pageInput,\n type: \"text\",\n value: pageInputValue,\n onChange: handlePageInputChange,\n onKeyDown: handlePageInputKeyDown,\n onBlur: handlePageInputBlur,\n \"aria-label\": \"Page number\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.pageCount\n }, \"of \", numPages), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleNextPage,\n disabled: currentPage >= numPages,\n \"aria-label\": \"Next page\",\n title: \"Next page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronRight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomOut,\n disabled: scale <= MIN_SCALE,\n \"aria-label\": \"Zoom out\",\n title: \"Zoom out\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Minus, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.scaleDisplay\n }, scalePercent), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomIn,\n disabled: scale >= MAX_SCALE,\n \"aria-label\": \"Zoom in\",\n title: \"Zoom in\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Plus, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateLeft,\n \"aria-label\": \"Rotate left\",\n title: \"Rotate left\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateRight,\n \"aria-label\": \"Rotate right\",\n title: \"Rotate right\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16,\n style: {\n transform: \"scaleX(-1)\"\n }\n }))), enableHighlight && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: classnames(styles.toolbarButton, highlightModeActive && styles.toolbarButtonActive),\n onClick: onHighlightToggle,\n \"aria-label\": highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n title: highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n \"aria-pressed\": highlightModeActive,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Highlight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSearchOpen,\n \"aria-label\": \"Search\",\n title: \"Search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Search, {\n size: 16\n })), enableDownload && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onDownload,\n \"aria-label\": \"Download\",\n title: \"Download\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Download, {\n size: 16\n }))), enableFormSave && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onFormSave,\n \"aria-label\": \"Save form\",\n title: \"Save form\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(FloppyDisk, {\n size: 16\n }))));\n}","/*\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 { useMemo } from \"react\";\n/**\n * Groups a flat array of annotations by page number for efficient per-page lookup.\n */\nexport function usePdfAnnotationsByPage(annotations) {\n return useMemo(() => {\n const result = {};\n for (const ann of annotations) {\n (result[ann.page] ??= []).push(ann);\n }\n return result;\n }, [annotations]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ANNOTATION_LAYER_RENDERED_EVENT } from \"../constants.js\";\n/** Get the viewer's container element (typed loosely by pdf.js). */\nfunction getViewerContainer(viewer) {\n return viewer.container;\n}\n\n/** Internal metadata for a single form field annotation. */\n\n/**\n * Normalizes a pdf.js field object type string to a simplified form type.\n * @internal Exported for testing.\n */\nexport function normalizeFieldType(type) {\n switch (type) {\n case \"checkbox\":\n case \"radiobutton\":\n case \"combobox\":\n case \"listbox\":\n return type;\n default:\n return \"text\";\n }\n}\n\n/**\n * Converts a pdf.js annotationStorage value to a consumer-friendly PdfFormFieldValue.\n * @internal Exported for testing.\n */\nexport function toFormFieldValue(storageValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof storageValue === \"boolean\") {\n return storageValue;\n }\n // pdf.js stores checkbox as the export value when checked, \"Off\" when unchecked\n return storageValue !== \"Off\" && storageValue !== false;\n }\n if (fieldType === \"radiobutton\") {\n return typeof storageValue === \"string\" ? storageValue : \"\";\n }\n if (typeof storageValue === \"string\") {\n return storageValue;\n }\n if (Array.isArray(storageValue)) {\n return storageValue.map(String);\n }\n return \"\";\n}\n\n/**\n * Converts a consumer PdfFormFieldValue to a pdf.js annotationStorage value.\n * @internal Exported for testing.\n */\nexport function toStorageValue(formValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof formValue === \"boolean\") {\n return formValue;\n }\n return formValue !== \"Off\" && formValue !== \"\";\n }\n return formValue;\n}\n\n/**\n * Hook that manages interactive PDF form fields.\n * Builds a field metadata map, pre-populates initial values,\n * listens for field changes, and collects values on submit.\n */\nexport function usePdfFormFields({\n pdfViewerRef,\n eventBusRef,\n document,\n formData,\n onFormSubmit,\n onFormChange\n}) {\n const [hasFormFields, setHasFormFields] = useState(false);\n\n // Stable refs for callbacks\n const onFormSubmitRef = useRef(onFormSubmit);\n const onFormChangeRef = useRef(onFormChange);\n const formDataRef = useRef(formData);\n useEffect(function syncCallbackRefs() {\n onFormSubmitRef.current = onFormSubmit;\n onFormChangeRef.current = onFormChange;\n formDataRef.current = formData;\n }, [onFormSubmit, onFormChange, formData]);\n\n // Map from annotation ID -> field metadata\n const fieldMapRef = useRef(new Map());\n // Reverse map from field name -> annotation IDs\n const nameToIdsRef = useRef(new Map());\n\n // Effect 1: Build field metadata map when document loads\n useEffect(function buildFieldMap() {\n const doc = document;\n if (doc == null) {\n fieldMapRef.current.clear();\n nameToIdsRef.current.clear();\n setHasFormFields(false);\n return;\n }\n let cancelled = false;\n void doc.getFieldObjects().then(fieldObjects => {\n if (cancelled || fieldObjects == null) {\n setHasFormFields(false);\n return;\n }\n const fieldMap = new Map();\n const nameToIds = new Map();\n for (const [fieldName, objects] of Object.entries(fieldObjects)) {\n const ids = [];\n for (const obj of objects) {\n const typedObj = obj;\n if (typedObj.id == null) continue;\n const fieldType = normalizeFieldType(typedObj.type ?? \"text\");\n fieldMap.set(typedObj.id, {\n fieldName,\n fieldType,\n exportValues: typedObj.exportValues,\n page: typedObj.page ?? 0\n });\n ids.push(typedObj.id);\n }\n if (ids.length > 0) {\n nameToIds.set(fieldName, ids);\n }\n }\n fieldMapRef.current = fieldMap;\n nameToIdsRef.current = nameToIds;\n setHasFormFields(fieldMap.size > 0);\n });\n return () => {\n cancelled = true;\n };\n }, [document]);\n\n // Populates form fields from formData into both annotation storage and DOM elements.\n // Scoped to the viewer container to avoid conflicts with multiple viewer instances.\n const populateFields = useCallback(() => {\n const data = formDataRef.current;\n const doc = document;\n const pdfViewer = pdfViewerRef.current;\n if (data == null || doc == null || pdfViewer == null) return;\n if (fieldMapRef.current.size === 0) return;\n const storage = doc.annotationStorage;\n const container = getViewerContainer(pdfViewer);\n for (const [fieldName, value] of Object.entries(data)) {\n const ids = nameToIdsRef.current.get(fieldName);\n if (ids == null) continue;\n for (const id of ids) {\n const entry = fieldMapRef.current.get(id);\n if (entry == null) continue;\n\n // Also update the DOM element directly (scoped to viewer container)\n const el = container?.querySelector(`[data-element-id=\"${CSS.escape(id)}\"]`);\n if (entry.fieldType === \"radiobutton\") {\n // Radio buttons: each ID is a separate option. Check the one\n // whose export value matches, uncheck the others.\n // Use exportValues if defined, otherwise fall back to the DOM\n // element's value attribute (mirrors handleFieldChange logic).\n const optionValue = entry.exportValues ?? (el instanceof HTMLInputElement ? el.value : undefined);\n const isSelected = optionValue === String(value);\n storage.setValue(id, {\n value: isSelected ? entry.exportValues ?? String(value) : \"Off\"\n });\n if (el instanceof HTMLInputElement) {\n el.checked = isSelected;\n }\n } else {\n const storageVal = toStorageValue(value, entry.fieldType);\n storage.setValue(id, {\n value: storageVal\n });\n if (el == null) continue;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n el.checked = typeof storageVal === \"boolean\" ? storageVal : storageVal !== \"Off\";\n } else if (el instanceof HTMLSelectElement) {\n el.value = String(value);\n } else if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n el.value = String(value);\n }\n }\n }\n }\n }, [document, pdfViewerRef]);\n\n // Effect 2: Populate initial form data when annotation layers render\n useEffect(function populateFormData() {\n const eventBus = eventBusRef.current;\n if (eventBus == null || document == null || formDataRef.current == null) {\n return;\n }\n\n // Attempt population immediately in case the field map was built\n // after the annotation layer already rendered (race condition fix).\n populateFields();\n const onAnnotationLayerRendered = () => {\n populateFields();\n };\n eventBus.on(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n return () => {\n eventBus.off(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n };\n }, [eventBusRef, document, hasFormFields, populateFields]);\n\n // Effect 3: Listen for field changes via MutationObserver + event listeners\n useEffect(function listenForFieldChanges() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n\n // Get the viewer's container element\n const container = getViewerContainer(pdfViewer);\n if (container == null) return;\n const listeners = new Map();\n function handleFieldChange(el) {\n const id = el.getAttribute(\"data-element-id\");\n if (id == null) return;\n const entry = fieldMapRef.current.get(id);\n if (entry == null) return;\n let value;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n value = el.checked;\n } else if (entry.fieldType === \"radiobutton\" && el instanceof HTMLInputElement) {\n // For radio buttons, the value is the button's export value when selected\n value = el.checked ? entry.exportValues ?? el.value : \"\";\n } else {\n value = el.value;\n }\n onFormChangeRef.current?.(entry.fieldName, value);\n }\n function attachListeners(root) {\n const elements = root.querySelectorAll?.(\".annotationLayer input, .annotationLayer select, .annotationLayer textarea\");\n if (elements == null) return;\n for (const el of elements) {\n if (listeners.has(el)) continue;\n const handler = () => {\n handleFieldChange(el);\n };\n el.addEventListener(\"input\", handler);\n el.addEventListener(\"change\", handler);\n listeners.set(el, handler);\n }\n }\n\n // Attach to any elements already in the DOM\n attachListeners(container);\n\n // Watch for new form elements being added (pages render lazily)\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n attachListeners(node);\n }\n }\n }\n });\n observer.observe(container, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n for (const [el, handler] of listeners) {\n el.removeEventListener(\"input\", handler);\n el.removeEventListener(\"change\", handler);\n }\n listeners.clear();\n };\n }, [pdfViewerRef, document]);\n\n // Callback: collect all form data and invoke onFormSubmit\n const submitFormData = useCallback(() => {\n const doc = document;\n if (doc == null) return;\n const storage = doc.annotationStorage;\n const allValues = storage.getAll();\n const result = {};\n\n // Track which radio group has been resolved\n const resolvedRadios = new Set();\n for (const [id, entry] of fieldMapRef.current) {\n const {\n fieldName,\n fieldType\n } = entry;\n\n // For radio buttons, only process each group once\n if (fieldType === \"radiobutton\") {\n if (resolvedRadios.has(fieldName)) continue;\n resolvedRadios.add(fieldName);\n\n // Find the selected radio in the group\n const groupIds = nameToIdsRef.current.get(fieldName) ?? [];\n let selectedValue = \"\";\n for (const radioId of groupIds) {\n const stored = allValues?.[radioId];\n const val = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n if (val === true || typeof val === \"string\" && val !== \"Off\") {\n const radioEntry = fieldMapRef.current.get(radioId);\n selectedValue = radioEntry?.exportValues ?? String(val);\n break;\n }\n }\n result[fieldName] = selectedValue;\n continue;\n }\n const stored = allValues?.[id];\n const rawValue = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n\n // Skip if we already have a value for this field name (e.g. duplicate IDs)\n if (fieldName in result) continue;\n result[fieldName] = toFormFieldValue(rawValue, fieldType);\n }\n onFormSubmitRef.current?.(result);\n }, [document]);\n return {\n hasFormFields,\n submitFormData\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n/**\n * Converts an RGB array (0.0–1.0 per channel) to a CSS hex color string.\n */\nexport function rgbArrayToHex(color) {\n const r = Math.round(color[0] * 255);\n const g = Math.round(color[1] * 255);\n const b = Math.round(color[2] * 255);\n return `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`;\n}\n\n/**\n * Converts quadPoints (PDF spec format) back to PdfRect[].\n * QuadPoints are 8 values per quad: [x1,y1, x2,y2, x3,y3, x4,y4]\n * representing the four corners of each highlight rect.\n *\n * PDF.js highlight editor produces axis-aligned quads with ordering:\n * (x1,y1)=top-left, (x2,y2)=top-right, (x3,y3)=bottom-left, (x4,y4)=bottom-right\n * We derive the bounding rect from x1, y1 (top), x2 (right edge), y3 (bottom).\n */\nexport function quadPointsToRects(quadPoints) {\n const rects = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n const x1 = quadPoints[i];\n const y1 = quadPoints[i + 1];\n const x2 = quadPoints[i + 2];\n const y3 = quadPoints[i + 5];\n const x = Math.min(x1, x2);\n const y = Math.min(y1, y3);\n const width = Math.abs(x2 - x1);\n const height = Math.abs(y1 - y3);\n rects.push({\n x,\n y,\n width,\n height\n });\n }\n return rects;\n}\n\n/**\n * Hook that manages the PDF.js built-in highlight annotation editor mode.\n * When active, users can select text to create highlights.\n * A callback fires with the annotation details for persistence.\n */\nexport function usePdfHighlightMode({\n pdfViewerRef,\n document,\n enabled,\n onTextHighlight,\n onHighlightDelete\n}) {\n const [highlightModeActive, setHighlightModeActive] = useState(false);\n const onTextHighlightRef = useRef(onTextHighlight);\n const onHighlightDeleteRef = useRef(onHighlightDelete);\n const knownEditorIdsRef = useRef(new Set());\n const editorEventsRef = useRef(new Map());\n\n // Keep callback refs in sync\n useEffect(function syncCallbackRef() {\n onTextHighlightRef.current = onTextHighlight;\n onHighlightDeleteRef.current = onHighlightDelete;\n }, [onTextHighlight, onHighlightDelete]);\n\n // Toggle the PDF.js annotation editor mode\n useEffect(function syncHighlightMode() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n try {\n if (highlightModeActive && enabled) {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.HIGHLIGHT\n };\n } else {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.NONE\n };\n }\n } catch {\n // AnnotationEditorUIManager may not be initialized yet\n }\n }, [pdfViewerRef, document, highlightModeActive, enabled]);\n\n // Deactivate highlight mode when the feature is disabled\n useEffect(function deactivateOnDisable() {\n if (!enabled) {\n setHighlightModeActive(false);\n }\n }, [enabled]);\n\n // Clear tracked editors when the document changes (but not on highlight toggle)\n const prevDocumentRef = useRef(undefined);\n useEffect(function clearOnDocumentChange() {\n if (document !== prevDocumentRef.current) {\n knownEditorIdsRef.current.clear();\n editorEventsRef.current.clear();\n prevDocumentRef.current = document;\n }\n }, [document]);\n\n // Listen for new highlights being added to annotation storage\n useEffect(function listenForHighlights() {\n if (document == null || !highlightModeActive || !enabled) {\n return;\n }\n const storage = document.annotationStorage;\n const previousOnAnnotationEditor = storage.onAnnotationEditor;\n\n // Monkey-patch storage.remove to detect highlight deletions.\n // This is fragile but necessary because PDF.js does not emit events\n // when editors are removed. Restore the original on cleanup.\n const originalRemove = storage.remove.bind(storage);\n storage.remove = key => {\n const savedEvent = editorEventsRef.current.get(key);\n if (savedEvent != null) {\n editorEventsRef.current.delete(key);\n knownEditorIdsRef.current.delete(key);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n originalRemove(key);\n };\n storage.onAnnotationEditor = type => {\n // onAnnotationEditor fires with the editor's static _type (string \"highlight\")\n if (type !== \"highlight\") {\n return;\n }\n\n // Find new editors in storage\n const allEntries = storage.getAll();\n if (allEntries == null) {\n return;\n }\n for (const [id, entry] of Object.entries(allEntries)) {\n if (knownEditorIdsRef.current.has(id)) {\n continue;\n }\n\n // Check if this is a highlight editor with serializable data\n if (typeof entry === \"object\" && entry != null && \"serialize\" in entry && typeof entry.serialize === \"function\") {\n knownEditorIdsRef.current.add(id);\n const serialized = entry.serialize(false);\n if (serialized == null || serialized.annotationType !== AnnotationEditorType.HIGHLIGHT) {\n continue;\n }\n const rects = serialized.quadPoints != null ? quadPointsToRects(serialized.quadPoints) : [];\n if (rects.length === 0) {\n continue;\n }\n const color = Array.isArray(serialized.color) ? rgbArrayToHex(serialized.color) : \"#fff066\";\n\n // Extract text from the editor's aria-label (stores selected text)\n const selectedText = typeof entry.div?.getAttribute === \"function\" ? entry.div.getAttribute(\"aria-label\") ?? \"\" : \"\";\n const event = {\n editorId: id,\n page: serialized.pageIndex + 1,\n rects,\n selectedText,\n color\n };\n\n // Store the event so we can provide it back on delete\n editorEventsRef.current.set(id, event);\n onTextHighlightRef.current?.(event);\n }\n }\n };\n return () => {\n storage.onAnnotationEditor = previousOnAnnotationEditor;\n storage.remove = originalRemove;\n };\n }, [document, highlightModeActive, enabled]);\n const toggleHighlightMode = useCallback(() => {\n setHighlightModeActive(prev => !prev);\n }, []);\n const deleteHighlight = useCallback(editorId => {\n if (document == null) return;\n const storage = document.annotationStorage;\n\n // Fire the delete callback directly. The monkey-patch on storage.remove\n // only exists while highlight mode is active, so we handle it here to\n // ensure the callback fires regardless of highlight mode state.\n // Clean up refs first so the monkey-patch (if active) won't double-fire.\n const savedEvent = editorEventsRef.current.get(editorId);\n if (savedEvent != null) {\n editorEventsRef.current.delete(editorId);\n knownEditorIdsRef.current.delete(editorId);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n\n // Remove the editor's DOM element if it exists\n const allEntries = storage.getAll();\n const entry = allEntries?.[editorId];\n if (hasDiv(entry) && entry.div instanceof HTMLElement) {\n entry.div.remove();\n }\n storage.remove(editorId);\n }, [document]);\n return {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n };\n}\nfunction hasDiv(obj) {\n return obj != null && typeof obj === \"object\" && \"div\" in obj;\n}","/*\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 { useEffect, useState } from \"react\";\nimport { OUTLINE_HEADING_SIZE_RATIO, OUTLINE_MAX_HEADING_LENGTH } from \"../constants.js\";\nconst EMPTY_OUTLINE = [];\nexport function usePdfOutline(document) {\n const [outlineItems, setOutlineItems] = useState(EMPTY_OUTLINE);\n useEffect(function loadOutline() {\n if (document == null) {\n setOutlineItems(EMPTY_OUTLINE);\n return;\n }\n let cancelled = false;\n void (async () => {\n try {\n // Try embedded bookmarks first\n const outline = await document.getOutline();\n if (cancelled) return;\n if (outline != null && outline.length > 0) {\n const items = await resolveBookmarkOutline(document, outline);\n if (!cancelled) {\n setOutlineItems(items);\n }\n return;\n }\n\n // Fall back to extracting headings from text content\n const items = await extractHeadingsFromText(document);\n if (!cancelled) {\n setOutlineItems(items.length > 0 ? items : EMPTY_OUTLINE);\n }\n } catch {\n // If extraction fails entirely, leave outline empty\n if (!cancelled) {\n setOutlineItems(EMPTY_OUTLINE);\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [document]);\n return outlineItems;\n}\nasync function resolveBookmarkOutline(document, outline) {\n const items = [];\n const resolveItems = async (nodes, depth) => {\n for (const node of nodes) {\n let pageNumber = 1;\n try {\n if (typeof node.dest === \"string\") {\n const dest = await document.getDestination(node.dest);\n if (dest != null) {\n const pageIndex = await document.getPageIndex(dest[0]);\n pageNumber = pageIndex + 1;\n }\n } else if (Array.isArray(node.dest) && node.dest.length > 0) {\n const pageIndex = await document.getPageIndex(node.dest[0]);\n pageNumber = pageIndex + 1;\n }\n } catch {\n // If destination resolution fails, default to page 1\n }\n items.push({\n title: node.title,\n depth,\n pageNumber,\n bold: node.bold,\n italic: node.italic\n });\n if (node.items.length > 0) {\n await resolveItems(node.items, depth + 1);\n }\n }\n };\n await resolveItems(outline, 0);\n return items;\n}\nfunction isTextItem(item) {\n return \"str\" in item && \"transform\" in item;\n}\nfunction roundFontSize(size) {\n return Math.round(size * 10) / 10;\n}\n\n/**\n * Extract the font size from a pdfjs TextItem.\n * Prefer `height` when available, otherwise derive from the transform matrix.\n * The transform is [scaleX, skewY, skewX, scaleY, translateX, translateY].\n * Font size = sqrt(skewX² + scaleY²), which handles rotated text too.\n */\nfunction getFontSize(item) {\n if (item.height > 0) {\n return item.height;\n }\n const transform = item.transform;\n if (Array.isArray(transform) && transform.length >= 4) {\n return Math.sqrt(transform[2] * transform[2] + transform[3] * transform[3]);\n }\n return 0;\n}\nasync function extractHeadingsFromText(document) {\n const numPages = document.numPages;\n\n // Fetch all pages' text content in parallel\n const pageContents = await Promise.all(Array.from({\n length: numPages\n }, (_, i) => document.getPage(i + 1).then(page => page.getTextContent())));\n\n // Collect font size frequencies across all pages\n const sizeCounts = new Map();\n for (const textContent of pageContents) {\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item) || item.str.trim().length === 0) {\n continue;\n }\n const fontSize = getFontSize(item);\n if (fontSize > 0) {\n const rounded = roundFontSize(fontSize);\n sizeCounts.set(rounded, (sizeCounts.get(rounded) ?? 0) + 1);\n }\n }\n }\n\n // Find the most common font size (body text)\n let bodySize = 0;\n let maxCount = 0;\n for (const [size, count] of sizeCounts) {\n if (count > maxCount) {\n maxCount = count;\n bodySize = size;\n }\n }\n if (bodySize === 0) {\n return [];\n }\n\n // Heading threshold: text significantly larger than body text\n const headingThreshold = bodySize * OUTLINE_HEADING_SIZE_RATIO;\n\n // Collect all unique heading sizes above threshold\n const headingSizes = new Set();\n for (const [size] of sizeCounts) {\n if (size >= headingThreshold) {\n headingSizes.add(size);\n }\n }\n if (headingSizes.size === 0) {\n return [];\n }\n\n // Sort heading sizes descending (largest = depth 0)\n const sortedSizes = [...headingSizes].sort((a, b) => b - a);\n const sizeToDepth = new Map();\n for (let i = 0; i < sortedSizes.length; i++) {\n sizeToDepth.set(sortedSizes[i], i);\n }\n\n // Extract headings with page numbers.\n // pdfjs splits visual lines into multiple TextItems (e.g. \"1.\" and\n // \"Introduction\" are separate items). We accumulate all items on the\n // same visual line and treat the line as a heading if most of its\n // content is at a heading font size.\n const candidateHeadings = [];\n for (let pageIdx = 0; pageIdx < pageContents.length; pageIdx++) {\n const textContent = pageContents[pageIdx];\n const pageNumber = pageIdx + 1;\n let lineItems = [];\n let linePageNumber = pageNumber;\n let lineFontName = \"\";\n let lineHeadingFontSize = 0;\n let lastFlushWasHeading = false;\n const flushLine = () => {\n if (lineItems.length === 0) return;\n\n // Check if the majority of the line's non-whitespace content is heading-sized\n let headingChars = 0;\n let totalChars = 0;\n for (const li of lineItems) {\n const len = li.text.trim().length;\n totalChars += len;\n if (sizeToDepth.has(roundFontSize(li.fontSize))) {\n headingChars += len;\n }\n }\n if (totalChars > 0 && headingChars / totalChars > 0.5) {\n const fullText = lineItems.map(li => li.text).join(\"\").trim();\n if (fullText.length > 0) {\n candidateHeadings.push({\n text: fullText,\n fontSize: lineHeadingFontSize,\n pageNumber: linePageNumber,\n fontName: lineFontName,\n contiguous: lastFlushWasHeading\n });\n }\n lastFlushWasHeading = true;\n } else {\n lastFlushWasHeading = false;\n }\n lineItems = [];\n lineHeadingFontSize = 0;\n };\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item)) {\n continue;\n }\n const fontSize = getFontSize(item);\n const rounded = roundFontSize(fontSize);\n const isHeadingSized = sizeToDepth.has(rounded);\n if (isHeadingSized && lineHeadingFontSize === 0) {\n lineHeadingFontSize = rounded;\n linePageNumber = pageNumber;\n lineFontName = item.fontName;\n }\n if (lineHeadingFontSize > 0) {\n lineItems.push({\n text: item.str,\n fontSize\n });\n }\n if (item.hasEOL) {\n flushLine();\n }\n }\n\n // Flush remaining items at end of page\n flushLine();\n }\n\n // Merge consecutive heading lines that were contiguous (no body text between them)\n // and at the same font size. This joins multi-line titles that wrap in the PDF.\n const mergedHeadings = [];\n for (const heading of candidateHeadings) {\n const prev = mergedHeadings[mergedHeadings.length - 1];\n if (prev != null && heading.contiguous && Math.abs(prev.fontSize - heading.fontSize) < 0.1) {\n prev.text += \" \" + heading.text;\n } else {\n mergedHeadings.push({\n ...heading\n });\n }\n }\n return mergedHeadings.filter(heading => heading.text.trim().length <= OUTLINE_MAX_HEADING_LENGTH).map(heading => ({\n title: heading.text.trim(),\n depth: sizeToDepth.get(heading.fontSize) ?? 0,\n pageNumber: heading.pageNumber,\n bold: false,\n italic: false\n }));\n}","/*\n * 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 { useEffect, useState } from \"react\";\nimport { PAGE_RENDERED_EVENT } from \"../constants.js\";\nexport function usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document) {\n const [portalTargets, setPortalTargets] = useState([]);\n useEffect(function subscribePageRendered() {\n const eventBus = eventBusRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (eventBus == null || pdfViewer == null) {\n return;\n }\n const handlePageRendered = evt => {\n const pageIndex = evt.pageNumber - 1;\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.div == null || pageView?.viewport == null) {\n return;\n }\n const viewport = pageView.viewport;\n setPortalTargets(prev => {\n // Replace existing entry for this page or add new one\n const filtered = prev.filter(t => t.pageNumber !== evt.pageNumber);\n return [...filtered, {\n pageNumber: evt.pageNumber,\n container: pageView.div,\n pageHeight: viewport.viewBox[3],\n // viewBox is [xMin, yMin, width, height] and we need the original height before scaling\n scale: viewport.scale\n }].sort((a, b) => a.pageNumber - b.pageNumber);\n });\n };\n eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);\n return () => {\n eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);\n setPortalTargets([]);\n };\n }, [eventBusRef, pdfViewerRef, document]);\n return portalTargets;\n}","/*\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 { getDocument, GlobalWorkerOptions } from \"pdfjs-dist\";\nconst pdfWorkerUrl = new URL(\"pdfjs-dist/build/pdf.worker.min.mjs\", import.meta.url);\nimport { useEffect, useState } from \"react\";\nconst pdfWorker = {\n workerInitialized: false,\n ensureWorker() {\n GlobalWorkerOptions.workerSrc = pdfWorkerUrl.href;\n this.workerInitialized = true;\n }\n};\nexport function usePdfDocument(src) {\n const [document, setDocument] = useState(undefined);\n const [numPages, setNumPages] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n useEffect(function loadPdfDocument() {\n pdfWorker.ensureWorker();\n setLoading(true);\n setError(undefined);\n const loadingTask = getDocument(typeof src === \"string\" ? {\n url: src\n } : {\n data: src\n });\n let cancelled = false;\n loadingTask.promise.then(pdf => {\n if (!cancelled) {\n setDocument(pdf);\n setNumPages(pdf.numPages);\n setLoading(false);\n }\n }, err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n void loadingTask.destroy();\n };\n }, [src]);\n return {\n document,\n numPages,\n loading,\n error\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { EventBus, PDFFindController, PDFLinkService, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport { useEffect, useRef } from \"react\";\nimport { PAGES_LOADED_EVENT } from \"../constants.js\";\nexport function usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage) {\n const pdfViewerRef = useRef(null);\n const eventBusRef = useRef(null);\n const findControllerRef = useRef(null);\n useEffect(function initializePdfViewer() {\n const container = containerRef.current;\n const viewer = viewerRef.current;\n if (container == null || viewer == null || document == null) {\n return;\n }\n const eventBus = new EventBus();\n const linkService = new PDFLinkService({\n eventBus\n });\n const findController = new PDFFindController({\n linkService,\n eventBus,\n updateMatchesCountOnProgress: true\n });\n const pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n linkService,\n findController,\n removePageBorders: true,\n annotationEditorMode: AnnotationEditorType.NONE,\n annotationEditorHighlightColors: \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\"\n });\n linkService.setViewer(pdfViewer);\n linkService.setDocument(document);\n findController.setDocument(document);\n pdfViewer.setDocument(document);\n\n // Apply initial scale and page after pages are loaded to avoid\n // \"scrollPageIntoView: not a valid pageNumber\" console errors.\n const onPagesLoaded = () => {\n if (initialScale != null) {\n pdfViewer.currentScale = initialScale;\n }\n if (initialPage != null && initialPage > 1) {\n pdfViewer.currentPageNumber = initialPage;\n pdfViewer.scrollPageIntoView({\n pageNumber: initialPage\n });\n }\n eventBus.off(PAGES_LOADED_EVENT, onPagesLoaded);\n };\n eventBus.on(PAGES_LOADED_EVENT, onPagesLoaded);\n eventBusRef.current = eventBus;\n findControllerRef.current = findController;\n pdfViewerRef.current = pdfViewer;\n return () => {\n pdfViewerRef.current = null;\n eventBusRef.current = null;\n findControllerRef.current = null;\n pdfViewer.cleanup();\n };\n }, [containerRef, viewerRef, document]);\n return {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { PAGE_CHANGING_EVENT, SCALE_CHANGING_EVENT } from \"../constants.js\";\nexport function usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange,\n onPageChange\n}) {\n const lastScaleRef = useRef(scale);\n\n // Sync React scale → PDFViewer\n useEffect(function syncScaleToViewer() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null) {\n return;\n }\n if (Math.abs(lastScaleRef.current - scale) > 0.001) {\n lastScaleRef.current = scale;\n pdfViewer.currentScale = scale;\n }\n }, [pdfViewerRef, scale]);\n\n // Listen to PDFViewer events → React state\n useEffect(function subscribeViewerEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handlePageChanging = evt => {\n onPageChange(evt.pageNumber);\n };\n const handleScaleChanging = evt => {\n lastScaleRef.current = evt.scale;\n onScaleChange(evt.scale);\n };\n eventBus.on(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.on(SCALE_CHANGING_EVENT, handleScaleChanging);\n return () => {\n eventBus.off(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.off(SCALE_CHANGING_EVENT, handleScaleChanging);\n };\n }, [eventBusRef, document, onPageChange, onScaleChange]);\n const scrollToPage = useCallback(page => {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.currentPageNumber = page;\n }\n }, [pdfViewerRef]);\n return {\n scrollToPage\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { usePdfAnnotationPortals } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfDocument } from \"./usePdfDocument.js\";\nimport { usePdfViewer } from \"./usePdfViewer.js\";\nimport { usePdfViewerSync } from \"./usePdfViewerSync.js\";\nexport function usePdfViewerCore({\n src,\n initialPage = 1,\n initialScale = 1.0\n}) {\n const {\n document,\n numPages,\n loading,\n error\n } = usePdfDocument(src);\n const [scale, setScale] = useState(initialScale);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const containerRef = useRef(null);\n const viewerRef = useRef(null);\n const {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n } = usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage);\n const handleScaleChange = useCallback(newScale => {\n setScale(newScale);\n }, []);\n const handlePageChange = useCallback(page => {\n setCurrentPage(page);\n }, []);\n const {\n scrollToPage: syncScrollToPage\n } = usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange: handleScaleChange,\n onPageChange: handlePageChange\n });\n const scrollToPage = useCallback(page => {\n setCurrentPage(page);\n syncScrollToPage(page);\n }, [syncScrollToPage]);\n const portalTargets = usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document);\n return useMemo(() => ({\n document,\n numPages,\n loading,\n error,\n containerRef,\n viewerRef,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n portalTargets,\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n }), [document, numPages, loading, error, currentPage, scrollToPage, scale, setScale, portalTargets]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { EMPTY_STRING, FIND_EVENT, UPDATE_FIND_CONTROL_STATE_EVENT, UPDATE_FIND_MATCHES_COUNT_EVENT } from \"../constants.js\";\nexport function usePdfViewerSearch(eventBusRef, findControllerRef, document) {\n const [query, setQueryState] = useState(EMPTY_STRING);\n const [totalMatches, setTotalMatches] = useState(0);\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n const dispatchFind = useCallback((queryString, findPrevious) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"\",\n query: queryString,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef]);\n const dispatchFindAgain = useCallback(findPrevious => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"again\",\n query,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef, query]);\n const setQuery = useCallback(input => {\n setQueryState(input);\n if (input === EMPTY_STRING) {\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Dispatch empty query to clear highlights\n dispatchFind(EMPTY_STRING, false);\n return;\n }\n dispatchFind(input, false);\n }, [dispatchFind]);\n const nextMatch = useCallback(() => {\n dispatchFindAgain(false);\n }, [dispatchFindAgain]);\n const prevMatch = useCallback(() => {\n dispatchFindAgain(true);\n }, [dispatchFindAgain]);\n const openSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n const closeSearch = useCallback(() => {\n setIsSearchOpen(false);\n setQueryState(EMPTY_STRING);\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Clear highlights\n dispatchFind(EMPTY_STRING, false);\n }, [dispatchFind]);\n useEffect(function subscribeSearchEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handleMatchesCount = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n const handleControlState = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n eventBus.on(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.on(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n return () => {\n eventBus.off(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.off(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n };\n }, [eventBusRef, findControllerRef, document]);\n return useMemo(() => ({\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch\n }), [query, totalMatches, currentMatchIndex, isSearchOpen, setQuery, nextMatch, prevMatch, openSearch, closeSearch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport { usePdfOutline } from \"./usePdfOutline.js\";\nimport { usePdfViewerCore } from \"./usePdfViewerCore.js\";\nimport { usePdfViewerSearch } from \"./usePdfViewerSearch.js\";\nexport function usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n onDownload\n}) {\n const core = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const [rotation, setRotation] = useState(0);\n const [sidebarOpen, setSidebarOpen] = useState(initialSidebarOpen);\n const [sidebarMode, setSidebarMode] = useState(sidebarModeProp);\n const search = usePdfViewerSearch(core.eventBusRef, core.findControllerRef, core.document);\n const outlineItems = usePdfOutline(core.document);\n\n // Sync sidebarMode prop changes to state\n useEffect(function syncSidebarMode() {\n setSidebarMode(sidebarModeProp);\n }, [sidebarModeProp]);\n\n // Sync rotation → PDFViewer\n useEffect(function syncRotationToViewer() {\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.pagesRotation = rotation;\n }\n }, [core.pdfViewerRef, rotation]);\n\n // Ctrl+F keyboard shortcut\n useEffect(function registerSearchShortcut() {\n const handleKeyDown = e => {\n if ((e.ctrlKey || e.metaKey) && e.key === \"f\") {\n e.preventDefault();\n search.openSearch();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [search.openSearch]);\n const zoomIn = useCallback(() => {\n core.setScale(Math.min(core.scale + SCALE_STEP, MAX_SCALE));\n }, [core.scale, core.setScale]);\n const zoomOut = useCallback(() => {\n core.setScale(Math.max(core.scale - SCALE_STEP, MIN_SCALE));\n }, [core.scale, core.setScale]);\n const rotateLeft = useCallback(() => {\n setRotation(prev => (prev - 90 + 360) % 360);\n }, []);\n const rotateRight = useCallback(() => {\n setRotation(prev => (prev + 90) % 360);\n }, []);\n const toggleSidebar = useCallback(() => {\n setSidebarOpen(prev => !prev);\n }, []);\n const download = useCallback(filename => {\n if (core.document == null) {\n return;\n }\n void core.document.getData().then(data => {\n const blob = new Blob([data.buffer], {\n type: \"application/pdf\"\n });\n const url = URL.createObjectURL(blob);\n const resolvedFilename = resolveDownloadFilename(src, filename);\n const a = globalThis.document.createElement(\"a\");\n a.href = url;\n a.download = resolvedFilename;\n a.click();\n URL.revokeObjectURL(url);\n onDownload?.({\n success: true,\n filename: resolvedFilename\n });\n }).catch(err => {\n onDownload?.({\n success: false,\n error: err instanceof Error ? err : new Error(\"Failed to download PDF\")\n });\n });\n }, [core.document, src, onDownload]);\n return useMemo(() => ({\n ...core,\n zoomIn,\n zoomOut,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download\n }), [core, zoomIn, zoomOut, rotation, rotateLeft, rotateRight, sidebarOpen, sidebarMode, setSidebarMode, toggleSidebar, search, outlineItems, download]);\n}\n\n/** Derive a download filename from an explicit name, the src URL, or a fallback. */\nfunction resolveDownloadFilename(src, filename) {\n if (filename != null) {\n return filename;\n }\n if (typeof src === \"string\") {\n return src.split(\"/\").pop()?.split(\"?\")[0] || \"document.pdf\";\n }\n return \"document.pdf\";\n}",".pdfViewer {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-pdf-viewer-bg);\n border: var(--osdk-pdf-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n position: relative;\n}\n\n.contentArea {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n.scrollContainerWrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n.scrollContainer {\n overflow: auto;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.loadingContainer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.errorContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-danger-rest);\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinnerIcon {\n animation: spin 1s linear infinite;\n color: var(--osdk-typography-color-muted);\n}\n\n.errorIcon {\n flex-shrink: 0;\n}\n\n/* PDFViewer page overrides */\n:global(.pdfViewer .page) {\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n background-color: var(--osdk-palette-white);\n margin: 0 auto var(--osdk-pdf-viewer-page-gap);\n}\n\n/* Search highlight overrides — match pdf.js FindController CSS classes */\n:global(.textLayer) .highlight {\n background-color: var(--osdk-pdf-viewer-search-highlight);\n border-radius: 1px;\n}\n\n:global(.textLayer) .highlight.selected {\n background-color: var(--osdk-pdf-viewer-search-active);\n}\n\n:global(.textLayer)::selection {\n background: var(--osdk-intent-primary-rest);\n}\n","/*\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 { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PdfViewerAnnotationLayer } from \"./components/PdfViewerAnnotationLayer.js\";\nimport { PdfViewerOutlineSidebar } from \"./components/PdfViewerOutlineSidebar.js\";\nimport { PdfViewerSearchBar } from \"./components/PdfViewerSearchBar.js\";\nimport { PdfViewerSidebar } from \"./components/PdfViewerSidebar.js\";\nimport { PdfViewerToolbar } from \"./components/PdfViewerToolbar.js\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\nimport styles from \"./PdfViewer.module.css\";\nexport const BasePdfViewer = /*#__PURE__*/forwardRef(function BasePdfViewer({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n onDownload,\n enableHighlight = false,\n onTextHighlight,\n onHighlightDelete,\n formData,\n onFormSubmit,\n onFormChange,\n initialPage = 1,\n initialScale = 1.0,\n initialSidebarOpen = false,\n enableDownload = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n outlineIcons,\n className\n}, ref) {\n const viewer = usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen,\n sidebarMode: sidebarModeProp,\n onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: enableHighlight,\n onTextHighlight,\n onHighlightDelete\n });\n useImperativeHandle(ref, () => ({\n scrollToPage: viewer.scrollToPage,\n deleteHighlight\n }), [viewer.scrollToPage, deleteHighlight]);\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormSubmit,\n onFormChange\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(PdfViewerToolbar, {\n currentPage: viewer.currentPage,\n numPages: viewer.numPages,\n scale: viewer.scale,\n sidebarOpen: viewer.sidebarOpen,\n onPageChange: viewer.scrollToPage,\n onScaleChange: viewer.setScale,\n onSearchOpen: viewer.search.openSearch,\n onSidebarToggle: viewer.toggleSidebar,\n onDownload: viewer.download,\n enableDownload: enableDownload,\n onRotateLeft: viewer.rotateLeft,\n onRotateRight: viewer.rotateRight,\n enableHighlight: enableHighlight,\n highlightModeActive: highlightModeActive,\n onHighlightToggle: toggleHighlightMode,\n enableFormSave: onFormSubmit != null && hasFormFields,\n onFormSave: submitFormData\n }), viewer.search.isSearchOpen && /*#__PURE__*/React.createElement(PdfViewerSearchBar, {\n query: viewer.search.query,\n totalMatches: viewer.search.totalMatches,\n currentMatchIndex: viewer.search.currentMatchIndex,\n onQueryChange: viewer.search.setQuery,\n onNext: viewer.search.nextMatch,\n onPrev: viewer.search.prevMatch,\n onClose: viewer.search.closeSearch\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.contentArea\n }, viewer.sidebarOpen && viewer.sidebarMode === \"thumbnails\" && /*#__PURE__*/React.createElement(PdfViewerSidebar, {\n document: viewer.document,\n numPages: viewer.numPages,\n currentPage: viewer.currentPage,\n onPageClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode\n }), viewer.sidebarOpen && viewer.sidebarMode === \"outline\" && /*#__PURE__*/React.createElement(PdfViewerOutlineSidebar, {\n outlineItems: viewer.outlineItems,\n currentPage: viewer.currentPage,\n onItemClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode,\n outlineIcons: outlineIcons\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n })))));\n});","/*\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 { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"../constants.js\";\nimport { usePdfAnnotationsByPage } from \"../hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"../hooks/usePdfFormFields.js\";\nimport { usePdfViewerCore } from \"../hooks/usePdfViewerCore.js\";\nimport styles from \"../PdfViewer.module.css\";\nimport { PdfViewerAnnotationLayer } from \"./PdfViewerAnnotationLayer.js\";\nexport function PdfViewerContent({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n initialPage = 1,\n initialScale = 1.0,\n onPageChange: onPageChangeProp,\n onScaleChange: onScaleChangeProp,\n formData,\n onFormChange,\n className\n}) {\n const viewer = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormChange\n });\n\n // Use refs for callbacks to avoid firing on initial mount\n const onPageChangeRef = useRef(onPageChangeProp);\n onPageChangeRef.current = onPageChangeProp;\n const onScaleChangeRef = useRef(onScaleChangeProp);\n onScaleChangeRef.current = onScaleChangeProp;\n const isInitialMountRef = useRef(true);\n useEffect(function notifyPageChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onPageChangeRef.current?.(viewer.currentPage);\n }, [viewer.currentPage]);\n useEffect(function notifyScaleChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onScaleChangeRef.current?.(viewer.scale);\n }, [viewer.scale]);\n useEffect(function clearInitialMount() {\n isInitialMountRef.current = false;\n }, []);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n }))));\n}","/*\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, { createContext, useContext, useMemo } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\n\n/** The shape of the value provided by {@link PdfViewerProvider}. */\n\nconst PdfViewerContext = /*#__PURE__*/createContext(null);\n/** Provides {@link PdfViewerContextValue} to descendant components. */\nexport function PdfViewerProvider({\n value,\n children\n}) {\n return /*#__PURE__*/React.createElement(PdfViewerContext.Provider, {\n value: value\n }, children);\n}\n\n/**\n * Returns the nearest {@link PdfViewerContextValue} from a {@link PdfViewerProvider}.\n * Throws if called outside a provider.\n */\nexport function usePdfViewerContext() {\n const ctx = useContext(PdfViewerContext);\n if (ctx == null) {\n throw new Error(\"usePdfViewerContext must be used within a PdfViewerProvider\");\n }\n return ctx;\n}\n\n/**\n * Consumer-facing setup hook analogous to react-hook-form's `useForm()`.\n * Accepts viewer options and returns a {@link PdfViewerContextValue} suitable\n * for passing to {@link PdfViewerProvider}.\n */\nexport function usePdfViewerInstance(options) {\n const viewer = usePdfViewerState({\n src: options.src,\n initialPage: options.initialPage,\n initialScale: options.initialScale,\n initialSidebarOpen: options.initialSidebarOpen,\n sidebarMode: options.sidebarMode,\n onDownload: options.onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: options.highlightEnabled ?? false,\n onTextHighlight: options.onTextHighlight,\n onHighlightDelete: options.onHighlightDelete\n });\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData: options.formData,\n onFormSubmit: options.onFormSubmit,\n onFormChange: options.onFormChange\n });\n const annotations = options.annotations ?? EMPTY_ANNOTATION_ARRAY;\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const highlightEnabled = options.highlightEnabled ?? false;\n const enableDownload = options.enableDownload ?? false;\n const enableFormSave = options.onFormSubmit != null && hasFormFields;\n const {\n onAnnotationClick,\n outlineIcons\n } = options;\n return useMemo(() => ({\n ...viewer,\n highlightEnabled,\n highlightModeActive,\n toggleHighlightMode,\n hasFormFields,\n submitFormData,\n annotations,\n annotationsByPage,\n onAnnotationClick,\n enableDownload,\n enableFormSave,\n outlineIcons\n }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useEffect, useState } from \"react\";\nimport { BasePdfViewer } from \"./PdfViewer.js\";\nimport styles from \"./PdfViewer.module.css\";\nasync function fetchMediaContents(media) {\n const result = await media.fetchContents();\n return result.arrayBuffer();\n}\nexport function PdfViewer({\n media,\n className,\n ...pdfViewerProps\n}) {\n const [src, setSrc] = useState(undefined);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n\n // This is required until we either support React 19+ or a data fetching hook\n useEffect(function fetchMediaSource() {\n let cancelled = false;\n setLoading(true);\n setError(undefined);\n setSrc(undefined);\n fetchMediaContents(media).then(buffer => {\n if (!cancelled) {\n setSrc(buffer);\n setLoading(false);\n }\n }).catch(err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media]);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", error.message));\n }\n if (src == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: src,\n className: className\n }, pdfViewerProps));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\n\n/**\n * TODO: Delete this once `React.memo` is typed to not lose generics to `unknown`\n *\n * Context: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087\n */\nexport const typedReactMemo = React.memo;","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkForm {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n padding: var(--osdk-form-content-padding);\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n border-top: var(--osdk-surface-border-width) solid\n var(--osdk-form-footer-border-color);\n padding-block: var(--osdk-form-content-padding);\n padding-inline: var(--osdk-form-content-padding);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-label-field-gap);\n}\n\n.osdkFormFieldLabel {\n font-size: var(--osdk-form-label-font-size);\n font-weight: var(--osdk-form-label-font-weight);\n color: var(--osdk-form-label-color);\n}\n\n.osdkFormFieldRequired {\n color: var(--osdk-form-required-color);\n}\n\n.osdkFormFieldError {\n font-size: var(--osdk-form-error-font-size);\n color: var(--osdk-form-error-color);\n}\n\n.osdkFormFieldHelperText {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\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, { memo } from \"react\";\nimport styles from \"./FormField.module.css\";\nexport const FormField = /*#__PURE__*/memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n error,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField\n }, label != null && /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkFormFieldLabel,\n htmlFor: fieldKey\n }, label, isRequired === true && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldRequired,\n \"aria-label\": \"required\"\n }, \" \", \"*\")), children, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error), helperText != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\n/**\n * Renders a user-provided custom field. Delegates all rendering to the\n * `customRenderer` callback, passing through the standard form field props\n * (value, onChange, id) so the custom implementation can participate in\n * form state management.\n */\nexport const CustomField = /*#__PURE__*/memo(function CustomFieldFn({\n customRenderer: CustomRenderer,\n ...baseProps\n}) {\n return /*#__PURE__*/React.createElement(CustomRenderer, baseProps);\n});","/* DatetimePickerField — button trigger + popover + time input */\n\n/* Trigger button — styled to look like an input */\n.triggerButton {\n width: 100%;\n text-align: left;\n font-family: var(--osdk-datetime-input-font-family);\n font-size: var(--osdk-datetime-input-font-size);\n padding: var(--osdk-datetime-input-padding);\n border: var(--osdk-datetime-input-border);\n border-radius: var(--osdk-datetime-input-border-radius);\n background: var(--osdk-datetime-input-bg);\n color: var(--osdk-datetime-input-color);\n cursor: pointer;\n box-sizing: border-box;\n\n &:focus-visible {\n border-color: var(--osdk-datetime-input-focus-border-color);\n outline: var(--osdk-datetime-input-focus-outline);\n outline-offset: var(--osdk-datetime-input-focus-outline-offset);\n }\n}\n\n.triggerButtonPlaceholder {\n color: var(--osdk-datetime-input-placeholder-color, currentColor);\n opacity: var(--osdk-datetime-input-placeholder-opacity);\n}\n\n/* Popover */\n.popover {\n background: var(--osdk-datetime-popover-bg);\n padding: var(--osdk-datetime-popover-padding);\n z-index: var(--osdk-datetime-popover-z-index);\n border: var(--osdk-datetime-popover-border);\n border-radius: var(--osdk-datetime-popover-border-radius);\n}\n\n/* Time input footer — negative horizontal margin counters the popover padding\n so the border-top spans the full width of the popover. */\n.timeFooter {\n padding-top: var(--osdk-datetime-time-padding-top);\n padding-left: var(--osdk-datetime-popover-padding);\n padding-right: var(--osdk-datetime-popover-padding);\n border-top: var(--osdk-datetime-time-border-top);\n margin-top: var(--osdk-datetime-time-padding-top);\n margin-left: calc(var(--osdk-datetime-popover-padding) * -1);\n margin-right: calc(var(--osdk-datetime-popover-padding) * -1);\n}\n\n.timeInput {\n width: 100%;\n font-family: var(--osdk-datetime-input-font-family);\n font-size: var(--osdk-datetime-input-font-size);\n padding: var(--osdk-datetime-input-padding);\n border: var(--osdk-datetime-input-border);\n border-radius: var(--osdk-datetime-input-border-radius);\n background: var(--osdk-datetime-input-bg);\n color: var(--osdk-datetime-input-color);\n box-sizing: border-box;\n\n &:focus {\n border-color: var(--osdk-datetime-input-focus-border-color);\n outline: var(--osdk-datetime-input-focus-outline);\n outline-offset: var(--osdk-datetime-input-focus-outline-offset);\n }\n}\n","/*\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, { Suspense } from \"react\";\nimport styles from \"./DateCalendar.module.css\";\nconst DateCalendarLazy = /*#__PURE__*/React.lazy(() => import(\"./DateCalendar.js\"));\nexport function LazyDateCalendar(props) {\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarFallback\n })\n }, /*#__PURE__*/React.createElement(DateCalendarLazy, props));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { formatDateForInput, formatDatetimeForDisplay, formatTime } from \"../../shared/dateUtils.js\";\nimport styles from \"./DatetimePickerField.module.css\";\nimport { LazyDateCalendar } from \"./LazyDateCalendar.js\";\n\n/** Midnight fallback so `extractTime` can reuse `formatTime` when no date is selected. */\nconst DATE_ZERO = new Date(2000, 0, 1, 0, 0, 0, 0);\nfunction extractTime(date) {\n return formatTime(date ?? DATE_ZERO);\n}\nexport function DatetimePickerField({\n id,\n value,\n onChange,\n min,\n max,\n placeholder,\n formatDate,\n showTime = false,\n closeOnSelection\n}) {\n const shouldCloseOnSelection = closeOnSelection ?? !showTime;\n const [isOpen, setIsOpen] = useState(false);\n const formatFn = formatDate ?? (showTime ? formatDatetimeForDisplay : formatDateForInput);\n const formattedValue = value != null ? formatFn(value) : \"\";\n const handleCalendarSelect = useCallback(selected => {\n if (selected == null) {\n onChange?.(null);\n return;\n }\n const date = new Date(selected.getTime());\n if (showTime && value != null) {\n date.setHours(value.getHours(), value.getMinutes());\n }\n onChange?.(date);\n if (shouldCloseOnSelection) {\n setIsOpen(false);\n }\n }, [onChange, showTime, value, shouldCloseOnSelection]);\n const handleTimeChange = useCallback(timeString => {\n const [hoursStr, minutesStr] = timeString.split(\":\");\n const hours = parseInt(hoursStr ?? \"0\", 10);\n const minutes = parseInt(minutesStr ?? \"0\", 10);\n const base = value != null ? new Date(value.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.(base);\n }, [value, onChange]);\n const displayText = formattedValue !== \"\" ? formattedValue : placeholder ?? \"\";\n const hasValue = formattedValue !== \"\";\n const timeValue = extractTime(value);\n const footer = useMemo(() => showTime ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.timeFooter\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"time\",\n value: timeValue,\n onValueChange: handleTimeChange,\n className: styles.timeInput,\n \"aria-label\": \"Time\"\n })) : undefined, [showTime, timeValue, handleTimeChange]);\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: isOpen,\n onOpenChange: setIsOpen\n }, /*#__PURE__*/React.createElement(Popover.Trigger, {\n id: id,\n className: classnames(styles.triggerButton, !hasValue && styles.triggerButtonPlaceholder),\n \"aria-label\": hasValue ? undefined : \"Select date\"\n }, displayText), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n className: styles.popover\n }, /*#__PURE__*/React.createElement(LazyDateCalendar, {\n dateSelected: value ?? undefined,\n onSelect: handleCalendarSelect,\n min: min,\n max: max,\n footer: footer\n })))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkSelectTrigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--osdk-select-spacing, var(--osdk-surface-spacing));\n width: 100%;\n min-height: var(--osdk-select-min-height, 30px);\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2.5);\n cursor: pointer;\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-select-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-select-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-select-trigger-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n color: var(\n --osdk-select-trigger-color,\n var(--osdk-typography-color-default-rest)\n );\n font-family: var(\n --osdk-select-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-select-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-select-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default)),\n border-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n background-color: var(\n --osdk-select-trigger-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n }\n\n &:active {\n background-color: var(\n --osdk-select-trigger-bg-active,\n var(--osdk-surface-background-color-default-active)\n );\n }\n\n &:focus-visible {\n outline: var(--osdk-select-focus-width, var(--osdk-emphasis-focus-width))\n solid var(--osdk-select-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(\n --osdk-select-focus-offset,\n var(--osdk-emphasis-focus-offset)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n\n &[data-popup-open] {\n border-color: var(\n --osdk-select-border-color-active,\n var(--osdk-intent-primary-rest)\n );\n }\n}\n\n.osdkSelectValueContainer {\n flex: 1;\n display: grid;\n min-width: 0;\n\n & > * {\n grid-area: 1 / 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.osdkSelectValue {\n text-align: left;\n}\n\n.osdkSelectPlaceholder {\n text-align: left;\n color: var(\n --osdk-select-placeholder-color,\n var(--osdk-typography-color-muted)\n );\n pointer-events: none;\n}\n\n.osdkSelectValue:not([data-placeholder]) ~ .osdkSelectPlaceholder {\n display: none;\n}\n\n.osdkSelectIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--osdk-select-icon-color, var(--osdk-iconography-color-muted));\n flex-shrink: 0;\n transition: transform\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n [data-popup-open] > & {\n transform: rotate(180deg);\n }\n}\n\n.osdkSelectPositioner {\n z-index: var(--osdk-select-z-index, var(--osdk-surface-z-index-3));\n}\n\n.osdkSelectPopup {\n display: flex;\n flex-direction: column;\n min-width: var(--anchor-width);\n max-height: var(--available-height);\n overflow-y: auto;\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5);\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-select-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-select-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-select-popup-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n box-shadow: var(--osdk-select-popup-shadow, var(--osdk-surface-shadow-2));\n}\n\n.osdkSelectItem {\n display: flex;\n align-items: center;\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n cursor: pointer;\n font-family: var(\n --osdk-select-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-select-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-select-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-select-item-color,\n var(--osdk-typography-color-default-rest)\n );\n transition: background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-highlighted] {\n background-color: var(\n --osdk-select-item-bg-highlighted,\n var(--osdk-surface-background-color-default-hover)\n );\n outline: none;\n }\n\n &[data-selected] {\n background-color: var(\n --osdk-select-item-bg-selected,\n var(--osdk-surface-layer-primary)\n );\n color: var(\n --osdk-select-item-color-selected,\n var(--osdk-intent-primary-rest)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Select as BaseUISelect } from \"@base-ui/react/select\";\nimport { CaretDown } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Select.module.css\";\nfunction SelectRoot({\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Root, rest, children);\n}\nfunction SelectTrigger({\n className,\n placeholder,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Trigger, _extends({\n className: classnames(styles.osdkSelectTrigger, className)\n }, rest), children ?? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkSelectValueContainer\n }, /*#__PURE__*/React.createElement(BaseUISelect.Value, {\n className: styles.osdkSelectValue\n }), placeholder != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkSelectPlaceholder\n }, placeholder)), /*#__PURE__*/React.createElement(BaseUISelect.Icon, {\n className: styles.osdkSelectIcon\n }, /*#__PURE__*/React.createElement(CaretDown, null))));\n}\nfunction SelectValue(props) {\n const {\n className,\n ...rest\n } = props;\n return /*#__PURE__*/React.createElement(BaseUISelect.Value, _extends({\n className: classnames(styles.osdkSelectValue, className)\n }, rest));\n}\nfunction SelectPositioner({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Positioner, _extends({\n className: classnames(styles.osdkSelectPositioner, className),\n sideOffset: 4\n }, rest), children);\n}\nfunction SelectPopup({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Popup, _extends({\n className: classnames(styles.osdkSelectPopup, className)\n }, rest), children);\n}\nfunction SelectItem({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Item, _extends({\n className: classnames(styles.osdkSelectItem, className)\n }, rest), /*#__PURE__*/React.createElement(BaseUISelect.ItemText, null, children));\n}\nexport const Select = {\n Root: SelectRoot,\n Trigger: SelectTrigger,\n Value: SelectValue,\n Portal: BaseUISelect.Portal,\n Positioner: SelectPositioner,\n Popup: SelectPopup,\n Item: SelectItem\n};","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Combobox } from \"../../base-components/combobox/Combobox.js\";\nimport { Select } from \"../../base-components/select/Select.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nexport function DropdownField({\n isSearchable = false,\n itemToStringLabel,\n itemToKey,\n ...rest\n}) {\n const resolvedItemToStringLabel = itemToStringLabel ?? defaultItemToStringLabel;\n const getKey = useCallback(item => itemToKey?.(item) ?? resolvedItemToStringLabel(item), [itemToKey, resolvedItemToStringLabel]);\n if (isSearchable) {\n return /*#__PURE__*/React.createElement(ComboboxDropdown, _extends({}, rest, {\n itemToStringLabel: resolvedItemToStringLabel,\n getKey: getKey\n }));\n }\n return /*#__PURE__*/React.createElement(SelectDropdown, _extends({}, rest, {\n itemToStringLabel: resolvedItemToStringLabel,\n getKey: getKey\n }));\n}\nconst SelectDropdown = typedReactMemo(function SelectDropdownFn({\n value,\n onChange,\n items,\n itemToStringLabel,\n getKey,\n isItemEqual,\n isMultiple,\n placeholder\n}) {\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Select.Root, {\n value: value,\n onValueChange: onChange,\n multiple: isMultiple,\n isItemEqualToValue: isItemEqual,\n itemToStringLabel: itemToStringLabel\n }, /*#__PURE__*/React.createElement(Select.Trigger, {\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(Select.Portal, null, /*#__PURE__*/React.createElement(Select.Positioner, null, /*#__PURE__*/React.createElement(Select.Popup, null, items.map(item => /*#__PURE__*/React.createElement(Select.Item, {\n key: getKey(item),\n value: item\n }, itemToStringLabel(item))))))));\n});\nconst ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({\n value,\n onChange,\n items,\n itemToStringLabel,\n getKey,\n isItemEqual,\n isMultiple,\n placeholder\n}) {\n const renderChips = useCallback(selectedValues => /*#__PURE__*/React.createElement(React.Fragment, null, selectedValues.map(item => /*#__PURE__*/React.createElement(Combobox.Chip, {\n key: getKey(item),\n \"aria-label\": itemToStringLabel(item)\n }, itemToStringLabel(item), /*#__PURE__*/React.createElement(Combobox.ChipRemove, null))), /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: selectedValues.length > 0 ? \"\" : placeholder ?? \"Search…\"\n })), [getKey, itemToStringLabel, placeholder]);\n const renderItem = useCallback(item => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: getKey(item),\n value: item\n }, itemToStringLabel(item)), [getKey, itemToStringLabel]);\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Combobox.Root, {\n value: value,\n onValueChange: onChange,\n multiple: isMultiple,\n itemToStringLabel: itemToStringLabel,\n isItemEqualToValue: isItemEqual,\n items: items\n }, isMultiple ? /*#__PURE__*/React.createElement(Combobox.Chips, null, /*#__PURE__*/React.createElement(Combobox.Value, null, renderChips)) : /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No results\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem))))));\n});\nfunction defaultItemToStringLabel(item) {\n if (item == null || typeof item !== \"object\") {\n return String(item);\n }\n if (\"label\" in item && item.label != null && typeof item.label === \"string\") {\n return item.label;\n }\n return String(item);\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Outer wrapper — looks like an input field */\n.osdkFilePickerTrigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--osdk-file-picker-trigger-height);\n border: var(--osdk-file-picker-trigger-border);\n border-radius: var(--osdk-file-picker-trigger-border-radius);\n background: var(--osdk-file-picker-trigger-bg);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n box-sizing: border-box;\n overflow: hidden;\n transition:\n background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease),\n border-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n background: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &:focus-visible {\n border-color: var(--osdk-file-picker-trigger-border-color-focus);\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n outline-offset: var(--osdk-file-picker-trigger-focus-offset);\n }\n}\n\n/* Visually hidden file input */\n.osdkFilePickerHiddenInput {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* File name text (left section) */\n.osdkFilePickerText {\n flex: 1;\n padding: var(--osdk-file-picker-trigger-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n color: var(--osdk-file-picker-trigger-color);\n cursor: pointer;\n background: none;\n border: none;\n font-family: inherit;\n font-size: inherit;\n}\n\n.osdkFilePickerPlaceholder {\n color: var(--osdk-file-picker-trigger-placeholder-color);\n}\n\n/* Clear ✕ button */\n.osdkFilePickerClear {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--osdk-file-picker-clear-size);\n height: var(--osdk-file-picker-clear-size);\n margin: var(--osdk-file-picker-clear-margin);\n padding: 0;\n border: none;\n background: none;\n color: var(--osdk-file-picker-clear-color);\n cursor: pointer;\n transition: color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n color: var(--osdk-file-picker-clear-color-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n }\n}\n\n/* Browse label (right section) */\n.osdkFilePickerBrowse {\n flex-shrink: 0;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: var(--osdk-file-picker-browse-padding);\n border-left: var(--osdk-file-picker-browse-border-left);\n background: var(--osdk-file-picker-browse-bg);\n color: var(--osdk-file-picker-browse-color);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n pointer-events: none;\n transition: background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:hover .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-hover);\n}\n\n.osdkFilePickerTrigger:active .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-active);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport styles from \"./FilePickerField.module.css\";\nexport const FilePickerField = /*#__PURE__*/memo(function FilePickerFieldFn({\n id,\n value,\n onChange,\n isMulti,\n accept,\n // TODO: implement maxSize validation in a follow-up\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\"\n}) {\n const inputRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n const handleInputChange = useCallback(event => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n }, [onChange, isMulti]);\n const handleClear = useCallback(event => {\n event.stopPropagation();\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n }, [onChange]);\n const handleKeyDown = useCallback(event => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n }, [openFileDialog]);\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(() => normalizeAccept(accept), [accept]);\n return (\n /*#__PURE__*/\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n React.createElement(\"div\", {\n id: id,\n className: styles.osdkFilePickerTrigger,\n tabIndex: 0,\n role: \"button\",\n \"aria-label\": \"Choose file\",\n onClick: openFileDialog,\n onKeyDown: handleKeyDown\n }, /*#__PURE__*/React.createElement(\"input\", {\n ref: inputRef,\n type: \"file\",\n className: styles.osdkFilePickerHiddenInput,\n multiple: isMulti,\n accept: acceptString,\n onChange: handleInputChange,\n \"aria-hidden\": \"true\",\n tabIndex: -1\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder)\n }, displayText ?? text), hasValue &&\n /*#__PURE__*/\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n React.createElement(Button, {\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\"\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFilePickerBrowse\n }, buttonText))\n );\n});\nfunction normalizeAccept(accept) {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\nfunction getDisplayText(value) {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map(f => f.name).join(\", \");\n }\n return value.name;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkNumberInputWrapper {\n display: flex;\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n}\n\n.osdkNumberInputField {\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border: none;\n border-radius: var(--osdk-input-border-radius) 0 0\n var(--osdk-input-border-radius);\n background: transparent;\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkNumberInputStepper {\n display: flex;\n flex-direction: column;\n border-left: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n}\n\n.osdkNumberInputStepButton {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 0 calc(var(--osdk-surface-spacing) * 1.5);\n border: none;\n background: transparent;\n color: var(--osdk-input-color);\n cursor: pointer;\n line-height: 0;\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-input-border-color);\n }\n\n & + & {\n border-top: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronDown, ChevronUp } from \"@blueprintjs/icons\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./NumberInputField.module.css\";\n\n/**\n * Structural regex for valid numeric input.\n *\n * Allows intermediate typing states that will become valid numbers:\n * \"\" — user cleared the field (all groups are optional)\n * \"-\" — user started typing a negative number\n * \".\" — user started typing a decimal like \".5\"\n * \"+\" — user started typing an explicitly positive number\n * \"1.\", \"1e\", \"1e+\" — partial but structurally valid\n *\n * Rejects obviously invalid strings like \"1.2.3\" or \"+-5\".\n */\nconst VALID_NUMERIC_REGEX = /^[+-.]?(\\d+\\.?\\d*|\\d*\\.?\\d+)?([eE][+-]?\\d*)?$/;\nconst DEFAULT_STEP = 1;\nconst CHEVRON_SIZE = 12;\n\n// TODO: Add min/max validation so the field can surface\n// out-of-range errors through the form validation system.\nexport function NumberInputField({\n id,\n value,\n onChange,\n placeholder,\n min: _min,\n max: _max,\n step\n}) {\n const [displayValue, setDisplayValue] = useState(() => formatNumberForDisplay(value));\n const prevValueRef = useRef(value);\n\n // Sync external value → internal display string\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n const currentParsed = parseNumericValue(displayValue);\n if (value !== currentParsed) {\n setDisplayValue(formatNumberForDisplay(value));\n }\n }\n const handleValueChange = useCallback(newValue => {\n if (!isValidInput(newValue)) {\n return;\n }\n setDisplayValue(newValue);\n onChange?.(parseNumericValue(newValue));\n }, [onChange]);\n const applyStep = useCallback(direction => {\n const current = parseNumericValue(displayValue) ?? 0;\n const delta = direction * (step ?? DEFAULT_STEP);\n const next = current + delta;\n const formatted = formatNumberForDisplay(next);\n setDisplayValue(formatted);\n onChange?.(next);\n }, [displayValue, onChange, step]);\n const handleKeyDown = useCallback(e => {\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") {\n return;\n }\n e.preventDefault();\n applyStep(e.key === \"ArrowUp\" ? 1 : -1);\n }, [applyStep]);\n const handleStepUp = useCallback(() => {\n applyStep(1);\n }, [applyStep]);\n const handleStepDown = useCallback(() => {\n applyStep(-1);\n }, [applyStep]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputWrapper\n }, /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkNumberInputField,\n type: \"text\",\n inputMode: \"decimal\",\n value: displayValue,\n onValueChange: handleValueChange,\n onKeyDown: handleKeyDown,\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputStepper\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Increment\",\n tabIndex: -1,\n onClick: handleStepUp\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: CHEVRON_SIZE\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Decrement\",\n tabIndex: -1,\n onClick: handleStepDown\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: CHEVRON_SIZE\n }))));\n}\nfunction isValidInput(text) {\n return VALID_NUMERIC_REGEX.test(text);\n}\nfunction parseNumericValue(text) {\n if (text === \"\") {\n return null;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? null : parsed;\n}\nfunction formatNumberForDisplay(value) {\n return value != null ? String(value) : \"\";\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Icons, SVGIconContainer } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport const BlueprintIcon = /*#__PURE__*/React.memo(function BlueprintIconFn({\n icon,\n size\n}) {\n const paths = useIcon(icon.name, size);\n return /*#__PURE__*/React.createElement(SVGIconContainer, {\n iconName: icon.name,\n color: icon.color\n }, paths != null ? paths.map((d, i) => /*#__PURE__*/React.createElement(\"path\", {\n key: i,\n d: d,\n fillRule: \"evenodd\"\n })) : []);\n});\n\n/**\n * Loads icon paths on demand via the public `Icons.load()` API\n * instead of the static `getIconPaths()` which bundles every icon definition.\n */\nfunction useIcon(icon, size) {\n const [iconPaths, setIconPaths] = React.useState(() => Icons.getPaths(icon, size));\n React.useEffect(function loadIconPaths() {\n let isMounted = true;\n const loadedIconPaths = Icons.getPaths(icon, size);\n if (loadedIconPaths != null) {\n setIconPaths(loadedIconPaths);\n } else {\n void Icons.load(icon, size).then(() => {\n if (isMounted) {\n setIconPaths(Icons.getPaths(icon, size));\n }\n });\n }\n return () => {\n isMounted = false;\n };\n }, [icon, size]);\n return iconPaths;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkObjectSetField {\n display: flex;\n align-items: center;\n gap: var(--osdk-object-set-gap);\n min-height: var(--osdk-object-set-min-height);\n padding: var(--osdk-object-set-padding);\n color: var(--osdk-object-set-color);\n font-family: var(--osdk-object-set-font-family);\n font-size: var(--osdk-object-set-font-size);\n line-height: var(--osdk-object-set-line-height);\n}\n\n.osdkObjectSetFieldEmpty {\n color: var(--osdk-object-set-placeholder-color);\n}\n\n.osdkObjectSetFieldError {\n color: var(--osdk-object-set-error-color);\n}\n\n.osdkObjectSetIconSkeleton {\n width: var(--osdk-object-set-icon-skeleton-width);\n align-self: stretch;\n}\n\n.osdkObjectSetLabelSkeleton {\n width: var(--osdk-object-set-label-skeleton-width);\n align-self: stretch;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconSize } from \"@blueprintjs/icons\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useObjectSet } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { BlueprintIcon } from \"../../base-components/icon/BlueprintIcon.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./ObjectSetField.module.css\";\nconst DEFAULT_OBJECT_ICON = {\n name: \"cube\",\n color: \"#4C90F0\"\n};\nconst ICON_SIZE = IconSize.STANDARD;\nconst DEFAULT_EMPTY_MESSAGE = \"Object set is not defined\";\nexport const ObjectSetField = typedReactMemo(function ObjectSetFieldFn({\n value,\n emptyMessage = DEFAULT_EMPTY_MESSAGE\n}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty)\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet\n}) {\n const objectTypeDef = objectSet.$objectSetInternals.def;\n const {\n metadata,\n loading: metadataLoading\n } = useOsdkMetadata(objectTypeDef);\n const {\n totalCount,\n data,\n isLoading: objectSetLoading,\n error: objectSetError\n } = useObjectSet(objectSet, {\n // Fetching a page size of one is enough to get the totalCount\n pageSize: 1\n });\n const hasMetadata = metadata != null;\n const icon = React.useMemo(() => metadata != null && \"icon\" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);\n const displayName = totalCount === \"1\" || !hasMetadata || !(\"pluralDisplayName\" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;\n\n // Wait for metadata even if the count is already available, so we can\n // show the correct display name and avoid a flash of \"objects\" → \"Employees\".\n const showLoadingState = metadataLoading && !hasMetadata;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkObjectSetField\n }, showLoadingState ? /*#__PURE__*/React.createElement(React.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BlueprintIcon, {\n icon: icon,\n size: ICON_SIZE\n }), /*#__PURE__*/React.createElement(ObjectSetLabel, {\n displayName: displayName,\n totalCount: totalCount,\n error: objectSetError,\n isLoading: objectSetLoading\n })));\n});\nconst ObjectSetLabel = /*#__PURE__*/React.memo(function ObjectSetLabelFn({\n displayName,\n totalCount,\n isLoading,\n error\n}) {\n const hasData = totalCount != null;\n const label = displayName ?? (totalCount === \"1\" ? \"object\" : \"objects\");\n const showSkeleton = isLoading && !hasData;\n const showError = error != null && !hasData && !isLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkObjectSetFieldError,\n role: \"alert\"\n }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /*#__PURE__*/React.createElement(\"span\", null, `${formatCount(totalCount)} ${label}`));\n});\nconst OBJECT_SET_ICON_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetIconSkeleton\n});\nconst OBJECT_SET_LABEL_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetLabelSkeleton\n});\nfunction formatCount(count) {\n if (count == null) {\n return \"\\u2013\"; // '–' symbol\n }\n const num = Number(count);\n return Number.isNaN(num) ? count : num.toLocaleString();\n}\nfunction toComponentIcon(apiIcon) {\n return {\n name: apiIcon.name,\n color: apiIcon.color\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkRadioGroup {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-radio-gap);\n}\n\n.osdkRadioItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-radio-item-gap);\n}\n\n.osdkRadioRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-radio-size);\n height: var(--osdk-radio-size);\n border-radius: 50%;\n border: var(--osdk-radio-border);\n cursor: pointer;\n flex-shrink: 0;\n\n &[data-unchecked] {\n background-color: var(--osdk-radio-bg);\n\n &:hover {\n background-color: var(--osdk-radio-bg-hover);\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-radio-bg-checked);\n\n &:hover {\n background-color: var(--osdk-radio-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-radio-bg-checked-active);\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkRadioIndicator {\n width: var(--osdk-radio-indicator-size);\n height: var(--osdk-radio-indicator-size);\n border-radius: 50%;\n background-color: var(--osdk-radio-indicator-color);\n\n &[data-unchecked] {\n display: none;\n }\n}\n\n.osdkRadioLabel {\n font-family: var(--osdk-typography-font-family);\n font-size: var(--osdk-typography-font-size-default);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default);\n cursor: pointer;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./RadioButtonsField.module.css\";\nexport const RadioButtonsField = typedReactMemo(function RadioButtonsFieldFn({\n id,\n value,\n onChange,\n options\n}) {\n const selectedLabel = useMemo(() => value != null ? options.find(opt => opt.value === value)?.label : undefined, [options, value]);\n const handleValueChange = useCallback(nextLabel => {\n const match = options.find(opt => opt.label === nextLabel);\n onChange?.(match?.value ?? null);\n }, [options, onChange]);\n return /*#__PURE__*/React.createElement(RadioGroup, {\n id: id,\n className: styles.osdkRadioGroup,\n value: selectedLabel,\n onValueChange: handleValueChange\n }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option\n}) {\n return /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkRadioItem\n }, /*#__PURE__*/React.createElement(Radio.Root, {\n value: option.label,\n className: styles.osdkRadioRoot\n }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkRadioLabel\n }, option.label));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkBaseInput {\n display: block;\n width: 100%;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./BaseInput.module.css\";\nconst TEXTAREA_STYLE = {\n resize: \"vertical\"\n};\nexport function TextAreaField({\n id,\n value,\n onChange,\n placeholder,\n rows,\n wrap,\n minLength,\n maxLength\n}) {\n const renderTextarea = useCallback(props => /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n rows: rows,\n wrap: wrap,\n style: TEXTAREA_STYLE\n })), [rows, wrap]);\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n render: renderTextarea\n });\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React from \"react\";\nimport styles from \"./BaseInput.module.css\";\nexport function TextInputField({\n id,\n value,\n onChange,\n placeholder,\n minLength,\n maxLength\n}) {\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n type: \"text\",\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength\n });\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { FormField } from \"../FormField.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DatetimePickerField } from \"./DatetimePickerField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange\n}) {\n const {\n label,\n isRequired,\n helperText,\n helperTextPlacement\n } = fieldDefinition;\n return /*#__PURE__*/React.createElement(FormField, {\n label: label,\n isRequired: isRequired,\n fieldKey: fieldDefinition.fieldKey,\n helperText: helperTextPlacement !== \"tooltip\" ? helperText : undefined\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange) {\n switch (fieldDefinition.fieldComponent) {\n case \"TEXT_INPUT\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\n case \"TEXT_AREA\":\n return /*#__PURE__*/React.createElement(TextAreaField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\n case \"DROPDOWN\":\n {\n return /*#__PURE__*/React.createElement(DropdownField, _extends({\n value: value,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\n }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatetimePickerField, _extends({\n id: fieldDefinition.fieldKey,\n placeholder: fieldDefinition.placeholder\n // TODO: Use coerceFieldValue\n ,\n value: value instanceof Date ? value : null,\n onChange: onChange\n }, fieldDefinition.fieldComponentProps));\n case \"RADIO_BUTTONS\":\n return /*#__PURE__*/React.createElement(RadioButtonsField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange\n }, fieldDefinition.fieldComponentProps));\n case \"CUSTOM\":\n return /*#__PURE__*/React.createElement(CustomField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange\n }, fieldDefinition.fieldComponentProps));\n case \"NUMBER_INPUT\":\n // TODO: Use coerceFieldValue\n return /*#__PURE__*/React.createElement(NumberInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: typeof value === \"number\" ? value : null,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\n case \"FILE_PICKER\":\n return /*#__PURE__*/React.createElement(FilePickerField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToFileValue(value),\n onChange: onChange\n }, fieldDefinition.fieldComponentProps));\n case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\n}\n\n// TODO: Move and share with `coerceFieldValue`\nfunction isFileArray(value) {\n return value.every(v => v instanceof File);\n}\nfunction coerceToFileValue(value) {\n if (value instanceof File) {\n return value;\n }\n if (Array.isArray(value) && isFileArray(value)) {\n return value;\n }\n return null;\n}\nfunction assertUnreachableFieldComponent(value) {\n throw new Error(`Unhandled field component: ${String(value)}`);\n}","/*\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, { memo, useCallback } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer.js\";\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange\n}) {\n const {\n field: {\n onChange,\n value\n }\n } = useController({\n name: fieldDef.fieldKey,\n control\n });\n const handleChange = useCallback(newValue => {\n onChange(newValue);\n onExternalChange?.(fieldDef.fieldKey, newValue);\n }, [onChange, onExternalChange, fieldDef.fieldKey]);\n return /*#__PURE__*/React.createElement(FormFieldRenderer, {\n value: value,\n fieldDefinition: fieldDef,\n onFieldValueChange: handleChange\n });\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormHeader {\n margin: 0;\n padding-block: var(--osdk-form-header-block-padding);\n padding-inline: var(--osdk-form-header-inline-padding);\n border-bottom: var(--osdk-surface-border-width) solid\n var(--osdk-form-header-border-color);\n font-size: var(--osdk-form-header-font-size);\n font-weight: var(--osdk-form-header-font-weight);\n color: var(--osdk-form-header-color);\n}\n","/*\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, { memo } from \"react\";\nimport styles from \"./FormHeader.module.css\";\nexport const FormHeader = /*#__PURE__*/memo(function FormHeaderFn({\n title\n}) {\n return /*#__PURE__*/React.createElement(\"h2\", {\n className: styles.osdkFormHeader\n }, title);\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport styles from \"./BaseForm.module.css\";\nimport { FieldBridge } from \"./fields/FieldBridge.js\";\nimport { FormHeader } from \"./FormHeader.js\";\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n fieldDefinitions,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className\n}) {\n const isControlled = controlledFormState != null;\n const defaultValues = useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);\n const {\n control,\n handleSubmit: rhfHandleSubmit\n } = useForm({\n ...(isControlled ? {\n values: controlledFormState\n } : {\n defaultValues\n })\n });\n const onFormSubmit = useCallback(rhfValues => {\n // In controlled mode, always submit the controlled state, not RHF's\n // internal state. Between a user keystroke and the parent re-rendering,\n // RHF's store may hold the user-typed value rather than the parent's\n // value. Using controlledFormState directly preserves the existing\n // guarantee that controlled mode submits the parent's state.\n onSubmit(controlledFormState ?? rhfValues);\n }, [onSubmit, controlledFormState]);\n return /*#__PURE__*/React.createElement(\"form\", {\n className: classNames(styles.osdkForm, className),\n onSubmit: rhfHandleSubmit(onFormSubmit)\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && fieldDefinitions.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n role: \"status\"\n }, \"Loading form fields...\"), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFields\n }, fieldDefinitions.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: onFieldValueChange\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFooter\n }, /*#__PURE__*/React.createElement(ActionButton, {\n type: \"submit\",\n variant: \"primary\",\n disabled: isSubmitDisabled || isPending\n }, isPending ? \"Submitting…\" : \"Submit\")));\n});\nfunction buildDefaultValues(fieldDefinitions) {\n const values = {};\n for (const def of fieldDefinitions) {\n const props = def.fieldComponentProps;\n if (\"defaultValue\" in props) {\n values[def.fieldKey] = props.defaultValue;\n }\n }\n return values;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a raw form field value to match the expected type for the given\n * field type. Returns `undefined` when coercion fails\n * (e.g. non-numeric string for a number field).\n *\n * Complex types (object, objectSet, struct, interface) are passed through\n * unchanged since they cannot be meaningfully coerced.\n */\nexport function coerceFieldValue(parameterType, rawValue) {\n if (rawValue == null) {\n return undefined;\n }\n if (parameterType == null) {\n return rawValue;\n }\n\n // TODO: Handle complex object types later\n if (typeof parameterType === \"object\") {\n return rawValue;\n }\n switch (parameterType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n case \"integer\":\n case \"long\":\n {\n const maybeNumber = extractNumber(rawValue);\n return maybeNumber != null ? Math.trunc(maybeNumber) : undefined;\n }\n case \"double\":\n {\n return extractNumber(rawValue);\n }\n case \"boolean\":\n {\n if (typeof rawValue === \"boolean\") {\n return rawValue;\n }\n if (rawValue === \"true\") return true;\n if (rawValue === \"false\") return false;\n return undefined;\n }\n case \"datetime\":\n case \"timestamp\":\n {\n if (typeof rawValue === \"string\") {\n return Number.isNaN(Date.parse(rawValue)) ? undefined : rawValue;\n }\n if (rawValue instanceof Date) {\n return rawValue.toISOString();\n }\n return undefined;\n }\n case \"attachment\":\n case \"mediaReference\":\n return rawValue;\n default:\n return rawValue;\n }\n}\nfunction extractNumber(rawValue) {\n if (typeof rawValue === \"number\") {\n return rawValue;\n }\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n if (trimmed === \"\") return undefined;\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\n/**\n * Derives default field definitions from ActionMetadata.\n *\n * Each parameter type maps to a concrete RendererFieldDefinition with the\n * correct fieldComponent and default fieldComponentProps.\n */\nexport function getDefaultFieldDefinitions(metadata) {\n return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));\n}\nconst EMPTY_ITEMS = [];\n\n/**\n * Maps a single action parameter to its default RendererFieldDefinition.\n *\n * Switches on the parameter's data type to select both the field component\n * and its required default props.\n */\nfunction buildFieldDefinition(key, param) {\n const base = {\n fieldKey: key,\n label: key,\n isRequired: !param.nullable,\n fieldType: param.type\n };\n const paramType = param.type;\n if (typeof paramType === \"object\") {\n switch (paramType.type) {\n case \"objectSet\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SET\",\n fieldComponentProps: {\n value: null\n }\n };\n case \"object\":\n case \"interface\":\n // TODO: provide correct items\n return {\n ...base,\n fieldComponent: \"DROPDOWN\",\n fieldComponentProps: {\n items: EMPTY_ITEMS\n }\n };\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n case \"boolean\":\n return {\n ...base,\n fieldComponent: \"RADIO_BUTTONS\",\n fieldComponentProps: {\n options: [{\n label: \"True\",\n value: true\n }, {\n label: \"False\",\n value: false\n }]\n }\n };\n case \"integer\":\n case \"double\":\n case \"long\":\n return {\n ...base,\n fieldComponent: \"NUMBER_INPUT\",\n fieldComponentProps: {}\n };\n case \"datetime\":\n case \"timestamp\":\n return {\n ...base,\n fieldComponent: \"DATETIME_PICKER\",\n fieldComponentProps: {}\n };\n case \"attachment\":\n case \"mediaReference\":\n return {\n ...base,\n fieldComponent: \"FILE_PICKER\",\n fieldComponentProps: {}\n };\n default:\n return assertUnreachable(paramType);\n }\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useOsdkAction } from \"@osdk/react/experimental\";\nimport React, { useCallback, useEffect, useMemo } from \"react\";\nimport { typedReactMemo } from \"../shared/typedMemo.js\";\nimport { BaseForm } from \"./BaseForm.js\";\nimport { coerceFieldValue } from \"./utils/coerceFieldValue.js\";\nimport { getDefaultFieldDefinitions } from \"./utils/getDefaultFieldDefinitions.js\";\nconst EMPTY_FIELD_DEFINITIONS = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\n formFieldDefinitions,\n formState: controlledFormState,\n onFormStateChange,\n isSubmitDisabled,\n onSubmit,\n onValidationResponse: _onValidationResponse,\n onSuccess,\n onError\n}) {\n const {\n applyAction: osdkApplyAction,\n isPending\n } = useOsdkAction(actionDefinition);\n const {\n metadata,\n loading: metadataLoading,\n error: metadataError\n } = useOsdkMetadata(actionDefinition);\n useEffect(function saveMetadataError() {\n if (metadataError != null) {\n onError?.({\n type: \"unknown\",\n error: metadataError\n });\n }\n }, [metadataError, onError]);\n const parameters = metadata?.parameters;\n const customFieldDefinitions = useMemo(() => {\n if (formFieldDefinitions == null) {\n return null;\n }\n // RendererFieldDefinition is a discriminated union keyed by fieldComponent.\n // TypeScript can't verify that the spread preserves the fieldComponent ↔\n // fieldComponentProps pairing, but FormFieldDefinition guarantees it.\n return formFieldDefinitions.map(def => ({\n ...def,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n defaultValue: def.defaultValue\n }));\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\n const coerceFormState = useCallback(rawState => {\n const coerced = {};\n for (const [key, value] of Object.entries(rawState)) {\n coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);\n }\n return coerced;\n }, [parameters]);\n const handleSubmit = useCallback(async rawFormState => {\n const formState = coerceFormState(rawFormState);\n try {\n if (onSubmit != null) {\n await onSubmit(formState, osdkApplyAction);\n } else {\n const result = await osdkApplyAction(formState);\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.({\n type: \"submission\",\n error: e\n });\n }\n }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);\n const handleFieldValueChange = useCallback((fieldKey, value) => {\n onFormStateChange?.(prev => ({\n ...prev,\n [fieldKey]: value\n }));\n }, [onFormStateChange]);\n const resolvedTitle = formTitle ?? metadata?.displayName ?? actionDefinition.apiName;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n fieldDefinitions: rendererFieldDefinitions,\n onSubmit: handleSubmit,\n isSubmitDisabled,\n isPending,\n isLoading: metadataLoading,\n onFieldValueChange: handleFieldValueChange\n };\n if (!isControlled) {\n return /*#__PURE__*/React.createElement(BaseForm, commonProps);\n }\n return /*#__PURE__*/React.createElement(BaseForm, _extends({}, commonProps, {\n formState: controlledFormState\n }));\n});"]}
1
+ {"version":3,"sources":["../../../src/filter-list/base/FilterIcons.tsx","../../../src/filter-list/base/FilterList.module.css","../../../src/filter-list/base/FilterListContent.module.css","../../../src/shared/ErrorBoundary.module.css","../../../src/shared/ErrorBoundary.tsx","../../../src/filter-list/utils/filterValues.ts","../../../src/filter-list/base/DragHandleIcon.tsx","../../../src/filter-list/base/FilterListItem.module.css","../../../src/filter-list/base/FilterListItem.tsx","../../../src/filter-list/base/SortableFilterListItem.tsx","../../../src/filter-list/base/FilterListContent.tsx","../../../src/filter-list/base/FilterListHeader.module.css","../../../src/filter-list/base/FilterListHeader.tsx","../../../src/filter-list/base/BaseFilterList.tsx","../../../src/base-components/search-bar/SearchBar.module.css","../../../src/base-components/search-bar/SearchBar.tsx","../../../src/base-components/searchable-menu/SearchableMenu.module.css","../../../src/base-components/searchable-menu/SearchableMenu.tsx","../../../src/filter-list/base/AddFilterPopover.module.css","../../../src/filter-list/base/AddFilterPopover.tsx","../../../src/filter-list/base/inputs/ContainsTextInput.module.css","../../../src/filter-list/base/inputs/ContainsTextInput.tsx","../../../src/base-components/switch/Switch.module.css","../../../src/base-components/switch/Switch.tsx","../../../src/filter-list/base/inputs/ToggleInput.module.css","../../../src/filter-list/base/inputs/ToggleInput.tsx","../../../src/shared/assertUnreachable.ts","../../../src/shared/dateUtils.ts","../../../src/filter-list/base/inputs/createHistogramBuckets.ts","../../../src/filter-list/base/inputs/RangeInput.module.css","../../../src/filter-list/base/inputs/shared.module.css","../../../src/filter-list/base/inputs/useStableData.ts","../../../src/filter-list/base/inputs/RangeInput.tsx","../../../src/filter-list/base/inputs/DateRangeInput.tsx","../../../src/filter-list/base/inputs/LinkedPropertyInput.module.css","../../../src/base-components/checkbox/Checkbox.module.css","../../../src/base-components/checkbox/Checkbox.tsx","../../../src/filter-list/base/inputs/ListogramInput.module.css","../../../src/filter-list/base/inputs/ListogramSkeleton.module.css","../../../src/filter-list/base/inputs/ListogramSkeleton.tsx","../../../src/filter-list/base/inputs/ListogramInput.tsx","../../../src/filter-list/base/inputs/MultiDateInput.module.css","../../../src/filter-list/base/inputs/MultiDateInput.tsx","../../../src/base-components/combobox/Combobox.module.css","../../../src/base-components/combobox/Combobox.tsx","../../../src/filter-list/base/inputs/MultiSelectInput.module.css","../../../src/filter-list/base/inputs/MultiSelectInput.tsx","../../../src/filter-list/base/inputs/NullValueWrapper.module.css","../../../src/filter-list/base/inputs/NullValueWrapper.tsx","../../../src/filter-list/base/inputs/NumberRangeInput.tsx","../../../src/filter-list/base/inputs/SingleDateInput.module.css","../../../src/filter-list/base/inputs/SingleDateInput.tsx","../../../src/filter-list/base/inputs/SingleSelectInput.module.css","../../../src/filter-list/base/inputs/SingleSelectInput.tsx","../../../src/filter-list/base/inputs/TextTagsInput.module.css","../../../src/filter-list/base/inputs/TextTagsInput.tsx","../../../src/filter-list/base/inputs/TimelineInput.module.css","../../../src/filter-list/base/inputs/TimelineInput.tsx","../../../src/filter-list/hooks/usePropertyAggregation.ts","../../../src/filter-list/utils/aggregationHelpers.ts","../../../src/filter-list/utils/coerceFilterValue.ts","../../../src/filter-list/inputs/LinkedPropertyInput.tsx","../../../src/filter-list/base/ExcludeDropdown.module.css","../../../src/filter-list/base/ExcludeDropdown.tsx","../../../src/filter-list/base/FilterInputExcludeRow.tsx","../../../src/filter-list/inputs/ContainsTextFilterInput.tsx","../../../src/filter-list/inputs/DateRangeFilterInput.tsx","../../../src/filter-list/inputs/ListogramFilterInput.tsx","../../../src/filter-list/inputs/MultiDateFilterInput.tsx","../../../src/filter-list/inputs/MultiSelectFilterInput.tsx","../../../src/filter-list/inputs/NumberRangeFilterInput.tsx","../../../src/filter-list/inputs/SingleDateFilterInput.tsx","../../../src/filter-list/inputs/SingleSelectFilterInput.tsx","../../../src/filter-list/inputs/TextTagsFilterInput.tsx","../../../src/filter-list/inputs/TimelineFilterInput.tsx","../../../src/filter-list/inputs/ToggleFilterInput.tsx","../../../src/filter-list/inputs/PropertyFilterInput.tsx","../../../src/filter-list/FilterInput.tsx","../../../src/filter-list/utils/getFilterKey.ts","../../../src/filter-list/utils/filterStateToWhereClause.ts","../../../src/filter-list/hooks/useFilterListState.ts","../../../src/filter-list/hooks/useFilterVisibility.ts","../../../src/filter-list/utils/getFilterLabel.ts","../../../src/filter-list/FilterList.tsx","../../../src/filter-list/utils/filterStateSerialization.ts","../../../src/object-table/LoadingCell.module.css","../../../src/object-table/TableCell.module.css","../../../src/object-table/LoadingCell.tsx","../../../src/object-table/components/AsyncValueCell.tsx","../../../src/object-table/EditableCell.module.css","../../../src/object-table/EditableCell.tsx","../../../src/object-table/utils/AsyncCellData.ts","../../../src/object-table/utils/getCellId.ts","../../../src/object-table/DefaultCellRenderer.tsx","../../../src/object-table/hooks/useColumnDefs.ts","../../../src/object-table/utils/constants.ts","../../../src/object-table/hooks/useColumnPinning.ts","../../../src/object-table/hooks/useColumnResize.ts","../../../src/object-table/hooks/useColumnVisibility.ts","../../../src/object-table/hooks/useEditableTable.ts","../../../src/object-table/utils/addFilterClauseToObjectSet.ts","../../../src/object-table/utils/stripDerivedPropertiesFromParams.ts","../../../src/object-table/hooks/useFunctionColumnsData.ts","../../../src/object-table/hooks/useObjectTableData.ts","../../../src/object-table/utils/getRowId.ts","../../../src/object-table/hooks/useRowSelection.ts","../../../src/object-table/SelectionCells.tsx","../../../src/object-table/hooks/useSelectionColumn.tsx","../../../src/object-table/hooks/useTableSorting.ts","../../../src/object-table/TableRow.module.css","../../../src/object-table/LoadingRow.tsx","../../../src/object-table/TableBody.module.css","../../../src/base-components/draggable-list/DraggableList.module.css","../../../src/base-components/draggable-list/DraggableList.tsx","../../../src/object-table/ColumnConfigDialog.module.css","../../../src/object-table/ColumnConfigDialog.tsx","../../../src/object-table/MultiColumnSortDialog.module.css","../../../src/object-table/SortableItemsList.tsx","../../../src/object-table/MultiColumnSortDialog.tsx","../../../src/object-table/TableHeader.module.css","../../../src/object-table/TableHeaderContent.module.css","../../../src/object-table/TableHeaderContent.tsx","../../../src/object-table/TableHeaderWithPopover.module.css","../../../src/object-table/TableHeaderWithPopover.tsx","../../../src/object-table/utils/getColumnPinningStyles.ts","../../../src/object-table/TableHeader.tsx","../../../src/object-table/LoadingStateTable.tsx","../../../src/object-table/NonIdealState.module.css","../../../src/object-table/NonIdealState.tsx","../../../src/object-table/Table.module.css","../../../src/object-table/CellContextMenu.module.css","../../../src/object-table/CellContextMenu.tsx","../../../src/object-table/hooks/useCellContextMenu.ts","../../../src/object-table/TableCell.tsx","../../../src/object-table/TableRow.tsx","../../../src/object-table/TableBody.tsx","../../../src/object-table/TableEditContainer.module.css","../../../src/object-table/TableEditContainer.tsx","../../../src/object-table/Table.tsx","../../../src/object-table/ObjectTable.tsx","../../../src/pdf-viewer/components/PdfViewerAnnotationLayer.module.css","../../../src/pdf-viewer/components/PdfViewerAnnotationLayer.tsx","../../../src/pdf-viewer/components/PdfViewerOutlineSidebar.module.css","../../../src/pdf-viewer/components/PdfViewerSidebarHeader.module.css","../../../src/pdf-viewer/components/PdfViewerSidebarHeader.tsx","../../../src/pdf-viewer/components/PdfViewerOutlineSidebar.tsx","../../../src/pdf-viewer/components/PdfViewerSearchBar.module.css","../../../src/pdf-viewer/components/PdfViewerSearchBar.tsx","../../../src/pdf-viewer/constants.ts","../../../src/pdf-viewer/components/PdfViewerSidebar.module.css","../../../src/pdf-viewer/components/PdfViewerThumbnail.module.css","../../../src/pdf-viewer/components/PdfViewerThumbnail.tsx","../../../src/pdf-viewer/components/PdfViewerSidebar.tsx","../../../src/pdf-viewer/components/PdfViewerToolbar.module.css","../../../src/pdf-viewer/components/PdfViewerToolbar.tsx","../../../src/pdf-viewer/hooks/usePdfAnnotationsByPage.ts","../../../src/pdf-viewer/hooks/usePdfFormFields.ts","../../../src/pdf-viewer/hooks/usePdfHighlightMode.ts","../../../src/pdf-viewer/hooks/usePdfOutline.ts","../../../src/pdf-viewer/hooks/usePdfAnnotationPortals.ts","../../../src/pdf-viewer/hooks/usePdfDocument.ts","../../../src/pdf-viewer/hooks/usePdfViewer.ts","../../../src/pdf-viewer/hooks/usePdfViewerSync.ts","../../../src/pdf-viewer/hooks/usePdfViewerCore.ts","../../../src/pdf-viewer/hooks/usePdfViewerSearch.ts","../../../src/pdf-viewer/hooks/usePdfViewerState.ts","../../../src/pdf-viewer/PdfViewer.module.css","../../../src/pdf-viewer/PdfViewer.tsx","../../../src/pdf-viewer/components/PdfViewerContent.tsx","../../../src/pdf-viewer/PdfViewerContext.tsx","../../../src/pdf-viewer/PdfRenderer.tsx","../../../src/shared/typedMemo.ts","../../../src/shared/hooks/useIsMounted.ts","../../../src/shared/hooks/useAsyncAction.ts","../../../src/action-form/BaseForm.module.css","../../../src/action-form/utils/extractValidationRules.ts","../../../src/action-form/FormField.module.css","../../../src/action-form/FormField.tsx","../../../src/action-form/fields/CustomField.tsx","../../../src/action-form/fields/DatetimePickerField.module.css","../../../src/action-form/fields/LazyDateCalendar.tsx","../../../src/action-form/fields/DatetimePickerField.tsx","../../../src/base-components/select/Select.module.css","../../../src/base-components/select/Select.tsx","../../../src/action-form/fields/DropdownField.tsx","../../../src/action-form/fields/FilePickerField.module.css","../../../src/action-form/fields/FilePickerField.tsx","../../../src/action-form/fields/NumberInputField.module.css","../../../src/action-form/fields/NumberInputField.tsx","../../../src/base-components/icon/BlueprintIcon.tsx","../../../src/action-form/fields/ObjectSetField.module.css","../../../src/action-form/fields/ObjectSetField.tsx","../../../src/action-form/fields/RadioButtonsField.module.css","../../../src/action-form/fields/RadioButtonsField.tsx","../../../src/action-form/fields/BaseInput.module.css","../../../src/action-form/fields/TextAreaField.tsx","../../../src/action-form/fields/TextInputField.tsx","../../../src/action-form/fields/FormFieldRenderer.tsx","../../../src/action-form/fields/FieldBridge.tsx","../../../src/action-form/FormHeader.module.css","../../../src/action-form/FormHeader.tsx","../../../src/action-form/BaseForm.tsx","../../../src/action-form/utils/coerceFieldValue.ts","../../../src/action-form/utils/getDefaultFieldDefinitions.ts","../../../src/action-form/ActionForm.tsx"],"names":["React","Cross","Search","More","ChevronDown","DoubleChevronLeft","DoubleChevronRight","Reset","Tick","Disable","Component","Button","useState","useCallback","classnames","Input","useSortable","useMemo","CSS","memo","getFilterKey","getFilterLabel","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","useSensors","arrayMove","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DragOverlay","classNames","Menu","useRef","debounce","useEffect","_extends","BaseUISwitch","useId","BaseUICheckbox","Minus","SkeletonBar","BaseUICombobox","TagItem","useOsdkAggregation","value","includeNull","selectedDates","selectedValues","selectedDate","startDate","endDate","enabled","HasLinkInput","hasLink","KeywordSearchInput","key","useOsdkMetadata","abortController","Tooltip","Error","isObjectSet","getWireObjectSet","useOsdkFunctions","chunk","useObjectSet","useOsdkObjects","RemoveIcon","Trash","SmallCross","DragHandleVertical","BaseDndContext","ActionButton","Dialog","Cog","Collapsible","CaretDown","SmallInfoSign","SortAlphabetical","SortAlphabeticalDesc","DialogTitle","Add","flexRender","Pin","Unpin","Sort","Remove","VerticalDistribution","Settings","header","createPortal","useVirtualizer","useLayoutEffect","useReactTable","getCoreRowModel","ToggleGroup","Toggle","GridView","Properties","ChevronUp","document","ChevronLeft","ChevronRight","Plus","RotatePage","Highlight","Download","FloppyDisk","stored","AnnotationEditorType","items","importMetaUrl","GlobalWorkerOptions","getDocument","EventBus","PDFLinkService","PDFFindController","PDFViewer","forwardRef","BasePdfViewer","useImperativeHandle","Spin","ErrorIcon","useContext","Suspense","DateCalendar_default","Popover","BaseUISelect","SVGIconContainer","Icons","IconSize","RadioGroup","Radio","useController","useForm","useOsdkAction"],"mappings":"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","file":"experimental.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChevronDown, Cross, Disable, DoubleChevronLeft, DoubleChevronRight, More, Reset, Search, Tick } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport function RemoveIcon() {\n return /*#__PURE__*/React.createElement(Cross, {\n size: 14\n });\n}\nexport function SearchIcon() {\n return /*#__PURE__*/React.createElement(Search, {\n size: 14\n });\n}\nexport function OverflowMenuIcon() {\n return /*#__PURE__*/React.createElement(More, {\n size: 14\n });\n}\nexport function ChevronDownIcon() {\n return /*#__PURE__*/React.createElement(ChevronDown, {\n size: 10\n });\n}\nexport function CollapseIcon() {\n return /*#__PURE__*/React.createElement(DoubleChevronLeft, {\n size: 14\n });\n}\nexport function ExpandIcon() {\n return /*#__PURE__*/React.createElement(DoubleChevronRight, {\n size: 14\n });\n}\nexport function ResetIcon() {\n return /*#__PURE__*/React.createElement(Reset, {\n size: 12\n });\n}\nexport function CheckIcon() {\n return /*#__PURE__*/React.createElement(Tick, {\n size: 12\n });\n}\nexport function ExcludeIcon() {\n return /*#__PURE__*/React.createElement(Disable, {\n color: \"currentColor\",\n size: 12\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.filterList {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.filterListCollapsed {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: var(--osdk-filter-list-collapsed-width);\n height: 100%;\n background: var(--osdk-filter-list-bg);\n border: var(--osdk-filter-list-border);\n border-radius: var(--osdk-filter-list-border-radius);\n padding: var(--osdk-surface-spacing) 0;\n gap: var(--osdk-surface-spacing);\n}\n\n.expandedContent {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--osdk-filter-list-bg);\n border: var(--osdk-filter-list-border);\n border-radius: var(--osdk-filter-list-border-radius);\n box-shadow: var(--osdk-filter-list-shadow);\n padding: var(--osdk-filter-list-padding);\n gap: var(--osdk-filter-list-gap);\n}\n\n.scrollableContent {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.hiddenContent {\n display: none;\n}\n\n.expandButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-header-button-padding);\n border: none;\n background: var(--osdk-filter-header-button-bg);\n cursor: pointer;\n border-radius: var(--osdk-filter-header-button-border-radius);\n color: var(--osdk-filter-header-collapse-icon-color);\n transition: background-color var(--osdk-filter-header-button-transition);\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.collapsedLabel {\n writing-mode: vertical-rl;\n transform: rotate(180deg);\n font-family: var(--osdk-filter-list-collapsed-label-font-family);\n font-size: var(--osdk-filter-list-collapsed-label-font-size);\n color: var(--osdk-filter-list-collapsed-label-color);\n font-weight: var(--osdk-filter-header-font-weight);\n user-select: none;\n}\n\n.addButtonContainer {\n display: flex;\n justify-content: center;\n padding: var(--osdk-filter-list-addButton-container-padding);\n background: var(--osdk-filter-list-addButton-container-bg);\n border-top: var(--osdk-filter-list-addButton-container-border-top);\n flex-shrink: 0;\n}\n\n.addButtonContainer > * {\n flex: 1;\n}\n\n.addButton {\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-reset-font-size);\n color: var(--osdk-typography-color-default-rest);\n background: var(--osdk-filter-header-button-bg);\n border: var(--osdk-filter-list-addButton-border);\n cursor: pointer;\n padding: var(--osdk-filter-header-reset-padding);\n min-height: var(--osdk-filter-list-addButton-height);\n border-radius: var(--osdk-filter-header-button-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.content {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-list-content-gap);\n}\n\n.emptyMessage {\n margin: 0;\n color: var(--osdk-filter-list-empty-text-color);\n font-size: var(--osdk-filter-list-empty-font-size);\n}\n\n.dragOverlay {\n box-shadow: var(--osdk-filter-item-drag-overlay-shadow);\n border-radius: var(--osdk-filter-item-drag-overlay-border-radius);\n background: var(--osdk-filter-item-drag-overlay-bg);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.errorContainer {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--osdk-error-boundary-gap, 8px);\n padding: var(--osdk-error-boundary-padding, 8px);\n border-radius: var(--osdk-error-boundary-border-radius, 4px);\n background-color: var(--osdk-error-boundary-bg, color-mix(in srgb, var(--osdk-intent-danger-rest, #c23030) 5%, transparent));\n}\n\n.errorMessage {\n margin: 0;\n font-size: var(--osdk-error-boundary-font-size, 13px);\n color: var(--osdk-error-boundary-text-color, var(--osdk-intent-danger-rest, #c23030));\n}\n\n.retryButton {\n padding: var(--osdk-error-boundary-button-padding, 4px 8px);\n border: var(--osdk-surface-border-width, 1px) solid var(--osdk-error-boundary-button-border-color, currentColor);\n border-radius: var(--osdk-error-boundary-button-border-radius, 3px);\n background: transparent;\n font-size: var(--osdk-error-boundary-button-font-size, 12px);\n color: var(--osdk-error-boundary-button-color, inherit);\n cursor: pointer;\n transition: background-color var(--osdk-filter-input-transition, 150ms ease);\n\n &:hover {\n background-color: var(--osdk-error-boundary-button-hover-bg, color-mix(in srgb, currentColor 5%, transparent));\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width, 2px) solid var(--osdk-filter-input-focus-outline-color, rgba(45, 114, 210, 0.6));\n outline-offset: var(--osdk-filter-input-focus-outline-offset, 2px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\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 React, { Component } from \"react\";\nimport styles from \"./ErrorBoundary.module.css\";\nexport class ErrorBoundary extends Component {\n state = {\n hasError: false,\n error: null\n };\n static getDerivedStateFromError(error) {\n return {\n hasError: true,\n error\n };\n }\n componentDidCatch(error, errorInfo) {\n // eslint-disable-next-line no-console\n console.error(\"[ErrorBoundary]\", error);\n // eslint-disable-next-line no-console\n console.error(\"[ErrorBoundary] Component stack:\", errorInfo.componentStack);\n this.props.onError?.(error);\n }\n handleRetry = () => {\n this.setState({\n hasError: false,\n error: null\n });\n };\n render() {\n if (this.state.hasError) {\n if (this.props.fallback) {\n return this.props.fallback;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: styles.errorMessage\n }, this.props.errorMessage ?? \"Something went wrong\"), /*#__PURE__*/React.createElement(Button, {\n className: styles.retryButton,\n onClick: this.handleRetry,\n \"aria-label\": \"Retry\"\n }, \"Retry\"));\n }\n return this.props.children;\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state) {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default:\n {\n const _exhaustive = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state) {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default:\n {\n const _exhaustive = state;\n return false;\n }\n }\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch(values, searchValue, getValue) {\n const trimmed = searchValue.trim();\n if (!trimmed) return values;\n const lowerSearch = trimmed.toLowerCase();\n return values.filter(v => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state) {\n if (!state) return false;\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default:\n {\n const _exhaustive = state;\n return false;\n }\n }\n}","/*\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\";\nexport function DragHandleIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5.5\",\n cy: \"3.5\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"10.5\",\n cy: \"3.5\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5.5\",\n cy: \"8\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"10.5\",\n cy: \"8\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5.5\",\n cy: \"12.5\",\n r: \"1.5\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"10.5\",\n cy: \"12.5\",\n r: \"1.5\"\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.filterItem {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-item-gap);\n border-radius: var(--osdk-filter-item-border-radius);\n padding: var(--osdk-filter-item-padding);\n}\n\n.itemHeader {\n display: flex;\n align-items: center;\n}\n\n.itemLabel {\n flex: 1;\n font-family: var(--osdk-filter-item-label-font-family);\n font-size: var(--osdk-filter-item-label-font-size);\n font-weight: var(--osdk-filter-item-label-font-weight);\n color: var(--osdk-filter-item-label-color);\n}\n\n.itemContent {\n display: flex;\n flex-direction: column;\n min-width: 0;\n overflow: hidden;\n}\n\n.dragHandle {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-item-drag-handle-padding);\n margin-right: var(--osdk-surface-spacing);\n border: none;\n background: var(--osdk-filter-item-drag-handle-bg);\n cursor: var(--osdk-drag-handle-cursor);\n border-radius: var(--osdk-filter-item-drag-handle-border-radius);\n color: var(--osdk-filter-item-drag-handle-color);\n touch-action: none;\n\n &:hover {\n color: var(--osdk-filter-item-drag-handle-color-hover);\n background: var(--osdk-filter-item-drag-handle-bg-hover);\n }\n\n &:active {\n cursor: var(--osdk-drag-handle-cursor-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-item-drag-handle-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.headerActionButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-item-header-action-padding);\n margin-left: calc(var(--osdk-surface-spacing) * 0.5);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-filter-item-header-action-border-radius);\n color: var(--osdk-filter-item-header-action-color);\n opacity: 0;\n transition: opacity var(--osdk-filter-header-button-transition),\n background-color var(--osdk-filter-header-button-transition);\n\n &:hover {\n color: var(--osdk-typography-color-default-rest);\n background: var(--osdk-filter-item-header-action-bg-hover);\n }\n\n &:focus-visible {\n opacity: 1;\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.filterItem:hover .headerActionButton {\n opacity: 1;\n}\n\n.headerActionButton[data-popup-open],\n.headerActionButton[aria-pressed=\"true\"] {\n opacity: 1;\n}\n\n.searchRow {\n display: flex;\n align-items: center;\n background: var(--osdk-filter-input-bg);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n padding: var(--osdk-filter-input-padding);\n gap: var(--osdk-filter-input-gap);\n}\n\n.searchInput {\n flex: 1;\n border: none;\n background: transparent;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-input-font-size);\n color: var(--osdk-filter-input-color);\n outline: none;\n\n &::placeholder {\n color: var(--osdk-filter-input-placeholder-color);\n }\n}\n\n.searchClearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-input-clear-padding);\n border: none;\n background: var(--osdk-filter-input-clear-bg);\n color: var(--osdk-filter-input-icon-color);\n cursor: pointer;\n border-radius: var(--osdk-filter-input-clear-border-radius);\n transition: background-color var(--osdk-filter-input-transition);\n\n &:hover {\n background: var(--osdk-filter-input-clear-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-input-clear-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.excludeRow {\n display: flex;\n align-items: center;\n opacity: 0;\n height: 0;\n overflow: hidden;\n transition: opacity var(--osdk-filter-header-button-transition),\n height var(--osdk-filter-header-button-transition);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.excludeRowVisible {\n opacity: 1;\n height: auto;\n overflow: visible;\n}\n\n.excludeCountLabel {\n font-family: var(--osdk-filter-item-exclude-dropdown-font-family);\n font-size: var(--osdk-filter-item-exclude-dropdown-font-size);\n color: var(--osdk-filter-item-exclude-dropdown-color);\n margin-left: calc(var(--osdk-surface-spacing) * 0.5);\n}\n\n.clearAllButton {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--osdk-filter-item-exclude-dropdown-font-family);\n font-size: var(--osdk-filter-item-exclude-dropdown-font-size);\n color: var(--osdk-filter-item-exclude-dropdown-color);\n padding: 0;\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.dragging {\n opacity: var(--osdk-filter-item-dragging-opacity);\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport { supportsExcluding, supportsSearch } from \"../utils/filterValues.js\";\nimport { DragHandleIcon } from \"./DragHandleIcon.js\";\nimport { OverflowMenuIcon, RemoveIcon, SearchIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction hasActiveSelection(filterState) {\n if (filterState == null) {\n return false;\n }\n switch (filterState.type) {\n case \"EXACT_MATCH\":\n return filterState.values.length > 0;\n case \"SELECT\":\n return filterState.selectedValues.length > 0;\n case \"CONTAINS_TEXT\":\n return filterState.value != null && filterState.value.length > 0;\n case \"NUMBER_RANGE\":\n return filterState.minValue != null || filterState.maxValue != null;\n case \"DATE_RANGE\":\n return filterState.minValue != null || filterState.maxValue != null;\n case \"TIMELINE\":\n return filterState.startDate != null || filterState.endDate != null;\n case \"TOGGLE\":\n return filterState.enabled;\n case \"keywordSearch\":\n return filterState.searchTerm.length > 0;\n case \"hasLink\":\n return filterState.hasLink;\n case \"linkedProperty\":\n return hasActiveSelection(filterState.linkedFilterState);\n case \"custom\":\n return true;\n default:\n return false;\n }\n}\nfunction FilterListItemInner({\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n dragHandleAttributes,\n dragHandleListeners,\n className,\n style\n}) {\n const [searchState, setSearchState] = useState({\n type: \"closed\"\n });\n const [excludeRowOpen, setExcludeRowOpen] = useState(false);\n const handleFilterStateChanged = useCallback(newState => {\n onFilterStateChanged(filterKey, newState);\n }, [filterKey, onFilterStateChanged]);\n const handleToggleSearch = useCallback(() => {\n setSearchState(prev => prev.type === \"closed\" ? {\n type: \"open\",\n query: \"\"\n } : {\n type: \"closed\"\n });\n }, []);\n const handleSearchChange = useCallback(e => {\n setSearchState({\n type: \"open\",\n query: e.target.value\n });\n }, []);\n const handleSearchClear = useCallback(() => {\n setSearchState({\n type: \"open\",\n query: \"\"\n });\n }, []);\n const handleRemove = useCallback(() => {\n onFilterRemoved?.(filterKey);\n }, [filterKey, onFilterRemoved]);\n const handleToggleExcludeRow = useCallback(() => {\n setExcludeRowOpen(prev => !prev);\n }, []);\n const searchInputRef = useCallback(element => {\n element?.focus({\n preventScroll: true\n });\n }, []);\n const showExcludeDropdown = supportsExcluding(filterState);\n const showSearch = supportsSearch(filterState);\n const hasOverflowActions = showExcludeDropdown;\n const searchOpen = searchState.type === \"open\";\n const searchQuery = searchState.type === \"open\" ? searchState.query : \"\";\n const searchQueryForInput = searchState.type === \"open\" ? searchState.query : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.filterItem, className),\n style: style,\n \"data-has-selection\": hasActiveSelection(filterState) || undefined\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemHeader\n }, dragHandleAttributes && /*#__PURE__*/React.createElement(Button, _extends({\n className: styles.dragHandle,\n \"aria-label\": `Reorder ${label}`\n }, dragHandleAttributes, dragHandleListeners), /*#__PURE__*/React.createElement(DragHandleIcon, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, label), showSearch && /*#__PURE__*/React.createElement(Button, {\n className: styles.headerActionButton,\n onClick: handleToggleSearch,\n \"aria-label\": \"Search values\",\n \"aria-pressed\": searchOpen\n }, /*#__PURE__*/React.createElement(SearchIcon, null)), onFilterRemoved && /*#__PURE__*/React.createElement(Button, {\n className: styles.headerActionButton,\n onClick: handleRemove,\n \"aria-label\": `Remove ${label} filter`\n }, /*#__PURE__*/React.createElement(RemoveIcon, null)), hasOverflowActions && /*#__PURE__*/React.createElement(Button, {\n className: styles.headerActionButton,\n onClick: handleToggleExcludeRow,\n \"aria-label\": \"More actions\",\n \"aria-pressed\": excludeRowOpen\n }, /*#__PURE__*/React.createElement(OverflowMenuIcon, null))), searchOpen && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.searchRow\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n className: styles.searchInput,\n value: searchQuery,\n onChange: handleSearchChange,\n placeholder: \"Search property values...\",\n \"aria-label\": \"Search property values\",\n ref: searchInputRef\n }), searchQuery && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.searchClearButton,\n onClick: handleSearchClear,\n \"aria-label\": \"Clear search\"\n }, /*#__PURE__*/React.createElement(RemoveIcon, null))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemContent\n }, /*#__PURE__*/React.createElement(ErrorBoundary, {\n errorMessage: \"Error loading filter\"\n }, renderInput({\n definition,\n filterKey,\n filterState,\n onFilterStateChanged: handleFilterStateChanged,\n searchQuery: searchQueryForInput,\n excludeRowOpen\n }))));\n}\nexport const FilterListItem = /*#__PURE__*/memo(FilterListItemInner);","/*\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 { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classnames from \"classnames\";\nimport React, { memo, useMemo } from \"react\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction SortableFilterListItemInner({\n id,\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n const style = useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition: transition ?? undefined\n }), [transform, transition]);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: setNodeRef,\n style: style,\n className: classnames(isDragging && styles.dragging)\n }, /*#__PURE__*/React.createElement(FilterListItem, {\n definition: definition,\n filterKey: filterKey,\n label: label,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput,\n dragHandleAttributes: attributes,\n dragHandleListeners: listeners\n }));\n}\nexport const SortableFilterListItem = /*#__PURE__*/memo(SortableFilterListItemInner);","/*\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 { closestCenter, DndContext, DragOverlay, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport styles from \"./FilterListContent.module.css\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport { SortableFilterListItem } from \"./SortableFilterListItem.js\";\nconst restrictToVerticalAxis = ({\n transform\n}) => ({\n ...transform,\n x: 0\n});\nconst POINTER_ACTIVATION_CONSTRAINT = {\n distance: 8\n};\nconst MODIFIERS = [restrictToVerticalAxis];\nconst DRAG_OVERLAY_HANDLE_ATTRIBUTES = {\n role: \"button\",\n tabIndex: -1,\n \"aria-disabled\": true,\n \"aria-pressed\": undefined,\n \"aria-roledescription\": \"sortable\",\n \"aria-describedby\": \"\"\n};\nexport function FilterListContent({\n filterDefinitions,\n filterStates,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n getFilterKey,\n getFilterLabel,\n enableSorting,\n className,\n style\n}) {\n const [dragOrder, setDragOrder] = useState(null);\n const [activeId, setActiveId] = useState(null);\n const renderDefinitions = useMemo(() => {\n if (!enableSorting || !dragOrder || !filterDefinitions) {\n return filterDefinitions;\n }\n const defsByKey = new Map(filterDefinitions.map(d => [getFilterKey(d), d]));\n const ordered = [];\n for (const key of dragOrder) {\n const def = defsByKey.get(key);\n if (def) {\n ordered.push(def);\n defsByKey.delete(key);\n }\n }\n for (const def of defsByKey.values()) {\n ordered.push(def);\n }\n return ordered;\n }, [enableSorting, dragOrder, filterDefinitions, getFilterKey]);\n const sortableIds = useMemo(() => enableSorting && renderDefinitions ? renderDefinitions.map(def => getFilterKey(def)) : [], [enableSorting, renderDefinitions, getFilterKey]);\n const pointerSensor = useSensor(PointerSensor, {\n activationConstraint: POINTER_ACTIVATION_CONSTRAINT\n });\n const keyboardSensor = useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n });\n const sensors = useSensors(pointerSensor, keyboardSensor);\n const activeIndex = activeId != null ? sortableIds.indexOf(String(activeId)) : -1;\n const activeDefinition = activeIndex >= 0 && renderDefinitions ? renderDefinitions[activeIndex] : undefined;\n const activeFilterKey = useMemo(() => activeDefinition ? getFilterKey(activeDefinition) : undefined, [activeDefinition, getFilterKey]);\n const handleDragStart = useCallback(event => {\n setActiveId(event.active.id);\n }, []);\n const handleDragEnd = useCallback(event => {\n setActiveId(null);\n const {\n active,\n over\n } = event;\n if (!over || active.id === over.id) {\n return;\n }\n const oldIndex = sortableIds.indexOf(String(active.id));\n const newIndex = sortableIds.indexOf(String(over.id));\n if (oldIndex !== -1 && newIndex !== -1) {\n setDragOrder(arrayMove(sortableIds, oldIndex, newIndex));\n }\n }, [sortableIds]);\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n const announcements = useMemo(() => ({\n onDragStart({\n active\n }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 && renderDefinitions ? renderDefinitions[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Picked up ${label} filter`;\n },\n onDragOver({\n over\n }) {\n if (!over) {\n return \"Not over a droppable area\";\n }\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Moved to position ${overIdx + 1} of ${sortableIds.length}`;\n },\n onDragEnd({\n active,\n over\n }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 && renderDefinitions ? renderDefinitions[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n if (over && active.id !== over.id) {\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Dropped ${label} filter at position ${overIdx + 1}`;\n }\n return `Dropped ${label} filter back in its original position`;\n },\n onDragCancel({\n active\n }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 && renderDefinitions ? renderDefinitions[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Cancelled dragging ${label} filter`;\n }\n }), [renderDefinitions, sortableIds, getFilterLabel]);\n const accessibility = useMemo(() => ({\n announcements\n }), [announcements]);\n if (!renderDefinitions || renderDefinitions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style,\n \"data-empty\": \"true\"\n });\n }\n if (enableSorting) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style\n }, /*#__PURE__*/React.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n modifiers: MODIFIERS,\n onDragStart: handleDragStart,\n onDragEnd: handleDragEnd,\n onDragCancel: handleDragCancel,\n accessibility: accessibility\n }, /*#__PURE__*/React.createElement(SortableContext, {\n items: sortableIds,\n strategy: verticalListSortingStrategy\n }, renderDefinitions.map((definition, index) => {\n const id = sortableIds[index];\n const filterKey = getFilterKey(definition);\n const label = getFilterLabel(definition);\n const state = filterStates.get(filterKey);\n return /*#__PURE__*/React.createElement(SortableFilterListItem, {\n key: id,\n id: id,\n definition: definition,\n filterKey: filterKey,\n label: label,\n filterState: state,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput\n });\n })), /*#__PURE__*/React.createElement(DragOverlay, {\n dropAnimation: null,\n className: styles.dragOverlay\n }, activeDefinition && activeFilterKey && /*#__PURE__*/React.createElement(FilterListItem, {\n definition: activeDefinition,\n filterKey: activeFilterKey,\n label: getFilterLabel(activeDefinition),\n filterState: filterStates.get(activeFilterKey),\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput,\n dragHandleAttributes: DRAG_OVERLAY_HANDLE_ATTRIBUTES\n }))));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style\n }, renderDefinitions.map(definition => {\n const filterKey = getFilterKey(definition);\n const state = filterStates.get(filterKey);\n return /*#__PURE__*/React.createElement(FilterListItem, {\n key: filterKey,\n definition: definition,\n filterKey: filterKey,\n label: getFilterLabel(definition),\n filterState: state,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput\n });\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--osdk-filter-header-padding);\n gap: var(--osdk-filter-header-gap);\n border-bottom: var(--osdk-filter-header-border-bottom);\n flex-shrink: 0;\n}\n\n.titleContainer {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-header-titleContainer-gap);\n flex: 1;\n min-width: 0;\n}\n\n.title {\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-font-size);\n font-weight: var(--osdk-filter-header-font-weight);\n color: var(--osdk-filter-header-color);\n margin: 0;\n}\n\n.titleIcon {\n color: var(--osdk-filter-header-icon-color);\n display: flex;\n align-items: center;\n}\n\n.activeCount {\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-activeCount-font-size);\n color: var(--osdk-filter-header-activeCount-color);\n font-variant-numeric: tabular-nums;\n}\n\n.actions {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n\n &:empty {\n display: none;\n }\n}\n\n.collapseButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-header-button-padding);\n border: none;\n background: var(--osdk-filter-header-button-bg);\n cursor: pointer;\n border-radius: var(--osdk-filter-header-button-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n color: var(--osdk-filter-header-collapse-icon-color);\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.resetButton {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 0.5);\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-reset-font-size);\n color: var(--osdk-filter-header-reset-color);\n background: var(--osdk-filter-header-button-bg);\n border: var(--osdk-filter-header-reset-border);\n cursor: pointer;\n padding: var(--osdk-filter-header-reset-padding);\n border-radius: var(--osdk-filter-header-reset-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n\n &:hover:not(:disabled) {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:disabled {\n color: var(--osdk-filter-header-reset-color-disabled);\n border: var(--osdk-filter-header-reset-border-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\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 React, { memo, useCallback } from \"react\";\nimport { CollapseIcon, ResetIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterListHeader.module.css\";\nfunction FilterListHeaderInner({\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n showResetButton,\n onReset,\n showActiveFilterCount,\n activeFilterCount = 0,\n hasVisibilityChanges = false\n}) {\n const showCollapseButton = onCollapsedChange != null;\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.header\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.titleContainer\n }, titleIcon && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.titleIcon\n }, titleIcon), title && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.title\n }, title), showActiveFilterCount && activeFilterCount > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.activeCount\n }, \"(\", activeFilterCount, \")\")), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.actions\n }, showResetButton && /*#__PURE__*/React.createElement(Button, {\n className: styles.resetButton,\n onClick: onReset,\n disabled: activeFilterCount === 0 && !hasVisibilityChanges\n }, /*#__PURE__*/React.createElement(ResetIcon, null), \" Reset filters\"), showCollapseButton && /*#__PURE__*/React.createElement(Button, {\n className: styles.collapseButton,\n onClick: handleCollapseClick,\n \"aria-expanded\": !collapsed,\n \"aria-label\": collapsed ? \"Expand filters\" : \"Collapse filters\"\n }, /*#__PURE__*/React.createElement(CollapseIcon, null))));\n}\nexport const FilterListHeader = /*#__PURE__*/memo(FilterListHeaderInner);","/*\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 classnames from \"classnames\";\nimport React, { useCallback } from \"react\";\nimport { ExpandIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterList.module.css\";\nimport { FilterListContent } from \"./FilterListContent.js\";\nimport { FilterListHeader } from \"./FilterListHeader.js\";\nexport function BaseFilterList(props) {\n const {\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n filterDefinitions,\n filterStates,\n onFilterStateChanged,\n renderInput,\n getFilterKey,\n getFilterLabel,\n activeFilterCount,\n onReset,\n onFilterAdded,\n onFilterRemoved,\n showResetButton = false,\n showActiveFilterCount = false,\n hasVisibilityChanges,\n enableSorting,\n className,\n renderAddFilterButton\n } = props;\n const showHeader = title || titleIcon || showResetButton || showActiveFilterCount || onCollapsedChange;\n const showAddButton = renderAddFilterButton != null || onFilterAdded != null;\n const handleExpand = useCallback(() => {\n onCollapsedChange?.(false);\n }, [onCollapsedChange]);\n const isCollapsed = collapsed && onCollapsedChange != null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.filterList, className)\n }, isCollapsed && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.filterListCollapsed,\n \"data-collapsed\": \"true\"\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.expandButton,\n onClick: handleExpand,\n \"aria-label\": \"Expand filters\"\n }, /*#__PURE__*/React.createElement(ExpandIcon, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.collapsedLabel\n }, title ?? \"Filters\")), /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.expandedContent, isCollapsed && styles.hiddenContent),\n \"data-active-count\": activeFilterCount\n }, showHeader && /*#__PURE__*/React.createElement(FilterListHeader, {\n title: title,\n titleIcon: titleIcon,\n collapsed: collapsed,\n onCollapsedChange: onCollapsedChange,\n showResetButton: showResetButton,\n onReset: onReset,\n showActiveFilterCount: showActiveFilterCount,\n activeFilterCount: activeFilterCount,\n hasVisibilityChanges: hasVisibilityChanges\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollableContent\n }, /*#__PURE__*/React.createElement(FilterListContent, {\n filterDefinitions: filterDefinitions,\n filterStates: filterStates,\n onFilterStateChanged: onFilterStateChanged,\n onFilterRemoved: onFilterRemoved,\n renderInput: renderInput,\n getFilterKey: getFilterKey,\n getFilterLabel: getFilterLabel,\n enableSorting: enableSorting\n })), showAddButton && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.addButtonContainer\n }, renderAddFilterButton ? renderAddFilterButton() : /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.addButton,\n onClick: onFilterAdded\n }, \"+ Add filter\"))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.searchBar {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 3);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 3);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n\n &:focus-within {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.searchIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-typography-color-muted);\n pointer-events: none;\n flex-shrink: 0;\n}\n\n.searchInput {\n border: none;\n width: 100%;\n padding: var(--osdk-surface-spacing) 0;\n font-size: var(--osdk-typography-size-body-medium);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--osdk-typography-color-muted);\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Search } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./SearchBar.module.css\";\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search\",\n \"aria-label\": ariaLabel,\n className,\n onKeyDown\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.searchBar, className)\n }, /*#__PURE__*/React.createElement(Search, {\n className: styles.searchIcon\n }), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n placeholder: placeholder,\n \"aria-label\": ariaLabel ?? placeholder,\n value: value,\n onChange: onChange,\n className: styles.searchInput,\n onKeyDown: onKeyDown\n }));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.positioner {\n z-index: var(--osdk-surface-z-index-3);\n}\n\n.popup {\n background-color: var(--osdk-surface-background-color-default-rest);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n max-height: calc(var(--osdk-dialog-max-height) * 0.5);\n overflow-y: auto;\n width: var(--anchor-width);\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.searchContainer {\n border: none;\n border-bottom: var(--osdk-surface-border);\n border-radius: 0;\n position: sticky;\n top: 0;\n background-color: var(--osdk-surface-background-color-default-rest);\n}\n\n.menuItem {\n display: block;\n width: 100%;\n text-align: left;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-default-rest);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &[data-highlighted] {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 3);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-medium);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Menu } from \"@base-ui/react/menu\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { SearchBar } from \"../search-bar/SearchBar.js\";\nimport styles from \"./SearchableMenu.module.css\";\nfunction SearchableMenuInner({\n items,\n onItemSelected,\n trigger,\n triggerClassName,\n disabled,\n searchPlaceholder = \"Search\",\n emptyMessage = \"No matching items\",\n className\n}) {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const filteredItems = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n if (!query) return items;\n return items.filter(item => item.label.toLowerCase().includes(query));\n }, [items, searchQuery]);\n const handleSearchChange = useCallback(event => {\n setSearchQuery(event.target.value);\n }, []);\n const handleMenuOpenChange = useCallback(open => {\n if (open) {\n setSearchQuery(\"\");\n }\n }, []);\n const handleKeyDown = useCallback(event => {\n event.stopPropagation();\n }, []);\n return /*#__PURE__*/React.createElement(Menu.Root, {\n onOpenChange: handleMenuOpenChange\n }, /*#__PURE__*/React.createElement(Menu.Trigger, {\n className: triggerClassName,\n disabled: disabled\n }, trigger), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {\n className: classnames(styles.positioner, className),\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.popup\n }, /*#__PURE__*/React.createElement(SearchBar, {\n value: searchQuery,\n onChange: handleSearchChange,\n placeholder: searchPlaceholder,\n \"aria-label\": searchPlaceholder,\n className: styles.searchContainer,\n onKeyDown: handleKeyDown\n }), filteredItems.map(item => /*#__PURE__*/React.createElement(SearchableMenuItemRow, {\n key: item.key,\n item: item,\n onItemSelected: onItemSelected\n })), filteredItems.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, emptyMessage)))));\n}\nexport const SearchableMenu = /*#__PURE__*/memo(SearchableMenuInner);\nfunction SearchableMenuItemRowInner({\n item,\n onItemSelected\n}) {\n const handleClick = useCallback(() => onItemSelected(item.key), [onItemSelected, item.key]);\n return /*#__PURE__*/React.createElement(Menu.Item, {\n className: styles.menuItem,\n onClick: handleClick\n }, item.label);\n}\nconst SearchableMenuItemRow = /*#__PURE__*/memo(SearchableMenuItemRowInner);","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--osdk-filter-header-font-family);\n font-size: var(--osdk-filter-header-reset-font-size);\n color: var(--osdk-typography-color-default-rest);\n background: var(--osdk-filter-header-button-bg);\n border: var(--osdk-filter-list-addButton-border);\n cursor: pointer;\n padding: var(--osdk-filter-header-reset-padding);\n min-height: var(--osdk-filter-list-addButton-height);\n border-radius: var(--osdk-filter-header-button-border-radius);\n transition: background-color var(--osdk-filter-header-button-transition);\n width: 100%;\n\n &:hover {\n background: var(--osdk-filter-header-button-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-header-button-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { SearchableMenu } from \"../../base-components/searchable-menu/SearchableMenu.js\";\nimport styles from \"./AddFilterPopover.module.css\";\nfunction AddFilterPopoverInner({\n hiddenDefinitions,\n onShowFilter,\n renderTrigger\n}) {\n return /*#__PURE__*/React.createElement(SearchableMenu, {\n items: hiddenDefinitions,\n onItemSelected: onShowFilter,\n trigger: renderTrigger != null ? renderTrigger() : \"+ Add filter\",\n triggerClassName: renderTrigger == null ? styles.trigger : undefined,\n searchPlaceholder: \"Search filters\",\n emptyMessage: \"No matching filters\"\n });\n}\nexport const AddFilterPopover = /*#__PURE__*/memo(AddFilterPopoverInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.textInput {\n position: relative;\n}\n\n.inputGroup {\n display: flex;\n align-items: center;\n background: var(--osdk-filter-input-bg);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n padding: var(--osdk-filter-input-padding);\n gap: var(--osdk-filter-input-gap);\n transition: border-color var(--osdk-filter-input-transition);\n\n &:focus-within {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n\n.searchIcon {\n color: var(--osdk-filter-input-icon-color);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.input {\n flex: 1;\n border: none;\n background: transparent;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-input-font-size);\n color: var(--osdk-filter-input-color);\n outline: none;\n\n &::placeholder {\n color: var(--osdk-filter-input-placeholder-color);\n }\n}\n\n.clearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-input-clear-padding);\n border: none;\n background: var(--osdk-filter-input-clear-bg);\n color: var(--osdk-filter-input-icon-color);\n cursor: pointer;\n border-radius: var(--osdk-filter-input-clear-border-radius);\n transition: background-color var(--osdk-filter-input-transition);\n\n &:hover {\n background: var(--osdk-filter-input-clear-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-input-clear-bg-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport { Cross, Search } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport { debounce } from \"lodash-es\";\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport styles from \"./ContainsTextInput.module.css\";\nfunction ContainsTextInputInner({\n value,\n onChange,\n placeholder = \"Search...\",\n debounceMs = 300,\n className,\n style,\n renderSearchIcon,\n renderClearIcon\n}) {\n const [localValue, setLocalValue] = useState(value ?? \"\");\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const debouncedOnChange = useMemo(() => debounce(newValue => {\n onChangeRef.current(newValue.length > 0 ? newValue : undefined);\n }, debounceMs), [debounceMs]);\n useEffect(() => {\n return () => {\n debouncedOnChange.cancel();\n };\n }, [debouncedOnChange]);\n useEffect(() => {\n setLocalValue(value ?? \"\");\n debouncedOnChange.cancel();\n }, [value, debouncedOnChange]);\n const handleInputChange = useCallback(e => {\n setLocalValue(e.target.value);\n debouncedOnChange(e.target.value);\n }, [debouncedOnChange]);\n const handleClear = useCallback(() => {\n setLocalValue(\"\");\n debouncedOnChange.cancel();\n onChangeRef.current(undefined);\n }, [debouncedOnChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.textInput, className),\n style: style,\n \"data-has-value\": !!localValue\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.inputGroup\n }, renderSearchIcon ? renderSearchIcon() : /*#__PURE__*/React.createElement(\"span\", {\n className: styles.searchIcon\n }, /*#__PURE__*/React.createElement(Search, null)), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n className: styles.input,\n value: localValue,\n onChange: handleInputChange,\n placeholder: placeholder,\n \"aria-label\": placeholder\n }), localValue && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.clearButton,\n onClick: handleClear,\n \"aria-label\": \"Clear search\"\n }, renderClearIcon ? renderClearIcon() : /*#__PURE__*/React.createElement(Cross, null))));\n}\nexport const ContainsTextInput = /*#__PURE__*/memo(ContainsTextInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkSwitchRoot {\n --osdk-switch-track-width: var(--osdk-switch-track-width-override, 28px);\n --osdk-switch-track-height: var(--osdk-switch-track-height-override, 16px);\n --osdk-switch-thumb-size: var(--osdk-switch-thumb-size-override, 12px);\n --osdk-switch-thumb-offset: var(--osdk-switch-thumb-offset-override, 2px);\n\n display: inline-flex;\n align-items: center;\n width: var(--osdk-switch-track-width);\n height: var(--osdk-switch-track-height);\n padding: 0;\n cursor: pointer;\n border-radius: var(--osdk-switch-border-radius, var(--osdk-surface-border-radius));\n position: relative;\n border: none;\n transition: background-color var(--osdk-switch-transition-duration, var(--osdk-emphasis-transition-duration))\n var(--osdk-switch-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-unchecked] {\n background-color: var(--osdk-switch-track-bg, var(--osdk-intent-default-rest));\n\n &:hover {\n background-color: var(--osdk-switch-track-bg-hover, var(--osdk-intent-default-hover));\n }\n\n &:active {\n background-color: var(--osdk-switch-track-bg-active, var(--osdk-intent-default-active));\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-switch-track-bg-checked, var(--osdk-intent-primary-rest));\n\n &:hover {\n background-color: var(--osdk-switch-track-bg-checked-hover, var(--osdk-intent-primary-hover));\n }\n\n &:active {\n background-color: var(--osdk-switch-track-bg-checked-active, var(--osdk-intent-primary-active));\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &:focus-visible {\n outline: var(--osdk-switch-focus-width, var(--osdk-emphasis-focus-width)) solid\n var(--osdk-switch-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(--osdk-switch-focus-offset, var(--osdk-emphasis-focus-offset));\n }\n}\n\n.osdkSwitchThumb {\n display: block;\n width: var(--osdk-switch-thumb-size);\n height: var(--osdk-switch-thumb-size);\n background-color: var(--osdk-switch-thumb-bg, var(--osdk-palette-white));\n border-radius: 50%;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n transition: left var(--osdk-switch-transition-duration, var(--osdk-emphasis-transition-duration))\n var(--osdk-switch-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-unchecked] {\n left: var(--osdk-switch-thumb-offset);\n }\n\n &[data-checked] {\n left: calc(var(--osdk-switch-track-width) - var(--osdk-switch-thumb-size) - var(--osdk-switch-thumb-offset));\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Switch as BaseUISwitch } from \"@base-ui/react/switch\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Switch.module.css\";\nexport function Switch({\n className,\n thumbProps,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISwitch.Root, _extends({\n className: classnames(styles.osdkSwitchRoot, className)\n }, rest), /*#__PURE__*/React.createElement(BaseUISwitch.Thumb, _extends({}, thumbProps, {\n className: classnames(styles.osdkSwitchThumb, thumbProps?.className)\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.toggleInput {\n display: flex;\n align-items: center;\n}\n\n.toggleLabel {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-toggle-label-gap);\n cursor: pointer;\n}\n\n.labelText {\n font-family: var(--osdk-filter-toggle-label-font-family);\n font-size: var(--osdk-filter-toggle-label-font-size);\n line-height: var(--osdk-filter-toggle-label-line-height);\n color: var(--osdk-filter-toggle-label-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo } from \"react\";\nimport { Switch } from \"../../../base-components/switch/Switch.js\";\nimport styles from \"./ToggleInput.module.css\";\nfunction ToggleInputInner({\n enabled,\n onChange,\n label,\n className,\n style\n}) {\n const rootClassName = classnames(styles.toggleInput, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName,\n style: style,\n \"data-enabled\": enabled\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.toggleLabel\n }, /*#__PURE__*/React.createElement(Switch, {\n checked: enabled,\n onCheckedChange: onChange\n }), label && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.labelText\n }, label)));\n}\nexport const ToggleInput = /*#__PURE__*/memo(ToggleInputInner);","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Exhaustive type checking helper.\n * Use in default cases of switch statements to ensure all cases are handled.\n * TypeScript will error if a case is missing.\n */\nexport function assertUnreachable(value) {\n throw new Error(`Unhandled value: ${String(value)}`);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Date utilities for HTML date inputs.\n *\n * These functions operate on local time by design. HTML <input type=\"date\">\n * returns and expects values in \"YYYY-MM-DD\" format without timezone info.\n *\n * `parseDateFromInput` appends \"T00:00:00\" (no \"Z\") so the date is parsed as\n * local midnight rather than UTC midnight. Without this, negative-offset\n * timezones (e.g. US timezones) would shift \"2024-01-15\" to Jan 14 locally.\n *\n * Consumers providing dates from an API (typically UTC) should handle\n * UTC-to-local conversion before passing values to these functions.\n */\n\nexport function formatDateForInput(date) {\n if (date == null) return \"\";\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\n/** Formats the time portion of a Date as \"HH:mm\". */\nexport function formatTime(date) {\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n}\nexport function parseDateFromInput(value) {\n if (!value) return undefined;\n const date = new Date(value + \"T00:00:00\");\n return isNaN(date.getTime()) ? undefined : date;\n}\nexport function formatDatetimeForInput(date) {\n if (date == null) return \"\";\n return `${formatDateForInput(date)}T${formatTime(date)}`;\n}\n\n/**\n * Parses a datetime-local input string (e.g. \"2024-01-15T14:30\") into a Date.\n * Delegates to `parseDateFromISO` since the parsing logic is identical for\n * string inputs — datetime-local strings already include the time component\n * and have no \"Z\" suffix, so `new Date()` parses them as local time.\n */\nexport function parseDatetimeFromInput(value) {\n if (!value) return undefined;\n return parseDateFromISO(value);\n}\nexport function formatDateForDisplay(date, fallback = \"\") {\n if (date == null) return fallback;\n return date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\"\n });\n}\n\n/** Formats a Date as \"2024-06-15 14:30\" — space-separated, more readable than T. */\nexport function formatDatetimeForDisplay(date) {\n if (date == null) return \"\";\n return `${formatDateForInput(date)} ${formatTime(date)}`;\n}\n\n/** Parses space-separated (\"2024-06-15 14:30\") or T-separated datetime strings. */\nexport function parseDatetimeFromDisplay(value) {\n if (!value) return undefined;\n const normalized = value.includes(\"T\") ? value : value.replace(\" \", \"T\");\n const date = new Date(normalized);\n return isNaN(date.getTime()) ? undefined : date;\n}\nexport function parseDateFromISO(value) {\n if (value == null) return undefined;\n if (value instanceof Date) return value;\n const date = new Date(value);\n return isNaN(date.getTime()) ? undefined : date;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const HISTOGRAM_BUCKETS = 20;\nexport function createHistogramBuckets(pairs, range, toNumber, fromNumber) {\n if (pairs.length === 0) return [];\n const minNum = toNumber(range.min);\n const maxNum = toNumber(range.max);\n const rangeSize = maxNum - minNum;\n\n // Handle single-value case\n if (rangeSize === 0) {\n const totalCount = pairs.reduce((sum, p) => sum + p.count, 0);\n return [{\n min: range.min,\n max: range.max,\n count: totalCount\n }];\n }\n\n // Create buckets\n const bucketSize = rangeSize / HISTOGRAM_BUCKETS;\n const bucketCounts = new Array(HISTOGRAM_BUCKETS).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const bucketIndex = Math.min(Math.floor((toNumber(value) - minNum) / bucketSize), HISTOGRAM_BUCKETS - 1);\n bucketCounts[bucketIndex] += count;\n }\n return bucketCounts.map((count, i) => ({\n min: fromNumber(minNum + i * bucketSize),\n max: fromNumber(minNum + (i + 1) * bucketSize),\n count\n }));\n}\nexport function getMaxBucketCount(buckets) {\n return Math.max(...buckets.map(b => b.count), 1);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.rangeInput {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-range-gap);\n min-width: 0;\n transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.rangeInput[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n.histogramContainer {\n display: flex;\n align-items: flex-end;\n height: var(--osdk-filter-range-histogram-height);\n gap: var(--osdk-filter-range-histogram-bar-gap);\n padding-bottom: var(--osdk-filter-range-histogram-padding-bottom);\n padding-inline: var(--osdk-filter-range-histogram-padding-inline);\n overflow: hidden;\n}\n\n.histogramBar {\n flex: 1;\n background: var(--osdk-filter-range-histogram-bar-color);\n min-width: var(--osdk-filter-range-histogram-bar-min-width);\n transition: background-color var(--osdk-filter-range-histogram-bar-transition);\n}\n\n.histogramBar[data-in-range=\"true\"] {\n background: var(--osdk-filter-range-histogram-bar-active-color);\n}\n\n.rangeInputs {\n display: flex;\n align-items: flex-end;\n gap: var(--osdk-filter-range-inputs-gap);\n min-width: 0;\n}\n\n.inputWrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-range-input-wrapper-gap);\n min-width: 0;\n}\n\n.inputLabel {\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-label-font-size);\n color: var(--osdk-filter-range-label-color);\n}\n\n.input {\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n min-width: 0;\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n &::placeholder {\n color: var(--osdk-filter-input-placeholder-color);\n }\n}\n\n.separator {\n display: flex;\n align-items: center;\n height: calc(\n var(--osdk-filter-input-font-size) + var(--osdk-filter-input-padding) * 2\n );\n color: var(--osdk-filter-range-separator-color);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .histogramContainer,\n .rangeInput {\n transition: none;\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Shared message styles for filter inputs */\n.loadingMessage,\n.errorMessage,\n.emptyMessage {\n font-family: var(--osdk-filter-message-font-family);\n font-size: var(--osdk-filter-message-font-size);\n padding: var(--osdk-filter-message-padding);\n}\n\n.loadingMessage,\n.emptyMessage {\n color: var(--osdk-filter-message-color-muted);\n}\n\n.errorMessage {\n color: var(--osdk-filter-message-color-danger);\n}\n\n/* Shared tag styles */\n.tagContainer {\n display: flex;\n flex-wrap: wrap;\n gap: var(--osdk-filter-tag-container-gap);\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-filter-tag-gap);\n padding: var(--osdk-filter-tag-padding);\n border-radius: var(--osdk-filter-tag-border-radius);\n background-color: var(--osdk-filter-tag-bg);\n font-family: var(--osdk-filter-tag-font-family);\n font-size: var(--osdk-filter-tag-font-size);\n line-height: var(--osdk-filter-tag-line-height);\n color: var(--osdk-filter-tag-color);\n}\n\n.tagRemove {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-tag-remove-color);\n font-size: var(--osdk-filter-tag-remove-font-size);\n line-height: 1;\n transition: color var(--osdk-filter-tag-remove-transition);\n\n &:hover {\n color: var(--osdk-filter-tag-remove-color-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useRef } from \"react\";\n\n// Preserves the last non-loading data value so filter inputs don't flash\n// blank during revalidation. @osdk/react hooks don't provide stale-while-\n// revalidate behavior natively, so this bridges the gap at the UI layer.\nexport function useStableData(data, isLoading) {\n const ref = useRef(data);\n if (!isLoading) {\n ref.current = data;\n }\n return ref.current;\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport { debounce } from \"lodash-es\";\nimport React, { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { createHistogramBuckets, getMaxBucketCount } from \"./createHistogramBuckets.js\";\nimport styles from \"./RangeInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\nconst DEBOUNCE_MS = 300;\nfunction RangeInputInner({\n valueCountPairs,\n isLoading,\n minValue,\n maxValue,\n onChange,\n showHistogram = true,\n className,\n style,\n config\n}) {\n const minInputId = useId();\n const maxInputId = useId();\n const [localMin, setLocalMin] = useState(config.formatValue(minValue));\n const [localMax, setLocalMax] = useState(config.formatValue(maxValue));\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const minValueRef = useRef(minValue);\n minValueRef.current = minValue;\n const maxValueRef = useRef(maxValue);\n maxValueRef.current = maxValue;\n const debouncedMinChange = useMemo(() => debounce(newValue => {\n const parsed = config.parseValue(newValue);\n onChangeRef.current(parsed, maxValueRef.current);\n }, DEBOUNCE_MS), [config]);\n const debouncedMaxChange = useMemo(() => debounce(newValue => {\n const parsed = config.parseValue(newValue);\n onChangeRef.current(minValueRef.current, parsed);\n }, DEBOUNCE_MS), [config]);\n useEffect(() => {\n setLocalMin(config.formatValue(minValue));\n debouncedMinChange.cancel();\n }, [minValue, config, debouncedMinChange]);\n useEffect(() => {\n setLocalMax(config.formatValue(maxValue));\n debouncedMaxChange.cancel();\n }, [maxValue, config, debouncedMaxChange]);\n useEffect(() => {\n return () => {\n debouncedMinChange.cancel();\n debouncedMaxChange.cancel();\n };\n }, [debouncedMinChange, debouncedMaxChange]);\n const displayPairs = useStableData(valueCountPairs, isLoading);\n const computedRange = useMemo(() => {\n if (displayPairs.length === 0) return {\n min: undefined,\n max: undefined\n };\n const min = displayPairs.reduce((acc, p) => Math.min(acc, config.toNumber(p.value)), Infinity);\n const max = displayPairs.reduce((acc, p) => Math.max(acc, config.toNumber(p.value)), -Infinity);\n return {\n min: config.fromNumber(min),\n max: config.fromNumber(max)\n };\n }, [displayPairs, config]);\n const dataRange = useMemo(() => ({\n dataMin: computedRange.min,\n dataMax: computedRange.max\n }), [computedRange.min, computedRange.max]);\n const buckets = useMemo(() => {\n if (!showHistogram || displayPairs.length === 0 || computedRange.min === undefined || computedRange.max === undefined) {\n return [];\n }\n return createHistogramBuckets(displayPairs, {\n min: computedRange.min,\n max: computedRange.max\n }, config.toNumber, config.fromNumber);\n }, [showHistogram, displayPairs, computedRange, config]);\n const maxBucketCount = useMemo(() => getMaxBucketCount(buckets), [buckets]);\n const handleMinChange = useCallback(e => {\n const newValue = e.target.value;\n setLocalMin(newValue);\n debouncedMinChange(newValue);\n }, [debouncedMinChange]);\n const handleMaxChange = useCallback(e => {\n const newValue = e.target.value;\n setLocalMax(newValue);\n debouncedMaxChange(newValue);\n }, [debouncedMaxChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.rangeInput, className),\n style: style,\n \"data-loading\": isLoading\n }, showHistogram && buckets.length === 0 && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No values available\"), showHistogram && buckets.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.histogramContainer\n }, buckets.map((bucket, index) => {\n const height = bucket.count / maxBucketCount * 100;\n const isInRange = (minValue === undefined || config.toNumber(bucket.max) >= config.toNumber(minValue)) && (maxValue === undefined || config.toNumber(bucket.min) <= config.toNumber(maxValue));\n return /*#__PURE__*/React.createElement(\"div\", {\n key: index,\n className: styles.histogramBar,\n \"data-in-range\": isInRange,\n style: {\n height: `${Math.max(height, 2)}%`\n },\n title: config.formatTooltip(bucket.min, bucket.max, bucket.count)\n });\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.rangeInputs\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.inputWrapper\n }, /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: minInputId,\n className: styles.inputLabel\n }, config.minLabel), /*#__PURE__*/React.createElement(Input, _extends({\n id: minInputId,\n type: config.inputType,\n className: styles.input,\n value: localMin,\n onChange: handleMinChange,\n placeholder: dataRange.dataMin !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMin) : undefined\n }, config.inputProps))), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.separator,\n \"aria-hidden\": \"true\"\n }, \"\\u2013\"), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.inputWrapper\n }, /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: maxInputId,\n className: styles.inputLabel\n }, config.maxLabel), /*#__PURE__*/React.createElement(Input, _extends({\n id: maxInputId,\n type: config.inputType,\n className: styles.input,\n value: localMax,\n onChange: handleMaxChange,\n placeholder: dataRange.dataMax !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMax) : undefined\n }, config.inputProps)))));\n}\nexport const RangeInput = /*#__PURE__*/memo(RangeInputInner);","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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, { memo } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport { RangeInput } from \"./RangeInput.js\";\nconst dateConfig = {\n inputType: \"date\",\n formatValue: formatDateForInput,\n parseValue: parseDateFromInput,\n toNumber: d => d.getTime(),\n fromNumber: t => new Date(t),\n minLabel: \"From\",\n maxLabel: \"To\",\n formatTooltip: (min, max, count) => `${formatDateForInput(min)} - ${formatDateForInput(max)}: ${count.toLocaleString()}`\n};\nfunction DateRangeInputInner(props) {\n return /*#__PURE__*/React.createElement(RangeInput, _extends({}, props, {\n config: dateConfig\n }));\n}\nexport const DateRangeInput = /*#__PURE__*/memo(DateRangeInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.linkedProperty {\n display: flex;\n flex-direction: column;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCheckboxRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n height: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n flex-shrink: 0;\n padding: var(--osdk-checkbox-padding);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-checkbox-border);\n\n &[data-unchecked] {\n background-color: var(--osdk-checkbox-bg);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-active);\n }\n }\n\n &[data-checked],\n &[data-indeterminate] {\n background-color: var(--osdk-checkbox-bg-checked);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-checked-active);\n }\n }\n\n &[data-excluding][data-checked] {\n background-color: var(--osdk-checkbox-bg-checked);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-checked-active);\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkCheckboxIndicator {\n color: var(--osdk-checkbox-checked-foreground);\n width: var(--osdk-checkbox-icon-size);\n height: var(--osdk-checkbox-icon-size);\n\n &[data-unchecked] {\n display: none;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Checkbox as BaseUICheckbox } from \"@base-ui/react/checkbox\";\nimport { Cross, Minus, Tick } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Checkbox.module.css\";\nexport function Checkbox({\n indeterminate,\n className,\n isExcluding,\n indicatorProps,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICheckbox.Root, _extends({\n className: classnames(styles.osdkCheckboxRoot, className),\n indeterminate: indeterminate,\n \"data-excluding\": isExcluding || undefined\n }, rest), /*#__PURE__*/React.createElement(BaseUICheckbox.Indicator, _extends({}, indicatorProps, {\n className: classnames(styles.osdkCheckboxIndicator, indicatorProps?.className)\n }), indeterminate ? /*#__PURE__*/React.createElement(Minus, {\n size: 16\n }) : isExcluding ? /*#__PURE__*/React.createElement(Cross, {\n size: 16\n }) : /*#__PURE__*/React.createElement(Tick, {\n size: 16\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.listogram {\n display: flex;\n flex-direction: column;\n transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.listogram[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .listogram {\n transition: none;\n }\n}\n\n.container {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-listogram-gap);\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-listogram-row-gap);\n padding: var(--osdk-filter-listogram-row-padding);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-filter-listogram-row-border-radius);\n text-align: left;\n width: 100%;\n transition: background-color var(--osdk-filter-listogram-row-transition);\n\n &:hover {\n background: var(--osdk-filter-listogram-row-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-listogram-row-focus-outline);\n outline-offset: var(--osdk-filter-listogram-row-focus-offset);\n }\n}\n\n.row[aria-pressed=\"true\"] {\n background: var(--osdk-filter-listogram-row-bg-active);\n}\n\n.label {\n flex: 1;\n font-family: var(--osdk-filter-listogram-label-font-family);\n font-size: var(--osdk-filter-listogram-label-font-size);\n color: var(--osdk-filter-listogram-label-color);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.label[data-excluding] {\n text-decoration: line-through;\n}\n\n.bar {\n width: var(--osdk-filter-listogram-bar-width);\n flex-shrink: 0;\n height: var(--osdk-filter-listogram-bar-height);\n background: var(--osdk-filter-listogram-bar-bg);\n border-radius: var(--osdk-filter-listogram-bar-border-radius);\n overflow: hidden;\n}\n\n.barFill {\n display: block;\n height: 100%;\n width: 100%;\n background: var(--osdk-filter-listogram-row-bar-color, var(--osdk-filter-listogram-bar-color));\n border-radius: var(--osdk-filter-listogram-bar-border-radius);\n transform-origin: left;\n transform: scaleX(var(--osdk-filter-listogram-bar-fill-scale, 0));\n transition: transform var(--osdk-filter-listogram-bar-fill-transition);\n}\n\n.row[aria-pressed=\"true\"] .barFill {\n background: var(--osdk-filter-listogram-row-bar-color, var(--osdk-filter-listogram-selected-color));\n}\n\n.viewAllButton {\n display: flex;\n align-items: center;\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: var(--osdk-filter-listogram-label-font-family);\n font-size: var(--osdk-filter-listogram-view-all-font-size);\n color: var(--osdk-filter-listogram-view-all-color);\n padding: var(--osdk-filter-listogram-row-padding);\n text-align: left;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-listogram-row-focus-outline);\n outline-offset: var(--osdk-filter-listogram-row-focus-offset);\n }\n}\n\n.checkbox {\n display: flex;\n}\n\n.count {\n font-family: var(--osdk-filter-listogram-count-font-family);\n font-size: var(--osdk-filter-listogram-count-font-size);\n font-variant-numeric: tabular-nums;\n color: var(--osdk-filter-listogram-count-color);\n min-width: 3ch;\n text-align: right;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.container {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-listogram-gap);\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-listogram-row-gap);\n padding: var(--osdk-filter-listogram-row-padding);\n}\n\n.flexBar {\n flex: 1;\n}\n","/*\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 { SkeletonBar } from \"../../../base-components/skeleton/SkeletonBar.js\";\nimport styles from \"./ListogramSkeleton.module.css\";\nconst SKELETON_ROWS = [{\n textWidth: \"50%\"\n}, {\n textWidth: \"35%\"\n}, {\n textWidth: \"60%\"\n}];\nexport function ListogramSkeleton() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, SKELETON_ROWS.map((row, index) => /*#__PURE__*/React.createElement(\"div\", {\n key: index,\n className: styles.row\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n height: \"var(--osdk-filter-skeleton-text-height)\",\n maxWidth: row.textWidth,\n className: styles.flexBar\n }), /*#__PURE__*/React.createElement(SkeletonBar, {\n width: \"var(--osdk-filter-listogram-bar-width)\",\n height: \"var(--osdk-filter-listogram-bar-height)\"\n }), /*#__PURE__*/React.createElement(SkeletonBar, {\n width: \"var(--osdk-filter-skeleton-count-width)\",\n height: \"var(--osdk-filter-skeleton-text-height)\"\n }))));\n}","/*\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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport { filterValuesBySearch } from \"../../utils/filterValues.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport { ListogramSkeleton } from \"./ListogramSkeleton.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\nfunction ListogramInputInner({\n values,\n maxCount,\n isLoading,\n error,\n selectedValues,\n onChange,\n colorMap,\n displayMode = \"full\",\n isExcluding,\n className,\n style,\n maxVisibleItems,\n searchQuery\n}) {\n const [isExpanded, setIsExpanded] = useState(false);\n const stableValues = useStableData(values, isLoading);\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n const toggleValue = useCallback(value => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter(v => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n }, [selectedValues, selectedSet, onChange]);\n const filteredValues = useMemo(() => {\n if (searchQuery) {\n return filterValuesBySearch(stableValues, searchQuery, v => v.value);\n }\n return stableValues;\n }, [stableValues, searchQuery]);\n const sortedValues = useMemo(() => {\n const selected = filteredValues.filter(v => selectedSet.has(v.value));\n const unselected = filteredValues.filter(v => !selectedSet.has(v.value));\n return [...selected, ...unselected];\n }, [filteredValues, selectedSet]);\n const displayValues = useMemo(() => {\n if (isExpanded || !maxVisibleItems) return sortedValues;\n return sortedValues.slice(0, maxVisibleItems);\n }, [sortedValues, maxVisibleItems, isExpanded]);\n const hasMore = maxVisibleItems != null && sortedValues.length > maxVisibleItems;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.listogram, className),\n style: style,\n \"data-loading\": isLoading && filteredValues.length > 0\n }, error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading values: \", error.message), !error && filteredValues.length === 0 && isLoading && /*#__PURE__*/React.createElement(ListogramSkeleton, null), !error && filteredValues.length === 0 && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No values available\"), filteredValues.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, displayValues.map(({\n value,\n count\n }) => {\n const percentage = maxCount > 0 ? count / maxCount * 100 : 0;\n const perRowColor = colorMap?.[value];\n return /*#__PURE__*/React.createElement(Button, {\n key: value,\n className: styles.row,\n onClick: () => toggleValue(value),\n \"aria-pressed\": selectedSet.has(value),\n style: perRowColor || percentage > 0 ? {\n \"--osdk-filter-listogram-bar-fill-scale\": percentage / 100,\n ...(perRowColor ? {\n \"--osdk-filter-listogram-row-bar-color\": perRowColor\n } : undefined)\n } : undefined\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.checkbox,\n onClick: e => e.stopPropagation()\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: selectedSet.has(value),\n onCheckedChange: () => toggleValue(value),\n isExcluding: isExcluding\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.label,\n \"data-excluding\": isExcluding && selectedSet.has(value) || undefined\n }, value), displayMode !== \"minimal\" && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count\n }, count.toLocaleString()), displayMode === \"full\" && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.bar\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.barFill\n })));\n }), hasMore && !isExpanded && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.viewAllButton,\n onClick: () => setIsExpanded(true)\n }, \"View all (\", sortedValues.length, \")\")));\n}\nexport const ListogramInput = /*#__PURE__*/memo(ListogramInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.multiDate {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-multiselect-gap);\n}\n\n.clearAll {\n font-family: var(--osdk-filter-date-clear-font-family);\n font-size: var(--osdk-filter-date-clear-font-size);\n color: var(--osdk-filter-date-clear-color);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: var(--osdk-filter-date-clear-padding);\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.calendarContainer {\n display: flex;\n}\n\n.input {\n flex: 1;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-timeline-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport styles from \"./MultiDateInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nfunction MultiDateInputInner({\n selectedDates,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n showClearAll = true\n}) {\n const addDate = useCallback(date => {\n const dateStr = formatDateForInput(date);\n const exists = selectedDates.some(d => formatDateForInput(d) === dateStr);\n if (!exists) {\n onChange([...selectedDates, date].sort((a, b) => a.getTime() - b.getTime()));\n }\n }, [selectedDates, onChange]);\n const removeDate = useCallback(date => {\n const dateStr = formatDateForInput(date);\n onChange(selectedDates.filter(d => formatDateForInput(d) !== dateStr));\n }, [selectedDates, onChange]);\n const clearAll = useCallback(() => {\n onChange([]);\n }, [onChange]);\n const handleDateChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n if (date) {\n addDate(date);\n e.target.value = \"\";\n }\n }, [addDate]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.multiDate, className),\n style: style\n }, selectedDates.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.tagContainer\n }, selectedDates.map(date => /*#__PURE__*/React.createElement(\"span\", {\n key: date.toISOString(),\n className: sharedStyles.tag\n }, formatDateForDisplay(date), /*#__PURE__*/React.createElement(Button, {\n className: sharedStyles.tagRemove,\n onClick: () => removeDate(date),\n \"aria-label\": `Remove ${formatDateForDisplay(date)}`\n }, \"\\xD7\"))), showClearAll && selectedDates.length > 1 && /*#__PURE__*/React.createElement(Button, {\n className: styles.clearAll,\n onClick: clearAll,\n \"aria-label\": \"Clear all dates\"\n }, \"Clear all\")), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarContainer\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n onChange: handleDateChange,\n min: minDate ? formatDateForInput(minDate) : undefined,\n max: maxDate ? formatDateForInput(maxDate) : undefined,\n \"aria-label\": \"Add date\"\n })));\n}\nexport const MultiDateInput = /*#__PURE__*/memo(MultiDateInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkComboboxInputWrapper {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--osdk-combobox-spacing, var(--osdk-surface-spacing));\n width: 100%;\n min-height: var(--osdk-combobox-min-height, 30px);\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-combobox-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-combobox-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-combobox-input-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n transition: border-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:focus-within {\n border-color: var(\n --osdk-combobox-focus-border-color,\n var(--osdk-intent-primary-rest)\n );\n outline: var(--osdk-combobox-focus-width, var(--osdk-emphasis-focus-width))\n solid var(--osdk-combobox-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(\n --osdk-combobox-focus-offset,\n var(--osdk-emphasis-focus-offset)\n );\n }\n}\n\n.osdkComboboxSearchIcon {\n flex-shrink: 0;\n color: var(--osdk-combobox-icon-color, var(--osdk-iconography-color-muted));\n}\n\n.osdkComboboxInput {\n flex: 1;\n min-width: 0;\n width: 100%;\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-combobox-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-combobox-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-combobox-input-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n transition: border-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:focus {\n border-color: var(\n --osdk-combobox-focus-border-color,\n var(--osdk-intent-primary-rest)\n );\n outline: none;\n }\n\n .osdkComboboxInputWrapper & {\n padding: 0;\n border: none;\n border-radius: 0;\n background: transparent;\n\n &:focus {\n border-color: unset;\n outline: none;\n outline-offset: unset;\n }\n }\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-combobox-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-combobox-input-color,\n var(--osdk-typography-color-default-rest)\n );\n outline: none;\n\n &::placeholder {\n color: var(\n --osdk-combobox-placeholder-color,\n var(--osdk-typography-color-muted)\n );\n }\n}\n\n.osdkComboboxPositioner {\n z-index: var(--osdk-combobox-z-index, var(--osdk-surface-z-index-3));\n}\n\n.osdkComboboxPopup {\n display: flex;\n flex-direction: column;\n min-width: var(--anchor-width);\n max-height: var(--available-height);\n overflow-y: auto;\n padding: calc(\n var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5\n );\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-combobox-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-combobox-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-combobox-popup-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n box-shadow: var(--osdk-combobox-popup-shadow, var(--osdk-surface-shadow-2));\n}\n\n.osdkComboboxItem {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5);\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n cursor: pointer;\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-combobox-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-combobox-item-color,\n var(--osdk-typography-color-default-rest)\n );\n transition: background-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-highlighted] {\n background-color: var(\n --osdk-combobox-item-bg-highlighted,\n var(--osdk-surface-background-color-default-hover)\n );\n outline: none;\n }\n\n &[data-selected] {\n background-color: var(\n --osdk-combobox-item-bg-selected,\n var(--osdk-surface-layer-primary)\n );\n color: var(\n --osdk-combobox-item-color-selected,\n var(--osdk-intent-primary-rest)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n}\n\n.osdkComboboxItemIndicator {\n display: flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 4);\n flex-shrink: 0;\n color: var(--osdk-combobox-item-color-selected, var(--osdk-intent-primary-rest));\n visibility: hidden;\n\n &[data-selected] {\n visibility: visible;\n }\n}\n\n.osdkComboboxChips {\n display: flex;\n flex-wrap: wrap;\n gap: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5);\n margin-bottom: calc(\n var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2\n );\n}\n\n.osdkComboboxChip {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-combobox-spacing, var(--osdk-surface-spacing));\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 0.5)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 1.5);\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n background-color: var(\n --osdk-combobox-chip-bg,\n var(--osdk-surface-background-color-default-hover)\n );\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-chip-font-size,\n var(--osdk-typography-size-body-small)\n );\n line-height: var(\n --osdk-combobox-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-combobox-chip-color,\n var(--osdk-typography-color-default-rest)\n );\n}\n\n.osdkComboboxChipRemove {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(\n --osdk-combobox-chip-remove-color,\n var(--osdk-iconography-color-muted)\n );\n transition: color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n color: var(\n --osdk-combobox-chip-remove-color-hover,\n var(--osdk-typography-color-default-rest)\n );\n }\n}\n\n.osdkComboboxClear {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: calc(\n var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 0.5\n );\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-combobox-clear-color, var(--osdk-iconography-color-muted));\n border-radius: var(\n --osdk-combobox-border-radius,\n var(--osdk-surface-border-radius)\n );\n transition:\n color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default)),\n background-color\n var(\n --osdk-combobox-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-combobox-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n color: var(\n --osdk-combobox-clear-color-hover,\n var(--osdk-typography-color-default-rest)\n );\n background-color: var(\n --osdk-combobox-clear-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n }\n}\n\n.osdkComboboxList {\n display: flex;\n flex-direction: column;\n}\n\n.osdkComboboxEmpty {\n padding: calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 3)\n calc(var(--osdk-combobox-spacing, var(--osdk-surface-spacing)) * 2);\n text-align: center;\n color: var(--osdk-combobox-empty-color, var(--osdk-typography-color-muted));\n font-family: var(\n --osdk-combobox-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-combobox-font-size,\n var(--osdk-typography-size-body-medium)\n );\n\n &:empty {\n display: none;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Combobox as BaseUICombobox } from \"@base-ui/react/combobox\";\nimport { Cross, Search, Tick } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Combobox.module.css\";\nfunction ComboboxSearchInput({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkComboboxInputWrapper, className)\n }, /*#__PURE__*/React.createElement(Search, {\n className: styles.osdkComboboxSearchIcon\n }), /*#__PURE__*/React.createElement(BaseUICombobox.Input, _extends({\n className: styles.osdkComboboxInput\n }, rest)));\n}\nfunction ComboboxInput({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Input, _extends({\n className: classnames(styles.osdkComboboxInput, className)\n }, rest));\n}\nfunction ComboboxPositioner({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Positioner, _extends({\n className: classnames(styles.osdkComboboxPositioner, className),\n sideOffset: 4\n }, rest), children);\n}\nfunction ComboboxPopup({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Popup, _extends({\n className: classnames(styles.osdkComboboxPopup, className)\n }, rest), children);\n}\nfunction ComboboxItem({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Item, _extends({\n className: classnames(styles.osdkComboboxItem, className)\n }, rest), children);\n}\nfunction ComboboxChips({\n children,\n className\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Chips, {\n render: props => /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: classnames(styles.osdkComboboxInputWrapper, className)\n }), props.children)\n }, children);\n}\nfunction ComboboxChip({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Chip, _extends({\n className: classnames(styles.osdkComboboxChip, className)\n }, rest), children);\n}\nfunction ComboboxChipRemove({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.ChipRemove, _extends({\n className: classnames(styles.osdkComboboxChipRemove, className),\n \"aria-label\": \"Remove\"\n }, rest), /*#__PURE__*/React.createElement(Cross, null));\n}\nfunction ComboboxClear({\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Clear, _extends({\n className: classnames(styles.osdkComboboxClear, className),\n \"aria-label\": \"Clear all\"\n }, rest), /*#__PURE__*/React.createElement(Cross, null));\n}\nfunction ComboboxEmpty({\n children,\n className\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.Empty, {\n className: classnames(styles.osdkComboboxEmpty, className)\n }, children);\n}\nfunction ComboboxList({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.List, _extends({\n className: classnames(styles.osdkComboboxList, className)\n }, rest), children);\n}\nfunction ComboboxItemIndicator({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICombobox.ItemIndicator, _extends({\n className: classnames(styles.osdkComboboxItemIndicator, className),\n keepMounted: true\n }, rest), children ?? /*#__PURE__*/React.createElement(Tick, {\n size: 16\n }));\n}\nexport const Combobox = {\n Root: BaseUICombobox.Root,\n SearchInput: ComboboxSearchInput,\n Input: ComboboxInput,\n Portal: BaseUICombobox.Portal,\n Positioner: ComboboxPositioner,\n Popup: ComboboxPopup,\n List: ComboboxList,\n Item: ComboboxItem,\n ItemIndicator: ComboboxItemIndicator,\n Chips: ComboboxChips,\n Chip: ComboboxChip,\n ChipRemove: ComboboxChipRemove,\n Clear: ComboboxClear,\n Empty: ComboboxEmpty,\n Value: BaseUICombobox.Value\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.multiSelect {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-multiselect-gap);\n}\n\n.itemLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.itemCount {\n font-family: var(--osdk-filter-multiselect-count-font-family);\n font-size: var(--osdk-filter-multiselect-count-font-size);\n font-variant-numeric: tabular-nums;\n color: var(--osdk-filter-multiselect-count-color);\n flex-shrink: 0;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport styles from \"./MultiSelectInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nfunction MultiSelectInputInner({\n values,\n isLoading,\n error,\n selectedValues,\n onChange,\n className,\n style,\n placeholder = \"Select values...\",\n ariaLabel = \"Search values\"\n}) {\n const handleValueChange = useCallback(newValues => {\n onChange(newValues ?? []);\n }, [onChange]);\n const items = useMemo(() => values.map(({\n value\n }) => value), [values]);\n const countByValue = useMemo(() => new Map(values.map(({\n value,\n count\n }) => [value, count])), [values]);\n const renderItem = useCallback(value => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, value), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", (countByValue.get(value) ?? 0).toLocaleString(), \")\")), [countByValue]);\n const renderChips = useCallback(selectedItems => /*#__PURE__*/React.createElement(React.Fragment, null, selectedItems.map(value => /*#__PURE__*/React.createElement(Combobox.Chip, {\n key: value,\n \"aria-label\": value\n }, value, /*#__PURE__*/React.createElement(Combobox.ChipRemove, null))), /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: selectedItems.length > 0 ? \"\" : placeholder,\n \"aria-label\": ariaLabel\n })), [placeholder, ariaLabel]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.multiSelect, className),\n style: style,\n \"data-loading\": isLoading\n }, error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), !error && values.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, isLoading ? \"Loading options...\" : \"No options available\"), (values.length > 0 || isLoading) && /*#__PURE__*/React.createElement(Combobox.Root, {\n multiple: true,\n value: selectedValues,\n onValueChange: handleValueChange,\n items: items\n }, isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.loadingMessage\n }, \"Updating...\"), /*#__PURE__*/React.createElement(Combobox.Chips, null, /*#__PURE__*/React.createElement(Combobox.Value, null, renderChips)), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem))))));\n}\nexport const MultiSelectInput = /*#__PURE__*/memo(MultiSelectInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.nullWrapper {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-null-wrapper-gap);\n}\n\n.nullValueRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--osdk-filter-null-row-padding);\n border-top: var(--osdk-filter-null-row-border-top);\n}\n\n.nullLabel {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-null-label-gap);\n cursor: pointer;\n}\n\n.nullLabelText {\n font-family: var(--osdk-filter-null-label-font-family);\n font-size: var(--osdk-filter-null-label-font-size);\n line-height: var(--osdk-filter-null-label-line-height);\n color: var(--osdk-filter-null-label-color);\n}\n\n.count {\n font-family: var(--osdk-filter-null-count-font-family);\n font-size: var(--osdk-filter-null-count-font-size);\n font-variant-numeric: tabular-nums;\n color: var(--osdk-filter-null-count-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport styles from \"./NullValueWrapper.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nfunction NullValueWrapperInner({\n nullCount,\n isLoading,\n error,\n includeNull = false,\n onIncludeNullChange,\n showNullCount = true,\n children,\n className,\n style\n}) {\n const handleToggle = useCallback(() => {\n onIncludeNullChange(!includeNull);\n }, [includeNull, onIncludeNullChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.nullWrapper, className),\n style: style\n }, children, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.nullValueRow,\n \"data-checked\": includeNull,\n \"data-loading\": isLoading\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.nullLabel\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: includeNull,\n onCheckedChange: handleToggle\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.nullLabelText\n }, \"No value\")), showNullCount && !error && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count\n }, nullCount.toLocaleString())), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Failed to load null count\"));\n}\nexport const NullValueWrapper = /*#__PURE__*/memo(NullValueWrapperInner);","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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, { memo } from \"react\";\nimport { RangeInput } from \"./RangeInput.js\";\nfunction formatNumber(value) {\n return value !== undefined ? String(value) : \"\";\n}\nfunction parseNumber(value) {\n if (value === \"\") return undefined;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? undefined : parsed;\n}\nconst numberConfig = {\n inputType: \"number\",\n formatValue: formatNumber,\n parseValue: parseNumber,\n toNumber: v => v,\n fromNumber: v => v,\n minLabel: \"Min\",\n maxLabel: \"Max\",\n formatTooltip: (min, max, count) => `${min.toFixed(1)} - ${max.toFixed(1)}: ${count.toLocaleString()}`,\n formatPlaceholder: value => value.toFixed(0),\n inputProps: {\n step: \"any\"\n }\n};\nfunction NumberRangeInputInner(props) {\n return /*#__PURE__*/React.createElement(RangeInput, _extends({}, props, {\n config: numberConfig\n }));\n}\nexport const NumberRangeInput = /*#__PURE__*/memo(NumberRangeInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.singleDate {\n display: flex;\n flex-direction: column;\n}\n\n.dateContainer {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-select-container-gap);\n}\n\n.input {\n flex: 1;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-timeline-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.clearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-input-clear-padding);\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-input-icon-color);\n border-radius: var(--osdk-filter-input-clear-border-radius);\n transition: background-color var(--osdk-filter-input-transition);\n\n &:hover {\n background: var(--osdk-filter-input-clear-bg-hover);\n }\n\n &:active {\n background: var(--osdk-filter-input-clear-bg-active);\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport styles from \"./SingleDateInput.module.css\";\nfunction SingleDateInputInner({\n selectedDate,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n placeholder = \"Select a date...\",\n showClearButton = true\n}) {\n const handleChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n onChange(date);\n }, [onChange]);\n const handleClear = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.singleDate, className),\n style: style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.dateContainer\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n value: formatDateForInput(selectedDate),\n onChange: handleChange,\n min: minDate ? formatDateForInput(minDate) : undefined,\n max: maxDate ? formatDateForInput(maxDate) : undefined,\n placeholder: placeholder,\n \"aria-label\": \"Select date\"\n }), showClearButton && selectedDate !== undefined && /*#__PURE__*/React.createElement(Button, {\n className: styles.clearButton,\n onClick: handleClear,\n \"aria-label\": \"Clear date\"\n }, \"\\xD7\")));\n}\nexport const SingleDateInput = /*#__PURE__*/memo(SingleDateInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.singleSelect {\n display: flex;\n flex-direction: column;\n}\n\n.selectContainer {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-select-container-gap);\n position: relative;\n}\n\n.clearButton {\n flex-shrink: 0;\n}\n\n.itemLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.itemCount {\n font-variant-numeric: tabular-nums;\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./SingleSelectInput.module.css\";\nfunction SingleSelectInputInner({\n values,\n isLoading,\n error,\n selectedValue,\n onChange,\n className,\n style,\n placeholder = \"Select a value...\",\n showClearButton = true,\n showCounts = false,\n ariaLabel = \"Select value\"\n}) {\n const handleValueChange = useCallback(value => {\n onChange(value ?? undefined);\n }, [onChange]);\n const items = useMemo(() => values.map(({\n value\n }) => value), [values]);\n const countByValue = useMemo(() => new Map(values.map(({\n value,\n count\n }) => [value, count])), [values]);\n const renderItem = useCallback(value => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, value), showCounts && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", (countByValue.get(value) ?? 0).toLocaleString(), \")\")), [countByValue, showCounts]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.singleSelect, className),\n style: style,\n \"data-loading\": isLoading\n }, isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.loadingMessage\n }, \"Loading options...\"), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), !isLoading && !error && values.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No options available\"), (values.length > 0 || isLoading) && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.selectContainer\n }, /*#__PURE__*/React.createElement(Combobox.Root, {\n value: selectedValue ?? null,\n onValueChange: handleValueChange,\n items: items\n }, /*#__PURE__*/React.createElement(Combobox.SearchInput, {\n placeholder: placeholder,\n \"aria-label\": ariaLabel\n }), showClearButton && selectedValue !== undefined && /*#__PURE__*/React.createElement(Combobox.Clear, {\n className: styles.clearButton\n }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem)))))));\n}\nexport const SingleSelectInput = /*#__PURE__*/memo(SingleSelectInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.textTags {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-texttags-gap);\n}\n\n.input {\n flex: 1;\n}\n","/*\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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./TextTagsInput.module.css\";\nconst TAG_SEPARATOR_PATTERN = /[,\\n]/;\nconst TagItem = /*#__PURE__*/memo(function TagItem({\n tag,\n onRemove\n}) {\n const handleRemove = useCallback(() => {\n onRemove(tag);\n }, [tag, onRemove]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.tag\n }, tag, /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: sharedStyles.tagRemove,\n onClick: handleRemove,\n \"aria-label\": `Remove ${tag}`\n }, \"\\xD7\"));\n});\nfunction TextTagsInputInner({\n suggestions,\n isLoading,\n error,\n tags,\n onChange,\n className,\n style,\n placeholder = \"Add a tag...\",\n allowCustomTags = true,\n suggestionLimit = 10,\n ariaLabel = \"Add tag\"\n}) {\n const [inputValue, setInputValue] = useState(\"\");\n const filteredSuggestions = useMemo(() => {\n if (!suggestionLimit) return [];\n const lowerInput = inputValue.toLowerCase();\n return suggestions.filter(s => (!inputValue.trim() || s.value.toLowerCase().includes(lowerInput)) && !tags.includes(s.value)).slice(0, suggestionLimit);\n }, [suggestions, inputValue, tags, suggestionLimit]);\n const addTag = useCallback(tag => {\n const trimmedTag = tag.trim();\n if (trimmedTag && !tags.includes(trimmedTag)) {\n onChange([...tags, trimmedTag]);\n }\n setInputValue(\"\");\n }, [tags, onChange]);\n const removeTag = useCallback(tag => {\n onChange(tags.filter(t => t !== tag));\n }, [tags, onChange]);\n const handleValueChange = useCallback(newTags => {\n onChange(newTags ?? []);\n }, [onChange]);\n const handleInputValueChange = useCallback(value => {\n setInputValue(value);\n }, []);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" && inputValue.trim()) {\n if (filteredSuggestions.length > 0) {\n return;\n }\n e.preventDefault();\n if (allowCustomTags) {\n addTag(inputValue);\n }\n } else if (e.key === \"Backspace\" && !inputValue && tags.length > 0) {\n removeTag(tags[tags.length - 1]);\n }\n }, [inputValue, tags, addTag, removeTag, allowCustomTags, filteredSuggestions]);\n const handlePaste = useCallback(e => {\n const pastedText = e.clipboardData.getData(\"text\");\n if (TAG_SEPARATOR_PATTERN.test(pastedText)) {\n e.preventDefault();\n const newTags = pastedText.split(TAG_SEPARATOR_PATTERN).map(t => t.trim()).filter(t => t && !tags.includes(t));\n if (newTags.length > 0) {\n onChange([...tags, ...newTags]);\n }\n }\n }, [tags, onChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.textTags, className),\n style: style,\n \"data-loading\": isLoading\n }, error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading suggestions: \", error.message), /*#__PURE__*/React.createElement(Combobox.Root, {\n multiple: true,\n value: tags,\n onValueChange: handleValueChange,\n inputValue: inputValue,\n onInputValueChange: handleInputValueChange\n }, tags.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.tagContainer\n }, tags.map(tag => /*#__PURE__*/React.createElement(TagItem, {\n key: tag,\n tag: tag,\n onRemove: removeTag\n }))), /*#__PURE__*/React.createElement(Combobox.SearchInput, {\n className: styles.input,\n placeholder: tags.length > 0 ? \"\" : placeholder,\n onKeyDown: handleKeyDown,\n onPaste: handlePaste,\n \"aria-label\": ariaLabel\n }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, filteredSuggestions.length === 0 ? allowCustomTags && inputValue.trim() ? /*#__PURE__*/React.createElement(Combobox.Empty, null, \"Press Enter to add \\\"\", inputValue, \"\\\"\") : /*#__PURE__*/React.createElement(Combobox.Empty, null, suggestionLimit ? \"No suggestions\" : \"Type to add a tag\") : filteredSuggestions.map(({\n value,\n count\n }) => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value\n }, value, \" (\", count.toLocaleString(), \")\")))))), isLoading && !!suggestionLimit && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.loadingMessage\n }, \"Loading suggestions...\"));\n}\nexport const TextTagsInput = /*#__PURE__*/memo(TextTagsInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.timeline {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-filter-range-gap);\n}\n\n.labels {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-timeline-labels-gap);\n font-family: var(--osdk-filter-timeline-labels-font-family);\n font-size: var(--osdk-filter-timeline-labels-font-size);\n color: var(--osdk-filter-timeline-labels-color);\n}\n\n.clearButton {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--osdk-filter-timeline-button-padding);\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-timeline-button-color);\n border-radius: var(--osdk-filter-timeline-button-border-radius);\n margin-left: auto;\n\n &:hover {\n background: var(--osdk-filter-timeline-button-bg-hover);\n color: var(--osdk-filter-timeline-button-color-hover);\n }\n}\n\n.brush {\n display: flex;\n align-items: center;\n gap: var(--osdk-filter-timeline-labels-gap);\n}\n\n.brush span {\n color: var(--osdk-filter-timeline-brush-color);\n}\n\n.input {\n flex: 1;\n font-family: var(--osdk-filter-input-font-family);\n font-size: var(--osdk-filter-timeline-input-font-size);\n padding: var(--osdk-filter-input-padding);\n border: var(--osdk-filter-input-border);\n border-radius: var(--osdk-filter-input-border-radius);\n background: var(--osdk-filter-input-bg);\n color: var(--osdk-filter-input-color);\n\n &:focus {\n border-color: var(--osdk-filter-input-focus-border);\n outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, parseDateFromInput } from \"../../../shared/dateUtils.js\";\nimport styles from \"./TimelineInput.module.css\";\nfunction TimelineInputInner({\n startDate,\n endDate,\n onChange,\n className,\n minDate,\n maxDate\n}) {\n const handleStartChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n onChange(date, endDate);\n }, [onChange, endDate]);\n const handleEndChange = useCallback(e => {\n const date = parseDateFromInput(e.target.value);\n onChange(startDate, date);\n }, [onChange, startDate]);\n const handleClear = useCallback(() => {\n onChange(undefined, undefined);\n }, [onChange]);\n const startInputMax = useMemo(() => endDate ?? maxDate, [endDate, maxDate]);\n const endInputMin = useMemo(() => startDate ?? minDate, [startDate, minDate]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.timeline, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.labels\n }, /*#__PURE__*/React.createElement(\"span\", null, formatDateForDisplay(startDate, \"—\")), /*#__PURE__*/React.createElement(\"span\", null, \"to\"), /*#__PURE__*/React.createElement(\"span\", null, formatDateForDisplay(endDate, \"—\")), (startDate || endDate) && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n onClick: handleClear,\n \"aria-label\": \"Clear range\",\n className: styles.clearButton\n }, \"\\xD7\")), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.brush\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n value: formatDateForInput(startDate),\n onChange: handleStartChange,\n min: minDate ? formatDateForInput(minDate) : undefined,\n max: startInputMax ? formatDateForInput(startInputMax) : undefined,\n \"aria-label\": \"Start date\"\n }), /*#__PURE__*/React.createElement(\"span\", null, \"\\u2014\"), /*#__PURE__*/React.createElement(Input, {\n type: \"date\",\n className: styles.input,\n value: formatDateForInput(endDate),\n onChange: handleEndChange,\n min: endInputMin ? formatDateForInput(endInputMin) : undefined,\n max: maxDate ? formatDateForInput(maxDate) : undefined,\n \"aria-label\": \"End date\"\n })));\n}\nexport const TimelineInput = /*#__PURE__*/memo(TimelineInputInner);","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport { useMemo } from \"react\";\nexport function usePropertyAggregation(objectType, propertyKey, objectSet, options) {\n // AggregateOpts requires specific property keys from Q, but we're dynamically\n // using propertyKey. The cast is unavoidable for this dynamic filter pattern.\n const aggregateOptions = useMemo(() => ({\n $select: {\n $count: \"unordered\"\n },\n $groupBy: {\n [propertyKey]: {\n $exact: {\n $includeNullValue: true\n }\n }\n }\n }), [propertyKey]);\n const aggregationArgs = useMemo(() => objectSet != null ? {\n aggregate: aggregateOptions,\n where: options?.where,\n objectSet\n } : {\n aggregate: aggregateOptions,\n where: options?.where\n }, [aggregateOptions, options?.where, objectSet]);\n const {\n data: countData,\n isLoading,\n error\n } = useOsdkAggregation(objectType, aggregationArgs);\n const result = useMemo(() => {\n if (!countData) {\n return {\n data: [],\n maxCount: 0\n };\n }\n const values = [];\n let maxCount = 0;\n\n // The aggregation result type varies by query structure. Since we're building\n // the query dynamically based on propertyKey, we cast to a known shape that\n // matches the $groupBy + $count aggregation pattern.\n const dataArray = countData;\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n const count = item.$count ?? 0;\n if (rawValue == null) {\n values.push({\n value: \"\",\n count,\n isNull: true\n });\n } else {\n values.push({\n value: String(rawValue),\n count\n });\n }\n maxCount = Math.max(maxCount, count);\n }\n const sortBy = options?.sortBy ?? \"count\";\n if (sortBy === \"count\") {\n values.sort((a, b) => b.count - a.count || a.value.localeCompare(b.value));\n } else {\n values.sort((a, b) => a.value.localeCompare(b.value));\n }\n if (options?.limit && values.length > options.limit) {\n return {\n data: values.slice(0, options.limit),\n maxCount\n };\n }\n return {\n data: values,\n maxCount\n };\n }, [countData, propertyKey, options?.limit, options?.sortBy]);\n return {\n data: result.data,\n maxCount: result.maxCount,\n isLoading,\n error: error ?? null\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function createGroupByAggregateOptions(propertyKey) {\n return {\n $select: {\n $count: \"unordered\"\n },\n $groupBy: {\n [propertyKey]: \"exact\"\n }\n };\n}\nexport function createNullCountAggregateOptions() {\n return {\n $select: {\n $count: \"unordered\"\n }\n };\n}\n\n/** Shape returned by $groupBy + $count aggregations when iterated. */\n\nexport function createNullWhereClause(propertyKey) {\n return {\n [propertyKey]: {\n $isNull: true\n }\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a filter value to a string for display.\n * Returns undefined if the value is undefined.\n */\nexport function coerceToString(value) {\n if (value === undefined) return undefined;\n return String(value);\n}\n\n/**\n * Coerces an array of filter values to string[] for display.\n */\nexport function coerceToStringArray(values) {\n if (values === undefined) return [];\n return values.map(v => String(v));\n}","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport { DateRangeInput } from \"../base/inputs/DateRangeInput.js\";\nimport styles from \"../base/inputs/LinkedPropertyInput.module.css\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { TimelineInput } from \"../base/inputs/TimelineInput.js\";\nimport { ToggleInput } from \"../base/inputs/ToggleInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nimport { coerceToString, coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction LinkedPropertyInputInner({\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n className,\n style\n}) {\n const linkedObjectSet = useMemo(() => objectSet.pivotTo(definition.linkName), [objectSet, definition.linkName]);\n const linkedObjectType = linkedObjectSet.$objectSetInternals.def;\n const linkedPropertyKey = definition.linkedPropertyKey;\n const innerState = filterState?.type === \"linkedProperty\" ? filterState.linkedFilterState : undefined;\n const isExcluding = innerState?.isExcluding ?? false;\n const includeNull = innerState?.includeNull;\n const wrappedOnChange = useCallback(innerFilterState => {\n onFilterStateChanged({\n type: \"linkedProperty\",\n linkedFilterState: innerFilterState\n });\n }, [onFilterStateChanged]);\n const onSelectChange = useCallback(selectedValues => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues,\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onSingleSelectChange = useCallback(selectedValue => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: selectedValue !== undefined ? [selectedValue] : [],\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onContainsTextChange = useCallback(value => {\n wrappedOnChange({\n type: \"CONTAINS_TEXT\",\n value\n });\n }, [wrappedOnChange]);\n const onToggleChange = useCallback(enabled => {\n wrappedOnChange({\n type: \"TOGGLE\",\n enabled\n });\n }, [wrappedOnChange]);\n const onNumberRangeChange = useCallback((minValue, maxValue) => {\n wrappedOnChange({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [wrappedOnChange, includeNull]);\n const onDateRangeChange = useCallback((minValue, maxValue) => {\n wrappedOnChange({\n type: \"DATE_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [wrappedOnChange, includeNull]);\n const onExactMatchChange = useCallback(values => {\n wrappedOnChange({\n type: \"EXACT_MATCH\",\n values,\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onDateSelectChange = useCallback(date => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: date !== undefined ? [date] : [],\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onMultiDateChange = useCallback(dates => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: dates\n });\n }, [wrappedOnChange]);\n const onTimelineChange = useCallback((start, end) => {\n wrappedOnChange({\n type: \"TIMELINE\",\n startDate: start,\n endDate: end,\n isExcluding\n });\n }, [wrappedOnChange, isExcluding]);\n const onNullChange = useCallback(newIncludeNull => {\n if (innerState?.type === \"NUMBER_RANGE\") {\n wrappedOnChange({\n ...innerState,\n includeNull: newIncludeNull\n });\n } else if (innerState?.type === \"DATE_RANGE\") {\n wrappedOnChange({\n ...innerState,\n includeNull: newIncludeNull\n });\n } else {\n wrappedOnChange({\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: newIncludeNull\n });\n }\n }, [wrappedOnChange, innerState]);\n const content = (() => {\n switch (definition.linkedFilterComponent) {\n case \"MULTI_SELECT\":\n {\n const values = innerState?.type === \"SELECT\" ? coerceToStringArray(innerState.selectedValues) : [];\n return /*#__PURE__*/React.createElement(LinkedMultiSelectInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: values,\n onChange: onSelectChange\n });\n }\n case \"SINGLE_SELECT\":\n {\n const value = innerState?.type === \"SELECT\" ? coerceToString(innerState.selectedValues[0]) : undefined;\n return /*#__PURE__*/React.createElement(LinkedSingleSelectInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValue: value,\n onChange: onSingleSelectChange\n });\n }\n case \"CONTAINS_TEXT\":\n {\n const value = innerState?.type === \"CONTAINS_TEXT\" ? innerState.value : undefined;\n return /*#__PURE__*/React.createElement(ContainsTextInput, {\n value: value,\n onChange: onContainsTextChange,\n placeholder: `Search ${String(definition.linkedPropertyKey)}...`\n });\n }\n case \"TOGGLE\":\n {\n const enabled = innerState?.type === \"TOGGLE\" ? innerState.enabled : false;\n return /*#__PURE__*/React.createElement(ToggleInput, {\n enabled: enabled,\n onChange: onToggleChange\n });\n }\n case \"NUMBER_RANGE\":\n {\n const nr = innerState?.type === \"NUMBER_RANGE\" ? innerState : undefined;\n return /*#__PURE__*/React.createElement(LinkedNumberRangeInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n minValue: nr?.minValue,\n maxValue: nr?.maxValue,\n includeNull: nr?.includeNull,\n onChange: onNumberRangeChange,\n onNullChange: onNullChange\n });\n }\n case \"DATE_RANGE\":\n {\n const dr = innerState?.type === \"DATE_RANGE\" ? innerState : undefined;\n return /*#__PURE__*/React.createElement(LinkedDateRangeInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n minValue: dr?.minValue,\n maxValue: dr?.maxValue,\n includeNull: dr?.includeNull,\n onChange: onDateRangeChange,\n onNullChange: onNullChange\n });\n }\n case \"LISTOGRAM\":\n {\n const exactState = innerState?.type === \"EXACT_MATCH\" ? innerState : undefined;\n const selectedValues = exactState ? coerceToStringArray(exactState.values) : [];\n return /*#__PURE__*/React.createElement(LinkedListogramInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: selectedValues,\n onChange: onExactMatchChange,\n searchQuery: searchQuery\n });\n }\n case \"TEXT_TAGS\":\n {\n const exactState = innerState?.type === \"EXACT_MATCH\" ? innerState : undefined;\n const tags = exactState ? coerceToStringArray(exactState.values) : [];\n return /*#__PURE__*/React.createElement(LinkedTextTagsInput, {\n objectType: linkedObjectType,\n objectSet: linkedObjectSet,\n propertyKey: linkedPropertyKey,\n tags: tags,\n onChange: onExactMatchChange\n });\n }\n case \"SINGLE_DATE\":\n {\n const selectedDate = innerState?.type === \"SELECT\" ? innerState.selectedValues[0] instanceof Date ? innerState.selectedValues[0] : undefined : undefined;\n return /*#__PURE__*/React.createElement(SingleDateInput, {\n selectedDate: selectedDate,\n onChange: onDateSelectChange,\n showClearButton: true\n });\n }\n case \"MULTI_DATE\":\n {\n const selectedDates = innerState?.type === \"SELECT\" ? innerState.selectedValues.filter(v => v instanceof Date) : [];\n return /*#__PURE__*/React.createElement(MultiDateInput, {\n selectedDates: selectedDates,\n onChange: onMultiDateChange,\n showClearAll: true\n });\n }\n case \"TIMELINE\":\n {\n const tl = innerState?.type === \"TIMELINE\" ? innerState : undefined;\n return /*#__PURE__*/React.createElement(TimelineInput, {\n startDate: tl?.startDate,\n endDate: tl?.endDate,\n onChange: onTimelineChange\n });\n }\n default:\n return assertUnreachable(definition.linkedFilterComponent);\n }\n })();\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.linkedProperty, className),\n style: style\n }, content);\n}\nexport const LinkedPropertyInput = /*#__PURE__*/memo(LinkedPropertyInputInner);\nfunction LinkedMultiSelectInput({\n objectType,\n objectSet,\n propertyKey,\n selectedValues,\n onChange\n}) {\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet);\n return /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: onChange\n });\n}\nfunction LinkedSingleSelectInput({\n objectType,\n objectSet,\n propertyKey,\n selectedValue,\n onChange\n}) {\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet);\n return /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValue: selectedValue,\n onChange: onChange,\n ariaLabel: `Select ${propertyKey}`\n });\n}\nfunction LinkedListogramInput({\n objectType,\n objectSet,\n propertyKey,\n selectedValues,\n onChange,\n searchQuery\n}) {\n const {\n data,\n maxCount,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet);\n return /*#__PURE__*/React.createElement(ListogramInput, {\n values: data,\n maxCount: maxCount,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: onChange,\n searchQuery: searchQuery\n });\n}\nfunction LinkedTextTagsInput({\n objectType,\n objectSet,\n propertyKey,\n tags,\n onChange\n}) {\n const aggregationOptions = useMemo(() => ({\n limit: 50\n }), []);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(TextTagsInput, {\n suggestions: data,\n isLoading: isLoading,\n error: error,\n tags: tags,\n onChange: onChange,\n suggestionLimit: 10\n });\n}\nfunction useLinkedRangeData(objectType, propertyKey, objectSet) {\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => ({\n aggregate: aggregateOptions,\n objectSet\n }), [aggregateOptions, objectSet]);\n const {\n data: aggregateData,\n isLoading: histLoading\n } = useOsdkAggregation(objectType, histogramArgs);\n const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);\n const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);\n const nullCountArgs = useMemo(() => ({\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n }), [nullWhereClause, nullCountAggregateOptions, objectSet]);\n const {\n data: nullCountData,\n isLoading: nullLoading\n } = useOsdkAggregation(objectType, nullCountArgs);\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n return {\n aggregateData,\n histLoading,\n nullCount,\n nullLoading\n };\n}\nfunction LinkedNumberRangeInput({\n objectType,\n objectSet,\n propertyKey,\n minValue,\n maxValue,\n includeNull,\n onChange,\n onNullChange\n}) {\n const {\n aggregateData,\n histLoading,\n nullCount,\n nullLoading\n } = useLinkedRangeData(objectType, propertyKey, objectSet);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({\n value: parsed,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: nullLoading,\n includeNull: includeNull,\n onIncludeNullChange: onNullChange\n }, /*#__PURE__*/React.createElement(NumberRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: histLoading,\n minValue: minValue,\n maxValue: maxValue,\n onChange: onChange\n }));\n}\nfunction LinkedDateRangeInput({\n objectType,\n objectSet,\n propertyKey,\n minValue,\n maxValue,\n includeNull,\n onChange,\n onNullChange\n}) {\n const {\n aggregateData,\n histLoading,\n nullCount,\n nullLoading\n } = useLinkedRangeData(objectType, propertyKey, objectSet);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const date = new Date(String(rawValue));\n if (!isNaN(date.getTime())) {\n pairs.push({\n value: date,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: nullLoading,\n includeNull: includeNull,\n onIncludeNullChange: onNullChange\n }, /*#__PURE__*/React.createElement(DateRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: histLoading,\n minValue: minValue,\n maxValue: maxValue,\n onChange: onChange\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.excludeDropdownContainer {\n display: flex;\n align-items: center;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 0.5);\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: var(--osdk-filter-item-exclude-dropdown-font-family);\n font-size: var(--osdk-filter-item-exclude-dropdown-font-size);\n color: var(--osdk-filter-item-exclude-dropdown-trigger-color);\n padding: calc(var(--osdk-surface-spacing) * 1)\n calc(var(--osdk-surface-spacing) * 1);\n border-radius: var(--osdk-filter-item-exclude-dropdown-trigger-border-radius);\n\n &:hover {\n background: var(--osdk-filter-item-header-action-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid\n var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.triggerLabel {\n white-space: nowrap;\n}\n\n.positioner {\n z-index: var(--osdk-surface-z-index-3);\n}\n\n.popup {\n background: var(--osdk-filter-item-menu-bg);\n border: var(--osdk-filter-item-menu-border);\n border-radius: var(--osdk-filter-item-menu-border-radius);\n box-shadow: var(--osdk-filter-item-menu-shadow);\n padding: var(--osdk-filter-item-menu-padding);\n min-width: var(--osdk-filter-item-exclude-dropdown-min-width);\n}\n\n.menuItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n padding: var(--osdk-filter-item-menu-item-padding);\n font-family: var(--osdk-filter-item-menu-item-font-family);\n font-size: var(--osdk-filter-item-menu-item-font-size);\n color: var(--osdk-filter-item-menu-item-color);\n border-radius: var(--osdk-filter-item-menu-item-border-radius);\n cursor: pointer;\n border: none;\n background: transparent;\n width: 100%;\n text-align: left;\n\n &:hover,\n &[data-highlighted] {\n background: var(--osdk-filter-item-menu-item-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-filter-input-focus-outline-width) solid\n var(--osdk-filter-input-focus-outline-color);\n outline-offset: var(--osdk-filter-input-focus-outline-offset);\n }\n}\n\n.menuItemCheck {\n display: flex;\n align-items: center;\n width: var(--osdk-filter-item-menu-check-size);\n flex-shrink: 0;\n}\n","/*\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 { Menu } from \"@base-ui/react/menu\";\nimport React, { memo, useCallback } from \"react\";\nimport styles from \"./ExcludeDropdown.module.css\";\nimport { CheckIcon, ChevronDownIcon, ExcludeIcon } from \"./FilterIcons.js\";\nfunction ExcludeDropdownInner({\n isExcluding,\n onToggleExclude\n}) {\n const label = isExcluding ? \"Excluding\" : \"Keeping\";\n const handleSelectKeeping = useCallback(() => {\n if (isExcluding) {\n onToggleExclude();\n }\n }, [isExcluding, onToggleExclude]);\n const handleSelectExcluding = useCallback(() => {\n if (!isExcluding) {\n onToggleExclude();\n }\n }, [isExcluding, onToggleExclude]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.excludeDropdownContainer\n }, /*#__PURE__*/React.createElement(Menu.Root, null, /*#__PURE__*/React.createElement(Menu.Trigger, {\n className: styles.trigger,\n \"aria-label\": label,\n \"data-excluding\": isExcluding || undefined\n }, isExcluding && /*#__PURE__*/React.createElement(ExcludeIcon, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.triggerLabel\n }, label), /*#__PURE__*/React.createElement(ChevronDownIcon, null)), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {\n className: styles.positioner,\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.popup\n }, /*#__PURE__*/React.createElement(Menu.Item, {\n className: styles.menuItem,\n onClick: handleSelectKeeping\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.menuItemCheck\n }, !isExcluding && /*#__PURE__*/React.createElement(CheckIcon, null)), \"Keeping\"), /*#__PURE__*/React.createElement(Menu.Item, {\n className: styles.menuItem,\n onClick: handleSelectExcluding\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.menuItemCheck\n }, isExcluding && /*#__PURE__*/React.createElement(CheckIcon, null)), \"Excluding\"))))));\n}\nexport const ExcludeDropdown = /*#__PURE__*/memo(ExcludeDropdownInner);","/*\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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { supportsExcluding } from \"../utils/filterValues.js\";\nimport { ExcludeDropdown } from \"./ExcludeDropdown.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction getSelectedCount(filterState) {\n if (!filterState) return 0;\n if (filterState.type === \"EXACT_MATCH\") return filterState.values.length;\n if (filterState.type === \"SELECT\") return filterState.selectedValues.length;\n return 0;\n}\nfunction FilterInputExcludeRowInner({\n excludeRowOpen,\n filterState,\n onFilterStateChanged,\n totalValueCount,\n onClearAll,\n children\n}) {\n const handleToggleExclude = useCallback(() => {\n if (filterState) {\n onFilterStateChanged({\n ...filterState,\n isExcluding: !filterState.isExcluding\n });\n }\n }, [filterState, onFilterStateChanged]);\n const isExcluding = filterState?.isExcluding ?? false;\n const isOpen = excludeRowOpen ?? false;\n const selectedCount = useMemo(() => getSelectedCount(filterState), [filterState]);\n if (!supportsExcluding(filterState)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n \"data-exclude-row\": true,\n className: classnames(styles.excludeRow, {\n [styles.excludeRowVisible]: isOpen\n })\n }, /*#__PURE__*/React.createElement(ExcludeDropdown, {\n isExcluding: isExcluding,\n onToggleExclude: handleToggleExclude\n }), totalValueCount != null && totalValueCount > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.excludeCountLabel,\n title: \"Approximate count of unique values\"\n }, selectedCount.toLocaleString(), \" of\", \" \", totalValueCount.toLocaleString(), \" values\"), onClearAll && selectedCount > 0 && /*#__PURE__*/React.createElement(Button, {\n className: styles.clearAllButton,\n onClick: onClearAll\n }, \"Clear all\")), children);\n}\nexport const FilterInputExcludeRow = /*#__PURE__*/memo(FilterInputExcludeRowInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nfunction ContainsTextFilterInputInner({\n propertyKey,\n filterState,\n onFilterStateChanged\n}) {\n const value = useMemo(() => filterState?.type === \"CONTAINS_TEXT\" ? filterState.value : undefined, [filterState]);\n const handleChange = useCallback(value => {\n onFilterStateChanged({\n type: \"CONTAINS_TEXT\",\n value\n });\n }, [onFilterStateChanged]);\n return /*#__PURE__*/React.createElement(ContainsTextInput, {\n value: value,\n onChange: handleChange,\n placeholder: \"Search...\"\n });\n}\nexport const ContainsTextFilterInput = /*#__PURE__*/memo(ContainsTextFilterInputInner);","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { DateRangeInput } from \"../base/inputs/DateRangeInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction DateRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged\n}) {\n const dateRangeState = filterState?.type === \"DATE_RANGE\" ? filterState : undefined;\n const includeNull = filterState?.includeNull;\n const handleNullChange = useCallback(includeNull => {\n onFilterStateChanged({\n type: \"DATE_RANGE\",\n minValue: dateRangeState?.minValue,\n maxValue: dateRangeState?.maxValue,\n includeNull\n });\n }, [onFilterStateChanged, dateRangeState?.minValue, dateRangeState?.maxValue]);\n const handleRangeChange = useCallback((minValue, maxValue) => {\n onFilterStateChanged({\n type: \"DATE_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [onFilterStateChanged, includeNull]);\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => objectSet != null ? {\n aggregate: aggregateOptions,\n objectSet\n } : {\n aggregate: aggregateOptions\n }, [aggregateOptions, objectSet]);\n const {\n data: aggregateData,\n isLoading: histLoading\n } = useOsdkAggregation(objectType, histogramArgs);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const date = new Date(String(rawValue));\n if (!isNaN(date.getTime())) {\n pairs.push({\n value: date,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);\n const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);\n const nullCountArgs = useMemo(() => objectSet != null ? {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n } : {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions\n }, [nullWhereClause, nullCountAggregateOptions, objectSet]);\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError\n } = useOsdkAggregation(objectType, nullCountArgs);\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n const isLoading = histLoading || nullLoading;\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: isLoading,\n error: nullError,\n includeNull: includeNull,\n onIncludeNullChange: handleNullChange\n }, /*#__PURE__*/React.createElement(DateRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: isLoading,\n minValue: dateRangeState?.minValue,\n maxValue: dateRangeState?.maxValue,\n onChange: handleRangeChange\n }));\n}\nexport const DateRangeFilterInput = /*#__PURE__*/memo(DateRangeFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction ListogramFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n colorMap,\n displayMode,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen\n}) {\n const selectedValues = useMemo(() => filterState?.type === \"EXACT_MATCH\" ? coerceToStringArray(filterState.values) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(values => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const sortBy = displayMode === \"minimal\" ? \"value\" : \"count\";\n const aggregationOptions = useMemo(() => ({\n where: whereClause,\n sortBy\n }), [whereClause, sortBy]);\n const {\n data,\n maxCount,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(ListogramInput, {\n values: data,\n maxCount: maxCount,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: handleChange,\n colorMap: colorMap,\n displayMode: displayMode,\n isExcluding: isExcluding,\n maxVisibleItems: maxVisibleItems,\n searchQuery: searchQuery\n }));\n}\nexport const ListogramFilterInput = /*#__PURE__*/memo(ListogramFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nfunction MultiDateFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const selectedDates = useMemo(() => filterState?.type === \"SELECT\" ? filterState.selectedValues.filter(v => v instanceof Date) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleChange = useCallback(selectedDates => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: selectedDates,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return /*#__PURE__*/React.createElement(MultiDateInput, {\n selectedDates: selectedDates,\n onChange: handleChange\n });\n}\nexport const MultiDateFilterInput = /*#__PURE__*/memo(MultiDateFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction MultiSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen\n}) {\n const selectedValues = useMemo(() => filterState?.type === \"SELECT\" ? coerceToStringArray(filterState.selectedValues) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(selectedValues => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const aggregationOptions = useMemo(() => ({\n where: whereClause\n }), [whereClause]);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: handleChange,\n ariaLabel: `Search ${propertyKey} values`\n }));\n}\nexport const MultiSelectFilterInput = /*#__PURE__*/memo(MultiSelectFilterInputInner);","/*\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 { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction NumberRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged\n}) {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\" ? filterState : undefined;\n const includeNull = filterState?.includeNull;\n const handleNullChange = useCallback(includeNull => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull\n });\n }, [onFilterStateChanged, numberRangeState?.minValue, numberRangeState?.maxValue]);\n const handleRangeChange = useCallback((minValue, maxValue) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull\n });\n }, [onFilterStateChanged, includeNull]);\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => objectSet != null ? {\n aggregate: aggregateOptions,\n objectSet\n } : {\n aggregate: aggregateOptions\n }, [aggregateOptions, objectSet]);\n const {\n data: aggregateData,\n isLoading: histLoading\n } = useOsdkAggregation(objectType, histogramArgs);\n const valueCountPairs = useMemo(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData;\n const pairs = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({\n value: parsed,\n count: item.$count ?? 0\n });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);\n const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);\n const nullCountArgs = useMemo(() => objectSet != null ? {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n } : {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions\n }, [nullWhereClause, nullCountAggregateOptions, objectSet]);\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError\n } = useOsdkAggregation(objectType, nullCountArgs);\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n const isLoading = histLoading || nullLoading;\n return /*#__PURE__*/React.createElement(NullValueWrapper, {\n nullCount: nullCount,\n isLoading: isLoading,\n error: nullError,\n includeNull: includeNull,\n onIncludeNullChange: handleNullChange\n }, /*#__PURE__*/React.createElement(NumberRangeInput, {\n valueCountPairs: valueCountPairs,\n isLoading: isLoading,\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n onChange: handleRangeChange\n }));\n}\nexport const NumberRangeFilterInput = /*#__PURE__*/memo(NumberRangeFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nfunction SingleDateFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const selectedDate = useMemo(() => filterState?.type === \"SELECT\" ? filterState.selectedValues[0] instanceof Date ? filterState.selectedValues[0] : undefined : undefined, [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleChange = useCallback(selectedDate => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: selectedDate !== undefined ? [selectedDate] : [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return /*#__PURE__*/React.createElement(SingleDateInput, {\n selectedDate: selectedDate,\n onChange: handleChange\n });\n}\nexport const SingleDateFilterInput = /*#__PURE__*/memo(SingleDateFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\nfunction SingleSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen\n}) {\n const selectedValue = useMemo(() => filterState?.type === \"SELECT\" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(value => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const aggregationOptions = useMemo(() => ({\n where: whereClause\n }), [whereClause]);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValue: selectedValue,\n onChange: handleChange,\n ariaLabel: `Select ${propertyKey}`\n }));\n}\nexport const SingleSelectFilterInput = /*#__PURE__*/memo(SingleSelectFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction TextTagsFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen\n}) {\n const tags = useMemo(() => filterState?.type === \"EXACT_MATCH\" ? coerceToStringArray(filterState.values) : [], [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleChange = useCallback(values => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const aggregationOptions = useMemo(() => ({\n where: whereClause\n }), [whereClause]);\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: data.length,\n onClearAll: handleClearAll\n }, /*#__PURE__*/React.createElement(TextTagsInput, {\n suggestions: data,\n isLoading: isLoading,\n error: error,\n tags: tags,\n onChange: handleChange\n }));\n}\nexport const TextTagsFilterInput = /*#__PURE__*/memo(TextTagsFilterInputInner);","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { TimelineInput } from \"../base/inputs/TimelineInput.js\";\nfunction TimelineFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const {\n startDate,\n endDate\n } = useMemo(() => filterState?.type === \"TIMELINE\" ? {\n startDate: filterState.startDate,\n endDate: filterState.endDate\n } : {\n startDate: undefined,\n endDate: undefined\n }, [filterState]);\n const isExcluding = filterState?.isExcluding ?? false;\n const handleChange = useCallback((startDate, endDate) => {\n onFilterStateChanged({\n type: \"TIMELINE\",\n startDate,\n endDate,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return /*#__PURE__*/React.createElement(TimelineInput, {\n startDate: startDate,\n endDate: endDate,\n onChange: handleChange\n });\n}\nexport const TimelineFilterInput = /*#__PURE__*/memo(TimelineFilterInputInner);","/*\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, { memo, useCallback } from \"react\";\nimport { ToggleInput } from \"../base/inputs/ToggleInput.js\";\nfunction ToggleFilterInputInner({\n filterState,\n onFilterStateChanged\n}) {\n const enabled = filterState?.type === \"TOGGLE\" ? filterState.enabled : false;\n const handleChange = useCallback(enabled => {\n onFilterStateChanged({\n type: \"TOGGLE\",\n enabled\n });\n }, [onFilterStateChanged]);\n return /*#__PURE__*/React.createElement(ToggleInput, {\n enabled: enabled,\n onChange: handleChange\n });\n}\nexport const ToggleFilterInput = /*#__PURE__*/memo(ToggleFilterInputInner);","/*\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, { memo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\nfunction PropertyFilterInputInner({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen\n}) {\n switch (definition.filterComponent) {\n case \"CONTAINS_TEXT\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }, /*#__PURE__*/React.createElement(ContainsTextFilterInput, {\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }));\n case \"TOGGLE\":\n return /*#__PURE__*/React.createElement(ToggleFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"NUMBER_RANGE\":\n return /*#__PURE__*/React.createElement(NumberRangeFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"DATE_RANGE\":\n return /*#__PURE__*/React.createElement(DateRangeFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"SINGLE_SELECT\":\n return /*#__PURE__*/React.createElement(SingleSelectFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n excludeRowOpen: excludeRowOpen\n });\n case \"MULTI_SELECT\":\n return /*#__PURE__*/React.createElement(MultiSelectFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n excludeRowOpen: excludeRowOpen\n });\n case \"SINGLE_DATE\":\n return /*#__PURE__*/React.createElement(SingleDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"MULTI_DATE\":\n return /*#__PURE__*/React.createElement(MultiDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"LISTOGRAM\":\n return /*#__PURE__*/React.createElement(ListogramFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n colorMap: definition.colorMap,\n displayMode: definition.listogramConfig?.displayMode,\n maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n });\n case \"TEXT_TAGS\":\n return /*#__PURE__*/React.createElement(TextTagsFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n propertyKey: definition.key,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n excludeRowOpen: excludeRowOpen\n });\n case \"TIMELINE\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }, /*#__PURE__*/React.createElement(TimelineFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n }));\n default:\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Unsupported filter component: \", definition.filterComponent);\n }\n}\nexport const PropertyFilterInput = /*#__PURE__*/memo(PropertyFilterInputInner);","/*\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, { memo, useCallback } from \"react\";\nimport { ContainsTextInput } from \"./base/inputs/ContainsTextInput.js\";\nimport { ToggleInput } from \"./base/inputs/ToggleInput.js\";\nimport { LinkedPropertyInput } from \"./inputs/LinkedPropertyInput.js\";\nimport { PropertyFilterInput } from \"./inputs/PropertyFilterInput.js\";\nfunction FilterInputInner({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen\n}) {\n return /*#__PURE__*/React.createElement(FilterInputContent, {\n objectType: objectType,\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n });\n}\nexport const FilterInput = /*#__PURE__*/memo(FilterInputInner);\nfunction FilterInputContent({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen\n}) {\n switch (definition.type) {\n case \"HAS_LINK\":\n return /*#__PURE__*/React.createElement(HasLinkInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged\n });\n case \"LINKED_PROPERTY\":\n {\n if (objectSet == null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null);\n }\n return /*#__PURE__*/React.createElement(LinkedPropertyInput, {\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n searchQuery: searchQuery\n });\n }\n case \"KEYWORD_SEARCH\":\n return /*#__PURE__*/React.createElement(KeywordSearchInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n placeholder: definition.label ?? \"Search...\"\n });\n case \"CUSTOM\":\n {\n if (!definition.renderInput) {\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Custom filter missing renderInput\");\n }\n const customFilterState = filterState?.type === \"custom\" ? filterState : definition.filterState;\n return /*#__PURE__*/React.createElement(React.Fragment, null, definition.renderInput({\n objectType,\n objectSet,\n filterState: customFilterState,\n onFilterStateChanged: state => onFilterStateChanged(state)\n }));\n }\n case \"PROPERTY\":\n return /*#__PURE__*/React.createElement(PropertyFilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: whereClause,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n });\n default:\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Unsupported filter type\");\n }\n}\nconst HasLinkInput = /*#__PURE__*/memo(function HasLinkInput({\n filterState,\n onFilterStateChanged\n}) {\n const hasLink = filterState?.type === \"hasLink\" ? filterState.hasLink : false;\n const handleChange = useCallback(hasLink => {\n onFilterStateChanged({\n type: \"hasLink\",\n hasLink\n });\n }, [onFilterStateChanged]);\n return /*#__PURE__*/React.createElement(ToggleInput, {\n enabled: hasLink,\n onChange: handleChange\n });\n});\nconst KeywordSearchInput = /*#__PURE__*/memo(function KeywordSearchInput({\n filterState,\n onFilterStateChanged,\n placeholder\n}) {\n const searchTerm = filterState?.type === \"keywordSearch\" ? filterState.searchTerm : undefined;\n const operator = filterState?.type === \"keywordSearch\" ? filterState.operator : \"AND\";\n const handleChange = useCallback(newSearchTerm => {\n onFilterStateChanged({\n type: \"keywordSearch\",\n searchTerm: newSearchTerm ?? \"\",\n operator\n });\n }, [onFilterStateChanged, operator]);\n return /*#__PURE__*/React.createElement(ContainsTextInput, {\n value: searchTerm,\n onChange: handleChange,\n placeholder: placeholder\n });\n});","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nexport function getFilterKey(definition) {\n switch (definition.type) {\n case \"PROPERTY\":\n return definition.id ?? definition.key;\n case \"HAS_LINK\":\n return definition.id ?? `hasLink:${definition.linkName}`;\n case \"LINKED_PROPERTY\":\n return definition.id ?? `linkedProperty:${definition.linkName}:${definition.linkedPropertyKey}`;\n case \"KEYWORD_SEARCH\":\n return definition.id ?? `keywordSearch-${Array.isArray(definition.properties) ? definition.properties.join(\"-\") : \"all\"}`;\n case \"CUSTOM\":\n return definition.id ?? definition.key;\n default:\n return assertUnreachable(definition);\n }\n}","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport { getFilterKey } from \"./getFilterKey.js\";\nfunction isCompoundFilter(f) {\n return typeof f === \"object\" && f != null && \"__compound\" in f;\n}\nconst NUMERIC_BOUNDS = {\n byte: {\n min: -128,\n max: 127\n },\n short: {\n min: -32_768,\n max: 32_767\n },\n integer: {\n min: -2_147_483_648,\n max: 2_147_483_647\n },\n long: {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER\n }\n};\nfunction clampToPropertyBounds(value, propertyType) {\n if (propertyType === undefined) {\n return value;\n }\n const bounds = NUMERIC_BOUNDS[propertyType];\n if (bounds === undefined) {\n return value;\n }\n return Math.max(bounds.min, Math.min(bounds.max, value));\n}\nfunction formatDateValue(date, propertyType) {\n if (propertyType === \"datetime\") {\n return formatDateForInput(date);\n }\n return date.toISOString();\n}\nfunction filterStateToPropertyFilter(state, propertyType) {\n switch (state.type) {\n case \"CONTAINS_TEXT\":\n {\n if (!state.value) {\n return undefined;\n }\n return {\n $containsAnyTerm: state.value\n };\n }\n case \"TOGGLE\":\n {\n return state.enabled;\n }\n case \"DATE_RANGE\":\n {\n const conditions = [];\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.minValue, propertyType)\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.maxValue, propertyType)\n });\n }\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n if (conditions.length === 0 && state.includeNull) {\n return {\n $isNull: true\n };\n }\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false\n };\n }\n case \"NUMBER_RANGE\":\n {\n const conditions = [];\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: clampToPropertyBounds(state.minValue, propertyType)\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: clampToPropertyBounds(state.maxValue, propertyType)\n });\n }\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n if (conditions.length === 0 && state.includeNull) {\n return {\n $isNull: true\n };\n }\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false\n };\n }\n case \"EXACT_MATCH\":\n {\n if (state.values.length === 0) {\n return undefined;\n }\n return state.values.length === 1 ? state.values[0] : {\n $in: state.values\n };\n }\n case \"SELECT\":\n {\n if (state.selectedValues.length === 0) {\n return undefined;\n }\n const values = state.selectedValues.map(v => v instanceof Date ? formatDateValue(v, propertyType) : v);\n return values.length === 1 ? values[0] : {\n $in: values\n };\n }\n case \"TIMELINE\":\n {\n const conditions = [];\n if (state.startDate !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.startDate, propertyType)\n });\n }\n if (state.endDate !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.endDate, propertyType)\n });\n }\n if (conditions.length === 0) {\n return undefined;\n }\n if (conditions.length === 1) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: false\n };\n }\n\n // These filter types are handled separately in buildWhereClause\n // since they need access to the full definition, not just state\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return undefined;\n default:\n return assertUnreachable(state);\n }\n}\n\n/**\n * Builds a WhereClause from filter definitions and their current states.\n *\n * The filterStates map uses string keys derived from filter definitions via\n * getFilterKey(). This ensures stable state lookups even when filters are\n * reordered or definition object references change.\n *\n * Note: The `as WhereClause<Q>` casts are necessary because we're building\n * clauses dynamically from property keys determined at runtime. TypeScript\n * cannot verify that the constructed clause structure matches the generic Q's\n * expected shape, but the structure is guaranteed to be valid by construction.\n */\n\nexport function buildWhereClause(definitions, filterStates, propertyTypes, excludeFilterKey) {\n if (!definitions || definitions.length === 0) {\n return {};\n }\n const clauses = [];\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n if (!state) {\n continue;\n }\n switch (definition.type) {\n case \"PROPERTY\":\n {\n const propertyType = propertyTypes?.get(definition.key)?.type;\n const filter = filterStateToPropertyFilter(state, propertyType);\n if (filter !== undefined) {\n const isExcluding = \"isExcluding\" in state && state.isExcluding;\n if (isCompoundFilter(filter)) {\n const fieldClauses = filter.conditions.map(c => ({\n [definition.key]: c\n }));\n let rangeClause = fieldClauses.length === 1 ? fieldClauses[0] : {\n $and: fieldClauses\n };\n if (filter.includeNull) {\n rangeClause = {\n $or: [rangeClause, {\n [definition.key]: {\n $isNull: true\n }\n }]\n };\n }\n clauses.push(isExcluding ? {\n $not: rangeClause\n } : rangeClause);\n } else {\n const clause = {\n [definition.key]: filter\n };\n clauses.push(isExcluding ? {\n $not: clause\n } : clause);\n }\n }\n break;\n }\n case \"HAS_LINK\":\n {\n if (state.type !== \"hasLink\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`[FilterList] State type mismatch for hasLink filter \"${definition.linkName}\": expected hasLink, got ${state.type}`);\n }\n break;\n }\n if (!state.hasLink) {\n break;\n }\n clauses.push({\n [definition.linkName]: {\n $isNotNull: true\n }\n });\n break;\n }\n case \"LINKED_PROPERTY\":\n {\n // OSDK WhereClause does not support filtering through links.\n // Link-based filtering requires ObjectSet operations (pivotTo/intersect).\n // LinkedProperty filters render UI for selection but cannot be included\n // in the where clause. Consumers needing linked property filtering must\n // implement it using ObjectSet.pivotTo() and intersect().\n break;\n }\n case \"KEYWORD_SEARCH\":\n {\n if (state.type !== \"keywordSearch\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`[FilterList] State type mismatch for keywordSearch filter: expected keywordSearch, got ${state.type}`);\n }\n break;\n }\n if (!state.searchTerm) {\n break;\n }\n // TypeScript narrows state to KeywordSearchFilterState\n const searchTerm = state.searchTerm.trim();\n if (!searchTerm) {\n break;\n }\n const properties = definition.properties;\n let propertiesToSearch;\n if (properties === \"all\") {\n if (propertyTypes && propertyTypes.size > 0) {\n propertiesToSearch = [];\n for (const [key, info] of propertyTypes) {\n if (info.type === \"string\" && !info.multiplicity) {\n propertiesToSearch.push(key);\n }\n }\n } else {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"[FilterList] Keyword search with properties: 'all' requires propertyTypes to be provided. Filter will be skipped.\");\n }\n break;\n }\n } else {\n propertiesToSearch = properties;\n }\n if (propertiesToSearch.length === 0) {\n break;\n }\n const containsOp = state.operator === \"AND\" ? \"$containsAllTerms\" : \"$containsAnyTerm\";\n const propertySearches = propertiesToSearch.map(prop => ({\n [prop]: {\n [containsOp]: searchTerm\n }\n }));\n let searchClause;\n if (propertySearches.length === 1) {\n searchClause = propertySearches[0];\n } else {\n searchClause = {\n $or: propertySearches\n };\n }\n clauses.push(state.isExcluding ? {\n $not: searchClause\n } : searchClause);\n break;\n }\n case \"CUSTOM\":\n {\n if (state.type !== \"custom\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`[FilterList] State type mismatch for custom filter \"${definition.key}\": expected custom, got ${state.type}`);\n }\n break;\n }\n // TypeScript narrows state to CustomFilterState\n const customClause = definition.toWhereClause(state);\n if (customClause && Object.keys(customClause).length > 0) {\n clauses.push(customClause);\n }\n break;\n }\n default:\n assertUnreachable(definition);\n }\n }\n if (clauses.length === 0) {\n return {};\n }\n if (clauses.length === 1) {\n return clauses[0];\n }\n return {\n $and: clauses\n };\n}","/*\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { buildWhereClause } from \"../utils/filterStateToWhereClause.js\";\nimport { filterHasActiveState } from \"../utils/filterValues.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\n/**\n * Build initial states from filter definitions.\n * Uses string keys derived from getFilterKey() for stable lookups.\n */\nfunction buildInitialStates(definitions) {\n const states = new Map();\n if (!definitions) {\n return states;\n }\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n switch (definition.type) {\n case \"PROPERTY\":\n {\n const state = definition.filterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"HAS_LINK\":\n case \"KEYWORD_SEARCH\":\n case \"CUSTOM\":\n {\n const state = definition.defaultFilterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"LINKED_PROPERTY\":\n {\n const innerState = definition.defaultLinkedFilterState;\n if (innerState) {\n const state = {\n type: \"linkedProperty\",\n linkedFilterState: innerState\n };\n states.set(key, state);\n }\n break;\n }\n default:\n assertUnreachable(definition);\n }\n }\n return states;\n}\nexport function useFilterListState(props) {\n const {\n objectType,\n filterDefinitions,\n onFilterStateChanged,\n onFilterClauseChanged,\n initialFilterStates\n } = props;\n const {\n metadata\n } = useOsdkMetadata(objectType);\n const propertyTypes = useMemo(() => {\n const map = new Map();\n if (metadata?.properties) {\n for (const [key, prop] of Object.entries(metadata.properties)) {\n if (typeof prop.type === \"string\") {\n map.set(key, {\n type: prop.type,\n multiplicity: prop.multiplicity === true\n });\n }\n }\n }\n return map;\n }, [metadata?.properties]);\n const [filterStates, setFilterStates] = useState(() => {\n const states = buildInitialStates(filterDefinitions);\n if (initialFilterStates) {\n for (const [key, state] of initialFilterStates) {\n states.set(key, state);\n }\n }\n return states;\n });\n const setFilterState = useCallback((filterKey, state) => {\n let newWhereClause;\n setFilterStates(prev => {\n const next = new Map(prev);\n next.set(filterKey, state);\n newWhereClause = buildWhereClause(filterDefinitions, next, propertyTypes);\n return next;\n });\n if (newWhereClause !== undefined) {\n onFilterClauseChanged?.(newWhereClause);\n }\n const definition = filterDefinitions?.find(d => getFilterKey(d) === filterKey);\n if (definition) {\n onFilterStateChanged?.(definition, state);\n }\n }, [filterDefinitions, propertyTypes, onFilterClauseChanged, onFilterStateChanged]);\n const clearFilterState = useCallback(filterKey => {\n const clearedStates = new Map(filterStates);\n clearedStates.delete(filterKey);\n setFilterStates(clearedStates);\n const newWhereClause = buildWhereClause(filterDefinitions, clearedStates, propertyTypes);\n onFilterClauseChanged?.(newWhereClause);\n }, [filterStates, filterDefinitions, propertyTypes, onFilterClauseChanged]);\n const whereClause = useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);\n const perFilterWhereClauses = useMemo(() => {\n const map = new Map();\n if (!filterDefinitions) {\n return map;\n }\n for (const definition of filterDefinitions) {\n const key = getFilterKey(definition);\n map.set(key, buildWhereClause(filterDefinitions, filterStates, propertyTypes, key));\n }\n return map;\n }, [filterDefinitions, filterStates, propertyTypes]);\n const activeFilterCount = useMemo(() => {\n let count = 0;\n for (const state of filterStates.values()) {\n if (filterHasActiveState(state)) {\n count++;\n }\n }\n return count;\n }, [filterStates]);\n const reset = useCallback(() => {\n const initialStates = buildInitialStates(filterDefinitions);\n setFilterStates(initialStates);\n const newWhereClause = buildWhereClause(filterDefinitions, initialStates, propertyTypes);\n onFilterClauseChanged?.(newWhereClause);\n }, [filterDefinitions, propertyTypes, onFilterClauseChanged]);\n return useMemo(() => ({\n filterStates,\n setFilterState,\n clearFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset\n }), [filterStates, setFilterState, clearFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nexport function useFilterVisibility(filterDefinitions, getFilterKey, getIsVisible) {\n const [visibilityOverrides, setVisibilityOverrides] = useState(() => new Map());\n const {\n visibleDefinitions,\n hiddenDefinitions\n } = useMemo(() => {\n if (filterDefinitions == null) {\n return {\n visibleDefinitions: [],\n hiddenDefinitions: []\n };\n }\n const visible = [];\n const hidden = [];\n for (const def of filterDefinitions) {\n const key = getFilterKey(def);\n const override = visibilityOverrides.get(key);\n const isVisible = override ?? getIsVisible(def);\n if (isVisible) {\n visible.push(def);\n } else {\n hidden.push(def);\n }\n }\n return {\n visibleDefinitions: visible,\n hiddenDefinitions: hidden\n };\n }, [filterDefinitions, getFilterKey, getIsVisible, visibilityOverrides]);\n const showFilter = useCallback(key => {\n setVisibilityOverrides(prev => {\n const next = new Map(prev);\n next.set(key, true);\n return next;\n });\n }, []);\n const hideFilter = useCallback(key => {\n setVisibilityOverrides(prev => {\n const next = new Map(prev);\n next.set(key, false);\n return next;\n });\n }, []);\n const hasVisibilityChanges = visibilityOverrides.size > 0;\n const resetVisibility = useCallback(() => {\n setVisibilityOverrides(new Map());\n }, []);\n return {\n visibleDefinitions,\n hiddenDefinitions,\n showFilter,\n hideFilter,\n hasVisibilityChanges,\n resetVisibility\n };\n}","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nexport function getFilterLabel(definition) {\n if (\"label\" in definition && definition.label) {\n return definition.label;\n }\n switch (definition.type) {\n case \"PROPERTY\":\n return definition.key;\n case \"HAS_LINK\":\n case \"LINKED_PROPERTY\":\n return definition.linkName;\n case \"KEYWORD_SEARCH\":\n return \"Search\";\n case \"CUSTOM\":\n return definition.key;\n default:\n return assertUnreachable(definition);\n }\n}","/*\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, useMemo } from \"react\";\nimport { AddFilterPopover } from \"./base/AddFilterPopover.js\";\nimport { BaseFilterList } from \"./base/BaseFilterList.js\";\nimport { FilterInput } from \"./FilterInput.js\";\nimport { useFilterListState } from \"./hooks/useFilterListState.js\";\nimport { useFilterVisibility } from \"./hooks/useFilterVisibility.js\";\nimport { getFilterKey } from \"./utils/getFilterKey.js\";\nimport { getFilterLabel } from \"./utils/getFilterLabel.js\";\nexport function FilterList(props) {\n const {\n objectType,\n objectSet,\n title,\n titleIcon,\n collapsed,\n onCollapsedChange,\n filterDefinitions,\n addFilterMode = \"uncontrolled\",\n showResetButton = false,\n onReset,\n showActiveFilterCount = false,\n className,\n enableSorting,\n onFilterAdded,\n onFilterRemoved,\n renderAddFilterButton\n } = props;\n const {\n filterStates,\n setFilterState,\n clearFilterState,\n perFilterWhereClauses,\n activeFilterCount,\n reset\n } = useFilterListState(props);\n const uncontrolledAddFilterMode = addFilterMode === \"uncontrolled\";\n const getIsVisible = useCallback(def => def.isVisible !== false, []);\n const {\n visibleDefinitions: managedVisibleDefinitions,\n hiddenDefinitions: managedHiddenDefinitions,\n showFilter,\n hideFilter,\n hasVisibilityChanges,\n resetVisibility\n } = useFilterVisibility(filterDefinitions, getFilterKey, getIsVisible);\n const handleReset = useCallback(() => {\n reset();\n resetVisibility();\n onReset?.();\n }, [reset, resetVisibility, onReset]);\n const simpleVisibleDefinitions = useMemo(() => {\n if (filterDefinitions == null) {\n return undefined;\n }\n return filterDefinitions.filter(def => def.isVisible !== false);\n }, [filterDefinitions]);\n const effectiveVisibleDefinitions = uncontrolledAddFilterMode ? managedVisibleDefinitions : simpleVisibleDefinitions;\n const handleFilterRemoved = useCallback(filterKey => {\n clearFilterState(filterKey);\n if (uncontrolledAddFilterMode) {\n hideFilter(filterKey);\n }\n onFilterRemoved?.(filterKey);\n }, [clearFilterState, uncontrolledAddFilterMode, hideFilter, onFilterRemoved]);\n const handleFilterShown = useCallback(filterKey => {\n showFilter(filterKey);\n onFilterAdded?.(filterKey, filterDefinitions ?? []);\n }, [showFilter, onFilterAdded, filterDefinitions]);\n const hiddenFilterItems = useMemo(() => managedHiddenDefinitions.map(def => ({\n key: getFilterKey(def),\n label: getFilterLabel(def)\n })), [managedHiddenDefinitions]);\n const effectiveRenderAddFilterButton = useMemo(() => {\n if (uncontrolledAddFilterMode) {\n if (managedHiddenDefinitions.length === 0) {\n return undefined;\n }\n return () => /*#__PURE__*/React.createElement(AddFilterPopover, {\n hiddenDefinitions: hiddenFilterItems,\n onShowFilter: handleFilterShown,\n renderTrigger: renderAddFilterButton\n });\n }\n return renderAddFilterButton;\n }, [uncontrolledAddFilterMode, managedHiddenDefinitions.length, hiddenFilterItems, handleFilterShown, renderAddFilterButton]);\n const effectiveOnFilterRemoved = uncontrolledAddFilterMode ? handleFilterRemoved : onFilterRemoved;\n const renderInput = useCallback(({\n definition,\n filterKey,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen\n }) => /*#__PURE__*/React.createElement(FilterInput, {\n objectType: objectType,\n objectSet: objectSet,\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n whereClause: perFilterWhereClauses.get(filterKey) ?? {},\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n }), [objectType, objectSet, perFilterWhereClauses]);\n return /*#__PURE__*/React.createElement(BaseFilterList, {\n title: title,\n titleIcon: titleIcon,\n collapsed: collapsed,\n onCollapsedChange: onCollapsedChange,\n filterDefinitions: effectiveVisibleDefinitions,\n filterStates: filterStates,\n onFilterStateChanged: setFilterState,\n renderInput: renderInput,\n getFilterKey: getFilterKey,\n getFilterLabel: getFilterLabel,\n activeFilterCount: activeFilterCount,\n onReset: handleReset,\n showResetButton: showResetButton,\n showActiveFilterCount: showActiveFilterCount,\n hasVisibilityChanges: hasVisibilityChanges,\n enableSorting: enableSorting,\n onFilterRemoved: effectiveOnFilterRemoved,\n className: className,\n renderAddFilterButton: effectiveRenderAddFilterButton\n });\n}","/*\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\nconst DATE_PREFIX = \"__date__:\";\nfunction replacer(_key, value) {\n if (value instanceof Date) {\n return DATE_PREFIX + value.toISOString();\n }\n return value;\n}\nfunction reviver(_key, value) {\n if (typeof value === \"string\" && value.startsWith(DATE_PREFIX)) {\n return new Date(value.slice(DATE_PREFIX.length));\n }\n return value;\n}\nexport function serializeFilterStates(states) {\n const entries = Array.from(states.entries());\n return JSON.stringify(entries, replacer);\n}\nexport function deserializeFilterStates(json) {\n try {\n const entries = JSON.parse(json, reviver);\n return new Map(entries);\n } catch {\n return new Map();\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkLoadingCell {\n height: var(--osdk-table-cell-fontSize);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n flex: 1;\n}\n\n.osdkCellSkeleton.osdkCellSkeleton {\n --osdk-background-skeleton-from: var(--osdk-table-skeleton-color-from);\n --osdk-background-skeleton-to: var(--osdk-table-skeleton-color-to);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n box-shadow: none;\n color: transparent;\n cursor: default;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableCell {\n display: flex;\n align-items: center;\n height: 100%;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-size: var(--osdk-table-cell-fontSize);\n color: var(--osdk-table-cell-color);\n background-color: inherit;\n border-right: var(--osdk-table-cell-divider);\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: none;\n }\n}\n\n.osdkTableCell[data-pinned=\"left\"],\n.osdkTableCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-1);\n background-color: inherit;\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableCell:has([role=\"checkbox\"]) {\n justify-content: center;\n padding: 0;\n}\n\n.osdkTableCellContent:not(:has([role=\"checkbox\"])) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n flex: 1;\n}\n\n.osdkCheckboxContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport styles from \"./LoadingCell.module.css\";\nimport cellStyles from \"./TableCell.module.css\";\nexport function LoadingCellContent() {\n return /*#__PURE__*/React.createElement(SkeletonBar, {\n className: classNames(styles.osdkLoadingCell, styles.osdkCellSkeleton)\n });\n}\nexport function LoadingCell({\n width\n}) {\n return /*#__PURE__*/React.createElement(\"td\", {\n className: cellStyles.osdkTableCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(LoadingCellContent, null));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { LoadingCellContent } from \"../LoadingCell.js\";\nexport function AsyncValueCell({\n data,\n isLoading,\n error\n}) {\n if (error != null) {\n return \"Error\";\n }\n if (data != null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, data);\n }\n if (isLoading) {\n return /*#__PURE__*/React.createElement(LoadingCellContent, null);\n }\n return \"No value\";\n}",".osdkEditableCell {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 3);\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-surface-border-width) solid transparent;\n background: inherit;\n\n tr[data-focused=\"true\"] & {\n border: var(--osdk-table-cell-editable-border);\n background: var(--osdk-table-cell-editable-bg);\n\n &.osdkEditedInput {\n border: var(--osdk-table-cell-edited-border);\n }\n\n &:focus-within,\n &.osdkEditedInput:focus-within {\n border: var(--osdk-emphasis-focus-width) solid\n var(--osdk-emphasis-focus-color);\n }\n\n &.error {\n border: var(--osdk-table-cell-edited-border-error);\n\n &:focus-within {\n border: var(--osdk-emphasis-focus-width) solid\n var(--osdk-intent-danger-rest);\n }\n }\n }\n\n &.error {\n background: var(--osdk-table-cell-editable-bg);\n border: var(--osdk-table-cell-edited-border-error);\n }\n}\n\n.osdkEditableInput {\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n background: inherit;\n border: none;\n\n &:focus {\n outline: none;\n }\n}\n\n.osdkEditedInput {\n border: var(--osdk-table-cell-edited-border);\n background: var(--osdk-table-cell-editable-bg);\n}\n\n.validationError {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.errorIcon {\n color: var(--osdk-intent-danger-rest);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Error } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport styles from \"./EditableCell.module.css\";\nconst NUMBER_TYPES = [\"double\", \"integer\", \"long\", \"float\", \"decimal\", \"byte\", \"short\"];\nconst VALIDATION_ERROR_MESSAGE = \"Validation error\";\nfunction valueToString(value) {\n if (value == null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n // At this point, value is a primitive (string, number, boolean, symbol, bigint)\n return String(value);\n}\nfunction parseValueByType(value, dataType) {\n if (!dataType || !NUMBER_TYPES.includes(dataType)) {\n return value;\n }\n if (value === \"\") {\n return null;\n }\n const parsedNumber = Number(value);\n if (isNaN(parsedNumber)) {\n return value;\n }\n return parsedNumber;\n}\nfunction EditableCellInner({\n initialValue,\n currentValue,\n cellId,\n dataType,\n onCellEdit,\n onCellValidationError,\n clearCellValidationError,\n originalRowData,\n rowId,\n columnId,\n validateEdit,\n validationError\n}) {\n const [inputValue, setInputValue] = useState(valueToString(currentValue));\n const isCancelled = useRef(false);\n const validationAbortControllerRef = useRef(null);\n const abortController = useCallback(() => {\n if (validationAbortControllerRef.current) {\n validationAbortControllerRef.current.abort();\n validationAbortControllerRef.current = null;\n }\n }, []);\n const hasValidationError = validationError != null;\n const isEdited = currentValue !== initialValue;\n useEffect(() => {\n setInputValue(valueToString(currentValue));\n }, [currentValue]);\n useEffect(() => {\n // Cleanup abort controller on unmount\n return () => {\n abortController();\n };\n }, [abortController]);\n const handleBlur = useCallback(() => {\n // Do not commit the edit if it was cancelled with Escape key\n if (isCancelled.current) {\n isCancelled.current = false;\n return;\n }\n\n // Cancel any in-flight validation\n abortController();\n const parsedValue = parseValueByType(inputValue, dataType);\n onCellEdit(cellId, {\n rowId,\n columnId,\n newValue: parsedValue,\n oldValue: initialValue,\n originalRowData\n });\n if (validateEdit) {\n // Create new AbortController for this validation\n const abortController = new AbortController();\n validationAbortControllerRef.current = abortController;\n const validationPromise = validateEdit(parsedValue);\n\n // Race between validation and abort\n Promise.race([validationPromise, new Promise((_, reject) => {\n abortController.signal.addEventListener(\"abort\", () => {\n reject(new DOMException(\"Aborted\", \"AbortError\"));\n });\n })]).then(errorMessage => {\n if (abortController.signal.aborted) {\n return;\n }\n if (errorMessage) {\n onCellValidationError?.(cellId, errorMessage);\n } else {\n clearCellValidationError?.(cellId);\n }\n }, error => {\n if (!abortController.signal.aborted && error.name !== \"AbortError\") {\n onCellValidationError?.(cellId, VALIDATION_ERROR_MESSAGE);\n }\n });\n }\n }, [abortController, inputValue, dataType, onCellEdit, cellId, rowId, columnId, initialValue, originalRowData, validateEdit, onCellValidationError, clearCellValidationError]);\n const handleChange = useCallback(value => {\n // Cancel any in-flight validation\n abortController();\n setInputValue(value);\n }, [abortController]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n if (e.key === \"Escape\") {\n isCancelled.current = true;\n setInputValue(valueToString(currentValue));\n e.currentTarget.blur();\n }\n }, [currentValue]);\n const inputType = dataType && NUMBER_TYPES.includes(dataType) ? \"number\" : \"text\";\n return /*#__PURE__*/React.createElement(Tooltip.Provider, null, /*#__PURE__*/React.createElement(Tooltip.Root, {\n disabled: !hasValidationError\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, null, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkEditableCell, {\n [styles.error]: hasValidationError,\n [styles.osdkEditedInput]: isEdited\n })\n }, /*#__PURE__*/React.createElement(Input, {\n type: inputType,\n value: inputValue,\n className: styles.osdkEditableInput,\n onValueChange: handleChange,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n \"aria-invalid\": hasValidationError\n }), hasValidationError && /*#__PURE__*/React.createElement(Error, {\n className: styles.errorIcon\n }))), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, {\n sideOffset: 4,\n side: \"bottom\"\n }, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.validationError\n }, /*#__PURE__*/React.createElement(Error, {\n className: styles.errorIcon\n }), validationError), /*#__PURE__*/React.createElement(Tooltip.Arrow, null))))));\n}\nexport const EditableCell = /*#__PURE__*/React.memo(EditableCellInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const isAsyncCellData = value => {\n return value != null && typeof value === \"object\" && \"__asyncCell\" in value && value.__asyncCell === true;\n};\nexport const createAsyncCellData = ({\n data,\n isLoading,\n error\n}) => ({\n __asyncCell: true,\n data,\n isLoading,\n error\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getCellId(cellIdentifier) {\n return JSON.stringify(cellIdentifier);\n}","/*\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 { AsyncValueCell } from \"./components/AsyncValueCell.js\";\nimport { EditableCell } from \"./EditableCell.js\";\nimport { isAsyncCellData } from \"./utils/AsyncCellData.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\nexport function renderDefaultCell(cellContext) {\n const meta = cellContext.table.options.meta;\n const columnMeta = cellContext.column.columnDef.meta;\n const cellValue = cellContext.getValue();\n const asyncCellData = isAsyncCellData(cellValue) ? cellValue : undefined;\n\n // Function-backed columns are read-only: the value is server-computed\n // and cannot be edited in the table. Return the async cell directly.\n if (columnMeta?.isAsyncColumn && asyncCellData) {\n return /*#__PURE__*/React.createElement(AsyncValueCell, asyncCellData);\n }\n if (!columnMeta?.editable || !meta?.onCellEdit || !meta?.isInEditMode) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, cellValue);\n }\n const rowId = cellContext.row.id;\n const columnId = cellContext.column.id;\n const cellId = getCellId({\n rowId,\n columnId\n });\n const cellEdits = meta.cellEdits;\n const editedValue = cellEdits?.[cellId];\n const currentValue = editedValue?.newValue ?? cellValue;\n const validationError = meta.validationErrors?.get(cellId);\n return /*#__PURE__*/React.createElement(EditableCell, {\n initialValue: cellValue,\n currentValue: currentValue,\n cellId: cellId,\n dataType: columnMeta?.dataType,\n onCellEdit: meta.onCellEdit,\n onCellValidationError: meta.onCellValidationError,\n clearCellValidationError: meta.clearCellValidationError,\n originalRowData: cellContext.row.original,\n rowId: rowId,\n columnId: columnId,\n validateEdit: columnMeta?.validateEdit,\n validationError: validationError\n });\n}","/*\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs(objectType, columnDefinitions) {\n const {\n metadata,\n loading,\n error\n } = useOsdkMetadata(objectType);\n const columns = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n return {\n columns,\n loading,\n error\n };\n}\nfunction getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {\n return columnDefinitions.map(col => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName\n } = col;\n const propertyMetadata = locator.type === \"property\" ? objectProperties?.[locator.id] : undefined;\n const colKey = locator.id;\n const dataType = propertyMetadata?.type && typeof propertyMetadata.type === \"string\" ? propertyMetadata.type : undefined;\n const colDef = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isAsyncColumn: locator.type === \"function\",\n isVisible: col.isVisible !== false,\n editable,\n dataType,\n validateEdit: col.validateEdit\n },\n size: width,\n ...(minWidth ? {\n minSize: minWidth\n } : {}),\n ...(maxWidth ? {\n maxSize: maxWidth\n } : {}),\n enableResizing: resizable,\n // Function-backed columns must be sorted on the frontend, so disable sorting for now\n enableSorting: locator.type === \"function\" ? false : orderable,\n enableColumnFilter: filterable,\n cell: cellContext => {\n const object = cellContext.row.original;\n if (renderCell) {\n return renderCell(object, locator);\n }\n return renderDefaultCell(cellContext);\n }\n };\n return colDef;\n });\n}\nfunction getDefaultColumns(objectProperties) {\n if (!objectProperties) return [];\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef = {\n accessorKey: key,\n header: property.displayName ?? key\n };\n return colDef;\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const SELECTION_COLUMN_ID = \"__selection__\";\nexport const DEFAULT_COLUMN_WIDTH = 80;\nexport const DEFAULT_ROW_HEIGHT = 40;\nexport const DEFAULT_LOADING_COLUMN_WIDTH = 120;\nexport const MIN_LOADING_ROWS = 5;\nexport const SCROLL_FETCH_THRESHOLD = 100;\nexport const VIRTUALIZER_OVERSCAN = 5;\nexport const DEFAULT_PAGE_SIZE = 50;\nexport const DEFAULT_OBJECT_TABLE_DEDUPE_INTERVAL_MS = 60_000;\nexport const DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS = 300_000;\n\n// The main goal here is to split function executions into smaller pieces.\n// The executor should be happy to run several smaller pieces at once, so run\n// up to 10 at a time to improve performance.\nexport const DEFAULT_MAX_CONCURRENT_REQUESTS = 10;\nexport const SELECTION_COLUMN_WIDTH = 50;","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\nexport const useColumnPinning = ({\n columnDefinitions,\n hasSelectionColumn,\n onColumnsPinnedChanged\n}) => {\n const [columnPinning, setColumnPinning] = useState({\n left: [],\n right: []\n });\n\n // Update column pinning when columnDefinitions change\n useEffect(() => {\n const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);\n const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];\n setColumnPinning({\n left: [...selectionCol, ...(defaultState.left ?? [])],\n right: [...(defaultState.right ?? [])]\n });\n }, [columnDefinitions, hasSelectionColumn]);\n const onColumnPinningChange = useCallback(updater => {\n setColumnPinning(prev => {\n const newPinning = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnsPinnedChanged) {\n const newStates = convertColumnPinningStateToArray(newPinning);\n const stateWithoutSelectionCol = newStates.filter(state => state.columnId !== SELECTION_COLUMN_ID);\n onColumnsPinnedChanged(stateWithoutSelectionCol);\n }\n return newPinning;\n });\n }, [onColumnsPinnedChanged]);\n return {\n columnPinning,\n onColumnPinningChange\n };\n};\nconst getColumnPinningStateFromColumnDefs = columnDefinitions => {\n if (!columnDefinitions) {\n return {};\n }\n const columnPinningState = columnDefinitions.reduce((acc, {\n locator,\n pinned\n }) => {\n const colKey = locator.id.toString();\n const isPinned = pinned != null && pinned !== \"none\";\n if (!isPinned) {\n return acc;\n }\n if (pinned === \"left\") {\n return {\n ...acc,\n left: [...(acc.left ?? []), colKey]\n };\n }\n return {\n ...acc,\n right: [...(acc.right ?? []), colKey]\n };\n }, {\n left: [],\n right: []\n });\n return columnPinningState;\n};\n\n/**\n * Converts ColumnPinningState to array format for the callback\n */\nfunction convertColumnPinningStateToArray(pinningState) {\n return [...(pinningState.left ?? []).map(columnId => ({\n columnId,\n pinned: \"left\"\n })), ...(pinningState.right ?? []).map(columnId => ({\n columnId,\n pinned: \"right\"\n }))];\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useColumnResize = ({\n onColumnResize\n}) => {\n const [columnSizing, setColumnSizing] = useState({});\n const onColumnSizingChange = useCallback(updater => {\n setColumnSizing(prev => {\n const newState = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnResize) {\n for (const columnId of Object.keys(newState)) {\n if (newState[columnId] !== prev[columnId]) {\n onColumnResize(columnId, newState[columnId]);\n }\n }\n for (const columnId of Object.keys(prev)) {\n if (!(columnId in newState)) {\n onColumnResize(columnId, null);\n }\n }\n }\n return newState;\n });\n }, [onColumnResize]);\n return {\n columnSizing,\n onColumnSizingChange\n };\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nexport const useColumnVisibility = ({\n allColumns,\n onColumnVisibilityChanged\n}) => {\n const [columnVisibility, setColumnVisibility] = useState(() => getColumnVisibilityState(allColumns));\n const [columnOrder, setColumnOrder] = useState(() => getColumnOrder(allColumns));\n\n // TODO: Explore other ways to respond to props changes for controlled mode\n useEffect(() => {\n setColumnVisibility(getColumnVisibilityState(allColumns));\n }, [allColumns]);\n useEffect(() => {\n setColumnOrder(getColumnOrder(allColumns));\n }, [allColumns]);\n const onColumnVisibilityChange = useCallback(updaterOrValue => {\n setColumnVisibility(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n if (onColumnVisibilityChanged) {\n const changes = Object.entries(newState).map(([columnId, isVisible]) => ({\n columnId,\n isVisible\n }));\n onColumnVisibilityChanged(changes);\n }\n return newState;\n });\n }, [onColumnVisibilityChanged]);\n const onColumnOrderChange = useCallback(updaterOrValue => {\n setColumnOrder(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n return newState;\n });\n }, []);\n return {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n };\n};\nconst getColumnVisibilityState = allColumns => {\n return allColumns.reduce((acc, col) => {\n const colId = col.id ?? col.accessorKey;\n if (colId) {\n return {\n ...acc,\n [colId]: col.meta?.isVisible !== false\n };\n }\n return acc;\n }, {});\n};\nconst getColumnOrder = allColumns => {\n return allColumns.map(col => col.id ?? col.accessorKey).filter(id => id != null);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport function useEditableTable({\n editMode = \"manual\",\n onCellValueChanged,\n onSubmitEdits\n}) {\n const [isActive, setActive] = useState(editMode === \"always\");\n const [cellEdits, setCellEdits] = useState({});\n const [validationErrors, setValidationErrors] = useState(new Map());\n const clearCellValidationError = useCallback(cellId => {\n setValidationErrors(prev => {\n const newErrors = new Map(prev);\n newErrors.delete(cellId);\n return newErrors;\n });\n }, []);\n const handleCellEdit = useCallback((cellId, info) => {\n // If value is changed back to original, remove it from edits\n if (info.newValue === info.oldValue) {\n setCellEdits(prev => {\n const {\n [cellId]: _,\n ...rest\n } = prev;\n return rest;\n });\n } else {\n setCellEdits(prev => ({\n ...prev,\n [cellId]: info\n }));\n }\n onCellValueChanged?.(info);\n }, [onCellValueChanged]);\n const clearEdits = useCallback(() => {\n setCellEdits({});\n setValidationErrors(new Map());\n }, []);\n const handleSubmitEdits = useCallback(async () => {\n const edits = Object.values(cellEdits);\n return onSubmitEdits ? onSubmitEdits(edits) : false;\n }, [cellEdits, onSubmitEdits]);\n const onCellValidationError = useCallback((cellId, error) => {\n setValidationErrors(prev => {\n const newErrors = new Map(prev);\n newErrors.set(cellId, error);\n return newErrors;\n });\n }, []);\n const editModeState = editMode === \"always\" ? {\n type: \"always\",\n isActive: true\n } : {\n type: \"manual\",\n isActive,\n setActive\n };\n return {\n cellEdits,\n onCellEdit: handleCellEdit,\n onSubmitEdits: onSubmitEdits ? handleSubmitEdits : undefined,\n clearEdits,\n editModeState,\n onCellValidationError,\n validationErrors,\n clearCellValidationError\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isObjectSet } from \"@osdk/client\";\nexport function addFilterClauseToObjectSet(objectSet, whereClause) {\n if (objectSet == null || typeof objectSet !== \"object\" || !isObjectSet(objectSet)) {\n return objectSet;\n }\n return objectSet.where(whereClause);\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getWireObjectSet, isObjectSet } from \"@osdk/client\";\n\n// TODO: Remove this workaround once function queries support\n// derivedProperties (withProperties) in the ObjectSet payload.\n\n/**\n * Function queries fail when the payload contains ObjectSets with\n * derivedProperties (withProperties nodes). This strips them by\n * converting any ObjectSet param values to their wire representation\n * with withProperties nodes unwrapped.\n */\nexport function stripDerivedPropertiesFromParams(params) {\n if (params == null || typeof params !== \"object\") {\n return params;\n }\n if (isObjectSet(params)) {\n const wire = getWireObjectSet(params);\n return stripWithPropertiesFromWire(wire);\n }\n if (Array.isArray(params)) {\n return params.map(stripDerivedPropertiesFromParams);\n }\n const result = {};\n for (const [key, value] of Object.entries(params)) {\n result[key] = stripDerivedPropertiesFromParams(value);\n }\n return result;\n}\nexport function stripWithPropertiesFromWire(wire) {\n if (wire.type === \"withProperties\") {\n return stripWithPropertiesFromWire(wire.objectSet);\n }\n const result = {};\n for (const [key, value] of Object.entries(wire)) {\n if (key === \"objectSet\" && value != null && typeof value === \"object\" && !Array.isArray(value)) {\n result[key] = stripWithPropertiesFromWire(value);\n } else if (key === \"objectSets\" && Array.isArray(value)) {\n result[key] = value.map(os => stripWithPropertiesFromWire(os));\n } else {\n result[key] = value;\n }\n }\n return result;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkFunctions } from \"@osdk/react/experimental\";\nimport { chunk } from \"lodash-es\";\nimport { useMemo, useRef } from \"react\";\nimport { addFilterClauseToObjectSet } from \"../utils/addFilterClauseToObjectSet.js\";\nimport { createAsyncCellData } from \"../utils/AsyncCellData.js\";\nimport { DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS, DEFAULT_MAX_CONCURRENT_REQUESTS, DEFAULT_PAGE_SIZE } from \"../utils/constants.js\";\nimport { stripDerivedPropertiesFromParams } from \"../utils/stripDerivedPropertiesFromParams.js\";\nexport function useFunctionColumnsData({\n objectSet,\n objects,\n columnDefinitions,\n primaryKeyApiName,\n pageSize = DEFAULT_PAGE_SIZE\n}) {\n const prevDataRef = useRef({});\n const stableObjects = useStableObjects(objects);\n // TODO: replace with useDeepEqual when it's added\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stableObjectSet = useMemo(() => objectSet, [JSON.stringify(objectSet)]);\n const functionColDefs = useMemo(() => extractFunctionLocators(columnDefinitions), [columnDefinitions]);\n const disabled = !stableObjectSet || !stableObjects?.length || functionColDefs.length === 0;\n\n // When a new page loads, only that page's queries fire — old pages\n // hit the dedupeIntervalMs cache since their params are unchanged.\n const pagedObjectSets = useMemo(() => {\n if (!stableObjectSet || !stableObjects?.length) return [];\n return buildPagedObjectSets(stableObjectSet, stableObjects, primaryKeyApiName, pageSize);\n }, [stableObjectSet, stableObjects, primaryKeyApiName, pageSize]);\n const queryGrid = useMemo(() => {\n if (pagedObjectSets.length === 0 || functionColDefs.length === 0) {\n return EMPTY_QUERY_GRID;\n }\n return buildQueryGrid(pagedObjectSets, functionColDefs);\n }, [pagedObjectSets, functionColDefs]);\n const results = useOsdkFunctions({\n queries: queryGrid.queries,\n enabled: !disabled,\n maxConcurrent: DEFAULT_MAX_CONCURRENT_REQUESTS\n });\n const mergedResults = useMemo(() => mergePagedResults(results, queryGrid.numColumns), [results, queryGrid.numColumns]);\n const data = useMemo(() => {\n const columnData = buildFunctionColumnData(mergedResults, functionColDefs, stableObjects, disabled, prevDataRef.current);\n prevDataRef.current = columnData;\n return columnData;\n }, [mergedResults, functionColDefs, stableObjects, disabled]);\n return data;\n}\n\n/**\n * Pairs a flat queries array with the layout metadata needed to recover per-column\n * results back into per-column groups. The numColumns value is produced by\n * the same function that builds the queries, so the two are always in sync.\n */\n\nconst EMPTY_QUERY_GRID = {\n queries: [],\n numColumns: 0\n};\n\n/** Filters columnDefinitions down to only function-backed locators. */\nfunction extractFunctionLocators(columnDefinitions) {\n if (!columnDefinitions) return [];\n return columnDefinitions.filter(colDef => colDef.locator.type === \"function\").map(colDef => colDef.locator);\n}\n\n/** Chunks objects into pages and creates a filtered ObjectSet per page. */\nfunction buildPagedObjectSets(objectSet, objects, primaryKeyApiName, pageSize) {\n if (!primaryKeyApiName) {\n return [stripDerivedPropertiesFromParams(objectSet)];\n }\n return chunk(objects, pageSize).map(page => {\n const whereClause = {\n [primaryKeyApiName]: {\n $in: page.map(obj => obj.$primaryKey)\n }\n };\n return stripDerivedPropertiesFromParams(addFilterClauseToObjectSet(objectSet, whereClause));\n });\n}\n\n/**\n * Builds a flat query array and the layout metadata needed to recover per-column results.\n *\n * Layout: [page0_col0, page0_col1, ..., page1_col0, page1_col1, ...]\n * Page-first ordering ensures first concurrent queries prioritizes the first page,\n * so visible rows get all their columns populated before later pages.\n */\nfunction buildQueryGrid(pagedObjectSets, functionColDefs) {\n const queries = [];\n for (const pagedObjectSet of pagedObjectSets) {\n for (const locator of functionColDefs) {\n queries.push({\n queryDefinition: locator.queryDefinition,\n options: {\n params: locator.getFunctionParams(pagedObjectSet),\n dedupeIntervalMs: locator.dedupeIntervalMs ?? DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS\n }\n });\n }\n }\n return {\n queries,\n numColumns: functionColDefs.length\n };\n}\n\n/**\n * Merges paged results into one merged result per column.\n * Each column has results spread across pages — this combines their\n * functionsMaps so buildFunctionColumnData can look up any object by key.\n *\n * Relies on QueryGrid layout: results[i] belongs to column (i % numColumns).\n * i.e. the first N results are the first page of each column, the next N results are the second page, etc.\n */\nfunction mergePagedResults(results, numColumns) {\n if (numColumns === 0) return [];\n const merged = Array.from({\n length: numColumns\n }, () => ({\n isLoading: false,\n error: undefined,\n functionsMap: {}\n }));\n results.forEach((result, index) => {\n const columnIndex = index % numColumns;\n const entry = merged[columnIndex];\n if (result.isLoading) {\n entry.isLoading = true;\n }\n if (result.error) {\n entry.error = result.error;\n }\n const pageData = result.data;\n if (pageData) {\n Object.assign(entry.functionsMap, pageData);\n }\n });\n return merged;\n}\nfunction buildFunctionColumnData(results, functionColDefs, objects, disabled, prevColumnData) {\n const columnData = {};\n if (disabled || !objects) return columnData;\n results.forEach((result, index) => {\n const locator = functionColDefs[index];\n if (!locator) return;\n const columnId = String(locator.id);\n columnData[columnId] = {};\n objects.forEach(obj => {\n const key = String(obj.$primaryKey);\n const prevData = prevColumnData[columnId]?.[key]?.data;\n columnData[columnId][key] = createAsyncCellData(resolveCell(result, locator.getKey(obj), locator.getValue, prevData));\n });\n });\n return columnData;\n}\n\n/** Resolves the cell state: error, loaded, or loading with previous data. */\nfunction resolveCell(result, objectKey, getValue, prevData) {\n if (result.error) {\n return {\n isLoading: false,\n error: result.error\n };\n }\n if (objectKey in result.functionsMap) {\n const rawData = result.functionsMap[objectKey];\n return {\n isLoading: false,\n data: getValue ? getValue(rawData) : rawData\n };\n }\n // Key not in results — still loading, or query returned no data for this object\n // Return with previous data\n return {\n isLoading: result.isLoading,\n data: prevData\n };\n}\nconst useStableObjects = objects => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => objects, [\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify((objects ?? []).map(item => ({\n $apiName: item.$apiName,\n $primaryKey: item.$primaryKey\n })).sort((a, b) => {\n if (a.$apiName !== b.$apiName) {\n return a.$apiName.localeCompare(b.$apiName);\n }\n return String(a.$primaryKey).localeCompare(String(b.$primaryKey));\n }))]);\n};","/*\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 { useObjectSet, useOsdkObjects } from \"@osdk/react/experimental\";\nimport { useMemo } from \"react\";\nimport { DEFAULT_OBJECT_TABLE_DEDUPE_INTERVAL_MS, DEFAULT_PAGE_SIZE } from \"../utils/constants.js\";\nimport { useFunctionColumnsData } from \"./useFunctionColumnsData.js\";\n/**\n * This hook is a wrapper that conditionally uses either useObjectSet or useOsdkObjects\n * based on whether an objectSet prop is provided.\n * It extracts RDP locators from columnDefinitions and applies withProperties\n * to return data containing the derived properties.\n */\nexport function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting, objectSet, objectSetOptions, dedupeIntervalMs = DEFAULT_OBJECT_TABLE_DEDUPE_INTERVAL_MS, pageSize = DEFAULT_PAGE_SIZE) {\n const orderBy = useMemo(() => {\n if (!sorting || sorting.length === 0) {\n return undefined;\n }\n return sorting.reduce((acc, sort) => {\n acc[sort.id] = sort.desc ? \"desc\" : \"asc\";\n return acc;\n }, {});\n }, [sorting]);\n\n // Extract derived properties definition\n const withProperties = useMemo(() => {\n if (!columnDefinitions) {\n return;\n }\n const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(colLocator => {\n return colLocator.type === \"rdp\";\n });\n if (!rdpColumns.length) {\n return;\n }\n return rdpColumns.reduce((acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur.creator\n };\n }, {});\n }, [columnDefinitions]);\n\n // When objectSet is provided and it's an object type, use useObjectSet. Otherwise, use useOsdkObjects.\n const isObjectType = objectOrInterfaceType.type === \"object\";\n const shouldUseObjectSet = !!objectSet && isObjectType;\n\n // When shouldUseObjectSet is true, we know objectSet is defined\n // and objectOrInterfaceType is an ObjectTypeDefinition\n const objectSetResult = useObjectSet(shouldUseObjectSet ? objectSet : undefined, {\n ...objectSetOptions,\n withProperties: withProperties,\n where: filter,\n orderBy,\n pageSize,\n enabled: shouldUseObjectSet,\n dedupeIntervalMs\n });\n const osdkObjectsResult = useOsdkObjects(objectOrInterfaceType, {\n withProperties,\n pageSize,\n where: filter,\n orderBy,\n enabled: !shouldUseObjectSet,\n dedupeIntervalMs\n });\n\n // Get the result from the appropriate hook\n const baseResult = shouldUseObjectSet ? objectSetResult : osdkObjectsResult;\n const primaryKeyApiName = objectOrInterfaceType.type === \"object\" ? objectOrInterfaceType.primaryKeyApiName : undefined;\n\n // Call useFunctionColumnsData to get function column data\n const functionColumnData = useFunctionColumnsData({\n objectSet: baseResult.objectSet,\n objects: baseResult.data,\n columnDefinitions,\n primaryKeyApiName,\n pageSize\n });\n\n // Merge function column data into each object\n const mergedData = useMemo(() => {\n if (!baseResult.data) return baseResult.data;\n return baseResult.data.map(obj => {\n const objKey = String(obj.$primaryKey);\n const functionData = {};\n\n // Collect all function column data for this object\n Object.entries(functionColumnData).forEach(([columnId, columnData]) => {\n if (columnData[objKey]) {\n functionData[columnId] = columnData[objKey];\n }\n });\n\n // Return object with function data merged in\n return {\n ...obj,\n ...functionData\n };\n });\n }, [baseResult.data, functionColumnData]);\n\n // Return the result with merged data\n return {\n ...baseResult,\n data: mergedData\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const getRowId = row => {\n return getRowIdFromPrimaryKey(row.$primaryKey);\n};\nexport const getRowIdFromPrimaryKey = primaryKey => primaryKey.toString();","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\nexport function useRowSelection({\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelection,\n data\n}) {\n // The rowSelectionState in uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState({});\n\n // Used for shift-click behavior in \"multiple\" mode\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState(null);\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n // Row selection state\n // If controlled mode, return the state from selectedRows prop\n // If uncontrolled, return the internalRowSelection state\n const rowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled) {\n const selectedRowIds = isAllSelectedProp ? (data ?? []).map(item => item.$primaryKey) : selectedRows;\n return getRowSelectionState(selectedRowIds);\n }\n return internalRowSelection;\n }, [enableRowSelection, isControlled, selectedRows, isAllSelectedProp, internalRowSelection, data]);\n const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;\n const totalCount = data?.length ?? 0;\n // In controlled mode, use the prop if provided, otherwise calculate based on selected count\n const isAllSelected = isControlled && isAllSelectedProp !== undefined ? isAllSelectedProp : totalCount > 0 && selectedCount === totalCount;\n const hasSelection = isAllSelected || selectedCount > 0;\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n const newSelectedRows = isAllSelected ? [] : data.map(item => item.$primaryKey);\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows, true);\n }, [enableRowSelection, data, isAllSelected, isControlled, onRowSelection]);\n const onToggleRow = useCallback((rowId, rowIndex, isShiftClick = false) => {\n if (!enableRowSelection || !data) return;\n let newSelectedRows = [];\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n } else {\n // Multiple selection mode\n\n // When user does shiftClick but lastSelectedRowIndex is null,\n // it is treated as a normal click in multiple selection\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows({\n rowId,\n rowIndex,\n data,\n lastSelectedRowIndex,\n rowSelectionState\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n newSelectedRows = getMultipleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n // Only update lastSelectedRowIndex if we're selecting (not deselecting)\n if (!isCurrentlySelected({\n rowIndex,\n data,\n rowSelectionState\n })) {\n setLastSelectedRowIndex(rowIndex);\n }\n }\n }\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows, false);\n }, [enableRowSelection, data, selectionMode, isControlled, onRowSelection, rowSelectionState, lastSelectedRowIndex]);\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow\n };\n}\nfunction getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n // Toggle row selection in single selection mode\n const newSelectedRows = rowSelectionState[rowId] ? [] : [primaryKey];\n return newSelectedRows;\n}\nfunction getRangeSelectionRows({\n lastSelectedRowIndex,\n rowIndex,\n data,\n rowSelectionState\n}) {\n // This function is only called if lastSelectedRowIndex is not null\n // This condition is added for typechecks only\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n // Add all rows in range to selectedRows if not yet selected\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\nfunction isCurrentlySelected({\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return currentlySelected.includes(primaryKey);\n}\nfunction getMultipleSelectionRows({\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n // Handles single row toggle in multiple selection mode\n const newSelectedRows = isCurrentlySelected({\n rowIndex,\n data,\n rowSelectionState\n }) ? currentlySelected.filter(i => i !== primaryKey) : [...currentlySelected, primaryKey];\n return newSelectedRows;\n}\n\n/**\n * Builds a range of rows from startIndex to endIndex\n */\nfunction getRowsInRange(data, startIndex, endIndex) {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows = [];\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n return rows;\n}\n\n/**\n * Converts an array of primary keys to a RowSelectionState object\n */\nfunction getRowSelectionState(primaryKeys) {\n return primaryKeys.reduce((acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n }, {});\n}\n\n/**\n * Converts from a RowSelectionState object back to an array of primary keys\n */\nfunction getSelectedPrimaryKeys(selectionState, data) {\n return data.filter(item => selectionState[getRowId(item)]).map(item => item.$primaryKey);\n}","/*\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 { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nexport function SelectionHeaderCell({\n isAllSelected,\n hasSelection,\n onToggleAll\n}) {\n return /*#__PURE__*/React.createElement(Checkbox, {\n indeterminate: hasSelection && !isAllSelected,\n checked: isAllSelected,\n onCheckedChange: onToggleAll,\n \"aria-label\": \"Select all rows\"\n });\n}\nexport function SelectionCell({\n row,\n onToggleRow\n}) {\n const handleClick = useCallback(event => {\n // TODO: Create ActionBoundary component\n event.stopPropagation();\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n }, [onToggleRow, row.id, row.index]);\n const handleKeyDown = useCallback(event => {\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 }, [onToggleRow, row.id, row.index]);\n return /*#__PURE__*/React.createElement(\"div\", {\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: row.getIsSelected(),\n \"aria-label\": `Select row ${row.index + 1}`\n }));\n}","/*\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, { useMemo, useRef } from \"react\";\nimport { SelectionCell, SelectionHeaderCell } from \"../SelectionCells.js\";\nimport { SELECTION_COLUMN_ID, SELECTION_COLUMN_WIDTH } from \"../utils/constants.js\";\nexport const useSelectionColumn = ({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n}) => {\n // TODO: Replace with useLatestRef\n const isAllSelectedRef = useRef(isAllSelected);\n isAllSelectedRef.current = isAllSelected;\n const hasSelectionRef = useRef(hasSelection);\n hasSelectionRef.current = hasSelection;\n const onToggleAllRef = useRef(onToggleAll);\n onToggleAllRef.current = onToggleAll;\n const onToggleRowRef = useRef(onToggleRow);\n onToggleRowRef.current = onToggleRow;\n const selectionColumn = useMemo(() => {\n if (selectionMode === \"none\") return null;\n const colDef = {\n id: SELECTION_COLUMN_ID,\n header: () => selectionMode === \"multiple\" ? /*#__PURE__*/React.createElement(SelectionHeaderCell, {\n isAllSelected: isAllSelectedRef.current,\n hasSelection: hasSelectionRef.current,\n onToggleAll: onToggleAllRef.current\n }) : null,\n cell: ({\n row\n }) => /*#__PURE__*/React.createElement(SelectionCell, {\n row: row,\n onToggleRow: onToggleRowRef.current\n }),\n size: SELECTION_COLUMN_WIDTH,\n minSize: SELECTION_COLUMN_WIDTH,\n maxSize: SELECTION_COLUMN_WIDTH,\n enableSorting: false,\n enableResizing: false,\n enablePinning: false\n };\n return colDef;\n }, [selectionMode]);\n return selectionColumn;\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nexport const useTableSorting = ({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n}) => {\n // The sorting state in uncontrolled mode\n const [internalSorting, setInternalSorting] = useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);\n const isControlled = orderBy !== undefined;\n\n // Sorting state\n // If controlled mode, return the state from orderBy prop\n // If uncontrolled, return the internalSorting state\n const sortingState = useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);\n const onSortingChange = useCallback(updater => {\n const newSorting = typeof updater === \"function\" ? updater(sortingState) : updater;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSorting(newSorting);\n }\n if (onOrderByChanged) {\n const newOrderBy = convertSortingStateToOrderBy(newSorting);\n onOrderByChanged(newOrderBy);\n }\n }, [isControlled, sortingState, onOrderByChanged]);\n return {\n sorting: sortingState,\n onSortingChange\n };\n};\nfunction convertOrderByToSortingState(orderBy) {\n return orderBy.map(({\n property,\n direction\n }) => ({\n id: property,\n desc: direction === \"desc\"\n }));\n}\nfunction convertSortingStateToOrderBy(sorting) {\n return sorting.map(({\n id,\n desc\n }) => ({\n property: id,\n direction: desc ? \"desc\" : \"asc\"\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableRow {\n position: absolute;\n display: flex;\n width: max-content;\n min-width: 100%;\n background-color: var(--osdk-table-row-bg-default);\n border-top: var(--osdk-table-row-divider);\n border-bottom: var(--osdk-table-border-width) solid transparent;\n\n &:last-child {\n border-bottom: var(--osdk-table-border);\n }\n\n /* Zebra rows */\n &:nth-child(even) {\n background-color: var(\n --osdk-table-row-bg-alternate,\n var(--osdk-table-row-bg-default)\n );\n }\n\n &:hover {\n z-index: 1;\n background-color: var(\n --osdk-table-row-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n border-top-color: var(--osdk-table-row-border-color-hover);\n border-bottom-color: var(--osdk-table-row-border-color-hover);\n }\n\n &[data-selected=\"true\"],\n &[data-focused=\"true\"] {\n z-index: 2;\n background-color: var(--osdk-table-row-bg-active);\n border-top-color: var(--osdk-table-row-border-color-active);\n border-bottom-color: var(--osdk-table-row-border-color-active);\n }\n\n &[data-selected=\"true\"] + &[data-selected=\"true\"] {\n border-top-color: transparent;\n }\n\n &[data-selected=\"true\"]:has(+ &[data-selected=\"true\"]) {\n border-bottom-color: transparent;\n }\n}\n","/*\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 { LoadingCell } from \"./LoadingCell.js\";\nimport rowStyles from \"./TableRow.module.css\";\nimport { DEFAULT_COLUMN_WIDTH, DEFAULT_ROW_HEIGHT } from \"./utils/constants.js\";\nexport function LoadingRow({\n headers,\n columnCount,\n translateY,\n rowHeight = DEFAULT_ROW_HEIGHT,\n columnWidth = DEFAULT_COLUMN_WIDTH\n}) {\n return /*#__PURE__*/React.createElement(\"tr\", {\n className: rowStyles.osdkTableRow,\n style: {\n height: `${rowHeight}px`,\n transform: `translateY(${translateY}px)`\n }\n }, /*#__PURE__*/React.createElement(React.Fragment, null, Array.from({\n length: columnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(LoadingCell, {\n key: `loading-cell-${index}`,\n width: width\n });\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableBody {\n display: grid;\n position: relative;\n width: max-content;\n min-width: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.draggableListContainer {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-draggable-item-gap);\n overflow-y: auto;\n}\n\n.draggableItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-draggable-item-gap);\n padding: var(--osdk-draggable-item-padding);\n background-color: var(--osdk-draggable-item-bg);\n border: var(--osdk-draggable-item-border);\n border-radius: var(--osdk-draggable-item-border-radius);\n width: 100%;\n touch-action: none;\n user-select: none;\n}\n\n.draggableItem[data-dragging=\"true\"] {\n opacity: 0.5;\n}\n\n.dragHandle {\n display: flex;\n cursor: var(--osdk-drag-handle-cursor);\n color: var(--osdk-draggable-item-drag-icon-color);\n\n &:hover {\n color: var(--osdk-draggable-item-drag-icon-color-hover);\n }\n\n &:active {\n cursor: var(--osdk-drag-handle-cursor-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.itemContent {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.removeButton {\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--osdk-draggable-item-drag-icon-color);\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n color: var(--osdk-typography-color-danger-rest);\n }\n\n &:active {\n color: var(--osdk-typography-color-danger-rest);\n background: oklch(\n from var(--osdk-surface-background-color-danger-hover) l c h / 0.2\n );\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { DragHandleVertical, SmallCross, Trash } from \"@blueprintjs/icons\";\nimport { closestCenter, DndContext as BaseDndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport styles from \"./DraggableList.module.css\";\nfunction DraggableListItem({\n item,\n onRemove,\n removeIconVariant = \"trash\",\n renderContent\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id: item.id\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition\n };\n const handleRemove = useCallback(() => {\n onRemove?.(item.id);\n }, [item.id, onRemove]);\n const RemoveIcon = removeIconVariant === \"trash\" ? Trash : SmallCross;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: setNodeRef,\n style: style,\n className: styles.draggableItem,\n \"data-dragging\": isDragging\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: styles.dragHandle,\n \"aria-label\": `Reorder ${item.label}`\n }, attributes, listeners), /*#__PURE__*/React.createElement(DragHandleVertical, {\n className: styles.icon\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemContent\n }, renderContent ? renderContent(item) : item.label), onRemove && /*#__PURE__*/React.createElement(Button, {\n className: styles.removeButton,\n onClick: handleRemove,\n \"aria-label\": `Remove ${item.label}`\n }, /*#__PURE__*/React.createElement(RemoveIcon, {\n className: styles.icon\n })));\n}\nexport function DraggableList({\n items,\n onReorder,\n onRemove,\n removeIconVariant = \"cross\",\n renderContent,\n emptyMessage,\n className\n}) {\n const itemIds = useMemo(() => items.map(item => item.id), [items]);\n const sensors = useSensors(useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5\n }\n }), useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n }));\n const handleDragEnd = useCallback(event => {\n const {\n active,\n over\n } = event;\n if (over && active.id !== over.id) {\n const oldIndex = items.findIndex(item => item.id === active.id);\n const newIndex = items.findIndex(item => item.id === over.id);\n onReorder(oldIndex, newIndex);\n }\n }, [items, onReorder]);\n const containerRef = useRef(null);\n useKeyboardEvents(containerRef);\n\n // TODO: Revert when @types/react is fixed\n const DndContext = BaseDndContext;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(styles.draggableListContainer, className)\n }, /*#__PURE__*/React.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n onDragEnd: handleDragEnd\n }, /*#__PURE__*/React.createElement(SortableContext, {\n items: itemIds,\n strategy: verticalListSortingStrategy\n }, items.map(item => /*#__PURE__*/React.createElement(DraggableListItem, {\n key: item.id,\n item: item,\n onRemove: onRemove,\n removeIconVariant: removeIconVariant,\n renderContent: renderContent\n })))), items.length === 0 && emptyMessage && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, emptyMessage));\n}\nconst useKeyboardEvents = containerRef => {\n // Base UI's DialogPopup calls stopPropagation on arrow key events, which\n // prevents them from reaching @dnd-kit's document-level KeyboardSensor\n // listener. We use a native capture-phase listener to intercept arrow keys\n // before the dialog can swallow them, and re-dispatch them on the document\n // so @dnd-kit can process keyboard-driven reordering.\n useEffect(() => {\n const el = containerRef.current;\n if (el == null) {\n return;\n }\n const ARROW_KEYS = new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\n function handleCapture(event) {\n if (!ARROW_KEYS.has(event.key)) {\n return;\n }\n\n // Only intercept when a drag is active (an item has [data-dragging=\"true\"])\n if (el.querySelector(\"[data-dragging=\\\"true\\\"]\") == null) {\n return;\n }\n event.stopPropagation();\n document.dispatchEvent(new KeyboardEvent(\"keydown\", {\n key: event.key,\n code: event.code,\n bubbles: true\n }));\n }\n el.addEventListener(\"keydown\", handleCapture, true);\n return () => el.removeEventListener(\"keydown\", handleCapture, true);\n }, [containerRef]);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n/* Override dialog styling */\n.columnConfigDialog {\n --osdk-dialog-min-width: var(--osdk-table-column-config-dialog-min-width);\n --osdk-dialog-min-height: var(--osdk-table-column-config-dialog-min-height);\n --osdk-dialog-body-padding: 0;\n}\n\n.dialogLayout {\n display: flex;\n flex-direction: row;\n gap: 0;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.visibleColumnsContainer {\n flex: 1.5;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5);\n background: var(--osdk-table-column-config-visible-columns-bg);\n border-right: 1px solid var(--osdk-surface-border-color-default);\n}\n\n.availableColumnsContainer {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5)\n calc(var(--osdk-surface-spacing) * 3);\n}\n\n.sectionHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--osdk-surface-spacing) * 5);\n}\n\n.sectionTitle {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: var(--osdk-typography-weight-bold);\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n gap: var(--osdk-surface-spacing);\n}\n\n.countTag {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--osdk-custom-color-gray-3);\n padding: calc(var(--osdk-surface-spacing) / 2)\n calc(var(--osdk-surface-spacing) * 1.5);\n border-radius: var(--osdk-surface-border-radius);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-default);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.sectionHint {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n.columnList {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.searchContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n flex-shrink: 0;\n}\n\n.propertiesList {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.categoryHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n margin: 0;\n gap: calc(var(--osdk-surface-spacing) * 3);\n flex-shrink: 0;\n}\n\n.categoryTrigger {\n display: flex;\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.categoryTitle {\n flex: 1;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-bold);\n text-align: left;\n}\n\n.categoryCount {\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n margin-left: var(--osdk-surface-spacing);\n}\n\n.caretIcon {\n color: var(--osdk-typography-color-muted);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.categoryTrigger[data-panel-open] .caretIcon {\n transform: rotate(180deg);\n}\n\n.checkbox {\n flex-shrink: 0;\n}\n\n.propertyList {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.propertyItem {\n display: flex;\n align-items: center;\n flex-direction: row;\n width: 100%;\n gap: calc(var(--osdk-surface-spacing) * 3);\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n}\n\n.checkboxIndicator {\n color: var(--osdk-intent-primary-foreground);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.selectAllLabel {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 3);\n cursor: pointer;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-bold);\n}\n\n.propertyLabel {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 3);\n cursor: pointer;\n flex: 1;\n min-width: 0;\n}\n\n.propertyName {\n text-align: left;\n flex: 1;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: 400;\n color: var(--osdk-typography-color-default-rest);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.infoIcon {\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n width: calc(var(--osdk-checkbox-icon-size) * 0.75);\n height: calc(var(--osdk-checkbox-icon-size) * 0.75);\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\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 { Collapsible } from \"@base-ui/react/collapsible\";\nimport { CaretDown, Cog, SmallInfoSign } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./ColumnConfigDialog.module.css\";\nexport function ColumnConfigDialog({\n isOpen,\n onClose,\n columnOptions,\n currentVisibility,\n currentColumnOrder,\n onApply,\n isValidConfig\n}) {\n const [visibleColumns, setVisibleColumns] = useState([]);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const allColumns = useMemo(() => {\n return columnOptions.map(opt => {\n const isVisible = currentVisibility ? currentVisibility[opt.id] : false;\n return {\n id: opt.id,\n label: opt.name,\n isVisible\n };\n });\n }, [columnOptions, currentVisibility]);\n\n // Sync local state with prop when dialog is opened\n useEffect(() => {\n if (isOpen) {\n const visibleCols = allColumns.filter(col => col.isVisible);\n\n // Sort by current column order if available\n if (!!currentColumnOrder?.length) {\n visibleCols.sort((a, b) => {\n const indexA = currentColumnOrder.indexOf(a.id);\n const indexB = currentColumnOrder.indexOf(b.id);\n // If not in order array, put at end\n const orderA = indexA === -1 ? Infinity : indexA;\n const orderB = indexB === -1 ? Infinity : indexB;\n return orderA - orderB;\n });\n }\n setVisibleColumns(visibleCols);\n setSearchQuery(\"\");\n }\n }, [isOpen, allColumns, currentColumnOrder]);\n const handleApply = useCallback(() => {\n onApply(getColumnConfig(allColumns, visibleColumns));\n onClose();\n }, [allColumns, visibleColumns, onApply, onClose]);\n\n // If no condition provided, default to valid\n const isValid = isValidConfig ? isValidConfig(getColumnConfig(allColumns, visibleColumns)) : true;\n const isApplyDisabled = visibleColumns.length === 0 || !isValid;\n const handleReorderColumns = useCallback((fromIndex, toIndex) => {\n setVisibleColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleRemoveColumn = useCallback(columnId => {\n setVisibleColumns(prev => prev.filter(col => col.id !== columnId));\n }, []);\n const handleToggleColumn = useCallback(column => {\n setVisibleColumns(prev => {\n const isCurrentlyVisible = prev.some(col => col.id === column.id);\n if (isCurrentlyVisible) {\n return prev.filter(col => col.id !== column.id);\n } else {\n return [...prev, column];\n }\n });\n }, []);\n const handleSearchChange = useCallback(event => {\n setSearchQuery(event.target.value);\n }, []);\n const handleSelectAll = useCallback(columns => {\n setVisibleColumns(prev => {\n const allSelected = columns.every(col => prev.some(v => v.id === col.id));\n if (allSelected) {\n // Deselect all filtered columns\n return prev.filter(v => !columns.some(col => col.id === v.id));\n } else {\n // Select all filtered columns that aren't already selected\n const newColumns = columns.filter(col => !prev.some(v => v.id === col.id));\n return [...prev, ...newColumns];\n }\n });\n }, []);\n const filteredAvailableColumns = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n if (!query) {\n return allColumns;\n }\n return allColumns.filter(col => (col.label?.toLowerCase().includes(query) ?? false) || col.id.toLowerCase().includes(query));\n }, [allColumns, searchQuery]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply,\n disabled: isApplyDisabled\n }, \"Apply\")), [onClose, handleApply, isApplyDisabled]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer,\n className: styles.columnConfigDialog\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.dialogLayout\n }, /*#__PURE__*/React.createElement(VisibleColumnsList, {\n columns: visibleColumns,\n onReorder: handleReorderColumns,\n onRemove: handleRemoveColumn\n }), /*#__PURE__*/React.createElement(AvailableColumnsList, {\n visibleColumns: visibleColumns,\n searchQuery: searchQuery,\n onSearchChange: handleSearchChange,\n onToggleColumn: handleToggleColumn,\n onSelectAll: handleSelectAll,\n filteredColumns: filteredAvailableColumns\n })));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Configure Table Columns\");\nconst getColumnConfig = (allColumns, visibleColumns) => {\n const hiddenColumns = allColumns.filter(col => !visibleColumns.some(v => v.id === col.id));\n return [...visibleColumns.map(col => ({\n columnId: col.id,\n isVisible: true\n })), ...hiddenColumns.map(col => ({\n columnId: col.id,\n isVisible: false\n }))];\n};\nfunction VisibleColumnsList({\n columns,\n onReorder,\n onRemove\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.visibleColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionTitle\n }, /*#__PURE__*/React.createElement(\"span\", null, \"Visible Columns\"), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.countTag\n }, columns.length)), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHint\n }, \"Drag to reorder\")), /*#__PURE__*/React.createElement(DraggableList, {\n items: columns,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"trash\",\n emptyMessage: \"No visible columns\",\n className: styles.columnList\n }));\n}\nfunction AvailableColumnsList({\n visibleColumns,\n searchQuery,\n onSearchChange,\n onToggleColumn,\n onSelectAll,\n filteredColumns\n}) {\n const selectedCount = visibleColumns.length;\n const totalCount = filteredColumns.length;\n const allFilteredSelected = filteredColumns.every(col => visibleColumns.some(v => v.id === col.id));\n const someFilteredSelected = filteredColumns.some(col => visibleColumns.some(v => v.id === col.id));\n const handleSelectAllClick = useCallback(() => {\n onSelectAll(filteredColumns);\n }, [filteredColumns, onSelectAll]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.availableColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.sectionHeader, styles.sectionTitle)\n }, \"Add or Remove Columns\"), /*#__PURE__*/React.createElement(SearchBar, {\n value: searchQuery,\n onChange: onSearchChange,\n placeholder: \"Search...\",\n \"aria-label\": \"Search available columns\",\n className: styles.searchContainer\n }), /*#__PURE__*/React.createElement(Collapsible.Root, {\n defaultOpen: true,\n className: styles.propertiesList\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.categoryHeader\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.selectAllLabel\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: allFilteredSelected,\n indeterminate: someFilteredSelected && !allFilteredSelected,\n onCheckedChange: handleSelectAllClick,\n className: styles.checkbox\n }), \"All Columns\"), /*#__PURE__*/React.createElement(Collapsible.Trigger, {\n className: styles.categoryTrigger\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.categoryCount\n }, selectedCount, \"/\", totalCount), /*#__PURE__*/React.createElement(CaretDown, {\n className: styles.caretIcon\n }))), /*#__PURE__*/React.createElement(Collapsible.Panel, {\n className: styles.propertyList\n }, filteredColumns.length === 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, \"No matching columns found\") : filteredColumns.map(column => /*#__PURE__*/React.createElement(PropertyItem, {\n key: column.id,\n column: column,\n isSelected: visibleColumns.some(v => v.id === column.id),\n onToggle: onToggleColumn\n })))));\n}\nfunction PropertyItem({\n column,\n isSelected,\n onToggle,\n showInfoIcon = false\n}) {\n const handleClick = useCallback(() => {\n onToggle(column);\n }, [onToggle, column]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.propertyItem\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: styles.propertyLabel\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: isSelected,\n onCheckedChange: handleClick,\n className: styles.checkbox\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.propertyName\n }, column.label)), showInfoIcon && /*#__PURE__*/React.createElement(SmallInfoSign, {\n className: styles.infoIcon\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.sortColumnsList {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-surface-spacing);\n flex: 1;\n justify-content: space-between;\n overflow-x: hidden;\n}\n\n.sortableList {\n flex: 1;\n}\n\n.selectedColumnsContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n}\n\n.sortColumnItem {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n width: 100%;\n}\n\n.sortColumnName {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.sortDirectionButton {\n flex-shrink: 0;\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.sortIcon {\n color: var(--osdk-typography-color-muted);\n}\n\n.addColumnButton {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background-color: var(--osdk-button-secondary-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n cursor: pointer;\n color: var(--osdk-button-secondary-color);\n margin-top: calc(var(--osdk-surface-spacing) * 2);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.addIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n}\n\n.addColumnText {\n flex: 1;\n text-align: left;\n}\n\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","/*\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 { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nexport function SortableItemsList({\n items,\n onReorder,\n onRemove,\n className\n}) {\n const renderContent = useCallback(item => item.content, []);\n return /*#__PURE__*/React.createElement(DraggableList, {\n items: items,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"cross\",\n renderContent: renderContent,\n className: className\n });\n}","/*\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 { Add, CaretDown, Cog, SortAlphabetical, SortAlphabeticalDesc } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\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 { SortableItemsList } from \"./SortableItemsList.js\";\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions\n}) {\n const [selectedSortColumns, setSelectedSortColumns] = useState([]);\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns = [];\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 const handleAddColumn = useCallback(column => {\n setSelectedSortColumns(prev => [...prev, {\n ...column,\n direction: \"asc\"\n }]);\n }, []);\n const handleRemoveSortColumn = useCallback(id => {\n setSelectedSortColumns(prev => prev.filter(item => item.id !== id));\n }, []);\n const handleReorderSortColumns = useCallback((fromIndex, toIndex) => {\n setSelectedSortColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleToggleSortDirection = useCallback(id => {\n setSelectedSortColumns(prev => prev.map(item => item.id === id ? {\n ...item,\n direction: item.direction === \"asc\" ? \"desc\" : \"asc\"\n } : item));\n }, []);\n const handleApply = useCallback(() => {\n const sortingState = selectedSortColumns.map(col => ({\n id: col.id,\n desc: col.direction === \"desc\"\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n const availableColumns = useMemo(() => columnOptions.filter(col => col.canSort && !selectedSortColumns.some(selected => selected.id === col.id)), [columnOptions, selectedSortColumns]);\n const searchableMenuItems = useMemo(() => availableColumns.map(col => ({\n key: col.id,\n label: col.name\n })), [availableColumns]);\n const handleMenuItemSelected = useCallback(key => {\n const column = availableColumns.find(col => col.id === key);\n if (column) {\n handleAddColumn(column);\n }\n }, [availableColumns, handleAddColumn]);\n const sortableItems = useMemo(() => {\n return selectedSortColumns.map(item => ({\n id: item.id,\n label: item.name,\n content: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnItem\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(styles.sortColumnName, styles.truncate)\n }, item.name), /*#__PURE__*/React.createElement(Button, {\n className: styles.sortDirectionButton,\n onClick: () => handleToggleSortDirection(item.id),\n \"aria-label\": `Toggle sort direction for ${item.name}`\n }, item.direction === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.sortIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.sortIcon\n })))\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply\n }, \"Apply\")), [handleApply, onClose]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnsList\n }, /*#__PURE__*/React.createElement(SortableItemsList, {\n items: sortableItems,\n onReorder: handleReorderSortColumns,\n onRemove: handleRemoveSortColumn,\n className: styles.sortableList\n }), /*#__PURE__*/React.createElement(SearchableMenu, {\n items: searchableMenuItems,\n onItemSelected: handleMenuItemSelected,\n trigger: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Add, {\n className: styles.addIcon\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.addColumnText\n }, \"Add Column to Sort\"), /*#__PURE__*/React.createElement(CaretDown, null)),\n triggerClassName: styles.addColumnButton,\n disabled: availableColumns.length === 0,\n searchPlaceholder: \"Search columns\",\n emptyMessage: \"No matching columns\"\n })));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Sort on Multiple Columns\");","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableHeader {\n display: grid;\n position: sticky;\n top: 0;\n width: max-content;\n min-width: 100%;\n height: var(--osdk-table-header-height);\n z-index: var(--osdk-surface-z-index-1);\n background-color: var(--osdk-table-header-bg);\n}\n\n.osdkTableHeader[data-resizing=\"true\"] {\n cursor: col-resize;\n user-select: none;\n}\n\n.osdkTableHeaderRow {\n display: flex;\n width: max-content;\n min-width: 100%;\n border-top: var(--osdk-table-border);\n border-bottom: var(--osdk-table-border);\n}\n\n.osdkTableHeaderCell {\n display: flex;\n align-items: center;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-weight: var(--osdk-table-header-fontWeight);\n font-size: var(--osdk-table-header-fontSize);\n color: var(--osdk-table-header-color);\n border-right: var(--osdk-table-header-divider);\n background-color: inherit;\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: none;\n }\n}\n\n.osdkTableHeaderCell[data-pinned=\"left\"],\n.osdkTableHeaderCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-2);\n background-color: var(--osdk-table-header-bg);\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableHeaderCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableHeaderCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableSelectionHeaderCell {\n justify-content: center;\n padding: 0;\n}\n\n.osdkTableHeaderResizer {\n background: none;\n cursor: col-resize;\n height: 100%;\n position: absolute;\n right: calc(-1 * var(--osdk-table-border-width));\n top: 0;\n touch-action: none;\n width: 3px;\n z-index: var(--osdk-surface-z-index-2);\n\n &:hover {\n background: var(--osdk-table-resizer-color-hover);\n }\n\n &:active {\n background: var(--osdk-table-resizer-color-active);\n }\n}\n\n.osdkLoadingHeaderCell {\n height: var(--osdk-table-header-fontSize);\n flex: 1;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkHeaderContent {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.osdkHeaderContent:has([role=\"checkbox\"]) {\n display: flex;\n justify-content: center;\n}\n","/*\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 { flexRender } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport styles from \"./TableHeaderContent.module.css\";\nexport function TableHeaderContent({\n header\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkHeaderContent\n }, flexRender(header.column.columnDef.header, header.getContext()));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCenterContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.osdkContentGap {\n display: flex;\n gap: calc(var(--osdk-surface-spacing) * 2);\n}\n\n.osdkHeaderContainer {\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n align-self: stretch;\n}\n\n.osdkHeaderContentLeft {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.osdkHeaderContentRight {\n flex-shrink: 0;\n}\n\n.osdkHeaderText {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n line-clamp: 3;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-grow: 1;\n}\n\n.osdkHeaderPopoverTrigger {\n padding: var(--osdk-table-header-menu-padding);\n flex-shrink: 0;\n flex-grow: 0;\n background-color: var(--osdk-table-header-menu-bg);\n border: var(--osdk-table-header-menu-border);\n border-radius: var(--osdk-surface-border-radius);\n color: var(--osdk-table-header-menu-color);\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background-color: var(--osdk-table-header-menu-bg-hover);\n }\n\n &[data-popup-open] {\n background-color: var(--osdk-table-header-menu-bg-active);\n color: var(--osdk-table-header-menu-color-active);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-table-header-menu-icon-color);\n}\n\n.osdkHeaderPopup {\n box-sizing: border-box;\n padding: var(--osdk-surface-spacing);\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-surface-border);\n background-color: var(--osdk-surface-background-color-default-rest);\n color: var(--osdk-typography-color-default-rest);\n box-shadow: var(--osdk-surface-shadow-2);\n font-size: var(--osdk-typography-size-body-medium);\n}\n\n.osdkHeaderMenuItem {\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);\n cursor: pointer;\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n border-radius: var(--osdk-surface-border-radius);\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderMenuItem .osdkHeaderActiveMenuItem {\n background-color: var(--osdk-intent-primary-rest);\n color: var(--osdk-intent-primary-foreground);\n\n &:hover {\n background-color: var(--osdk-intent-primary-hover);\n }\n\n &:active {\n background-color: var(--osdk-intent-primary-active);\n }\n}\n\n.sortIndex {\n font-size: var(--osdk-typography-size-body-x-small);\n margin-left: var(--osdk-surface-spacing);\n color: var(--osdk-typography-color-muted);\n}\n","/*\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 { Menu } from \"@base-ui/react/menu\";\nimport { ChevronDown, Pin, Remove, Settings, Sort, SortAlphabetical, SortAlphabeticalDesc, Unpin, VerticalDistribution } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport styles from \"./TableHeaderWithPopover.module.css\";\nfunction HeaderMenuItem({\n onClick,\n icon: Icon,\n label,\n active = false\n}) {\n return /*#__PURE__*/React.createElement(Menu.Item, {\n closeOnClick: true,\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderMenuItem, active && styles.osdkHeaderActiveMenuItem),\n onClick: onClick\n }, /*#__PURE__*/React.createElement(Icon, {\n className: styles.osdkHeaderIcon\n }), /*#__PURE__*/React.createElement(\"span\", null, label));\n}\nexport function TableHeaderWithPopover({\n header,\n table,\n isColumnPinned,\n onResetSize,\n columnOptions,\n featureFlags,\n onOpenColumnConfig,\n onOpenMultiSort\n}) {\n const {\n showSortingItems = false,\n showPinningItems = false,\n showResizeItem = false,\n showConfigItem = false\n } = featureFlags ?? {};\n const {\n setColumnPinning,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const [isOpen, setIsOpen] = useState(false);\n const handlePinLeft = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: [...(prev.left || []), header.column.id],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleUnpin = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: prev.left?.filter(id => id !== header.column.id) || [],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleSortAscending = useCallback(() => {\n header.column.toggleSorting(false);\n setSorting?.([{\n id: header.column.id,\n desc: false\n }]);\n }, [header.column, setSorting]);\n const handleSortDescending = useCallback(() => {\n header.column.toggleSorting(true);\n setSorting?.([{\n id: header.column.id,\n desc: true\n }]);\n }, [header.column, setSorting]);\n const handleClearAllSorts = useCallback(() => {\n header.column.clearSorting();\n setSorting?.([]);\n }, [header.column, setSorting]);\n const handleResetSize = useCallback(() => {\n header.column.resetSize();\n if (onResetSize) {\n onResetSize();\n }\n }, [header.column, onResetSize]);\n const handleInteraction = useCallback(e => {\n e.preventDefault();\n setIsOpen(prev => !prev);\n }, []);\n const handleOpenColumnConfig = useCallback(() => {\n onOpenColumnConfig?.();\n setIsOpen(false);\n }, [onOpenColumnConfig]);\n const handleOpenMultiSort = useCallback(() => {\n onOpenMultiSort?.();\n setIsOpen(false);\n }, [onOpenMultiSort]);\n const isSorted = header.column.getIsSorted();\n const isSortable = header.column.getCanSort();\n const sortIndex = currentSorting?.findIndex(s => s.id === header.column.id) ?? -1;\n const hasAnyMenuItems = showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Menu.Root, {\n open: isOpen,\n onOpenChange: setIsOpen\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContainer),\n onContextMenu: handleInteraction\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentLeft)\n }, isColumnPinned && /*#__PURE__*/React.createElement(Pin, {\n className: styles.osdkHeaderIcon\n }), /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentRight)\n }, isSorted && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkCenterContainer\n }, isSorted === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.osdkHeaderIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.osdkHeaderIcon\n }), currentSorting.length > 1 && sortIndex >= 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.sortIndex\n }, sortIndex + 1)), hasAnyMenuItems && /*#__PURE__*/React.createElement(Menu.Trigger, {\n \"aria-label\": `Open header menu for column with id=${header.column.id}`,\n className: classNames(styles.osdkCenterContainer, styles.osdkHeaderPopoverTrigger)\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n className: styles.osdkHeaderIcon\n }))), /*#__PURE__*/React.createElement(Menu.Portal, {\n container: document.body\n }, /*#__PURE__*/React.createElement(Menu.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.osdkHeaderPopup\n }, showPinningItems && !isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handlePinLeft,\n icon: Pin,\n label: \"Pin column\"\n }), showPinningItems && isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleUnpin,\n icon: Unpin,\n label: \"Unpin Column\",\n active: true\n }), showSortingItems && isSortable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortAscending,\n icon: SortAlphabetical,\n label: \"Sort ascending\",\n active: isSorted === \"asc\"\n }), /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortDescending,\n icon: SortAlphabeticalDesc,\n label: \"Sort descending\",\n active: isSorted === \"desc\"\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenMultiSort,\n icon: Sort,\n label: \"Sort on multiple columns\"\n })), showSortingItems && !!currentSorting?.length && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleClearAllSorts,\n icon: Remove,\n label: \"Clear all sorts\"\n }), showResizeItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleResetSize,\n icon: VerticalDistribution,\n label: \"Reset Column Size\"\n }), showConfigItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenColumnConfig,\n icon: Settings,\n label: \"Configure Columns\"\n })))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getColumnPinningStyles(column) {\n const isPinned = column.getIsPinned();\n return {\n columnStyles: {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n width: column.getSize()\n }\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { ColumnConfigDialog } from \"./ColumnConfigDialog.js\";\nimport { MultiColumnSortDialog } from \"./MultiColumnSortDialog.js\";\nimport styles from \"./TableHeader.module.css\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport { TableHeaderWithPopover } from \"./TableHeaderWithPopover.js\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nconst getHeaderName = (column, allHeaders) => {\n const {\n id,\n columnDef\n } = column;\n const header = allHeaders.find(header => header.id === id);\n const headerDef = columnDef.header;\n if (headerDef) {\n if (typeof headerDef === \"string\") {\n return headerDef;\n }\n // Try to get header name from the renderHeader function\n if (header) {\n const displayedHeader = headerDef(header.getContext());\n if (typeof displayedHeader === \"string\") return displayedHeader;\n }\n }\n // Fallback to use the columnName provided by user or id\n const {\n meta\n } = columnDef;\n return meta?.columnName ?? id;\n};\nexport function TableHeader({\n table,\n headerMenuFeatureFlags\n}) {\n // TODO: If value is number type, right align header\n\n const {\n setColumnOrder,\n setColumnVisibility,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const currentVisibility = table.getState().columnVisibility;\n const currentColumnOrder = table.getState().columnOrder;\n const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;\n const [configDialogOpen, setConfigDialogOpen] = useState(false);\n const [multiSortDialogOpen, setMultiSortDialogOpen] = useState(false);\n const handleOpenColumnConfig = useCallback(() => {\n setConfigDialogOpen(true);\n }, []);\n const handleCloseColumnConfig = useCallback(() => {\n setConfigDialogOpen(false);\n }, []);\n const handleOpenMultiSort = useCallback(() => {\n setMultiSortDialogOpen(true);\n }, []);\n const handleCloseMultiSort = useCallback(() => {\n setMultiSortDialogOpen(false);\n }, []);\n const handleApplyMultiSort = useCallback(sortColumns => {\n setMultiSortDialogOpen(false);\n setSorting?.(sortColumns);\n }, [setSorting]);\n const handleApplyColumnConfig = useCallback(updates => {\n const newVisibilityState = {};\n for (const update of updates) {\n newVisibilityState[update.columnId] = update.isVisible;\n }\n setColumnOrder(updates.map(col => col.columnId));\n setColumnVisibility(newVisibilityState);\n }, [setColumnOrder, setColumnVisibility]);\n const columnOptions = useMemo(() => {\n const allHeaders = table.getHeaderGroups().flatMap(headerGroup => headerGroup.headers);\n return table.getAllColumns().filter(column => column.id !== SELECTION_COLUMN_ID).map(column => {\n return {\n id: column.id,\n name: getHeaderName(column, allHeaders),\n canSort: column.getCanSort()\n };\n });\n }, [table]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"thead\", {\n className: styles.osdkTableHeader,\n \"data-resizing\": isResizing\n }, table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement(\"tr\", {\n key: headerGroup.id,\n className: styles.osdkTableHeaderRow\n }, headerGroup.headers.map(header => {\n const {\n columnStyles\n } = getColumnPinningStyles(header.column);\n const isColumnPinned = header.column.getIsPinned();\n const isSelectColumn = header.id === SELECTION_COLUMN_ID;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id,\n \"data-pinned\": header.column.getIsPinned(),\n className: classNames(styles.osdkTableHeaderCell, {\n [styles.osdkTableSelectionHeaderCell]: isSelectColumn\n }),\n style: columnStyles\n }, header.isPlaceholder ? null : isSelectColumn ? /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n }) : /*#__PURE__*/React.createElement(TableHeaderWithPopover, {\n table: table,\n header: header,\n isColumnPinned: isColumnPinned,\n columnOptions: columnOptions,\n featureFlags: headerMenuFeatureFlags,\n onOpenColumnConfig: handleOpenColumnConfig,\n onOpenMultiSort: handleOpenMultiSort\n }), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableHeaderResizer,\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler()\n }));\n })))), !!columnOptions?.length && /*#__PURE__*/React.createElement(ColumnConfigDialog, {\n isOpen: configDialogOpen,\n onClose: handleCloseColumnConfig,\n columnOptions: columnOptions,\n currentVisibility: currentVisibility,\n currentColumnOrder: currentColumnOrder,\n onApply: handleApplyColumnConfig\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(MultiColumnSortDialog, {\n isOpen: multiSortDialogOpen,\n onClose: handleCloseMultiSort,\n columnOptions: columnOptions,\n currentSorting: currentSorting,\n onApply: handleApplyMultiSort\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { 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 { DEFAULT_LOADING_COLUMN_WIDTH, DEFAULT_ROW_HEIGHT, MIN_LOADING_ROWS } from \"./utils/constants.js\";\nexport function LoadingStateTable({\n table,\n tableContainerRef,\n headerGroups,\n rowHeight = DEFAULT_ROW_HEIGHT,\n columnWidth = DEFAULT_LOADING_COLUMN_WIDTH\n}) {\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(() => headerGroups.length > 0 ? headerGroups[0].headers : [], [headerGroups]);\n const hasHeadersLoaded = headers.length > minHeaderCount;\n const headerRef = useRef(null);\n const bodyRef = useRef(null);\n const [loadingRowCount, setLoadingRowCount] = useState(MIN_LOADING_ROWS);\n const [loadingColumnCount, setLoadingColumnCount] = useState(headers.length);\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 if (availableHeight > 0) {\n const rowsNeeded = Math.ceil(availableHeight / rowHeight);\n setLoadingRowCount(Math.max(rowsNeeded, MIN_LOADING_ROWS));\n }\n }\n }, [tableContainerRef, rowHeight]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasHeadersLoaded ? /*#__PURE__*/React.createElement(TableHeader, {\n table: table\n }) : /*#__PURE__*/React.createElement(\"thead\", {\n className: headerStyles.osdkTableHeader,\n ref: headerRef\n }, /*#__PURE__*/React.createElement(\"tr\", {\n className: headerStyles.osdkTableHeaderRow\n }, Array.from({\n length: loadingColumnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: `loading-header-${index}`,\n className: headerStyles.osdkTableHeaderCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: classNames(headerStyles.osdkLoadingHeaderCell, loadingStyles.osdkCellSkeleton)\n }));\n }))), /*#__PURE__*/React.createElement(\"tbody\", {\n className: bodyStyles.osdkTableBody,\n ref: bodyRef\n }, Array.from({\n length: loadingRowCount\n }).map((_, index) => /*#__PURE__*/React.createElement(LoadingRow, {\n key: `skeleton-${index}`,\n columnCount: loadingColumnCount,\n headers: headers,\n translateY: rowHeight * index,\n rowHeight: rowHeight,\n columnWidth: columnWidth\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.container {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.message {\n padding: calc(var(--osdk-surface-spacing) * 5);\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\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\";\nexport function NonIdealState({\n message\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.message\n }, message));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableWrapper {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: relative;\n}\n\n.osdkTableContainer {\n flex: 1;\n min-height: 0;\n overflow: auto;\n position: relative;\n}\n\n.osdkTableContainer table {\n border-collapse: collapse;\n display: grid;\n table-layout: fixed;\n width: max-content;\n min-width: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCellContextMenu {\n position: fixed;\n z-index: var(--osdk-surface-z-index-2);\n}\n","/*\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, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./CellContextMenu.module.css\";\nexport function CellContextMenu({\n cell,\n position,\n onClose,\n renderContent\n}) {\n const ref = useRef(null);\n useEffect(() => {\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClose();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: styles.osdkCellContextMenu,\n style: {\n left: position.left,\n top: position.top,\n minWidth: position.width\n }\n }, renderContent(cell.row.original, cell)), document.body);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useCellContextMenu = ({\n tdRef\n}) => {\n const [popoverPosition, setPopoverPosition] = useState(null);\n const [isContextMenuOpen, setIsContextMenuOpen] = useState(false);\n const handleOpenContextMenu = useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n if (tdRef.current) {\n const rect = tdRef.current.getBoundingClientRect();\n const position = {\n left: rect.left,\n top: rect.bottom,\n width: rect.width\n };\n setPopoverPosition(position);\n setIsContextMenuOpen(true);\n }\n }, [tdRef]);\n const handleCloseContextMenu = useCallback(() => {\n setIsContextMenuOpen(false);\n setPopoverPosition(null);\n }, []);\n return {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n };\n};","/*\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 { flexRender } from \"@tanstack/react-table\";\nimport React, { useRef } from \"react\";\nimport { CellContextMenu } from \"./CellContextMenu.js\";\nimport { useCellContextMenu } from \"./hooks/useCellContextMenu.js\";\nimport styles from \"./TableCell.module.css\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nexport function TableCell({\n cell,\n renderCellContextMenu\n}) {\n const tdRef = useRef(null);\n const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;\n const {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n } = useCellContextMenu({\n tdRef\n });\n const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;\n const {\n columnStyles\n } = getColumnPinningStyles(cell.column);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"td\", {\n ref: tdRef,\n \"data-pinned\": cell.column.getIsPinned(),\n className: styles.osdkTableCell,\n style: columnStyles,\n onContextMenu: handleOpenContextMenu\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableCellContent\n }, flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /*#__PURE__*/React.createElement(CellContextMenu, {\n cell: cell,\n position: popoverPosition,\n onClose: handleCloseContextMenu,\n renderContent: renderCellContextMenu\n }));\n}","/*\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 { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\nexport function TableRow({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu,\n isFocused,\n setFocusedRowId,\n isInEditMode\n}) {\n const handleClick = useCallback(() => {\n setFocusedRowId?.(row.id);\n if (!isInEditMode) {\n onRowClick?.(row.original);\n }\n }, [isInEditMode, onRowClick, row.original, row.id, setFocusedRowId]);\n return /*#__PURE__*/React.createElement(\"tr\", {\n \"data-selected\": row.getIsSelected(),\n \"data-focused\": isFocused,\n className: styles.osdkTableRow,\n style: {\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`\n },\n onClick: handleClick\n }, row.getVisibleCells().map(cell => /*#__PURE__*/React.createElement(TableCell, {\n key: cell.id,\n cell: cell,\n renderCellContextMenu: renderCellContextMenu\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport 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\";\nexport function TableBody({\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}) {\n // Important: Keep the row virtualizer in the lowest component possible to avoid unnecessary re-renders.\n const rowVirtualizer = useVirtualizer({\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 const totalSize = rowVirtualizer.getTotalSize();\n const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;\n const headers = headerGroups[0]?.headers ?? [];\n return /*#__PURE__*/React.createElement(\"tbody\", {\n className: styles.osdkTableBody,\n style: {\n height: `${bodyHeight}px`\n }\n }, rowVirtualizer.getVirtualItems().map(virtualRow => {\n const row = rows[virtualRow.index];\n return /*#__PURE__*/React.createElement(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 });\n }), isLoadingMore && /*#__PURE__*/React.createElement(LoadingRow, {\n headers: headers,\n translateY: totalSize,\n rowHeight: rowHeight,\n columnCount: headers.length\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.tableEditContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--osdk-surface-background-color-default-rest);\n border-top: var(--osdk-table-border);\n padding: var(--osdk-table-edit-container-padding);\n min-height: var(--osdk-table-edit-container-min-height);\n}\n\n.placeholder {\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n padding: calc(var(--osdk-surface-spacing) * 2) 0;\n}\n\n.editsInfoContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n gap: calc(var(--osdk-surface-spacing) * 3);\n font-size: var(--osdk-typography-size-body-small);\n}\n\n.modificationCount {\n color: var(--osdk-intent-primary-rest);\n font-size: var(--osdk-typography-size-body-small);\n padding: calc(var(--osdk-surface-spacing) * 2) 0;\n}\n\n.editButtons {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n flex: 1;\n}\n\n.validationError {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-intent-danger-rest);\n}\n\n.errorIcon {\n color: var(--osdk-intent-danger-rest);\n}\n\n.divider {\n width: 1px;\n height: 8px;\n background-color: var(--osdk-surface-border-color-default);\n align-self: center;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error } from \"@blueprintjs/icons\";\nimport React, { useCallback, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport styles from \"./TableEditContainer.module.css\";\nexport function TableEditContainer({\n editableConfig,\n focusedRowId\n}) {\n const {\n cellEdits,\n onSubmitEdits,\n clearEdits,\n editModeState,\n validationErrors\n } = editableConfig;\n const hasEdits = Object.keys(cellEdits ?? {}).length > 0;\n const hasValidationError = (validationErrors?.size ?? 0) > 0;\n const [isSubmitting, setIsSubmitting] = useState(false);\n const isInEditMode = editModeState.isActive;\n const canToggleEditMode = editModeState.type === \"manual\";\n const handleSubmitEdits = useCallback(async () => {\n setIsSubmitting(true);\n try {\n const success = await onSubmitEdits?.();\n if (success) {\n clearEdits?.();\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(false);\n }\n }\n } finally {\n setIsSubmitting(false);\n }\n }, [editModeState, onSubmitEdits, clearEdits]);\n const handleCancelEdits = useCallback(() => {\n clearEdits?.();\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(false);\n }\n }, [clearEdits, editModeState]);\n const handleEnterEditMode = useCallback(() => {\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(true);\n }\n }, [editModeState]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.tableEditContainer\n }, hasEdits || hasValidationError ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.editsInfoContainer\n }, hasEdits && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.modificationCount\n }, `${cellEdits ? Object.keys(cellEdits).length : 0} modifications`), hasEdits && hasValidationError && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.divider\n }), hasValidationError && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.validationError\n }, /*#__PURE__*/React.createElement(Error, {\n className: styles.errorIcon\n }), \"Validation error\")) : isInEditMode && !focusedRowId && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.placeholder\n }, \"Select a row to edit data\\u2026\"), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.editButtons\n }, !isInEditMode && canToggleEditMode && /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleEnterEditMode\n }, \"Edit Table\"), isInEditMode && canToggleEditMode && /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"secondary\",\n onClick: handleCancelEdits\n }, \"Cancel\"), isInEditMode && !!onSubmitEdits && /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleSubmitEdits,\n disabled: !hasEdits || isSubmitting || hasValidationError\n }, \"Submit Edits\")));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\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 { SCROLL_FETCH_THRESHOLD } from \"./utils/constants.js\";\nexport function BaseTable({\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig\n}) {\n const tableContainerRef = useRef(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [focusedRowId, setFocusedRowId] = useState(null);\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 useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n const fetchMoreOnEndReached = useCallback(async containerRefElement => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const {\n scrollHeight,\n scrollTop,\n clientHeight\n } = containerRefElement;\n if (scrollHeight - scrollTop - clientHeight < SCROLL_FETCH_THRESHOLD && !isLoading && fetchNextPage != null) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n }, [fetchNextPage, isLoading, isLoadingMore]);\n const handleScroll = useCallback(async e => {\n await fetchMoreOnEndReached(e.currentTarget);\n }, [fetchMoreOnEndReached]);\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n const hasEditableColumns = table.getAllColumns().some(column => column.columnDef.meta?.editable === true);\n useEffect(() => {\n const handleClickOutside = event => {\n if (tableContainerRef.current && !tableContainerRef.current.contains(event.target)) {\n setFocusedRowId(null);\n }\n };\n document.addEventListener(\"click\", handleClickOutside);\n return () => {\n document.removeEventListener(\"click\", handleClickOutside);\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkTableWrapper, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tableContainerRef,\n className: styles.osdkTableContainer,\n onScroll: handleScroll\n }, /*#__PURE__*/React.createElement(\"table\", null, isLoading && !hasData ? /*#__PURE__*/React.createElement(LoadingStateTable, {\n table: table,\n headerGroups: headerGroups,\n rowHeight: rowHeight,\n tableContainerRef: tableContainerRef\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableHeader, {\n table: table,\n headerMenuFeatureFlags: headerMenuFeatureFlags\n }), /*#__PURE__*/React.createElement(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 }))), !hasData && error == null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: \"No Data\"\n }), error != null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: `Error Loading Data: ${error.message}`\n })), hasEditableColumns && editableConfig && /*#__PURE__*/React.createElement(TableEditContainer, {\n editableConfig: editableConfig,\n focusedRowId: focusedRowId\n }));\n}","/*\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 { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, 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 { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport { BaseTable } from \"./Table.js\";\nimport { getRowId } from \"./utils/getRowId.js\";\nconst EMPTY_ARRAY = [];\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 objectType,\n objectSet,\n columnDefinitions,\n filter,\n objectSetOptions,\n dedupeIntervalMs,\n pageSize,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n onRowSelection,\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 ...props\n}) {\n const {\n columnSizing,\n onColumnSizingChange\n } = useColumnResize({\n onColumnResize\n });\n const {\n sorting,\n onSortingChange\n } = useTableSorting({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n });\n const {\n data,\n fetchMore,\n isLoading,\n error\n } = useObjectTableData(objectType, columnDefinitions, filter, sorting, objectSet, objectSetOptions, dedupeIntervalMs, pageSize);\n const {\n columns,\n loading: isColumnsLoading\n } = useColumnDefs(objectType, columnDefinitions);\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection\n } = useRowSelection({\n selectionMode,\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelection,\n data\n });\n const selectionColumn = useSelectionColumn({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n });\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged\n });\n const {\n columnPinning,\n onColumnPinningChange\n } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged\n });\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n const editableConfig = useEditableTable({\n editMode,\n onCellValueChanged,\n onSubmitEdits\n });\n const table = useReactTable({\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,\n // 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 const onRenderCellContextMenu = useCallback((row, cell) => {\n return renderCellContextMenu?.(row, cell.getValue());\n }, [renderCellContextMenu]);\n const isTableLoading = isLoading || isColumnsLoading;\n const headerMenuFeatureFlags = useMemo(() => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig\n }), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);\n return /*#__PURE__*/React.createElement(BaseTable, {\n table: table,\n isLoading: isTableLoading,\n fetchNextPage: fetchMore,\n onRowClick: props.onRowClick,\n rowHeight: props.rowHeight,\n renderCellContextMenu: onRenderCellContextMenu,\n className: props.className,\n error: error,\n headerMenuFeatureFlags: headerMenuFeatureFlags,\n editableConfig: editableConfig\n });\n}",".annotationLayer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 3;\n}\n\n.annotationGroup {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.annotationGroup:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.annotationGroup .annotation {\n pointer-events: auto;\n}\n\n.annotation {\n position: absolute;\n pointer-events: auto;\n cursor: pointer;\n transition: opacity var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.annotation:hover {\n opacity: 0.8;\n}\n\n.annotation:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.highlight {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-highlight)\n );\n border-radius: 2px;\n}\n\n.underline {\n background-color: transparent;\n border-bottom: 2px solid\n var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-underline)\n );\n}\n\n.comment {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-comment)\n );\n border-radius: 50%;\n width: 16px !important;\n height: 16px !important;\n}\n\n.pin {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-pin)\n );\n border-radius: 50% 50% 50% 0;\n width: 16px !important;\n height: 16px !important;\n transform: rotate(-45deg);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerAnnotationLayer.module.css\";\n/** Convert a single PDF rect (bottom-left origin) to CSS positioning (top-left origin). */\nfunction computeRectStyle(rect, pageHeight, scale, color) {\n return {\n left: rect.x * scale,\n top: (pageHeight - rect.y - rect.height) * scale,\n width: rect.width * scale,\n height: rect.height * scale,\n ...(color != null ? {\n \"--osdk-pdf-annotation-color\": color\n } : {})\n };\n}\nfunction useAnnotationHandlers(annotation, onClick) {\n const handleClick = useCallback(() => {\n onClick?.(annotation);\n }, [onClick, annotation]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n onClick?.(annotation);\n }\n }, [onClick, annotation]);\n return {\n handleClick,\n handleKeyDown\n };\n}\nfunction AnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const className = classnames(styles.annotation, styles[annotation.type]);\n const multiRects = annotation.rects;\n const hasMultipleRects = multiRects != null && multiRects.length > 1;\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, annotation.color), [annotation, pageHeight, scale]);\n\n // Multi-rect: render a group wrapper with one div per rect\n if (hasMultipleRects) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationGroup,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, multiRects.map((rect, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: className,\n style: computeRectStyle(rect, pageHeight, scale, annotation.color)\n })));\n }\n\n // Single rect: existing behavior\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n });\n}\nfunction CustomAnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, undefined), [annotation, pageHeight, scale]);\n const renderProps = useMemo(() => ({\n annotation,\n scale,\n pageHeight\n }), [annotation, scale, pageHeight]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotation,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, annotation.render(renderProps));\n}\nexport function PdfViewerAnnotationLayer({\n annotations,\n pageHeight,\n scale,\n onAnnotationClick\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationLayer\n }, annotations.map(annotation => annotation.type === \"custom\" ? /*#__PURE__*/React.createElement(CustomAnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n }) : /*#__PURE__*/React.createElement(AnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n })));\n}",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.outlineItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-outline-item-gap, 6px);\n padding: var(--osdk-pdf-viewer-outline-item-padding-y, 4px)\n var(--osdk-pdf-viewer-outline-item-padding-x, 12px);\n cursor: pointer;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default);\n text-decoration: none;\n border: none;\n background: none;\n text-align: left;\n width: 100%;\n line-height: 1.4;\n border-radius: var(--osdk-pdf-viewer-outline-item-radius, 4px);\n transition: background-color 0.15s ease;\n}\n\n.outlineItem:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-hover-bg, rgba(0, 0, 0, 0.06));\n}\n\n.outlineItem:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.outlineItemActive {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n font-weight: var(--osdk-typography-weight-semibold);\n}\n\n.outlineItemBold {\n font-weight: var(--osdk-typography-weight-bold);\n}\n\n.outlineItemItalic {\n font-style: italic;\n}\n\n.outlineItemIcon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.outlineItemTitle {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.emptyState {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-outline-empty-gap, 12px);\n padding: var(--osdk-pdf-viewer-outline-empty-padding, 24px);\n flex: 1;\n text-align: center;\n}\n\n.emptyStateText {\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.sidebarHeader {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing);\n border-bottom: var(--osdk-pdf-viewer-sidebar-border);\n flex-shrink: 0;\n}\n\n.toggleGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-spacing-2xs, 2px);\n padding: var(--osdk-spacing-2xs, 2px);\n border: none;\n border-radius: var(--osdk-surface-border-radius);\n background-color: var(--osdk-surface-background-color, transparent);\n}\n\n.modeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.modeButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.modeButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.modeButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.modeButton[data-pressed] {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n}\n\n.modeButton[data-pressed]:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n}\n","/*\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 { Toggle } from \"@base-ui/react/toggle\";\nimport { ToggleGroup } from \"@base-ui/react/toggle-group\";\nimport { GridView, Properties } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSidebarHeader.module.css\";\nconst SIDEBAR_MODE_VALUE = Object.freeze([\"thumbnails\"]);\nconst OUTLINE_MODE_VALUE = Object.freeze([\"outline\"]);\nexport function PdfViewerSidebarHeader({\n sidebarMode,\n onSidebarModeChange\n}) {\n const value = sidebarMode === \"thumbnails\" ? SIDEBAR_MODE_VALUE : OUTLINE_MODE_VALUE;\n const handleValueChange = useCallback(newValue => {\n if (newValue.length > 0) {\n onSidebarModeChange(newValue[0]);\n }\n }, [onSidebarModeChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebarHeader\n }, /*#__PURE__*/React.createElement(ToggleGroup, {\n value: value,\n onValueChange: handleValueChange,\n className: styles.toggleGroup\n }, /*#__PURE__*/React.createElement(Toggle, {\n value: \"thumbnails\",\n className: styles.modeButton,\n \"aria-label\": \"Page thumbnails\"\n }, /*#__PURE__*/React.createElement(GridView, {\n size: 16\n })), /*#__PURE__*/React.createElement(Toggle, {\n value: \"outline\",\n className: styles.modeButton,\n \"aria-label\": \"Document outline\"\n }, /*#__PURE__*/React.createElement(Properties, {\n size: 16\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerOutlineSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nconst INDENT_PER_DEPTH = 16;\nexport function PdfViewerOutlineSidebar({\n outlineItems,\n currentPage,\n onItemClick,\n sidebarMode,\n onSidebarModeChange,\n outlineIcons\n}) {\n const activeIndex = useMemo(() => {\n return computeActiveIndex(outlineItems, currentPage);\n }, [outlineItems, currentPage]);\n if (outlineItems.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyStateText\n }, \"No outline available\")));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainer\n }, outlineItems.map((item, index) => /*#__PURE__*/React.createElement(PdfViewerOutlineItem, {\n key: index,\n item: item,\n isActive: index === activeIndex,\n onClick: onItemClick,\n iconComponent: outlineIcons?.[item.depth]\n }))));\n}\nfunction PdfViewerOutlineItem({\n item,\n isActive,\n onClick,\n iconComponent: IconComponent\n}) {\n const handleClick = useCallback(() => {\n onClick(item.pageNumber);\n }, [onClick, item.pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick(item.pageNumber);\n }\n }, [onClick, item.pageNumber]);\n const itemClassName = classnames(styles.outlineItem, isActive && styles.outlineItemActive, item.bold && styles.outlineItemBold, item.italic && styles.outlineItemItalic);\n const paddingLeft = INDENT_PER_DEPTH * item.depth + 12;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: itemClassName,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": item.title,\n \"aria-current\": isActive ? \"location\" : undefined,\n style: {\n paddingLeft\n }\n }, IconComponent != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemIcon\n }, /*#__PURE__*/React.createElement(IconComponent, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemTitle\n }, item.title));\n}\nfunction computeActiveIndex(items, currentPage) {\n const idx = items.findIndex(item => item.pageNumber > currentPage);\n return idx === -1 ? items.length - 1 : idx - 1;\n}",".searchBar {\n position: absolute;\n top: 0;\n right: 0;\n z-index: var(--osdk-surface-z-index-3);\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-search-bar-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n margin: var(--osdk-surface-spacing);\n}\n\n.searchInput {\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n outline: none;\n min-width: 200px;\n}\n\n.searchInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.matchCount {\n font-size: var(--osdk-typography-size-body-x-small);\n color: var(--osdk-typography-color-muted);\n white-space: nowrap;\n}\n\n.navButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-default-rest);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.navButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.navButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.closeButton {\n composes: navButton;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChevronDown, ChevronUp, Cross } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSearchBar.module.css\";\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose\n}) {\n const handleInputChange = useCallback(e => {\n onQueryChange(e.target.value);\n }, [onQueryChange]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (e.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n }, [onNext, onPrev, onClose]);\n const matchDisplay = totalMatches > 0 ? `${currentMatchIndex + 1} of ${totalMatches}` : query.length > 0 ? \"No results\" : \"\";\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.searchBar\n }, /*#__PURE__*/React.createElement(\"input\", {\n autoFocus: true,\n className: styles.searchInput,\n type: \"text\",\n value: query,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n placeholder: \"Find in document...\",\n \"aria-label\": \"Search in PDF\"\n }), matchDisplay.length > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.matchCount\n }, matchDisplay), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onPrev,\n disabled: totalMatches === 0,\n \"aria-label\": \"Previous match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onNext,\n disabled: totalMatches === 0,\n \"aria-label\": \"Next match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.closeButton,\n onClick: onClose,\n \"aria-label\": \"Close search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Cross, {\n size: 16\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default empty values (stable references to avoid re-renders)\nexport const EMPTY_ANNOTATION_ARRAY = [];\nexport const EMPTY_STRING = \"\";\n\n// Scale and dimension configuration\nexport const SCALE_STEP = 0.25;\nexport const MIN_SCALE = 0.25;\nexport const MAX_SCALE = 5.0;\nexport const DEFAULT_PAGE_HEIGHT = 792;\nexport const THUMBNAIL_GAP = 12;\nexport const THUMBNAIL_SCALE = 0.2;\nexport const DEVICE_PIXEL_RATIO = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1;\n\n// Outline heading extraction\n/** Text must be at least 15% larger than the most common font size to be considered a heading. */\nexport const OUTLINE_HEADING_SIZE_RATIO = 1.15;\n/** Headings longer than this are likely paragraphs and are filtered out. */\nexport const OUTLINE_MAX_HEADING_LENGTH = 200;\n\n// pdfjs EventBus event names\nexport const FIND_EVENT = \"find\";\nexport const UPDATE_FIND_CONTROL_STATE_EVENT = \"updatefindcontrolstate\";\nexport const UPDATE_FIND_MATCHES_COUNT_EVENT = \"updatefindmatchescount\";\nexport const PAGE_CHANGING_EVENT = \"pagechanging\";\nexport const SCALE_CHANGING_EVENT = \"scalechanging\";\nexport const PAGE_RENDERED_EVENT = \"pagerendered\";\nexport const PAGES_LOADED_EVENT = \"pagesloaded\";\n// cspell:disable-next-line -- pdfjs EventBus event name\nexport const ANNOTATION_LAYER_RENDERED_EVENT = \"annotationlayerrendered\";",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n}\n\n.thumbnailsContainer {\n position: relative;\n}\n\n.thumbnailWrapper {\n position: absolute;\n left: 0;\n width: 100%;\n display: flex;\n justify-content: center;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap)\n var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.pageNumber {\n text-align: center;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n margin-top: 4px;\n}\n",".thumbnailContainer {\n position: relative;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n overflow: hidden;\n transition: border-color var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.thumbnailContainer:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-border);\n}\n\n.active {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.active:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.canvas {\n display: block;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick\n}) {\n const canvasRef = useRef(null);\n const renderTaskRef = useRef(null);\n const [dimensions, setDimensions] = useState(undefined);\n useEffect(() => {\n let cancelled = false;\n void document.getPage(pageNumber).then(page => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n const viewport = page.getViewport({\n scale: THUMBNAIL_SCALE\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\n canvas.width = Math.floor(viewport.width * DEVICE_PIXEL_RATIO);\n canvas.height = Math.floor(viewport.height * DEVICE_PIXEL_RATIO);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height)\n });\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n context.setTransform(DEVICE_PIXEL_RATIO, 0, 0, DEVICE_PIXEL_RATIO, 0, 0);\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n renderTaskRef.current = renderTask;\n void renderTask.promise.catch(err => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\n });\n return () => {\n cancelled = true;\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n renderTaskRef.current = null;\n }\n };\n }, [document, pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }, [onClick]);\n const containerClassName = classnames(styles.thumbnailContainer, isActive && styles.active);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": `Page ${pageNumber}`,\n \"aria-current\": isActive ? \"page\" : undefined,\n style: dimensions != null ? {\n width: dimensions.width,\n height: dimensions.height\n } : undefined\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n className: styles.canvas\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useEffect, useRef } from \"react\";\nimport { DEFAULT_PAGE_HEIGHT, THUMBNAIL_GAP, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n sidebarMode,\n onSidebarModeChange\n}) {\n const scrollContainerRef = useRef(null);\n const estimatedItemHeight = Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE) + THUMBNAIL_GAP + 20;\n const virtualizer = useVirtualizer({\n count: numPages,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => estimatedItemHeight,\n overscan: 2\n });\n\n // Auto-scroll to keep the active thumbnail visible\n useEffect(function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, {\n align: \"auto\"\n });\n }, [currentPage, virtualizer]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollContainerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.thumbnailsContainer,\n style: {\n height: virtualizer.getTotalSize()\n }\n }, virtualizer.getVirtualItems().map(virtualItem => {\n const pageNumber = virtualItem.index + 1;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: virtualItem.key,\n className: styles.thumbnailWrapper,\n style: {\n top: virtualItem.start,\n height: virtualItem.size\n }\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(PdfViewerThumbnail, {\n document: document,\n pageNumber: pageNumber,\n isActive: pageNumber === currentPage,\n onClick: () => onPageClick(pageNumber)\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.pageNumber\n }, pageNumber)));\n }))));\n}",".toolbar {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-toolbar-bg);\n border-bottom: var(--osdk-pdf-viewer-toolbar-border);\n color: var(--osdk-pdf-viewer-toolbar-color);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n flex-shrink: 0;\n}\n\n.toolbarGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.separator {\n width: 1px;\n height: 20px;\n background-color: var(--osdk-surface-border-color-default);\n margin: 0 var(--osdk-surface-spacing);\n}\n\n.toolbarButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.toolbarButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.toolbarButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.toolbarButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.toolbarButton:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.toolbarButtonActive {\n background-color: var(--osdk-surface-background-color-default-active);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.pageInput {\n width: 48px;\n text-align: center;\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: calc(0.5 * var(--osdk-surface-spacing)) var(--osdk-surface-spacing);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n}\n\n.pageInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.pageCount {\n color: var(--osdk-typography-color-muted);\n}\n\n.scaleDisplay {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n min-width: 40px;\n text-align: center;\n}\n","/*\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 { Input } from \"@base-ui/react/input\";\nimport { ChevronLeft, ChevronRight, Download, FloppyDisk, Highlight, Menu, Minus, Plus, RotatePage, Search } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n sidebarOpen,\n onPageChange,\n onScaleChange,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n enableDownload,\n onRotateLeft,\n onRotateRight,\n enableHighlight,\n highlightModeActive,\n onHighlightToggle,\n enableFormSave = false,\n onFormSave\n}) {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(function syncPageInput() {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handlePrevPage = useCallback(() => {\n if (currentPage > 1) {\n const newPage = currentPage - 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, onPageChange]);\n const handleNextPage = useCallback(() => {\n if (currentPage < numPages) {\n const newPage = currentPage + 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, numPages, onPageChange]);\n const handlePageInputChange = useCallback(e => {\n setPageInputValue(e.target.value);\n }, []);\n const handlePageInputKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n const page = parseInt(pageInputValue, 10);\n if (!isNaN(page) && page >= 1 && page <= numPages) {\n onPageChange(page);\n } else {\n setPageInputValue(String(currentPage));\n }\n }\n }, [pageInputValue, numPages, onPageChange, currentPage]);\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handleZoomIn = useCallback(() => {\n const newScale = Math.min(scale + SCALE_STEP, MAX_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const handleZoomOut = useCallback(() => {\n const newScale = Math.max(scale - SCALE_STEP, MIN_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const scalePercent = `${Math.round(scale * 100)}%`;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbar\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSidebarToggle,\n \"aria-label\": sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n title: sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n \"aria-pressed\": sidebarOpen,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Menu, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handlePrevPage,\n disabled: currentPage <= 1,\n \"aria-label\": \"Previous page\",\n title: \"Previous page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronLeft, {\n size: 16\n })), /*#__PURE__*/React.createElement(Input, {\n className: styles.pageInput,\n type: \"text\",\n value: pageInputValue,\n onChange: handlePageInputChange,\n onKeyDown: handlePageInputKeyDown,\n onBlur: handlePageInputBlur,\n \"aria-label\": \"Page number\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.pageCount\n }, \"of \", numPages), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleNextPage,\n disabled: currentPage >= numPages,\n \"aria-label\": \"Next page\",\n title: \"Next page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronRight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomOut,\n disabled: scale <= MIN_SCALE,\n \"aria-label\": \"Zoom out\",\n title: \"Zoom out\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Minus, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.scaleDisplay\n }, scalePercent), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomIn,\n disabled: scale >= MAX_SCALE,\n \"aria-label\": \"Zoom in\",\n title: \"Zoom in\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Plus, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateLeft,\n \"aria-label\": \"Rotate left\",\n title: \"Rotate left\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateRight,\n \"aria-label\": \"Rotate right\",\n title: \"Rotate right\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16,\n style: {\n transform: \"scaleX(-1)\"\n }\n }))), enableHighlight && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: classnames(styles.toolbarButton, highlightModeActive && styles.toolbarButtonActive),\n onClick: onHighlightToggle,\n \"aria-label\": highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n title: highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n \"aria-pressed\": highlightModeActive,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Highlight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSearchOpen,\n \"aria-label\": \"Search\",\n title: \"Search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Search, {\n size: 16\n })), enableDownload && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onDownload,\n \"aria-label\": \"Download\",\n title: \"Download\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Download, {\n size: 16\n }))), enableFormSave && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onFormSave,\n \"aria-label\": \"Save form\",\n title: \"Save form\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(FloppyDisk, {\n size: 16\n }))));\n}","/*\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 { useMemo } from \"react\";\n/**\n * Groups a flat array of annotations by page number for efficient per-page lookup.\n */\nexport function usePdfAnnotationsByPage(annotations) {\n return useMemo(() => {\n const result = {};\n for (const ann of annotations) {\n (result[ann.page] ??= []).push(ann);\n }\n return result;\n }, [annotations]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ANNOTATION_LAYER_RENDERED_EVENT } from \"../constants.js\";\n/** Get the viewer's container element (typed loosely by pdf.js). */\nfunction getViewerContainer(viewer) {\n return viewer.container;\n}\n\n/** Internal metadata for a single form field annotation. */\n\n/**\n * Normalizes a pdf.js field object type string to a simplified form type.\n * @internal Exported for testing.\n */\nexport function normalizeFieldType(type) {\n switch (type) {\n case \"checkbox\":\n case \"radiobutton\":\n case \"combobox\":\n case \"listbox\":\n return type;\n default:\n return \"text\";\n }\n}\n\n/**\n * Converts a pdf.js annotationStorage value to a consumer-friendly PdfFormFieldValue.\n * @internal Exported for testing.\n */\nexport function toFormFieldValue(storageValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof storageValue === \"boolean\") {\n return storageValue;\n }\n // pdf.js stores checkbox as the export value when checked, \"Off\" when unchecked\n return storageValue !== \"Off\" && storageValue !== false;\n }\n if (fieldType === \"radiobutton\") {\n return typeof storageValue === \"string\" ? storageValue : \"\";\n }\n if (typeof storageValue === \"string\") {\n return storageValue;\n }\n if (Array.isArray(storageValue)) {\n return storageValue.map(String);\n }\n return \"\";\n}\n\n/**\n * Converts a consumer PdfFormFieldValue to a pdf.js annotationStorage value.\n * @internal Exported for testing.\n */\nexport function toStorageValue(formValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof formValue === \"boolean\") {\n return formValue;\n }\n return formValue !== \"Off\" && formValue !== \"\";\n }\n return formValue;\n}\n\n/**\n * Hook that manages interactive PDF form fields.\n * Builds a field metadata map, pre-populates initial values,\n * listens for field changes, and collects values on submit.\n */\nexport function usePdfFormFields({\n pdfViewerRef,\n eventBusRef,\n document,\n formData,\n onFormSubmit,\n onFormChange\n}) {\n const [hasFormFields, setHasFormFields] = useState(false);\n\n // Stable refs for callbacks\n const onFormSubmitRef = useRef(onFormSubmit);\n const onFormChangeRef = useRef(onFormChange);\n const formDataRef = useRef(formData);\n useEffect(function syncCallbackRefs() {\n onFormSubmitRef.current = onFormSubmit;\n onFormChangeRef.current = onFormChange;\n formDataRef.current = formData;\n }, [onFormSubmit, onFormChange, formData]);\n\n // Map from annotation ID -> field metadata\n const fieldMapRef = useRef(new Map());\n // Reverse map from field name -> annotation IDs\n const nameToIdsRef = useRef(new Map());\n\n // Effect 1: Build field metadata map when document loads\n useEffect(function buildFieldMap() {\n const doc = document;\n if (doc == null) {\n fieldMapRef.current.clear();\n nameToIdsRef.current.clear();\n setHasFormFields(false);\n return;\n }\n let cancelled = false;\n void doc.getFieldObjects().then(fieldObjects => {\n if (cancelled || fieldObjects == null) {\n setHasFormFields(false);\n return;\n }\n const fieldMap = new Map();\n const nameToIds = new Map();\n for (const [fieldName, objects] of Object.entries(fieldObjects)) {\n const ids = [];\n for (const obj of objects) {\n const typedObj = obj;\n if (typedObj.id == null) continue;\n const fieldType = normalizeFieldType(typedObj.type ?? \"text\");\n fieldMap.set(typedObj.id, {\n fieldName,\n fieldType,\n exportValues: typedObj.exportValues,\n page: typedObj.page ?? 0\n });\n ids.push(typedObj.id);\n }\n if (ids.length > 0) {\n nameToIds.set(fieldName, ids);\n }\n }\n fieldMapRef.current = fieldMap;\n nameToIdsRef.current = nameToIds;\n setHasFormFields(fieldMap.size > 0);\n });\n return () => {\n cancelled = true;\n };\n }, [document]);\n\n // Populates form fields from formData into both annotation storage and DOM elements.\n // Scoped to the viewer container to avoid conflicts with multiple viewer instances.\n const populateFields = useCallback(() => {\n const data = formDataRef.current;\n const doc = document;\n const pdfViewer = pdfViewerRef.current;\n if (data == null || doc == null || pdfViewer == null) return;\n if (fieldMapRef.current.size === 0) return;\n const storage = doc.annotationStorage;\n const container = getViewerContainer(pdfViewer);\n for (const [fieldName, value] of Object.entries(data)) {\n const ids = nameToIdsRef.current.get(fieldName);\n if (ids == null) continue;\n for (const id of ids) {\n const entry = fieldMapRef.current.get(id);\n if (entry == null) continue;\n\n // Also update the DOM element directly (scoped to viewer container)\n const el = container?.querySelector(`[data-element-id=\"${CSS.escape(id)}\"]`);\n if (entry.fieldType === \"radiobutton\") {\n // Radio buttons: each ID is a separate option. Check the one\n // whose export value matches, uncheck the others.\n // Use exportValues if defined, otherwise fall back to the DOM\n // element's value attribute (mirrors handleFieldChange logic).\n const optionValue = entry.exportValues ?? (el instanceof HTMLInputElement ? el.value : undefined);\n const isSelected = optionValue === String(value);\n storage.setValue(id, {\n value: isSelected ? entry.exportValues ?? String(value) : \"Off\"\n });\n if (el instanceof HTMLInputElement) {\n el.checked = isSelected;\n }\n } else {\n const storageVal = toStorageValue(value, entry.fieldType);\n storage.setValue(id, {\n value: storageVal\n });\n if (el == null) continue;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n el.checked = typeof storageVal === \"boolean\" ? storageVal : storageVal !== \"Off\";\n } else if (el instanceof HTMLSelectElement) {\n el.value = String(value);\n } else if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n el.value = String(value);\n }\n }\n }\n }\n }, [document, pdfViewerRef]);\n\n // Effect 2: Populate initial form data when annotation layers render\n useEffect(function populateFormData() {\n const eventBus = eventBusRef.current;\n if (eventBus == null || document == null || formDataRef.current == null) {\n return;\n }\n\n // Attempt population immediately in case the field map was built\n // after the annotation layer already rendered (race condition fix).\n populateFields();\n const onAnnotationLayerRendered = () => {\n populateFields();\n };\n eventBus.on(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n return () => {\n eventBus.off(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n };\n }, [eventBusRef, document, hasFormFields, populateFields]);\n\n // Effect 3: Listen for field changes via MutationObserver + event listeners\n useEffect(function listenForFieldChanges() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n\n // Get the viewer's container element\n const container = getViewerContainer(pdfViewer);\n if (container == null) return;\n const listeners = new Map();\n function handleFieldChange(el) {\n const id = el.getAttribute(\"data-element-id\");\n if (id == null) return;\n const entry = fieldMapRef.current.get(id);\n if (entry == null) return;\n let value;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n value = el.checked;\n } else if (entry.fieldType === \"radiobutton\" && el instanceof HTMLInputElement) {\n // For radio buttons, the value is the button's export value when selected\n value = el.checked ? entry.exportValues ?? el.value : \"\";\n } else {\n value = el.value;\n }\n onFormChangeRef.current?.(entry.fieldName, value);\n }\n function attachListeners(root) {\n const elements = root.querySelectorAll?.(\".annotationLayer input, .annotationLayer select, .annotationLayer textarea\");\n if (elements == null) return;\n for (const el of elements) {\n if (listeners.has(el)) continue;\n const handler = () => {\n handleFieldChange(el);\n };\n el.addEventListener(\"input\", handler);\n el.addEventListener(\"change\", handler);\n listeners.set(el, handler);\n }\n }\n\n // Attach to any elements already in the DOM\n attachListeners(container);\n\n // Watch for new form elements being added (pages render lazily)\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n attachListeners(node);\n }\n }\n }\n });\n observer.observe(container, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n for (const [el, handler] of listeners) {\n el.removeEventListener(\"input\", handler);\n el.removeEventListener(\"change\", handler);\n }\n listeners.clear();\n };\n }, [pdfViewerRef, document]);\n\n // Callback: collect all form data and invoke onFormSubmit\n const submitFormData = useCallback(() => {\n const doc = document;\n if (doc == null) return;\n const storage = doc.annotationStorage;\n const allValues = storage.getAll();\n const result = {};\n\n // Track which radio group has been resolved\n const resolvedRadios = new Set();\n for (const [id, entry] of fieldMapRef.current) {\n const {\n fieldName,\n fieldType\n } = entry;\n\n // For radio buttons, only process each group once\n if (fieldType === \"radiobutton\") {\n if (resolvedRadios.has(fieldName)) continue;\n resolvedRadios.add(fieldName);\n\n // Find the selected radio in the group\n const groupIds = nameToIdsRef.current.get(fieldName) ?? [];\n let selectedValue = \"\";\n for (const radioId of groupIds) {\n const stored = allValues?.[radioId];\n const val = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n if (val === true || typeof val === \"string\" && val !== \"Off\") {\n const radioEntry = fieldMapRef.current.get(radioId);\n selectedValue = radioEntry?.exportValues ?? String(val);\n break;\n }\n }\n result[fieldName] = selectedValue;\n continue;\n }\n const stored = allValues?.[id];\n const rawValue = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n\n // Skip if we already have a value for this field name (e.g. duplicate IDs)\n if (fieldName in result) continue;\n result[fieldName] = toFormFieldValue(rawValue, fieldType);\n }\n onFormSubmitRef.current?.(result);\n }, [document]);\n return {\n hasFormFields,\n submitFormData\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n/**\n * Converts an RGB array (0.0–1.0 per channel) to a CSS hex color string.\n */\nexport function rgbArrayToHex(color) {\n const r = Math.round(color[0] * 255);\n const g = Math.round(color[1] * 255);\n const b = Math.round(color[2] * 255);\n return `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`;\n}\n\n/**\n * Converts quadPoints (PDF spec format) back to PdfRect[].\n * QuadPoints are 8 values per quad: [x1,y1, x2,y2, x3,y3, x4,y4]\n * representing the four corners of each highlight rect.\n *\n * PDF.js highlight editor produces axis-aligned quads with ordering:\n * (x1,y1)=top-left, (x2,y2)=top-right, (x3,y3)=bottom-left, (x4,y4)=bottom-right\n * We derive the bounding rect from x1, y1 (top), x2 (right edge), y3 (bottom).\n */\nexport function quadPointsToRects(quadPoints) {\n const rects = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n const x1 = quadPoints[i];\n const y1 = quadPoints[i + 1];\n const x2 = quadPoints[i + 2];\n const y3 = quadPoints[i + 5];\n const x = Math.min(x1, x2);\n const y = Math.min(y1, y3);\n const width = Math.abs(x2 - x1);\n const height = Math.abs(y1 - y3);\n rects.push({\n x,\n y,\n width,\n height\n });\n }\n return rects;\n}\n\n/**\n * Hook that manages the PDF.js built-in highlight annotation editor mode.\n * When active, users can select text to create highlights.\n * A callback fires with the annotation details for persistence.\n */\nexport function usePdfHighlightMode({\n pdfViewerRef,\n document,\n enabled,\n onTextHighlight,\n onHighlightDelete\n}) {\n const [highlightModeActive, setHighlightModeActive] = useState(false);\n const onTextHighlightRef = useRef(onTextHighlight);\n const onHighlightDeleteRef = useRef(onHighlightDelete);\n const knownEditorIdsRef = useRef(new Set());\n const editorEventsRef = useRef(new Map());\n\n // Keep callback refs in sync\n useEffect(function syncCallbackRef() {\n onTextHighlightRef.current = onTextHighlight;\n onHighlightDeleteRef.current = onHighlightDelete;\n }, [onTextHighlight, onHighlightDelete]);\n\n // Toggle the PDF.js annotation editor mode\n useEffect(function syncHighlightMode() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n try {\n if (highlightModeActive && enabled) {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.HIGHLIGHT\n };\n } else {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.NONE\n };\n }\n } catch {\n // AnnotationEditorUIManager may not be initialized yet\n }\n }, [pdfViewerRef, document, highlightModeActive, enabled]);\n\n // Deactivate highlight mode when the feature is disabled\n useEffect(function deactivateOnDisable() {\n if (!enabled) {\n setHighlightModeActive(false);\n }\n }, [enabled]);\n\n // Clear tracked editors when the document changes (but not on highlight toggle)\n const prevDocumentRef = useRef(undefined);\n useEffect(function clearOnDocumentChange() {\n if (document !== prevDocumentRef.current) {\n knownEditorIdsRef.current.clear();\n editorEventsRef.current.clear();\n prevDocumentRef.current = document;\n }\n }, [document]);\n\n // Listen for new highlights being added to annotation storage\n useEffect(function listenForHighlights() {\n if (document == null || !highlightModeActive || !enabled) {\n return;\n }\n const storage = document.annotationStorage;\n const previousOnAnnotationEditor = storage.onAnnotationEditor;\n\n // Monkey-patch storage.remove to detect highlight deletions.\n // This is fragile but necessary because PDF.js does not emit events\n // when editors are removed. Restore the original on cleanup.\n const originalRemove = storage.remove.bind(storage);\n storage.remove = key => {\n const savedEvent = editorEventsRef.current.get(key);\n if (savedEvent != null) {\n editorEventsRef.current.delete(key);\n knownEditorIdsRef.current.delete(key);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n originalRemove(key);\n };\n storage.onAnnotationEditor = type => {\n // onAnnotationEditor fires with the editor's static _type (string \"highlight\")\n if (type !== \"highlight\") {\n return;\n }\n\n // Find new editors in storage\n const allEntries = storage.getAll();\n if (allEntries == null) {\n return;\n }\n for (const [id, entry] of Object.entries(allEntries)) {\n if (knownEditorIdsRef.current.has(id)) {\n continue;\n }\n\n // Check if this is a highlight editor with serializable data\n if (typeof entry === \"object\" && entry != null && \"serialize\" in entry && typeof entry.serialize === \"function\") {\n knownEditorIdsRef.current.add(id);\n const serialized = entry.serialize(false);\n if (serialized == null || serialized.annotationType !== AnnotationEditorType.HIGHLIGHT) {\n continue;\n }\n const rects = serialized.quadPoints != null ? quadPointsToRects(serialized.quadPoints) : [];\n if (rects.length === 0) {\n continue;\n }\n const color = Array.isArray(serialized.color) ? rgbArrayToHex(serialized.color) : \"#fff066\";\n\n // Extract text from the editor's aria-label (stores selected text)\n const selectedText = typeof entry.div?.getAttribute === \"function\" ? entry.div.getAttribute(\"aria-label\") ?? \"\" : \"\";\n const event = {\n editorId: id,\n page: serialized.pageIndex + 1,\n rects,\n selectedText,\n color\n };\n\n // Store the event so we can provide it back on delete\n editorEventsRef.current.set(id, event);\n onTextHighlightRef.current?.(event);\n }\n }\n };\n return () => {\n storage.onAnnotationEditor = previousOnAnnotationEditor;\n storage.remove = originalRemove;\n };\n }, [document, highlightModeActive, enabled]);\n const toggleHighlightMode = useCallback(() => {\n setHighlightModeActive(prev => !prev);\n }, []);\n const deleteHighlight = useCallback(editorId => {\n if (document == null) return;\n const storage = document.annotationStorage;\n\n // Fire the delete callback directly. The monkey-patch on storage.remove\n // only exists while highlight mode is active, so we handle it here to\n // ensure the callback fires regardless of highlight mode state.\n // Clean up refs first so the monkey-patch (if active) won't double-fire.\n const savedEvent = editorEventsRef.current.get(editorId);\n if (savedEvent != null) {\n editorEventsRef.current.delete(editorId);\n knownEditorIdsRef.current.delete(editorId);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n\n // Remove the editor's DOM element if it exists\n const allEntries = storage.getAll();\n const entry = allEntries?.[editorId];\n if (hasDiv(entry) && entry.div instanceof HTMLElement) {\n entry.div.remove();\n }\n storage.remove(editorId);\n }, [document]);\n return {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n };\n}\nfunction hasDiv(obj) {\n return obj != null && typeof obj === \"object\" && \"div\" in obj;\n}","/*\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 { useEffect, useState } from \"react\";\nimport { OUTLINE_HEADING_SIZE_RATIO, OUTLINE_MAX_HEADING_LENGTH } from \"../constants.js\";\nconst EMPTY_OUTLINE = [];\nexport function usePdfOutline(document) {\n const [outlineItems, setOutlineItems] = useState(EMPTY_OUTLINE);\n useEffect(function loadOutline() {\n if (document == null) {\n setOutlineItems(EMPTY_OUTLINE);\n return;\n }\n let cancelled = false;\n void (async () => {\n try {\n // Try embedded bookmarks first\n const outline = await document.getOutline();\n if (cancelled) return;\n if (outline != null && outline.length > 0) {\n const items = await resolveBookmarkOutline(document, outline);\n if (!cancelled) {\n setOutlineItems(items);\n }\n return;\n }\n\n // Fall back to extracting headings from text content\n const items = await extractHeadingsFromText(document);\n if (!cancelled) {\n setOutlineItems(items.length > 0 ? items : EMPTY_OUTLINE);\n }\n } catch {\n // If extraction fails entirely, leave outline empty\n if (!cancelled) {\n setOutlineItems(EMPTY_OUTLINE);\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [document]);\n return outlineItems;\n}\nasync function resolveBookmarkOutline(document, outline) {\n const items = [];\n const resolveItems = async (nodes, depth) => {\n for (const node of nodes) {\n let pageNumber = 1;\n try {\n if (typeof node.dest === \"string\") {\n const dest = await document.getDestination(node.dest);\n if (dest != null) {\n const pageIndex = await document.getPageIndex(dest[0]);\n pageNumber = pageIndex + 1;\n }\n } else if (Array.isArray(node.dest) && node.dest.length > 0) {\n const pageIndex = await document.getPageIndex(node.dest[0]);\n pageNumber = pageIndex + 1;\n }\n } catch {\n // If destination resolution fails, default to page 1\n }\n items.push({\n title: node.title,\n depth,\n pageNumber,\n bold: node.bold,\n italic: node.italic\n });\n if (node.items.length > 0) {\n await resolveItems(node.items, depth + 1);\n }\n }\n };\n await resolveItems(outline, 0);\n return items;\n}\nfunction isTextItem(item) {\n return \"str\" in item && \"transform\" in item;\n}\nfunction roundFontSize(size) {\n return Math.round(size * 10) / 10;\n}\n\n/**\n * Extract the font size from a pdfjs TextItem.\n * Prefer `height` when available, otherwise derive from the transform matrix.\n * The transform is [scaleX, skewY, skewX, scaleY, translateX, translateY].\n * Font size = sqrt(skewX² + scaleY²), which handles rotated text too.\n */\nfunction getFontSize(item) {\n if (item.height > 0) {\n return item.height;\n }\n const transform = item.transform;\n if (Array.isArray(transform) && transform.length >= 4) {\n return Math.sqrt(transform[2] * transform[2] + transform[3] * transform[3]);\n }\n return 0;\n}\nasync function extractHeadingsFromText(document) {\n const numPages = document.numPages;\n\n // Fetch all pages' text content in parallel\n const pageContents = await Promise.all(Array.from({\n length: numPages\n }, (_, i) => document.getPage(i + 1).then(page => page.getTextContent())));\n\n // Collect font size frequencies across all pages\n const sizeCounts = new Map();\n for (const textContent of pageContents) {\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item) || item.str.trim().length === 0) {\n continue;\n }\n const fontSize = getFontSize(item);\n if (fontSize > 0) {\n const rounded = roundFontSize(fontSize);\n sizeCounts.set(rounded, (sizeCounts.get(rounded) ?? 0) + 1);\n }\n }\n }\n\n // Find the most common font size (body text)\n let bodySize = 0;\n let maxCount = 0;\n for (const [size, count] of sizeCounts) {\n if (count > maxCount) {\n maxCount = count;\n bodySize = size;\n }\n }\n if (bodySize === 0) {\n return [];\n }\n\n // Heading threshold: text significantly larger than body text\n const headingThreshold = bodySize * OUTLINE_HEADING_SIZE_RATIO;\n\n // Collect all unique heading sizes above threshold\n const headingSizes = new Set();\n for (const [size] of sizeCounts) {\n if (size >= headingThreshold) {\n headingSizes.add(size);\n }\n }\n if (headingSizes.size === 0) {\n return [];\n }\n\n // Sort heading sizes descending (largest = depth 0)\n const sortedSizes = [...headingSizes].sort((a, b) => b - a);\n const sizeToDepth = new Map();\n for (let i = 0; i < sortedSizes.length; i++) {\n sizeToDepth.set(sortedSizes[i], i);\n }\n\n // Extract headings with page numbers.\n // pdfjs splits visual lines into multiple TextItems (e.g. \"1.\" and\n // \"Introduction\" are separate items). We accumulate all items on the\n // same visual line and treat the line as a heading if most of its\n // content is at a heading font size.\n const candidateHeadings = [];\n for (let pageIdx = 0; pageIdx < pageContents.length; pageIdx++) {\n const textContent = pageContents[pageIdx];\n const pageNumber = pageIdx + 1;\n let lineItems = [];\n let linePageNumber = pageNumber;\n let lineFontName = \"\";\n let lineHeadingFontSize = 0;\n let lastFlushWasHeading = false;\n const flushLine = () => {\n if (lineItems.length === 0) return;\n\n // Check if the majority of the line's non-whitespace content is heading-sized\n let headingChars = 0;\n let totalChars = 0;\n for (const li of lineItems) {\n const len = li.text.trim().length;\n totalChars += len;\n if (sizeToDepth.has(roundFontSize(li.fontSize))) {\n headingChars += len;\n }\n }\n if (totalChars > 0 && headingChars / totalChars > 0.5) {\n const fullText = lineItems.map(li => li.text).join(\"\").trim();\n if (fullText.length > 0) {\n candidateHeadings.push({\n text: fullText,\n fontSize: lineHeadingFontSize,\n pageNumber: linePageNumber,\n fontName: lineFontName,\n contiguous: lastFlushWasHeading\n });\n }\n lastFlushWasHeading = true;\n } else {\n lastFlushWasHeading = false;\n }\n lineItems = [];\n lineHeadingFontSize = 0;\n };\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item)) {\n continue;\n }\n const fontSize = getFontSize(item);\n const rounded = roundFontSize(fontSize);\n const isHeadingSized = sizeToDepth.has(rounded);\n if (isHeadingSized && lineHeadingFontSize === 0) {\n lineHeadingFontSize = rounded;\n linePageNumber = pageNumber;\n lineFontName = item.fontName;\n }\n if (lineHeadingFontSize > 0) {\n lineItems.push({\n text: item.str,\n fontSize\n });\n }\n if (item.hasEOL) {\n flushLine();\n }\n }\n\n // Flush remaining items at end of page\n flushLine();\n }\n\n // Merge consecutive heading lines that were contiguous (no body text between them)\n // and at the same font size. This joins multi-line titles that wrap in the PDF.\n const mergedHeadings = [];\n for (const heading of candidateHeadings) {\n const prev = mergedHeadings[mergedHeadings.length - 1];\n if (prev != null && heading.contiguous && Math.abs(prev.fontSize - heading.fontSize) < 0.1) {\n prev.text += \" \" + heading.text;\n } else {\n mergedHeadings.push({\n ...heading\n });\n }\n }\n return mergedHeadings.filter(heading => heading.text.trim().length <= OUTLINE_MAX_HEADING_LENGTH).map(heading => ({\n title: heading.text.trim(),\n depth: sizeToDepth.get(heading.fontSize) ?? 0,\n pageNumber: heading.pageNumber,\n bold: false,\n italic: false\n }));\n}","/*\n * 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 { useEffect, useState } from \"react\";\nimport { PAGE_RENDERED_EVENT } from \"../constants.js\";\nexport function usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document) {\n const [portalTargets, setPortalTargets] = useState([]);\n useEffect(function subscribePageRendered() {\n const eventBus = eventBusRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (eventBus == null || pdfViewer == null) {\n return;\n }\n const handlePageRendered = evt => {\n const pageIndex = evt.pageNumber - 1;\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.div == null || pageView?.viewport == null) {\n return;\n }\n const viewport = pageView.viewport;\n setPortalTargets(prev => {\n // Replace existing entry for this page or add new one\n const filtered = prev.filter(t => t.pageNumber !== evt.pageNumber);\n return [...filtered, {\n pageNumber: evt.pageNumber,\n container: pageView.div,\n pageHeight: viewport.viewBox[3],\n // viewBox is [xMin, yMin, width, height] and we need the original height before scaling\n scale: viewport.scale\n }].sort((a, b) => a.pageNumber - b.pageNumber);\n });\n };\n eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);\n return () => {\n eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);\n setPortalTargets([]);\n };\n }, [eventBusRef, pdfViewerRef, document]);\n return portalTargets;\n}","/*\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 { getDocument, GlobalWorkerOptions } from \"pdfjs-dist\";\nconst pdfWorkerUrl = new URL(\"pdfjs-dist/build/pdf.worker.min.mjs\", import.meta.url);\nimport { useEffect, useState } from \"react\";\nconst pdfWorker = {\n workerInitialized: false,\n ensureWorker() {\n GlobalWorkerOptions.workerSrc = pdfWorkerUrl.href;\n this.workerInitialized = true;\n }\n};\nexport function usePdfDocument(src) {\n const [document, setDocument] = useState(undefined);\n const [numPages, setNumPages] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n useEffect(function loadPdfDocument() {\n pdfWorker.ensureWorker();\n setLoading(true);\n setError(undefined);\n const loadingTask = getDocument(typeof src === \"string\" ? {\n url: src\n } : {\n data: src\n });\n let cancelled = false;\n loadingTask.promise.then(pdf => {\n if (!cancelled) {\n setDocument(pdf);\n setNumPages(pdf.numPages);\n setLoading(false);\n }\n }, err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n void loadingTask.destroy();\n };\n }, [src]);\n return {\n document,\n numPages,\n loading,\n error\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { EventBus, PDFFindController, PDFLinkService, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport { useEffect, useRef } from \"react\";\nimport { PAGES_LOADED_EVENT } from \"../constants.js\";\nexport function usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage) {\n const pdfViewerRef = useRef(null);\n const eventBusRef = useRef(null);\n const findControllerRef = useRef(null);\n useEffect(function initializePdfViewer() {\n const container = containerRef.current;\n const viewer = viewerRef.current;\n if (container == null || viewer == null || document == null) {\n return;\n }\n const eventBus = new EventBus();\n const linkService = new PDFLinkService({\n eventBus\n });\n const findController = new PDFFindController({\n linkService,\n eventBus,\n updateMatchesCountOnProgress: true\n });\n const pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n linkService,\n findController,\n removePageBorders: true,\n annotationEditorMode: AnnotationEditorType.NONE,\n annotationEditorHighlightColors: \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\"\n });\n linkService.setViewer(pdfViewer);\n linkService.setDocument(document);\n findController.setDocument(document);\n pdfViewer.setDocument(document);\n\n // Apply initial scale and page after pages are loaded to avoid\n // \"scrollPageIntoView: not a valid pageNumber\" console errors.\n const onPagesLoaded = () => {\n if (initialScale != null) {\n pdfViewer.currentScale = initialScale;\n }\n if (initialPage != null && initialPage > 1) {\n pdfViewer.currentPageNumber = initialPage;\n pdfViewer.scrollPageIntoView({\n pageNumber: initialPage\n });\n }\n eventBus.off(PAGES_LOADED_EVENT, onPagesLoaded);\n };\n eventBus.on(PAGES_LOADED_EVENT, onPagesLoaded);\n eventBusRef.current = eventBus;\n findControllerRef.current = findController;\n pdfViewerRef.current = pdfViewer;\n return () => {\n pdfViewerRef.current = null;\n eventBusRef.current = null;\n findControllerRef.current = null;\n pdfViewer.cleanup();\n };\n }, [containerRef, viewerRef, document]);\n return {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { PAGE_CHANGING_EVENT, SCALE_CHANGING_EVENT } from \"../constants.js\";\nexport function usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange,\n onPageChange\n}) {\n const lastScaleRef = useRef(scale);\n\n // Sync React scale → PDFViewer\n useEffect(function syncScaleToViewer() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null) {\n return;\n }\n if (Math.abs(lastScaleRef.current - scale) > 0.001) {\n lastScaleRef.current = scale;\n pdfViewer.currentScale = scale;\n }\n }, [pdfViewerRef, scale]);\n\n // Listen to PDFViewer events → React state\n useEffect(function subscribeViewerEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handlePageChanging = evt => {\n onPageChange(evt.pageNumber);\n };\n const handleScaleChanging = evt => {\n lastScaleRef.current = evt.scale;\n onScaleChange(evt.scale);\n };\n eventBus.on(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.on(SCALE_CHANGING_EVENT, handleScaleChanging);\n return () => {\n eventBus.off(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.off(SCALE_CHANGING_EVENT, handleScaleChanging);\n };\n }, [eventBusRef, document, onPageChange, onScaleChange]);\n const scrollToPage = useCallback(page => {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.currentPageNumber = page;\n }\n }, [pdfViewerRef]);\n return {\n scrollToPage\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { usePdfAnnotationPortals } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfDocument } from \"./usePdfDocument.js\";\nimport { usePdfViewer } from \"./usePdfViewer.js\";\nimport { usePdfViewerSync } from \"./usePdfViewerSync.js\";\nexport function usePdfViewerCore({\n src,\n initialPage = 1,\n initialScale = 1.0\n}) {\n const {\n document,\n numPages,\n loading,\n error\n } = usePdfDocument(src);\n const [scale, setScale] = useState(initialScale);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const containerRef = useRef(null);\n const viewerRef = useRef(null);\n const {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n } = usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage);\n const handleScaleChange = useCallback(newScale => {\n setScale(newScale);\n }, []);\n const handlePageChange = useCallback(page => {\n setCurrentPage(page);\n }, []);\n const {\n scrollToPage: syncScrollToPage\n } = usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange: handleScaleChange,\n onPageChange: handlePageChange\n });\n const scrollToPage = useCallback(page => {\n setCurrentPage(page);\n syncScrollToPage(page);\n }, [syncScrollToPage]);\n const portalTargets = usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document);\n return useMemo(() => ({\n document,\n numPages,\n loading,\n error,\n containerRef,\n viewerRef,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n portalTargets,\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n }), [document, numPages, loading, error, currentPage, scrollToPage, scale, setScale, portalTargets]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { EMPTY_STRING, FIND_EVENT, UPDATE_FIND_CONTROL_STATE_EVENT, UPDATE_FIND_MATCHES_COUNT_EVENT } from \"../constants.js\";\nexport function usePdfViewerSearch(eventBusRef, findControllerRef, document) {\n const [query, setQueryState] = useState(EMPTY_STRING);\n const [totalMatches, setTotalMatches] = useState(0);\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n const dispatchFind = useCallback((queryString, findPrevious) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"\",\n query: queryString,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef]);\n const dispatchFindAgain = useCallback(findPrevious => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"again\",\n query,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef, query]);\n const setQuery = useCallback(input => {\n setQueryState(input);\n if (input === EMPTY_STRING) {\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Dispatch empty query to clear highlights\n dispatchFind(EMPTY_STRING, false);\n return;\n }\n dispatchFind(input, false);\n }, [dispatchFind]);\n const nextMatch = useCallback(() => {\n dispatchFindAgain(false);\n }, [dispatchFindAgain]);\n const prevMatch = useCallback(() => {\n dispatchFindAgain(true);\n }, [dispatchFindAgain]);\n const openSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n const closeSearch = useCallback(() => {\n setIsSearchOpen(false);\n setQueryState(EMPTY_STRING);\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Clear highlights\n dispatchFind(EMPTY_STRING, false);\n }, [dispatchFind]);\n useEffect(function subscribeSearchEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handleMatchesCount = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n const handleControlState = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n eventBus.on(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.on(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n return () => {\n eventBus.off(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.off(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n };\n }, [eventBusRef, findControllerRef, document]);\n return useMemo(() => ({\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch\n }), [query, totalMatches, currentMatchIndex, isSearchOpen, setQuery, nextMatch, prevMatch, openSearch, closeSearch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport { usePdfOutline } from \"./usePdfOutline.js\";\nimport { usePdfViewerCore } from \"./usePdfViewerCore.js\";\nimport { usePdfViewerSearch } from \"./usePdfViewerSearch.js\";\nexport function usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n onDownload\n}) {\n const core = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const [rotation, setRotation] = useState(0);\n const [sidebarOpen, setSidebarOpen] = useState(initialSidebarOpen);\n const [sidebarMode, setSidebarMode] = useState(sidebarModeProp);\n const search = usePdfViewerSearch(core.eventBusRef, core.findControllerRef, core.document);\n const outlineItems = usePdfOutline(core.document);\n\n // Sync sidebarMode prop changes to state\n useEffect(function syncSidebarMode() {\n setSidebarMode(sidebarModeProp);\n }, [sidebarModeProp]);\n\n // Sync rotation → PDFViewer\n useEffect(function syncRotationToViewer() {\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.pagesRotation = rotation;\n }\n }, [core.pdfViewerRef, rotation]);\n\n // Ctrl+F keyboard shortcut\n useEffect(function registerSearchShortcut() {\n const handleKeyDown = e => {\n if ((e.ctrlKey || e.metaKey) && e.key === \"f\") {\n e.preventDefault();\n search.openSearch();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [search.openSearch]);\n const zoomIn = useCallback(() => {\n core.setScale(Math.min(core.scale + SCALE_STEP, MAX_SCALE));\n }, [core.scale, core.setScale]);\n const zoomOut = useCallback(() => {\n core.setScale(Math.max(core.scale - SCALE_STEP, MIN_SCALE));\n }, [core.scale, core.setScale]);\n const rotateLeft = useCallback(() => {\n setRotation(prev => (prev - 90 + 360) % 360);\n }, []);\n const rotateRight = useCallback(() => {\n setRotation(prev => (prev + 90) % 360);\n }, []);\n const toggleSidebar = useCallback(() => {\n setSidebarOpen(prev => !prev);\n }, []);\n const download = useCallback(filename => {\n if (core.document == null) {\n return;\n }\n void core.document.getData().then(data => {\n const blob = new Blob([data.buffer], {\n type: \"application/pdf\"\n });\n const url = URL.createObjectURL(blob);\n const resolvedFilename = resolveDownloadFilename(src, filename);\n const a = globalThis.document.createElement(\"a\");\n a.href = url;\n a.download = resolvedFilename;\n a.click();\n URL.revokeObjectURL(url);\n onDownload?.({\n success: true,\n filename: resolvedFilename\n });\n }).catch(err => {\n onDownload?.({\n success: false,\n error: err instanceof Error ? err : new Error(\"Failed to download PDF\")\n });\n });\n }, [core.document, src, onDownload]);\n return useMemo(() => ({\n ...core,\n zoomIn,\n zoomOut,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download\n }), [core, zoomIn, zoomOut, rotation, rotateLeft, rotateRight, sidebarOpen, sidebarMode, setSidebarMode, toggleSidebar, search, outlineItems, download]);\n}\n\n/** Derive a download filename from an explicit name, the src URL, or a fallback. */\nfunction resolveDownloadFilename(src, filename) {\n if (filename != null) {\n return filename;\n }\n if (typeof src === \"string\") {\n return src.split(\"/\").pop()?.split(\"?\")[0] || \"document.pdf\";\n }\n return \"document.pdf\";\n}",".pdfViewer {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-pdf-viewer-bg);\n border: var(--osdk-pdf-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n position: relative;\n}\n\n.contentArea {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n.scrollContainerWrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n.scrollContainer {\n overflow: auto;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.loadingContainer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.errorContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-danger-rest);\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinnerIcon {\n animation: spin 1s linear infinite;\n color: var(--osdk-typography-color-muted);\n}\n\n.errorIcon {\n flex-shrink: 0;\n}\n\n/* PDFViewer page overrides */\n:global(.pdfViewer .page) {\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n background-color: var(--osdk-palette-white);\n margin: 0 auto var(--osdk-pdf-viewer-page-gap);\n}\n\n/* Search highlight overrides — match pdf.js FindController CSS classes */\n:global(.textLayer) .highlight {\n background-color: var(--osdk-pdf-viewer-search-highlight);\n border-radius: 1px;\n}\n\n:global(.textLayer) .highlight.selected {\n background-color: var(--osdk-pdf-viewer-search-active);\n}\n\n:global(.textLayer)::selection {\n background: var(--osdk-intent-primary-rest);\n}\n","/*\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 { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PdfViewerAnnotationLayer } from \"./components/PdfViewerAnnotationLayer.js\";\nimport { PdfViewerOutlineSidebar } from \"./components/PdfViewerOutlineSidebar.js\";\nimport { PdfViewerSearchBar } from \"./components/PdfViewerSearchBar.js\";\nimport { PdfViewerSidebar } from \"./components/PdfViewerSidebar.js\";\nimport { PdfViewerToolbar } from \"./components/PdfViewerToolbar.js\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\nimport styles from \"./PdfViewer.module.css\";\nexport const BasePdfViewer = /*#__PURE__*/forwardRef(function BasePdfViewer({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n onDownload,\n enableHighlight = false,\n onTextHighlight,\n onHighlightDelete,\n formData,\n onFormSubmit,\n onFormChange,\n initialPage = 1,\n initialScale = 1.0,\n initialSidebarOpen = false,\n enableDownload = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n outlineIcons,\n className\n}, ref) {\n const viewer = usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen,\n sidebarMode: sidebarModeProp,\n onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: enableHighlight,\n onTextHighlight,\n onHighlightDelete\n });\n useImperativeHandle(ref, () => ({\n scrollToPage: viewer.scrollToPage,\n deleteHighlight\n }), [viewer.scrollToPage, deleteHighlight]);\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormSubmit,\n onFormChange\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(PdfViewerToolbar, {\n currentPage: viewer.currentPage,\n numPages: viewer.numPages,\n scale: viewer.scale,\n sidebarOpen: viewer.sidebarOpen,\n onPageChange: viewer.scrollToPage,\n onScaleChange: viewer.setScale,\n onSearchOpen: viewer.search.openSearch,\n onSidebarToggle: viewer.toggleSidebar,\n onDownload: viewer.download,\n enableDownload: enableDownload,\n onRotateLeft: viewer.rotateLeft,\n onRotateRight: viewer.rotateRight,\n enableHighlight: enableHighlight,\n highlightModeActive: highlightModeActive,\n onHighlightToggle: toggleHighlightMode,\n enableFormSave: onFormSubmit != null && hasFormFields,\n onFormSave: submitFormData\n }), viewer.search.isSearchOpen && /*#__PURE__*/React.createElement(PdfViewerSearchBar, {\n query: viewer.search.query,\n totalMatches: viewer.search.totalMatches,\n currentMatchIndex: viewer.search.currentMatchIndex,\n onQueryChange: viewer.search.setQuery,\n onNext: viewer.search.nextMatch,\n onPrev: viewer.search.prevMatch,\n onClose: viewer.search.closeSearch\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.contentArea\n }, viewer.sidebarOpen && viewer.sidebarMode === \"thumbnails\" && /*#__PURE__*/React.createElement(PdfViewerSidebar, {\n document: viewer.document,\n numPages: viewer.numPages,\n currentPage: viewer.currentPage,\n onPageClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode\n }), viewer.sidebarOpen && viewer.sidebarMode === \"outline\" && /*#__PURE__*/React.createElement(PdfViewerOutlineSidebar, {\n outlineItems: viewer.outlineItems,\n currentPage: viewer.currentPage,\n onItemClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode,\n outlineIcons: outlineIcons\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n })))));\n});","/*\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 { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"../constants.js\";\nimport { usePdfAnnotationsByPage } from \"../hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"../hooks/usePdfFormFields.js\";\nimport { usePdfViewerCore } from \"../hooks/usePdfViewerCore.js\";\nimport styles from \"../PdfViewer.module.css\";\nimport { PdfViewerAnnotationLayer } from \"./PdfViewerAnnotationLayer.js\";\nexport function PdfViewerContent({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n initialPage = 1,\n initialScale = 1.0,\n onPageChange: onPageChangeProp,\n onScaleChange: onScaleChangeProp,\n formData,\n onFormChange,\n className\n}) {\n const viewer = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormChange\n });\n\n // Use refs for callbacks to avoid firing on initial mount\n const onPageChangeRef = useRef(onPageChangeProp);\n onPageChangeRef.current = onPageChangeProp;\n const onScaleChangeRef = useRef(onScaleChangeProp);\n onScaleChangeRef.current = onScaleChangeProp;\n const isInitialMountRef = useRef(true);\n useEffect(function notifyPageChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onPageChangeRef.current?.(viewer.currentPage);\n }, [viewer.currentPage]);\n useEffect(function notifyScaleChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onScaleChangeRef.current?.(viewer.scale);\n }, [viewer.scale]);\n useEffect(function clearInitialMount() {\n isInitialMountRef.current = false;\n }, []);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n }))));\n}","/*\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, { createContext, useContext, useMemo } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\n\n/** The shape of the value provided by {@link PdfViewerProvider}. */\n\nconst PdfViewerContext = /*#__PURE__*/createContext(null);\n/** Provides {@link PdfViewerContextValue} to descendant components. */\nexport function PdfViewerProvider({\n value,\n children\n}) {\n return /*#__PURE__*/React.createElement(PdfViewerContext.Provider, {\n value: value\n }, children);\n}\n\n/**\n * Returns the nearest {@link PdfViewerContextValue} from a {@link PdfViewerProvider}.\n * Throws if called outside a provider.\n */\nexport function usePdfViewerContext() {\n const ctx = useContext(PdfViewerContext);\n if (ctx == null) {\n throw new Error(\"usePdfViewerContext must be used within a PdfViewerProvider\");\n }\n return ctx;\n}\n\n/**\n * Consumer-facing setup hook analogous to react-hook-form's `useForm()`.\n * Accepts viewer options and returns a {@link PdfViewerContextValue} suitable\n * for passing to {@link PdfViewerProvider}.\n */\nexport function usePdfViewerInstance(options) {\n const viewer = usePdfViewerState({\n src: options.src,\n initialPage: options.initialPage,\n initialScale: options.initialScale,\n initialSidebarOpen: options.initialSidebarOpen,\n sidebarMode: options.sidebarMode,\n onDownload: options.onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: options.highlightEnabled ?? false,\n onTextHighlight: options.onTextHighlight,\n onHighlightDelete: options.onHighlightDelete\n });\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData: options.formData,\n onFormSubmit: options.onFormSubmit,\n onFormChange: options.onFormChange\n });\n const annotations = options.annotations ?? EMPTY_ANNOTATION_ARRAY;\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const highlightEnabled = options.highlightEnabled ?? false;\n const enableDownload = options.enableDownload ?? false;\n const enableFormSave = options.onFormSubmit != null && hasFormFields;\n const {\n onAnnotationClick,\n outlineIcons\n } = options;\n return useMemo(() => ({\n ...viewer,\n highlightEnabled,\n highlightModeActive,\n toggleHighlightMode,\n hasFormFields,\n submitFormData,\n annotations,\n annotationsByPage,\n onAnnotationClick,\n enableDownload,\n enableFormSave,\n outlineIcons\n }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useEffect, useState } from \"react\";\nimport { BasePdfViewer } from \"./PdfViewer.js\";\nimport styles from \"./PdfViewer.module.css\";\nasync function fetchMediaContents(media) {\n const result = await media.fetchContents();\n return result.arrayBuffer();\n}\nexport function PdfViewer({\n media,\n className,\n ...pdfViewerProps\n}) {\n const [src, setSrc] = useState(undefined);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n\n // This is required until we either support React 19+ or a data fetching hook\n useEffect(function fetchMediaSource() {\n let cancelled = false;\n setLoading(true);\n setError(undefined);\n setSrc(undefined);\n fetchMediaContents(media).then(buffer => {\n if (!cancelled) {\n setSrc(buffer);\n setLoading(false);\n }\n }).catch(err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media]);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", error.message));\n }\n if (src == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: src,\n className: className\n }, pdfViewerProps));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\n\n/**\n * TODO: Delete this once `React.memo` is typed to not lose generics to `unknown`\n *\n * Context: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087\n */\nexport const typedReactMemo = React.memo;","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns a ref whose `.current` is `true` while the component is mounted\n * and `false` after unmount. Use to guard async state updates.\n */\nexport function useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(function trackMountedState() {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted.js\";\n/**\n * Wraps an async callback with pending and error state tracking.\n *\n * - `isPending` is true while the action is executing\n * - `error` holds the error from the last rejection (cleared on next execute or via clearError)\n * - `execute` calls the action with pending/error bookkeeping\n * - `clearError` resets the error to undefined\n */\nexport function useAsyncAction(action) {\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState(undefined);\n const isMountedRef = useIsMounted();\n const execute = useCallback(async (...args) => {\n setError(undefined);\n setIsPending(true);\n try {\n await action(...args);\n } catch (err) {\n if (isMountedRef.current) {\n setError(err);\n }\n } finally {\n if (isMountedRef.current) {\n setIsPending(false);\n }\n }\n }, [action, isMountedRef]);\n const clearError = useCallback(() => {\n setError(undefined);\n }, []);\n return {\n isPending,\n error,\n execute,\n clearError\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkForm {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n padding: var(--osdk-form-content-padding);\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n border-top: var(--osdk-surface-border-width) solid\n var(--osdk-form-footer-border-color);\n padding-block: var(--osdk-form-content-padding);\n padding-inline: var(--osdk-form-content-padding);\n}\n\n.osdkFormSubmitButton {\n margin-inline-start: auto;\n}\n\n.osdkFormErrorIndicator {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-form-footer-error-color);\n font-size: var(--osdk-form-footer-error-font-size);\n cursor: help;\n}\n\n.osdkFormErrorList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Derives react-hook-form validation rules from a field definition's\n * constraint props (min, max, minLength, etc.) and the optional\n * user-provided `validate` function.\n *\n * Called at rule-building time so that `onValidationError` can inject\n * custom messages into the RHF rules object.\n */\nexport function extractValidationRules(fieldDef) {\n const rules = {};\n if (fieldDef.isRequired) {\n rules.required = getMessage(fieldDef, {\n type: \"required\"\n });\n }\n const validateFns = {};\n switch (fieldDef.fieldComponent) {\n case \"NUMBER_INPUT\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => typeof value === \"number\" && value < min ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => typeof value === \"number\" && value > max ? msg : true;\n }\n break;\n }\n case \"TEXT_INPUT\":\n case \"TEXT_AREA\":\n {\n const {\n minLength,\n maxLength\n } = fieldDef.fieldComponentProps;\n if (minLength != null) {\n rules.minLength = {\n value: minLength,\n message: getMessage(fieldDef, {\n type: \"minLength\",\n minLength\n })\n };\n }\n if (maxLength != null) {\n rules.maxLength = {\n value: maxLength,\n message: getMessage(fieldDef, {\n type: \"maxLength\",\n maxLength\n })\n };\n }\n break;\n }\n case \"DATETIME_PICKER\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => value instanceof Date && value.getTime() < min.getTime() ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => value instanceof Date && value.getTime() > max.getTime() ? msg : true;\n }\n break;\n }\n case \"FILE_PICKER\":\n {\n const {\n maxSize\n } = fieldDef.fieldComponentProps;\n if (maxSize != null) {\n const msg = getMessage(fieldDef, {\n type: \"maxSize\",\n maxSize\n });\n validateFns.maxSize = value => {\n if (value instanceof File) {\n return value.size > maxSize ? msg : true;\n }\n if (Array.isArray(value)) {\n const oversized = value.some(f => f instanceof File && f.size > maxSize);\n return oversized ? msg : true;\n }\n return true;\n };\n }\n break;\n }\n // DROPDOWN, RADIO_BUTTONS, CUSTOM, OBJECT_SET: only `required` applies\n default:\n break;\n }\n if (fieldDef.validate != null) {\n const userValidate = fieldDef.validate;\n validateFns.custom = async value => {\n const result = await userValidate(value);\n if (result == null) {\n return true;\n }\n return getMessage(fieldDef, {\n type: \"validate\",\n message: result\n });\n };\n }\n if (Object.keys(validateFns).length > 0) {\n rules.validate = validateFns;\n }\n return rules;\n}\nfunction getMessage(fieldDef, error) {\n return fieldDef.onValidationError?.(error) ?? getDefaultMessage(error);\n}\nfunction getDefaultMessage(error) {\n switch (error.type) {\n case \"required\":\n return \"This field is required\";\n case \"min\":\n return `Must be at least ${formatConstraint(error.min)}`;\n case \"max\":\n return `Must be at most ${formatConstraint(error.max)}`;\n case \"minLength\":\n return `Must be at least ${error.minLength} characters`;\n case \"maxLength\":\n return `Must be at most ${error.maxLength} characters`;\n case \"maxSize\":\n return `File must be smaller than ${formatBytes(error.maxSize)}`;\n case \"validate\":\n return error.message;\n }\n}\nfunction formatConstraint(value) {\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n return String(value);\n}\nfunction formatBytes(bytes) {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-label-field-gap);\n}\n\n.osdkFormFieldLabel {\n font-size: var(--osdk-form-label-font-size);\n font-weight: var(--osdk-form-label-font-weight);\n color: var(--osdk-form-label-color);\n}\n\n.osdkFormFieldRequired {\n color: var(--osdk-form-required-color);\n}\n\n.osdkFormFieldError {\n font-size: var(--osdk-form-error-font-size);\n color: var(--osdk-form-error-color);\n}\n\n.osdkFormFieldHelperText {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\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, { memo } from \"react\";\nimport styles from \"./FormField.module.css\";\nexport const FormField = /*#__PURE__*/memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n error,\n onBlur,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField,\n onBlur: onBlur\n }, label != null && /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkFormFieldLabel,\n htmlFor: fieldKey\n }, label, isRequired === true && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldRequired,\n \"aria-label\": \"required\"\n }, \" \", \"*\")), children, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error), helperText != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\n/**\n * Renders a user-provided custom field. Delegates all rendering to the\n * `customRenderer` callback, passing through the standard form field props\n * (value, onChange, id) so the custom implementation can participate in\n * form state management.\n */\nexport const CustomField = /*#__PURE__*/memo(function CustomFieldFn({\n customRenderer: CustomRenderer,\n ...baseProps\n}) {\n return /*#__PURE__*/React.createElement(CustomRenderer, baseProps);\n});","/* DatetimePickerField — button trigger + popover + time input */\n\n/* Trigger button — styled to look like an input */\n.triggerButton {\n width: 100%;\n text-align: left;\n font-family: var(--osdk-datetime-input-font-family);\n font-size: var(--osdk-datetime-input-font-size);\n padding: var(--osdk-datetime-input-padding);\n border: var(--osdk-datetime-input-border);\n border-radius: var(--osdk-datetime-input-border-radius);\n background: var(--osdk-datetime-input-bg);\n color: var(--osdk-datetime-input-color);\n cursor: pointer;\n box-sizing: border-box;\n\n &:focus-visible {\n border-color: var(--osdk-datetime-input-focus-border-color);\n outline: var(--osdk-datetime-input-focus-outline);\n outline-offset: var(--osdk-datetime-input-focus-outline-offset);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-datetime-input-error-border-color);\n }\n}\n\n.triggerButtonPlaceholder {\n color: var(--osdk-datetime-input-placeholder-color, currentColor);\n opacity: var(--osdk-datetime-input-placeholder-opacity);\n}\n\n/* Popover */\n.popover {\n background: var(--osdk-datetime-popover-bg);\n padding: var(--osdk-datetime-popover-padding);\n z-index: var(--osdk-datetime-popover-z-index);\n border: var(--osdk-datetime-popover-border);\n border-radius: var(--osdk-datetime-popover-border-radius);\n}\n\n/* Time input footer — negative horizontal margin counters the popover padding\n so the border-top spans the full width of the popover. */\n.timeFooter {\n padding-top: var(--osdk-datetime-time-padding-top);\n padding-left: var(--osdk-datetime-popover-padding);\n padding-right: var(--osdk-datetime-popover-padding);\n border-top: var(--osdk-datetime-time-border-top);\n margin-top: var(--osdk-datetime-time-padding-top);\n margin-left: calc(var(--osdk-datetime-popover-padding) * -1);\n margin-right: calc(var(--osdk-datetime-popover-padding) * -1);\n}\n\n.timeInput {\n width: 100%;\n font-family: var(--osdk-datetime-input-font-family);\n font-size: var(--osdk-datetime-input-font-size);\n padding: var(--osdk-datetime-input-padding);\n border: var(--osdk-datetime-input-border);\n border-radius: var(--osdk-datetime-input-border-radius);\n background: var(--osdk-datetime-input-bg);\n color: var(--osdk-datetime-input-color);\n box-sizing: border-box;\n\n &:focus {\n border-color: var(--osdk-datetime-input-focus-border-color);\n outline: var(--osdk-datetime-input-focus-outline);\n outline-offset: var(--osdk-datetime-input-focus-outline-offset);\n }\n}\n","/*\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, { Suspense } from \"react\";\nimport styles from \"./DateCalendar.module.css\";\nconst DateCalendarLazy = /*#__PURE__*/React.lazy(() => import(\"./DateCalendar.js\"));\nexport function LazyDateCalendar(props) {\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarFallback\n })\n }, /*#__PURE__*/React.createElement(DateCalendarLazy, props));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { formatDateForInput, formatDatetimeForDisplay, formatTime } from \"../../shared/dateUtils.js\";\nimport styles from \"./DatetimePickerField.module.css\";\nimport { LazyDateCalendar } from \"./LazyDateCalendar.js\";\n\n/** Midnight fallback so `extractTime` can reuse `formatTime` when no date is selected. */\nconst DATE_ZERO = new Date(2000, 0, 1, 0, 0, 0, 0);\nfunction extractTime(date) {\n return formatTime(date ?? DATE_ZERO);\n}\nexport function DatetimePickerField({\n id,\n value,\n onChange,\n error,\n min,\n max,\n placeholder,\n formatDate,\n showTime = false,\n closeOnSelection\n}) {\n const shouldCloseOnSelection = closeOnSelection ?? !showTime;\n const [isOpen, setIsOpen] = useState(false);\n const formatFn = formatDate ?? (showTime ? formatDatetimeForDisplay : formatDateForInput);\n const formattedValue = value != null ? formatFn(value) : \"\";\n const handleCalendarSelect = useCallback(selected => {\n if (selected == null) {\n onChange?.(null);\n return;\n }\n const date = new Date(selected.getTime());\n if (showTime && value != null) {\n date.setHours(value.getHours(), value.getMinutes());\n }\n onChange?.(date);\n if (shouldCloseOnSelection) {\n setIsOpen(false);\n }\n }, [onChange, showTime, value, shouldCloseOnSelection]);\n const handleTimeChange = useCallback(timeString => {\n const [hoursStr, minutesStr] = timeString.split(\":\");\n const hours = parseInt(hoursStr ?? \"0\", 10);\n const minutes = parseInt(minutesStr ?? \"0\", 10);\n const base = value != null ? new Date(value.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.(base);\n }, [value, onChange]);\n const displayText = formattedValue !== \"\" ? formattedValue : placeholder ?? \"\";\n const hasValue = formattedValue !== \"\";\n const timeValue = extractTime(value);\n const footer = useMemo(() => showTime ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.timeFooter\n }, /*#__PURE__*/React.createElement(Input, {\n type: \"time\",\n value: timeValue,\n onValueChange: handleTimeChange,\n className: styles.timeInput,\n \"aria-label\": \"Time\"\n })) : undefined, [showTime, timeValue, handleTimeChange]);\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: isOpen,\n onOpenChange: setIsOpen\n }, /*#__PURE__*/React.createElement(Popover.Trigger, {\n id: id,\n className: classnames(styles.triggerButton, !hasValue && styles.triggerButtonPlaceholder),\n \"aria-label\": hasValue ? undefined : \"Select date\",\n \"aria-invalid\": error != null || undefined\n }, displayText), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n className: styles.popover\n }, /*#__PURE__*/React.createElement(LazyDateCalendar, {\n dateSelected: value ?? undefined,\n onSelect: handleCalendarSelect,\n min: min,\n max: max,\n footer: footer\n })))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkSelectTrigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--osdk-select-spacing, var(--osdk-surface-spacing));\n width: 100%;\n min-height: var(--osdk-select-min-height, 30px);\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2.5);\n cursor: pointer;\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-select-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-select-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-select-trigger-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n color: var(\n --osdk-select-trigger-color,\n var(--osdk-typography-color-default-rest)\n );\n font-family: var(\n --osdk-select-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-select-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-select-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default)),\n border-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n background-color: var(\n --osdk-select-trigger-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n }\n\n &:active {\n background-color: var(\n --osdk-select-trigger-bg-active,\n var(--osdk-surface-background-color-default-active)\n );\n }\n\n &:focus-visible {\n outline: var(--osdk-select-focus-width, var(--osdk-emphasis-focus-width))\n solid var(--osdk-select-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(\n --osdk-select-focus-offset,\n var(--osdk-emphasis-focus-offset)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n\n &[data-popup-open] {\n border-color: var(\n --osdk-select-border-color-active,\n var(--osdk-intent-primary-rest)\n );\n }\n}\n\n.osdkSelectValueContainer {\n flex: 1;\n display: grid;\n min-width: 0;\n\n & > * {\n grid-area: 1 / 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.osdkSelectValue {\n text-align: left;\n}\n\n.osdkSelectPlaceholder {\n text-align: left;\n color: var(\n --osdk-select-placeholder-color,\n var(--osdk-typography-color-muted)\n );\n pointer-events: none;\n}\n\n.osdkSelectValue:not([data-placeholder]) ~ .osdkSelectPlaceholder {\n display: none;\n}\n\n.osdkSelectIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--osdk-select-icon-color, var(--osdk-iconography-color-muted));\n flex-shrink: 0;\n transition: transform\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n [data-popup-open] > & {\n transform: rotate(180deg);\n }\n}\n\n.osdkSelectPositioner {\n z-index: var(--osdk-select-z-index, var(--osdk-surface-z-index-3));\n}\n\n.osdkSelectPopup {\n display: flex;\n flex-direction: column;\n min-width: var(--anchor-width);\n max-height: var(--available-height);\n overflow-y: auto;\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5);\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-select-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-select-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-select-popup-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n box-shadow: var(--osdk-select-popup-shadow, var(--osdk-surface-shadow-2));\n}\n\n.osdkSelectItem {\n display: flex;\n align-items: center;\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n cursor: pointer;\n font-family: var(\n --osdk-select-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-select-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-select-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-select-item-color,\n var(--osdk-typography-color-default-rest)\n );\n transition: background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-highlighted] {\n background-color: var(\n --osdk-select-item-bg-highlighted,\n var(--osdk-surface-background-color-default-hover)\n );\n outline: none;\n }\n\n &[data-selected] {\n background-color: var(\n --osdk-select-item-bg-selected,\n var(--osdk-surface-layer-primary)\n );\n color: var(\n --osdk-select-item-color-selected,\n var(--osdk-intent-primary-rest)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Select as BaseUISelect } from \"@base-ui/react/select\";\nimport { CaretDown } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Select.module.css\";\nfunction SelectRoot({\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Root, rest, children);\n}\nfunction SelectTrigger({\n className,\n placeholder,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Trigger, _extends({\n className: classnames(styles.osdkSelectTrigger, className)\n }, rest), children ?? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkSelectValueContainer\n }, /*#__PURE__*/React.createElement(BaseUISelect.Value, {\n className: styles.osdkSelectValue\n }), placeholder != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkSelectPlaceholder\n }, placeholder)), /*#__PURE__*/React.createElement(BaseUISelect.Icon, {\n className: styles.osdkSelectIcon\n }, /*#__PURE__*/React.createElement(CaretDown, null))));\n}\nfunction SelectValue(props) {\n const {\n className,\n ...rest\n } = props;\n return /*#__PURE__*/React.createElement(BaseUISelect.Value, _extends({\n className: classnames(styles.osdkSelectValue, className)\n }, rest));\n}\nfunction SelectPositioner({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Positioner, _extends({\n className: classnames(styles.osdkSelectPositioner, className),\n sideOffset: 4\n }, rest), children);\n}\nfunction SelectPopup({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Popup, _extends({\n className: classnames(styles.osdkSelectPopup, className)\n }, rest), children);\n}\nfunction SelectItem({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Item, _extends({\n className: classnames(styles.osdkSelectItem, className)\n }, rest), /*#__PURE__*/React.createElement(BaseUISelect.ItemText, null, children));\n}\nexport const Select = {\n Root: SelectRoot,\n Trigger: SelectTrigger,\n Value: SelectValue,\n Portal: BaseUISelect.Portal,\n Positioner: SelectPositioner,\n Popup: SelectPopup,\n Item: SelectItem\n};","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { Combobox } from \"../../base-components/combobox/Combobox.js\";\nimport { Select } from \"../../base-components/select/Select.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nexport function DropdownField({\n isSearchable = false,\n itemToStringLabel,\n itemToKey,\n ...rest\n}) {\n const resolvedItemToStringLabel = itemToStringLabel ?? defaultItemToStringLabel;\n const getKey = useCallback(item => itemToKey?.(item) ?? resolvedItemToStringLabel(item), [itemToKey, resolvedItemToStringLabel]);\n if (isSearchable) {\n return /*#__PURE__*/React.createElement(ComboboxDropdown, _extends({}, rest, {\n itemToStringLabel: resolvedItemToStringLabel,\n getKey: getKey\n }));\n }\n return /*#__PURE__*/React.createElement(SelectDropdown, _extends({}, rest, {\n itemToStringLabel: resolvedItemToStringLabel,\n getKey: getKey\n }));\n}\nconst SelectDropdown = typedReactMemo(function SelectDropdownFn({\n value,\n onChange,\n items,\n itemToStringLabel,\n getKey,\n isItemEqual,\n isMultiple,\n placeholder\n}) {\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Select.Root, {\n value: value,\n onValueChange: onChange,\n multiple: isMultiple,\n isItemEqualToValue: isItemEqual,\n itemToStringLabel: itemToStringLabel\n }, /*#__PURE__*/React.createElement(Select.Trigger, {\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(Select.Portal, null, /*#__PURE__*/React.createElement(Select.Positioner, null, /*#__PURE__*/React.createElement(Select.Popup, null, items.map(item => /*#__PURE__*/React.createElement(Select.Item, {\n key: getKey(item),\n value: item\n }, itemToStringLabel(item))))))));\n});\nconst ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({\n value,\n onChange,\n items,\n itemToStringLabel,\n getKey,\n isItemEqual,\n isMultiple,\n placeholder\n}) {\n const renderChips = useCallback(selectedValues => /*#__PURE__*/React.createElement(React.Fragment, null, selectedValues.map(item => /*#__PURE__*/React.createElement(Combobox.Chip, {\n key: getKey(item),\n \"aria-label\": itemToStringLabel(item)\n }, itemToStringLabel(item), /*#__PURE__*/React.createElement(Combobox.ChipRemove, null))), /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: selectedValues.length > 0 ? \"\" : placeholder ?? \"Search…\"\n })), [getKey, itemToStringLabel, placeholder]);\n const renderItem = useCallback(item => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: getKey(item),\n value: item\n }, itemToStringLabel(item)), [getKey, itemToStringLabel]);\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Combobox.Root, {\n value: value,\n onValueChange: onChange,\n multiple: isMultiple,\n itemToStringLabel: itemToStringLabel,\n isItemEqualToValue: isItemEqual,\n items: items\n }, isMultiple ? /*#__PURE__*/React.createElement(Combobox.Chips, null, /*#__PURE__*/React.createElement(Combobox.Value, null, renderChips)) : /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No results\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem))))));\n});\nfunction defaultItemToStringLabel(item) {\n if (item == null || typeof item !== \"object\") {\n return String(item);\n }\n if (\"label\" in item && item.label != null && typeof item.label === \"string\") {\n return item.label;\n }\n return String(item);\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Outer wrapper — looks like an input field */\n.osdkFilePickerTrigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--osdk-file-picker-trigger-height);\n border: var(--osdk-file-picker-trigger-border);\n border-radius: var(--osdk-file-picker-trigger-border-radius);\n background: var(--osdk-file-picker-trigger-bg);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n box-sizing: border-box;\n overflow: hidden;\n transition:\n background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease),\n border-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n background: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &:focus-visible {\n border-color: var(--osdk-file-picker-trigger-border-color-focus);\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n outline-offset: var(--osdk-file-picker-trigger-focus-offset);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-file-picker-trigger-border-color-error);\n }\n}\n\n/* Visually hidden file input */\n.osdkFilePickerHiddenInput {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* File name text (left section) */\n.osdkFilePickerText {\n flex: 1;\n padding: var(--osdk-file-picker-trigger-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n color: var(--osdk-file-picker-trigger-color);\n cursor: pointer;\n background: none;\n border: none;\n font-family: inherit;\n font-size: inherit;\n}\n\n.osdkFilePickerPlaceholder {\n color: var(--osdk-file-picker-trigger-placeholder-color);\n}\n\n/* Clear ✕ button */\n.osdkFilePickerClear {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--osdk-file-picker-clear-size);\n height: var(--osdk-file-picker-clear-size);\n margin: var(--osdk-file-picker-clear-margin);\n padding: 0;\n border: none;\n background: none;\n color: var(--osdk-file-picker-clear-color);\n cursor: pointer;\n transition: color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n color: var(--osdk-file-picker-clear-color-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n }\n}\n\n/* Browse label (right section) */\n.osdkFilePickerBrowse {\n flex-shrink: 0;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: var(--osdk-file-picker-browse-padding);\n border-left: var(--osdk-file-picker-browse-border-left);\n background: var(--osdk-file-picker-browse-bg);\n color: var(--osdk-file-picker-browse-color);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n pointer-events: none;\n transition: background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:hover .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-hover);\n}\n\n.osdkFilePickerTrigger:active .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-active);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport styles from \"./FilePickerField.module.css\";\nexport const FilePickerField = /*#__PURE__*/memo(function FilePickerFieldFn({\n id,\n value,\n onChange,\n error,\n isMulti,\n accept,\n // maxSize is enforced by form-level validation (extractValidationRules),\n // not here. Silently dropping oversized files would leave the user with\n // no indication of why their selection disappeared.\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\"\n}) {\n const inputRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n const handleInputChange = useCallback(event => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n }, [onChange, isMulti]);\n const handleClear = useCallback(event => {\n event.stopPropagation();\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n }, [onChange]);\n const handleKeyDown = useCallback(event => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n }, [openFileDialog]);\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(() => normalizeAccept(accept), [accept]);\n return (\n /*#__PURE__*/\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n React.createElement(\"div\", {\n id: id,\n className: styles.osdkFilePickerTrigger,\n tabIndex: 0,\n role: \"button\",\n \"aria-label\": \"Choose file\",\n onClick: openFileDialog,\n onKeyDown: handleKeyDown,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(\"input\", {\n ref: inputRef,\n type: \"file\",\n className: styles.osdkFilePickerHiddenInput,\n multiple: isMulti,\n accept: acceptString,\n onChange: handleInputChange,\n \"aria-hidden\": \"true\",\n tabIndex: -1\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder)\n }, displayText ?? text), hasValue &&\n /*#__PURE__*/\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n React.createElement(Button, {\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\"\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFilePickerBrowse\n }, buttonText))\n );\n});\nfunction normalizeAccept(accept) {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\nfunction getDisplayText(value) {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map(f => f.name).join(\", \");\n }\n return value.name;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkNumberInputWrapper {\n display: flex;\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkNumberInputField {\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border: none;\n border-radius: var(--osdk-input-border-radius) 0 0\n var(--osdk-input-border-radius);\n background: transparent;\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkNumberInputStepper {\n display: flex;\n flex-direction: column;\n border-left: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n}\n\n.osdkNumberInputStepButton {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 0 calc(var(--osdk-surface-spacing) * 1.5);\n border: none;\n background: transparent;\n color: var(--osdk-input-color);\n cursor: pointer;\n line-height: 0;\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-input-border-color);\n }\n\n & + & {\n border-top: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronDown, ChevronUp } from \"@blueprintjs/icons\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./NumberInputField.module.css\";\n\n/**\n * Structural regex for valid numeric input.\n *\n * Allows intermediate typing states that will become valid numbers:\n * \"\" — user cleared the field (all groups are optional)\n * \"-\" — user started typing a negative number\n * \".\" — user started typing a decimal like \".5\"\n * \"+\" — user started typing an explicitly positive number\n * \"1.\", \"1e\", \"1e+\" — partial but structurally valid\n *\n * Rejects obviously invalid strings like \"1.2.3\" or \"+-5\".\n */\nconst VALID_NUMERIC_REGEX = /^[+-.]?(\\d+\\.?\\d*|\\d*\\.?\\d+)?([eE][+-]?\\d*)?$/;\nconst DEFAULT_STEP = 1;\nconst CHEVRON_SIZE = 12;\nexport function NumberInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n min,\n max,\n step\n}) {\n const [displayValue, setDisplayValue] = useState(() => formatNumberForDisplay(value));\n const prevValueRef = useRef(value);\n\n // Sync external value → internal display string\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n const currentParsed = parseNumericValue(displayValue);\n if (value !== currentParsed) {\n setDisplayValue(formatNumberForDisplay(value));\n }\n }\n const handleValueChange = useCallback(newValue => {\n if (!isValidInput(newValue)) {\n return;\n }\n setDisplayValue(newValue);\n onChange?.(parseNumericValue(newValue));\n }, [onChange]);\n const applyStep = useCallback(direction => {\n const current = parseNumericValue(displayValue) ?? 0;\n const delta = direction * (step ?? DEFAULT_STEP);\n const next = clamp(current + delta, min, max);\n const formatted = formatNumberForDisplay(next);\n setDisplayValue(formatted);\n onChange?.(next);\n }, [displayValue, onChange, step, min, max]);\n const handleKeyDown = useCallback(e => {\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") {\n return;\n }\n e.preventDefault();\n applyStep(e.key === \"ArrowUp\" ? 1 : -1);\n }, [applyStep]);\n const handleStepUp = useCallback(() => {\n applyStep(1);\n }, [applyStep]);\n const handleStepDown = useCallback(() => {\n applyStep(-1);\n }, [applyStep]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputWrapper,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkNumberInputField,\n type: \"text\",\n inputMode: \"decimal\",\n value: displayValue,\n onValueChange: handleValueChange,\n onKeyDown: handleKeyDown,\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputStepper\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Increment\",\n tabIndex: -1,\n onClick: handleStepUp\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: CHEVRON_SIZE\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Decrement\",\n tabIndex: -1,\n onClick: handleStepDown\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: CHEVRON_SIZE\n }))));\n}\nfunction isValidInput(text) {\n return VALID_NUMERIC_REGEX.test(text);\n}\nfunction parseNumericValue(text) {\n if (text === \"\") {\n return null;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? null : parsed;\n}\nfunction formatNumberForDisplay(value) {\n return value != null ? String(value) : \"\";\n}\nfunction clamp(value, min, max) {\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Icons, SVGIconContainer } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport const BlueprintIcon = /*#__PURE__*/React.memo(function BlueprintIconFn({\n icon,\n size\n}) {\n const paths = useIcon(icon.name, size);\n return /*#__PURE__*/React.createElement(SVGIconContainer, {\n iconName: icon.name,\n color: icon.color\n }, paths != null ? paths.map((d, i) => /*#__PURE__*/React.createElement(\"path\", {\n key: i,\n d: d,\n fillRule: \"evenodd\"\n })) : []);\n});\n\n/**\n * Loads icon paths on demand via the public `Icons.load()` API\n * instead of the static `getIconPaths()` which bundles every icon definition.\n */\nfunction useIcon(icon, size) {\n const [iconPaths, setIconPaths] = React.useState(() => Icons.getPaths(icon, size));\n React.useEffect(function loadIconPaths() {\n let isMounted = true;\n const loadedIconPaths = Icons.getPaths(icon, size);\n if (loadedIconPaths != null) {\n setIconPaths(loadedIconPaths);\n } else {\n void Icons.load(icon, size).then(() => {\n if (isMounted) {\n setIconPaths(Icons.getPaths(icon, size));\n }\n });\n }\n return () => {\n isMounted = false;\n };\n }, [icon, size]);\n return iconPaths;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkObjectSetField {\n display: flex;\n align-items: center;\n gap: var(--osdk-object-set-gap);\n min-height: var(--osdk-object-set-min-height);\n padding: var(--osdk-object-set-padding);\n color: var(--osdk-object-set-color);\n font-family: var(--osdk-object-set-font-family);\n font-size: var(--osdk-object-set-font-size);\n line-height: var(--osdk-object-set-line-height);\n}\n\n.osdkObjectSetFieldEmpty {\n color: var(--osdk-object-set-placeholder-color);\n}\n\n.osdkObjectSetFieldError {\n color: var(--osdk-object-set-error-color);\n}\n\n.osdkObjectSetIconSkeleton {\n width: var(--osdk-object-set-icon-skeleton-width);\n align-self: stretch;\n}\n\n.osdkObjectSetLabelSkeleton {\n width: var(--osdk-object-set-label-skeleton-width);\n align-self: stretch;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconSize } from \"@blueprintjs/icons\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useObjectSet } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { BlueprintIcon } from \"../../base-components/icon/BlueprintIcon.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./ObjectSetField.module.css\";\nconst DEFAULT_OBJECT_ICON = {\n name: \"cube\",\n color: \"#4C90F0\"\n};\nconst ICON_SIZE = IconSize.STANDARD;\nconst DEFAULT_EMPTY_MESSAGE = \"Object set is not defined\";\nexport const ObjectSetField = typedReactMemo(function ObjectSetFieldFn({\n value,\n emptyMessage = DEFAULT_EMPTY_MESSAGE\n}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty)\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet\n}) {\n const objectTypeDef = objectSet.$objectSetInternals.def;\n const {\n metadata,\n loading: metadataLoading\n } = useOsdkMetadata(objectTypeDef);\n const {\n totalCount,\n data,\n isLoading: objectSetLoading,\n error: objectSetError\n } = useObjectSet(objectSet, {\n // Fetching a page size of one is enough to get the totalCount\n pageSize: 1\n });\n const hasMetadata = metadata != null;\n const icon = React.useMemo(() => metadata != null && \"icon\" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);\n const displayName = totalCount === \"1\" || !hasMetadata || !(\"pluralDisplayName\" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;\n\n // Wait for metadata even if the count is already available, so we can\n // show the correct display name and avoid a flash of \"objects\" → \"Employees\".\n const showLoadingState = metadataLoading && !hasMetadata;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkObjectSetField\n }, showLoadingState ? /*#__PURE__*/React.createElement(React.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BlueprintIcon, {\n icon: icon,\n size: ICON_SIZE\n }), /*#__PURE__*/React.createElement(ObjectSetLabel, {\n displayName: displayName,\n totalCount: totalCount,\n error: objectSetError,\n isLoading: objectSetLoading\n })));\n});\nconst ObjectSetLabel = /*#__PURE__*/React.memo(function ObjectSetLabelFn({\n displayName,\n totalCount,\n isLoading,\n error\n}) {\n const hasData = totalCount != null;\n const label = displayName ?? (totalCount === \"1\" ? \"object\" : \"objects\");\n const showSkeleton = isLoading && !hasData;\n const showError = error != null && !hasData && !isLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkObjectSetFieldError,\n role: \"alert\"\n }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /*#__PURE__*/React.createElement(\"span\", null, `${formatCount(totalCount)} ${label}`));\n});\nconst OBJECT_SET_ICON_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetIconSkeleton\n});\nconst OBJECT_SET_LABEL_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetLabelSkeleton\n});\nfunction formatCount(count) {\n if (count == null) {\n return \"\\u2013\"; // '–' symbol\n }\n const num = Number(count);\n return Number.isNaN(num) ? count : num.toLocaleString();\n}\nfunction toComponentIcon(apiIcon) {\n return {\n name: apiIcon.name,\n color: apiIcon.color\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkRadioGroup {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-radio-gap);\n}\n\n.osdkRadioItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-radio-item-gap);\n}\n\n.osdkRadioRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-radio-size);\n height: var(--osdk-radio-size);\n border-radius: 50%;\n border: var(--osdk-radio-border);\n cursor: pointer;\n flex-shrink: 0;\n\n &[data-unchecked] {\n background-color: var(--osdk-radio-bg);\n\n &:hover {\n background-color: var(--osdk-radio-bg-hover);\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-radio-bg-checked);\n\n &:hover {\n background-color: var(--osdk-radio-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-radio-bg-checked-active);\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkRadioIndicator {\n width: var(--osdk-radio-indicator-size);\n height: var(--osdk-radio-indicator-size);\n border-radius: 50%;\n background-color: var(--osdk-radio-indicator-color);\n\n &[data-unchecked] {\n display: none;\n }\n}\n\n.osdkRadioLabel {\n font-family: var(--osdk-typography-font-family);\n font-size: var(--osdk-typography-font-size-default);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default);\n cursor: pointer;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./RadioButtonsField.module.css\";\nexport const RadioButtonsField = typedReactMemo(function RadioButtonsFieldFn({\n id,\n value,\n onChange,\n options\n}) {\n const selectedLabel = useMemo(() => value != null ? options.find(opt => opt.value === value)?.label : undefined, [options, value]);\n const handleValueChange = useCallback(nextLabel => {\n const match = options.find(opt => opt.label === nextLabel);\n onChange?.(match?.value ?? null);\n }, [options, onChange]);\n return /*#__PURE__*/React.createElement(RadioGroup, {\n id: id,\n className: styles.osdkRadioGroup,\n value: selectedLabel,\n onValueChange: handleValueChange\n }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option\n}) {\n return /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkRadioItem\n }, /*#__PURE__*/React.createElement(Radio.Root, {\n value: option.label,\n className: styles.osdkRadioRoot\n }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkRadioLabel\n }, option.label));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkBaseInput {\n display: block;\n width: 100%;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./BaseInput.module.css\";\nconst TEXTAREA_STYLE = {\n resize: \"vertical\"\n};\nexport function TextAreaField({\n id,\n value,\n onChange,\n error,\n placeholder,\n rows,\n wrap,\n minLength,\n maxLength\n}) {\n const renderTextarea = useCallback(props => /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n rows: rows,\n wrap: wrap,\n style: TEXTAREA_STYLE\n })), [rows, wrap]);\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n render: renderTextarea,\n \"aria-invalid\": error != null || undefined\n });\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React from \"react\";\nimport styles from \"./BaseInput.module.css\";\nexport function TextInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n minLength,\n maxLength\n}) {\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n type: \"text\",\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n \"aria-invalid\": error != null || undefined\n });\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { FormField } from \"../FormField.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DatetimePickerField } from \"./DatetimePickerField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange,\n onBlur,\n error\n}) {\n const {\n label,\n isRequired,\n helperText,\n helperTextPlacement\n } = fieldDefinition;\n return /*#__PURE__*/React.createElement(FormField, {\n label: label,\n isRequired: isRequired,\n fieldKey: fieldDefinition.fieldKey,\n helperText: helperTextPlacement !== \"tooltip\" ? helperText : undefined,\n error: error,\n onBlur: onBlur\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange, error));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange, error) {\n switch (fieldDefinition.fieldComponent) {\n case \"TEXT_INPUT\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"TEXT_AREA\":\n return /*#__PURE__*/React.createElement(TextAreaField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"DROPDOWN\":\n {\n return /*#__PURE__*/React.createElement(DropdownField, _extends({\n value: value,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatetimePickerField, _extends({\n id: fieldDefinition.fieldKey,\n placeholder: fieldDefinition.placeholder\n // TODO: Use coerceFieldValue\n ,\n value: value instanceof Date ? value : null,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"RADIO_BUTTONS\":\n return /*#__PURE__*/React.createElement(RadioButtonsField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"CUSTOM\":\n return /*#__PURE__*/React.createElement(CustomField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"NUMBER_INPUT\":\n // TODO: Use coerceFieldValue\n return /*#__PURE__*/React.createElement(NumberInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: typeof value === \"number\" ? value : null,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"FILE_PICKER\":\n return /*#__PURE__*/React.createElement(FilePickerField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToFileValue(value),\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\n}\n\n// TODO: Move and share with `coerceFieldValue`\nfunction isFileArray(value) {\n return value.every(v => v instanceof File);\n}\nfunction coerceToFileValue(value) {\n if (value instanceof File) {\n return value;\n }\n if (Array.isArray(value) && isFileArray(value)) {\n return value;\n }\n return null;\n}\nfunction assertUnreachableFieldComponent(value) {\n throw new Error(`Unhandled field component: ${String(value)}`);\n}","/*\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, { memo, useCallback, useMemo } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { extractValidationRules } from \"../utils/extractValidationRules.js\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer.js\";\nconst SELECT_LIKE_FIELDS = new Set([\"RADIO_BUTTONS\", \"DROPDOWN\"]);\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange\n}) {\n const rules = useMemo(() => extractValidationRules(fieldDef), [fieldDef]);\n const {\n field: {\n onChange,\n onBlur,\n value\n },\n fieldState: {\n error: fieldError\n }\n } = useController({\n name: fieldDef.fieldKey,\n control,\n rules\n });\n const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);\n const handleChange = useCallback(newValue => {\n onChange(newValue);\n onExternalChange?.(fieldDef.fieldKey, newValue);\n // Select-like fields are \"pick once\" interactions — mark as touched\n // immediately so RHF revalidates (clears errors) on selection rather\n // than waiting for focus to leave the container.\n if (isSelectLike) {\n onBlur();\n }\n }, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);\n\n // Ignore blur events where focus stays within the field container\n // (e.g. moving between radio buttons in a group). Only fire RHF's\n // onBlur when focus truly leaves the field.\n const handleBlur = useCallback(e => {\n if (e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n onBlur();\n }, [onBlur]);\n return /*#__PURE__*/React.createElement(FormFieldRenderer, {\n value: value,\n fieldDefinition: fieldDef,\n onFieldValueChange: handleChange,\n onBlur: handleBlur,\n error: fieldError?.message\n });\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormHeader {\n margin: 0;\n padding-block: var(--osdk-form-header-block-padding);\n padding-inline: var(--osdk-form-header-inline-padding);\n border-bottom: var(--osdk-surface-border-width) solid\n var(--osdk-form-header-border-color);\n font-size: var(--osdk-form-header-font-size);\n font-weight: var(--osdk-form-header-font-weight);\n color: var(--osdk-form-header-color);\n}\n","/*\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, { memo } from \"react\";\nimport styles from \"./FormHeader.module.css\";\nexport const FormHeader = /*#__PURE__*/memo(function FormHeaderFn({\n title\n}) {\n return /*#__PURE__*/React.createElement(\"h2\", {\n className: styles.osdkFormHeader\n }, title);\n});","/*\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 { Error as ErrorIcon } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { useAsyncAction } from \"../shared/hooks/useAsyncAction.js\";\nimport styles from \"./BaseForm.module.css\";\nimport { FieldBridge } from \"./fields/FieldBridge.js\";\nimport { FormHeader } from \"./FormHeader.js\";\n\n// Using a lower trigger delay for tooltips in forms so the user can see the errors quickly\nconst TOOLTIP_TRIGGER_DELAY_MS = 200;\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n fieldDefinitions,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className\n}) {\n const isControlled = controlledFormState != null;\n const defaultValues = useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);\n const {\n control,\n trigger,\n getValues,\n formState: {\n errors\n }\n } = useForm({\n // Validate on blur first, then revalidate on change after the first\n // error. This gives the user a chance to finish typing before seeing\n // errors, while staying responsive once an error is surfaced.\n mode: \"onTouched\",\n ...(isControlled ? {\n values: controlledFormState\n } : {\n defaultValues\n })\n });\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = useState(false);\n const {\n isPending: isSubmitting,\n error: submissionError,\n execute: executeSubmit,\n clearError\n } = useAsyncAction(onSubmit);\n const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message\n // TODO: provide better error message\n : \"Submission failed\" : undefined;\n const handleFormSubmit = useCallback(async e => {\n e.preventDefault();\n setHasAttemptedSubmit(true);\n const isValid = await trigger();\n if (!isValid) {\n return;\n }\n\n // In controlled mode, always submit the controlled state, not RHF's\n // internal state. Between a user keystroke and the parent re-rendering,\n // RHF's store may hold the user-typed value rather than the parent's\n // value. Using controlledFormState directly preserves the existing\n // guarantee that controlled mode submits the parent's state.\n await executeSubmit(controlledFormState ?? getValues());\n }, [trigger, executeSubmit, controlledFormState, getValues]);\n const handleFieldChange = useCallback((fieldKey, value) => {\n clearError();\n onFieldValueChange?.(fieldKey, value);\n }, [clearError, onFieldValueChange]);\n const isFormPending = isPending || isSubmitting;\n const labelByFieldKey = useMemo(() => new Map(fieldDefinitions.map(d => [d.fieldKey, d.label])), [fieldDefinitions]);\n\n // RHF reuses the same errors object reference across renders so we cannot memoize errorEntries\n const errorEntries = Object.entries(errors).map(([key, entry]) => ({\n label: labelByFieldKey.get(key) ?? key,\n message: entry?.message ?? \"Invalid\"\n }));\n const areErrorsPresent = errorEntries.length > 0;\n const buttonErrorMessage = areErrorsPresent ? \"Some fields are invalid\" : submissionErrorMessage;\n return /*#__PURE__*/React.createElement(\"form\", {\n className: classNames(styles.osdkForm, className),\n onSubmit: handleFormSubmit\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && fieldDefinitions.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n role: \"status\"\n }, \"Loading form fields...\"), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFields\n }, fieldDefinitions.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: handleFieldChange\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFooter\n }, /*#__PURE__*/React.createElement(ErrorIndicator, {\n errorEntries: errorEntries\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSubmitButton\n }, /*#__PURE__*/React.createElement(SubmitButton, {\n isPending: isFormPending,\n isSubmitDisabled: isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent,\n errorMessage: buttonErrorMessage\n }))));\n});\nfunction buildDefaultValues(fieldDefinitions) {\n const values = {};\n for (const def of fieldDefinitions) {\n const props = def.fieldComponentProps;\n if (\"defaultValue\" in props) {\n values[def.fieldKey] = props.defaultValue;\n }\n }\n return values;\n}\nconst SubmitButton = /*#__PURE__*/memo(function SubmitButtonFn({\n isPending,\n isSubmitDisabled,\n errorMessage\n}) {\n const buttonLabel = isPending ? \"Submitting\\u2026\" : \"Submit\";\n const button = /*#__PURE__*/React.createElement(ActionButton, {\n type: \"submit\",\n variant: \"primary\",\n disabled: isSubmitDisabled || isPending\n }, buttonLabel);\n if (errorMessage == null) {\n return button;\n }\n return /*#__PURE__*/React.createElement(Tooltip.Root, {\n defaultOpen: true\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, {\n delay: TOOLTIP_TRIGGER_DELAY_MS\n }, button), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), errorMessage))));\n});\n// memo omitted: errorEntries is always a new array (RHF reuses the same errors ref)\nfunction ErrorIndicator({\n errorEntries\n}) {\n if (errorEntries.length === 0) {\n return null;\n }\n const count = errorEntries.length;\n return /*#__PURE__*/React.createElement(Tooltip.Root, null, /*#__PURE__*/React.createElement(Tooltip.Trigger, {\n delay: TOOLTIP_TRIGGER_DELAY_MS\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormErrorIndicator\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n size: 14\n }), count === 1 ? \"1 issue\" : `${count} issues`)), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), /*#__PURE__*/React.createElement(\"ul\", {\n className: styles.osdkFormErrorList\n }, errorEntries.map(entry => /*#__PURE__*/React.createElement(\"li\", {\n key: entry.label\n }, /*#__PURE__*/React.createElement(\"strong\", null, entry.label, \":\"), \" \", entry.message)))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a raw form field value to match the expected type for the given\n * field type. Returns `undefined` when coercion fails\n * (e.g. non-numeric string for a number field).\n *\n * Complex types (object, objectSet, struct, interface) are passed through\n * unchanged since they cannot be meaningfully coerced.\n */\nexport function coerceFieldValue(parameterType, rawValue) {\n if (rawValue == null) {\n return undefined;\n }\n if (parameterType == null) {\n return rawValue;\n }\n\n // TODO: Handle complex object types later\n if (typeof parameterType === \"object\") {\n return rawValue;\n }\n switch (parameterType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n case \"integer\":\n case \"long\":\n {\n const maybeNumber = extractNumber(rawValue);\n return maybeNumber != null ? Math.trunc(maybeNumber) : undefined;\n }\n case \"double\":\n {\n return extractNumber(rawValue);\n }\n case \"boolean\":\n {\n if (typeof rawValue === \"boolean\") {\n return rawValue;\n }\n if (rawValue === \"true\") return true;\n if (rawValue === \"false\") return false;\n return undefined;\n }\n case \"datetime\":\n case \"timestamp\":\n {\n if (typeof rawValue === \"string\") {\n return Number.isNaN(Date.parse(rawValue)) ? undefined : rawValue;\n }\n if (rawValue instanceof Date) {\n return rawValue.toISOString();\n }\n return undefined;\n }\n case \"attachment\":\n case \"mediaReference\":\n return rawValue;\n default:\n return rawValue;\n }\n}\nfunction extractNumber(rawValue) {\n if (typeof rawValue === \"number\") {\n return rawValue;\n }\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n if (trimmed === \"\") return undefined;\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\n/**\n * Derives default field definitions from ActionMetadata.\n *\n * Each parameter type maps to a concrete RendererFieldDefinition with the\n * correct fieldComponent and default fieldComponentProps.\n */\nexport function getDefaultFieldDefinitions(metadata) {\n return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));\n}\nconst EMPTY_ITEMS = [];\n\n/**\n * Maps a single action parameter to its default RendererFieldDefinition.\n *\n * Switches on the parameter's data type to select both the field component\n * and its required default props.\n */\nfunction buildFieldDefinition(key, param) {\n const base = {\n fieldKey: key,\n label: key,\n isRequired: !param.nullable,\n fieldType: param.type\n };\n const paramType = param.type;\n if (typeof paramType === \"object\") {\n switch (paramType.type) {\n case \"objectSet\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SET\",\n fieldComponentProps: {\n value: null\n }\n };\n case \"object\":\n case \"interface\":\n // TODO: provide correct items\n return {\n ...base,\n fieldComponent: \"DROPDOWN\",\n fieldComponentProps: {\n items: EMPTY_ITEMS\n }\n };\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n case \"boolean\":\n return {\n ...base,\n fieldComponent: \"RADIO_BUTTONS\",\n fieldComponentProps: {\n options: [{\n label: \"True\",\n value: true\n }, {\n label: \"False\",\n value: false\n }]\n }\n };\n case \"integer\":\n case \"double\":\n case \"long\":\n return {\n ...base,\n fieldComponent: \"NUMBER_INPUT\",\n fieldComponentProps: {}\n };\n case \"datetime\":\n case \"timestamp\":\n return {\n ...base,\n fieldComponent: \"DATETIME_PICKER\",\n fieldComponentProps: {}\n };\n case \"attachment\":\n case \"mediaReference\":\n return {\n ...base,\n fieldComponent: \"FILE_PICKER\",\n fieldComponentProps: {}\n };\n default:\n return assertUnreachable(paramType);\n }\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useOsdkAction } from \"@osdk/react/experimental\";\nimport React, { useCallback, useEffect, useMemo } from \"react\";\nimport { typedReactMemo } from \"../shared/typedMemo.js\";\nimport { BaseForm } from \"./BaseForm.js\";\nimport { coerceFieldValue } from \"./utils/coerceFieldValue.js\";\nimport { getDefaultFieldDefinitions } from \"./utils/getDefaultFieldDefinitions.js\";\nconst EMPTY_FIELD_DEFINITIONS = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\n formFieldDefinitions,\n formState: controlledFormState,\n onFormStateChange,\n isSubmitDisabled,\n onSubmit,\n onValidationResponse: _onValidationResponse,\n onSuccess,\n onError\n}) {\n const {\n applyAction: osdkApplyAction,\n isPending\n } = useOsdkAction(actionDefinition);\n const {\n metadata,\n loading: metadataLoading,\n error: metadataError\n } = useOsdkMetadata(actionDefinition);\n useEffect(function saveMetadataError() {\n if (metadataError != null) {\n onError?.({\n type: \"unknown\",\n error: metadataError\n });\n }\n }, [metadataError, onError]);\n const parameters = metadata?.parameters;\n const customFieldDefinitions = useMemo(() => {\n if (formFieldDefinitions == null) {\n return null;\n }\n // RendererFieldDefinition is a discriminated union keyed by fieldComponent.\n // TypeScript can't verify that the spread preserves the fieldComponent ↔\n // fieldComponentProps pairing, but FormFieldDefinition guarantees it.\n return formFieldDefinitions.map(def => ({\n ...def,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n defaultValue: def.defaultValue\n }));\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\n const coerceFormState = useCallback(rawState => {\n const coerced = {};\n for (const [key, value] of Object.entries(rawState)) {\n coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);\n }\n return coerced;\n }, [parameters]);\n const handleSubmit = useCallback(async rawFormState => {\n const formState = coerceFormState(rawFormState);\n try {\n if (onSubmit != null) {\n await onSubmit(formState, osdkApplyAction);\n } else {\n const result = await osdkApplyAction(formState);\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.({\n type: \"submission\",\n error: e\n });\n }\n }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);\n const handleFieldValueChange = useCallback((fieldKey, value) => {\n onFormStateChange?.(prev => ({\n ...prev,\n [fieldKey]: value\n }));\n }, [onFormStateChange]);\n const resolvedTitle = formTitle ?? metadata?.displayName ?? actionDefinition.apiName;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n fieldDefinitions: rendererFieldDefinitions,\n onSubmit: handleSubmit,\n isSubmitDisabled,\n isPending,\n isLoading: metadataLoading,\n onFieldValueChange: handleFieldValueChange\n };\n if (!isControlled) {\n return /*#__PURE__*/React.createElement(BaseForm, commonProps);\n }\n return /*#__PURE__*/React.createElement(BaseForm, _extends({}, commonProps, {\n formState: controlledFormState\n }));\n});"]}