@osdk/react-components 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/browser/excel-viewer/parseSpreadsheet.js +1 -1
  3. package/build/browser/excel-viewer/parseSpreadsheet.js.map +1 -1
  4. package/build/browser/util/UserAgent.js +1 -1
  5. package/build/cjs/{chunk-5JJQ5X5R.cjs → chunk-3FFHTVG7.cjs} +6 -6
  6. package/build/cjs/{chunk-5JJQ5X5R.cjs.map → chunk-3FFHTVG7.cjs.map} +1 -1
  7. package/build/cjs/{chunk-4VJIPB7R.cjs → chunk-3SJODG6U.cjs} +5 -5
  8. package/build/cjs/chunk-3SJODG6U.cjs.map +1 -0
  9. package/build/cjs/{chunk-6L63NPQG.cjs → chunk-3VL5YVFA.cjs} +4 -4
  10. package/build/cjs/{chunk-6L63NPQG.cjs.map → chunk-3VL5YVFA.cjs.map} +1 -1
  11. package/build/cjs/{chunk-XWS2AC35.cjs → chunk-DY6YZDDT.cjs} +4 -4
  12. package/build/cjs/{chunk-XWS2AC35.cjs.map → chunk-DY6YZDDT.cjs.map} +1 -1
  13. package/build/cjs/chunk-GKWXRVFO.cjs +11 -0
  14. package/build/cjs/{chunk-WWLCXYON.cjs.map → chunk-GKWXRVFO.cjs.map} +1 -1
  15. package/build/cjs/{chunk-JP47JG5E.cjs → chunk-IFOPHNX3.cjs} +4 -4
  16. package/build/cjs/{chunk-JP47JG5E.cjs.map → chunk-IFOPHNX3.cjs.map} +1 -1
  17. package/build/cjs/chunk-JPVZGQXS.cjs +11 -0
  18. package/build/cjs/{chunk-IR6JZWJL.cjs.map → chunk-JPVZGQXS.cjs.map} +1 -1
  19. package/build/cjs/{chunk-35GST4FB.cjs → chunk-OZ3OGPEA.cjs} +4 -4
  20. package/build/cjs/{chunk-35GST4FB.cjs.map → chunk-OZ3OGPEA.cjs.map} +1 -1
  21. package/build/cjs/{chunk-QT5CNZF3.cjs → chunk-RDILWZTC.cjs} +4 -4
  22. package/build/cjs/{chunk-QT5CNZF3.cjs.map → chunk-RDILWZTC.cjs.map} +1 -1
  23. package/build/cjs/chunk-UJXNFENA.cjs +11 -0
  24. package/build/cjs/{chunk-QUDOYYWI.cjs.map → chunk-UJXNFENA.cjs.map} +1 -1
  25. package/build/cjs/{chunk-MQTQLA4O.cjs → chunk-UTB55N5Y.cjs} +3 -3
  26. package/build/cjs/{chunk-MQTQLA4O.cjs.map → chunk-UTB55N5Y.cjs.map} +1 -1
  27. package/build/cjs/chunk-W6C6UWUN.cjs +11 -0
  28. package/build/cjs/{chunk-ZQTIVTJW.cjs.map → chunk-W6C6UWUN.cjs.map} +1 -1
  29. package/build/cjs/{chunk-VW7HAI4H.cjs → chunk-Y4OUZFGE.cjs} +4 -4
  30. package/build/cjs/{chunk-VW7HAI4H.cjs.map → chunk-Y4OUZFGE.cjs.map} +1 -1
  31. package/build/cjs/chunk-YLYICFCA.cjs +11 -0
  32. package/build/cjs/{chunk-UXOUQ5BH.cjs.map → chunk-YLYICFCA.cjs.map} +1 -1
  33. package/build/cjs/public/experimental/action-form.cjs +4 -4
  34. package/build/cjs/public/experimental/document-viewer.cjs +5 -5
  35. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  36. package/build/cjs/public/experimental/excel-viewer.cjs +5 -5
  37. package/build/cjs/public/experimental/filter-list.cjs +15 -15
  38. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  39. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  40. package/build/cjs/public/experimental/object-table.cjs +8 -8
  41. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  42. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  43. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  44. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  45. package/build/cjs/public/experimental.cjs +50 -50
  46. package/build/esm/excel-viewer/parseSpreadsheet.js +1 -1
  47. package/build/esm/excel-viewer/parseSpreadsheet.js.map +1 -1
  48. package/build/esm/util/UserAgent.js +1 -1
  49. package/package.json +5 -5
  50. package/build/cjs/chunk-4VJIPB7R.cjs.map +0 -1
  51. package/build/cjs/chunk-IR6JZWJL.cjs +0 -11
  52. package/build/cjs/chunk-QUDOYYWI.cjs +0 -11
  53. package/build/cjs/chunk-UXOUQ5BH.cjs +0 -11
  54. package/build/cjs/chunk-WWLCXYON.cjs +0 -11
  55. package/build/cjs/chunk-ZQTIVTJW.cjs +0 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/filter-list/base/FilterIcons.tsx","../../src/filter-list/base/FilterList.module.css","../../src/filter-list/base/FilterListBoundaryContext.ts","../../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/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/filter-list/base/inputs/ToggleInput.module.css","../../src/filter-list/base/inputs/ToggleInput.tsx","../../src/filter-list/base/inputs/createDateHistogramBuckets.ts","../../src/filter-list/base/inputs/createHistogramBuckets.ts","../../src/filter-list/base/inputs/RangeInput.module.css","../../src/filter-list/base/inputs/HistogramTooltip.tsx","../../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/DateRangeHistogramInput.tsx","../../src/filter-list/base/inputs/LinkedPropertyInput.module.css","../../src/filter-list/base/inputs/formatCompactCount.ts","../../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/NoValueLabel.module.css","../../src/filter-list/base/inputs/EmptyStringLabel.tsx","../../src/filter-list/base/inputs/NoValueLabel.tsx","../../src/filter-list/base/inputs/OptionLabel.tsx","../../src/filter-list/base/inputs/ListogramInput.tsx","../../src/filter-list/base/inputs/MultiDateInput.module.css","../../src/filter-list/base/inputs/MultiDateInput.tsx","../../src/filter-list/base/inputs/comboboxFilter.ts","../../src/filter-list/base/inputs/MultiSelectDropdownLayout.tsx","../../src/filter-list/base/inputs/MultiSelectInput.module.css","../../src/filter-list/base/inputs/MultiSelectInlineLayout.tsx","../../src/filter-list/base/inputs/SelectInputSkeleton.tsx","../../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/hooks/useDualScopeAggregation.ts","../../src/filter-list/types/LinkedFilterTypes.ts","../../src/filter-list/utils/aggregationHelpers.ts","../../src/filter-list/utils/coerceFilterValue.ts","../../src/filter-list/utils/narrowObjectSet.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/hooks/useFilterPropertyAggregation.ts","../../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/inputs/StaticValuesFilterInput.tsx","../../src/filter-list/FilterInput.tsx","../../src/filter-list/utils/getFilterKey.ts","../../src/filter-list/utils/filterStateToWhereClause.ts","../../src/filter-list/hooks/useStableMapEntries.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/filter-list/base/FilterPopover.module.css","../../src/filter-list/base/FilterPopover.tsx","../../src/filter-list/utils/summarizeFilterValue.ts","../../src/public/experimental/filter-list.ts"],"names":["React","Cross","Search","More","ChevronDown","DoubleChevronLeft","DoubleChevronRight","Reset","Tick","Disable","useContext","Component","Button","useState","useCallback","useMemo","classnames","Input","useSortable","CSS","memo","getFilterKey","getFilterLabel","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","useSensors","arrayMove","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DragOverlay","SearchableMenu","useRef","debounce","useEffect","Switch","differenceInCalendarDays","startOfDay","addDays","format","startOfMonth","addMonths","startOfYear","addYears","useLayoutEffect","createPortal","_extends","useId","DatePicker","formatDateForInput","SkeletonBar","Checkbox","formatDateForDisplay","Combobox","TagItem","parseDateFromInput","useOsdkAggregation","assertUnreachable","Menu","value","includeNull","selectedDates","selectedValues","useOsdkMetadata","selectedDate","startDate","endDate","enabled","HasLinkInput","hasLink","KeywordSearchInput","key","deepEqual","isEqual","Popover","FilterList","withOsdkMetrics"],"mappings":"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","file":"chunk-6L63NPQG.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 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 { createContext, useContext } from \"react\";\n\n/**\n * Provides the filter list container element so that dropdown positioners\n * inside the filter list can use it as their collision boundary, flipping\n * above the trigger when space below is insufficient within the sidebar.\n */\nconst FilterListBoundaryContext = /*#__PURE__*/createContext(null);\nexport const FilterListBoundaryProvider = FilterListBoundaryContext.Provider;\nexport function useFilterListBoundary() {\n return useContext(FilterListBoundaryContext) ?? 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\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/**\n * Unwraps a `linkedProperty` wrapper one level so callers can reason about the\n * underlying filter state directly (e.g. for header controls that should\n * follow the inner filter's capabilities).\n */\nexport function getEffectiveFilterState(state) {\n if (state?.type === \"linkedProperty\") {\n return state.linkedFilterState;\n }\n return state;\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/**\n * Sentinel identity for the \"No value\" bucket (null/undefined property values).\n *\n * `selectedValues` is a `string[]`, so the null/undefined state needs a string\n * stand-in that cannot collide with a real value. Put `NO_VALUE` in `selectedValues`\n * to filter for objects whose property `$isNull`.\n */\nexport const NO_VALUE = \"__NO_VALUE__\";\n\n/**\n * Returns true if the given value represents \"No value\" (a null/undefined\n * property value), i.e. the {@link NO_VALUE} sentinel (or a raw null/undefined\n * defensively).\n */\nexport function isNoValue(value) {\n return value == null || value === NO_VALUE;\n}\n\n/**\n * Merges every null/undefined aggregation row into a single \"No value\" bucket\n * (keyed by the {@link NO_VALUE} sentinel) placed at the position of the first\n * such row encountered. Backends sometimes return separate rows for null and\n * undefined; this collapses them so consumers (listogram, dropdown,\n * multi-select) all see one canonical \"No value\" row.\n *\n * Literal empty-string (`\"\"`) rows are real values and are left untouched as\n * their own distinct rows.\n */\nexport function dedupeEmptyAggregationRows(values) {\n const out = [];\n let noValueCount = 0;\n let firstNoValueIndex = -1;\n for (const v of values) {\n if (isNoValue(v.value)) {\n if (firstNoValueIndex === -1) {\n firstNoValueIndex = out.length;\n }\n noValueCount += v.count;\n } else {\n out.push(v);\n }\n }\n if (firstNoValueIndex >= 0 && noValueCount > 0) {\n out.splice(firstNoValueIndex, 0, {\n value: NO_VALUE,\n count: noValueCount,\n isNull: true\n });\n }\n return out;\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch(values, searchValue, getValue) {\n const trimmed = searchValue.trim();\n if (!trimmed) {\n return values;\n }\n const lowerSearch = trimmed.toLowerCase();\n return values.filter(v => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/**\n * Returns a \"cleared\" version of the given filter state, preserving the\n * discriminator and `isExcluding` flag so the UI doesn't snap between filter\n * modes when a user clicks \"Clear all selections\". Returns `undefined` if no\n * cleared form is meaningful for the state shape.\n */\nexport function clearFilterState(state) {\n if (!state) {\n return undefined;\n }\n switch (state.type) {\n case \"SELECT\":\n return {\n type: \"SELECT\",\n selectedValues: [],\n isExcluding: state.isExcluding\n };\n case \"EXACT_MATCH\":\n return {\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding: state.isExcluding\n };\n case \"CONTAINS_TEXT\":\n return {\n type: \"CONTAINS_TEXT\",\n value: undefined,\n isExcluding: state.isExcluding\n };\n case \"NUMBER_RANGE\":\n return {\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false\n };\n case \"DATE_RANGE\":\n return {\n type: \"DATE_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false\n };\n case \"TIMELINE\":\n return {\n type: \"TIMELINE\",\n startDate: undefined,\n endDate: undefined,\n isExcluding: state.isExcluding\n };\n case \"TOGGLE\":\n return {\n type: \"TOGGLE\",\n enabled: false\n };\n case \"hasLink\":\n return {\n type: \"hasLink\",\n hasLink: false\n };\n case \"keywordSearch\":\n return {\n type: \"keywordSearch\",\n searchTerm: \"\",\n operator: state.operator\n };\n case \"linkedProperty\":\n {\n const innerCleared = clearFilterState(state.linkedFilterState);\n if (!innerCleared) {\n return undefined;\n }\n return {\n type: \"linkedProperty\",\n linkedFilterState: innerCleared\n };\n }\n case \"custom\":\n return undefined;\n default:\n {\n const _exhaustive = state;\n return undefined;\n }\n }\n}\n\n/**\n * Returns the state with `isExcluding` flipped, preserving the discriminator\n * and unwrapping/re-wrapping any `linkedProperty` wrapper. Returns `undefined`\n * if the wrapped state is one that does not support excluding.\n */\nexport function toggleIsExcluding(state) {\n if (state.type === \"linkedProperty\") {\n const inner = state.linkedFilterState;\n return {\n type: \"linkedProperty\",\n linkedFilterState: {\n ...inner,\n isExcluding: !inner.isExcluding\n }\n };\n }\n if (!supportsExcluding(state)) {\n return undefined;\n }\n return {\n ...state,\n isExcluding: !state.isExcluding\n };\n}\n\n/**\n * Returns the number of values the user has actively selected for filters\n * whose UI surfaces a selected-of-total count (LISTOGRAM, SINGLE_SELECT,\n * MULTI_SELECT, TEXT_TAGS). Returns 0 for state shapes that don't have a\n * discrete list of selected values.\n */\nexport function getSelectedCount(state) {\n if (!state) {\n return 0;\n }\n if (state.type === \"EXACT_MATCH\") {\n return state.values.length;\n }\n if (state.type === \"SELECT\") {\n return state.selectedValues.length;\n }\n return 0;\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state) {\n if (!state) {\n return false;\n }\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 width: 100%;\n gap: var(--osdk-surface-spacing);\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.excludeRowLeading {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: calc(var(--osdk-surface-spacing) * 0.5);\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}\n\n.clearAllButton {\n flex: 0 0 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, useMemo, useState } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport { filterHasActiveState, getEffectiveFilterState, 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 FilterListItemInner({\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n searchField,\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 effectiveState = useMemo(() => getEffectiveFilterState(filterState), [filterState]);\n const showExcludeDropdown = supportsExcluding(effectiveState);\n const showSearch = supportsSearch(effectiveState) && searchField !== false;\n const hasOverflowActions = showExcludeDropdown;\n const hasSelection = filterHasActiveState(filterState);\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\": hasSelection || 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 searchField\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 searchField: searchField,\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 onOrderChange,\n renderInput,\n getFilterKey,\n getFilterLabel,\n enableSorting,\n className,\n style\n}) {\n const [activeId, setActiveId] = useState(null);\n const sortableIds = useMemo(() => enableSorting && filterDefinitions ? filterDefinitions.map(def => getFilterKey(def)) : [], [enableSorting, filterDefinitions, 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 && filterDefinitions ? filterDefinitions[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 const next = arrayMove(sortableIds, oldIndex, newIndex);\n onOrderChange?.(next);\n }\n }, [sortableIds, onOrderChange]);\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n const announcements = useMemo(() => {\n const labelForId = id => {\n const idx = sortableIds.indexOf(String(id));\n const def = idx >= 0 ? filterDefinitions?.[idx] : undefined;\n return def ? getFilterLabel(def) : \"filter\";\n };\n return {\n onDragStart({\n active\n }) {\n return `Picked up ${labelForId(active.id)} 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 label = labelForId(active.id);\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 return `Cancelled dragging ${labelForId(active.id)} filter`;\n }\n };\n }, [filterDefinitions, sortableIds, getFilterLabel]);\n const accessibility = useMemo(() => ({\n announcements\n }), [announcements]);\n if (!filterDefinitions || filterDefinitions.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 }, filterDefinitions.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 searchField: definition.searchField\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 searchField: activeDefinition.searchField,\n dragHandleAttributes: DRAG_OVERLAY_HANDLE_ATTRIBUTES\n }))));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style\n }, filterDefinitions.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 searchField: definition.searchField\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 canReset,\n hasVisibilityChanges = false\n}) {\n const showCollapseButton = onCollapsedChange != null;\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n const resetDisabled = canReset != null ? !canReset : activeFilterCount === 0 && !hasVisibilityChanges;\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: resetDisabled\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, useState } from \"react\";\nimport { ExpandIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterList.module.css\";\nimport { FilterListBoundaryProvider } from \"./FilterListBoundaryContext.js\";\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 onOrderChange,\n showResetButton = false,\n showActiveFilterCount = false,\n canReset,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- consumed as a backwards-compatible fallback when canReset is not provided\n hasVisibilityChanges,\n enableSorting,\n className,\n renderAddFilterButton\n } = props;\n const [boundaryElement, setBoundaryElement] = useState(null);\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 ref: setBoundaryElement,\n className: classnames(styles.expandedContent, isCollapsed && styles.hiddenContent),\n \"data-active-count\": activeFilterCount\n }, /*#__PURE__*/React.createElement(FilterListBoundaryProvider, {\n value: boundaryElement\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 canReset: canReset,\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 onOrderChange: onOrderChange,\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 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\";\nimport { useFilterListBoundary } from \"./FilterListBoundaryContext.js\";\nfunction AddFilterPopoverInner({\n hiddenDefinitions,\n onShowFilter,\n renderTrigger\n}) {\n const collisionBoundary = useFilterListBoundary();\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 collisionBoundary: collisionBoundary\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.clearButton:not([data-active]) {\n visibility: hidden;\n pointer-events: none;\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 }), /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.clearButton,\n \"data-active\": !!localValue || undefined,\n onClick: handleClear,\n disabled: !localValue,\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.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\nimport { addDays, addMonths, addYears, differenceInCalendarDays, format, startOfDay, startOfMonth, startOfYear } from \"date-fns\";\nconst SHORT_MONTH_FORMATTER = new Intl.DateTimeFormat(undefined, {\n month: \"short\"\n});\n/**\n * Picks calendar-aligned histogram buckets for a date series.\n *\n * Granularity is chosen from the data span:\n * span ≤ 31 days → daily buckets, ticks \"1\" / \"2\" / ... / \"31\"\n * span ≤ 365 days → monthly buckets, ticks \"Jan\" / \"Feb\" / ... (locale-aware)\n * span > 365 days → yearly buckets, ticks \"2020\" / \"2021\" / ...\n *\n * Month ticks use `Intl.DateTimeFormat(..., { month: \"short\" })` so each\n * browser locale renders its native short-month names rather than getting\n * English-only \"Jan\"/\"Feb\". Day and year ticks remain locale-neutral integers.\n *\n * The subtitle reflects the surrounding calendar context — e.g. \"2020-05\"\n * for a daily histogram inside one month, \"2020\" for a monthly histogram\n * inside one year. When the data straddles multiple periods (e.g. monthly\n * histogram across multiple years) the subtitle is empty so the per-bucket\n * tick labels stay self-describing.\n *\n * @param formatDate Consumer-provided display formatter. Used for the\n * subtitle only.\n * @param formatTickLabel Optional override for per-bucket tick labels.\n * Receives the bucket's start `Date` and the chosen granularity.\n */\nexport function createDateHistogramBuckets(pairs, range, formatDate, formatTickLabel) {\n if (pairs.length === 0) {\n return {\n buckets: [],\n subtitle: \"\",\n granularity: \"day\"\n };\n }\n const span = Math.max(0, differenceInCalendarDays(range.max, range.min));\n const granularity = span <= 31 ? \"day\" : span <= 365 ? \"month\" : \"year\";\n const buckets = [];\n if (granularity === \"day\") {\n const start = startOfDay(range.min);\n const dayCount = span + 1;\n const counts = new Array(dayCount).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const idx = differenceInCalendarDays(value, start);\n if (idx >= 0 && idx < dayCount) {\n counts[idx] += count;\n }\n }\n for (let i = 0; i < dayCount; i++) {\n const min = addDays(start, i);\n const max = addDays(start, i + 1);\n buckets.push({\n min,\n max,\n count: counts[i],\n tickLabel: formatTickLabel != null ? formatTickLabel(min, \"day\") : format(min, \"d\")\n });\n }\n } else if (granularity === \"month\") {\n const start = startOfMonth(range.min);\n const end = startOfMonth(range.max);\n const months = [];\n let cursor = start;\n while (cursor.getTime() <= end.getTime()) {\n months.push(cursor);\n cursor = addMonths(cursor, 1);\n }\n const counts = new Array(months.length).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const monthStart = startOfMonth(value).getTime();\n const idx = months.findIndex(m => m.getTime() === monthStart);\n if (idx >= 0) {\n counts[idx] += count;\n }\n }\n for (let i = 0; i < months.length; i++) {\n const monthStart = months[i];\n buckets.push({\n min: monthStart,\n max: addMonths(monthStart, 1),\n count: counts[i],\n tickLabel: formatTickLabel != null ? formatTickLabel(monthStart, \"month\") : SHORT_MONTH_FORMATTER.format(monthStart)\n });\n }\n } else {\n const start = startOfYear(range.min);\n const end = startOfYear(range.max);\n const years = [];\n let cursor = start;\n while (cursor.getTime() <= end.getTime()) {\n years.push(cursor);\n cursor = addYears(cursor, 1);\n }\n const counts = new Array(years.length).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const yearStart = startOfYear(value).getTime();\n const idx = years.findIndex(y => y.getTime() === yearStart);\n if (idx >= 0) {\n counts[idx] += count;\n }\n }\n for (let i = 0; i < years.length; i++) {\n const yearStart = years[i];\n buckets.push({\n min: yearStart,\n max: addYears(yearStart, 1),\n count: counts[i],\n tickLabel: formatTickLabel != null ? formatTickLabel(yearStart, \"year\") : format(yearStart, \"yyyy\")\n });\n }\n }\n const subtitle = computeSubtitle(range.min, range.max, granularity, formatDate);\n return {\n buckets,\n subtitle,\n granularity\n };\n}\nfunction computeSubtitle(rangeMin, rangeMax, granularity, formatDate) {\n if (granularity === \"day\") {\n // Daily within one month: \"2020-05\". Across months: the year(s) when\n // the data still fits inside one calendar year.\n const sameMonth = rangeMin.getFullYear() === rangeMax.getFullYear() && rangeMin.getMonth() === rangeMax.getMonth();\n if (sameMonth) {\n return formatDate != null ? formatDate(rangeMin) : format(rangeMin, \"yyyy-MM\");\n }\n const sameYear = rangeMin.getFullYear() === rangeMax.getFullYear();\n if (sameYear) {\n return formatDate != null ? formatDate(rangeMin) : format(rangeMin, \"yyyy\");\n }\n return \"\";\n }\n if (granularity === \"month\") {\n const sameYear = rangeMin.getFullYear() === rangeMax.getFullYear();\n if (sameYear) {\n return formatDate != null ? formatDate(rangeMin) : format(rangeMin, \"yyyy\");\n }\n return \"\";\n }\n return \"\";\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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;\n/**\n * Returns \"nice\" tick positions covering the [0, max] range — values that\n * round to 1/2/5 × 10^n so the tick labels read cleanly. Used for\n * y-axis axis lines on the histogram.\n *\n * Edge cases:\n * - max ≤ 0 → returns [0]\n * - max ≤ 1/2/3 → returns [0, ..., max] without rounding to 5/10\n * - otherwise → between 3 and 6 ticks aligned on a nice step\n */\nexport function niceTicks(max, desiredCount = 5) {\n if (!Number.isFinite(max) || max <= 0) return [0];\n if (max <= 3) {\n const out = [];\n for (let i = 0; i <= Math.ceil(max); i++) out.push(i);\n return out;\n }\n const rough = max / desiredCount;\n const exponent = Math.floor(Math.log10(rough));\n const fraction = rough / Math.pow(10, exponent);\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n const step = niceFraction * Math.pow(10, exponent);\n const ticks = [];\n for (let v = 0; v <= max + step / 2; v += step) {\n ticks.push(Math.round(v / step) * step);\n }\n return ticks;\n}\nexport function createHistogramBuckets(pairs, range, toNumber, fromNumber) {\n if (pairs.length === 0) {\n return [];\n }\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.histogramWrapper {\n position: relative;\n width: 100%;\n}\n\n.histogramSvg {\n display: block;\n width: 100%;\n aspect-ratio: 400 / 180;\n overflow: visible;\n}\n\n.histogramSvg[data-click-to-filter=\"true\"] {\n cursor: pointer;\n}\n\n.clearButton {\n align-self: flex-end;\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-label-font-size);\n color: var(--osdk-intent-primary-rest);\n background: transparent;\n border: none;\n padding: calc(var(--osdk-surface-spacing) * 0.5)\n var(--osdk-surface-spacing);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background: var(--osdk-filter-range-clear-button-bg-hover);\n }\n}\n\n.clearButton:not([data-active]) {\n visibility: hidden;\n pointer-events: none;\n}\n\n.tooltip {\n position: fixed;\n transform: translateX(-50%);\n display: inline-block;\n background: var(--osdk-typography-color-default-rest);\n color: var(--osdk-background-primary);\n padding: calc(var(--osdk-surface-spacing) * 0.5)\n var(--osdk-surface-spacing);\n border-radius: var(--osdk-surface-border-radius);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-typography-size-body-small);\n white-space: nowrap;\n pointer-events: none;\n box-shadow: var(--osdk-surface-shadow-2);\n z-index: var(--osdk-surface-z-index-3, 9999);\n}\n\n.tooltip[data-state=\"hidden\"] {\n visibility: hidden;\n}\n\n/* Empty rules — exist purely so postcss-modules emits matching hashed\n * class names for the SVG layer groups. The groups themselves don't need\n * their own visual style; the children (.axisLine / .countLabel / etc.)\n * carry the actual styling. */\n.axisLines,\n.bars,\n.countLabels,\n.xTicks {}\n\n.selectionBand {\n fill: var(\n --osdk-filter-range-histogram-band-bg,\n color-mix(in srgb, var(--osdk-intent-primary-rest) 12%, transparent)\n );\n pointer-events: none;\n rx: var(--osdk-surface-border-radius);\n}\n\n.histogramBar {\n fill: var(--osdk-filter-range-histogram-bar-color);\n transition: fill var(--osdk-filter-range-histogram-bar-transition);\n}\n\n.histogramBar[data-in-range=\"true\"] {\n fill: var(--osdk-filter-range-histogram-bar-active-color);\n}\n\n.histogramBar[data-click-to-filter=\"true\"] {\n cursor: pointer;\n}\n\n.histogramBar[data-click-to-filter=\"true\"]:hover {\n fill: var(--osdk-filter-range-histogram-bar-active-color);\n}\n\n.axisLine {\n stroke: var(--osdk-filter-range-histogram-axis-line-color);\n stroke-width: 1;\n stroke-dasharray: 2 2;\n}\n\n.yAxisLabel,\n.xTickLabel {\n fill: var(--osdk-filter-range-histogram-axis-color);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-histogram-axis-font-size);\n}\n\n.countLabel {\n fill: var(--osdk-filter-range-histogram-label-color);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-histogram-label-font-size);\n}\n\n.countLabel[data-inside-bar=\"true\"] {\n fill: var(\n --osdk-filter-range-histogram-label-color-inside,\n var(--osdk-background-primary)\n );\n}\n\n.subtitle {\n fill: var(--osdk-filter-range-histogram-subtitle-color);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-histogram-subtitle-font-size);\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 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-color: transparent;\n color: var(--osdk-filter-range-separator-color);\n}\n\n@media (prefers-reduced-motion: reduce) {\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\nimport React, { memo, useLayoutEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./RangeInput.module.css\";\nconst GAP_PX = 6;\nfunction HistogramTooltipInner({\n text,\n cx,\n barTop,\n svgWidth,\n svgHeight,\n svgElement\n}) {\n const tooltipRef = useRef(null);\n const [position, setPosition] = useState(null);\n\n // Portal-positioned tooltip: needs the SVG's viewport rect plus the\n // rendered tooltip's height to flip above/below the bar without\n // overflowing the page. Both are post-render measurements, so this is\n // the canonical `useLayoutEffect` + `getBoundingClientRect` pattern.\n // Approved exception to the project-wide \"no useEffect\" guidance.\n useLayoutEffect(() => {\n if (svgElement == null) {\n setPosition(null);\n return;\n }\n const rect = svgElement.getBoundingClientRect();\n const scaleX = rect.width / svgWidth;\n const scaleY = rect.height / svgHeight;\n const anchorX = rect.left + cx * scaleX;\n const barTopPx = rect.top + barTop * scaleY;\n const tooltipHeight = tooltipRef.current?.offsetHeight ?? 0;\n const aboveTop = barTopPx - GAP_PX - tooltipHeight;\n const top = aboveTop < 0 ? barTopPx + GAP_PX : aboveTop;\n setPosition({\n left: anchorX,\n top\n });\n }, [svgElement, cx, barTop, svgWidth, svgHeight, text]);\n if (typeof document === \"undefined\") {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(\"div\", {\n ref: tooltipRef,\n className: styles.tooltip,\n \"data-state\": position == null ? \"hidden\" : \"visible\",\n style: position == null ? {\n left: 0,\n top: 0\n } : {\n left: position.left,\n top: position.top\n }\n }, text), document.body);\n}\nexport const HistogramTooltip = /*#__PURE__*/memo(HistogramTooltipInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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.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.emptyMessage {\n color: var(--osdk-filter-message-color-muted);\n}\n\n.errorMessage {\n color: var(--osdk-filter-message-color-danger);\n}\n\n.srOnly {\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-width: 0;\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 { Button } from \"@base-ui/react/button\";\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 { DatePicker } from \"../../../shared/calendar/index.js\";\nimport { createHistogramBuckets, getMaxBucketCount, niceTicks } from \"./createHistogramBuckets.js\";\nimport { HistogramTooltip } from \"./HistogramTooltip.js\";\nimport styles from \"./RangeInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\nconst DEBOUNCE_MS = 300;\n\n/** SVG viewBox. The bars/axisLines stretch with the container; text font\n * size is in viewBox units so it stays readable across container widths. */\nconst SVG_W = 400;\nconst SVG_H = 180;\nconst PAD_LEFT = 30;\nconst PAD_RIGHT = 10;\nconst PAD_TOP = 20;\nconst PAD_BOTTOM = 48;\nconst PLOT_W = SVG_W - PAD_LEFT - PAD_RIGHT;\nconst PLOT_H = SVG_H - PAD_TOP - PAD_BOTTOM;\nconst BAR_GAP = 2;\n/** Must match --osdk-filter-range-histogram-label-font-size. */\nconst COUNT_LABEL_FONT_SIZE = 16;\n/** Must match --osdk-filter-range-histogram-axis-font-size (body-large = 16px). */\nconst X_TICK_FONT_SIZE = 16;\nconst X_TICK_LABEL_Y = PAD_TOP + PLOT_H + 22;\nfunction computeBarLayout(bucketCount) {\n if (bucketCount === 0) {\n return null;\n }\n const barW = (PLOT_W - BAR_GAP * (bucketCount - 1)) / bucketCount;\n return {\n barW,\n xLeft: i => PAD_LEFT + i * (barW + BAR_GAP),\n xCenter: i => PAD_LEFT + i * (barW + BAR_GAP) + barW / 2\n };\n}\n\n/** Round `rough` to the nearest 1/2/5 × 10^n — produces \"nice\" axis steps. */\nfunction niceStep(rough) {\n if (rough <= 0) {\n return 1;\n }\n const exponent = Math.floor(Math.log10(rough));\n const fraction = rough / Math.pow(10, exponent);\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * Math.pow(10, exponent);\n}\n\n/**\n * Format a numeric tick label with precision derived from the step size, so\n * adjacent ticks always render to distinct strings even on tightly-clustered\n * data (where compact notation with 1 decimal would round multiple ticks to\n * the same label).\n */\nfunction formatTickAdaptive(value, step) {\n const absValue = Math.abs(value);\n if (absValue < 10_000 && Number.isInteger(value) && Number.isInteger(step)) {\n return String(value);\n }\n if (absValue >= 1000) {\n const magnitudeExp = Math.floor(Math.log10(absValue) / 3) * 3;\n const magnitude = Math.pow(10, magnitudeExp);\n const compactStep = step / magnitude;\n if (compactStep >= 0.05) {\n const decimals = Math.max(0, Math.min(2, Math.ceil(-Math.log10(compactStep))));\n return value.toLocaleString(undefined, {\n notation: \"compact\",\n maximumFractionDigits: decimals,\n minimumFractionDigits: 0\n });\n }\n }\n return value.toLocaleString(undefined, {\n maximumFractionDigits: 0,\n useGrouping: true\n });\n}\nfunction RangeInputInner({\n valueCountPairs,\n isLoading,\n minValue,\n maxValue,\n onChange,\n showHistogram = true,\n className,\n style,\n config,\n histogramData,\n clickToFilter = false\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\n // Date branch handlers — only invoked when `config.inputType === \"date\"`,\n // so T is Date. Reusing the refs above keeps the callbacks identity-stable\n // across renders, so the cross-bound update of one boundary doesn't bust\n // the React.memo on the OTHER DatePicker.\n const handleDateMinChange = useCallback(next => {\n const dispatch = onChangeRef.current;\n dispatch(next ?? undefined, maxValueRef.current);\n }, []);\n const handleDateMaxChange = useCallback(next => {\n const dispatch = onChangeRef.current;\n dispatch(minValueRef.current, next ?? undefined);\n }, []);\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) {\n return {\n min: undefined,\n max: undefined\n };\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 (histogramData) {\n return histogramData.buckets;\n }\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 }, [histogramData, showHistogram, displayPairs, computedRange, config]);\n const subtitle = histogramData?.subtitle ?? \"\";\n const maxBucketCount = useMemo(() => getMaxBucketCount(buckets), [buckets]);\n const yTicks = useMemo(() => niceTicks(maxBucketCount), [maxBucketCount]);\n const yTopValue = yTicks[yTicks.length - 1] || maxBucketCount || 1;\n const barLayout = useMemo(() => computeBarLayout(buckets.length), [buckets.length]);\n const dataBounds = useMemo(() => {\n if (buckets.length === 0) {\n return null;\n }\n return {\n minN: config.toNumber(buckets[0].min),\n maxN: config.toNumber(buckets[buckets.length - 1].max)\n };\n }, [buckets, config]);\n\n // Date histograms ship per-bucket `tickLabel` (Jan, Feb, …); numeric\n // histograms don't. For the latter we compute \"nice\" tick values\n // *within* the data range so labels reflect the actual values rather\n // than offsets-from-zero.\n const isDateLike = buckets.length > 0 && buckets[0].tickLabel != null;\n const numericTicks = useMemo(() => {\n if (isDateLike || dataBounds == null) {\n return [];\n }\n const {\n minN,\n maxN\n } = dataBounds;\n if (maxN <= minN) {\n return [];\n }\n const step = niceStep((maxN - minN) / 8);\n const start = Math.ceil(minN / step) * step;\n const end = Math.floor(maxN / step) * step;\n const all = [];\n for (let v = start; v <= end + step / 2; v += step) {\n const rounded = Math.round(v / step) * step;\n all.push({\n value: rounded,\n label: formatTickAdaptive(rounded, step)\n });\n }\n if (all.length <= 2) {\n return all;\n }\n const maxLabelLen = Math.max(...all.map(t => t.label.length));\n const minSpacing = maxLabelLen * X_TICK_FONT_SIZE * 0.6 + 8;\n const fits = Math.max(2, Math.floor(PLOT_W / minSpacing) + 1);\n if (all.length <= fits) {\n return all;\n }\n const stride = Math.ceil((all.length - 1) / (fits - 1));\n const picked = [];\n for (let i = 0; i < all.length; i += stride) {\n picked.push(all[i]);\n }\n if (picked[picked.length - 1] !== all[all.length - 1]) {\n picked.push(all[all.length - 1]);\n }\n return picked;\n }, [dataBounds, isDateLike]);\n\n // Skip count labels when there are too many bars to fit them readably.\n // Threshold of 10 matches the PRD heuristic.\n const COUNT_LABEL_THRESHOLD = 10;\n const skipCountLabel = useCallback(i => {\n if (buckets.length <= COUNT_LABEL_THRESHOLD) {\n return false;\n }\n const stride = Math.ceil(buckets.length / COUNT_LABEL_THRESHOLD);\n return i % stride !== 0;\n }, [buckets.length]);\n\n // Drag range tracked in a ref so synchronous read/write across\n // pointerdown → pointermove → pointerup is reliable. A separate state\n // value mirrors the ref so the SVG re-renders to highlight the dragged\n // range while the user is dragging. Start coords are tracked separately\n // so a near-zero-movement pointerup gets treated as a click (which can\n // clear an in-band filter) instead of a single-bucket drag commit.\n const dragRangeRef = useRef(null);\n const dragStartCoordsRef = useRef(null);\n const [dragRange, setDragRange] = useState(null);\n const bucketsRef = useRef(buckets);\n bucketsRef.current = buckets;\n const configRef = useRef(config);\n configRef.current = config;\n\n // Bucket-index bounds [lo, hi] for the translucent selection band that sits\n // behind the bars. During a drag we use the live drag range; otherwise we\n // map the committed minValue/maxValue back to the buckets they cover.\n const selectionBandIndices = useMemo(() => {\n if (dragRange != null) {\n return {\n lo: Math.min(dragRange.start, dragRange.end),\n hi: Math.max(dragRange.start, dragRange.end)\n };\n }\n if (minValue === undefined || maxValue === undefined || buckets.length === 0) {\n return null;\n }\n const minN = config.toNumber(minValue);\n const maxN = config.toNumber(maxValue);\n let lo = -1;\n let hi = -1;\n // Buckets are half-open [min, max). Use strict inequality on the shared\n // endpoints so a bucket that ends exactly at the filter's minN (or starts\n // exactly at maxN) is NOT pulled into the band — otherwise the band over-\n // extends by one bucket on each side after commit.\n for (let i = 0; i < buckets.length; i++) {\n if (lo === -1 && config.toNumber(buckets[i].max) > minN) {\n lo = i;\n }\n if (config.toNumber(buckets[i].min) < maxN) {\n hi = i;\n }\n }\n if (lo === -1 || hi === -1 || lo > hi) {\n return null;\n }\n return {\n lo,\n hi\n };\n }, [dragRange, minValue, maxValue, buckets, config]);\n const commitDragRange = useCallback((start, end, treatAsClick) => {\n const currentBuckets = bucketsRef.current;\n const currentConfig = configRef.current;\n const lo = Math.min(start, end);\n const hi = Math.max(start, end);\n const minBucket = currentBuckets[lo];\n const maxBucket = currentBuckets[hi];\n if (minBucket == null || maxBucket == null) {\n return;\n }\n\n // A click (vs a drag) within the existing selection band clears the\n // filter — a stray click anywhere inside the highlighted area can be\n // undone without reaching for the inputs. A short drag inside one\n // bucket no longer triggers the clear path because the threshold\n // disambiguates click from micro-drag.\n const currentMin = minValueRef.current;\n const currentMax = maxValueRef.current;\n if (treatAsClick && start === end && currentMin !== undefined && currentMax !== undefined) {\n const minN = currentConfig.toNumber(currentMin);\n const maxN = currentConfig.toNumber(currentMax);\n const bucketMinN = currentConfig.toNumber(minBucket.min);\n const bucketMaxN = currentConfig.toNumber(minBucket.max);\n const inBand = minN <= bucketMaxN && maxN >= bucketMinN;\n if (inBand) {\n onChangeRef.current(undefined, undefined);\n return;\n }\n }\n onChangeRef.current(minBucket.min, maxBucket.max);\n }, []);\n\n // Distance (in client px) below which a pointerup is treated as a click\n // — see commitDragRange for the reason. 4px squared = 16.\n const DRAG_VS_CLICK_THRESHOLD_SQ = 16;\n const svgRef = useRef(null);\n const setSvgRef = useCallback(el => {\n svgRef.current = el;\n }, []);\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const bucketIndexAtClient = useCallback((clientX, clientY) => {\n const svg = svgRef.current;\n const bucketCount = bucketsRef.current.length;\n if (!svg || bucketCount === 0) {\n return null;\n }\n const ctm = svg.getScreenCTM();\n if (!ctm) {\n return null;\n }\n const pt = svg.createSVGPoint();\n pt.x = clientX;\n pt.y = clientY;\n const local = pt.matrixTransform(ctm.inverse());\n const localX = local.x - PAD_LEFT;\n const slotW = (PLOT_W + BAR_GAP) / bucketCount;\n const barW = slotW - BAR_GAP;\n // Snap to the bar whose center is nearest, so a pointer that lands in\n // the inter-bar gap selects the visually-closer bar.\n const idx = Math.round((localX - barW / 2) / slotW);\n return Math.max(0, Math.min(bucketCount - 1, idx));\n }, []);\n const bucketIndexFromTarget = useCallback(target => {\n if (!(target instanceof Element)) {\n return null;\n }\n const dataIdx = target.getAttribute(\"data-bucket-index\");\n if (dataIdx == null) {\n return null;\n }\n const parsed = parseInt(dataIdx, 10);\n return Number.isNaN(parsed) ? null : parsed;\n }, []);\n const handlePlotPointerDown = useCallback(e => {\n if (!clickToFilter) {\n return;\n }\n // Prefer the bucket index stamped on the bar via `data-bucket-index`\n // for the common case (also avoids `getScreenCTM` coord math). Fall\n // back to client-coord math when the press lands on the empty plot\n // background between bars.\n const startIdx = bucketIndexFromTarget(e.target) ?? bucketIndexAtClient(e.clientX, e.clientY);\n if (startIdx == null) {\n return;\n }\n e.preventDefault();\n // setPointerCapture routes subsequent move/up/cancel events to the\n // SVG even when the pointer leaves it, so we don't need\n // document-level listeners — and pointercancel handles\n // release-outside-window cases that mouseup can't.\n e.currentTarget.setPointerCapture(e.pointerId);\n setHoveredIndex(null);\n dragStartCoordsRef.current = {\n x: e.clientX,\n y: e.clientY\n };\n dragRangeRef.current = {\n start: startIdx,\n end: startIdx\n };\n setDragRange({\n start: startIdx,\n end: startIdx\n });\n }, [clickToFilter, bucketIndexFromTarget, bucketIndexAtClient]);\n const handlePlotPointerMove = useCallback(e => {\n // Prefer the bucket-index attribute on the bar; fall back to client\n // coords for moves that land on the empty plot background between\n // bars (or that cross gaps during a drag).\n const idx = bucketIndexFromTarget(e.target) ?? bucketIndexAtClient(e.clientX, e.clientY);\n if (idx == null) {\n return;\n }\n if (dragRangeRef.current == null) {\n setHoveredIndex(idx);\n return;\n }\n const next = {\n ...dragRangeRef.current,\n end: idx\n };\n dragRangeRef.current = next;\n setDragRange(next);\n }, [bucketIndexFromTarget, bucketIndexAtClient]);\n const handlePlotPointerUp = useCallback(e => {\n const current = dragRangeRef.current;\n const startCoords = dragStartCoordsRef.current;\n dragRangeRef.current = null;\n dragStartCoordsRef.current = null;\n setDragRange(null);\n if (current == null || startCoords == null) {\n return;\n }\n const dx = e.clientX - startCoords.x;\n const dy = e.clientY - startCoords.y;\n const treatAsClick = dx * dx + dy * dy < DRAG_VS_CLICK_THRESHOLD_SQ;\n commitDragRange(current.start, current.end, treatAsClick);\n }, [commitDragRange]);\n const handlePlotPointerCancel = useCallback(() => {\n dragRangeRef.current = null;\n dragStartCoordsRef.current = null;\n setDragRange(null);\n }, []);\n const handlePlotPointerLeave = useCallback(() => {\n if (dragRangeRef.current == null) {\n setHoveredIndex(null);\n }\n }, []);\n const handleClearFilter = useCallback(() => {\n onChangeRef.current(undefined, undefined);\n }, []);\n const hasActiveFilter = minValue !== undefined || maxValue !== undefined;\n const handleMinChange = useCallback(next => {\n setLocalMin(next);\n debouncedMinChange(next);\n }, [debouncedMinChange]);\n const handleMaxChange = useCallback(next => {\n setLocalMax(next);\n debouncedMaxChange(next);\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\"), /*#__PURE__*/React.createElement(Button, {\n className: styles.clearButton,\n \"data-active\": hasActiveFilter || undefined,\n onClick: handleClearFilter,\n disabled: !hasActiveFilter\n }, \"Clear\"), showHistogram && buckets.length > 0 && barLayout != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.histogramWrapper\n }, /*#__PURE__*/React.createElement(\"svg\", {\n ref: setSvgRef,\n className: styles.histogramSvg,\n \"data-click-to-filter\": clickToFilter || undefined,\n viewBox: `0 0 ${SVG_W} ${SVG_H}`,\n preserveAspectRatio: \"xMidYMid meet\",\n role: \"img\",\n \"aria-label\": \"Histogram of value counts\",\n onPointerDown: clickToFilter ? handlePlotPointerDown : undefined,\n onPointerUp: clickToFilter ? handlePlotPointerUp : undefined,\n onPointerCancel: clickToFilter ? handlePlotPointerCancel : undefined,\n onPointerMove: handlePlotPointerMove,\n onPointerLeave: handlePlotPointerLeave\n }, /*#__PURE__*/React.createElement(\"g\", {\n className: styles.axisLines\n }, yTicks.map(tickValue => {\n const yFrac = yTopValue > 0 ? tickValue / yTopValue : 0;\n const y = PAD_TOP + PLOT_H - yFrac * PLOT_H;\n return /*#__PURE__*/React.createElement(\"g\", {\n key: tickValue\n }, /*#__PURE__*/React.createElement(\"line\", {\n className: styles.axisLine,\n x1: PAD_LEFT,\n x2: SVG_W - PAD_RIGHT,\n y1: y,\n y2: y,\n vectorEffect: \"non-scaling-stroke\"\n }), /*#__PURE__*/React.createElement(\"text\", {\n className: styles.yAxisLabel,\n x: PAD_LEFT - 4,\n y: y + 3,\n textAnchor: \"end\"\n }, tickValue));\n })), selectionBandIndices != null && /*#__PURE__*/React.createElement(\"rect\", {\n className: styles.selectionBand,\n x: barLayout.xLeft(selectionBandIndices.lo),\n y: PAD_TOP,\n width: barLayout.xLeft(selectionBandIndices.hi) + barLayout.barW - barLayout.xLeft(selectionBandIndices.lo),\n height: PLOT_H,\n \"data-dragging\": dragRange != null || undefined\n }), /*#__PURE__*/React.createElement(\"g\", {\n className: styles.bars\n }, buckets.map((bucket, index) => {\n const x = barLayout.xLeft(index);\n const heightFrac = yTopValue > 0 ? bucket.count / yTopValue : 0;\n const barH = Math.max(0, heightFrac * PLOT_H);\n const y = PAD_TOP + PLOT_H - barH;\n // Buckets are half-open [min, max). Strict inequality on the\n // shared endpoints keeps adjacent buckets out of the active\n // styling when the filter starts/ends exactly on a boundary.\n const isInRange = (minValue === undefined || config.toNumber(bucket.max) > config.toNumber(minValue)) && (maxValue === undefined || config.toNumber(bucket.min) < config.toNumber(maxValue));\n const isInDragRange = dragRange != null && index >= Math.min(dragRange.start, dragRange.end) && index <= Math.max(dragRange.start, dragRange.end);\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: index,\n className: styles.histogramBar,\n \"data-in-range\": isInRange || isInDragRange,\n \"data-click-to-filter\": clickToFilter || undefined,\n \"data-dragging\": isInDragRange || undefined,\n x: x,\n y: y,\n width: Math.max(barLayout.barW, 0.5),\n height: barH,\n \"data-bucket-index\": index\n }, /*#__PURE__*/React.createElement(\"title\", null, config.formatTooltip(bucket.min, bucket.max, bucket.count)));\n })), /*#__PURE__*/React.createElement(\"g\", {\n className: styles.countLabels\n }, buckets.map((bucket, index) => {\n if (bucket.count === 0) {\n return null;\n }\n if (skipCountLabel(index)) {\n return null;\n }\n const cx = barLayout.xCenter(index);\n const heightFrac = yTopValue > 0 ? bucket.count / yTopValue : 0;\n const barH = heightFrac * PLOT_H;\n const barTop = PAD_TOP + PLOT_H - barH;\n // If the label would render above the SVG's content area,\n // tuck it inside the top of the bar instead so it doesn't\n // get clipped by the popover/container.\n const insideBar = barTop - COUNT_LABEL_FONT_SIZE - 2 < 0;\n const y = insideBar ? barTop + COUNT_LABEL_FONT_SIZE : barTop - 4;\n return /*#__PURE__*/React.createElement(\"text\", {\n key: index,\n className: styles.countLabel,\n \"data-inside-bar\": insideBar || undefined,\n x: cx,\n y: y,\n textAnchor: \"middle\"\n }, bucket.count.toLocaleString());\n })), /*#__PURE__*/React.createElement(\"g\", {\n className: styles.xTicks\n }, isDateLike ? buckets.map((bucket, index) => {\n if (bucket.tickLabel == null) {\n return null;\n }\n if (buckets.length > COUNT_LABEL_THRESHOLD && skipCountLabel(index)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"text\", {\n key: index,\n className: styles.xTickLabel,\n x: barLayout.xCenter(index),\n y: X_TICK_LABEL_Y,\n textAnchor: \"middle\"\n }, bucket.tickLabel);\n }) : dataBounds != null ? numericTicks.map(({\n value,\n label\n }, i) => {\n const xFrac = (value - dataBounds.minN) / (dataBounds.maxN - dataBounds.minN);\n const x = PAD_LEFT + xFrac * PLOT_W;\n return /*#__PURE__*/React.createElement(\"text\", {\n key: i,\n className: styles.xTickLabel,\n x: x,\n y: X_TICK_LABEL_Y,\n textAnchor: \"middle\"\n }, label);\n }) : null), subtitle && /*#__PURE__*/React.createElement(\"text\", {\n className: styles.subtitle,\n x: SVG_W / 2,\n y: SVG_H - 8,\n textAnchor: \"middle\"\n }, subtitle)), hoveredIndex != null && dragRange == null && buckets[hoveredIndex] != null && /*#__PURE__*/React.createElement(HistogramTooltip, {\n text: config.formatTooltip(buckets[hoveredIndex].min, buckets[hoveredIndex].max, buckets[hoveredIndex].count),\n cx: barLayout.xCenter(hoveredIndex),\n barTop: PAD_TOP + PLOT_H - (yTopValue > 0 ? buckets[hoveredIndex].count / yTopValue : 0) * PLOT_H,\n svgWidth: SVG_W,\n svgHeight: SVG_H,\n svgElement: svgRef.current\n })), config.inputType === \"date\" ? /*#__PURE__*/React.createElement(DateRangeInputs, {\n minValue: minValue,\n maxValue: maxValue,\n onMinChange: handleDateMinChange,\n onMaxChange: handleDateMaxChange,\n formatDate: config.formatDate,\n minLabel: config.minLabel,\n maxLabel: config.maxLabel\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(RangeBoundInput, {\n id: minInputId,\n value: localMin,\n onChange: handleMinChange,\n placeholder: dataRange.dataMin !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMin) : undefined,\n inputProps: config.inputProps,\n ariaLabel: config.minLabel\n })), /*#__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(RangeBoundInput, {\n id: maxInputId,\n value: localMax,\n onChange: handleMaxChange,\n placeholder: dataRange.dataMax !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMax) : undefined,\n inputProps: config.inputProps,\n ariaLabel: config.maxLabel\n }))));\n}\nfunction DateRangeInputs({\n minValue,\n maxValue,\n onMinChange,\n onMaxChange,\n formatDate,\n minLabel,\n maxLabel\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.rangeInputs\n }, /*#__PURE__*/React.createElement(DatePicker, {\n value: minValue ?? null,\n onChange: onMinChange,\n max: maxValue,\n placeholder: minLabel,\n ariaLabel: minLabel,\n formatDate: formatDate\n }), /*#__PURE__*/React.createElement(DatePicker, {\n value: maxValue ?? null,\n onChange: onMaxChange,\n min: minValue,\n placeholder: maxLabel,\n ariaLabel: maxLabel,\n formatDate: formatDate\n }));\n}\nfunction RangeBoundInput({\n id,\n value,\n onChange,\n placeholder,\n inputProps,\n ariaLabel\n}) {\n const handleNativeChange = useCallback(e => {\n onChange(e.target.value);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(Input, _extends({\n id: id,\n type: \"number\",\n className: styles.input,\n value: value,\n onChange: handleNativeChange,\n placeholder: placeholder,\n \"aria-label\": ariaLabel\n }, 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, useMemo } from \"react\";\nimport { formatDateForInput } from \"../../../shared/dateUtils.js\";\nimport { createDateHistogramBuckets } from \"./createDateHistogramBuckets.js\";\nimport { RangeInput } from \"./RangeInput.js\";\nconst defaultDateConfig = {\n inputType: \"date\",\n formatValue: formatDateForInput,\n parseValue: () => undefined,\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 DateRangeHistogramInputInner({\n formatDate,\n valueCountPairs,\n ...rest\n}) {\n const config = useMemo(() => formatDate != null ? {\n ...defaultDateConfig,\n formatDate,\n formatTooltip: (min, max, count) => `${formatDate(min)} - ${formatDate(max)}: ${count.toLocaleString()}`\n } : defaultDateConfig, [formatDate]);\n const histogramData = useMemo(() => {\n if (valueCountPairs.length === 0) {\n return undefined;\n }\n let minMs = Infinity;\n let maxMs = -Infinity;\n for (const {\n value\n } of valueCountPairs) {\n const t = value.getTime();\n if (t < minMs) {\n minMs = t;\n }\n if (t > maxMs) {\n maxMs = t;\n }\n }\n if (!Number.isFinite(minMs) || !Number.isFinite(maxMs)) {\n return undefined;\n }\n const {\n buckets,\n subtitle\n } = createDateHistogramBuckets(valueCountPairs, {\n min: new Date(minMs),\n max: new Date(maxMs)\n }, formatDate);\n return {\n buckets,\n subtitle\n };\n }, [valueCountPairs, formatDate]);\n return /*#__PURE__*/React.createElement(RangeInput, _extends({}, rest, {\n valueCountPairs: valueCountPairs,\n config: config,\n histogramData: histogramData\n }));\n}\nexport const DateRangeHistogramInput = /*#__PURE__*/memo(DateRangeHistogramInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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\nconst COMPACT_NUMBER = new Intl.NumberFormat(undefined, {\n notation: \"compact\"\n});\n\n/**\n * Compact locale-aware formatter for filter-list bucket and null-row counts\n * (e.g. \"1.2K\", \"1.5M\"). Call sites should pair this with\n * `title={n.toLocaleString()}` so the full count remains discoverable.\n */\nexport function formatCompactCount(n) {\n return COMPACT_NUMBER.format(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.noValueLabel {\n color: var(\n --osdk-filter-listogram-empty-label-color,\n var(--osdk-filter-no-value-color)\n );\n font-style: var(\n --osdk-filter-listogram-empty-label-font-style,\n var(--osdk-filter-no-value-font-style)\n );\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/* Empty/null bucket. Match NullValueWrapper's checkbox-to-label gap so an\n * inline \"No value\" row in a histogram is visually consistent with the\n * trailing \"No value\" row used by non-histogram filters. */\n.row[data-empty] {\n gap: var(--osdk-filter-null-label-gap);\n}\n\n/* Muted styling for filtered-out (count=0) rows. */\n.row[data-filtered-out] {\n --osdk-filter-listogram-count-color: var(\n --osdk-filter-filtered-out-item-color\n );\n --osdk-filter-listogram-label-color: var(\n --osdk-filter-filtered-out-item-color\n );\n\n color: var(--osdk-filter-filtered-out-item-color);\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\n.noValue {\n color: var(--osdk-filter-no-value-color);\n font-style: var(--osdk-filter-no-value-font-style);\n font-size: var(--osdk-filter-no-value-font-size);\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 classnames from \"classnames\";\nimport React, { memo } from \"react\";\n// Shares the muted/italic styling used by NoValueLabel so the two special\n// option rows (\"No value\" and \"(empty string)\") read as visually consistent.\nimport styles from \"./NoValueLabel.module.css\";\n/**\n * Canonical rendering for a literal empty-string (`\"\"`) filter value, shown as\n * \"(empty string)\". Distinct from {@link NoValueLabel}, which renders null/undefined\n * (\"No value\").\n */\nfunction EmptyStringLabelInner({\n className\n}) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.noValue, className)\n }, \"(empty string)\");\n}\nexport const EmptyStringLabel = /*#__PURE__*/memo(EmptyStringLabelInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 styles from \"./NoValueLabel.module.css\";\n/**\n * Canonical \"No value\" rendering for empty/null filter values.\n * Italic, muted span used in dropdowns, listogram buckets, and\n * NullValueWrapper.\n *\n * Style is configurable via the `--osdk-filter-no-value-color`,\n * `--osdk-filter-no-value-font-style`, and `--osdk-filter-no-value-font-size`\n * CSS variables.\n */\nfunction NoValueLabelInner({\n className\n}) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.noValue, className)\n }, \"No value\");\n}\nexport const NoValueLabel = /*#__PURE__*/memo(NoValueLabelInner);","/*\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 { isNoValue } from \"../../utils/filterValues.js\";\nimport { EmptyStringLabel } from \"./EmptyStringLabel.js\";\nimport { NoValueLabel } from \"./NoValueLabel.js\";\n\n/** Plain-text label for the screen-reader / aria-label equivalent of an option. */\nexport function getOptionLabelText(value) {\n if (isNoValue(value)) {\n return \"No value\";\n }\n if (value === \"\") {\n return \"(empty string)\";\n }\n return value;\n}\n/**\n * Canonical label for a single filter option, covering the three cases that\n * share an identity-string space:\n * - the {@link NO_VALUE} sentinel (null/undefined) renders \"No value\"\n * - a literal empty string `\"\"` renders \"(empty string)\"\n * - any other value renders via `renderValue` (or the raw value)\n *\n * `className` is forwarded to the placeholder labels so callers can theme the\n * special rows (e.g. the listogram's muted bucket styling).\n */\nfunction OptionLabelInner({\n value,\n renderValue,\n className\n}) {\n if (isNoValue(value)) {\n return /*#__PURE__*/React.createElement(NoValueLabel, {\n className: className\n });\n }\n if (value === \"\") {\n return /*#__PURE__*/React.createElement(EmptyStringLabel, {\n className: className\n });\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderValue ? renderValue(value) : value);\n}\nexport const OptionLabel = /*#__PURE__*/memo(OptionLabelInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, isNoValue } from \"../../utils/filterValues.js\";\nimport { formatCompactCount } from \"./formatCompactCount.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport { ListogramSkeleton } from \"./ListogramSkeleton.js\";\nimport { OptionLabel } from \"./OptionLabel.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 showCount = true,\n isExcluding,\n showFilteredOutValues = true,\n className,\n style,\n maxVisibleItems,\n searchQuery,\n renderValue\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 => {\n const rendered = renderValue?.(v.value);\n return typeof rendered === \"string\" ? rendered : v.value;\n });\n }\n return stableValues;\n }, [stableValues, searchQuery, renderValue]);\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 const isEmpty = isNoValue(value) || value === \"\";\n const isFilteredOut = showFilteredOutValues && count === 0 && !selectedSet.has(value);\n return /*#__PURE__*/React.createElement(Button, {\n key: value,\n className: styles.row,\n \"data-empty\": isEmpty || undefined,\n \"data-filtered-out\": isFilteredOut || undefined\n // eslint-disable-next-line react/jsx-no-bind\n ,\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 // eslint-disable-next-line react/jsx-no-bind\n ,\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 }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue,\n className: styles.noValueLabel\n })), showCount && displayMode !== \"minimal\" && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count,\n title: count.toLocaleString()\n }, formatCompactCount(count)), 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 // eslint-disable-next-line react/jsx-no-bind\n ,\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 classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { DatePicker } from \"../../../shared/calendar/index.js\";\nimport { formatDateForDisplay, formatDateForInput } 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 formatDate\n}) {\n const addDate = useCallback(date => {\n if (date == null) return;\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 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(DateTag, {\n key: date.toISOString(),\n date: date,\n formatDate: formatDate,\n onRemove: removeDate\n })), 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(DatePicker, {\n value: null,\n onChange: addDate,\n min: minDate,\n max: maxDate,\n ariaLabel: \"Add date\",\n modal: false,\n formatDate: formatDate\n })));\n}\nexport const MultiDateInput = /*#__PURE__*/memo(MultiDateInputInner);\nfunction DateTag({\n date,\n formatDate,\n onRemove\n}) {\n const handleRemove = useCallback(() => {\n onRemove(date);\n }, [onRemove, date]);\n const label = formatDate != null ? formatDate(date) : formatDateForDisplay(date);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.tag\n }, label, /*#__PURE__*/React.createElement(Button, {\n className: sharedStyles.tagRemove,\n onClick: handleRemove,\n \"aria-label\": `Remove ${label}`\n }, \"\\xD7\"));\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 * Build a Combobox `filter` function that searches by `renderValue(item)` when\n * it returns a string, and falls back to the raw item value when it returns\n * non-string JSX. Comparison is case-insensitive.\n */\nexport function createRenderValueFilter(renderValue) {\n return (itemValue, query) => {\n const rendered = renderValue(itemValue);\n const searchText = typeof rendered === \"string\" ? rendered : itemValue;\n return searchText.toLowerCase().includes(query.toLowerCase());\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 from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nexport function MultiSelectDropdownLayout({\n renderChips,\n renderItem,\n collisionBoundary\n}) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Combobox.Chips, null, /*#__PURE__*/React.createElement(Combobox.Value, null, renderChips)), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, {\n collisionBoundary: collisionBoundary\n }, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem)))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.multiSelect[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .multiSelect {\n transition: none;\n }\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/* Muted styling for filtered-out (count=0) entries. */\n.filteredOutItem {\n --osdk-filter-multiselect-count-color: var(\n --osdk-filter-filtered-out-item-color\n );\n\n color: var(--osdk-filter-filtered-out-item-color);\n}\n\n.inlineInput {\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 outline: none;\n width: 100%;\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.inlineEmpty {\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 color: var(--osdk-filter-message-color-muted);\n}\n\n.inlineList {\n display: flex;\n flex-direction: column;\n outline: none;\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 from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport styles from \"./MultiSelectInput.module.css\";\nexport function MultiSelectInlineLayout({\n placeholder,\n ariaLabel,\n renderItem\n}) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Combobox.Input, {\n className: styles.inlineInput,\n placeholder: placeholder,\n \"aria-label\": ariaLabel\n }), /*#__PURE__*/React.createElement(Combobox.Empty, {\n className: styles.inlineEmpty\n }, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, {\n className: styles.inlineList\n }, renderItem));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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\";\nexport function SelectInputSkeleton() {\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": \"select-input-skeleton\"\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n width: \"100%\",\n height: \"var(--osdk-filter-skeleton-input-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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport { useFilterListBoundary } from \"../FilterListBoundaryContext.js\";\nimport { createRenderValueFilter } from \"./comboboxFilter.js\";\nimport { MultiSelectDropdownLayout } from \"./MultiSelectDropdownLayout.js\";\nimport { MultiSelectInlineLayout } from \"./MultiSelectInlineLayout.js\";\nimport styles from \"./MultiSelectInput.module.css\";\nimport { getOptionLabelText, OptionLabel } from \"./OptionLabel.js\";\nimport { SelectInputSkeleton } from \"./SelectInputSkeleton.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\n\n/**\n * Layout for the value list:\n * - `\"dropdown\"` (default): chips inline + portaled Combobox popup. Use when\n * the input drives its own surface (e.g. standalone in a row).\n * - `\"inline\"`: search input + always-visible value list rendered in flow.\n * Use when wrapping the input in your own popover so the values are\n * immediately visible without an extra inner trigger.\n */\n\nfunction MultiSelectInputInner({\n values,\n isLoading,\n error,\n selectedValues,\n onChange,\n className,\n style,\n placeholder = \"Select values...\",\n showCounts = true,\n showFilteredOutValues = true,\n ariaLabel = \"Search values\",\n renderValue,\n layout = \"dropdown\"\n}) {\n const collisionBoundary = useFilterListBoundary();\n const handleValueChange = useCallback(newValues => {\n onChange(newValues ?? []);\n }, [onChange]);\n const stableValues = useStableData(values, isLoading);\n const items = useMemo(() => stableValues.map(({\n value\n }) => value), [stableValues]);\n const countByValue = useMemo(() => new Map(stableValues.map(({\n value,\n count\n }) => [value, count])), [stableValues]);\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n const comboboxFilter = useMemo(() => renderValue ? createRenderValueFilter(renderValue) : undefined, [renderValue]);\n const renderItem = useCallback(value => {\n const count = countByValue.get(value) ?? 0;\n const isFilteredOut = showFilteredOutValues && count === 0 && !selectedSet.has(value);\n return /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value,\n className: isFilteredOut ? styles.filteredOutItem : undefined\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue\n })), showCounts && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", count.toLocaleString(), \")\"));\n }, [countByValue, selectedSet, showCounts, showFilteredOutValues, renderValue]);\n const renderChips = useCallback(selectedItems => /*#__PURE__*/React.createElement(React.Fragment, null, selectedItems.map(value => {\n return /*#__PURE__*/React.createElement(Combobox.Chip, {\n key: value,\n \"aria-label\": getOptionLabelText(value)\n }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue\n }), /*#__PURE__*/React.createElement(Combobox.ChipRemove, null));\n }), /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: selectedItems.length > 0 ? \"\" : placeholder,\n \"aria-label\": ariaLabel\n })), [placeholder, ariaLabel, renderValue]);\n const isNoData = !error && stableValues.length === 0;\n const isReloading = isLoading && stableValues.length > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.multiSelect, className),\n style: style,\n \"data-loading\": isReloading\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.srOnly,\n role: \"status\"\n }, isLoading ? \"Loading options\" : \"\"), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), isNoData && isLoading && /*#__PURE__*/React.createElement(SelectInputSkeleton, null), isNoData && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No options available\"), stableValues.length > 0 && /*#__PURE__*/React.createElement(Combobox.Root, {\n multiple: true,\n value: selectedValues,\n onValueChange: handleValueChange,\n items: items,\n filter: comboboxFilter\n }, layout === \"inline\" ? /*#__PURE__*/React.createElement(MultiSelectInlineLayout, {\n placeholder: placeholder,\n ariaLabel: ariaLabel,\n renderItem: renderItem\n }) : /*#__PURE__*/React.createElement(MultiSelectDropdownLayout, {\n renderChips: renderChips,\n renderItem: renderItem,\n collisionBoundary: collisionBoundary\n })));\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.noValueLabel {\n color: var(\n --osdk-filter-null-label-color,\n var(--osdk-filter-no-value-color)\n );\n font-family: var(--osdk-filter-null-label-font-family, inherit);\n font-size: var(--osdk-filter-null-label-font-size, inherit);\n line-height: var(--osdk-filter-null-label-line-height, inherit);\n}\n\n.nullValueRow {\n display: flex;\n align-items: baseline;\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.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 { formatCompactCount } from \"./formatCompactCount.js\";\nimport { NoValueLabel } from \"./NoValueLabel.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(NoValueLabel, {\n className: styles.noValueLabel\n })), showNullCount && !error && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count,\n title: nullCount.toLocaleString()\n }, formatCompactCount(nullCount))), 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 classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { DatePicker } from \"../../../shared/calendar/index.js\";\nimport styles from \"./SingleDateInput.module.css\";\nfunction SingleDateInputInner({\n selectedDate,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n placeholder,\n showClearButton = true,\n formatDate\n}) {\n const handleClear = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n const handleChange = useCallback(value => {\n onChange(value ?? 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(DatePicker, {\n value: selectedDate ?? null,\n onChange: handleChange,\n min: minDate,\n max: maxDate,\n placeholder: placeholder,\n ariaLabel: \"Select date\",\n modal: false,\n formatDate: formatDate\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 transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.singleSelect[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .singleSelect {\n transition: none;\n }\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 { useFilterListBoundary } from \"../FilterListBoundaryContext.js\";\nimport { createRenderValueFilter } from \"./comboboxFilter.js\";\nimport { OptionLabel } from \"./OptionLabel.js\";\nimport { SelectInputSkeleton } from \"./SelectInputSkeleton.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./SingleSelectInput.module.css\";\nimport { useStableData } from \"./useStableData.js\";\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 renderValue\n}) {\n const collisionBoundary = useFilterListBoundary();\n const handleValueChange = useCallback(value => {\n onChange(value ?? undefined);\n }, [onChange]);\n const stableValues = useStableData(values, isLoading);\n const items = useMemo(() => stableValues.map(({\n value\n }) => value), [stableValues]);\n const countByValue = useMemo(() => new Map(stableValues.map(({\n value,\n count\n }) => [value, count])), [stableValues]);\n const comboboxFilter = useMemo(() => renderValue ? createRenderValueFilter(renderValue) : undefined, [renderValue]);\n const renderItem = useCallback(value => {\n return /*#__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 }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue\n })), showCounts && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", (countByValue.get(value) ?? 0).toLocaleString(), \")\"));\n }, [countByValue, showCounts, renderValue]);\n const isNoData = !error && stableValues.length === 0;\n const isReloading = isLoading && stableValues.length > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.singleSelect, className),\n style: style,\n \"data-loading\": isReloading\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.srOnly,\n role: \"status\"\n }, isLoading ? \"Loading options\" : \"\"), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), isNoData && isLoading && /*#__PURE__*/React.createElement(SelectInputSkeleton, null), isNoData && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No options available\"), stableValues.length > 0 && /*#__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 filter: comboboxFilter\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, {\n collisionBoundary: collisionBoundary\n }, /*#__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 transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.textTags[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .textTags {\n transition: none;\n }\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 { useFilterListBoundary } from \"../FilterListBoundaryContext.js\";\nimport { getOptionLabelText, OptionLabel } from \"./OptionLabel.js\";\nimport { SelectInputSkeleton } from \"./SelectInputSkeleton.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 const displayLabel = getOptionLabelText(tag);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.tag\n }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: tag\n }), /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: sharedStyles.tagRemove,\n onClick: handleRemove,\n \"aria-label\": `Remove ${displayLabel}`\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 collisionBoundary = useFilterListBoundary();\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 && suggestions.length > 0\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.srOnly,\n role: \"status\"\n }, isLoading ? \"Loading options\" : \"\"), 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, {\n collisionBoundary: collisionBoundary\n }, /*#__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 }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value\n }), \" (\", count.toLocaleString(), \")\")))))), !error && suggestions.length === 0 && isLoading && !!suggestionLimit && /*#__PURE__*/React.createElement(SelectInputSkeleton, null));\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 formatDate\n}) {\n const renderDate = (date, fallback) => date == null ? fallback : formatDate ? formatDate(date) : formatDateForDisplay(date, fallback);\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, renderDate(startDate, \"—\")), /*#__PURE__*/React.createElement(\"span\", null, \"to\"), /*#__PURE__*/React.createElement(\"span\", null, renderDate(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\";\nimport { useMemo } from \"react\";\nimport { dedupeEmptyAggregationRows, NO_VALUE } from \"../utils/filterValues.js\";\nconst EMPTY_ACTIVE_VALUES = [];\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(() => ({\n aggregate: aggregateOptions,\n where: options?.where,\n objectSet\n }), [aggregateOptions, options?.where, objectSet]);\n const {\n data: countData,\n isLoading,\n error\n } = useOsdkAggregation(objectType, aggregationArgs);\n const activeValues = options?.activeValues ?? EMPTY_ACTIVE_VALUES;\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\n // Build a set of values present in the aggregation so we can identify\n // which active selections need to be synthesized as filtered-out entries.\n const existingValues = new Set();\n for (const item of dataArray) {\n const raw = item.$group[propertyKey];\n existingValues.add(raw == null ? NO_VALUE : String(raw));\n }\n\n // Synthesize filtered-out entries for active selections absent from\n // aggregation results (e.g. saved filters with zero matching rows). They\n // use the same shape as real entries so the loop below handles isNull\n // uniformly.\n const filteredOutEntries = activeValues.flatMap(v => existingValues.has(v) ? [] : [{\n $group: {\n [propertyKey]: v\n },\n $count: 0\n }]);\n for (const item of [...dataArray, ...filteredOutEntries]) {\n const rawValue = item.$group[propertyKey];\n const count = item.$count ?? 0;\n if (rawValue == null) {\n values.push({\n value: NO_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 deduped = dedupeEmptyAggregationRows(values);\n const sortBy = options?.sortBy ?? \"count\";\n if (sortBy === \"count\") {\n deduped.sort((a, b) => b.count - a.count || a.value.localeCompare(b.value));\n } else {\n deduped.sort((a, b) => a.value.localeCompare(b.value));\n }\n if (options?.limit && deduped.length > options.limit) {\n return {\n data: deduped.slice(0, options.limit),\n maxCount\n };\n }\n return {\n data: deduped,\n maxCount\n };\n }, [countData, propertyKey, options?.limit, options?.sortBy, activeValues]);\n return {\n data: result.data,\n maxCount: result.maxCount,\n isLoading,\n error: error ?? null\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 { useMemo } from \"react\";\nimport { usePropertyAggregation } from \"./usePropertyAggregation.js\";\nconst EMPTY_VALUES = [];\n/**\n * Aggregates a property over `scopedObjectSet` (the narrowed scope) and pins\n * any values that exist in `emptySourceObjectSet` (the unfiltered base) but\n * are absent from the narrowed result to count=0, so facets can render\n * \"filtered-out\" rows alongside live counts.\n *\n * When `emptySourceObjectSet` is `undefined`, this falls through to a single\n * aggregation against `scopedObjectSet` — equivalent to `usePropertyAggregation`\n * with `selectedValues` as the only pinned values.\n *\n * @param objectType - Object type for the aggregation\n * @param propertyKey - Property to aggregate on\n * @param scopedObjectSet - Set the live counts are computed against (post-narrowing)\n * @param emptySourceObjectSet - Unfiltered base set whose values are pinned as\n * count=0 when absent from the scoped aggregation. Pass `undefined` to skip\n * the dual-scope behavior.\n * @param options.selectedValues - Values to always include in the result, even\n * when their count is 0 (e.g. currently-selected filter values)\n * @returns Aggregation against the scoped set, with isLoading reflecting both\n * queries when dual-scope is active.\n */\nexport function useDualScopeAggregation(objectType, propertyKey, scopedObjectSet, emptySourceObjectSet, options = {}) {\n const {\n sortBy,\n selectedValues = EMPTY_VALUES,\n limit\n } = options;\n const isDualScope = emptySourceObjectSet !== undefined;\n const emptySourceAggregation = usePropertyAggregation(objectType, propertyKey, emptySourceObjectSet);\n const activeValues = useMemo(() => {\n const merged = new Set(selectedValues);\n if (isDualScope && emptySourceAggregation.error == null) {\n for (const d of emptySourceAggregation.data) {\n merged.add(d.value);\n }\n }\n return merged.size === 0 ? undefined : Array.from(merged);\n }, [isDualScope, emptySourceAggregation.data, emptySourceAggregation.error, selectedValues]);\n const primary = usePropertyAggregation(objectType, propertyKey, scopedObjectSet, {\n sortBy,\n activeValues,\n limit\n });\n return {\n data: primary.data,\n maxCount: primary.maxCount,\n isLoading: primary.isLoading || isDualScope && emptySourceAggregation.isLoading,\n error: primary.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\n/**\n * Runtime representation of an active linked-property filter. Each entry\n * binds a `linkName` to its `reverseLinkName` and an `innerWhere` typed\n * against the linked object type, so `narrowObjectSet` can pivot type-safely.\n */\n\n/** Shared empty default for `LinkedFilter` arrays — avoids new-array-per-render. */\nexport const EMPTY_LINKED_FILTERS = [];\n\n/**\n * State for \"has link\" filter\n */\n\n/**\n * State for linked property filter\n * Wraps the filter state of the linked property\n */\n\n/**\n * Filter definition for \"Has Link\" filter\n * Filters objects based on whether they have any linked objects of the specified type\n */\n\n/**\n * Filter definition for filtering on a property of linked objects\n */","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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\n/**\n * Builds the where clause for a null-count aggregation, combining the\n * property null-check with the cross-filter where clause.\n *\n * The cross-filter clause is only included when it is non-empty. An empty\n * `{}` clause inside an `$and` is rejected by the aggregation API, so when no\n * cross-filter is active we return the bare null-check predicate.\n */\nexport function createNullCountWhereClause(propertyKey, crossFilterWhereClause) {\n const nullClause = createNullWhereClause(propertyKey);\n if (Object.keys(crossFilterWhereClause).length === 0) {\n return nullClause;\n }\n return {\n $and: [nullClause, crossFilterWhereClause]\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 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\nexport function narrowObjectSet(objectSet, whereClause, linkedFilters) {\n let narrowed = Object.keys(whereClause).length === 0 ? objectSet : objectSet.where(whereClause);\n for (const filter of linkedFilters) {\n narrowed = narrowed.intersect(applyLinkedFilter(narrowed, filter));\n }\n return narrowed;\n}\nfunction applyLinkedFilter(base, filter) {\n // reverseLinkName's pointing back to Q is a semantic invariant we can't encode\n // in the type system, so the final result is cast to ObjectSet<Q>.\n return base.pivotTo(filter.linkName).where(filter.innerWhere).pivotTo(filter.reverseLinkName);\n}\nexport function computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues) {\n if (objectSet == null) {\n return {\n scoped: undefined,\n emptySource: undefined\n };\n }\n const scoped = narrowObjectSet(objectSet, whereClause, linkedFilters);\n if (!showFilteredOutValues || linkedFilters.length === 0) {\n return {\n scoped,\n emptySource: undefined\n };\n }\n return {\n scoped,\n emptySource: narrowObjectSet(objectSet, whereClause, [])\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 { useOsdkAggregation } from \"@osdk/react\";\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 { DateRangeHistogramInput } from \"../base/inputs/DateRangeHistogramInput.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 { useDualScopeAggregation } from \"../hooks/useDualScopeAggregation.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nimport { coerceToString, coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nimport { narrowObjectSet } from \"../utils/narrowObjectSet.js\";\nfunction LinkedPropertyInputInner({\n objectSet,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n definition,\n filterState,\n onFilterStateChanged,\n showFilteredOutValues,\n searchQuery,\n className,\n style,\n layout\n}) {\n const scoped = useMemo(() => narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);\n const linkedObjectSet = useMemo(() => scoped.pivotTo(definition.linkName), [scoped, definition.linkName]);\n // Filtered-out rows on a linked facet compare against the raw source so\n // direct filters surface as count=0 entries on the linked side.\n const emptySourceLinkedObjectSet = useMemo(() => showFilteredOutValues ? objectSet.pivotTo(definition.linkName) : undefined, [showFilteredOutValues, 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 emptySourceObjectSet: emptySourceLinkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: values,\n onChange: onSelectChange,\n showCount: definition.showCount,\n renderValue: definition.renderValue,\n layout: layout\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 emptySourceObjectSet: emptySourceLinkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValue: value,\n onChange: onSingleSelectChange,\n showCount: definition.showCount,\n renderValue: definition.renderValue\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 emptySourceObjectSet: emptySourceLinkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: selectedValues,\n onChange: onExactMatchChange,\n searchQuery: searchQuery,\n showCount: definition.showCount,\n renderValue: definition.renderValue\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 emptySourceObjectSet,\n propertyKey,\n selectedValues,\n onChange,\n showCount,\n renderValue,\n layout\n}) {\n const {\n data,\n isLoading,\n error\n } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {\n selectedValues\n });\n return /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: onChange,\n showCounts: showCount,\n renderValue: renderValue,\n layout: layout\n });\n}\nfunction LinkedSingleSelectInput({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValue,\n onChange,\n showCount,\n renderValue\n}) {\n const selectedValues = useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);\n const {\n data,\n isLoading,\n error\n } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {\n selectedValues\n });\n return /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValue: selectedValue,\n onChange: onChange,\n showCounts: showCount,\n renderValue: renderValue,\n ariaLabel: `Select ${propertyKey}`\n });\n}\nfunction LinkedListogramInput({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValues,\n onChange,\n searchQuery,\n showCount,\n renderValue\n}) {\n const {\n data,\n maxCount,\n isLoading,\n error\n } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {\n selectedValues\n });\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 showCount: showCount,\n renderValue: renderValue\n });\n}\nconst TEXT_TAGS_OPTIONS = {\n limit: 50\n};\nfunction LinkedTextTagsInput({\n objectType,\n objectSet,\n propertyKey,\n tags,\n onChange\n}) {\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, TEXT_TAGS_OPTIONS);\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(DateRangeHistogramInput, {\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 &[data-anchor-hidden] {\n visibility: hidden;\n }\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\";\nimport { useFilterListBoundary } from \"./FilterListBoundaryContext.js\";\nfunction ExcludeDropdownInner({\n isExcluding,\n onToggleExclude\n}) {\n const collisionBoundary = useFilterListBoundary();\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 collisionBoundary: collisionBoundary\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 } from \"react\";\nimport { getEffectiveFilterState, getSelectedCount, supportsExcluding, toggleIsExcluding } from \"../utils/filterValues.js\";\nimport { ExcludeDropdown } from \"./ExcludeDropdown.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction FilterInputExcludeRowInner({\n excludeRowOpen,\n filterState,\n onFilterStateChanged,\n totalValueCount,\n onClearAll,\n children\n}) {\n const handleToggleExclude = useCallback(() => {\n if (filterState == null) {\n return;\n }\n const next = toggleIsExcluding(filterState);\n if (next != null) {\n onFilterStateChanged(next);\n }\n }, [filterState, onFilterStateChanged]);\n const effectiveState = getEffectiveFilterState(filterState);\n const isExcluding = effectiveState?.isExcluding ?? false;\n const isOpen = excludeRowOpen ?? false;\n const selectedCount = getSelectedCount(effectiveState);\n if (!supportsExcluding(effectiveState)) {\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(\"div\", {\n className: styles.excludeRowLeading\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\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { DateRangeHistogramInput } from \"../base/inputs/DateRangeHistogramInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullCountWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction DateRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n formatDate,\n clickToFilter\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(() => ({\n aggregate: aggregateOptions,\n objectSet,\n where: whereClause\n }), [aggregateOptions, objectSet, whereClause]);\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 nullCountWhereClause = useMemo(() => createNullCountWhereClause(propertyKey, whereClause), [propertyKey, whereClause]);\n const nullCountArgs = useMemo(() => ({\n where: nullCountWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n }), [nullCountWhereClause, 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(DateRangeHistogramInput, {\n valueCountPairs: valueCountPairs,\n isLoading: isLoading,\n minValue: dateRangeState?.minValue,\n maxValue: dateRangeState?.maxValue,\n onChange: handleRangeChange,\n formatDate: formatDate,\n clickToFilter: clickToFilter\n }));\n}\nexport const DateRangeFilterInput = /*#__PURE__*/memo(DateRangeFilterInputInner);","/*\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 { useMemo } from \"react\";\nimport { computeDualScopes } from \"../utils/narrowObjectSet.js\";\nimport { useDualScopeAggregation } from \"./useDualScopeAggregation.js\";\nexport function useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, options = {}) {\n const {\n sortBy,\n selectedValues,\n limit,\n showFilteredOutValues\n } = options;\n const {\n scoped,\n emptySource\n } = useMemo(() => computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues), [objectSet, whereClause, linkedFilters, showFilteredOutValues]);\n return useDualScopeAggregation(objectType, propertyKey, scoped, emptySource, {\n sortBy,\n selectedValues,\n limit\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, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction ListogramFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n colorMap,\n displayMode,\n showCount,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen,\n renderValue\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 {\n data,\n maxCount,\n isLoading,\n error\n } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {\n sortBy,\n selectedValues,\n showFilteredOutValues\n });\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 showCount: showCount,\n isExcluding: isExcluding,\n maxVisibleItems: maxVisibleItems,\n searchQuery: searchQuery,\n renderValue: renderValue\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 formatDate\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 formatDate: formatDate\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 { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction MultiSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n excludeRowOpen,\n renderValue,\n showCount,\n layout\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 {\n data,\n isLoading,\n error\n } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {\n selectedValues,\n showFilteredOutValues\n });\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 showCounts: showCount,\n ariaLabel: `Search ${propertyKey} values`,\n renderValue: renderValue,\n layout: layout\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, useOsdkMetadata } from \"@osdk/react\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullCountWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction NumberRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n clickToFilter\n}) {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\" ? filterState : undefined;\n const includeNull = filterState?.includeNull;\n const {\n metadata\n } = useOsdkMetadata(objectType);\n const propertyType = metadata?.properties?.[propertyKey]?.type;\n const isInteger = propertyType === \"integer\" || propertyType === \"long\" || propertyType === \"short\" || propertyType === \"byte\";\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 const coerceMin = v => isInteger && v !== undefined ? Math.ceil(v) : v;\n const coerceMax = v => isInteger && v !== undefined ? Math.floor(v) : v;\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: coerceMin(minValue),\n maxValue: coerceMax(maxValue),\n includeNull\n });\n }, [onFilterStateChanged, includeNull, isInteger]);\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => ({\n aggregate: aggregateOptions,\n objectSet,\n where: whereClause\n }), [aggregateOptions, objectSet, whereClause]);\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 nullCountWhereClause = useMemo(() => createNullCountWhereClause(propertyKey, whereClause), [propertyKey, whereClause]);\n const nullCountArgs = useMemo(() => ({\n where: nullCountWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n }), [nullCountWhereClause, 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 clickToFilter: clickToFilter && metadata != null\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 formatDate\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 formatDate: formatDate\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 { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\nfunction SingleSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n excludeRowOpen,\n renderValue,\n showCount\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 selectedValues = useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);\n const {\n data,\n isLoading,\n error\n } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {\n selectedValues,\n showFilteredOutValues\n });\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 showCounts: showCount,\n ariaLabel: `Select ${propertyKey}`,\n renderValue: renderValue\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 formatDate\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 formatDate: formatDate\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 linkedFilters,\n showFilteredOutValues,\n searchQuery,\n excludeRowOpen,\n layout\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 whereClause: whereClause,\n clickToFilter: definition.clickToFilter\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 whereClause: whereClause,\n formatDate: definition.formatDate,\n clickToFilter: definition.clickToFilter\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n excludeRowOpen: excludeRowOpen,\n renderValue: definition.renderValue,\n showCount: definition.showCount\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n excludeRowOpen: excludeRowOpen,\n renderValue: definition.renderValue,\n showCount: definition.showCount,\n layout: layout\n });\n case \"SINGLE_DATE\":\n return /*#__PURE__*/React.createElement(SingleDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n formatDate: definition.formatDate\n });\n case \"MULTI_DATE\":\n return /*#__PURE__*/React.createElement(MultiDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n formatDate: definition.formatDate\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n colorMap: definition.colorMap,\n displayMode: definition.listogramConfig?.displayMode,\n showCount: definition.showCount,\n maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen,\n renderValue: definition.renderValue\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 formatDate: definition.formatDate\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, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { coerceToString, coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\n// Static values are caller-provided options, not aggregation results, so their\n// zero counts should not be interpreted as values filtered out by another facet.\nconst SHOW_FILTERED_OUT_VALUES = false;\n/**\n * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).\n */\nfunction useExactMatchState(filterState, onFilterStateChanged, isExcluding) {\n const selectedValues = useMemo(() => filterState?.type === \"EXACT_MATCH\" ? coerceToStringArray(filterState.values) : [], [filterState]);\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 return {\n selectedValues,\n handleClearAll,\n handleChange\n };\n}\n\n/**\n * Hooks for SELECT state management (used by SINGLE_SELECT and MULTI_SELECT).\n */\nfunction useSelectState(filterState, onFilterStateChanged, isExcluding) {\n const selectedValue = useMemo(() => filterState?.type === \"SELECT\" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);\n const selectedValues = useMemo(() => filterState?.type === \"SELECT\" ? coerceToStringArray(filterState.selectedValues) : [], [filterState]);\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleSingleChange = useCallback(value => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleMultiChange = useCallback(selectedValues => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return {\n selectedValue,\n selectedValues,\n handleClearAll,\n handleSingleChange,\n handleMultiChange\n };\n}\nfunction StaticValuesFilterInputInner({\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen,\n layout\n}) {\n const aggregationValues = useMemo(() => definition.values.map(value => ({\n value,\n count: 0\n })), [definition.values]);\n const isExcluding = filterState?.isExcluding ?? false;\n const exactMatch = useExactMatchState(filterState, onFilterStateChanged, isExcluding);\n const select = useSelectState(filterState, onFilterStateChanged, isExcluding);\n switch (definition.filterComponent) {\n case \"LISTOGRAM\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: exactMatch.handleClearAll\n }, /*#__PURE__*/React.createElement(ListogramInput, {\n values: aggregationValues,\n maxCount: 0,\n isLoading: false,\n error: null,\n selectedValues: exactMatch.selectedValues,\n onChange: exactMatch.handleChange,\n colorMap: definition.colorMap,\n displayMode: definition.listogramConfig?.displayMode,\n showCount: definition.showCount,\n isExcluding: isExcluding,\n showFilteredOutValues: SHOW_FILTERED_OUT_VALUES,\n maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,\n searchQuery: searchQuery,\n renderValue: definition.renderValue\n }));\n case \"SINGLE_SELECT\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: select.handleClearAll\n }, /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: aggregationValues,\n isLoading: false,\n error: null,\n selectedValue: select.selectedValue,\n onChange: select.handleSingleChange,\n showCounts: definition.showCount,\n ariaLabel: `Select ${definition.key}`,\n renderValue: definition.renderValue\n }));\n case \"MULTI_SELECT\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: select.handleClearAll\n }, /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: aggregationValues,\n isLoading: false,\n error: null,\n selectedValues: select.selectedValues,\n onChange: select.handleMultiChange,\n showCounts: definition.showCount,\n showFilteredOutValues: SHOW_FILTERED_OUT_VALUES,\n ariaLabel: `Search ${definition.key} values`,\n renderValue: definition.renderValue,\n layout: layout\n }));\n case \"TEXT_TAGS\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: exactMatch.handleClearAll\n }, /*#__PURE__*/React.createElement(TextTagsInput, {\n suggestions: aggregationValues,\n isLoading: false,\n error: null,\n tags: exactMatch.selectedValues,\n onChange: exactMatch.handleChange\n }));\n default:\n return assertUnreachable(definition.filterComponent);\n }\n}\nexport const StaticValuesFilterInput = /*#__PURE__*/memo(StaticValuesFilterInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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\";\nimport { StaticValuesFilterInput } from \"./inputs/StaticValuesFilterInput.js\";\nfunction FilterInputInner({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters,\n showFilteredOutValues,\n searchQuery,\n excludeRowOpen,\n layout\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 whereClause: whereClause,\n linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n searchQuery: searchQuery,\n layout: layout\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen,\n layout: layout\n });\n case \"STATIC_VALUES\":\n return /*#__PURE__*/React.createElement(StaticValuesFilterInput, {\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen,\n layout: layout\n });\n default:\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Unsupported filter type\");\n }\n}\nexport const FilterInput = /*#__PURE__*/memo(FilterInputInner);\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 case \"STATIC_VALUES\":\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 { NO_VALUE } from \"./filterValues.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 return buildValueOrNullFilter(state.values);\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 buildValueOrNullFilter(values);\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 WHERE clause fragment for a single property key from filter state.\n */\nexport function buildPropertyKeyClause(key, state, propertyType) {\n const filter = filterStateToPropertyFilter(state, propertyType);\n if (filter === undefined) {\n return undefined;\n }\n const isExcluding = \"isExcluding\" in state && state.isExcluding;\n if (isCompoundFilter(filter)) {\n const fieldClauses = filter.conditions.map(c => ({\n [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 [key]: {\n $isNull: true\n }\n }]\n };\n }\n return isExcluding ? {\n $not: rangeClause\n } : rangeClause;\n } else {\n const clause = {\n [key]: filter\n };\n return isExcluding ? {\n $not: clause\n } : clause;\n }\n}\n/**\n * Builds a `WhereClause<Q>` from direct (non-link-traversing) filter\n * definitions and current states. LINKED_PROPERTY filters are excluded —\n * use `getActiveLinkedFilters` for those and apply via `narrowObjectSet`.\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 clause = buildPropertyKeyClause(definition.key, state, propertyType);\n if (clause !== undefined) {\n clauses.push(clause);\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 // Handled by getActiveLinkedFilters — can't be expressed as a\n // WhereClause<Q>.\n break;\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 case \"STATIC_VALUES\":\n {\n if (definition.toWhereClause) {\n const staticClause = definition.toWhereClause(state);\n if (staticClause && Object.keys(staticClause).length > 0) {\n clauses.push(staticClause);\n }\n } else {\n const clause = buildPropertyKeyClause(definition.key, state);\n if (clause !== undefined) {\n clauses.push(clause);\n }\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\n/**\n * Builds the inner `WhereClause` for a linked-property filter, typed against\n * the linked object type. Returns `undefined` when the state doesn't yield a\n * predicate (e.g. empty selection).\n */\nexport function buildLinkedInnerWhere(definition, state) {\n const record = buildPropertyKeyClause(definition.linkedPropertyKey, state.linkedFilterState);\n if (record === undefined) {\n return undefined;\n }\n return record;\n}\n\n/**\n * Returns the active LINKED_PROPERTY filters as `LinkedFilter<Q>` records.\n */\nexport function getActiveLinkedFilters(definitions, filterStates, excludeFilterKey) {\n if (!definitions || definitions.length === 0) {\n return [];\n }\n const result = [];\n for (const definition of definitions) {\n if (definition.type !== \"LINKED_PROPERTY\") {\n continue;\n }\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n if (!state || state.type !== \"linkedProperty\") {\n continue;\n }\n if (definition.reverseLinkName == null) {\n continue;\n }\n const innerWhere = buildLinkedInnerWhere(definition, state);\n if (innerWhere === undefined) {\n continue;\n }\n result.push({\n linkName: definition.linkName,\n reverseLinkName: definition.reverseLinkName,\n innerWhere\n });\n }\n return result;\n}\n\n/**\n * Splits values into real values and the NO_VALUE sentinel, returning $isNull\n * for the sentinel. A literal empty string `\"\"` is a real value and matches\n * via equality (`{ key: \"\" }`), not `$isNull`.\n */\nfunction buildValueOrNullFilter(values) {\n if (values.length === 0) {\n return undefined;\n }\n const realValues = values.filter(v => v !== NO_VALUE);\n const hasNoValue = realValues.length < values.length;\n const valueClause = realValues.length === 0 ? undefined : realValues.length === 1 ? realValues[0] : {\n $in: realValues\n };\n if (!hasNoValue) {\n return valueClause;\n }\n if (valueClause === undefined) {\n return {\n $isNull: true\n };\n }\n return {\n __compound: true,\n conditions: [valueClause],\n includeNull: true\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 deepEqual from \"fast-deep-equal\";\nimport { useRef } from \"react\";\n\n/**\n * Returns a Map whose per-key values keep their previous reference when their\n * contents are structurally equal to the prior frame. Lets memoized children\n * keyed off individual entries skip work when only sibling entries changed.\n */\nexport function useStableMapEntries(input) {\n const ref = useRef(new Map());\n const next = new Map();\n for (const [key, value] of input) {\n const prev = ref.current.get(key);\n next.set(key, prev !== undefined && deepEqual(prev, value) ? prev : value);\n }\n ref.current = next;\n return next;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { isEqual } from \"lodash-es\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { buildWhereClause, getActiveLinkedFilters } from \"../utils/filterStateToWhereClause.js\";\nimport { filterHasActiveState } from \"../utils/filterValues.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\nimport { narrowObjectSet } from \"../utils/narrowObjectSet.js\";\nimport { useStableMapEntries } from \"./useStableMapEntries.js\";\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 \"STATIC_VALUES\":\n {\n const state = definition.filterState;\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 objectSet,\n filterDefinitions,\n onFilterStateChanged,\n onFilterClauseChanged,\n onEffectiveObjectSet,\n initialFilterStates\n } = props;\n const {\n metadata\n } = useOsdkMetadata(objectType);\n const onFilterClauseChangedRef = useRef(onFilterClauseChanged);\n onFilterClauseChangedRef.current = onFilterClauseChanged;\n const onEffectiveObjectSetRef = useRef(onEffectiveObjectSet);\n onEffectiveObjectSetRef.current = onEffectiveObjectSet;\n const filterDefinitionsRef = useRef(filterDefinitions);\n filterDefinitionsRef.current = filterDefinitions;\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\n // Captured once on first render to provide a stable baseline for the reset\n // button's enabled state. `useState`'s lazy initializer pins the value for\n // the lifetime of the component (unlike `useMemo`, which React may discard).\n const [initialFilterStatesSnapshot] = useState(() => {\n const snapshot = buildInitialStates(filterDefinitions);\n if (initialFilterStates) {\n for (const [key, state] of initialFilterStates) {\n snapshot.set(key, state);\n }\n }\n return snapshot;\n });\n const [filterStates, setFilterStates] = useState(() => new Map(initialFilterStatesSnapshot));\n const setFilterState = useCallback((filterKey, state) => {\n setFilterStates(prev => {\n const next = new Map(prev);\n next.set(filterKey, state);\n return next;\n });\n const definition = filterDefinitionsRef.current?.find(d => getFilterKey(d) === filterKey);\n if (definition) {\n onFilterStateChanged?.(definition, state);\n }\n }, [onFilterStateChanged]);\n const clearFilterState = useCallback(filterKey => {\n setFilterStates(prev => {\n const next = new Map(prev);\n next.delete(filterKey);\n return next;\n });\n }, []);\n const reset = useCallback(() => {\n setFilterStates(new Map(initialFilterStatesSnapshot));\n }, [initialFilterStatesSnapshot]);\n const whereClause = useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);\n const linkedFilters = useMemo(() => getActiveLinkedFilters(filterDefinitions, filterStates), [filterDefinitions, filterStates]);\n const effectiveObjectSet = useMemo(() => objectSet == null ? undefined : narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);\n useEffect(() => {\n onFilterClauseChangedRef.current?.(whereClause);\n }, [whereClause]);\n useEffect(() => {\n if (effectiveObjectSet == null) {\n return;\n }\n onEffectiveObjectSetRef.current?.(effectiveObjectSet);\n }, [effectiveObjectSet]);\n const perFilterWhereClauses = useStableMapEntries(useMemo(() => {\n const map = new Map();\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 perFilterLinkedFilters = useStableMapEntries(useMemo(() => {\n const map = new Map();\n for (const definition of filterDefinitions ?? []) {\n const key = getFilterKey(definition);\n map.set(key, getActiveLinkedFilters(filterDefinitions, filterStates, key));\n }\n return map;\n }, [filterDefinitions, filterStates]));\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 hasChangesFromInitial = useMemo(() => !isEqual(filterStates, initialFilterStatesSnapshot), [filterStates, initialFilterStatesSnapshot]);\n return useMemo(() => ({\n filterStates,\n setFilterState,\n clearFilterState,\n whereClause,\n linkedFilters,\n perFilterWhereClauses,\n perFilterLinkedFilters,\n activeFilterCount,\n hasChangesFromInitial,\n reset\n }), [filterStates, setFilterState, clearFilterState, whereClause, linkedFilters, perFilterWhereClauses, perFilterLinkedFilters, activeFilterCount, hasChangesFromInitial, 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, useEffect, useMemo, useRef, useState } from \"react\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\nexport function useFilterVisibility(filterDefinitions, onVisibilityChange) {\n const allKeys = useMemo(() => filterDefinitions?.map(getFilterKey) ?? [], [filterDefinitions]);\n const defaultVisibleKeyOrder = useMemo(() => filterDefinitions?.filter(def => def.isVisible !== false).map(getFilterKey) ?? [], [filterDefinitions]);\n const [visibleKeyOrder, setVisibleKeyOrder] = useState(() => defaultVisibleKeyOrder);\n\n // Sync state when filterDefinitions changes\n useEffect(() => {\n setVisibleKeyOrder(defaultVisibleKeyOrder);\n }, [defaultVisibleKeyOrder]);\n\n // Keep a ref to onVisibilityChange so callbacks don't need it as a dependency\n const onVisibilityChangeRef = useRef(onVisibilityChange);\n onVisibilityChangeRef.current = onVisibilityChange;\n const fireVisibilityChange = useCallback(nextVisibleKeyOrder => {\n if (!onVisibilityChangeRef.current) return;\n const visibleSet = new Set(nextVisibleKeyOrder);\n const hiddenKeys = allKeys.filter(k => !visibleSet.has(k));\n onVisibilityChangeRef.current(nextVisibleKeyOrder, hiddenKeys);\n }, [allKeys]);\n const defByKey = useMemo(() => {\n const map = new Map();\n if (filterDefinitions == null) return map;\n for (const def of filterDefinitions) {\n map.set(getFilterKey(def), def);\n }\n return map;\n }, [filterDefinitions]);\n const {\n visibleDefinitions,\n hiddenDefinitions\n } = useMemo(() => {\n if (filterDefinitions == null) {\n return {\n visibleDefinitions: [],\n hiddenDefinitions: []\n };\n }\n const visibleSet = new Set(visibleKeyOrder);\n const visible = [];\n const hidden = [];\n for (const key of visibleKeyOrder) {\n const def = defByKey.get(key);\n if (def != null) {\n visible.push(def);\n }\n }\n for (const key of allKeys) {\n if (!visibleSet.has(key)) {\n const def = defByKey.get(key);\n if (def != null) {\n hidden.push(def);\n }\n }\n }\n return {\n visibleDefinitions: visible,\n hiddenDefinitions: hidden\n };\n }, [filterDefinitions, defByKey, visibleKeyOrder, allKeys]);\n const showFilter = useCallback(key => {\n setVisibleKeyOrder(prev => {\n if (prev.includes(key)) return prev;\n const next = [...prev, key];\n fireVisibilityChange(next);\n return next;\n });\n }, [fireVisibilityChange]);\n const hideFilter = useCallback(key => {\n setVisibleKeyOrder(prev => {\n const next = prev.filter(k => k !== key);\n fireVisibilityChange(next);\n return next;\n });\n }, [fireVisibilityChange]);\n const reorderVisible = useCallback(keys => {\n setVisibleKeyOrder(prev => {\n if (keys.length === prev.length && keys.every((k, i) => k === prev[i])) {\n return prev;\n }\n fireVisibilityChange(keys);\n return keys;\n });\n }, [fireVisibilityChange]);\n const resetVisibility = useCallback(() => {\n setVisibleKeyOrder(prev => {\n if (defaultVisibleKeyOrder.length === prev.length && defaultVisibleKeyOrder.every((k, i) => k === prev[i])) {\n return prev;\n }\n fireVisibilityChange(defaultVisibleKeyOrder);\n return defaultVisibleKeyOrder;\n });\n }, [defaultVisibleKeyOrder, fireVisibilityChange]);\n const hasVisibilityChanges = useMemo(() => {\n if (visibleKeyOrder.length !== defaultVisibleKeyOrder.length) {\n return true;\n }\n return !visibleKeyOrder.every((key, i) => key === defaultVisibleKeyOrder[i]);\n }, [visibleKeyOrder, defaultVisibleKeyOrder]);\n return {\n visibleDefinitions,\n hiddenDefinitions,\n showFilter,\n hideFilter,\n reorderVisible,\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 case \"STATIC_VALUES\":\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 { EMPTY_LINKED_FILTERS } from \"./types/LinkedFilterTypes.js\";\nimport { getFilterKey } from \"./utils/getFilterKey.js\";\nimport { getFilterLabel } from \"./utils/getFilterLabel.js\";\nconst EMPTY_WHERE = {};\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 showFilteredOutValues = false,\n className,\n enableSorting,\n onFilterAdded,\n onFilterRemoved,\n onFilterVisibilityChange,\n renderAddFilterButton\n } = props;\n const {\n filterStates,\n setFilterState,\n clearFilterState,\n perFilterWhereClauses,\n perFilterLinkedFilters,\n activeFilterCount,\n hasChangesFromInitial,\n reset\n } = useFilterListState(props);\n const uncontrolledAddFilterMode = addFilterMode === \"uncontrolled\";\n const handleVisibilityChange = useCallback((visibleKeys, hiddenKeys) => {\n if (!onFilterVisibilityChange) {\n return;\n }\n const states = [...visibleKeys.map(key => ({\n filterKey: key,\n isVisible: true\n })), ...hiddenKeys.map(key => ({\n filterKey: key,\n isVisible: false\n }))];\n onFilterVisibilityChange(states);\n }, [onFilterVisibilityChange]);\n const {\n visibleDefinitions: managedVisibleDefinitions,\n hiddenDefinitions: managedHiddenDefinitions,\n showFilter,\n hideFilter,\n reorderVisible,\n hasVisibilityChanges,\n resetVisibility\n } = useFilterVisibility(filterDefinitions, uncontrolledAddFilterMode ? handleVisibilityChange : undefined);\n const canReset = hasChangesFromInitial || hasVisibilityChanges;\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 handleOrderChange = useCallback(orderedKeys => {\n reorderVisible(orderedKeys);\n }, [reorderVisible]);\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) ?? EMPTY_WHERE,\n linkedFilters: perFilterLinkedFilters.get(filterKey) ?? EMPTY_LINKED_FILTERS,\n showFilteredOutValues: showFilteredOutValues,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n }), [objectType, objectSet, perFilterWhereClauses, perFilterLinkedFilters, showFilteredOutValues]);\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 canReset: canReset,\n enableSorting: enableSorting,\n onFilterRemoved: effectiveOnFilterRemoved,\n onOrderChange: handleOrderChange,\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 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.fieldGroup {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-filter-popover-gap);\n flex-shrink: 0;\n position: relative;\n}\n\n.fieldGroupTop {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--osdk-filter-popover-stack-gap);\n}\n\n.label {\n font-family: var(--osdk-filter-popover-label-font-family);\n font-size: var(--osdk-filter-popover-label-font-size);\n color: var(--osdk-filter-popover-label-color);\n white-space: nowrap;\n}\n\n.trigger {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--osdk-filter-popover-trigger-width);\n min-height: var(--osdk-filter-popover-trigger-min-height);\n padding: var(--osdk-filter-popover-trigger-padding);\n border-radius: var(--osdk-filter-popover-trigger-border-radius);\n border: var(--osdk-filter-popover-trigger-border-width) solid\n var(--osdk-filter-popover-trigger-border-color);\n background: var(--osdk-filter-popover-trigger-bg);\n color: var(--osdk-filter-popover-trigger-color);\n font-family: var(--osdk-filter-popover-trigger-font-family);\n font-size: var(--osdk-filter-popover-trigger-font-size);\n cursor: pointer;\n transition: border-color var(--osdk-filter-popover-trigger-transition);\n text-align: left;\n}\n\n.trigger:hover {\n border-color: var(--osdk-filter-popover-trigger-border-color-hover);\n}\n\n.trigger[data-active=\"true\"] {\n border-color: var(--osdk-filter-popover-trigger-border-color-active);\n}\n\n.trigger:focus-visible {\n outline: var(--osdk-filter-popover-trigger-focus-outline-width) solid\n var(--osdk-filter-popover-trigger-focus-outline-color);\n outline-offset: var(--osdk-filter-popover-trigger-focus-outline-offset);\n}\n\n.summary {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n flex: 1;\n}\n\n.placeholder {\n color: var(--osdk-filter-popover-placeholder-color);\n}\n\n.removeButton {\n position: absolute;\n top: 50%;\n right: var(--osdk-filter-popover-remove-right);\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-filter-popover-remove-size);\n height: var(--osdk-filter-popover-remove-size);\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-popover-remove-color);\n border-radius: var(--osdk-filter-popover-remove-border-radius);\n opacity: 0;\n transition: opacity var(--osdk-filter-popover-remove-transition);\n pointer-events: none;\n}\n\n.fieldGroupTop .removeButton {\n top: auto;\n bottom: calc(\n (\n var(--osdk-filter-popover-trigger-min-height)\n - var(--osdk-filter-popover-remove-size)\n ) / 2\n );\n transform: none;\n}\n\n.fieldGroup:hover .removeButton,\n.fieldGroup:focus-within .removeButton {\n opacity: 1;\n pointer-events: auto;\n}\n\n.removeButton:hover {\n color: var(--osdk-filter-popover-remove-color-hover);\n background: var(--osdk-filter-popover-remove-bg-hover);\n}\n\n.popup {\n background: var(--osdk-filter-popover-popup-bg);\n border: var(--osdk-filter-popover-popup-border);\n border-radius: var(--osdk-filter-popover-popup-border-radius);\n box-shadow: var(--osdk-filter-popover-popup-shadow);\n padding: var(--osdk-filter-popover-popup-padding);\n min-width: var(--osdk-filter-popover-popup-min-width);\n max-width: var(--osdk-filter-popover-popup-max-width);\n z-index: var(--osdk-filter-popover-popup-z-index);\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 { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport { RemoveIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterPopover.module.css\";\n/** Labeled, popover-backed filter trigger. Pair with `FilterInput` for the popup body. */\nfunction FilterPopoverInner({\n label,\n summary,\n isActive,\n onRemove,\n children,\n className,\n placeholder = \"Any\",\n labelPlacement = \"inline\"\n}) {\n const [open, setOpen] = useState(false);\n const summaryHasValue = summary !== \"\";\n const handleRemoveClick = useCallback(e => {\n e.stopPropagation();\n onRemove?.();\n }, [onRemove]);\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: open,\n onOpenChange: setOpen\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.fieldGroup, labelPlacement === \"top\" && styles.fieldGroupTop, className)\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.label\n }, label), /*#__PURE__*/React.createElement(Popover.Trigger, {\n className: styles.trigger,\n \"data-active\": isActive ? \"true\" : undefined\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.summary, !summaryHasValue && styles.placeholder)\n }, summaryHasValue ? summary : placeholder)), onRemove && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: handleRemoveClick,\n className: styles.removeButton,\n \"aria-label\": `Remove ${label} filter`\n }, /*#__PURE__*/React.createElement(RemoveIcon, null))), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4,\n align: \"start\"\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n className: styles.popup\n }, children))));\n}\nexport const FilterPopover = /*#__PURE__*/memo(FilterPopoverInner);","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport { NO_VALUE } from \"./filterValues.js\";\n\n// Em-dash reads naturally as an unbounded range half (e.g. \"— – Jan 1\").\nconst NO_VALUE_PLACEHOLDER = \"—\";\n\n// Standalone SELECT triggers need the explicit phrase; a bare em-dash isn't discoverable.\nconst SELECT_NO_VALUE_LABEL = \"(No value)\";\n\n// Literal empty string is a real, selectable value distinct from \"No value\".\nconst SELECT_EMPTY_STRING_LABEL = \"(empty string)\";\nfunction summarizeSelectionValues(values, formatDate) {\n if (values.length === 0) {\n return \"\";\n }\n if (values.length > 1) {\n return `${values.length} selected`;\n }\n const v = values[0];\n if (v instanceof Date) {\n return formatDate(v);\n }\n if (v == null || v === NO_VALUE) {\n return SELECT_NO_VALUE_LABEL;\n }\n if (v === \"\") {\n return SELECT_EMPTY_STRING_LABEL;\n }\n return String(v);\n}\nfunction formatRange(min, max, format, loFallback, hiFallback) {\n return `${min != null ? format(min) : loFallback} – ${max != null ? format(max) : hiFallback}`;\n}\n\n/** Short summary of a filter's current value for rendering inside a `FilterPopover` trigger. */\nexport function summarizeFilterValue(definition, state) {\n if (state == null) {\n return \"\";\n }\n const formatDate = \"formatDate\" in definition && definition.formatDate ? definition.formatDate : formatDateForInput;\n switch (state.type) {\n case \"EXACT_MATCH\":\n return summarizeSelectionValues(state.values, formatDate);\n case \"SELECT\":\n return summarizeSelectionValues(state.selectedValues, formatDate);\n case \"CONTAINS_TEXT\":\n return state.value ?? \"\";\n case \"NUMBER_RANGE\":\n {\n const {\n minValue,\n maxValue,\n includeNull\n } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(minValue, maxValue, String, \"−∞\", \"∞\");\n }\n case \"DATE_RANGE\":\n {\n const {\n minValue,\n maxValue,\n includeNull\n } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(minValue, maxValue, formatDate, NO_VALUE_PLACEHOLDER, NO_VALUE_PLACEHOLDER);\n }\n case \"TIMELINE\":\n {\n const {\n startDate,\n endDate\n } = state;\n if (startDate == null && endDate == null) {\n return \"\";\n }\n return formatRange(startDate, endDate, formatDate, NO_VALUE_PLACEHOLDER, NO_VALUE_PLACEHOLDER);\n }\n case \"TOGGLE\":\n return state.enabled ? \"Enabled\" : \"\";\n case \"hasLink\":\n return state.hasLink ? \"Has link\" : \"\";\n case \"linkedProperty\":\n // Forwards the outer definition so options like formatDate flow into the\n // linked summary; assumes the linked property shares the outer property's\n // type (true for current consumers).\n return summarizeFilterValue(definition, state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm ?? \"\";\n case \"custom\":\n return \"Custom\";\n default:\n return assertUnreachable(state);\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 { BaseFilterList } from \"../../filter-list/base/BaseFilterList.js\";\nimport { FilterList as _FilterList } from \"../../filter-list/FilterList.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const FilterList = withOsdkMetrics(_FilterList, \"FilterList\");\nexport { deserializeFilterStates, serializeFilterStates } from \"../../filter-list/utils/filterStateSerialization.js\";\nexport { FilterPopover } from \"../../filter-list/base/FilterPopover.js\";\nexport { FilterInput } from \"../../filter-list/FilterInput.js\";\nexport { useFilterListState } from \"../../filter-list/hooks/useFilterListState.js\";\nexport { filterHasActiveState, NO_VALUE } from \"../../filter-list/utils/filterValues.js\";\nexport { getFilterKey } from \"../../filter-list/utils/getFilterKey.js\";\nexport { getFilterLabel } from \"../../filter-list/utils/getFilterLabel.js\";\nexport { summarizeFilterValue } from \"../../filter-list/utils/summarizeFilterValue.js\";\nexport { narrowObjectSet } from \"../../filter-list/utils/narrowObjectSet.js\";"]}
1
+ {"version":3,"sources":["../../src/filter-list/base/FilterIcons.tsx","../../src/filter-list/base/FilterList.module.css","../../src/filter-list/base/FilterListBoundaryContext.ts","../../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/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/filter-list/base/inputs/ToggleInput.module.css","../../src/filter-list/base/inputs/ToggleInput.tsx","../../src/filter-list/base/inputs/createDateHistogramBuckets.ts","../../src/filter-list/base/inputs/createHistogramBuckets.ts","../../src/filter-list/base/inputs/RangeInput.module.css","../../src/filter-list/base/inputs/HistogramTooltip.tsx","../../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/DateRangeHistogramInput.tsx","../../src/filter-list/base/inputs/LinkedPropertyInput.module.css","../../src/filter-list/base/inputs/formatCompactCount.ts","../../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/NoValueLabel.module.css","../../src/filter-list/base/inputs/EmptyStringLabel.tsx","../../src/filter-list/base/inputs/NoValueLabel.tsx","../../src/filter-list/base/inputs/OptionLabel.tsx","../../src/filter-list/base/inputs/ListogramInput.tsx","../../src/filter-list/base/inputs/MultiDateInput.module.css","../../src/filter-list/base/inputs/MultiDateInput.tsx","../../src/filter-list/base/inputs/comboboxFilter.ts","../../src/filter-list/base/inputs/MultiSelectDropdownLayout.tsx","../../src/filter-list/base/inputs/MultiSelectInput.module.css","../../src/filter-list/base/inputs/MultiSelectInlineLayout.tsx","../../src/filter-list/base/inputs/SelectInputSkeleton.tsx","../../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/hooks/useDualScopeAggregation.ts","../../src/filter-list/types/LinkedFilterTypes.ts","../../src/filter-list/utils/aggregationHelpers.ts","../../src/filter-list/utils/coerceFilterValue.ts","../../src/filter-list/utils/narrowObjectSet.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/hooks/useFilterPropertyAggregation.ts","../../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/inputs/StaticValuesFilterInput.tsx","../../src/filter-list/FilterInput.tsx","../../src/filter-list/utils/getFilterKey.ts","../../src/filter-list/utils/filterStateToWhereClause.ts","../../src/filter-list/hooks/useStableMapEntries.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/filter-list/base/FilterPopover.module.css","../../src/filter-list/base/FilterPopover.tsx","../../src/filter-list/utils/summarizeFilterValue.ts","../../src/public/experimental/filter-list.ts"],"names":["React","Cross","Search","More","ChevronDown","DoubleChevronLeft","DoubleChevronRight","Reset","Tick","Disable","useContext","Component","Button","useState","useCallback","useMemo","classnames","Input","useSortable","CSS","memo","getFilterKey","getFilterLabel","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","useSensors","arrayMove","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DragOverlay","SearchableMenu","useRef","debounce","useEffect","Switch","differenceInCalendarDays","startOfDay","addDays","format","startOfMonth","addMonths","startOfYear","addYears","useLayoutEffect","createPortal","_extends","useId","DatePicker","formatDateForInput","SkeletonBar","Checkbox","formatDateForDisplay","Combobox","TagItem","parseDateFromInput","useOsdkAggregation","assertUnreachable","Menu","value","includeNull","selectedDates","selectedValues","useOsdkMetadata","selectedDate","startDate","endDate","enabled","HasLinkInput","hasLink","KeywordSearchInput","key","deepEqual","isEqual","Popover","FilterList","withOsdkMetrics"],"mappings":"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","file":"chunk-3VL5YVFA.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 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 { createContext, useContext } from \"react\";\n\n/**\n * Provides the filter list container element so that dropdown positioners\n * inside the filter list can use it as their collision boundary, flipping\n * above the trigger when space below is insufficient within the sidebar.\n */\nconst FilterListBoundaryContext = /*#__PURE__*/createContext(null);\nexport const FilterListBoundaryProvider = FilterListBoundaryContext.Provider;\nexport function useFilterListBoundary() {\n return useContext(FilterListBoundaryContext) ?? 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\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/**\n * Unwraps a `linkedProperty` wrapper one level so callers can reason about the\n * underlying filter state directly (e.g. for header controls that should\n * follow the inner filter's capabilities).\n */\nexport function getEffectiveFilterState(state) {\n if (state?.type === \"linkedProperty\") {\n return state.linkedFilterState;\n }\n return state;\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/**\n * Sentinel identity for the \"No value\" bucket (null/undefined property values).\n *\n * `selectedValues` is a `string[]`, so the null/undefined state needs a string\n * stand-in that cannot collide with a real value. Put `NO_VALUE` in `selectedValues`\n * to filter for objects whose property `$isNull`.\n */\nexport const NO_VALUE = \"__NO_VALUE__\";\n\n/**\n * Returns true if the given value represents \"No value\" (a null/undefined\n * property value), i.e. the {@link NO_VALUE} sentinel (or a raw null/undefined\n * defensively).\n */\nexport function isNoValue(value) {\n return value == null || value === NO_VALUE;\n}\n\n/**\n * Merges every null/undefined aggregation row into a single \"No value\" bucket\n * (keyed by the {@link NO_VALUE} sentinel) placed at the position of the first\n * such row encountered. Backends sometimes return separate rows for null and\n * undefined; this collapses them so consumers (listogram, dropdown,\n * multi-select) all see one canonical \"No value\" row.\n *\n * Literal empty-string (`\"\"`) rows are real values and are left untouched as\n * their own distinct rows.\n */\nexport function dedupeEmptyAggregationRows(values) {\n const out = [];\n let noValueCount = 0;\n let firstNoValueIndex = -1;\n for (const v of values) {\n if (isNoValue(v.value)) {\n if (firstNoValueIndex === -1) {\n firstNoValueIndex = out.length;\n }\n noValueCount += v.count;\n } else {\n out.push(v);\n }\n }\n if (firstNoValueIndex >= 0 && noValueCount > 0) {\n out.splice(firstNoValueIndex, 0, {\n value: NO_VALUE,\n count: noValueCount,\n isNull: true\n });\n }\n return out;\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch(values, searchValue, getValue) {\n const trimmed = searchValue.trim();\n if (!trimmed) {\n return values;\n }\n const lowerSearch = trimmed.toLowerCase();\n return values.filter(v => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/**\n * Returns a \"cleared\" version of the given filter state, preserving the\n * discriminator and `isExcluding` flag so the UI doesn't snap between filter\n * modes when a user clicks \"Clear all selections\". Returns `undefined` if no\n * cleared form is meaningful for the state shape.\n */\nexport function clearFilterState(state) {\n if (!state) {\n return undefined;\n }\n switch (state.type) {\n case \"SELECT\":\n return {\n type: \"SELECT\",\n selectedValues: [],\n isExcluding: state.isExcluding\n };\n case \"EXACT_MATCH\":\n return {\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding: state.isExcluding\n };\n case \"CONTAINS_TEXT\":\n return {\n type: \"CONTAINS_TEXT\",\n value: undefined,\n isExcluding: state.isExcluding\n };\n case \"NUMBER_RANGE\":\n return {\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false\n };\n case \"DATE_RANGE\":\n return {\n type: \"DATE_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false\n };\n case \"TIMELINE\":\n return {\n type: \"TIMELINE\",\n startDate: undefined,\n endDate: undefined,\n isExcluding: state.isExcluding\n };\n case \"TOGGLE\":\n return {\n type: \"TOGGLE\",\n enabled: false\n };\n case \"hasLink\":\n return {\n type: \"hasLink\",\n hasLink: false\n };\n case \"keywordSearch\":\n return {\n type: \"keywordSearch\",\n searchTerm: \"\",\n operator: state.operator\n };\n case \"linkedProperty\":\n {\n const innerCleared = clearFilterState(state.linkedFilterState);\n if (!innerCleared) {\n return undefined;\n }\n return {\n type: \"linkedProperty\",\n linkedFilterState: innerCleared\n };\n }\n case \"custom\":\n return undefined;\n default:\n {\n const _exhaustive = state;\n return undefined;\n }\n }\n}\n\n/**\n * Returns the state with `isExcluding` flipped, preserving the discriminator\n * and unwrapping/re-wrapping any `linkedProperty` wrapper. Returns `undefined`\n * if the wrapped state is one that does not support excluding.\n */\nexport function toggleIsExcluding(state) {\n if (state.type === \"linkedProperty\") {\n const inner = state.linkedFilterState;\n return {\n type: \"linkedProperty\",\n linkedFilterState: {\n ...inner,\n isExcluding: !inner.isExcluding\n }\n };\n }\n if (!supportsExcluding(state)) {\n return undefined;\n }\n return {\n ...state,\n isExcluding: !state.isExcluding\n };\n}\n\n/**\n * Returns the number of values the user has actively selected for filters\n * whose UI surfaces a selected-of-total count (LISTOGRAM, SINGLE_SELECT,\n * MULTI_SELECT, TEXT_TAGS). Returns 0 for state shapes that don't have a\n * discrete list of selected values.\n */\nexport function getSelectedCount(state) {\n if (!state) {\n return 0;\n }\n if (state.type === \"EXACT_MATCH\") {\n return state.values.length;\n }\n if (state.type === \"SELECT\") {\n return state.selectedValues.length;\n }\n return 0;\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state) {\n if (!state) {\n return false;\n }\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 width: 100%;\n gap: var(--osdk-surface-spacing);\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.excludeRowLeading {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: calc(var(--osdk-surface-spacing) * 0.5);\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}\n\n.clearAllButton {\n flex: 0 0 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, useMemo, useState } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport { filterHasActiveState, getEffectiveFilterState, 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 FilterListItemInner({\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n searchField,\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 effectiveState = useMemo(() => getEffectiveFilterState(filterState), [filterState]);\n const showExcludeDropdown = supportsExcluding(effectiveState);\n const showSearch = supportsSearch(effectiveState) && searchField !== false;\n const hasOverflowActions = showExcludeDropdown;\n const hasSelection = filterHasActiveState(filterState);\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\": hasSelection || 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 searchField\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 searchField: searchField,\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 onOrderChange,\n renderInput,\n getFilterKey,\n getFilterLabel,\n enableSorting,\n className,\n style\n}) {\n const [activeId, setActiveId] = useState(null);\n const sortableIds = useMemo(() => enableSorting && filterDefinitions ? filterDefinitions.map(def => getFilterKey(def)) : [], [enableSorting, filterDefinitions, 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 && filterDefinitions ? filterDefinitions[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 const next = arrayMove(sortableIds, oldIndex, newIndex);\n onOrderChange?.(next);\n }\n }, [sortableIds, onOrderChange]);\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n const announcements = useMemo(() => {\n const labelForId = id => {\n const idx = sortableIds.indexOf(String(id));\n const def = idx >= 0 ? filterDefinitions?.[idx] : undefined;\n return def ? getFilterLabel(def) : \"filter\";\n };\n return {\n onDragStart({\n active\n }) {\n return `Picked up ${labelForId(active.id)} 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 label = labelForId(active.id);\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 return `Cancelled dragging ${labelForId(active.id)} filter`;\n }\n };\n }, [filterDefinitions, sortableIds, getFilterLabel]);\n const accessibility = useMemo(() => ({\n announcements\n }), [announcements]);\n if (!filterDefinitions || filterDefinitions.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 }, filterDefinitions.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 searchField: definition.searchField\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 searchField: activeDefinition.searchField,\n dragHandleAttributes: DRAG_OVERLAY_HANDLE_ATTRIBUTES\n }))));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.content, className),\n style: style\n }, filterDefinitions.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 searchField: definition.searchField\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 canReset,\n hasVisibilityChanges = false\n}) {\n const showCollapseButton = onCollapsedChange != null;\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n const resetDisabled = canReset != null ? !canReset : activeFilterCount === 0 && !hasVisibilityChanges;\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: resetDisabled\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, useState } from \"react\";\nimport { ExpandIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterList.module.css\";\nimport { FilterListBoundaryProvider } from \"./FilterListBoundaryContext.js\";\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 onOrderChange,\n showResetButton = false,\n showActiveFilterCount = false,\n canReset,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- consumed as a backwards-compatible fallback when canReset is not provided\n hasVisibilityChanges,\n enableSorting,\n className,\n renderAddFilterButton\n } = props;\n const [boundaryElement, setBoundaryElement] = useState(null);\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 ref: setBoundaryElement,\n className: classnames(styles.expandedContent, isCollapsed && styles.hiddenContent),\n \"data-active-count\": activeFilterCount\n }, /*#__PURE__*/React.createElement(FilterListBoundaryProvider, {\n value: boundaryElement\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 canReset: canReset,\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 onOrderChange: onOrderChange,\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 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\";\nimport { useFilterListBoundary } from \"./FilterListBoundaryContext.js\";\nfunction AddFilterPopoverInner({\n hiddenDefinitions,\n onShowFilter,\n renderTrigger\n}) {\n const collisionBoundary = useFilterListBoundary();\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 collisionBoundary: collisionBoundary\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.clearButton:not([data-active]) {\n visibility: hidden;\n pointer-events: none;\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 }), /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.clearButton,\n \"data-active\": !!localValue || undefined,\n onClick: handleClear,\n disabled: !localValue,\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.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\nimport { addDays, addMonths, addYears, differenceInCalendarDays, format, startOfDay, startOfMonth, startOfYear } from \"date-fns\";\nconst SHORT_MONTH_FORMATTER = new Intl.DateTimeFormat(undefined, {\n month: \"short\"\n});\n/**\n * Picks calendar-aligned histogram buckets for a date series.\n *\n * Granularity is chosen from the data span:\n * span ≤ 31 days → daily buckets, ticks \"1\" / \"2\" / ... / \"31\"\n * span ≤ 365 days → monthly buckets, ticks \"Jan\" / \"Feb\" / ... (locale-aware)\n * span > 365 days → yearly buckets, ticks \"2020\" / \"2021\" / ...\n *\n * Month ticks use `Intl.DateTimeFormat(..., { month: \"short\" })` so each\n * browser locale renders its native short-month names rather than getting\n * English-only \"Jan\"/\"Feb\". Day and year ticks remain locale-neutral integers.\n *\n * The subtitle reflects the surrounding calendar context — e.g. \"2020-05\"\n * for a daily histogram inside one month, \"2020\" for a monthly histogram\n * inside one year. When the data straddles multiple periods (e.g. monthly\n * histogram across multiple years) the subtitle is empty so the per-bucket\n * tick labels stay self-describing.\n *\n * @param formatDate Consumer-provided display formatter. Used for the\n * subtitle only.\n * @param formatTickLabel Optional override for per-bucket tick labels.\n * Receives the bucket's start `Date` and the chosen granularity.\n */\nexport function createDateHistogramBuckets(pairs, range, formatDate, formatTickLabel) {\n if (pairs.length === 0) {\n return {\n buckets: [],\n subtitle: \"\",\n granularity: \"day\"\n };\n }\n const span = Math.max(0, differenceInCalendarDays(range.max, range.min));\n const granularity = span <= 31 ? \"day\" : span <= 365 ? \"month\" : \"year\";\n const buckets = [];\n if (granularity === \"day\") {\n const start = startOfDay(range.min);\n const dayCount = span + 1;\n const counts = new Array(dayCount).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const idx = differenceInCalendarDays(value, start);\n if (idx >= 0 && idx < dayCount) {\n counts[idx] += count;\n }\n }\n for (let i = 0; i < dayCount; i++) {\n const min = addDays(start, i);\n const max = addDays(start, i + 1);\n buckets.push({\n min,\n max,\n count: counts[i],\n tickLabel: formatTickLabel != null ? formatTickLabel(min, \"day\") : format(min, \"d\")\n });\n }\n } else if (granularity === \"month\") {\n const start = startOfMonth(range.min);\n const end = startOfMonth(range.max);\n const months = [];\n let cursor = start;\n while (cursor.getTime() <= end.getTime()) {\n months.push(cursor);\n cursor = addMonths(cursor, 1);\n }\n const counts = new Array(months.length).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const monthStart = startOfMonth(value).getTime();\n const idx = months.findIndex(m => m.getTime() === monthStart);\n if (idx >= 0) {\n counts[idx] += count;\n }\n }\n for (let i = 0; i < months.length; i++) {\n const monthStart = months[i];\n buckets.push({\n min: monthStart,\n max: addMonths(monthStart, 1),\n count: counts[i],\n tickLabel: formatTickLabel != null ? formatTickLabel(monthStart, \"month\") : SHORT_MONTH_FORMATTER.format(monthStart)\n });\n }\n } else {\n const start = startOfYear(range.min);\n const end = startOfYear(range.max);\n const years = [];\n let cursor = start;\n while (cursor.getTime() <= end.getTime()) {\n years.push(cursor);\n cursor = addYears(cursor, 1);\n }\n const counts = new Array(years.length).fill(0);\n for (const {\n value,\n count\n } of pairs) {\n const yearStart = startOfYear(value).getTime();\n const idx = years.findIndex(y => y.getTime() === yearStart);\n if (idx >= 0) {\n counts[idx] += count;\n }\n }\n for (let i = 0; i < years.length; i++) {\n const yearStart = years[i];\n buckets.push({\n min: yearStart,\n max: addYears(yearStart, 1),\n count: counts[i],\n tickLabel: formatTickLabel != null ? formatTickLabel(yearStart, \"year\") : format(yearStart, \"yyyy\")\n });\n }\n }\n const subtitle = computeSubtitle(range.min, range.max, granularity, formatDate);\n return {\n buckets,\n subtitle,\n granularity\n };\n}\nfunction computeSubtitle(rangeMin, rangeMax, granularity, formatDate) {\n if (granularity === \"day\") {\n // Daily within one month: \"2020-05\". Across months: the year(s) when\n // the data still fits inside one calendar year.\n const sameMonth = rangeMin.getFullYear() === rangeMax.getFullYear() && rangeMin.getMonth() === rangeMax.getMonth();\n if (sameMonth) {\n return formatDate != null ? formatDate(rangeMin) : format(rangeMin, \"yyyy-MM\");\n }\n const sameYear = rangeMin.getFullYear() === rangeMax.getFullYear();\n if (sameYear) {\n return formatDate != null ? formatDate(rangeMin) : format(rangeMin, \"yyyy\");\n }\n return \"\";\n }\n if (granularity === \"month\") {\n const sameYear = rangeMin.getFullYear() === rangeMax.getFullYear();\n if (sameYear) {\n return formatDate != null ? formatDate(rangeMin) : format(rangeMin, \"yyyy\");\n }\n return \"\";\n }\n return \"\";\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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;\n/**\n * Returns \"nice\" tick positions covering the [0, max] range — values that\n * round to 1/2/5 × 10^n so the tick labels read cleanly. Used for\n * y-axis axis lines on the histogram.\n *\n * Edge cases:\n * - max ≤ 0 → returns [0]\n * - max ≤ 1/2/3 → returns [0, ..., max] without rounding to 5/10\n * - otherwise → between 3 and 6 ticks aligned on a nice step\n */\nexport function niceTicks(max, desiredCount = 5) {\n if (!Number.isFinite(max) || max <= 0) return [0];\n if (max <= 3) {\n const out = [];\n for (let i = 0; i <= Math.ceil(max); i++) out.push(i);\n return out;\n }\n const rough = max / desiredCount;\n const exponent = Math.floor(Math.log10(rough));\n const fraction = rough / Math.pow(10, exponent);\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n const step = niceFraction * Math.pow(10, exponent);\n const ticks = [];\n for (let v = 0; v <= max + step / 2; v += step) {\n ticks.push(Math.round(v / step) * step);\n }\n return ticks;\n}\nexport function createHistogramBuckets(pairs, range, toNumber, fromNumber) {\n if (pairs.length === 0) {\n return [];\n }\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.histogramWrapper {\n position: relative;\n width: 100%;\n}\n\n.histogramSvg {\n display: block;\n width: 100%;\n aspect-ratio: 400 / 180;\n overflow: visible;\n}\n\n.histogramSvg[data-click-to-filter=\"true\"] {\n cursor: pointer;\n}\n\n.clearButton {\n align-self: flex-end;\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-label-font-size);\n color: var(--osdk-intent-primary-rest);\n background: transparent;\n border: none;\n padding: calc(var(--osdk-surface-spacing) * 0.5)\n var(--osdk-surface-spacing);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background: var(--osdk-filter-range-clear-button-bg-hover);\n }\n}\n\n.clearButton:not([data-active]) {\n visibility: hidden;\n pointer-events: none;\n}\n\n.tooltip {\n position: fixed;\n transform: translateX(-50%);\n display: inline-block;\n background: var(--osdk-typography-color-default-rest);\n color: var(--osdk-background-primary);\n padding: calc(var(--osdk-surface-spacing) * 0.5)\n var(--osdk-surface-spacing);\n border-radius: var(--osdk-surface-border-radius);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-typography-size-body-small);\n white-space: nowrap;\n pointer-events: none;\n box-shadow: var(--osdk-surface-shadow-2);\n z-index: var(--osdk-surface-z-index-3, 9999);\n}\n\n.tooltip[data-state=\"hidden\"] {\n visibility: hidden;\n}\n\n/* Empty rules — exist purely so postcss-modules emits matching hashed\n * class names for the SVG layer groups. The groups themselves don't need\n * their own visual style; the children (.axisLine / .countLabel / etc.)\n * carry the actual styling. */\n.axisLines,\n.bars,\n.countLabels,\n.xTicks {}\n\n.selectionBand {\n fill: var(\n --osdk-filter-range-histogram-band-bg,\n color-mix(in srgb, var(--osdk-intent-primary-rest) 12%, transparent)\n );\n pointer-events: none;\n rx: var(--osdk-surface-border-radius);\n}\n\n.histogramBar {\n fill: var(--osdk-filter-range-histogram-bar-color);\n transition: fill var(--osdk-filter-range-histogram-bar-transition);\n}\n\n.histogramBar[data-in-range=\"true\"] {\n fill: var(--osdk-filter-range-histogram-bar-active-color);\n}\n\n.histogramBar[data-click-to-filter=\"true\"] {\n cursor: pointer;\n}\n\n.histogramBar[data-click-to-filter=\"true\"]:hover {\n fill: var(--osdk-filter-range-histogram-bar-active-color);\n}\n\n.axisLine {\n stroke: var(--osdk-filter-range-histogram-axis-line-color);\n stroke-width: 1;\n stroke-dasharray: 2 2;\n}\n\n.yAxisLabel,\n.xTickLabel {\n fill: var(--osdk-filter-range-histogram-axis-color);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-histogram-axis-font-size);\n}\n\n.countLabel {\n fill: var(--osdk-filter-range-histogram-label-color);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-histogram-label-font-size);\n}\n\n.countLabel[data-inside-bar=\"true\"] {\n fill: var(\n --osdk-filter-range-histogram-label-color-inside,\n var(--osdk-background-primary)\n );\n}\n\n.subtitle {\n fill: var(--osdk-filter-range-histogram-subtitle-color);\n font-family: var(--osdk-filter-range-label-font-family);\n font-size: var(--osdk-filter-range-histogram-subtitle-font-size);\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 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-color: transparent;\n color: var(--osdk-filter-range-separator-color);\n}\n\n@media (prefers-reduced-motion: reduce) {\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\nimport React, { memo, useLayoutEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./RangeInput.module.css\";\nconst GAP_PX = 6;\nfunction HistogramTooltipInner({\n text,\n cx,\n barTop,\n svgWidth,\n svgHeight,\n svgElement\n}) {\n const tooltipRef = useRef(null);\n const [position, setPosition] = useState(null);\n\n // Portal-positioned tooltip: needs the SVG's viewport rect plus the\n // rendered tooltip's height to flip above/below the bar without\n // overflowing the page. Both are post-render measurements, so this is\n // the canonical `useLayoutEffect` + `getBoundingClientRect` pattern.\n // Approved exception to the project-wide \"no useEffect\" guidance.\n useLayoutEffect(() => {\n if (svgElement == null) {\n setPosition(null);\n return;\n }\n const rect = svgElement.getBoundingClientRect();\n const scaleX = rect.width / svgWidth;\n const scaleY = rect.height / svgHeight;\n const anchorX = rect.left + cx * scaleX;\n const barTopPx = rect.top + barTop * scaleY;\n const tooltipHeight = tooltipRef.current?.offsetHeight ?? 0;\n const aboveTop = barTopPx - GAP_PX - tooltipHeight;\n const top = aboveTop < 0 ? barTopPx + GAP_PX : aboveTop;\n setPosition({\n left: anchorX,\n top\n });\n }, [svgElement, cx, barTop, svgWidth, svgHeight, text]);\n if (typeof document === \"undefined\") {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(\"div\", {\n ref: tooltipRef,\n className: styles.tooltip,\n \"data-state\": position == null ? \"hidden\" : \"visible\",\n style: position == null ? {\n left: 0,\n top: 0\n } : {\n left: position.left,\n top: position.top\n }\n }, text), document.body);\n}\nexport const HistogramTooltip = /*#__PURE__*/memo(HistogramTooltipInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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.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.emptyMessage {\n color: var(--osdk-filter-message-color-muted);\n}\n\n.errorMessage {\n color: var(--osdk-filter-message-color-danger);\n}\n\n.srOnly {\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-width: 0;\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 { Button } from \"@base-ui/react/button\";\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 { DatePicker } from \"../../../shared/calendar/index.js\";\nimport { createHistogramBuckets, getMaxBucketCount, niceTicks } from \"./createHistogramBuckets.js\";\nimport { HistogramTooltip } from \"./HistogramTooltip.js\";\nimport styles from \"./RangeInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\nconst DEBOUNCE_MS = 300;\n\n/** SVG viewBox. The bars/axisLines stretch with the container; text font\n * size is in viewBox units so it stays readable across container widths. */\nconst SVG_W = 400;\nconst SVG_H = 180;\nconst PAD_LEFT = 30;\nconst PAD_RIGHT = 10;\nconst PAD_TOP = 20;\nconst PAD_BOTTOM = 48;\nconst PLOT_W = SVG_W - PAD_LEFT - PAD_RIGHT;\nconst PLOT_H = SVG_H - PAD_TOP - PAD_BOTTOM;\nconst BAR_GAP = 2;\n/** Must match --osdk-filter-range-histogram-label-font-size. */\nconst COUNT_LABEL_FONT_SIZE = 16;\n/** Must match --osdk-filter-range-histogram-axis-font-size (body-large = 16px). */\nconst X_TICK_FONT_SIZE = 16;\nconst X_TICK_LABEL_Y = PAD_TOP + PLOT_H + 22;\nfunction computeBarLayout(bucketCount) {\n if (bucketCount === 0) {\n return null;\n }\n const barW = (PLOT_W - BAR_GAP * (bucketCount - 1)) / bucketCount;\n return {\n barW,\n xLeft: i => PAD_LEFT + i * (barW + BAR_GAP),\n xCenter: i => PAD_LEFT + i * (barW + BAR_GAP) + barW / 2\n };\n}\n\n/** Round `rough` to the nearest 1/2/5 × 10^n — produces \"nice\" axis steps. */\nfunction niceStep(rough) {\n if (rough <= 0) {\n return 1;\n }\n const exponent = Math.floor(Math.log10(rough));\n const fraction = rough / Math.pow(10, exponent);\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * Math.pow(10, exponent);\n}\n\n/**\n * Format a numeric tick label with precision derived from the step size, so\n * adjacent ticks always render to distinct strings even on tightly-clustered\n * data (where compact notation with 1 decimal would round multiple ticks to\n * the same label).\n */\nfunction formatTickAdaptive(value, step) {\n const absValue = Math.abs(value);\n if (absValue < 10_000 && Number.isInteger(value) && Number.isInteger(step)) {\n return String(value);\n }\n if (absValue >= 1000) {\n const magnitudeExp = Math.floor(Math.log10(absValue) / 3) * 3;\n const magnitude = Math.pow(10, magnitudeExp);\n const compactStep = step / magnitude;\n if (compactStep >= 0.05) {\n const decimals = Math.max(0, Math.min(2, Math.ceil(-Math.log10(compactStep))));\n return value.toLocaleString(undefined, {\n notation: \"compact\",\n maximumFractionDigits: decimals,\n minimumFractionDigits: 0\n });\n }\n }\n return value.toLocaleString(undefined, {\n maximumFractionDigits: 0,\n useGrouping: true\n });\n}\nfunction RangeInputInner({\n valueCountPairs,\n isLoading,\n minValue,\n maxValue,\n onChange,\n showHistogram = true,\n className,\n style,\n config,\n histogramData,\n clickToFilter = false\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\n // Date branch handlers — only invoked when `config.inputType === \"date\"`,\n // so T is Date. Reusing the refs above keeps the callbacks identity-stable\n // across renders, so the cross-bound update of one boundary doesn't bust\n // the React.memo on the OTHER DatePicker.\n const handleDateMinChange = useCallback(next => {\n const dispatch = onChangeRef.current;\n dispatch(next ?? undefined, maxValueRef.current);\n }, []);\n const handleDateMaxChange = useCallback(next => {\n const dispatch = onChangeRef.current;\n dispatch(minValueRef.current, next ?? undefined);\n }, []);\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) {\n return {\n min: undefined,\n max: undefined\n };\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 (histogramData) {\n return histogramData.buckets;\n }\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 }, [histogramData, showHistogram, displayPairs, computedRange, config]);\n const subtitle = histogramData?.subtitle ?? \"\";\n const maxBucketCount = useMemo(() => getMaxBucketCount(buckets), [buckets]);\n const yTicks = useMemo(() => niceTicks(maxBucketCount), [maxBucketCount]);\n const yTopValue = yTicks[yTicks.length - 1] || maxBucketCount || 1;\n const barLayout = useMemo(() => computeBarLayout(buckets.length), [buckets.length]);\n const dataBounds = useMemo(() => {\n if (buckets.length === 0) {\n return null;\n }\n return {\n minN: config.toNumber(buckets[0].min),\n maxN: config.toNumber(buckets[buckets.length - 1].max)\n };\n }, [buckets, config]);\n\n // Date histograms ship per-bucket `tickLabel` (Jan, Feb, …); numeric\n // histograms don't. For the latter we compute \"nice\" tick values\n // *within* the data range so labels reflect the actual values rather\n // than offsets-from-zero.\n const isDateLike = buckets.length > 0 && buckets[0].tickLabel != null;\n const numericTicks = useMemo(() => {\n if (isDateLike || dataBounds == null) {\n return [];\n }\n const {\n minN,\n maxN\n } = dataBounds;\n if (maxN <= minN) {\n return [];\n }\n const step = niceStep((maxN - minN) / 8);\n const start = Math.ceil(minN / step) * step;\n const end = Math.floor(maxN / step) * step;\n const all = [];\n for (let v = start; v <= end + step / 2; v += step) {\n const rounded = Math.round(v / step) * step;\n all.push({\n value: rounded,\n label: formatTickAdaptive(rounded, step)\n });\n }\n if (all.length <= 2) {\n return all;\n }\n const maxLabelLen = Math.max(...all.map(t => t.label.length));\n const minSpacing = maxLabelLen * X_TICK_FONT_SIZE * 0.6 + 8;\n const fits = Math.max(2, Math.floor(PLOT_W / minSpacing) + 1);\n if (all.length <= fits) {\n return all;\n }\n const stride = Math.ceil((all.length - 1) / (fits - 1));\n const picked = [];\n for (let i = 0; i < all.length; i += stride) {\n picked.push(all[i]);\n }\n if (picked[picked.length - 1] !== all[all.length - 1]) {\n picked.push(all[all.length - 1]);\n }\n return picked;\n }, [dataBounds, isDateLike]);\n\n // Skip count labels when there are too many bars to fit them readably.\n // Threshold of 10 matches the PRD heuristic.\n const COUNT_LABEL_THRESHOLD = 10;\n const skipCountLabel = useCallback(i => {\n if (buckets.length <= COUNT_LABEL_THRESHOLD) {\n return false;\n }\n const stride = Math.ceil(buckets.length / COUNT_LABEL_THRESHOLD);\n return i % stride !== 0;\n }, [buckets.length]);\n\n // Drag range tracked in a ref so synchronous read/write across\n // pointerdown → pointermove → pointerup is reliable. A separate state\n // value mirrors the ref so the SVG re-renders to highlight the dragged\n // range while the user is dragging. Start coords are tracked separately\n // so a near-zero-movement pointerup gets treated as a click (which can\n // clear an in-band filter) instead of a single-bucket drag commit.\n const dragRangeRef = useRef(null);\n const dragStartCoordsRef = useRef(null);\n const [dragRange, setDragRange] = useState(null);\n const bucketsRef = useRef(buckets);\n bucketsRef.current = buckets;\n const configRef = useRef(config);\n configRef.current = config;\n\n // Bucket-index bounds [lo, hi] for the translucent selection band that sits\n // behind the bars. During a drag we use the live drag range; otherwise we\n // map the committed minValue/maxValue back to the buckets they cover.\n const selectionBandIndices = useMemo(() => {\n if (dragRange != null) {\n return {\n lo: Math.min(dragRange.start, dragRange.end),\n hi: Math.max(dragRange.start, dragRange.end)\n };\n }\n if (minValue === undefined || maxValue === undefined || buckets.length === 0) {\n return null;\n }\n const minN = config.toNumber(minValue);\n const maxN = config.toNumber(maxValue);\n let lo = -1;\n let hi = -1;\n // Buckets are half-open [min, max). Use strict inequality on the shared\n // endpoints so a bucket that ends exactly at the filter's minN (or starts\n // exactly at maxN) is NOT pulled into the band — otherwise the band over-\n // extends by one bucket on each side after commit.\n for (let i = 0; i < buckets.length; i++) {\n if (lo === -1 && config.toNumber(buckets[i].max) > minN) {\n lo = i;\n }\n if (config.toNumber(buckets[i].min) < maxN) {\n hi = i;\n }\n }\n if (lo === -1 || hi === -1 || lo > hi) {\n return null;\n }\n return {\n lo,\n hi\n };\n }, [dragRange, minValue, maxValue, buckets, config]);\n const commitDragRange = useCallback((start, end, treatAsClick) => {\n const currentBuckets = bucketsRef.current;\n const currentConfig = configRef.current;\n const lo = Math.min(start, end);\n const hi = Math.max(start, end);\n const minBucket = currentBuckets[lo];\n const maxBucket = currentBuckets[hi];\n if (minBucket == null || maxBucket == null) {\n return;\n }\n\n // A click (vs a drag) within the existing selection band clears the\n // filter — a stray click anywhere inside the highlighted area can be\n // undone without reaching for the inputs. A short drag inside one\n // bucket no longer triggers the clear path because the threshold\n // disambiguates click from micro-drag.\n const currentMin = minValueRef.current;\n const currentMax = maxValueRef.current;\n if (treatAsClick && start === end && currentMin !== undefined && currentMax !== undefined) {\n const minN = currentConfig.toNumber(currentMin);\n const maxN = currentConfig.toNumber(currentMax);\n const bucketMinN = currentConfig.toNumber(minBucket.min);\n const bucketMaxN = currentConfig.toNumber(minBucket.max);\n const inBand = minN <= bucketMaxN && maxN >= bucketMinN;\n if (inBand) {\n onChangeRef.current(undefined, undefined);\n return;\n }\n }\n onChangeRef.current(minBucket.min, maxBucket.max);\n }, []);\n\n // Distance (in client px) below which a pointerup is treated as a click\n // — see commitDragRange for the reason. 4px squared = 16.\n const DRAG_VS_CLICK_THRESHOLD_SQ = 16;\n const svgRef = useRef(null);\n const setSvgRef = useCallback(el => {\n svgRef.current = el;\n }, []);\n const [hoveredIndex, setHoveredIndex] = useState(null);\n const bucketIndexAtClient = useCallback((clientX, clientY) => {\n const svg = svgRef.current;\n const bucketCount = bucketsRef.current.length;\n if (!svg || bucketCount === 0) {\n return null;\n }\n const ctm = svg.getScreenCTM();\n if (!ctm) {\n return null;\n }\n const pt = svg.createSVGPoint();\n pt.x = clientX;\n pt.y = clientY;\n const local = pt.matrixTransform(ctm.inverse());\n const localX = local.x - PAD_LEFT;\n const slotW = (PLOT_W + BAR_GAP) / bucketCount;\n const barW = slotW - BAR_GAP;\n // Snap to the bar whose center is nearest, so a pointer that lands in\n // the inter-bar gap selects the visually-closer bar.\n const idx = Math.round((localX - barW / 2) / slotW);\n return Math.max(0, Math.min(bucketCount - 1, idx));\n }, []);\n const bucketIndexFromTarget = useCallback(target => {\n if (!(target instanceof Element)) {\n return null;\n }\n const dataIdx = target.getAttribute(\"data-bucket-index\");\n if (dataIdx == null) {\n return null;\n }\n const parsed = parseInt(dataIdx, 10);\n return Number.isNaN(parsed) ? null : parsed;\n }, []);\n const handlePlotPointerDown = useCallback(e => {\n if (!clickToFilter) {\n return;\n }\n // Prefer the bucket index stamped on the bar via `data-bucket-index`\n // for the common case (also avoids `getScreenCTM` coord math). Fall\n // back to client-coord math when the press lands on the empty plot\n // background between bars.\n const startIdx = bucketIndexFromTarget(e.target) ?? bucketIndexAtClient(e.clientX, e.clientY);\n if (startIdx == null) {\n return;\n }\n e.preventDefault();\n // setPointerCapture routes subsequent move/up/cancel events to the\n // SVG even when the pointer leaves it, so we don't need\n // document-level listeners — and pointercancel handles\n // release-outside-window cases that mouseup can't.\n e.currentTarget.setPointerCapture(e.pointerId);\n setHoveredIndex(null);\n dragStartCoordsRef.current = {\n x: e.clientX,\n y: e.clientY\n };\n dragRangeRef.current = {\n start: startIdx,\n end: startIdx\n };\n setDragRange({\n start: startIdx,\n end: startIdx\n });\n }, [clickToFilter, bucketIndexFromTarget, bucketIndexAtClient]);\n const handlePlotPointerMove = useCallback(e => {\n // Prefer the bucket-index attribute on the bar; fall back to client\n // coords for moves that land on the empty plot background between\n // bars (or that cross gaps during a drag).\n const idx = bucketIndexFromTarget(e.target) ?? bucketIndexAtClient(e.clientX, e.clientY);\n if (idx == null) {\n return;\n }\n if (dragRangeRef.current == null) {\n setHoveredIndex(idx);\n return;\n }\n const next = {\n ...dragRangeRef.current,\n end: idx\n };\n dragRangeRef.current = next;\n setDragRange(next);\n }, [bucketIndexFromTarget, bucketIndexAtClient]);\n const handlePlotPointerUp = useCallback(e => {\n const current = dragRangeRef.current;\n const startCoords = dragStartCoordsRef.current;\n dragRangeRef.current = null;\n dragStartCoordsRef.current = null;\n setDragRange(null);\n if (current == null || startCoords == null) {\n return;\n }\n const dx = e.clientX - startCoords.x;\n const dy = e.clientY - startCoords.y;\n const treatAsClick = dx * dx + dy * dy < DRAG_VS_CLICK_THRESHOLD_SQ;\n commitDragRange(current.start, current.end, treatAsClick);\n }, [commitDragRange]);\n const handlePlotPointerCancel = useCallback(() => {\n dragRangeRef.current = null;\n dragStartCoordsRef.current = null;\n setDragRange(null);\n }, []);\n const handlePlotPointerLeave = useCallback(() => {\n if (dragRangeRef.current == null) {\n setHoveredIndex(null);\n }\n }, []);\n const handleClearFilter = useCallback(() => {\n onChangeRef.current(undefined, undefined);\n }, []);\n const hasActiveFilter = minValue !== undefined || maxValue !== undefined;\n const handleMinChange = useCallback(next => {\n setLocalMin(next);\n debouncedMinChange(next);\n }, [debouncedMinChange]);\n const handleMaxChange = useCallback(next => {\n setLocalMax(next);\n debouncedMaxChange(next);\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\"), /*#__PURE__*/React.createElement(Button, {\n className: styles.clearButton,\n \"data-active\": hasActiveFilter || undefined,\n onClick: handleClearFilter,\n disabled: !hasActiveFilter\n }, \"Clear\"), showHistogram && buckets.length > 0 && barLayout != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.histogramWrapper\n }, /*#__PURE__*/React.createElement(\"svg\", {\n ref: setSvgRef,\n className: styles.histogramSvg,\n \"data-click-to-filter\": clickToFilter || undefined,\n viewBox: `0 0 ${SVG_W} ${SVG_H}`,\n preserveAspectRatio: \"xMidYMid meet\",\n role: \"img\",\n \"aria-label\": \"Histogram of value counts\",\n onPointerDown: clickToFilter ? handlePlotPointerDown : undefined,\n onPointerUp: clickToFilter ? handlePlotPointerUp : undefined,\n onPointerCancel: clickToFilter ? handlePlotPointerCancel : undefined,\n onPointerMove: handlePlotPointerMove,\n onPointerLeave: handlePlotPointerLeave\n }, /*#__PURE__*/React.createElement(\"g\", {\n className: styles.axisLines\n }, yTicks.map(tickValue => {\n const yFrac = yTopValue > 0 ? tickValue / yTopValue : 0;\n const y = PAD_TOP + PLOT_H - yFrac * PLOT_H;\n return /*#__PURE__*/React.createElement(\"g\", {\n key: tickValue\n }, /*#__PURE__*/React.createElement(\"line\", {\n className: styles.axisLine,\n x1: PAD_LEFT,\n x2: SVG_W - PAD_RIGHT,\n y1: y,\n y2: y,\n vectorEffect: \"non-scaling-stroke\"\n }), /*#__PURE__*/React.createElement(\"text\", {\n className: styles.yAxisLabel,\n x: PAD_LEFT - 4,\n y: y + 3,\n textAnchor: \"end\"\n }, tickValue));\n })), selectionBandIndices != null && /*#__PURE__*/React.createElement(\"rect\", {\n className: styles.selectionBand,\n x: barLayout.xLeft(selectionBandIndices.lo),\n y: PAD_TOP,\n width: barLayout.xLeft(selectionBandIndices.hi) + barLayout.barW - barLayout.xLeft(selectionBandIndices.lo),\n height: PLOT_H,\n \"data-dragging\": dragRange != null || undefined\n }), /*#__PURE__*/React.createElement(\"g\", {\n className: styles.bars\n }, buckets.map((bucket, index) => {\n const x = barLayout.xLeft(index);\n const heightFrac = yTopValue > 0 ? bucket.count / yTopValue : 0;\n const barH = Math.max(0, heightFrac * PLOT_H);\n const y = PAD_TOP + PLOT_H - barH;\n // Buckets are half-open [min, max). Strict inequality on the\n // shared endpoints keeps adjacent buckets out of the active\n // styling when the filter starts/ends exactly on a boundary.\n const isInRange = (minValue === undefined || config.toNumber(bucket.max) > config.toNumber(minValue)) && (maxValue === undefined || config.toNumber(bucket.min) < config.toNumber(maxValue));\n const isInDragRange = dragRange != null && index >= Math.min(dragRange.start, dragRange.end) && index <= Math.max(dragRange.start, dragRange.end);\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: index,\n className: styles.histogramBar,\n \"data-in-range\": isInRange || isInDragRange,\n \"data-click-to-filter\": clickToFilter || undefined,\n \"data-dragging\": isInDragRange || undefined,\n x: x,\n y: y,\n width: Math.max(barLayout.barW, 0.5),\n height: barH,\n \"data-bucket-index\": index\n }, /*#__PURE__*/React.createElement(\"title\", null, config.formatTooltip(bucket.min, bucket.max, bucket.count)));\n })), /*#__PURE__*/React.createElement(\"g\", {\n className: styles.countLabels\n }, buckets.map((bucket, index) => {\n if (bucket.count === 0) {\n return null;\n }\n if (skipCountLabel(index)) {\n return null;\n }\n const cx = barLayout.xCenter(index);\n const heightFrac = yTopValue > 0 ? bucket.count / yTopValue : 0;\n const barH = heightFrac * PLOT_H;\n const barTop = PAD_TOP + PLOT_H - barH;\n // If the label would render above the SVG's content area,\n // tuck it inside the top of the bar instead so it doesn't\n // get clipped by the popover/container.\n const insideBar = barTop - COUNT_LABEL_FONT_SIZE - 2 < 0;\n const y = insideBar ? barTop + COUNT_LABEL_FONT_SIZE : barTop - 4;\n return /*#__PURE__*/React.createElement(\"text\", {\n key: index,\n className: styles.countLabel,\n \"data-inside-bar\": insideBar || undefined,\n x: cx,\n y: y,\n textAnchor: \"middle\"\n }, bucket.count.toLocaleString());\n })), /*#__PURE__*/React.createElement(\"g\", {\n className: styles.xTicks\n }, isDateLike ? buckets.map((bucket, index) => {\n if (bucket.tickLabel == null) {\n return null;\n }\n if (buckets.length > COUNT_LABEL_THRESHOLD && skipCountLabel(index)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"text\", {\n key: index,\n className: styles.xTickLabel,\n x: barLayout.xCenter(index),\n y: X_TICK_LABEL_Y,\n textAnchor: \"middle\"\n }, bucket.tickLabel);\n }) : dataBounds != null ? numericTicks.map(({\n value,\n label\n }, i) => {\n const xFrac = (value - dataBounds.minN) / (dataBounds.maxN - dataBounds.minN);\n const x = PAD_LEFT + xFrac * PLOT_W;\n return /*#__PURE__*/React.createElement(\"text\", {\n key: i,\n className: styles.xTickLabel,\n x: x,\n y: X_TICK_LABEL_Y,\n textAnchor: \"middle\"\n }, label);\n }) : null), subtitle && /*#__PURE__*/React.createElement(\"text\", {\n className: styles.subtitle,\n x: SVG_W / 2,\n y: SVG_H - 8,\n textAnchor: \"middle\"\n }, subtitle)), hoveredIndex != null && dragRange == null && buckets[hoveredIndex] != null && /*#__PURE__*/React.createElement(HistogramTooltip, {\n text: config.formatTooltip(buckets[hoveredIndex].min, buckets[hoveredIndex].max, buckets[hoveredIndex].count),\n cx: barLayout.xCenter(hoveredIndex),\n barTop: PAD_TOP + PLOT_H - (yTopValue > 0 ? buckets[hoveredIndex].count / yTopValue : 0) * PLOT_H,\n svgWidth: SVG_W,\n svgHeight: SVG_H,\n svgElement: svgRef.current\n })), config.inputType === \"date\" ? /*#__PURE__*/React.createElement(DateRangeInputs, {\n minValue: minValue,\n maxValue: maxValue,\n onMinChange: handleDateMinChange,\n onMaxChange: handleDateMaxChange,\n formatDate: config.formatDate,\n minLabel: config.minLabel,\n maxLabel: config.maxLabel\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(RangeBoundInput, {\n id: minInputId,\n value: localMin,\n onChange: handleMinChange,\n placeholder: dataRange.dataMin !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMin) : undefined,\n inputProps: config.inputProps,\n ariaLabel: config.minLabel\n })), /*#__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(RangeBoundInput, {\n id: maxInputId,\n value: localMax,\n onChange: handleMaxChange,\n placeholder: dataRange.dataMax !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMax) : undefined,\n inputProps: config.inputProps,\n ariaLabel: config.maxLabel\n }))));\n}\nfunction DateRangeInputs({\n minValue,\n maxValue,\n onMinChange,\n onMaxChange,\n formatDate,\n minLabel,\n maxLabel\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.rangeInputs\n }, /*#__PURE__*/React.createElement(DatePicker, {\n value: minValue ?? null,\n onChange: onMinChange,\n max: maxValue,\n placeholder: minLabel,\n ariaLabel: minLabel,\n formatDate: formatDate\n }), /*#__PURE__*/React.createElement(DatePicker, {\n value: maxValue ?? null,\n onChange: onMaxChange,\n min: minValue,\n placeholder: maxLabel,\n ariaLabel: maxLabel,\n formatDate: formatDate\n }));\n}\nfunction RangeBoundInput({\n id,\n value,\n onChange,\n placeholder,\n inputProps,\n ariaLabel\n}) {\n const handleNativeChange = useCallback(e => {\n onChange(e.target.value);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(Input, _extends({\n id: id,\n type: \"number\",\n className: styles.input,\n value: value,\n onChange: handleNativeChange,\n placeholder: placeholder,\n \"aria-label\": ariaLabel\n }, 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, useMemo } from \"react\";\nimport { formatDateForInput } from \"../../../shared/dateUtils.js\";\nimport { createDateHistogramBuckets } from \"./createDateHistogramBuckets.js\";\nimport { RangeInput } from \"./RangeInput.js\";\nconst defaultDateConfig = {\n inputType: \"date\",\n formatValue: formatDateForInput,\n parseValue: () => undefined,\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 DateRangeHistogramInputInner({\n formatDate,\n valueCountPairs,\n ...rest\n}) {\n const config = useMemo(() => formatDate != null ? {\n ...defaultDateConfig,\n formatDate,\n formatTooltip: (min, max, count) => `${formatDate(min)} - ${formatDate(max)}: ${count.toLocaleString()}`\n } : defaultDateConfig, [formatDate]);\n const histogramData = useMemo(() => {\n if (valueCountPairs.length === 0) {\n return undefined;\n }\n let minMs = Infinity;\n let maxMs = -Infinity;\n for (const {\n value\n } of valueCountPairs) {\n const t = value.getTime();\n if (t < minMs) {\n minMs = t;\n }\n if (t > maxMs) {\n maxMs = t;\n }\n }\n if (!Number.isFinite(minMs) || !Number.isFinite(maxMs)) {\n return undefined;\n }\n const {\n buckets,\n subtitle\n } = createDateHistogramBuckets(valueCountPairs, {\n min: new Date(minMs),\n max: new Date(maxMs)\n }, formatDate);\n return {\n buckets,\n subtitle\n };\n }, [valueCountPairs, formatDate]);\n return /*#__PURE__*/React.createElement(RangeInput, _extends({}, rest, {\n valueCountPairs: valueCountPairs,\n config: config,\n histogramData: histogramData\n }));\n}\nexport const DateRangeHistogramInput = /*#__PURE__*/memo(DateRangeHistogramInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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\nconst COMPACT_NUMBER = new Intl.NumberFormat(undefined, {\n notation: \"compact\"\n});\n\n/**\n * Compact locale-aware formatter for filter-list bucket and null-row counts\n * (e.g. \"1.2K\", \"1.5M\"). Call sites should pair this with\n * `title={n.toLocaleString()}` so the full count remains discoverable.\n */\nexport function formatCompactCount(n) {\n return COMPACT_NUMBER.format(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.noValueLabel {\n color: var(\n --osdk-filter-listogram-empty-label-color,\n var(--osdk-filter-no-value-color)\n );\n font-style: var(\n --osdk-filter-listogram-empty-label-font-style,\n var(--osdk-filter-no-value-font-style)\n );\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/* Empty/null bucket. Match NullValueWrapper's checkbox-to-label gap so an\n * inline \"No value\" row in a histogram is visually consistent with the\n * trailing \"No value\" row used by non-histogram filters. */\n.row[data-empty] {\n gap: var(--osdk-filter-null-label-gap);\n}\n\n/* Muted styling for filtered-out (count=0) rows. */\n.row[data-filtered-out] {\n --osdk-filter-listogram-count-color: var(\n --osdk-filter-filtered-out-item-color\n );\n --osdk-filter-listogram-label-color: var(\n --osdk-filter-filtered-out-item-color\n );\n\n color: var(--osdk-filter-filtered-out-item-color);\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\n.noValue {\n color: var(--osdk-filter-no-value-color);\n font-style: var(--osdk-filter-no-value-font-style);\n font-size: var(--osdk-filter-no-value-font-size);\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 classnames from \"classnames\";\nimport React, { memo } from \"react\";\n// Shares the muted/italic styling used by NoValueLabel so the two special\n// option rows (\"No value\" and \"(empty string)\") read as visually consistent.\nimport styles from \"./NoValueLabel.module.css\";\n/**\n * Canonical rendering for a literal empty-string (`\"\"`) filter value, shown as\n * \"(empty string)\". Distinct from {@link NoValueLabel}, which renders null/undefined\n * (\"No value\").\n */\nfunction EmptyStringLabelInner({\n className\n}) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.noValue, className)\n }, \"(empty string)\");\n}\nexport const EmptyStringLabel = /*#__PURE__*/memo(EmptyStringLabelInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 styles from \"./NoValueLabel.module.css\";\n/**\n * Canonical \"No value\" rendering for empty/null filter values.\n * Italic, muted span used in dropdowns, listogram buckets, and\n * NullValueWrapper.\n *\n * Style is configurable via the `--osdk-filter-no-value-color`,\n * `--osdk-filter-no-value-font-style`, and `--osdk-filter-no-value-font-size`\n * CSS variables.\n */\nfunction NoValueLabelInner({\n className\n}) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.noValue, className)\n }, \"No value\");\n}\nexport const NoValueLabel = /*#__PURE__*/memo(NoValueLabelInner);","/*\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 { isNoValue } from \"../../utils/filterValues.js\";\nimport { EmptyStringLabel } from \"./EmptyStringLabel.js\";\nimport { NoValueLabel } from \"./NoValueLabel.js\";\n\n/** Plain-text label for the screen-reader / aria-label equivalent of an option. */\nexport function getOptionLabelText(value) {\n if (isNoValue(value)) {\n return \"No value\";\n }\n if (value === \"\") {\n return \"(empty string)\";\n }\n return value;\n}\n/**\n * Canonical label for a single filter option, covering the three cases that\n * share an identity-string space:\n * - the {@link NO_VALUE} sentinel (null/undefined) renders \"No value\"\n * - a literal empty string `\"\"` renders \"(empty string)\"\n * - any other value renders via `renderValue` (or the raw value)\n *\n * `className` is forwarded to the placeholder labels so callers can theme the\n * special rows (e.g. the listogram's muted bucket styling).\n */\nfunction OptionLabelInner({\n value,\n renderValue,\n className\n}) {\n if (isNoValue(value)) {\n return /*#__PURE__*/React.createElement(NoValueLabel, {\n className: className\n });\n }\n if (value === \"\") {\n return /*#__PURE__*/React.createElement(EmptyStringLabel, {\n className: className\n });\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderValue ? renderValue(value) : value);\n}\nexport const OptionLabel = /*#__PURE__*/memo(OptionLabelInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, isNoValue } from \"../../utils/filterValues.js\";\nimport { formatCompactCount } from \"./formatCompactCount.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport { ListogramSkeleton } from \"./ListogramSkeleton.js\";\nimport { OptionLabel } from \"./OptionLabel.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 showCount = true,\n isExcluding,\n showFilteredOutValues = true,\n className,\n style,\n maxVisibleItems,\n searchQuery,\n renderValue\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 => {\n const rendered = renderValue?.(v.value);\n return typeof rendered === \"string\" ? rendered : v.value;\n });\n }\n return stableValues;\n }, [stableValues, searchQuery, renderValue]);\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 const isEmpty = isNoValue(value) || value === \"\";\n const isFilteredOut = showFilteredOutValues && count === 0 && !selectedSet.has(value);\n return /*#__PURE__*/React.createElement(Button, {\n key: value,\n className: styles.row,\n \"data-empty\": isEmpty || undefined,\n \"data-filtered-out\": isFilteredOut || undefined\n // eslint-disable-next-line react/jsx-no-bind\n ,\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 // eslint-disable-next-line react/jsx-no-bind\n ,\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 }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue,\n className: styles.noValueLabel\n })), showCount && displayMode !== \"minimal\" && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count,\n title: count.toLocaleString()\n }, formatCompactCount(count)), 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 // eslint-disable-next-line react/jsx-no-bind\n ,\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 classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { DatePicker } from \"../../../shared/calendar/index.js\";\nimport { formatDateForDisplay, formatDateForInput } 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 formatDate\n}) {\n const addDate = useCallback(date => {\n if (date == null) return;\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 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(DateTag, {\n key: date.toISOString(),\n date: date,\n formatDate: formatDate,\n onRemove: removeDate\n })), 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(DatePicker, {\n value: null,\n onChange: addDate,\n min: minDate,\n max: maxDate,\n ariaLabel: \"Add date\",\n modal: false,\n formatDate: formatDate\n })));\n}\nexport const MultiDateInput = /*#__PURE__*/memo(MultiDateInputInner);\nfunction DateTag({\n date,\n formatDate,\n onRemove\n}) {\n const handleRemove = useCallback(() => {\n onRemove(date);\n }, [onRemove, date]);\n const label = formatDate != null ? formatDate(date) : formatDateForDisplay(date);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.tag\n }, label, /*#__PURE__*/React.createElement(Button, {\n className: sharedStyles.tagRemove,\n onClick: handleRemove,\n \"aria-label\": `Remove ${label}`\n }, \"\\xD7\"));\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 * Build a Combobox `filter` function that searches by `renderValue(item)` when\n * it returns a string, and falls back to the raw item value when it returns\n * non-string JSX. Comparison is case-insensitive.\n */\nexport function createRenderValueFilter(renderValue) {\n return (itemValue, query) => {\n const rendered = renderValue(itemValue);\n const searchText = typeof rendered === \"string\" ? rendered : itemValue;\n return searchText.toLowerCase().includes(query.toLowerCase());\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 from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nexport function MultiSelectDropdownLayout({\n renderChips,\n renderItem,\n collisionBoundary\n}) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Combobox.Chips, null, /*#__PURE__*/React.createElement(Combobox.Value, null, renderChips)), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, {\n collisionBoundary: collisionBoundary\n }, /*#__PURE__*/React.createElement(Combobox.Popup, null, /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, null, renderItem)))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.multiSelect[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .multiSelect {\n transition: none;\n }\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/* Muted styling for filtered-out (count=0) entries. */\n.filteredOutItem {\n --osdk-filter-multiselect-count-color: var(\n --osdk-filter-filtered-out-item-color\n );\n\n color: var(--osdk-filter-filtered-out-item-color);\n}\n\n.inlineInput {\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 outline: none;\n width: 100%;\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.inlineEmpty {\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 color: var(--osdk-filter-message-color-muted);\n}\n\n.inlineList {\n display: flex;\n flex-direction: column;\n outline: none;\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 from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport styles from \"./MultiSelectInput.module.css\";\nexport function MultiSelectInlineLayout({\n placeholder,\n ariaLabel,\n renderItem\n}) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Combobox.Input, {\n className: styles.inlineInput,\n placeholder: placeholder,\n \"aria-label\": ariaLabel\n }), /*#__PURE__*/React.createElement(Combobox.Empty, {\n className: styles.inlineEmpty\n }, \"No matching options\"), /*#__PURE__*/React.createElement(Combobox.List, {\n className: styles.inlineList\n }, renderItem));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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\";\nexport function SelectInputSkeleton() {\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": \"select-input-skeleton\"\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n width: \"100%\",\n height: \"var(--osdk-filter-skeleton-input-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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport { useFilterListBoundary } from \"../FilterListBoundaryContext.js\";\nimport { createRenderValueFilter } from \"./comboboxFilter.js\";\nimport { MultiSelectDropdownLayout } from \"./MultiSelectDropdownLayout.js\";\nimport { MultiSelectInlineLayout } from \"./MultiSelectInlineLayout.js\";\nimport styles from \"./MultiSelectInput.module.css\";\nimport { getOptionLabelText, OptionLabel } from \"./OptionLabel.js\";\nimport { SelectInputSkeleton } from \"./SelectInputSkeleton.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\n\n/**\n * Layout for the value list:\n * - `\"dropdown\"` (default): chips inline + portaled Combobox popup. Use when\n * the input drives its own surface (e.g. standalone in a row).\n * - `\"inline\"`: search input + always-visible value list rendered in flow.\n * Use when wrapping the input in your own popover so the values are\n * immediately visible without an extra inner trigger.\n */\n\nfunction MultiSelectInputInner({\n values,\n isLoading,\n error,\n selectedValues,\n onChange,\n className,\n style,\n placeholder = \"Select values...\",\n showCounts = true,\n showFilteredOutValues = true,\n ariaLabel = \"Search values\",\n renderValue,\n layout = \"dropdown\"\n}) {\n const collisionBoundary = useFilterListBoundary();\n const handleValueChange = useCallback(newValues => {\n onChange(newValues ?? []);\n }, [onChange]);\n const stableValues = useStableData(values, isLoading);\n const items = useMemo(() => stableValues.map(({\n value\n }) => value), [stableValues]);\n const countByValue = useMemo(() => new Map(stableValues.map(({\n value,\n count\n }) => [value, count])), [stableValues]);\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n const comboboxFilter = useMemo(() => renderValue ? createRenderValueFilter(renderValue) : undefined, [renderValue]);\n const renderItem = useCallback(value => {\n const count = countByValue.get(value) ?? 0;\n const isFilteredOut = showFilteredOutValues && count === 0 && !selectedSet.has(value);\n return /*#__PURE__*/React.createElement(Combobox.Item, {\n key: value,\n value: value,\n className: isFilteredOut ? styles.filteredOutItem : undefined\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemLabel\n }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue\n })), showCounts && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", count.toLocaleString(), \")\"));\n }, [countByValue, selectedSet, showCounts, showFilteredOutValues, renderValue]);\n const renderChips = useCallback(selectedItems => /*#__PURE__*/React.createElement(React.Fragment, null, selectedItems.map(value => {\n return /*#__PURE__*/React.createElement(Combobox.Chip, {\n key: value,\n \"aria-label\": getOptionLabelText(value)\n }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue\n }), /*#__PURE__*/React.createElement(Combobox.ChipRemove, null));\n }), /*#__PURE__*/React.createElement(Combobox.Input, {\n placeholder: selectedItems.length > 0 ? \"\" : placeholder,\n \"aria-label\": ariaLabel\n })), [placeholder, ariaLabel, renderValue]);\n const isNoData = !error && stableValues.length === 0;\n const isReloading = isLoading && stableValues.length > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.multiSelect, className),\n style: style,\n \"data-loading\": isReloading\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.srOnly,\n role: \"status\"\n }, isLoading ? \"Loading options\" : \"\"), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), isNoData && isLoading && /*#__PURE__*/React.createElement(SelectInputSkeleton, null), isNoData && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No options available\"), stableValues.length > 0 && /*#__PURE__*/React.createElement(Combobox.Root, {\n multiple: true,\n value: selectedValues,\n onValueChange: handleValueChange,\n items: items,\n filter: comboboxFilter\n }, layout === \"inline\" ? /*#__PURE__*/React.createElement(MultiSelectInlineLayout, {\n placeholder: placeholder,\n ariaLabel: ariaLabel,\n renderItem: renderItem\n }) : /*#__PURE__*/React.createElement(MultiSelectDropdownLayout, {\n renderChips: renderChips,\n renderItem: renderItem,\n collisionBoundary: collisionBoundary\n })));\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.noValueLabel {\n color: var(\n --osdk-filter-null-label-color,\n var(--osdk-filter-no-value-color)\n );\n font-family: var(--osdk-filter-null-label-font-family, inherit);\n font-size: var(--osdk-filter-null-label-font-size, inherit);\n line-height: var(--osdk-filter-null-label-line-height, inherit);\n}\n\n.nullValueRow {\n display: flex;\n align-items: baseline;\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.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 { formatCompactCount } from \"./formatCompactCount.js\";\nimport { NoValueLabel } from \"./NoValueLabel.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(NoValueLabel, {\n className: styles.noValueLabel\n })), showNullCount && !error && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.count,\n title: nullCount.toLocaleString()\n }, formatCompactCount(nullCount))), 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 classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { DatePicker } from \"../../../shared/calendar/index.js\";\nimport styles from \"./SingleDateInput.module.css\";\nfunction SingleDateInputInner({\n selectedDate,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n placeholder,\n showClearButton = true,\n formatDate\n}) {\n const handleClear = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n const handleChange = useCallback(value => {\n onChange(value ?? 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(DatePicker, {\n value: selectedDate ?? null,\n onChange: handleChange,\n min: minDate,\n max: maxDate,\n placeholder: placeholder,\n ariaLabel: \"Select date\",\n modal: false,\n formatDate: formatDate\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 transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.singleSelect[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .singleSelect {\n transition: none;\n }\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 { useFilterListBoundary } from \"../FilterListBoundaryContext.js\";\nimport { createRenderValueFilter } from \"./comboboxFilter.js\";\nimport { OptionLabel } from \"./OptionLabel.js\";\nimport { SelectInputSkeleton } from \"./SelectInputSkeleton.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./SingleSelectInput.module.css\";\nimport { useStableData } from \"./useStableData.js\";\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 renderValue\n}) {\n const collisionBoundary = useFilterListBoundary();\n const handleValueChange = useCallback(value => {\n onChange(value ?? undefined);\n }, [onChange]);\n const stableValues = useStableData(values, isLoading);\n const items = useMemo(() => stableValues.map(({\n value\n }) => value), [stableValues]);\n const countByValue = useMemo(() => new Map(stableValues.map(({\n value,\n count\n }) => [value, count])), [stableValues]);\n const comboboxFilter = useMemo(() => renderValue ? createRenderValueFilter(renderValue) : undefined, [renderValue]);\n const renderItem = useCallback(value => {\n return /*#__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 }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value,\n renderValue: renderValue\n })), showCounts && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.itemCount\n }, \"(\", (countByValue.get(value) ?? 0).toLocaleString(), \")\"));\n }, [countByValue, showCounts, renderValue]);\n const isNoData = !error && stableValues.length === 0;\n const isReloading = isLoading && stableValues.length > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.singleSelect, className),\n style: style,\n \"data-loading\": isReloading\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.srOnly,\n role: \"status\"\n }, isLoading ? \"Loading options\" : \"\"), error && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.errorMessage\n }, \"Error loading options: \", error.message), isNoData && isLoading && /*#__PURE__*/React.createElement(SelectInputSkeleton, null), isNoData && !isLoading && /*#__PURE__*/React.createElement(\"div\", {\n className: sharedStyles.emptyMessage\n }, \"No options available\"), stableValues.length > 0 && /*#__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 filter: comboboxFilter\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, {\n collisionBoundary: collisionBoundary\n }, /*#__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 transition: opacity var(--osdk-filter-content-fade-duration);\n}\n\n.textTags[data-loading=\"true\"] {\n opacity: 0.5;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .textTags {\n transition: none;\n }\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 { useFilterListBoundary } from \"../FilterListBoundaryContext.js\";\nimport { getOptionLabelText, OptionLabel } from \"./OptionLabel.js\";\nimport { SelectInputSkeleton } from \"./SelectInputSkeleton.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 const displayLabel = getOptionLabelText(tag);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.tag\n }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: tag\n }), /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: sharedStyles.tagRemove,\n onClick: handleRemove,\n \"aria-label\": `Remove ${displayLabel}`\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 collisionBoundary = useFilterListBoundary();\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 && suggestions.length > 0\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: sharedStyles.srOnly,\n role: \"status\"\n }, isLoading ? \"Loading options\" : \"\"), 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, {\n collisionBoundary: collisionBoundary\n }, /*#__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 }, /*#__PURE__*/React.createElement(OptionLabel, {\n value: value\n }), \" (\", count.toLocaleString(), \")\")))))), !error && suggestions.length === 0 && isLoading && !!suggestionLimit && /*#__PURE__*/React.createElement(SelectInputSkeleton, null));\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 formatDate\n}) {\n const renderDate = (date, fallback) => date == null ? fallback : formatDate ? formatDate(date) : formatDateForDisplay(date, fallback);\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, renderDate(startDate, \"—\")), /*#__PURE__*/React.createElement(\"span\", null, \"to\"), /*#__PURE__*/React.createElement(\"span\", null, renderDate(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\";\nimport { useMemo } from \"react\";\nimport { dedupeEmptyAggregationRows, NO_VALUE } from \"../utils/filterValues.js\";\nconst EMPTY_ACTIVE_VALUES = [];\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(() => ({\n aggregate: aggregateOptions,\n where: options?.where,\n objectSet\n }), [aggregateOptions, options?.where, objectSet]);\n const {\n data: countData,\n isLoading,\n error\n } = useOsdkAggregation(objectType, aggregationArgs);\n const activeValues = options?.activeValues ?? EMPTY_ACTIVE_VALUES;\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\n // Build a set of values present in the aggregation so we can identify\n // which active selections need to be synthesized as filtered-out entries.\n const existingValues = new Set();\n for (const item of dataArray) {\n const raw = item.$group[propertyKey];\n existingValues.add(raw == null ? NO_VALUE : String(raw));\n }\n\n // Synthesize filtered-out entries for active selections absent from\n // aggregation results (e.g. saved filters with zero matching rows). They\n // use the same shape as real entries so the loop below handles isNull\n // uniformly.\n const filteredOutEntries = activeValues.flatMap(v => existingValues.has(v) ? [] : [{\n $group: {\n [propertyKey]: v\n },\n $count: 0\n }]);\n for (const item of [...dataArray, ...filteredOutEntries]) {\n const rawValue = item.$group[propertyKey];\n const count = item.$count ?? 0;\n if (rawValue == null) {\n values.push({\n value: NO_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 deduped = dedupeEmptyAggregationRows(values);\n const sortBy = options?.sortBy ?? \"count\";\n if (sortBy === \"count\") {\n deduped.sort((a, b) => b.count - a.count || a.value.localeCompare(b.value));\n } else {\n deduped.sort((a, b) => a.value.localeCompare(b.value));\n }\n if (options?.limit && deduped.length > options.limit) {\n return {\n data: deduped.slice(0, options.limit),\n maxCount\n };\n }\n return {\n data: deduped,\n maxCount\n };\n }, [countData, propertyKey, options?.limit, options?.sortBy, activeValues]);\n return {\n data: result.data,\n maxCount: result.maxCount,\n isLoading,\n error: error ?? null\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 { useMemo } from \"react\";\nimport { usePropertyAggregation } from \"./usePropertyAggregation.js\";\nconst EMPTY_VALUES = [];\n/**\n * Aggregates a property over `scopedObjectSet` (the narrowed scope) and pins\n * any values that exist in `emptySourceObjectSet` (the unfiltered base) but\n * are absent from the narrowed result to count=0, so facets can render\n * \"filtered-out\" rows alongside live counts.\n *\n * When `emptySourceObjectSet` is `undefined`, this falls through to a single\n * aggregation against `scopedObjectSet` — equivalent to `usePropertyAggregation`\n * with `selectedValues` as the only pinned values.\n *\n * @param objectType - Object type for the aggregation\n * @param propertyKey - Property to aggregate on\n * @param scopedObjectSet - Set the live counts are computed against (post-narrowing)\n * @param emptySourceObjectSet - Unfiltered base set whose values are pinned as\n * count=0 when absent from the scoped aggregation. Pass `undefined` to skip\n * the dual-scope behavior.\n * @param options.selectedValues - Values to always include in the result, even\n * when their count is 0 (e.g. currently-selected filter values)\n * @returns Aggregation against the scoped set, with isLoading reflecting both\n * queries when dual-scope is active.\n */\nexport function useDualScopeAggregation(objectType, propertyKey, scopedObjectSet, emptySourceObjectSet, options = {}) {\n const {\n sortBy,\n selectedValues = EMPTY_VALUES,\n limit\n } = options;\n const isDualScope = emptySourceObjectSet !== undefined;\n const emptySourceAggregation = usePropertyAggregation(objectType, propertyKey, emptySourceObjectSet);\n const activeValues = useMemo(() => {\n const merged = new Set(selectedValues);\n if (isDualScope && emptySourceAggregation.error == null) {\n for (const d of emptySourceAggregation.data) {\n merged.add(d.value);\n }\n }\n return merged.size === 0 ? undefined : Array.from(merged);\n }, [isDualScope, emptySourceAggregation.data, emptySourceAggregation.error, selectedValues]);\n const primary = usePropertyAggregation(objectType, propertyKey, scopedObjectSet, {\n sortBy,\n activeValues,\n limit\n });\n return {\n data: primary.data,\n maxCount: primary.maxCount,\n isLoading: primary.isLoading || isDualScope && emptySourceAggregation.isLoading,\n error: primary.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\n/**\n * Runtime representation of an active linked-property filter. Each entry\n * binds a `linkName` to its `reverseLinkName` and an `innerWhere` typed\n * against the linked object type, so `narrowObjectSet` can pivot type-safely.\n */\n\n/** Shared empty default for `LinkedFilter` arrays — avoids new-array-per-render. */\nexport const EMPTY_LINKED_FILTERS = [];\n\n/**\n * State for \"has link\" filter\n */\n\n/**\n * State for linked property filter\n * Wraps the filter state of the linked property\n */\n\n/**\n * Filter definition for \"Has Link\" filter\n * Filters objects based on whether they have any linked objects of the specified type\n */\n\n/**\n * Filter definition for filtering on a property of linked objects\n */","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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\n/**\n * Builds the where clause for a null-count aggregation, combining the\n * property null-check with the cross-filter where clause.\n *\n * The cross-filter clause is only included when it is non-empty. An empty\n * `{}` clause inside an `$and` is rejected by the aggregation API, so when no\n * cross-filter is active we return the bare null-check predicate.\n */\nexport function createNullCountWhereClause(propertyKey, crossFilterWhereClause) {\n const nullClause = createNullWhereClause(propertyKey);\n if (Object.keys(crossFilterWhereClause).length === 0) {\n return nullClause;\n }\n return {\n $and: [nullClause, crossFilterWhereClause]\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 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\nexport function narrowObjectSet(objectSet, whereClause, linkedFilters) {\n let narrowed = Object.keys(whereClause).length === 0 ? objectSet : objectSet.where(whereClause);\n for (const filter of linkedFilters) {\n narrowed = narrowed.intersect(applyLinkedFilter(narrowed, filter));\n }\n return narrowed;\n}\nfunction applyLinkedFilter(base, filter) {\n // reverseLinkName's pointing back to Q is a semantic invariant we can't encode\n // in the type system, so the final result is cast to ObjectSet<Q>.\n return base.pivotTo(filter.linkName).where(filter.innerWhere).pivotTo(filter.reverseLinkName);\n}\nexport function computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues) {\n if (objectSet == null) {\n return {\n scoped: undefined,\n emptySource: undefined\n };\n }\n const scoped = narrowObjectSet(objectSet, whereClause, linkedFilters);\n if (!showFilteredOutValues || linkedFilters.length === 0) {\n return {\n scoped,\n emptySource: undefined\n };\n }\n return {\n scoped,\n emptySource: narrowObjectSet(objectSet, whereClause, [])\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 { useOsdkAggregation } from \"@osdk/react\";\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 { DateRangeHistogramInput } from \"../base/inputs/DateRangeHistogramInput.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 { useDualScopeAggregation } from \"../hooks/useDualScopeAggregation.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from \"../utils/aggregationHelpers.js\";\nimport { coerceToString, coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nimport { narrowObjectSet } from \"../utils/narrowObjectSet.js\";\nfunction LinkedPropertyInputInner({\n objectSet,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n definition,\n filterState,\n onFilterStateChanged,\n showFilteredOutValues,\n searchQuery,\n className,\n style,\n layout\n}) {\n const scoped = useMemo(() => narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);\n const linkedObjectSet = useMemo(() => scoped.pivotTo(definition.linkName), [scoped, definition.linkName]);\n // Filtered-out rows on a linked facet compare against the raw source so\n // direct filters surface as count=0 entries on the linked side.\n const emptySourceLinkedObjectSet = useMemo(() => showFilteredOutValues ? objectSet.pivotTo(definition.linkName) : undefined, [showFilteredOutValues, 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 emptySourceObjectSet: emptySourceLinkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: values,\n onChange: onSelectChange,\n showCount: definition.showCount,\n renderValue: definition.renderValue,\n layout: layout\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 emptySourceObjectSet: emptySourceLinkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValue: value,\n onChange: onSingleSelectChange,\n showCount: definition.showCount,\n renderValue: definition.renderValue\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 emptySourceObjectSet: emptySourceLinkedObjectSet,\n propertyKey: linkedPropertyKey,\n selectedValues: selectedValues,\n onChange: onExactMatchChange,\n searchQuery: searchQuery,\n showCount: definition.showCount,\n renderValue: definition.renderValue\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 emptySourceObjectSet,\n propertyKey,\n selectedValues,\n onChange,\n showCount,\n renderValue,\n layout\n}) {\n const {\n data,\n isLoading,\n error\n } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {\n selectedValues\n });\n return /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValues: selectedValues,\n onChange: onChange,\n showCounts: showCount,\n renderValue: renderValue,\n layout: layout\n });\n}\nfunction LinkedSingleSelectInput({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValue,\n onChange,\n showCount,\n renderValue\n}) {\n const selectedValues = useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);\n const {\n data,\n isLoading,\n error\n } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {\n selectedValues\n });\n return /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: data,\n isLoading: isLoading,\n error: error,\n selectedValue: selectedValue,\n onChange: onChange,\n showCounts: showCount,\n renderValue: renderValue,\n ariaLabel: `Select ${propertyKey}`\n });\n}\nfunction LinkedListogramInput({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValues,\n onChange,\n searchQuery,\n showCount,\n renderValue\n}) {\n const {\n data,\n maxCount,\n isLoading,\n error\n } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {\n selectedValues\n });\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 showCount: showCount,\n renderValue: renderValue\n });\n}\nconst TEXT_TAGS_OPTIONS = {\n limit: 50\n};\nfunction LinkedTextTagsInput({\n objectType,\n objectSet,\n propertyKey,\n tags,\n onChange\n}) {\n const {\n data,\n isLoading,\n error\n } = usePropertyAggregation(objectType, propertyKey, objectSet, TEXT_TAGS_OPTIONS);\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(DateRangeHistogramInput, {\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 &[data-anchor-hidden] {\n visibility: hidden;\n }\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\";\nimport { useFilterListBoundary } from \"./FilterListBoundaryContext.js\";\nfunction ExcludeDropdownInner({\n isExcluding,\n onToggleExclude\n}) {\n const collisionBoundary = useFilterListBoundary();\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 collisionBoundary: collisionBoundary\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 } from \"react\";\nimport { getEffectiveFilterState, getSelectedCount, supportsExcluding, toggleIsExcluding } from \"../utils/filterValues.js\";\nimport { ExcludeDropdown } from \"./ExcludeDropdown.js\";\nimport styles from \"./FilterListItem.module.css\";\nfunction FilterInputExcludeRowInner({\n excludeRowOpen,\n filterState,\n onFilterStateChanged,\n totalValueCount,\n onClearAll,\n children\n}) {\n const handleToggleExclude = useCallback(() => {\n if (filterState == null) {\n return;\n }\n const next = toggleIsExcluding(filterState);\n if (next != null) {\n onFilterStateChanged(next);\n }\n }, [filterState, onFilterStateChanged]);\n const effectiveState = getEffectiveFilterState(filterState);\n const isExcluding = effectiveState?.isExcluding ?? false;\n const isOpen = excludeRowOpen ?? false;\n const selectedCount = getSelectedCount(effectiveState);\n if (!supportsExcluding(effectiveState)) {\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(\"div\", {\n className: styles.excludeRowLeading\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\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { DateRangeHistogramInput } from \"../base/inputs/DateRangeHistogramInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullCountWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction DateRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n formatDate,\n clickToFilter\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(() => ({\n aggregate: aggregateOptions,\n objectSet,\n where: whereClause\n }), [aggregateOptions, objectSet, whereClause]);\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 nullCountWhereClause = useMemo(() => createNullCountWhereClause(propertyKey, whereClause), [propertyKey, whereClause]);\n const nullCountArgs = useMemo(() => ({\n where: nullCountWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n }), [nullCountWhereClause, 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(DateRangeHistogramInput, {\n valueCountPairs: valueCountPairs,\n isLoading: isLoading,\n minValue: dateRangeState?.minValue,\n maxValue: dateRangeState?.maxValue,\n onChange: handleRangeChange,\n formatDate: formatDate,\n clickToFilter: clickToFilter\n }));\n}\nexport const DateRangeFilterInput = /*#__PURE__*/memo(DateRangeFilterInputInner);","/*\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 { useMemo } from \"react\";\nimport { computeDualScopes } from \"../utils/narrowObjectSet.js\";\nimport { useDualScopeAggregation } from \"./useDualScopeAggregation.js\";\nexport function useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, options = {}) {\n const {\n sortBy,\n selectedValues,\n limit,\n showFilteredOutValues\n } = options;\n const {\n scoped,\n emptySource\n } = useMemo(() => computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues), [objectSet, whereClause, linkedFilters, showFilteredOutValues]);\n return useDualScopeAggregation(objectType, propertyKey, scoped, emptySource, {\n sortBy,\n selectedValues,\n limit\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, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction ListogramFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n colorMap,\n displayMode,\n showCount,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen,\n renderValue\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 {\n data,\n maxCount,\n isLoading,\n error\n } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {\n sortBy,\n selectedValues,\n showFilteredOutValues\n });\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 showCount: showCount,\n isExcluding: isExcluding,\n maxVisibleItems: maxVisibleItems,\n searchQuery: searchQuery,\n renderValue: renderValue\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 formatDate\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 formatDate: formatDate\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 { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\nfunction MultiSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n excludeRowOpen,\n renderValue,\n showCount,\n layout\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 {\n data,\n isLoading,\n error\n } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {\n selectedValues,\n showFilteredOutValues\n });\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 showCounts: showCount,\n ariaLabel: `Search ${propertyKey} values`,\n renderValue: renderValue,\n layout: layout\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, useOsdkMetadata } from \"@osdk/react\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullCountWhereClause } from \"../utils/aggregationHelpers.js\";\nfunction NumberRangeFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n clickToFilter\n}) {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\" ? filterState : undefined;\n const includeNull = filterState?.includeNull;\n const {\n metadata\n } = useOsdkMetadata(objectType);\n const propertyType = metadata?.properties?.[propertyKey]?.type;\n const isInteger = propertyType === \"integer\" || propertyType === \"long\" || propertyType === \"short\" || propertyType === \"byte\";\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 const coerceMin = v => isInteger && v !== undefined ? Math.ceil(v) : v;\n const coerceMax = v => isInteger && v !== undefined ? Math.floor(v) : v;\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: coerceMin(minValue),\n maxValue: coerceMax(maxValue),\n includeNull\n });\n }, [onFilterStateChanged, includeNull, isInteger]);\n const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);\n const histogramArgs = useMemo(() => ({\n aggregate: aggregateOptions,\n objectSet,\n where: whereClause\n }), [aggregateOptions, objectSet, whereClause]);\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 nullCountWhereClause = useMemo(() => createNullCountWhereClause(propertyKey, whereClause), [propertyKey, whereClause]);\n const nullCountArgs = useMemo(() => ({\n where: nullCountWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet\n }), [nullCountWhereClause, 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 clickToFilter: clickToFilter && metadata != null\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 formatDate\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 formatDate: formatDate\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 { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport { EMPTY_LINKED_FILTERS } from \"../types/LinkedFilterTypes.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\nfunction SingleSelectFilterInputInner({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n excludeRowOpen,\n renderValue,\n showCount\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 selectedValues = useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);\n const {\n data,\n isLoading,\n error\n } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {\n selectedValues,\n showFilteredOutValues\n });\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 showCounts: showCount,\n ariaLabel: `Select ${propertyKey}`,\n renderValue: renderValue\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 formatDate\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 formatDate: formatDate\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 linkedFilters,\n showFilteredOutValues,\n searchQuery,\n excludeRowOpen,\n layout\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 whereClause: whereClause,\n clickToFilter: definition.clickToFilter\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 whereClause: whereClause,\n formatDate: definition.formatDate,\n clickToFilter: definition.clickToFilter\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n excludeRowOpen: excludeRowOpen,\n renderValue: definition.renderValue,\n showCount: definition.showCount\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n excludeRowOpen: excludeRowOpen,\n renderValue: definition.renderValue,\n showCount: definition.showCount,\n layout: layout\n });\n case \"SINGLE_DATE\":\n return /*#__PURE__*/React.createElement(SingleDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n formatDate: definition.formatDate\n });\n case \"MULTI_DATE\":\n return /*#__PURE__*/React.createElement(MultiDateFilterInput, {\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n formatDate: definition.formatDate\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n colorMap: definition.colorMap,\n displayMode: definition.listogramConfig?.displayMode,\n showCount: definition.showCount,\n maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen,\n renderValue: definition.renderValue\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 formatDate: definition.formatDate\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, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { coerceToString, coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\n// Static values are caller-provided options, not aggregation results, so their\n// zero counts should not be interpreted as values filtered out by another facet.\nconst SHOW_FILTERED_OUT_VALUES = false;\n/**\n * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).\n */\nfunction useExactMatchState(filterState, onFilterStateChanged, isExcluding) {\n const selectedValues = useMemo(() => filterState?.type === \"EXACT_MATCH\" ? coerceToStringArray(filterState.values) : [], [filterState]);\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 return {\n selectedValues,\n handleClearAll,\n handleChange\n };\n}\n\n/**\n * Hooks for SELECT state management (used by SINGLE_SELECT and MULTI_SELECT).\n */\nfunction useSelectState(filterState, onFilterStateChanged, isExcluding) {\n const selectedValue = useMemo(() => filterState?.type === \"SELECT\" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);\n const selectedValues = useMemo(() => filterState?.type === \"SELECT\" ? coerceToStringArray(filterState.selectedValues) : [], [filterState]);\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleSingleChange = useCallback(value => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n const handleMultiChange = useCallback(selectedValues => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding\n });\n }, [onFilterStateChanged, isExcluding]);\n return {\n selectedValue,\n selectedValues,\n handleClearAll,\n handleSingleChange,\n handleMultiChange\n };\n}\nfunction StaticValuesFilterInputInner({\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen,\n layout\n}) {\n const aggregationValues = useMemo(() => definition.values.map(value => ({\n value,\n count: 0\n })), [definition.values]);\n const isExcluding = filterState?.isExcluding ?? false;\n const exactMatch = useExactMatchState(filterState, onFilterStateChanged, isExcluding);\n const select = useSelectState(filterState, onFilterStateChanged, isExcluding);\n switch (definition.filterComponent) {\n case \"LISTOGRAM\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: exactMatch.handleClearAll\n }, /*#__PURE__*/React.createElement(ListogramInput, {\n values: aggregationValues,\n maxCount: 0,\n isLoading: false,\n error: null,\n selectedValues: exactMatch.selectedValues,\n onChange: exactMatch.handleChange,\n colorMap: definition.colorMap,\n displayMode: definition.listogramConfig?.displayMode,\n showCount: definition.showCount,\n isExcluding: isExcluding,\n showFilteredOutValues: SHOW_FILTERED_OUT_VALUES,\n maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,\n searchQuery: searchQuery,\n renderValue: definition.renderValue\n }));\n case \"SINGLE_SELECT\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: select.handleClearAll\n }, /*#__PURE__*/React.createElement(SingleSelectInput, {\n values: aggregationValues,\n isLoading: false,\n error: null,\n selectedValue: select.selectedValue,\n onChange: select.handleSingleChange,\n showCounts: definition.showCount,\n ariaLabel: `Select ${definition.key}`,\n renderValue: definition.renderValue\n }));\n case \"MULTI_SELECT\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: select.handleClearAll\n }, /*#__PURE__*/React.createElement(MultiSelectInput, {\n values: aggregationValues,\n isLoading: false,\n error: null,\n selectedValues: select.selectedValues,\n onChange: select.handleMultiChange,\n showCounts: definition.showCount,\n showFilteredOutValues: SHOW_FILTERED_OUT_VALUES,\n ariaLabel: `Search ${definition.key} values`,\n renderValue: definition.renderValue,\n layout: layout\n }));\n case \"TEXT_TAGS\":\n return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {\n excludeRowOpen: excludeRowOpen,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n totalValueCount: aggregationValues.length,\n onClearAll: exactMatch.handleClearAll\n }, /*#__PURE__*/React.createElement(TextTagsInput, {\n suggestions: aggregationValues,\n isLoading: false,\n error: null,\n tags: exactMatch.selectedValues,\n onChange: exactMatch.handleChange\n }));\n default:\n return assertUnreachable(definition.filterComponent);\n }\n}\nexport const StaticValuesFilterInput = /*#__PURE__*/memo(StaticValuesFilterInputInner);","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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\";\nimport { StaticValuesFilterInput } from \"./inputs/StaticValuesFilterInput.js\";\nfunction FilterInputInner({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters,\n showFilteredOutValues,\n searchQuery,\n excludeRowOpen,\n layout\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 whereClause: whereClause,\n linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n searchQuery: searchQuery,\n layout: layout\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 linkedFilters: linkedFilters,\n showFilteredOutValues: showFilteredOutValues,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen,\n layout: layout\n });\n case \"STATIC_VALUES\":\n return /*#__PURE__*/React.createElement(StaticValuesFilterInput, {\n definition: definition,\n filterState: filterState,\n onFilterStateChanged: onFilterStateChanged,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen,\n layout: layout\n });\n default:\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-unsupported\": \"true\"\n }, \"Unsupported filter type\");\n }\n}\nexport const FilterInput = /*#__PURE__*/memo(FilterInputInner);\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 case \"STATIC_VALUES\":\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 { NO_VALUE } from \"./filterValues.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 return buildValueOrNullFilter(state.values);\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 buildValueOrNullFilter(values);\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 WHERE clause fragment for a single property key from filter state.\n */\nexport function buildPropertyKeyClause(key, state, propertyType) {\n const filter = filterStateToPropertyFilter(state, propertyType);\n if (filter === undefined) {\n return undefined;\n }\n const isExcluding = \"isExcluding\" in state && state.isExcluding;\n if (isCompoundFilter(filter)) {\n const fieldClauses = filter.conditions.map(c => ({\n [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 [key]: {\n $isNull: true\n }\n }]\n };\n }\n return isExcluding ? {\n $not: rangeClause\n } : rangeClause;\n } else {\n const clause = {\n [key]: filter\n };\n return isExcluding ? {\n $not: clause\n } : clause;\n }\n}\n/**\n * Builds a `WhereClause<Q>` from direct (non-link-traversing) filter\n * definitions and current states. LINKED_PROPERTY filters are excluded —\n * use `getActiveLinkedFilters` for those and apply via `narrowObjectSet`.\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 clause = buildPropertyKeyClause(definition.key, state, propertyType);\n if (clause !== undefined) {\n clauses.push(clause);\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 // Handled by getActiveLinkedFilters — can't be expressed as a\n // WhereClause<Q>.\n break;\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 case \"STATIC_VALUES\":\n {\n if (definition.toWhereClause) {\n const staticClause = definition.toWhereClause(state);\n if (staticClause && Object.keys(staticClause).length > 0) {\n clauses.push(staticClause);\n }\n } else {\n const clause = buildPropertyKeyClause(definition.key, state);\n if (clause !== undefined) {\n clauses.push(clause);\n }\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\n/**\n * Builds the inner `WhereClause` for a linked-property filter, typed against\n * the linked object type. Returns `undefined` when the state doesn't yield a\n * predicate (e.g. empty selection).\n */\nexport function buildLinkedInnerWhere(definition, state) {\n const record = buildPropertyKeyClause(definition.linkedPropertyKey, state.linkedFilterState);\n if (record === undefined) {\n return undefined;\n }\n return record;\n}\n\n/**\n * Returns the active LINKED_PROPERTY filters as `LinkedFilter<Q>` records.\n */\nexport function getActiveLinkedFilters(definitions, filterStates, excludeFilterKey) {\n if (!definitions || definitions.length === 0) {\n return [];\n }\n const result = [];\n for (const definition of definitions) {\n if (definition.type !== \"LINKED_PROPERTY\") {\n continue;\n }\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n if (!state || state.type !== \"linkedProperty\") {\n continue;\n }\n if (definition.reverseLinkName == null) {\n continue;\n }\n const innerWhere = buildLinkedInnerWhere(definition, state);\n if (innerWhere === undefined) {\n continue;\n }\n result.push({\n linkName: definition.linkName,\n reverseLinkName: definition.reverseLinkName,\n innerWhere\n });\n }\n return result;\n}\n\n/**\n * Splits values into real values and the NO_VALUE sentinel, returning $isNull\n * for the sentinel. A literal empty string `\"\"` is a real value and matches\n * via equality (`{ key: \"\" }`), not `$isNull`.\n */\nfunction buildValueOrNullFilter(values) {\n if (values.length === 0) {\n return undefined;\n }\n const realValues = values.filter(v => v !== NO_VALUE);\n const hasNoValue = realValues.length < values.length;\n const valueClause = realValues.length === 0 ? undefined : realValues.length === 1 ? realValues[0] : {\n $in: realValues\n };\n if (!hasNoValue) {\n return valueClause;\n }\n if (valueClause === undefined) {\n return {\n $isNull: true\n };\n }\n return {\n __compound: true,\n conditions: [valueClause],\n includeNull: true\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 deepEqual from \"fast-deep-equal\";\nimport { useRef } from \"react\";\n\n/**\n * Returns a Map whose per-key values keep their previous reference when their\n * contents are structurally equal to the prior frame. Lets memoized children\n * keyed off individual entries skip work when only sibling entries changed.\n */\nexport function useStableMapEntries(input) {\n const ref = useRef(new Map());\n const next = new Map();\n for (const [key, value] of input) {\n const prev = ref.current.get(key);\n next.set(key, prev !== undefined && deepEqual(prev, value) ? prev : value);\n }\n ref.current = next;\n return next;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { isEqual } from \"lodash-es\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { buildWhereClause, getActiveLinkedFilters } from \"../utils/filterStateToWhereClause.js\";\nimport { filterHasActiveState } from \"../utils/filterValues.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\nimport { narrowObjectSet } from \"../utils/narrowObjectSet.js\";\nimport { useStableMapEntries } from \"./useStableMapEntries.js\";\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 \"STATIC_VALUES\":\n {\n const state = definition.filterState;\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 objectSet,\n filterDefinitions,\n onFilterStateChanged,\n onFilterClauseChanged,\n onEffectiveObjectSet,\n initialFilterStates\n } = props;\n const {\n metadata\n } = useOsdkMetadata(objectType);\n const onFilterClauseChangedRef = useRef(onFilterClauseChanged);\n onFilterClauseChangedRef.current = onFilterClauseChanged;\n const onEffectiveObjectSetRef = useRef(onEffectiveObjectSet);\n onEffectiveObjectSetRef.current = onEffectiveObjectSet;\n const filterDefinitionsRef = useRef(filterDefinitions);\n filterDefinitionsRef.current = filterDefinitions;\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\n // Captured once on first render to provide a stable baseline for the reset\n // button's enabled state. `useState`'s lazy initializer pins the value for\n // the lifetime of the component (unlike `useMemo`, which React may discard).\n const [initialFilterStatesSnapshot] = useState(() => {\n const snapshot = buildInitialStates(filterDefinitions);\n if (initialFilterStates) {\n for (const [key, state] of initialFilterStates) {\n snapshot.set(key, state);\n }\n }\n return snapshot;\n });\n const [filterStates, setFilterStates] = useState(() => new Map(initialFilterStatesSnapshot));\n const setFilterState = useCallback((filterKey, state) => {\n setFilterStates(prev => {\n const next = new Map(prev);\n next.set(filterKey, state);\n return next;\n });\n const definition = filterDefinitionsRef.current?.find(d => getFilterKey(d) === filterKey);\n if (definition) {\n onFilterStateChanged?.(definition, state);\n }\n }, [onFilterStateChanged]);\n const clearFilterState = useCallback(filterKey => {\n setFilterStates(prev => {\n const next = new Map(prev);\n next.delete(filterKey);\n return next;\n });\n }, []);\n const reset = useCallback(() => {\n setFilterStates(new Map(initialFilterStatesSnapshot));\n }, [initialFilterStatesSnapshot]);\n const whereClause = useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);\n const linkedFilters = useMemo(() => getActiveLinkedFilters(filterDefinitions, filterStates), [filterDefinitions, filterStates]);\n const effectiveObjectSet = useMemo(() => objectSet == null ? undefined : narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);\n useEffect(() => {\n onFilterClauseChangedRef.current?.(whereClause);\n }, [whereClause]);\n useEffect(() => {\n if (effectiveObjectSet == null) {\n return;\n }\n onEffectiveObjectSetRef.current?.(effectiveObjectSet);\n }, [effectiveObjectSet]);\n const perFilterWhereClauses = useStableMapEntries(useMemo(() => {\n const map = new Map();\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 perFilterLinkedFilters = useStableMapEntries(useMemo(() => {\n const map = new Map();\n for (const definition of filterDefinitions ?? []) {\n const key = getFilterKey(definition);\n map.set(key, getActiveLinkedFilters(filterDefinitions, filterStates, key));\n }\n return map;\n }, [filterDefinitions, filterStates]));\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 hasChangesFromInitial = useMemo(() => !isEqual(filterStates, initialFilterStatesSnapshot), [filterStates, initialFilterStatesSnapshot]);\n return useMemo(() => ({\n filterStates,\n setFilterState,\n clearFilterState,\n whereClause,\n linkedFilters,\n perFilterWhereClauses,\n perFilterLinkedFilters,\n activeFilterCount,\n hasChangesFromInitial,\n reset\n }), [filterStates, setFilterState, clearFilterState, whereClause, linkedFilters, perFilterWhereClauses, perFilterLinkedFilters, activeFilterCount, hasChangesFromInitial, 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, useEffect, useMemo, useRef, useState } from \"react\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\nexport function useFilterVisibility(filterDefinitions, onVisibilityChange) {\n const allKeys = useMemo(() => filterDefinitions?.map(getFilterKey) ?? [], [filterDefinitions]);\n const defaultVisibleKeyOrder = useMemo(() => filterDefinitions?.filter(def => def.isVisible !== false).map(getFilterKey) ?? [], [filterDefinitions]);\n const [visibleKeyOrder, setVisibleKeyOrder] = useState(() => defaultVisibleKeyOrder);\n\n // Sync state when filterDefinitions changes\n useEffect(() => {\n setVisibleKeyOrder(defaultVisibleKeyOrder);\n }, [defaultVisibleKeyOrder]);\n\n // Keep a ref to onVisibilityChange so callbacks don't need it as a dependency\n const onVisibilityChangeRef = useRef(onVisibilityChange);\n onVisibilityChangeRef.current = onVisibilityChange;\n const fireVisibilityChange = useCallback(nextVisibleKeyOrder => {\n if (!onVisibilityChangeRef.current) return;\n const visibleSet = new Set(nextVisibleKeyOrder);\n const hiddenKeys = allKeys.filter(k => !visibleSet.has(k));\n onVisibilityChangeRef.current(nextVisibleKeyOrder, hiddenKeys);\n }, [allKeys]);\n const defByKey = useMemo(() => {\n const map = new Map();\n if (filterDefinitions == null) return map;\n for (const def of filterDefinitions) {\n map.set(getFilterKey(def), def);\n }\n return map;\n }, [filterDefinitions]);\n const {\n visibleDefinitions,\n hiddenDefinitions\n } = useMemo(() => {\n if (filterDefinitions == null) {\n return {\n visibleDefinitions: [],\n hiddenDefinitions: []\n };\n }\n const visibleSet = new Set(visibleKeyOrder);\n const visible = [];\n const hidden = [];\n for (const key of visibleKeyOrder) {\n const def = defByKey.get(key);\n if (def != null) {\n visible.push(def);\n }\n }\n for (const key of allKeys) {\n if (!visibleSet.has(key)) {\n const def = defByKey.get(key);\n if (def != null) {\n hidden.push(def);\n }\n }\n }\n return {\n visibleDefinitions: visible,\n hiddenDefinitions: hidden\n };\n }, [filterDefinitions, defByKey, visibleKeyOrder, allKeys]);\n const showFilter = useCallback(key => {\n setVisibleKeyOrder(prev => {\n if (prev.includes(key)) return prev;\n const next = [...prev, key];\n fireVisibilityChange(next);\n return next;\n });\n }, [fireVisibilityChange]);\n const hideFilter = useCallback(key => {\n setVisibleKeyOrder(prev => {\n const next = prev.filter(k => k !== key);\n fireVisibilityChange(next);\n return next;\n });\n }, [fireVisibilityChange]);\n const reorderVisible = useCallback(keys => {\n setVisibleKeyOrder(prev => {\n if (keys.length === prev.length && keys.every((k, i) => k === prev[i])) {\n return prev;\n }\n fireVisibilityChange(keys);\n return keys;\n });\n }, [fireVisibilityChange]);\n const resetVisibility = useCallback(() => {\n setVisibleKeyOrder(prev => {\n if (defaultVisibleKeyOrder.length === prev.length && defaultVisibleKeyOrder.every((k, i) => k === prev[i])) {\n return prev;\n }\n fireVisibilityChange(defaultVisibleKeyOrder);\n return defaultVisibleKeyOrder;\n });\n }, [defaultVisibleKeyOrder, fireVisibilityChange]);\n const hasVisibilityChanges = useMemo(() => {\n if (visibleKeyOrder.length !== defaultVisibleKeyOrder.length) {\n return true;\n }\n return !visibleKeyOrder.every((key, i) => key === defaultVisibleKeyOrder[i]);\n }, [visibleKeyOrder, defaultVisibleKeyOrder]);\n return {\n visibleDefinitions,\n hiddenDefinitions,\n showFilter,\n hideFilter,\n reorderVisible,\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 case \"STATIC_VALUES\":\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 { EMPTY_LINKED_FILTERS } from \"./types/LinkedFilterTypes.js\";\nimport { getFilterKey } from \"./utils/getFilterKey.js\";\nimport { getFilterLabel } from \"./utils/getFilterLabel.js\";\nconst EMPTY_WHERE = {};\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 showFilteredOutValues = false,\n className,\n enableSorting,\n onFilterAdded,\n onFilterRemoved,\n onFilterVisibilityChange,\n renderAddFilterButton\n } = props;\n const {\n filterStates,\n setFilterState,\n clearFilterState,\n perFilterWhereClauses,\n perFilterLinkedFilters,\n activeFilterCount,\n hasChangesFromInitial,\n reset\n } = useFilterListState(props);\n const uncontrolledAddFilterMode = addFilterMode === \"uncontrolled\";\n const handleVisibilityChange = useCallback((visibleKeys, hiddenKeys) => {\n if (!onFilterVisibilityChange) {\n return;\n }\n const states = [...visibleKeys.map(key => ({\n filterKey: key,\n isVisible: true\n })), ...hiddenKeys.map(key => ({\n filterKey: key,\n isVisible: false\n }))];\n onFilterVisibilityChange(states);\n }, [onFilterVisibilityChange]);\n const {\n visibleDefinitions: managedVisibleDefinitions,\n hiddenDefinitions: managedHiddenDefinitions,\n showFilter,\n hideFilter,\n reorderVisible,\n hasVisibilityChanges,\n resetVisibility\n } = useFilterVisibility(filterDefinitions, uncontrolledAddFilterMode ? handleVisibilityChange : undefined);\n const canReset = hasChangesFromInitial || hasVisibilityChanges;\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 handleOrderChange = useCallback(orderedKeys => {\n reorderVisible(orderedKeys);\n }, [reorderVisible]);\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) ?? EMPTY_WHERE,\n linkedFilters: perFilterLinkedFilters.get(filterKey) ?? EMPTY_LINKED_FILTERS,\n showFilteredOutValues: showFilteredOutValues,\n searchQuery: searchQuery,\n excludeRowOpen: excludeRowOpen\n }), [objectType, objectSet, perFilterWhereClauses, perFilterLinkedFilters, showFilteredOutValues]);\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 canReset: canReset,\n enableSorting: enableSorting,\n onFilterRemoved: effectiveOnFilterRemoved,\n onOrderChange: handleOrderChange,\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 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.fieldGroup {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-filter-popover-gap);\n flex-shrink: 0;\n position: relative;\n}\n\n.fieldGroupTop {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--osdk-filter-popover-stack-gap);\n}\n\n.label {\n font-family: var(--osdk-filter-popover-label-font-family);\n font-size: var(--osdk-filter-popover-label-font-size);\n color: var(--osdk-filter-popover-label-color);\n white-space: nowrap;\n}\n\n.trigger {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: var(--osdk-filter-popover-trigger-width);\n min-height: var(--osdk-filter-popover-trigger-min-height);\n padding: var(--osdk-filter-popover-trigger-padding);\n border-radius: var(--osdk-filter-popover-trigger-border-radius);\n border: var(--osdk-filter-popover-trigger-border-width) solid\n var(--osdk-filter-popover-trigger-border-color);\n background: var(--osdk-filter-popover-trigger-bg);\n color: var(--osdk-filter-popover-trigger-color);\n font-family: var(--osdk-filter-popover-trigger-font-family);\n font-size: var(--osdk-filter-popover-trigger-font-size);\n cursor: pointer;\n transition: border-color var(--osdk-filter-popover-trigger-transition);\n text-align: left;\n}\n\n.trigger:hover {\n border-color: var(--osdk-filter-popover-trigger-border-color-hover);\n}\n\n.trigger[data-active=\"true\"] {\n border-color: var(--osdk-filter-popover-trigger-border-color-active);\n}\n\n.trigger:focus-visible {\n outline: var(--osdk-filter-popover-trigger-focus-outline-width) solid\n var(--osdk-filter-popover-trigger-focus-outline-color);\n outline-offset: var(--osdk-filter-popover-trigger-focus-outline-offset);\n}\n\n.summary {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n flex: 1;\n}\n\n.placeholder {\n color: var(--osdk-filter-popover-placeholder-color);\n}\n\n.removeButton {\n position: absolute;\n top: 50%;\n right: var(--osdk-filter-popover-remove-right);\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-filter-popover-remove-size);\n height: var(--osdk-filter-popover-remove-size);\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--osdk-filter-popover-remove-color);\n border-radius: var(--osdk-filter-popover-remove-border-radius);\n opacity: 0;\n transition: opacity var(--osdk-filter-popover-remove-transition);\n pointer-events: none;\n}\n\n.fieldGroupTop .removeButton {\n top: auto;\n bottom: calc(\n (\n var(--osdk-filter-popover-trigger-min-height)\n - var(--osdk-filter-popover-remove-size)\n ) / 2\n );\n transform: none;\n}\n\n.fieldGroup:hover .removeButton,\n.fieldGroup:focus-within .removeButton {\n opacity: 1;\n pointer-events: auto;\n}\n\n.removeButton:hover {\n color: var(--osdk-filter-popover-remove-color-hover);\n background: var(--osdk-filter-popover-remove-bg-hover);\n}\n\n.popup {\n background: var(--osdk-filter-popover-popup-bg);\n border: var(--osdk-filter-popover-popup-border);\n border-radius: var(--osdk-filter-popover-popup-border-radius);\n box-shadow: var(--osdk-filter-popover-popup-shadow);\n padding: var(--osdk-filter-popover-popup-padding);\n min-width: var(--osdk-filter-popover-popup-min-width);\n max-width: var(--osdk-filter-popover-popup-max-width);\n z-index: var(--osdk-filter-popover-popup-z-index);\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 { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport { RemoveIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterPopover.module.css\";\n/** Labeled, popover-backed filter trigger. Pair with `FilterInput` for the popup body. */\nfunction FilterPopoverInner({\n label,\n summary,\n isActive,\n onRemove,\n children,\n className,\n placeholder = \"Any\",\n labelPlacement = \"inline\"\n}) {\n const [open, setOpen] = useState(false);\n const summaryHasValue = summary !== \"\";\n const handleRemoveClick = useCallback(e => {\n e.stopPropagation();\n onRemove?.();\n }, [onRemove]);\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: open,\n onOpenChange: setOpen\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.fieldGroup, labelPlacement === \"top\" && styles.fieldGroupTop, className)\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.label\n }, label), /*#__PURE__*/React.createElement(Popover.Trigger, {\n className: styles.trigger,\n \"data-active\": isActive ? \"true\" : undefined\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.summary, !summaryHasValue && styles.placeholder)\n }, summaryHasValue ? summary : placeholder)), onRemove && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: handleRemoveClick,\n className: styles.removeButton,\n \"aria-label\": `Remove ${label} filter`\n }, /*#__PURE__*/React.createElement(RemoveIcon, null))), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4,\n align: \"start\"\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n className: styles.popup\n }, children))));\n}\nexport const FilterPopover = /*#__PURE__*/memo(FilterPopoverInner);","/*\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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport { NO_VALUE } from \"./filterValues.js\";\n\n// Em-dash reads naturally as an unbounded range half (e.g. \"— – Jan 1\").\nconst NO_VALUE_PLACEHOLDER = \"—\";\n\n// Standalone SELECT triggers need the explicit phrase; a bare em-dash isn't discoverable.\nconst SELECT_NO_VALUE_LABEL = \"(No value)\";\n\n// Literal empty string is a real, selectable value distinct from \"No value\".\nconst SELECT_EMPTY_STRING_LABEL = \"(empty string)\";\nfunction summarizeSelectionValues(values, formatDate) {\n if (values.length === 0) {\n return \"\";\n }\n if (values.length > 1) {\n return `${values.length} selected`;\n }\n const v = values[0];\n if (v instanceof Date) {\n return formatDate(v);\n }\n if (v == null || v === NO_VALUE) {\n return SELECT_NO_VALUE_LABEL;\n }\n if (v === \"\") {\n return SELECT_EMPTY_STRING_LABEL;\n }\n return String(v);\n}\nfunction formatRange(min, max, format, loFallback, hiFallback) {\n return `${min != null ? format(min) : loFallback} – ${max != null ? format(max) : hiFallback}`;\n}\n\n/** Short summary of a filter's current value for rendering inside a `FilterPopover` trigger. */\nexport function summarizeFilterValue(definition, state) {\n if (state == null) {\n return \"\";\n }\n const formatDate = \"formatDate\" in definition && definition.formatDate ? definition.formatDate : formatDateForInput;\n switch (state.type) {\n case \"EXACT_MATCH\":\n return summarizeSelectionValues(state.values, formatDate);\n case \"SELECT\":\n return summarizeSelectionValues(state.selectedValues, formatDate);\n case \"CONTAINS_TEXT\":\n return state.value ?? \"\";\n case \"NUMBER_RANGE\":\n {\n const {\n minValue,\n maxValue,\n includeNull\n } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(minValue, maxValue, String, \"−∞\", \"∞\");\n }\n case \"DATE_RANGE\":\n {\n const {\n minValue,\n maxValue,\n includeNull\n } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(minValue, maxValue, formatDate, NO_VALUE_PLACEHOLDER, NO_VALUE_PLACEHOLDER);\n }\n case \"TIMELINE\":\n {\n const {\n startDate,\n endDate\n } = state;\n if (startDate == null && endDate == null) {\n return \"\";\n }\n return formatRange(startDate, endDate, formatDate, NO_VALUE_PLACEHOLDER, NO_VALUE_PLACEHOLDER);\n }\n case \"TOGGLE\":\n return state.enabled ? \"Enabled\" : \"\";\n case \"hasLink\":\n return state.hasLink ? \"Has link\" : \"\";\n case \"linkedProperty\":\n // Forwards the outer definition so options like formatDate flow into the\n // linked summary; assumes the linked property shares the outer property's\n // type (true for current consumers).\n return summarizeFilterValue(definition, state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm ?? \"\";\n case \"custom\":\n return \"Custom\";\n default:\n return assertUnreachable(state);\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 { BaseFilterList } from \"../../filter-list/base/BaseFilterList.js\";\nimport { FilterList as _FilterList } from \"../../filter-list/FilterList.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const FilterList = withOsdkMetrics(_FilterList, \"FilterList\");\nexport { deserializeFilterStates, serializeFilterStates } from \"../../filter-list/utils/filterStateSerialization.js\";\nexport { FilterPopover } from \"../../filter-list/base/FilterPopover.js\";\nexport { FilterInput } from \"../../filter-list/FilterInput.js\";\nexport { useFilterListState } from \"../../filter-list/hooks/useFilterListState.js\";\nexport { filterHasActiveState, NO_VALUE } from \"../../filter-list/utils/filterValues.js\";\nexport { getFilterKey } from \"../../filter-list/utils/getFilterKey.js\";\nexport { getFilterLabel } from \"../../filter-list/utils/getFilterLabel.js\";\nexport { summarizeFilterValue } from \"../../filter-list/utils/summarizeFilterValue.js\";\nexport { narrowObjectSet } from \"../../filter-list/utils/narrowObjectSet.js\";"]}