@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.
- package/CHANGELOG.md +3 -7
- package/build/browser/filter-list/base/inputs/ListogramInput.js +2 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +7 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +3 -2
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
- package/build/browser/filter-list/inputs/StaticValuesFilterInput.js +6 -0
- package/build/browser/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
- package/build/browser/styles.css +11 -3
- package/build/browser/tokens/component-tokens/filter-list.css +0 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/chunk-44Q6YNJY.cjs +11 -0
- package/build/cjs/{chunk-RMDTKNEH.cjs.map → chunk-44Q6YNJY.cjs.map} +1 -1
- package/build/cjs/{chunk-7UB7SNYR.cjs → chunk-CDKWDUSS.cjs} +4 -4
- package/build/cjs/{chunk-7UB7SNYR.cjs.map → chunk-CDKWDUSS.cjs.map} +1 -1
- package/build/cjs/chunk-F4J3FXNK.cjs +11 -0
- package/build/cjs/{chunk-MSORWXYW.cjs.map → chunk-F4J3FXNK.cjs.map} +1 -1
- package/build/cjs/chunk-JNIYR5HQ.cjs +11 -0
- package/build/cjs/{chunk-27SM3TEQ.cjs.map → chunk-JNIYR5HQ.cjs.map} +1 -1
- package/build/cjs/chunk-KNMWCCZY.cjs +11 -0
- package/build/cjs/{chunk-ZXCWNYCZ.cjs.map → chunk-KNMWCCZY.cjs.map} +1 -1
- package/build/cjs/chunk-LXYK5HUR.cjs +11 -0
- package/build/cjs/{chunk-JV55AKJX.cjs.map → chunk-LXYK5HUR.cjs.map} +1 -1
- package/build/cjs/{chunk-BUPYGLBD.cjs → chunk-M2B7X4UP.cjs} +4 -4
- package/build/cjs/{chunk-BUPYGLBD.cjs.map → chunk-M2B7X4UP.cjs.map} +1 -1
- package/build/cjs/{chunk-CKXTABIP.cjs → chunk-MOL6BDEN.cjs} +4 -4
- package/build/cjs/{chunk-CKXTABIP.cjs.map → chunk-MOL6BDEN.cjs.map} +1 -1
- package/build/cjs/{chunk-KVIIUMS5.cjs → chunk-NP2OODWG.cjs} +4 -4
- package/build/cjs/{chunk-KVIIUMS5.cjs.map → chunk-NP2OODWG.cjs.map} +1 -1
- package/build/cjs/{chunk-F7V6VF3F.cjs → chunk-UG5QG75Y.cjs} +4 -4
- package/build/cjs/{chunk-F7V6VF3F.cjs.map → chunk-UG5QG75Y.cjs.map} +1 -1
- package/build/cjs/{chunk-727CMVU2.cjs → chunk-WYDFI4D2.cjs} +4 -4
- package/build/cjs/{chunk-727CMVU2.cjs.map → chunk-WYDFI4D2.cjs.map} +1 -1
- package/build/cjs/{chunk-BWGAPHH4.cjs → chunk-Z6F6MHWG.cjs} +12 -7
- package/build/cjs/chunk-Z6F6MHWG.cjs.map +1 -0
- package/build/cjs/{chunk-P34CUCZX.cjs → chunk-ZIYQXEEB.cjs} +3 -3
- package/build/cjs/chunk-ZIYQXEEB.cjs.map +1 -0
- package/build/cjs/public/experimental/action-form.cjs +4 -4
- package/build/cjs/public/experimental/document-viewer.cjs +4 -4
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +14 -14
- package/build/cjs/public/experimental/filter-list.css +3 -2
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
- package/build/cjs/public/experimental/object-table.cjs +8 -8
- package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
- package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +47 -47
- package/build/cjs/public/experimental.css +3 -2
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js +2 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +7 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +3 -2
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
- package/build/esm/filter-list/inputs/StaticValuesFilterInput.js +6 -0
- package/build/esm/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
- package/build/esm/tokens/component-tokens/filter-list.css +0 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts +2 -1
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +2 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/StaticValuesFilterInput.d.ts.map +1 -1
- package/docs/CSSVariables.md +3 -4
- package/package.json +7 -7
- package/build/cjs/chunk-27SM3TEQ.cjs +0 -11
- package/build/cjs/chunk-BWGAPHH4.cjs.map +0 -1
- package/build/cjs/chunk-JV55AKJX.cjs +0 -11
- package/build/cjs/chunk-MSORWXYW.cjs +0 -11
- package/build/cjs/chunk-P34CUCZX.cjs.map +0 -1
- package/build/cjs/chunk-RMDTKNEH.cjs +0 -11
- 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.
|
|
3
|
+
## 0.23.0
|
|
4
4
|
|
|
5
|
-
###
|
|
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":"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","ignoreList":[]}
|
|
@@ -83,7 +83,13 @@
|
|
|
83
83
|
|
|
84
84
|
/* Muted styling for filtered-out (count=0) rows. */
|
|
85
85
|
.row[data-filtered-out] {
|
|
86
|
-
|
|
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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,QAAQ,QAAQ,+CAA+C;AAExE,SAASC,YAAY,QAAQ,6BAA6B;AAC1D,SAASC,qBAAqB,QAAQ,iCAAiC;AACvE,SAASC,uBAAuB,QAAQ,qBAAqB;AAC7D,SAASC,yBAAyB,QAAQ,gCAAgC;AAC1E,SAASC,uBAAuB,QAAQ,8BAA8B;AACtE,OAAOC,MAAM,MAAM,+BAA+B;AAClD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,OAAOC,YAAY,MAAM,qBAAqB;AAC9C,SAASC,aAAa,QAAQ,oBAAoB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkBA,SAASC,qBAAqBA,CAAC;EAC7BC,MAAM;EACNC,SAAS;EACTC,KAAK;EACLC,cAAc;EACdC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,WAAW,GAAG,kBAAkB;EAChCC,UAAU,GAAG,IAAI;EACjBC,SAAS,GAAG,eAAe;EAC3BC,WAAW;EACXC,MAAM,GAAG;AACY,CAAC,EAAsB;EAC5C,MAAMC,iBAAiB,GAAGtB,qBAAqB,CAAC,CAAC;EAEjD,MAAMuB,iBAAiB,GAAG3B,WAAW,CAClC4B,SAA0B,IAAK;IAC9BV,QAAQ,CAACU,SAAS,IAAI,EAAE,CAAC;EAC3B,CAAC,EACD,CAACV,QAAQ,CACX,CAAC;EAED,MAAMW,YAAY,GAAGjB,aAAa,CAACE,MAAM,EAAEC,SAAS,CAAC;EAErD,MAAMe,KAAK,GAAG7B,OAAO,CACnB,MAAM4B,YAAY,CAACE,GAAG,CAAC,CAAC;IAAEC;EAAM,CAAC,KAAKA,KAAK,CAAC,EAC5C,CAACH,YAAY,CACf,CAAC;EAED,MAAMI,YAAY,GAAGhC,OAAO,CAC1B,MAAM,IAAIiC,GAAG,CAACL,YAAY,CAACE,GAAG,CAAC,CAAC;IAAEC,KAAK;IAAEG;EAAM,CAAC,KAAK,CAACH,KAAK,EAAEG,KAAK,CAAC,CAAC,CAAC,EACrE,CAACN,YAAY,CACf,CAAC;EAED,MAAMO,WAAW,GAAGnC,OAAO,CACzB,MAAM,IAAIoC,GAAG,CAACpB,cAAc,CAAC,EAC7B,CAACA,cAAc,CACjB,CAAC;EAED,MAAMqB,cAAc,GAAGrC,OAAO,CAC5B,MAAMuB,WAAW,GAAGnB,uBAAuB,CAACmB,WAAW,CAAC,GAAGe,SAAS,EACpE,CAACf,WAAW,CACd,CAAC;EAED,MAAMgB,UAAU,GAAGxC,WAAW,CAC3BgC,KAAa,IAAK;IACjB,MAAMS,OAAO,GAAGtC,YAAY,CAAC6B,KAAK,CAAC;IACnC,MAAMG,KAAK,GAAGF,YAAY,CAACS,GAAG,CAACV,KAAK,CAAC,IAAI,CAAC;IAC1C,MAAMW,aAAa,GAAGR,KAAK,KAAK,CAAC,IAAI,CAACC,WAAW,CAACQ,GAAG,CAACZ,KAAK,CAAC;IAC5D,oBACElC,KAAA,CAAA+C,aAAA,CAAC3C,QAAQ,CAAC4C,IAAI;MACZC,GAAG,EAAEf,KAAM;MACXA,KAAK,EAAEA,KAAM;MACbb,SAAS,EAAEwB,aAAa,GAAGnC,MAAM,CAACwC,eAAe,GAAGT;IAAU,gBAE9DzC,KAAA,CAAA+C,aAAA,CAAC3C,QAAQ,CAAC+C,aAAa,MAAE,CAAC,eAC1BnD,KAAA,CAAA+C,aAAA;MAAM1B,SAAS,EAAEX,MAAM,CAAC0C;IAAU,GAC/BT,OAAO,gBACJ3C,KAAA,CAAA+C,aAAA,CAACpC,YAAY,MAAE,CAAC,GACfe,WAAW,GAAGA,WAAW,CAACQ,KAAK,CAAC,GAAGA,KACpC,CAAC,EACNV,UAAU,iBACTxB,KAAA,CAAA+C,aAAA;MAAM1B,SAAS,EAAEX,MAAM,CAAC2C;IAAU,GAAC,GAChC,EAAChB,KAAK,CAACiB,cAAc,CAAC,CAAC,EAAC,GACrB,CAEK,CAAC;EAEpB,CAAC,EACD,CAACnB,YAAY,EAAEG,WAAW,EAAEd,UAAU,EAAEE,WAAW,CACrD,CAAC;EAED,MAAM6B,WAAW,GAAGrD,WAAW,CAC5BsD,aAAuB,iBACtBxD,KAAA,CAAA+C,aAAA,CAAA/C,KAAA,CAAAyD,QAAA,QACGD,aAAa,CAACvB,GAAG,CAAEC,KAAK,IAAK;IAC5B,MAAMS,OAAO,GAAGtC,YAAY,CAAC6B,KAAK,CAAC;IACnC,oBACElC,KAAA,CAAA+C,aAAA,CAAC3C,QAAQ,CAACsD,IAAI;MACZT,GAAG,EAAEf,KAAM;MACX,cAAYS,OAAO,GAAG,UAAU,GAAGT;IAAM,GAExCS,OAAO,gBACJ3C,KAAA,CAAA+C,aAAA,CAACpC,YAAY,MAAE,CAAC,GACfe,WAAW,GAAGA,WAAW,CAACQ,KAAK,CAAC,GAAGA,KAAM,eAC9ClC,KAAA,CAAA+C,aAAA,CAAC3C,QAAQ,CAACuD,UAAU,MAAE,CACT,CAAC;EAEpB,CAAC,CAAC,eACF3D,KAAA,CAAA+C,aAAA,CAAC3C,QAAQ,CAACwD,KAAK;IACbrC,WAAW,EAAEiC,aAAa,CAACK,MAAM,GAAG,CAAC,GAAG,EAAE,GAAGtC,WAAY;IACzD,cAAYE;EAAU,CACvB,CACD,CACH,EACD,CAACF,WAAW,EAAEE,SAAS,EAAEC,WAAW,CACtC,CAAC;EAED,MAAMoC,QAAQ,GAAG,CAAC5C,KAAK,IAAIa,YAAY,CAAC8B,MAAM,KAAK,CAAC;EACpD,MAAME,WAAW,GAAG9C,SAAS,IAAIc,YAAY,CAAC8B,MAAM,GAAG,CAAC;EAExD,oBACE7D,KAAA,CAAA+C,aAAA;IACE1B,SAAS,EAAEtB,UAAU,CAACW,MAAM,CAACsD,WAAW,EAAE3C,SAAS,CAAE;IACrDC,KAAK,EAAEA,KAAM;IACb,gBAAcyC;EAAY,gBAE1B/D,KAAA,CAAA+C,aAAA;IAAM1B,SAAS,EAAER,YAAY,CAACoD,MAAO;IAACC,IAAI,EAAC;EAAQ,GAChDjD,SAAS,GAAG,iBAAiB,GAAG,EAC7B,CAAC,EAENC,KAAK,iBACJlB,KAAA,CAAA+C,aAAA;IAAK1B,SAAS,EAAER,YAAY,CAACsD;EAAa,GAAC,yBAClB,EAACjD,KAAK,CAACkD,OAC3B,CACN,EAEAN,QAAQ,IAAI7C,SAAS,iBAAIjB,KAAA,CAAA+C,aAAA,CAACnC,mBAAmB,MAAE,CAAC,EAChDkD,QAAQ,IAAI,CAAC7C,SAAS,iBACrBjB,KAAA,CAAA+C,aAAA;IAAK1B,SAAS,EAAER,YAAY,CAACwD;EAAa,GAAC,sBAEtC,CACN,EAEAtC,YAAY,CAAC8B,MAAM,GAAG,CAAC,iBACtB7D,KAAA,CAAA+C,aAAA,CAAC3C,QAAQ,CAACkE,IAAI;IACZC,QAAQ,EAAE,IAAK;IACfrC,KAAK,EAAEf,cAAe;IACtBqD,aAAa,EAAE3C,iBAAkB;IACjCG,KAAK,EAAEA,KAAM;IACbyC,MAAM,EAAEjC;EAAe,GAEtBb,MAAM,KAAK,QAAQ,gBAEhB3B,KAAA,CAAA+C,aAAA,CAACtC,uBAAuB;IACtBc,WAAW,EAAEA,WAAY;IACzBE,SAAS,EAAEA,SAAU;IACrBiB,UAAU,EAAEA;EAAW,CACxB,CAAC,gBAGF1C,KAAA,CAAA+C,aAAA,CAACvC,yBAAyB;IACxB+C,WAAW,EAAEA,WAAY;IACzBb,UAAU,EAAEA,UAAW;IACvBd,iBAAiB,EAAEA;EAAkB,CACtC,CAEQ,CAEd,CAAC;AAEV;AAEA,OAAO,MAAM8C,gBAAgB,gBAAGzE,IAAI,CAClCc,qBACF,CAAiC","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
|
-
|
|
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":"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;AAiBtC;AACA;AACA;AACA,SAASC,kBAAkBA,CACzBC,WAAoC,EACpCC,oBAAkD,EAClDC,WAAoB,EACpB;EACA,MAAMC,cAAc,GAAGb,OAAO,CAC5B,MACEU,WAAW,EAAEI,IAAI,KAAK,aAAa,GAC/BN,mBAAmB,CAACE,WAAW,CAACK,MAAM,CAAC,GACvC,EAAE,EACR,CAACL,WAAW,CACd,CAAC;EAED,MAAMM,cAAc,GAAGjB,WAAW,CAAC,MAAM;IACvCY,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,GAAGlB,WAAW,CAC7BgB,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,GAAGnB,OAAO,CAC3B,MACEU,WAAW,EAAEI,IAAI,KAAK,QAAQ,GAC1BP,cAAc,CAACG,WAAW,CAACG,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CO,SAAS,EACf,CAACV,WAAW,CACd,CAAC;EAED,MAAMG,cAAc,GAAGb,OAAO,CAC5B,MACEU,WAAW,EAAEI,IAAI,KAAK,QAAQ,GAC1BN,mBAAmB,CAACE,WAAW,CAACG,cAAc,CAAC,GAC/C,EAAE,EACR,CAACH,WAAW,CACd,CAAC;EAED,MAAMM,cAAc,GAAGjB,WAAW,CAAC,MAAM;IACvCY,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,GAAGtB,WAAW,CACnCuB,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,GAAGxB,WAAW,CAClCc,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,GAAG7B,OAAO,CAC3D,MAAMyB,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,oBACErC,KAAA,CAAAsC,aAAA,CAACjC,qBAAqB;QACpByB,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEN,UAAU,CAAChB;MAAe,gBAEtCnB,KAAA,CAAAsC,aAAA,CAAChC,cAAc;QACbY,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,eAAe,EAAEtB,UAAU,CAACoB,eAAe,EAAEE,eAAe,IAAI,CAAE;QAClErB,WAAW,EAAEA,WAAY;QACzBsB,WAAW,EAAEvB,UAAU,CAACuB;MAAY,CACrC,CACoB,CAAC;IAG5B,KAAK,eAAe;MAClB,oBACEnD,KAAA,CAAAsC,aAAA,CAACjC,qBAAqB;QACpByB,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEL,MAAM,CAACjB;MAAe,gBAElCnB,KAAA,CAAAsC,aAAA,CAAC9B,iBAAiB;QAChBU,MAAM,EAAEc,iBAAkB;QAC1BW,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZtB,aAAa,EAAEc,MAAM,CAACd,aAAc;QACpCuB,QAAQ,EAAET,MAAM,CAACZ,kBAAmB;QACpC4B,UAAU,EAAExB,UAAU,CAACqB,SAAU;QACjCI,SAAS,EAAE,UAAUzB,UAAU,CAAC0B,GAAG,EAAG;QACtCH,WAAW,EAAEvB,UAAU,CAACuB;MAAY,CACrC,CACoB,CAAC;IAG5B,KAAK,cAAc;MACjB,oBACEnD,KAAA,CAAAsC,aAAA,CAACjC,qBAAqB;QACpByB,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEL,MAAM,CAACjB;MAAe,gBAElCnB,KAAA,CAAAsC,aAAA,CAAC/B,gBAAgB;QACfW,MAAM,EAAEc,iBAAkB;QAC1BW,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZ5B,cAAc,EAAEoB,MAAM,CAACpB,cAAe;QACtC6B,QAAQ,EAAET,MAAM,CAACV,iBAAkB;QACnC0B,UAAU,EAAExB,UAAU,CAACqB,SAAU;QACjCI,SAAS,EAAE,UAAUzB,UAAU,CAAC0B,GAAG,SAAU;QAC7CH,WAAW,EAAEvB,UAAU,CAACuB,WAAY;QACpCpB,MAAM,EAAEA;MAAO,CAChB,CACoB,CAAC;IAG5B,KAAK,WAAW;MACd,oBACE/B,KAAA,CAAAsC,aAAA,CAACjC,qBAAqB;QACpByB,cAAc,EAAEA,cAAe;QAC/BjB,WAAW,EAAEA,WAAY;QACzBC,oBAAoB,EAAEA,oBAAqB;QAC3CyB,eAAe,EAAEP,iBAAiB,CAACQ,MAAO;QAC1CC,UAAU,EAAEN,UAAU,CAAChB;MAAe,gBAEtCnB,KAAA,CAAAsC,aAAA,CAAC7B,aAAa;QACZ8C,WAAW,EAAEvB,iBAAkB;QAC/BW,SAAS,EAAE,KAAM;QACjBC,KAAK,EAAE,IAAK;QACZY,IAAI,EAAErB,UAAU,CAACnB,cAAe;QAChC6B,QAAQ,EAAEV,UAAU,CAACf;MAAa,CACnC,CACoB,CAAC;IAG5B;MACE,OAAOhB,iBAAiB,CAACwB,UAAU,CAACS,eAAe,CAAC;EACxD;AACF;AAEA,OAAO,MAAMoB,uBAA4D,gBACvExD,IAAI,CACF0B,4BACF,CAAwC","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":"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","ignoreList":[]}
|
package/build/browser/styles.css
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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-
|
|
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
|
|
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 =
|
|
313
|
+
var DocumentViewer2 = chunkZIYQXEEB_cjs.withOsdkMetrics(DocumentViewer, "DocumentViewer");
|
|
314
314
|
|
|
315
315
|
exports.DocumentViewer = DocumentViewer2;
|
|
316
316
|
exports.ViewerType = ViewerType;
|
|
317
|
-
//# sourceMappingURL=chunk-
|
|
318
|
-
//# sourceMappingURL=chunk-
|
|
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":"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","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-
|
|
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
|