@osdk/react-components 0.22.1-main-21003f18ccef5c145fef179ed2900bdcca6df43f → 0.23.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 (81) hide show
  1. package/CHANGELOG.md +3 -7
  2. package/build/browser/filter-list/base/inputs/ListogramInput.js +2 -1
  3. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  4. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +7 -1
  5. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +3 -2
  6. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  7. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  8. package/build/browser/filter-list/inputs/StaticValuesFilterInput.js +6 -0
  9. package/build/browser/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
  10. package/build/browser/styles.css +11 -3
  11. package/build/browser/tokens/component-tokens/filter-list.css +0 -1
  12. package/build/browser/util/UserAgent.js +1 -1
  13. package/build/browser/util/UserAgent.js.map +1 -1
  14. package/build/cjs/chunk-44Q6YNJY.cjs +11 -0
  15. package/build/cjs/{chunk-RMDTKNEH.cjs.map → chunk-44Q6YNJY.cjs.map} +1 -1
  16. package/build/cjs/{chunk-7UB7SNYR.cjs → chunk-CDKWDUSS.cjs} +4 -4
  17. package/build/cjs/{chunk-7UB7SNYR.cjs.map → chunk-CDKWDUSS.cjs.map} +1 -1
  18. package/build/cjs/chunk-F4J3FXNK.cjs +11 -0
  19. package/build/cjs/{chunk-MSORWXYW.cjs.map → chunk-F4J3FXNK.cjs.map} +1 -1
  20. package/build/cjs/chunk-JNIYR5HQ.cjs +11 -0
  21. package/build/cjs/{chunk-27SM3TEQ.cjs.map → chunk-JNIYR5HQ.cjs.map} +1 -1
  22. package/build/cjs/chunk-KNMWCCZY.cjs +11 -0
  23. package/build/cjs/{chunk-ZXCWNYCZ.cjs.map → chunk-KNMWCCZY.cjs.map} +1 -1
  24. package/build/cjs/chunk-LXYK5HUR.cjs +11 -0
  25. package/build/cjs/{chunk-JV55AKJX.cjs.map → chunk-LXYK5HUR.cjs.map} +1 -1
  26. package/build/cjs/{chunk-BUPYGLBD.cjs → chunk-M2B7X4UP.cjs} +4 -4
  27. package/build/cjs/{chunk-BUPYGLBD.cjs.map → chunk-M2B7X4UP.cjs.map} +1 -1
  28. package/build/cjs/{chunk-CKXTABIP.cjs → chunk-MOL6BDEN.cjs} +4 -4
  29. package/build/cjs/{chunk-CKXTABIP.cjs.map → chunk-MOL6BDEN.cjs.map} +1 -1
  30. package/build/cjs/{chunk-KVIIUMS5.cjs → chunk-NP2OODWG.cjs} +4 -4
  31. package/build/cjs/{chunk-KVIIUMS5.cjs.map → chunk-NP2OODWG.cjs.map} +1 -1
  32. package/build/cjs/{chunk-F7V6VF3F.cjs → chunk-UG5QG75Y.cjs} +4 -4
  33. package/build/cjs/{chunk-F7V6VF3F.cjs.map → chunk-UG5QG75Y.cjs.map} +1 -1
  34. package/build/cjs/{chunk-727CMVU2.cjs → chunk-WYDFI4D2.cjs} +4 -4
  35. package/build/cjs/{chunk-727CMVU2.cjs.map → chunk-WYDFI4D2.cjs.map} +1 -1
  36. package/build/cjs/{chunk-BWGAPHH4.cjs → chunk-Z6F6MHWG.cjs} +12 -7
  37. package/build/cjs/chunk-Z6F6MHWG.cjs.map +1 -0
  38. package/build/cjs/{chunk-P34CUCZX.cjs → chunk-ZIYQXEEB.cjs} +3 -3
  39. package/build/cjs/chunk-ZIYQXEEB.cjs.map +1 -0
  40. package/build/cjs/public/experimental/action-form.cjs +4 -4
  41. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  42. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  43. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  44. package/build/cjs/public/experimental/filter-list.cjs +14 -14
  45. package/build/cjs/public/experimental/filter-list.css +3 -2
  46. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  47. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  48. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  49. package/build/cjs/public/experimental/object-table.cjs +8 -8
  50. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  51. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  52. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  53. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  54. package/build/cjs/public/experimental.cjs +47 -47
  55. package/build/cjs/public/experimental.css +3 -2
  56. package/build/cjs/public/experimental.css.map +1 -1
  57. package/build/esm/filter-list/base/inputs/ListogramInput.js +2 -1
  58. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  59. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +7 -1
  60. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +3 -2
  61. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  62. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  63. package/build/esm/filter-list/inputs/StaticValuesFilterInput.js +6 -0
  64. package/build/esm/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
  65. package/build/esm/tokens/component-tokens/filter-list.css +0 -1
  66. package/build/esm/util/UserAgent.js +1 -1
  67. package/build/esm/util/UserAgent.js.map +1 -1
  68. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +2 -1
  69. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  70. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +2 -1
  71. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  72. package/build/types/filter-list/inputs/StaticValuesFilterInput.d.ts.map +1 -1
  73. package/docs/CSSVariables.md +3 -4
  74. package/package.json +7 -7
  75. package/build/cjs/chunk-27SM3TEQ.cjs +0 -11
  76. package/build/cjs/chunk-BWGAPHH4.cjs.map +0 -1
  77. package/build/cjs/chunk-JV55AKJX.cjs +0 -11
  78. package/build/cjs/chunk-MSORWXYW.cjs +0 -11
  79. package/build/cjs/chunk-P34CUCZX.cjs.map +0 -1
  80. package/build/cjs/chunk-RMDTKNEH.cjs +0 -11
  81. package/build/cjs/chunk-ZXCWNYCZ.cjs +0 -11
package/CHANGELOG.md CHANGED
@@ -1,18 +1,14 @@
1
1
  # @osdk/react-components
2
2
 
3
- ## 0.22.1-main-21003f18ccef5c145fef179ed2900bdcca6df43f
3
+ ## 0.23.0
4
4
 
5
- ### Patch Changes
5
+ ### Minor Changes
6
6
 
7
7
  - 4a2110e: Make the filter-list exclude row Clear all button reliably right-align against consumer CSS resets.
8
8
  - 8c8038e: Fix "Failed to load null count" error on date and number range filters when no cross-filter is active. The null-count aggregation no longer wraps an empty where clause inside `$and`, which the aggregation API rejects.
9
9
  - 5b87e4a: ObjectTable: clicking the header select-all checkbox now deselects all rows whenever any rows are selected (including the indeterminate state). Previously a partial selection promoted to "select all" on click, requiring a second click to clear.
10
+ - ceeabb5: Fix static FilterList values rendering as filtered out and keep filtered-out values accessible.
10
11
  - c3752ce: Temporarily remove the AIP chat entry points and AIP dependencies.
11
- - Updated dependencies [90f7fb6]
12
- - Updated dependencies [c3752ce]
13
- - @osdk/react@2.25.1-main-21003f18ccef5c145fef179ed2900bdcca6df43f
14
- - @osdk/api@2.25.1-main-21003f18ccef5c145fef179ed2900bdcca6df43f
15
- - @osdk/client@2.25.1-main-21003f18ccef5c145fef179ed2900bdcca6df43f
16
12
 
17
13
  ## 0.22.0
18
14
 
@@ -36,6 +36,7 @@ function ListogramInputInner({
36
36
  displayMode = "full",
37
37
  showCount = true,
38
38
  isExcluding,
39
+ showFilteredOutValues = true,
39
40
  className,
40
41
  style,
41
42
  maxVisibleItems,
@@ -88,7 +89,7 @@ function ListogramInputInner({
88
89
  const percentage = maxCount > 0 ? count / maxCount * 100 : 0;
89
90
  const perRowColor = colorMap?.[value];
90
91
  const isEmpty = isEmptyValue(value);
91
- const isFilteredOut = count === 0 && !selectedSet.has(value);
92
+ const isFilteredOut = showFilteredOutValues && count === 0 && !selectedSet.has(value);
92
93
  return /*#__PURE__*/React.createElement(Button, {
93
94
  key: value,
94
95
  className: styles.row,
@@ -1 +1 @@
1
- {"version":3,"file":"ListogramInput.js","names":["Button","classnames","React","memo","useCallback","useMemo","useState","Checkbox","filterValuesBySearch","isEmptyValue","formatCompactCount","styles","ListogramSkeleton","NoValueLabel","sharedStyles","useStableData","ListogramInputInner","values","maxCount","isLoading","error","selectedValues","onChange","colorMap","displayMode","showCount","isExcluding","className","style","maxVisibleItems","searchQuery","renderValue","isExpanded","setIsExpanded","stableValues","selectedSet","Set","toggleValue","value","has","filter","v","filteredValues","rendered","sortedValues","selected","unselected","displayValues","slice","hasMore","length","createElement","listogram","errorMessage","message","emptyMessage","container","map","count","percentage","perRowColor","isEmpty","isFilteredOut","key","row","undefined","onClick","checkbox","e","stopPropagation","checked","onCheckedChange","label","noValueLabel","title","toLocaleString","bar","barFill","type","viewAllButton","ListogramInput"],"sources":["ListogramInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport {\n filterValuesBySearch,\n isEmptyValue,\n} from \"../../utils/filterValues.js\";\nimport { formatCompactCount } from \"./formatCompactCount.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport { ListogramSkeleton } from \"./ListogramSkeleton.js\";\nimport { NoValueLabel } from \"./NoValueLabel.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\n\nexport type ListogramDisplayMode = \"full\" | \"count\" | \"minimal\";\n\ninterface ListogramInputProps {\n values: PropertyAggregationValue[];\n maxCount: number;\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (values: string[]) => void;\n colorMap?: Record<string, string>;\n displayMode?: ListogramDisplayMode;\n showCount?: boolean;\n isExcluding?: boolean;\n className?: string;\n style?: React.CSSProperties;\n maxVisibleItems?: number;\n searchQuery?: string;\n renderValue?: (value: string) => React.ReactNode;\n}\n\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 className,\n style,\n maxVisibleItems,\n searchQuery,\n renderValue,\n}: ListogramInputProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const stableValues = useStableData(values, isLoading);\n\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n\n const toggleValue = useCallback(\n (value: string) => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter((v) => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n },\n [selectedValues, selectedSet, onChange],\n );\n\n const filteredValues = useMemo(() => {\n if (searchQuery) {\n return filterValuesBySearch(\n stableValues,\n searchQuery,\n (v) => {\n const rendered = renderValue?.(v.value);\n return typeof rendered === \"string\" ? rendered : v.value;\n },\n );\n }\n return stableValues;\n }, [stableValues, searchQuery, renderValue]);\n\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\n const displayValues = useMemo(() => {\n if (isExpanded || !maxVisibleItems) return sortedValues;\n return sortedValues.slice(0, maxVisibleItems);\n }, [sortedValues, maxVisibleItems, isExpanded]);\n\n const hasMore = maxVisibleItems != null\n && sortedValues.length > maxVisibleItems;\n\n return (\n <div\n className={classnames(styles.listogram, className)}\n style={style}\n data-loading={isLoading && filteredValues.length > 0}\n >\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!error && filteredValues.length === 0 && isLoading && (\n <ListogramSkeleton />\n )}\n {!error && filteredValues.length === 0 && !isLoading && (\n <div className={sharedStyles.emptyMessage}>No values available</div>\n )}\n\n {filteredValues.length > 0 && (\n <div className={styles.container}>\n {displayValues.map(({ value, count }) => {\n const percentage = maxCount > 0 ? (count / maxCount) * 100 : 0;\n const perRowColor = colorMap?.[value];\n const isEmpty = isEmptyValue(value);\n\n const isFilteredOut = count === 0 && !selectedSet.has(value);\n return (\n <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 onClick={() => toggleValue(value)}\n aria-pressed={selectedSet.has(value)}\n style={perRowColor || percentage > 0\n ? ({\n \"--osdk-filter-listogram-bar-fill-scale\": percentage / 100,\n ...(perRowColor\n ? {\n \"--osdk-filter-listogram-row-bar-color\": perRowColor,\n }\n : undefined),\n } as React.CSSProperties)\n : undefined}\n >\n <span\n className={styles.checkbox}\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={selectedSet.has(value)}\n // eslint-disable-next-line react/jsx-no-bind\n onCheckedChange={() => toggleValue(value)}\n isExcluding={isExcluding}\n />\n </span>\n <span\n className={styles.label}\n data-excluding={(isExcluding && selectedSet.has(value))\n || undefined}\n >\n {isEmpty\n ? <NoValueLabel className={styles.noValueLabel} />\n : (renderValue?.(value) ?? value)}\n </span>\n {showCount && displayMode !== \"minimal\" && (\n <span\n className={styles.count}\n title={count.toLocaleString()}\n >\n {formatCompactCount(count)}\n </span>\n )}\n {displayMode === \"full\" && (\n <span className={styles.bar}>\n <span className={styles.barFill} />\n </span>\n )}\n </Button>\n );\n })}\n\n {hasMore && !isExpanded && (\n <Button\n type=\"button\"\n className={styles.viewAllButton}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => setIsExpanded(true)}\n >\n View all ({sortedValues.length})\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport const ListogramInput = memo(\n ListogramInputInner,\n) as typeof ListogramInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ListogramInput.js","names":["Button","classnames","React","memo","useCallback","useMemo","useState","Checkbox","filterValuesBySearch","isEmptyValue","formatCompactCount","styles","ListogramSkeleton","NoValueLabel","sharedStyles","useStableData","ListogramInputInner","values","maxCount","isLoading","error","selectedValues","onChange","colorMap","displayMode","showCount","isExcluding","showFilteredOutValues","className","style","maxVisibleItems","searchQuery","renderValue","isExpanded","setIsExpanded","stableValues","selectedSet","Set","toggleValue","value","has","filter","v","filteredValues","rendered","sortedValues","selected","unselected","displayValues","slice","hasMore","length","createElement","listogram","errorMessage","message","emptyMessage","container","map","count","percentage","perRowColor","isEmpty","isFilteredOut","key","row","undefined","onClick","checkbox","e","stopPropagation","checked","onCheckedChange","label","noValueLabel","title","toLocaleString","bar","barFill","type","viewAllButton","ListogramInput"],"sources":["ListogramInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport {\n filterValuesBySearch,\n isEmptyValue,\n} from \"../../utils/filterValues.js\";\nimport { formatCompactCount } from \"./formatCompactCount.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport { ListogramSkeleton } from \"./ListogramSkeleton.js\";\nimport { NoValueLabel } from \"./NoValueLabel.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport { useStableData } from \"./useStableData.js\";\n\nexport type ListogramDisplayMode = \"full\" | \"count\" | \"minimal\";\n\ninterface ListogramInputProps {\n values: PropertyAggregationValue[];\n maxCount: number;\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (values: string[]) => void;\n colorMap?: Record<string, string>;\n displayMode?: ListogramDisplayMode;\n showCount?: boolean;\n isExcluding?: boolean;\n showFilteredOutValues?: boolean;\n className?: string;\n style?: React.CSSProperties;\n maxVisibleItems?: number;\n searchQuery?: string;\n renderValue?: (value: string) => React.ReactNode;\n}\n\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}: ListogramInputProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const stableValues = useStableData(values, isLoading);\n\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n\n const toggleValue = useCallback(\n (value: string) => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter((v) => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n },\n [selectedValues, selectedSet, onChange],\n );\n\n const filteredValues = useMemo(() => {\n if (searchQuery) {\n return filterValuesBySearch(\n stableValues,\n searchQuery,\n (v) => {\n const rendered = renderValue?.(v.value);\n return typeof rendered === \"string\" ? rendered : v.value;\n },\n );\n }\n return stableValues;\n }, [stableValues, searchQuery, renderValue]);\n\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\n const displayValues = useMemo(() => {\n if (isExpanded || !maxVisibleItems) return sortedValues;\n return sortedValues.slice(0, maxVisibleItems);\n }, [sortedValues, maxVisibleItems, isExpanded]);\n\n const hasMore = maxVisibleItems != null\n && sortedValues.length > maxVisibleItems;\n\n return (\n <div\n className={classnames(styles.listogram, className)}\n style={style}\n data-loading={isLoading && filteredValues.length > 0}\n >\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!error && filteredValues.length === 0 && isLoading && (\n <ListogramSkeleton />\n )}\n {!error && filteredValues.length === 0 && !isLoading && (\n <div className={sharedStyles.emptyMessage}>No values available</div>\n )}\n\n {filteredValues.length > 0 && (\n <div className={styles.container}>\n {displayValues.map(({ value, count }) => {\n const percentage = maxCount > 0 ? (count / maxCount) * 100 : 0;\n const perRowColor = colorMap?.[value];\n const isEmpty = isEmptyValue(value);\n\n const isFilteredOut = showFilteredOutValues\n && count === 0\n && !selectedSet.has(value);\n return (\n <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 onClick={() => toggleValue(value)}\n aria-pressed={selectedSet.has(value)}\n style={perRowColor || percentage > 0\n ? ({\n \"--osdk-filter-listogram-bar-fill-scale\": percentage / 100,\n ...(perRowColor\n ? {\n \"--osdk-filter-listogram-row-bar-color\": perRowColor,\n }\n : undefined),\n } as React.CSSProperties)\n : undefined}\n >\n <span\n className={styles.checkbox}\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={selectedSet.has(value)}\n // eslint-disable-next-line react/jsx-no-bind\n onCheckedChange={() => toggleValue(value)}\n isExcluding={isExcluding}\n />\n </span>\n <span\n className={styles.label}\n data-excluding={(isExcluding && selectedSet.has(value))\n || undefined}\n >\n {isEmpty\n ? <NoValueLabel className={styles.noValueLabel} />\n : (renderValue?.(value) ?? value)}\n </span>\n {showCount && displayMode !== \"minimal\" && (\n <span\n className={styles.count}\n title={count.toLocaleString()}\n >\n {formatCompactCount(count)}\n </span>\n )}\n {displayMode === \"full\" && (\n <span className={styles.bar}>\n <span className={styles.barFill} />\n </span>\n )}\n </Button>\n );\n })}\n\n {hasMore && !isExpanded && (\n <Button\n type=\"button\"\n className={styles.viewAllButton}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => setIsExpanded(true)}\n >\n View all ({sortedValues.length})\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport const ListogramInput = memo(\n ListogramInputInner,\n) as typeof ListogramInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACnE,SAASC,QAAQ,QAAQ,+CAA+C;AAExE,SACEC,oBAAoB,EACpBC,YAAY,QACP,6BAA6B;AACpC,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,OAAOC,MAAM,MAAM,6BAA6B;AAChD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,YAAY,QAAQ,mBAAmB;AAChD,OAAOC,YAAY,MAAM,qBAAqB;AAC9C,SAASC,aAAa,QAAQ,oBAAoB;AAuBlD,SAASC,mBAAmBA,CAAC;EAC3BC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,cAAc;EACdC,QAAQ;EACRC,QAAQ;EACRC,WAAW,GAAG,MAAM;EACpBC,SAAS,GAAG,IAAI;EAChBC,WAAW;EACXC,qBAAqB,GAAG,IAAI;EAC5BC,SAAS;EACTC,KAAK;EACLC,eAAe;EACfC,WAAW;EACXC;AACmB,CAAC,EAAsB;EAC1C,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG5B,QAAQ,CAAC,KAAK,CAAC;EAEnD,MAAM6B,YAAY,GAAGpB,aAAa,CAACE,MAAM,EAAEE,SAAS,CAAC;EAErD,MAAMiB,WAAW,GAAG/B,OAAO,CAAC,MAAM,IAAIgC,GAAG,CAAChB,cAAc,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAE5E,MAAMiB,WAAW,GAAGlC,WAAW,CAC5BmC,KAAa,IAAK;IACjB,IAAIH,WAAW,CAACI,GAAG,CAACD,KAAK,CAAC,EAAE;MAC1BjB,QAAQ,CAACD,cAAc,CAACoB,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKH,KAAK,CAAC,CAAC;IACrD,CAAC,MAAM;MACLjB,QAAQ,CAAC,CAAC,GAAGD,cAAc,EAAEkB,KAAK,CAAC,CAAC;IACtC;EACF,CAAC,EACD,CAAClB,cAAc,EAAEe,WAAW,EAAEd,QAAQ,CACxC,CAAC;EAED,MAAMqB,cAAc,GAAGtC,OAAO,CAAC,MAAM;IACnC,IAAI0B,WAAW,EAAE;MACf,OAAOvB,oBAAoB,CACzB2B,YAAY,EACZJ,WAAW,EACVW,CAAC,IAAK;QACL,MAAME,QAAQ,GAAGZ,WAAW,GAAGU,CAAC,CAACH,KAAK,CAAC;QACvC,OAAO,OAAOK,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAGF,CAAC,CAACH,KAAK;MAC1D,CACF,CAAC;IACH;IACA,OAAOJ,YAAY;EACrB,CAAC,EAAE,CAACA,YAAY,EAAEJ,WAAW,EAAEC,WAAW,CAAC,CAAC;EAE5C,MAAMa,YAAY,GAAGxC,OAAO,CAAC,MAAM;IACjC,MAAMyC,QAAQ,GAAGH,cAAc,CAACF,MAAM,CAAEC,CAAC,IAAKN,WAAW,CAACI,GAAG,CAACE,CAAC,CAACH,KAAK,CAAC,CAAC;IACvE,MAAMQ,UAAU,GAAGJ,cAAc,CAACF,MAAM,CAAEC,CAAC,IAAK,CAACN,WAAW,CAACI,GAAG,CAACE,CAAC,CAACH,KAAK,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAGO,QAAQ,EAAE,GAAGC,UAAU,CAAC;EACrC,CAAC,EAAE,CAACJ,cAAc,EAAEP,WAAW,CAAC,CAAC;EAEjC,MAAMY,aAAa,GAAG3C,OAAO,CAAC,MAAM;IAClC,IAAI4B,UAAU,IAAI,CAACH,eAAe,EAAE,OAAOe,YAAY;IACvD,OAAOA,YAAY,CAACI,KAAK,CAAC,CAAC,EAAEnB,eAAe,CAAC;EAC/C,CAAC,EAAE,CAACe,YAAY,EAAEf,eAAe,EAAEG,UAAU,CAAC,CAAC;EAE/C,MAAMiB,OAAO,GAAGpB,eAAe,IAAI,IAAI,IAClCe,YAAY,CAACM,MAAM,GAAGrB,eAAe;EAE1C,oBACE5B,KAAA,CAAAkD,aAAA;IACExB,SAAS,EAAE3B,UAAU,CAACU,MAAM,CAAC0C,SAAS,EAAEzB,SAAS,CAAE;IACnDC,KAAK,EAAEA,KAAM;IACb,gBAAcV,SAAS,IAAIwB,cAAc,CAACQ,MAAM,GAAG;EAAE,GAEpD/B,KAAK,iBACJlB,KAAA,CAAAkD,aAAA;IAAKxB,SAAS,EAAEd,YAAY,CAACwC;EAAa,GAAC,wBACnB,EAAClC,KAAK,CAACmC,OAC1B,CACN,EAEA,CAACnC,KAAK,IAAIuB,cAAc,CAACQ,MAAM,KAAK,CAAC,IAAIhC,SAAS,iBACjDjB,KAAA,CAAAkD,aAAA,CAACxC,iBAAiB,MAAE,CACrB,EACA,CAACQ,KAAK,IAAIuB,cAAc,CAACQ,MAAM,KAAK,CAAC,IAAI,CAAChC,SAAS,iBAClDjB,KAAA,CAAAkD,aAAA;IAAKxB,SAAS,EAAEd,YAAY,CAAC0C;EAAa,GAAC,qBAAwB,CACpE,EAEAb,cAAc,CAACQ,MAAM,GAAG,CAAC,iBACxBjD,KAAA,CAAAkD,aAAA;IAAKxB,SAAS,EAAEjB,MAAM,CAAC8C;EAAU,GAC9BT,aAAa,CAACU,GAAG,CAAC,CAAC;IAAEnB,KAAK;IAAEoB;EAAM,CAAC,KAAK;IACvC,MAAMC,UAAU,GAAG1C,QAAQ,GAAG,CAAC,GAAIyC,KAAK,GAAGzC,QAAQ,GAAI,GAAG,GAAG,CAAC;IAC9D,MAAM2C,WAAW,GAAGtC,QAAQ,GAAGgB,KAAK,CAAC;IACrC,MAAMuB,OAAO,GAAGrD,YAAY,CAAC8B,KAAK,CAAC;IAEnC,MAAMwB,aAAa,GAAGpC,qBAAqB,IACtCgC,KAAK,KAAK,CAAC,IACX,CAACvB,WAAW,CAACI,GAAG,CAACD,KAAK,CAAC;IAC5B,oBACErC,KAAA,CAAAkD,aAAA,CAACpD,MAAM;MACLgE,GAAG,EAAEzB,KAAM;MACXX,SAAS,EAAEjB,MAAM,CAACsD,GAAI;MACtB,cAAYH,OAAO,IAAII,SAAU;MACjC,qBAAmBH,aAAa,IAAIG;MACpC;MAAA;MACAC,OAAO,EAAEA,CAAA,KAAM7B,WAAW,CAACC,KAAK,CAAE;MAClC,gBAAcH,WAAW,CAACI,GAAG,CAACD,KAAK,CAAE;MACrCV,KAAK,EAAEgC,WAAW,IAAID,UAAU,GAAG,CAAC,GAC/B;QACD,wCAAwC,EAAEA,UAAU,GAAG,GAAG;QAC1D,IAAIC,WAAW,GACX;UACA,uCAAuC,EAAEA;QAC3C,CAAC,GACCK,SAAS;MACf,CAAC,GACCA;IAAU,gBAEdhE,KAAA,CAAAkD,aAAA;MACExB,SAAS,EAAEjB,MAAM,CAACyD,QAAS;MAC3BD,OAAO,EAAGE,CAAC,IAAKA,CAAC,CAACC,eAAe,CAAC;IAAE,gBAEpCpE,KAAA,CAAAkD,aAAA,CAAC7C,QAAQ;MACPgE,OAAO,EAAEnC,WAAW,CAACI,GAAG,CAACD,KAAK;MAC9B;MAAA;MACAiC,eAAe,EAAEA,CAAA,KAAMlC,WAAW,CAACC,KAAK,CAAE;MAC1Cb,WAAW,EAAEA;IAAY,CAC1B,CACG,CAAC,eACPxB,KAAA,CAAAkD,aAAA;MACExB,SAAS,EAAEjB,MAAM,CAAC8D,KAAM;MACxB,kBAAiB/C,WAAW,IAAIU,WAAW,CAACI,GAAG,CAACD,KAAK,CAAC,IACjD2B;IAAU,GAEdJ,OAAO,gBACJ5D,KAAA,CAAAkD,aAAA,CAACvC,YAAY;MAACe,SAAS,EAAEjB,MAAM,CAAC+D;IAAa,CAAE,CAAC,GAC/C1C,WAAW,GAAGO,KAAK,CAAC,IAAIA,KACzB,CAAC,EACNd,SAAS,IAAID,WAAW,KAAK,SAAS,iBACrCtB,KAAA,CAAAkD,aAAA;MACExB,SAAS,EAAEjB,MAAM,CAACgD,KAAM;MACxBgB,KAAK,EAAEhB,KAAK,CAACiB,cAAc,CAAC;IAAE,GAE7BlE,kBAAkB,CAACiD,KAAK,CACrB,CACP,EACAnC,WAAW,KAAK,MAAM,iBACrBtB,KAAA,CAAAkD,aAAA;MAAMxB,SAAS,EAAEjB,MAAM,CAACkE;IAAI,gBAC1B3E,KAAA,CAAAkD,aAAA;MAAMxB,SAAS,EAAEjB,MAAM,CAACmE;IAAQ,CAAE,CAC9B,CAEF,CAAC;EAEb,CAAC,CAAC,EAED5B,OAAO,IAAI,CAACjB,UAAU,iBACrB/B,KAAA,CAAAkD,aAAA,CAACpD,MAAM;IACL+E,IAAI,EAAC,QAAQ;IACbnD,SAAS,EAAEjB,MAAM,CAACqE;IAClB;IAAA;IACAb,OAAO,EAAEA,CAAA,KAAMjC,aAAa,CAAC,IAAI;EAAE,GACpC,YACW,EAACW,YAAY,CAACM,MAAM,EAAC,GACzB,CAEP,CAEJ,CAAC;AAEV;AAEA,OAAO,MAAM8B,cAAc,gBAAG9E,IAAI,CAChCa,mBACF,CAA+B","ignoreList":[]}
@@ -83,7 +83,13 @@
83
83
 
84
84
  /* Muted styling for filtered-out (count=0) rows. */
85
85
  .row[data-filtered-out] {
86
- opacity: var(--osdk-filter-filtered-out-item-opacity);
86
+ --osdk-filter-listogram-count-color: var(
87
+ --osdk-filter-filtered-out-item-color
88
+ );
89
+ --osdk-filter-listogram-label-color: var(
90
+ --osdk-filter-filtered-out-item-color
91
+ );
92
+
87
93
  color: var(--osdk-filter-filtered-out-item-color);
88
94
  }
89
95
 
@@ -47,6 +47,7 @@ function MultiSelectInputInner({
47
47
  style,
48
48
  placeholder = "Select values...",
49
49
  showCounts = true,
50
+ showFilteredOutValues = true,
50
51
  ariaLabel = "Search values",
51
52
  renderValue,
52
53
  layout = "dropdown"
@@ -68,7 +69,7 @@ function MultiSelectInputInner({
68
69
  const renderItem = useCallback(value => {
69
70
  const isEmpty = isEmptyValue(value);
70
71
  const count = countByValue.get(value) ?? 0;
71
- const isFilteredOut = count === 0 && !selectedSet.has(value);
72
+ const isFilteredOut = showFilteredOutValues && count === 0 && !selectedSet.has(value);
72
73
  return /*#__PURE__*/React.createElement(Combobox.Item, {
73
74
  key: value,
74
75
  value: value,
@@ -78,7 +79,7 @@ function MultiSelectInputInner({
78
79
  }, isEmpty ? /*#__PURE__*/React.createElement(NoValueLabel, null) : renderValue ? renderValue(value) : value), showCounts && /*#__PURE__*/React.createElement("span", {
79
80
  className: styles.itemCount
80
81
  }, "(", count.toLocaleString(), ")"));
81
- }, [countByValue, selectedSet, showCounts, renderValue]);
82
+ }, [countByValue, selectedSet, showCounts, showFilteredOutValues, renderValue]);
82
83
  const renderChips = useCallback(selectedItems => /*#__PURE__*/React.createElement(React.Fragment, null, selectedItems.map(value => {
83
84
  const isEmpty = isEmptyValue(value);
84
85
  return /*#__PURE__*/React.createElement(Combobox.Chip, {
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectInput.js","names":["classnames","React","memo","useCallback","useMemo","Combobox","isEmptyValue","useFilterListBoundary","createRenderValueFilter","MultiSelectDropdownLayout","MultiSelectInlineLayout","styles","NoValueLabel","SelectInputSkeleton","sharedStyles","useStableData","MultiSelectInputInner","values","isLoading","error","selectedValues","onChange","className","style","placeholder","showCounts","ariaLabel","renderValue","layout","collisionBoundary","handleValueChange","newValues","stableValues","items","map","value","countByValue","Map","count","selectedSet","Set","comboboxFilter","undefined","renderItem","isEmpty","get","isFilteredOut","has","createElement","Item","key","filteredOutItem","ItemIndicator","itemLabel","itemCount","toLocaleString","renderChips","selectedItems","Fragment","Chip","ChipRemove","Input","length","isNoData","isReloading","multiSelect","srOnly","role","errorMessage","message","emptyMessage","Root","multiple","onValueChange","filter","MultiSelectInput"],"sources":["MultiSelectInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport { isEmptyValue } from \"../../utils/filterValues.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 { NoValueLabel } from \"./NoValueLabel.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 */\nexport type MultiSelectInputLayout = \"dropdown\" | \"inline\";\n\ninterface MultiSelectInputProps {\n values: PropertyAggregationValue[];\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (values: string[]) => void;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: string;\n showCounts?: boolean;\n ariaLabel?: string;\n renderValue?: (value: string) => React.ReactNode;\n layout?: MultiSelectInputLayout;\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 ariaLabel = \"Search values\",\n renderValue,\n layout = \"dropdown\",\n}: MultiSelectInputProps): React.ReactElement {\n const collisionBoundary = useFilterListBoundary();\n\n const handleValueChange = useCallback(\n (newValues: string[] | null) => {\n onChange(newValues ?? []);\n },\n [onChange],\n );\n\n const stableValues = useStableData(values, isLoading);\n\n const items = useMemo(\n () => stableValues.map(({ value }) => value),\n [stableValues],\n );\n\n const countByValue = useMemo(\n () => new Map(stableValues.map(({ value, count }) => [value, count])),\n [stableValues],\n );\n\n const selectedSet = useMemo(\n () => new Set(selectedValues),\n [selectedValues],\n );\n\n const comboboxFilter = useMemo(\n () => renderValue ? createRenderValueFilter(renderValue) : undefined,\n [renderValue],\n );\n\n const renderItem = useCallback(\n (value: string) => {\n const isEmpty = isEmptyValue(value);\n const count = countByValue.get(value) ?? 0;\n const isFilteredOut = count === 0 && !selectedSet.has(value);\n return (\n <Combobox.Item\n key={value}\n value={value}\n className={isFilteredOut ? styles.filteredOutItem : undefined}\n >\n <Combobox.ItemIndicator />\n <span className={styles.itemLabel}>\n {isEmpty\n ? <NoValueLabel />\n : (renderValue ? renderValue(value) : value)}\n </span>\n {showCounts && (\n <span className={styles.itemCount}>\n ({count.toLocaleString()})\n </span>\n )}\n </Combobox.Item>\n );\n },\n [countByValue, selectedSet, showCounts, renderValue],\n );\n\n const renderChips = useCallback(\n (selectedItems: string[]) => (\n <>\n {selectedItems.map((value) => {\n const isEmpty = isEmptyValue(value);\n return (\n <Combobox.Chip\n key={value}\n aria-label={isEmpty ? \"No value\" : value}\n >\n {isEmpty\n ? <NoValueLabel />\n : (renderValue ? renderValue(value) : value)}\n <Combobox.ChipRemove />\n </Combobox.Chip>\n );\n })}\n <Combobox.Input\n placeholder={selectedItems.length > 0 ? \"\" : placeholder}\n aria-label={ariaLabel}\n />\n </>\n ),\n [placeholder, ariaLabel, renderValue],\n );\n\n const isNoData = !error && stableValues.length === 0;\n const isReloading = isLoading && stableValues.length > 0;\n\n return (\n <div\n className={classnames(styles.multiSelect, className)}\n style={style}\n data-loading={isReloading}\n >\n <span className={sharedStyles.srOnly} role=\"status\">\n {isLoading ? \"Loading options\" : \"\"}\n </span>\n\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading options: {error.message}\n </div>\n )}\n\n {isNoData && isLoading && <SelectInputSkeleton />}\n {isNoData && !isLoading && (\n <div className={sharedStyles.emptyMessage}>\n No options available\n </div>\n )}\n\n {stableValues.length > 0 && (\n <Combobox.Root<string, true>\n multiple={true}\n value={selectedValues}\n onValueChange={handleValueChange}\n items={items}\n filter={comboboxFilter}\n >\n {layout === \"inline\"\n ? (\n <MultiSelectInlineLayout\n placeholder={placeholder}\n ariaLabel={ariaLabel}\n renderItem={renderItem}\n />\n )\n : (\n <MultiSelectDropdownLayout\n renderChips={renderChips}\n renderItem={renderItem}\n collisionBoundary={collisionBoundary}\n />\n )}\n </Combobox.Root>\n )}\n </div>\n );\n}\n\nexport const MultiSelectInput = memo(\n MultiSelectInputInner,\n) as typeof MultiSelectInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MultiSelectInput.js","names":["classnames","React","memo","useCallback","useMemo","Combobox","isEmptyValue","useFilterListBoundary","createRenderValueFilter","MultiSelectDropdownLayout","MultiSelectInlineLayout","styles","NoValueLabel","SelectInputSkeleton","sharedStyles","useStableData","MultiSelectInputInner","values","isLoading","error","selectedValues","onChange","className","style","placeholder","showCounts","showFilteredOutValues","ariaLabel","renderValue","layout","collisionBoundary","handleValueChange","newValues","stableValues","items","map","value","countByValue","Map","count","selectedSet","Set","comboboxFilter","undefined","renderItem","isEmpty","get","isFilteredOut","has","createElement","Item","key","filteredOutItem","ItemIndicator","itemLabel","itemCount","toLocaleString","renderChips","selectedItems","Fragment","Chip","ChipRemove","Input","length","isNoData","isReloading","multiSelect","srOnly","role","errorMessage","message","emptyMessage","Root","multiple","onValueChange","filter","MultiSelectInput"],"sources":["MultiSelectInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport { isEmptyValue } from \"../../utils/filterValues.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 { NoValueLabel } from \"./NoValueLabel.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 */\nexport type MultiSelectInputLayout = \"dropdown\" | \"inline\";\n\ninterface MultiSelectInputProps {\n values: PropertyAggregationValue[];\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (values: string[]) => void;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: string;\n showCounts?: boolean;\n showFilteredOutValues?: boolean;\n ariaLabel?: string;\n renderValue?: (value: string) => React.ReactNode;\n layout?: MultiSelectInputLayout;\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}: MultiSelectInputProps): React.ReactElement {\n const collisionBoundary = useFilterListBoundary();\n\n const handleValueChange = useCallback(\n (newValues: string[] | null) => {\n onChange(newValues ?? []);\n },\n [onChange],\n );\n\n const stableValues = useStableData(values, isLoading);\n\n const items = useMemo(\n () => stableValues.map(({ value }) => value),\n [stableValues],\n );\n\n const countByValue = useMemo(\n () => new Map(stableValues.map(({ value, count }) => [value, count])),\n [stableValues],\n );\n\n const selectedSet = useMemo(\n () => new Set(selectedValues),\n [selectedValues],\n );\n\n const comboboxFilter = useMemo(\n () => renderValue ? createRenderValueFilter(renderValue) : undefined,\n [renderValue],\n );\n\n const renderItem = useCallback(\n (value: string) => {\n const isEmpty = isEmptyValue(value);\n const count = countByValue.get(value) ?? 0;\n const isFilteredOut = showFilteredOutValues\n && count === 0\n && !selectedSet.has(value);\n return (\n <Combobox.Item\n key={value}\n value={value}\n className={isFilteredOut ? styles.filteredOutItem : undefined}\n >\n <Combobox.ItemIndicator />\n <span className={styles.itemLabel}>\n {isEmpty\n ? <NoValueLabel />\n : (renderValue ? renderValue(value) : value)}\n </span>\n {showCounts && (\n <span className={styles.itemCount}>\n ({count.toLocaleString()})\n </span>\n )}\n </Combobox.Item>\n );\n },\n [countByValue, selectedSet, showCounts, showFilteredOutValues, renderValue],\n );\n\n const renderChips = useCallback(\n (selectedItems: string[]) => (\n <>\n {selectedItems.map((value) => {\n const isEmpty = isEmptyValue(value);\n return (\n <Combobox.Chip\n key={value}\n aria-label={isEmpty ? \"No value\" : value}\n >\n {isEmpty\n ? <NoValueLabel />\n : (renderValue ? renderValue(value) : value)}\n <Combobox.ChipRemove />\n </Combobox.Chip>\n );\n })}\n <Combobox.Input\n placeholder={selectedItems.length > 0 ? \"\" : placeholder}\n aria-label={ariaLabel}\n />\n </>\n ),\n [placeholder, ariaLabel, renderValue],\n );\n\n const isNoData = !error && stableValues.length === 0;\n const isReloading = isLoading && stableValues.length > 0;\n\n return (\n <div\n className={classnames(styles.multiSelect, className)}\n style={style}\n data-loading={isReloading}\n >\n <span className={sharedStyles.srOnly} role=\"status\">\n {isLoading ? \"Loading options\" : \"\"}\n </span>\n\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading options: {error.message}\n </div>\n )}\n\n {isNoData && isLoading && <SelectInputSkeleton />}\n {isNoData && !isLoading && (\n <div className={sharedStyles.emptyMessage}>\n No options available\n </div>\n )}\n\n {stableValues.length > 0 && (\n <Combobox.Root<string, true>\n multiple={true}\n value={selectedValues}\n onValueChange={handleValueChange}\n items={items}\n filter={comboboxFilter}\n >\n {layout === \"inline\"\n ? (\n <MultiSelectInlineLayout\n placeholder={placeholder}\n ariaLabel={ariaLabel}\n renderItem={renderItem}\n />\n )\n : (\n <MultiSelectDropdownLayout\n renderChips={renderChips}\n renderItem={renderItem}\n collisionBoundary={collisionBoundary}\n />\n )}\n </Combobox.Root>\n )}\n </div>\n );\n}\n\nexport const MultiSelectInput = memo(\n MultiSelectInputInner,\n) as typeof MultiSelectInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -49,7 +49,10 @@
49
49
 
50
50
  /* Muted styling for filtered-out (count=0) entries. */
51
51
  .filteredOutItem {
52
- opacity: var(--osdk-filter-filtered-out-item-opacity);
52
+ --osdk-filter-multiselect-count-color: var(
53
+ --osdk-filter-filtered-out-item-color
54
+ );
55
+
53
56
  color: var(--osdk-filter-filtered-out-item-color);
54
57
  }
55
58
 
@@ -22,6 +22,10 @@ import { MultiSelectInput } from "../base/inputs/MultiSelectInput.js";
22
22
  import { SingleSelectInput } from "../base/inputs/SingleSelectInput.js";
23
23
  import { TextTagsInput } from "../base/inputs/TextTagsInput.js";
24
24
  import { coerceToString, coerceToStringArray } from "../utils/coerceFilterValue.js";
25
+
26
+ // Static values are caller-provided options, not aggregation results, so their
27
+ // zero counts should not be interpreted as values filtered out by another facet.
28
+ const SHOW_FILTERED_OUT_VALUES = false;
25
29
  /**
26
30
  * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).
27
31
  */
@@ -117,6 +121,7 @@ function StaticValuesFilterInputInner({
117
121
  displayMode: definition.listogramConfig?.displayMode,
118
122
  showCount: definition.showCount,
119
123
  isExcluding: isExcluding,
124
+ showFilteredOutValues: SHOW_FILTERED_OUT_VALUES,
120
125
  maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,
121
126
  searchQuery: searchQuery,
122
127
  renderValue: definition.renderValue
@@ -152,6 +157,7 @@ function StaticValuesFilterInputInner({
152
157
  selectedValues: select.selectedValues,
153
158
  onChange: select.handleMultiChange,
154
159
  showCounts: definition.showCount,
160
+ showFilteredOutValues: SHOW_FILTERED_OUT_VALUES,
155
161
  ariaLabel: `Search ${definition.key} values`,
156
162
  renderValue: definition.renderValue,
157
163
  layout: layout
@@ -1 +1 @@
1
- {"version":3,"file":"StaticValuesFilterInput.js","names":["React","memo","useCallback","useMemo","assertUnreachable","FilterInputExcludeRow","ListogramInput","MultiSelectInput","SingleSelectInput","TextTagsInput","coerceToString","coerceToStringArray","useExactMatchState","filterState","onFilterStateChanged","isExcluding","selectedValues","type","values","handleClearAll","handleChange","useSelectState","selectedValue","undefined","handleSingleChange","value","handleMultiChange","StaticValuesFilterInputInner","definition","searchQuery","excludeRowOpen","layout","aggregationValues","map","count","exactMatch","select","filterComponent","createElement","totalValueCount","length","onClearAll","maxCount","isLoading","error","onChange","colorMap","displayMode","listogramConfig","showCount","maxVisibleItems","renderValue","showCounts","ariaLabel","key","suggestions","tags","StaticValuesFilterInput"],"sources":["StaticValuesFilterInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition } from \"@osdk/api\";\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 {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} from \"../base/inputs/MultiSelectInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\nimport type { StaticValuesFilterDefinition } from \"../types/StaticValuesTypes.js\";\nimport {\n coerceToString,\n coerceToStringArray,\n} from \"../utils/coerceFilterValue.js\";\n\ninterface StaticValuesFilterInputProps<Q extends ObjectTypeDefinition> {\n /** The static values filter definition containing values and component config */\n definition: StaticValuesFilterDefinition<Q>;\n /** Current filter state, or undefined if no selection has been made */\n filterState: FilterState | undefined;\n /** Callback fired when the user changes the filter selection */\n onFilterStateChanged: (state: FilterState) => void;\n /** Search term for filtering displayed values within the filter input */\n searchQuery?: string;\n /** Whether the inline exclude row is currently open */\n excludeRowOpen?: boolean;\n /** Layout for `MULTI_SELECT` rendering. Forwarded to `MultiSelectInput`. */\n layout?: MultiSelectInputLayout;\n}\n\n/**\n * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).\n */\nfunction useExactMatchState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return { selectedValues, handleClearAll, handleChange };\n}\n\n/**\n * Hooks for SELECT state management (used by SINGLE_SELECT and MULTI_SELECT).\n */\nfunction useSelectState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleSingleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const handleMultiChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return {\n selectedValue,\n selectedValues,\n handleClearAll,\n handleSingleChange,\n handleMultiChange,\n };\n}\n\nfunction StaticValuesFilterInputInner<Q extends ObjectTypeDefinition>({\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen,\n layout,\n}: StaticValuesFilterInputProps<Q>): React.ReactElement {\n const aggregationValues: PropertyAggregationValue[] = useMemo(\n () => definition.values.map((value) => ({ value, count: 0 })),\n [definition.values],\n );\n\n const isExcluding = filterState?.isExcluding ?? false;\n\n const exactMatch = useExactMatchState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n const select = useSelectState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n\n switch (definition.filterComponent) {\n case \"LISTOGRAM\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <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 maxVisibleItems={definition.listogramConfig?.maxVisibleItems ?? 5}\n searchQuery={searchQuery}\n renderValue={definition.renderValue}\n />\n </FilterInputExcludeRow>\n );\n\n case \"SINGLE_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <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 </FilterInputExcludeRow>\n );\n\n case \"MULTI_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <MultiSelectInput\n values={aggregationValues}\n isLoading={false}\n error={null}\n selectedValues={select.selectedValues}\n onChange={select.handleMultiChange}\n showCounts={definition.showCount}\n ariaLabel={`Search ${definition.key} values`}\n renderValue={definition.renderValue}\n layout={layout}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TEXT_TAGS\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <TextTagsInput\n suggestions={aggregationValues}\n isLoading={false}\n error={null}\n tags={exactMatch.selectedValues}\n onChange={exactMatch.handleChange}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return assertUnreachable(definition.filterComponent);\n }\n}\n\nexport const StaticValuesFilterInput: typeof StaticValuesFilterInputInner =\n memo(\n StaticValuesFilterInputInner,\n ) as typeof StaticValuesFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"StaticValuesFilterInput.js","names":["React","memo","useCallback","useMemo","assertUnreachable","FilterInputExcludeRow","ListogramInput","MultiSelectInput","SingleSelectInput","TextTagsInput","coerceToString","coerceToStringArray","SHOW_FILTERED_OUT_VALUES","useExactMatchState","filterState","onFilterStateChanged","isExcluding","selectedValues","type","values","handleClearAll","handleChange","useSelectState","selectedValue","undefined","handleSingleChange","value","handleMultiChange","StaticValuesFilterInputInner","definition","searchQuery","excludeRowOpen","layout","aggregationValues","map","count","exactMatch","select","filterComponent","createElement","totalValueCount","length","onClearAll","maxCount","isLoading","error","onChange","colorMap","displayMode","listogramConfig","showCount","showFilteredOutValues","maxVisibleItems","renderValue","showCounts","ariaLabel","key","suggestions","tags","StaticValuesFilterInput"],"sources":["StaticValuesFilterInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition } from \"@osdk/api\";\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 {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} from \"../base/inputs/MultiSelectInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\nimport type { StaticValuesFilterDefinition } from \"../types/StaticValuesTypes.js\";\nimport {\n coerceToString,\n coerceToStringArray,\n} 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\ninterface StaticValuesFilterInputProps<Q extends ObjectTypeDefinition> {\n /** The static values filter definition containing values and component config */\n definition: StaticValuesFilterDefinition<Q>;\n /** Current filter state, or undefined if no selection has been made */\n filterState: FilterState | undefined;\n /** Callback fired when the user changes the filter selection */\n onFilterStateChanged: (state: FilterState) => void;\n /** Search term for filtering displayed values within the filter input */\n searchQuery?: string;\n /** Whether the inline exclude row is currently open */\n excludeRowOpen?: boolean;\n /** Layout for `MULTI_SELECT` rendering. Forwarded to `MultiSelectInput`. */\n layout?: MultiSelectInputLayout;\n}\n\n/**\n * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).\n */\nfunction useExactMatchState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return { selectedValues, handleClearAll, handleChange };\n}\n\n/**\n * Hooks for SELECT state management (used by SINGLE_SELECT and MULTI_SELECT).\n */\nfunction useSelectState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleSingleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const handleMultiChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return {\n selectedValue,\n selectedValues,\n handleClearAll,\n handleSingleChange,\n handleMultiChange,\n };\n}\n\nfunction StaticValuesFilterInputInner<Q extends ObjectTypeDefinition>({\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen,\n layout,\n}: StaticValuesFilterInputProps<Q>): React.ReactElement {\n const aggregationValues: PropertyAggregationValue[] = useMemo(\n () => definition.values.map((value) => ({ value, count: 0 })),\n [definition.values],\n );\n\n const isExcluding = filterState?.isExcluding ?? false;\n\n const exactMatch = useExactMatchState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n const select = useSelectState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n\n switch (definition.filterComponent) {\n case \"LISTOGRAM\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <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 </FilterInputExcludeRow>\n );\n\n case \"SINGLE_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <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 </FilterInputExcludeRow>\n );\n\n case \"MULTI_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <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 </FilterInputExcludeRow>\n );\n\n case \"TEXT_TAGS\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <TextTagsInput\n suggestions={aggregationValues}\n isLoading={false}\n error={null}\n tags={exactMatch.selectedValues}\n onChange={exactMatch.handleChange}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return assertUnreachable(definition.filterComponent);\n }\n}\n\nexport const StaticValuesFilterInput: typeof StaticValuesFilterInputInner =\n memo(\n StaticValuesFilterInputInner,\n ) as typeof StaticValuesFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,iBAAiB,QAAQ,mCAAmC;AACrE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SACEC,gBAAgB,QAEX,oCAAoC;AAC3C,SAASC,iBAAiB,QAAQ,qCAAqC;AACvE,SAASC,aAAa,QAAQ,iCAAiC;AAI/D,SACEC,cAAc,EACdC,mBAAmB,QACd,+BAA+B;;AAEtC;AACA;AACA,MAAMC,wBAAwB,GAAG,KAAK;AAiBtC;AACA;AACA;AACA,SAASC,kBAAkBA,CACzBC,WAAoC,EACpCC,oBAAkD,EAClDC,WAAoB,EACpB;EACA,MAAMC,cAAc,GAAGd,OAAO,CAC5B,MACEW,WAAW,EAAEI,IAAI,KAAK,aAAa,GAC/BP,mBAAmB,CAACG,WAAW,CAACK,MAAM,CAAC,GACvC,EAAE,EACR,CAACL,WAAW,CACd,CAAC;EAED,MAAMM,cAAc,GAAGlB,WAAW,CAAC,MAAM;IACvCa,oBAAoB,CAAC;MACnBG,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE,EAAE;MACVH;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACD,oBAAoB,EAAEC,WAAW,CAAC,CAAC;EAEvC,MAAMK,YAAY,GAAGnB,WAAW,CAC7BiB,MAAgB,IAAK;IACpBJ,oBAAoB,CAAC;MACnBG,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNH;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACD,oBAAoB,EAAEC,WAAW,CACpC,CAAC;EAED,OAAO;IAAEC,cAAc;IAAEG,cAAc;IAAEC;EAAa,CAAC;AACzD;;AAEA;AACA;AACA;AACA,SAASC,cAAcA,CACrBR,WAAoC,EACpCC,oBAAkD,EAClDC,WAAoB,EACpB;EACA,MAAMO,aAAa,GAAGpB,OAAO,CAC3B,MACEW,WAAW,EAAEI,IAAI,KAAK,QAAQ,GAC1BR,cAAc,CAACI,WAAW,CAACG,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CO,SAAS,EACf,CAACV,WAAW,CACd,CAAC;EAED,MAAMG,cAAc,GAAGd,OAAO,CAC5B,MACEW,WAAW,EAAEI,IAAI,KAAK,QAAQ,GAC1BP,mBAAmB,CAACG,WAAW,CAACG,cAAc,CAAC,GAC/C,EAAE,EACR,CAACH,WAAW,CACd,CAAC;EAED,MAAMM,cAAc,GAAGlB,WAAW,CAAC,MAAM;IACvCa,oBAAoB,CAAC;MACnBG,IAAI,EAAE,QAAQ;MACdD,cAAc,EAAE,EAAE;MAClBD;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACD,oBAAoB,EAAEC,WAAW,CAAC,CAAC;EAEvC,MAAMS,kBAAkB,GAAGvB,WAAW,CACnCwB,KAAyB,IAAK;IAC7BX,oBAAoB,CAAC;MACnBG,IAAI,EAAE,QAAQ;MACdD,cAAc,EAAES,KAAK,KAAKF,SAAS,GAAG,CAACE,KAAK,CAAC,GAAG,EAAE;MAClDV;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACD,oBAAoB,EAAEC,WAAW,CACpC,CAAC;EAED,MAAMW,iBAAiB,GAAGzB,WAAW,CAClCe,cAAwB,IAAK;IAC5BF,oBAAoB,CAAC;MACnBG,IAAI,EAAE,QAAQ;MACdD,cAAc;MACdD;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACD,oBAAoB,EAAEC,WAAW,CACpC,CAAC;EAED,OAAO;IACLO,aAAa;IACbN,cAAc;IACdG,cAAc;IACdK,kBAAkB;IAClBE;EACF,CAAC;AACH;AAEA,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVf,WAAW;EACXC,oBAAoB;EACpBe,WAAW;EACXC,cAAc;EACdC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,iBAA6C,GAAG9B,OAAO,CAC3D,MAAM0B,UAAU,CAACV,MAAM,CAACe,GAAG,CAAER,KAAK,KAAM;IAAEA,KAAK;IAAES,KAAK,EAAE;EAAE,CAAC,CAAC,CAAC,EAC7D,CAACN,UAAU,CAACV,MAAM,CACpB,CAAC;EAED,MAAMH,WAAW,GAAGF,WAAW,EAAEE,WAAW,IAAI,KAAK;EAErD,MAAMoB,UAAU,GAAGvB,kBAAkB,CACnCC,WAAW,EACXC,oBAAoB,EACpBC,WACF,CAAC;EACD,MAAMqB,MAAM,GAAGf,cAAc,CAC3BR,WAAW,EACXC,oBAAoB,EACpBC,WACF,CAAC;EAED,QAAQa,UAAU,CAACS,eAAe;IAChC,KAAK,WAAW;MACd,oBACEtC,KAAA,CAAAuC,aAAA,CAAClC,qBAAqB;QACpB0B,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEN,UAAU,CAAChB;MAAe,gBAEtCpB,KAAA,CAAAuC,aAAA,CAACjC,cAAc;QACba,MAAM,EAAEc,iBAAkB;QAC1BU,QAAQ,EAAE,CAAE;QACZC,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZ5B,cAAc,EAAEmB,UAAU,CAACnB,cAAe;QAC1C6B,QAAQ,EAAEV,UAAU,CAACf,YAAa;QAClC0B,QAAQ,EAAElB,UAAU,CAACkB,QAAS;QAC9BC,WAAW,EAAEnB,UAAU,CAACoB,eAAe,EAAED,WAAY;QACrDE,SAAS,EAAErB,UAAU,CAACqB,SAAU;QAChClC,WAAW,EAAEA,WAAY;QACzBmC,qBAAqB,EAAEvC,wBAAyB;QAChDwC,eAAe,EAAEvB,UAAU,CAACoB,eAAe,EAAEG,eAAe,IAAI,CAAE;QAClEtB,WAAW,EAAEA,WAAY;QACzBuB,WAAW,EAAExB,UAAU,CAACwB;MAAY,CACrC,CACoB,CAAC;IAG5B,KAAK,eAAe;MAClB,oBACErD,KAAA,CAAAuC,aAAA,CAAClC,qBAAqB;QACpB0B,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEL,MAAM,CAACjB;MAAe,gBAElCpB,KAAA,CAAAuC,aAAA,CAAC/B,iBAAiB;QAChBW,MAAM,EAAEc,iBAAkB;QAC1BW,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZtB,aAAa,EAAEc,MAAM,CAACd,aAAc;QACpCuB,QAAQ,EAAET,MAAM,CAACZ,kBAAmB;QACpC6B,UAAU,EAAEzB,UAAU,CAACqB,SAAU;QACjCK,SAAS,EAAE,UAAU1B,UAAU,CAAC2B,GAAG,EAAG;QACtCH,WAAW,EAAExB,UAAU,CAACwB;MAAY,CACrC,CACoB,CAAC;IAG5B,KAAK,cAAc;MACjB,oBACErD,KAAA,CAAAuC,aAAA,CAAClC,qBAAqB;QACpB0B,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEL,MAAM,CAACjB;MAAe,gBAElCpB,KAAA,CAAAuC,aAAA,CAAChC,gBAAgB;QACfY,MAAM,EAAEc,iBAAkB;QAC1BW,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZ5B,cAAc,EAAEoB,MAAM,CAACpB,cAAe;QACtC6B,QAAQ,EAAET,MAAM,CAACV,iBAAkB;QACnC2B,UAAU,EAAEzB,UAAU,CAACqB,SAAU;QACjCC,qBAAqB,EAAEvC,wBAAyB;QAChD2C,SAAS,EAAE,UAAU1B,UAAU,CAAC2B,GAAG,SAAU;QAC7CH,WAAW,EAAExB,UAAU,CAACwB,WAAY;QACpCrB,MAAM,EAAEA;MAAO,CAChB,CACoB,CAAC;IAG5B,KAAK,WAAW;MACd,oBACEhC,KAAA,CAAAuC,aAAA,CAAClC,qBAAqB;QACpB0B,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEN,UAAU,CAAChB;MAAe,gBAEtCpB,KAAA,CAAAuC,aAAA,CAAC9B,aAAa;QACZgD,WAAW,EAAExB,iBAAkB;QAC/BW,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZa,IAAI,EAAEtB,UAAU,CAACnB,cAAe;QAChC6B,QAAQ,EAAEV,UAAU,CAACf;MAAa,CACnC,CACoB,CAAC;IAG5B;MACE,OAAOjB,iBAAiB,CAACyB,UAAU,CAACS,eAAe,CAAC;EACxD;AACF;AAEA,OAAO,MAAMqB,uBAA4D,gBACvE1D,IAAI,CACF2B,4BACF,CAAwC","ignoreList":[]}
@@ -1093,7 +1093,6 @@
1093
1093
 
1094
1094
  /* Filtered-out entries: values present in the wider scope but absent from
1095
1095
  the narrowed scope. Rendered as count=0 muted rows. */
1096
- --osdk-filter-filtered-out-item-opacity: 0.5;
1097
1096
  --osdk-filter-filtered-out-item-color: var(--osdk-typography-color-muted);
1098
1097
 
1099
1098
  /* Filter List Header */
@@ -6146,7 +6145,13 @@
6146
6145
 
6147
6146
  /* Muted styling for filtered-out (count=0) rows. */
6148
6147
  .ListogramInput-module__row___rps-rpjo[data-filtered-out] {
6149
- opacity: var(--osdk-filter-filtered-out-item-opacity);
6148
+ --osdk-filter-listogram-count-color: var(
6149
+ --osdk-filter-filtered-out-item-color
6150
+ );
6151
+ --osdk-filter-listogram-label-color: var(
6152
+ --osdk-filter-filtered-out-item-color
6153
+ );
6154
+
6150
6155
  color: var(--osdk-filter-filtered-out-item-color);
6151
6156
  }
6152
6157
 
@@ -6370,7 +6375,10 @@
6370
6375
 
6371
6376
  /* Muted styling for filtered-out (count=0) entries. */
6372
6377
  .MultiSelectInput-module__filteredOutItem___rJBjg1Q3 {
6373
- opacity: var(--osdk-filter-filtered-out-item-opacity);
6378
+ --osdk-filter-multiselect-count-color: var(
6379
+ --osdk-filter-filtered-out-item-color
6380
+ );
6381
+
6374
6382
  color: var(--osdk-filter-filtered-out-item-color);
6375
6383
  }
6376
6384
 
@@ -24,7 +24,6 @@
24
24
 
25
25
  /* Filtered-out entries: values present in the wider scope but absent from
26
26
  the narrowed scope. Rendered as count=0 muted rows. */
27
- --osdk-filter-filtered-out-item-opacity: 0.5;
28
27
  --osdk-filter-filtered-out-item-color: var(--osdk-typography-color-muted);
29
28
 
30
29
  /* Filter List Header */
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const PACKAGE_USER_AGENT = `osdk-react-components/${"0.22.1-main-21003f18ccef5c145fef179ed2900bdcca6df43f"}`;
17
+ const PACKAGE_USER_AGENT = `osdk-react-components/${"0.23.0"}`;
18
18
  export function componentUserAgent(componentName) {
19
19
  return `${PACKAGE_USER_AGENT}/${componentName}`;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,iFAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
1
+ {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,mCAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunkKHMOMROL_cjs = require('./chunk-KHMOMROL.cjs');
4
+ var chunkZIYQXEEB_cjs = require('./chunk-ZIYQXEEB.cjs');
5
+
6
+ // src/public/experimental/video-viewer.ts
7
+ var VideoViewer2 = chunkZIYQXEEB_cjs.withOsdkMetrics(chunkKHMOMROL_cjs.VideoViewer, "VideoViewer");
8
+
9
+ exports.VideoViewer = VideoViewer2;
10
+ //# sourceMappingURL=chunk-44Q6YNJY.cjs.map
11
+ //# sourceMappingURL=chunk-44Q6YNJY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public/experimental/video-viewer.ts"],"names":["VideoViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-RMDTKNEH.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\n// BaseVideoViewer\nexport { BaseVideoViewer } from \"../../video-viewer/BaseVideoViewer.js\";\n// VideoViewer (Media wrapper)\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nimport { VideoViewer as _VideoViewer } from \"../../video-viewer/VideoViewer.js\";\nexport const VideoViewer = withOsdkMetrics(_VideoViewer, \"VideoViewer\");"]}
1
+ {"version":3,"sources":["../../src/public/experimental/video-viewer.ts"],"names":["VideoViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-44Q6YNJY.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\n// BaseVideoViewer\nexport { BaseVideoViewer } from \"../../video-viewer/BaseVideoViewer.js\";\n// VideoViewer (Media wrapper)\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nimport { VideoViewer as _VideoViewer } from \"../../video-viewer/VideoViewer.js\";\nexport const VideoViewer = withOsdkMetrics(_VideoViewer, \"VideoViewer\");"]}
@@ -9,7 +9,7 @@ var chunkOUJQJQ7N_cjs = require('./chunk-OUJQJQ7N.cjs');
9
9
  var chunkPKJFOG2Z_cjs = require('./chunk-PKJFOG2Z.cjs');
10
10
  var chunk4VJIPB7R_cjs = require('./chunk-4VJIPB7R.cjs');
11
11
  var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
12
- var chunkP34CUCZX_cjs = require('./chunk-P34CUCZX.cjs');
12
+ var chunkZIYQXEEB_cjs = require('./chunk-ZIYQXEEB.cjs');
13
13
  var icons = require('@blueprintjs/icons');
14
14
  var classnames = require('classnames');
15
15
  var React2 = require('react');
@@ -310,9 +310,9 @@ function DocumentViewer({
310
310
  }
311
311
 
312
312
  // src/public/experimental/document-viewer.ts
313
- var DocumentViewer2 = chunkP34CUCZX_cjs.withOsdkMetrics(DocumentViewer, "DocumentViewer");
313
+ var DocumentViewer2 = chunkZIYQXEEB_cjs.withOsdkMetrics(DocumentViewer, "DocumentViewer");
314
314
 
315
315
  exports.DocumentViewer = DocumentViewer2;
316
316
  exports.ViewerType = ViewerType;
317
- //# sourceMappingURL=chunk-7UB7SNYR.cjs.map
318
- //# sourceMappingURL=chunk-7UB7SNYR.cjs.map
317
+ //# sourceMappingURL=chunk-CDKWDUSS.cjs.map
318
+ //# sourceMappingURL=chunk-CDKWDUSS.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/document-viewer/DocumentViewer.module.css","../../src/document-viewer/DocumentViewerApi.ts","../../src/document-viewer/hooks/useTiffToPdf.ts","../../src/document-viewer/TiffDocumentViewer.tsx","../../src/document-viewer/DocumentViewer.tsx","../../src/public/experimental/document-viewer.ts"],"names":["ViewerType","useOsdkClient","useState","useRef","useEffect","UTIF","__EXPERIMENTAL__NOT_SUPPORTED_YET__transformAndWait","React","Spin","BasePdfViewer","TiffViewerMedia","_extends","useMemo","classnames","PdfViewer","ImageViewer","VideoViewer","MarkdownViewerMedia","ExcelViewer","EmailViewer","XmlViewer","DocumentIcon","assertUnreachable","DocumentViewer","withOsdkMetrics"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,sBAAA,GAAA,EAAA;;;ACgBO,IAAI,UAAA,6BAAoCA,WAAAA,EAAY;AACzD,EAAAA,WAAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACpB,EAAAA,WAAAA,CAAW,MAAM,CAAA,GAAI,MAAA;AACrB,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,UAAU,CAAA,GAAI,UAAA;AACzB,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACpB,EAAAA,WAAAA,CAAW,aAAa,CAAA,GAAI,aAAA;AAC5B,EAAA,OAAOA,WAAAA;AACT,CAAA,EAAE,EAAE;ACJJ,IAAM,eAAA,GAAkB;AAAA,EACtB,YAAY,UAAA,CAAW,IAAA;AAAA,EACvB,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,KAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AASO,SAAS,YAAA,CAAa,OAAO,OAAA,EAAS;AAC3C,EAAA,MAAM,SAASC,mBAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,gBAAS,eAAe,CAAA;AACpD,EAAA,MAAM,QAAA,GAAWC,cAAO,KAAK,CAAA;AAC7B,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,EAAAC,gBAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,SAAA,CAAU,eAAe,CAAA;AACzB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,SAAA,CAAU;AAAA,MACR,YAAY,UAAA,CAAW,IAAA;AAAA,MACvB,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,eAAe,kBAAA,GAAqB;AAClC,MAAA,MAAM,eAAe,QAAA,CAAS,OAAA;AAG9B,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,aAAA,EAAc;AAClD,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,WAAA,EAAY;AAC1C,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAM,IAAA,GAAYC,uBAAO,MAAM,CAAA;AAC/B,MAAA,MAAM,YAAY,IAAA,CAAK,MAAA;AACvB,MAAA,IAAI,aAAa,CAAA,EAAG;AAElB,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,SAAA,CAAU;AAAA,YACR,YAAY,UAAA,CAAW,IAAA;AAAA,YACvB,OAAA,EAAS,MAAA;AAAA,YACT,OAAA,EAAS,KAAA;AAAA,YACT,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,cAAA,GAAiB,aAAa,iBAAA,EAAkB;AACtD,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAOC,4DAAmD,EAAE,gBAAA,CAAiB;AAAA,QACrG,cAAA;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,gBAAA,EAAkB;AAAA,YAChB,UAAA,EAAY;AAAA,cACV,YAAY;AAAC;AACf;AACF;AACF,OACD,CAAA;AACD,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAM,SAAA,GAAY,MAAM,WAAA,CAAY,WAAA,EAAY;AAChD,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,SAAA,CAAU;AAAA,UACR,YAAY,UAAA,CAAW,GAAA;AAAA,UACvB,OAAA,EAAS,SAAA;AAAA,UACT,OAAA,EAAS,KAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,MACH;AAAA,IACF;AACA,IAAA,kBAAA,EAAmB,CAAE,MAAM,CAAA,GAAA,KAAO;AAChC,MAAA,IAAI,CAAC,SAAA,EAAW;AAEd,QAAA,OAAA,CAAQ,IAAA,CAAK,iEAAiE,GAAG,CAAA;AACjF,QAAA,SAAA,CAAU;AAAA,UACR,YAAY,UAAA,CAAW,IAAA;AAAA,UACvB,OAAA,EAAS,MAAA;AAAA,UACT,OAAA,EAAS,KAAA;AAAA,UACT,KAAA,EAAO,eAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC;AAAA,SAC1D,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,OAAA,EAAS,MAAM,CAAC,CAAA;AAC3B,EAAA,OAAO,MAAA;AACT;;;ACpHA,SAAS,QAAA,GAAW;AAAE,EAAA,OAAO,QAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAG,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AAwB5Q,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,YAAA,CAAa,KAAA,EAAO,eAAe,CAAA;AACvC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBAAoBC,uBAAA,CAAM,cAAc,KAAA,EAAO;AAAA,MAC7C;AAAA,KACF,kBAAgBA,uBAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,MACzC,WAAW,sBAAA,CAAO;AAAA,KACpB,kBAAgBA,uBAAA,CAAM,aAAA,CAAcC,UAAA,EAAM;AAAA,MACxC,WAAW,sBAAA,CAAO;AAAA,KACnB,CAAA,EAAG,2BAA2B,CAAC,CAAA;AAAA,EAClC;AACA,EAAA,IAAI,UAAA,KAAe,UAAA,CAAW,GAAA,IAAO,OAAA,IAAW,IAAA,EAAM;AACpD,IAAA,uBAAoBD,uBAAA,CAAM,aAAA,CAAcE,+BAAA,EAAe,QAAA,CAAS;AAAA,MAC9D,GAAA,EAAK,OAAA;AAAA,MACL;AAAA,KACF,EAAG,cAAc,CAAC,CAAA;AAAA,EACpB;AACA,EAAA,uBAAoBF,uBAAA,CAAM,aAAA,CAAcG,iCAAA,EAAiB,QAAA,CAAS;AAAA,IAChE,KAAA;AAAA,IACA;AAAA,GACF,EAAG,iBAAiB,CAAC,CAAA;AACvB;;;ACvDA,SAASC,SAAAA,GAAW;AAAE,EAAA,OAAOA,SAAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAGA,SAAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AAkCnR,IAAM,gBAAA,mBAAmB,IAAI,GAAA,CAAI,CAAC,WAAA,EAAa,cAAc,WAAA,EAAa,eAAA,EAAiB,YAAA,EAAc,WAAW,CAAC,CAAA;AACrH,IAAM,sCAAsB,IAAI,GAAA,CAAI,CAAC,eAAA,EAAiB,iBAAiB,CAAC,CAAA;AACxE,IAAM,iCAAiB,IAAI,GAAA,CAAI,CAAC,iBAAA,EAAmB,UAAU,CAAC,CAAA;AAC9D,SAAS,UAAA,CAAW,UAAU,QAAA,EAAU;AACtC,EAAA,IAAI,aAAa,YAAA,EAAc;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,UAAU,WAAA,EAAY;AACtC,EAAA,OAAO,OAAA,EAAS,SAAS,MAAM,CAAA,KAAM,QAAQ,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,KAAM,IAAA;AAC9E;AACA,SAAS,aAAA,CAAc,UAAU,QAAA,EAAU;AACzC,EAAA,IAAI,aAAa,iBAAA,EAAmB;AAClC,IAAA,OAAO,UAAA,CAAW,GAAA;AAAA,EACpB;AACA,EAAA,IAAI,UAAA,CAAW,QAAA,EAAU,QAAQ,CAAA,EAAG;AAClC,IAAA,OAAO,UAAA,CAAW,IAAA;AAAA,EACpB;AACA,EAAA,IAAI,gBAAA,CAAiB,GAAA,CAAI,QAAQ,CAAA,EAAG;AAClC,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,QAAA,CAAS,UAAA,CAAW,QAAQ,CAAA,EAAG;AACjC,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,mBAAA,CAAoB,GAAA,CAAI,QAAQ,CAAA,EAAG;AACrC,IAAA,OAAO,UAAA,CAAW,QAAA;AAAA,EACpB;AACA,EAAA,IAAI,aAAa,mEAAA,EAAqE;AACpF,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,aAAa,gBAAA,EAAkB;AACjC,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA,EAAG;AAChC,IAAA,OAAO,UAAA,CAAW,GAAA;AAAA,EACpB;AACA,EAAA,OAAO,UAAA,CAAW,WAAA;AACpB;AACO,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB;AACpB,CAAA,EAAG;AACD,EAAA,MAAM,QAAA,GAAW,gBAAA,IAAoB,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA;AAC/D,EAAA,MAAM,UAAA,GAAaC,cAAA,CAAQ,MAAM,aAAA,CAAc,QAAA,EAAU,QAAQ,CAAA,EAAG,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA;AACxF,EAAA,MAAM,aAAA,GAAgBC,2BAAA,CAAW,sBAAA,CAAO,SAAA,EAAW,SAAS,CAAA;AAC5D,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAK,UAAA,CAAW,GAAA;AACd,MAAA,uBAAoBN,uBAAAA,CAAM,aAAA,CAAcO,2BAAA,EAAWH,SAAAA,CAAS;AAAA,QAC1D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,cAAc,CAAC,CAAA;AAAA,IACpB,KAAK,UAAA,CAAW,IAAA;AACd,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAc,kBAAA,EAAoB;AAAA,UAC1D,KAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,eAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AACA,MAAA,uBAAoBA,uBAAAA,CAAM,aAAA,CAAcG,iCAAA,EAAiBC,SAAAA,CAAS;AAAA,QAChE,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,iBAAiB,CAAC,CAAA;AAAA,IACvB,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcQ,6BAAA,EAAaJ,SAAAA,CAAS;AAAA,QAC5D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,gBAAgB,CAAC,CAAA;AAAA,IACtB,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcS,6BAAA,EAAaL,SAAAA,CAAS;AAAA,QAC5D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,gBAAgB,CAAC,CAAA;AAAA,IACtB,KAAK,UAAA,CAAW,QAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcU,qCAAA,EAAqBN,SAAAA,CAAS;AAAA,QACpE,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,qBAAqB,CAAC,CAAA;AAAA,IAC3B,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcW,6BAAA,EAAaP,SAAAA,CAAS;AAAA,QAC5D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,gBAAgB,CAAC,CAAA;AAAA,IACtB,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcY,6BAAA,EAAaR,SAAAA,CAAS;AAAA,QAC5D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,gBAAgB,CAAC,CAAA;AAAA,IACtB,KAAK,UAAA,CAAW,GAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAca,2BAAA,EAAWT,SAAAA,CAAS;AAAA,QAC1D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,cAAc,CAAC,CAAA;AAAA,IACpB,KAAK,UAAA,CAAW,WAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,QAC7C,SAAA,EAAW;AAAA,OACb,kBAAgBA,uBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,QACzC,WAAW,sBAAA,CAAO;AAAA,OACpB,kBAAgBA,uBAAAA,CAAM,aAAA,CAAcc,cAAA,EAAc;AAAA,QAChD,WAAW,sBAAA,CAAO;AAAA,OACnB,CAAA,EAAG,yBAAA,EAA2B,QAAQ,CAAC,CAAA;AAAA,IAC1C;AACE,MAAAC,mCAAA,CAAkB,UAAU,CAAA;AAAA;AAElC;;;ACnIO,IAAMC,eAAAA,GAAiBC,iCAAA,CAAgB,cAAA,EAAiB,gBAAgB","file":"chunk-7UB7SNYR.cjs","sourcesContent":[".container {\n display: flex;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-document-viewer-bg);\n border: var(--osdk-document-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n}\n\n.unsupportedContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n width: 100%;\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.unsupportedIcon {\n flex-shrink: 0;\n}\n\n.loadingContainer {\n composes: loadingContainer from \"../shared/LoadingError.module.css\";\n width: 100%;\n}\n\n.spinnerIcon {\n composes: spinnerIcon from \"../shared/LoadingError.module.css\";\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\nexport let ViewerType = /*#__PURE__*/function (ViewerType) {\n ViewerType[\"Pdf\"] = \"pdf\";\n ViewerType[\"Tiff\"] = \"tiff\";\n ViewerType[\"Image\"] = \"image\";\n ViewerType[\"Video\"] = \"video\";\n ViewerType[\"Markdown\"] = \"markdown\";\n ViewerType[\"Excel\"] = \"excel\";\n ViewerType[\"Email\"] = \"email\";\n ViewerType[\"Xml\"] = \"xml\";\n ViewerType[\"Unsupported\"] = \"unsupported\";\n return ViewerType;\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/* cspell:words ifds */\n\nimport { __EXPERIMENTAL__NOT_SUPPORTED_YET__transformAndWait } from \"@osdk/api/unstable\";\nimport { useOsdkClient } from \"@osdk/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as UTIF from \"utif\";\nimport { ViewerType } from \"../DocumentViewerApi.js\";\nconst DISABLED_RESULT = {\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n};\n\n/**\n * Detects multi-page TIFFs and converts them to PDF via the MIO transform API.\n * Single-page TIFFs are left for the TiffRenderer to handle.\n *\n * @param media - The OSDK Media object (must be a TIFF)\n * @param enabled - Whether to attempt multi-page detection and conversion\n */\nexport function useTiffToPdf(media, enabled) {\n const client = useOsdkClient();\n const [result, setResult] = useState(DISABLED_RESULT);\n const mediaRef = useRef(media);\n mediaRef.current = media;\n useEffect(() => {\n if (!enabled) {\n setResult(DISABLED_RESULT);\n return;\n }\n let cancelled = false;\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: true,\n error: undefined\n });\n async function detectAndTransform() {\n const currentMedia = mediaRef.current;\n\n // Step 1: Fetch TIFF bytes and count pages\n const response = await currentMedia.fetchContents();\n const buffer = await response.arrayBuffer();\n if (cancelled) return;\n const ifds = UTIF.decode(buffer);\n const pageCount = ifds.length;\n if (pageCount <= 1) {\n // Single-page TIFF — use TiffRenderer\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n });\n }\n return;\n }\n\n // Step 2: Multi-page TIFF — convert to PDF via MIO transform\n const mediaReference = currentMedia.getMediaReference();\n const pdfResponse = await client(__EXPERIMENTAL__NOT_SUPPORTED_YET__transformAndWait).transformAndWait({\n mediaReference,\n transformation: {\n $imageToDocument: {\n $operation: {\n $createPdf: {}\n }\n }\n }\n });\n if (cancelled) return;\n const pdfBuffer = await pdfResponse.arrayBuffer();\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Pdf,\n pdfData: pdfBuffer,\n loading: false,\n error: undefined\n });\n }\n }\n detectAndTransform().catch(err => {\n if (!cancelled) {\n // eslint-disable-next-line no-console\n console.warn(\"TIFF to PDF conversion failed, falling back to TIFF renderer:\", err);\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: err instanceof Error ? err : new Error(String(err))\n });\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media, enabled, client]);\n return result;\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Spin } from \"@blueprintjs/icons\";\nimport React from \"react\";\nimport { TiffViewerMedia } from \"../images/tiff-renderer/TiffViewerMedia.js\";\nimport { BasePdfViewer } from \"../pdf-viewer/PdfViewer.js\";\nimport styles from \"./DocumentViewer.module.css\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { useTiffToPdf } from \"./hooks/useTiffToPdf.js\";\nexport function TiffDocumentViewer({\n media,\n className,\n enableTiffToPdf,\n tiffRendererProps,\n pdfViewerProps\n}) {\n const {\n viewerType,\n pdfData,\n loading\n } = useTiffToPdf(media, enableTiffToPdf);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Converting document\\u2026\"));\n }\n if (viewerType === ViewerType.Pdf && pdfData != null) {\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: pdfData,\n className: className\n }, pdfViewerProps));\n }\n return /*#__PURE__*/React.createElement(TiffViewerMedia, _extends({\n media: media,\n className: className\n }, tiffRendererProps));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* cspell:words openxmlformats officedocument wordprocessingml spreadsheetml */\n\nimport { Document as DocumentIcon } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport { EmailViewer } from \"../email-viewer/EmailViewer.js\";\nimport { ExcelViewer } from \"../excel-viewer/ExcelViewer.js\";\nimport { ImageViewer } from \"../images/image-viewer/ImageViewer.js\";\nimport { TiffViewerMedia } from \"../images/tiff-renderer/TiffViewerMedia.js\";\nimport { MarkdownViewerMedia } from \"../markdown-renderer/MarkdownViewerMedia.js\";\nimport { PdfViewer } from \"../pdf-viewer/PdfRenderer.js\";\nimport { assertUnreachable } from \"../shared/assertUnreachable.js\";\nimport { VideoViewer } from \"../video-viewer/VideoViewer.js\";\nimport { XmlViewer } from \"../xml-viewer/XmlViewer.js\";\nimport styles from \"./DocumentViewer.module.css\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { TiffDocumentViewer } from \"./TiffDocumentViewer.js\";\nconst IMAGE_MIME_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/gif\", \"image/svg+xml\", \"image/webp\", \"image/bmp\"]);\nconst MARKDOWN_MIME_TYPES = new Set([\"text/markdown\", \"text/x-markdown\"]);\nconst XML_MIME_TYPES = new Set([\"application/xml\", \"text/xml\"]);\nfunction isTiffFile(mimeType, fileName) {\n if (mimeType === \"image/tiff\") {\n return true;\n }\n const lowered = fileName?.toLowerCase();\n return lowered?.endsWith(\".tif\") === true || lowered?.endsWith(\".tiff\") === true;\n}\nfunction getViewerType(mimeType, fileName) {\n if (mimeType === \"application/pdf\") {\n return ViewerType.Pdf;\n }\n if (isTiffFile(mimeType, fileName)) {\n return ViewerType.Tiff;\n }\n if (IMAGE_MIME_TYPES.has(mimeType)) {\n return ViewerType.Image;\n }\n if (mimeType.startsWith(\"video/\")) {\n return ViewerType.Video;\n }\n if (MARKDOWN_MIME_TYPES.has(mimeType)) {\n return ViewerType.Markdown;\n }\n if (mimeType === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\n return ViewerType.Excel;\n }\n if (mimeType === \"message/rfc822\") {\n return ViewerType.Email;\n }\n if (XML_MIME_TYPES.has(mimeType)) {\n return ViewerType.Xml;\n }\n return ViewerType.Unsupported;\n}\nexport function DocumentViewer({\n media,\n className,\n mimeTypeOverride,\n pdfViewerProps,\n imageViewerProps,\n videoViewerProps,\n tiffRendererProps,\n markdownRendererProps,\n excelViewerProps,\n emailViewerProps,\n xmlViewerProps,\n fileName,\n enableTiffToPdf = false\n}) {\n const mimeType = mimeTypeOverride ?? media.getMediaReference().mimeType;\n const viewerType = useMemo(() => getViewerType(mimeType, fileName), [mimeType, fileName]);\n const rootClassName = classnames(styles.container, className);\n switch (viewerType) {\n case ViewerType.Pdf:\n return /*#__PURE__*/React.createElement(PdfViewer, _extends({\n media: media,\n className: rootClassName\n }, pdfViewerProps));\n case ViewerType.Tiff:\n if (enableTiffToPdf) {\n return /*#__PURE__*/React.createElement(TiffDocumentViewer, {\n media: media,\n className: rootClassName,\n enableTiffToPdf: enableTiffToPdf,\n tiffRendererProps: tiffRendererProps,\n pdfViewerProps: pdfViewerProps\n });\n }\n return /*#__PURE__*/React.createElement(TiffViewerMedia, _extends({\n media: media,\n className: rootClassName\n }, tiffRendererProps));\n case ViewerType.Image:\n return /*#__PURE__*/React.createElement(ImageViewer, _extends({\n media: media,\n className: rootClassName\n }, imageViewerProps));\n case ViewerType.Video:\n return /*#__PURE__*/React.createElement(VideoViewer, _extends({\n media: media,\n className: rootClassName\n }, videoViewerProps));\n case ViewerType.Markdown:\n return /*#__PURE__*/React.createElement(MarkdownViewerMedia, _extends({\n media: media,\n className: rootClassName\n }, markdownRendererProps));\n case ViewerType.Excel:\n return /*#__PURE__*/React.createElement(ExcelViewer, _extends({\n media: media,\n className: rootClassName\n }, excelViewerProps));\n case ViewerType.Email:\n return /*#__PURE__*/React.createElement(EmailViewer, _extends({\n media: media,\n className: rootClassName\n }, emailViewerProps));\n case ViewerType.Xml:\n return /*#__PURE__*/React.createElement(XmlViewer, _extends({\n media: media,\n className: rootClassName\n }, xmlViewerProps));\n case ViewerType.Unsupported:\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.unsupportedContainer\n }, /*#__PURE__*/React.createElement(DocumentIcon, {\n className: styles.unsupportedIcon\n }), \"Unsupported file type: \", mimeType));\n default:\n assertUnreachable(viewerType);\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// DocumentViewer\nimport { DocumentViewer as _DocumentViewer } from \"../../document-viewer/DocumentViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const DocumentViewer = withOsdkMetrics(_DocumentViewer, \"DocumentViewer\");\nexport { ViewerType } from \"../../document-viewer/DocumentViewerApi.js\";"]}
1
+ {"version":3,"sources":["../../src/document-viewer/DocumentViewer.module.css","../../src/document-viewer/DocumentViewerApi.ts","../../src/document-viewer/hooks/useTiffToPdf.ts","../../src/document-viewer/TiffDocumentViewer.tsx","../../src/document-viewer/DocumentViewer.tsx","../../src/public/experimental/document-viewer.ts"],"names":["ViewerType","useOsdkClient","useState","useRef","useEffect","UTIF","__EXPERIMENTAL__NOT_SUPPORTED_YET__transformAndWait","React","Spin","BasePdfViewer","TiffViewerMedia","_extends","useMemo","classnames","PdfViewer","ImageViewer","VideoViewer","MarkdownViewerMedia","ExcelViewer","EmailViewer","XmlViewer","DocumentIcon","assertUnreachable","DocumentViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-CDKWDUSS.cjs","sourcesContent":[".container {\n display: flex;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-document-viewer-bg);\n border: var(--osdk-document-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n}\n\n.unsupportedContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n width: 100%;\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.unsupportedIcon {\n flex-shrink: 0;\n}\n\n.loadingContainer {\n composes: loadingContainer from \"../shared/LoadingError.module.css\";\n width: 100%;\n}\n\n.spinnerIcon {\n composes: spinnerIcon from \"../shared/LoadingError.module.css\";\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\nexport let ViewerType = /*#__PURE__*/function (ViewerType) {\n ViewerType[\"Pdf\"] = \"pdf\";\n ViewerType[\"Tiff\"] = \"tiff\";\n ViewerType[\"Image\"] = \"image\";\n ViewerType[\"Video\"] = \"video\";\n ViewerType[\"Markdown\"] = \"markdown\";\n ViewerType[\"Excel\"] = \"excel\";\n ViewerType[\"Email\"] = \"email\";\n ViewerType[\"Xml\"] = \"xml\";\n ViewerType[\"Unsupported\"] = \"unsupported\";\n return ViewerType;\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/* cspell:words ifds */\n\nimport { __EXPERIMENTAL__NOT_SUPPORTED_YET__transformAndWait } from \"@osdk/api/unstable\";\nimport { useOsdkClient } from \"@osdk/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as UTIF from \"utif\";\nimport { ViewerType } from \"../DocumentViewerApi.js\";\nconst DISABLED_RESULT = {\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n};\n\n/**\n * Detects multi-page TIFFs and converts them to PDF via the MIO transform API.\n * Single-page TIFFs are left for the TiffRenderer to handle.\n *\n * @param media - The OSDK Media object (must be a TIFF)\n * @param enabled - Whether to attempt multi-page detection and conversion\n */\nexport function useTiffToPdf(media, enabled) {\n const client = useOsdkClient();\n const [result, setResult] = useState(DISABLED_RESULT);\n const mediaRef = useRef(media);\n mediaRef.current = media;\n useEffect(() => {\n if (!enabled) {\n setResult(DISABLED_RESULT);\n return;\n }\n let cancelled = false;\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: true,\n error: undefined\n });\n async function detectAndTransform() {\n const currentMedia = mediaRef.current;\n\n // Step 1: Fetch TIFF bytes and count pages\n const response = await currentMedia.fetchContents();\n const buffer = await response.arrayBuffer();\n if (cancelled) return;\n const ifds = UTIF.decode(buffer);\n const pageCount = ifds.length;\n if (pageCount <= 1) {\n // Single-page TIFF — use TiffRenderer\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n });\n }\n return;\n }\n\n // Step 2: Multi-page TIFF — convert to PDF via MIO transform\n const mediaReference = currentMedia.getMediaReference();\n const pdfResponse = await client(__EXPERIMENTAL__NOT_SUPPORTED_YET__transformAndWait).transformAndWait({\n mediaReference,\n transformation: {\n $imageToDocument: {\n $operation: {\n $createPdf: {}\n }\n }\n }\n });\n if (cancelled) return;\n const pdfBuffer = await pdfResponse.arrayBuffer();\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Pdf,\n pdfData: pdfBuffer,\n loading: false,\n error: undefined\n });\n }\n }\n detectAndTransform().catch(err => {\n if (!cancelled) {\n // eslint-disable-next-line no-console\n console.warn(\"TIFF to PDF conversion failed, falling back to TIFF renderer:\", err);\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: err instanceof Error ? err : new Error(String(err))\n });\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media, enabled, client]);\n return result;\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Spin } from \"@blueprintjs/icons\";\nimport React from \"react\";\nimport { TiffViewerMedia } from \"../images/tiff-renderer/TiffViewerMedia.js\";\nimport { BasePdfViewer } from \"../pdf-viewer/PdfViewer.js\";\nimport styles from \"./DocumentViewer.module.css\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { useTiffToPdf } from \"./hooks/useTiffToPdf.js\";\nexport function TiffDocumentViewer({\n media,\n className,\n enableTiffToPdf,\n tiffRendererProps,\n pdfViewerProps\n}) {\n const {\n viewerType,\n pdfData,\n loading\n } = useTiffToPdf(media, enableTiffToPdf);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Converting document\\u2026\"));\n }\n if (viewerType === ViewerType.Pdf && pdfData != null) {\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: pdfData,\n className: className\n }, pdfViewerProps));\n }\n return /*#__PURE__*/React.createElement(TiffViewerMedia, _extends({\n media: media,\n className: className\n }, tiffRendererProps));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* cspell:words openxmlformats officedocument wordprocessingml spreadsheetml */\n\nimport { Document as DocumentIcon } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport { EmailViewer } from \"../email-viewer/EmailViewer.js\";\nimport { ExcelViewer } from \"../excel-viewer/ExcelViewer.js\";\nimport { ImageViewer } from \"../images/image-viewer/ImageViewer.js\";\nimport { TiffViewerMedia } from \"../images/tiff-renderer/TiffViewerMedia.js\";\nimport { MarkdownViewerMedia } from \"../markdown-renderer/MarkdownViewerMedia.js\";\nimport { PdfViewer } from \"../pdf-viewer/PdfRenderer.js\";\nimport { assertUnreachable } from \"../shared/assertUnreachable.js\";\nimport { VideoViewer } from \"../video-viewer/VideoViewer.js\";\nimport { XmlViewer } from \"../xml-viewer/XmlViewer.js\";\nimport styles from \"./DocumentViewer.module.css\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { TiffDocumentViewer } from \"./TiffDocumentViewer.js\";\nconst IMAGE_MIME_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/gif\", \"image/svg+xml\", \"image/webp\", \"image/bmp\"]);\nconst MARKDOWN_MIME_TYPES = new Set([\"text/markdown\", \"text/x-markdown\"]);\nconst XML_MIME_TYPES = new Set([\"application/xml\", \"text/xml\"]);\nfunction isTiffFile(mimeType, fileName) {\n if (mimeType === \"image/tiff\") {\n return true;\n }\n const lowered = fileName?.toLowerCase();\n return lowered?.endsWith(\".tif\") === true || lowered?.endsWith(\".tiff\") === true;\n}\nfunction getViewerType(mimeType, fileName) {\n if (mimeType === \"application/pdf\") {\n return ViewerType.Pdf;\n }\n if (isTiffFile(mimeType, fileName)) {\n return ViewerType.Tiff;\n }\n if (IMAGE_MIME_TYPES.has(mimeType)) {\n return ViewerType.Image;\n }\n if (mimeType.startsWith(\"video/\")) {\n return ViewerType.Video;\n }\n if (MARKDOWN_MIME_TYPES.has(mimeType)) {\n return ViewerType.Markdown;\n }\n if (mimeType === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\n return ViewerType.Excel;\n }\n if (mimeType === \"message/rfc822\") {\n return ViewerType.Email;\n }\n if (XML_MIME_TYPES.has(mimeType)) {\n return ViewerType.Xml;\n }\n return ViewerType.Unsupported;\n}\nexport function DocumentViewer({\n media,\n className,\n mimeTypeOverride,\n pdfViewerProps,\n imageViewerProps,\n videoViewerProps,\n tiffRendererProps,\n markdownRendererProps,\n excelViewerProps,\n emailViewerProps,\n xmlViewerProps,\n fileName,\n enableTiffToPdf = false\n}) {\n const mimeType = mimeTypeOverride ?? media.getMediaReference().mimeType;\n const viewerType = useMemo(() => getViewerType(mimeType, fileName), [mimeType, fileName]);\n const rootClassName = classnames(styles.container, className);\n switch (viewerType) {\n case ViewerType.Pdf:\n return /*#__PURE__*/React.createElement(PdfViewer, _extends({\n media: media,\n className: rootClassName\n }, pdfViewerProps));\n case ViewerType.Tiff:\n if (enableTiffToPdf) {\n return /*#__PURE__*/React.createElement(TiffDocumentViewer, {\n media: media,\n className: rootClassName,\n enableTiffToPdf: enableTiffToPdf,\n tiffRendererProps: tiffRendererProps,\n pdfViewerProps: pdfViewerProps\n });\n }\n return /*#__PURE__*/React.createElement(TiffViewerMedia, _extends({\n media: media,\n className: rootClassName\n }, tiffRendererProps));\n case ViewerType.Image:\n return /*#__PURE__*/React.createElement(ImageViewer, _extends({\n media: media,\n className: rootClassName\n }, imageViewerProps));\n case ViewerType.Video:\n return /*#__PURE__*/React.createElement(VideoViewer, _extends({\n media: media,\n className: rootClassName\n }, videoViewerProps));\n case ViewerType.Markdown:\n return /*#__PURE__*/React.createElement(MarkdownViewerMedia, _extends({\n media: media,\n className: rootClassName\n }, markdownRendererProps));\n case ViewerType.Excel:\n return /*#__PURE__*/React.createElement(ExcelViewer, _extends({\n media: media,\n className: rootClassName\n }, excelViewerProps));\n case ViewerType.Email:\n return /*#__PURE__*/React.createElement(EmailViewer, _extends({\n media: media,\n className: rootClassName\n }, emailViewerProps));\n case ViewerType.Xml:\n return /*#__PURE__*/React.createElement(XmlViewer, _extends({\n media: media,\n className: rootClassName\n }, xmlViewerProps));\n case ViewerType.Unsupported:\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.unsupportedContainer\n }, /*#__PURE__*/React.createElement(DocumentIcon, {\n className: styles.unsupportedIcon\n }), \"Unsupported file type: \", mimeType));\n default:\n assertUnreachable(viewerType);\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// DocumentViewer\nimport { DocumentViewer as _DocumentViewer } from \"../../document-viewer/DocumentViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const DocumentViewer = withOsdkMetrics(_DocumentViewer, \"DocumentViewer\");\nexport { ViewerType } from \"../../document-viewer/DocumentViewerApi.js\";"]}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunkPKJFOG2Z_cjs = require('./chunk-PKJFOG2Z.cjs');
4
+ var chunkZIYQXEEB_cjs = require('./chunk-ZIYQXEEB.cjs');
5
+
6
+ // src/public/experimental/email-viewer.ts
7
+ var EmailViewer2 = chunkZIYQXEEB_cjs.withOsdkMetrics(chunkPKJFOG2Z_cjs.EmailViewer, "EmailViewer");
8
+
9
+ exports.EmailViewer = EmailViewer2;
10
+ //# sourceMappingURL=chunk-F4J3FXNK.cjs.map
11
+ //# sourceMappingURL=chunk-F4J3FXNK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public/experimental/email-viewer.ts"],"names":["EmailViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-MSORWXYW.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\n// BaseEmailViewer\nexport { BaseEmailViewer } from \"../../email-viewer/BaseEmailViewer.js\";\n// EmailViewer (Media wrapper)\nimport { EmailViewer as _EmailViewer } from \"../../email-viewer/EmailViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const EmailViewer = withOsdkMetrics(_EmailViewer, \"EmailViewer\");"]}
1
+ {"version":3,"sources":["../../src/public/experimental/email-viewer.ts"],"names":["EmailViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-F4J3FXNK.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\n// BaseEmailViewer\nexport { BaseEmailViewer } from \"../../email-viewer/BaseEmailViewer.js\";\n// EmailViewer (Media wrapper)\nimport { EmailViewer as _EmailViewer } from \"../../email-viewer/EmailViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const EmailViewer = withOsdkMetrics(_EmailViewer, \"EmailViewer\");"]}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunk4VJIPB7R_cjs = require('./chunk-4VJIPB7R.cjs');
4
+ var chunkZIYQXEEB_cjs = require('./chunk-ZIYQXEEB.cjs');
5
+
6
+ // src/public/experimental/excel-viewer.ts
7
+ var ExcelViewer2 = chunkZIYQXEEB_cjs.withOsdkMetrics(chunk4VJIPB7R_cjs.ExcelViewer, "ExcelViewer");
8
+
9
+ exports.ExcelViewer = ExcelViewer2;
10
+ //# sourceMappingURL=chunk-JNIYR5HQ.cjs.map
11
+ //# sourceMappingURL=chunk-JNIYR5HQ.cjs.map