@osdk/react-components 0.17.0-main-3548f5e502542a37ddd67afc82101ed7a819c70f → 0.17.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 +4 -11
- package/build/browser/object-table/EditableCell.js +1 -0
- package/build/browser/object-table/EditableCell.js.map +1 -1
- package/build/browser/object-table/components/DropdownCellField.js +6 -2
- package/build/browser/object-table/components/DropdownCellField.js.map +1 -1
- package/build/browser/object-table/utils/types.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-CRDB2WJH.cjs → chunk-25R5WVUR.cjs} +4 -4
- package/build/cjs/{chunk-CRDB2WJH.cjs.map → chunk-25R5WVUR.cjs.map} +1 -1
- package/build/cjs/{chunk-7RFURD3P.cjs → chunk-6HVKQP7I.cjs} +4 -4
- package/build/cjs/{chunk-7RFURD3P.cjs.map → chunk-6HVKQP7I.cjs.map} +1 -1
- package/build/cjs/chunk-AL43X5RI.cjs +11 -0
- package/build/cjs/{chunk-4IA7YLME.cjs.map → chunk-AL43X5RI.cjs.map} +1 -1
- package/build/cjs/{chunk-5Y6YD2AA.cjs → chunk-BGTMZNYD.cjs} +4 -4
- package/build/cjs/{chunk-5Y6YD2AA.cjs.map → chunk-BGTMZNYD.cjs.map} +1 -1
- package/build/cjs/{chunk-S44N3UHH.cjs → chunk-BKLX3JZ5.cjs} +4 -4
- package/build/cjs/{chunk-S44N3UHH.cjs.map → chunk-BKLX3JZ5.cjs.map} +1 -1
- package/build/cjs/chunk-DVE44R2H.cjs +11 -0
- package/build/cjs/{chunk-MFKT3FXM.cjs.map → chunk-DVE44R2H.cjs.map} +1 -1
- package/build/cjs/chunk-HHVL4RYG.cjs +11 -0
- package/build/cjs/{chunk-A33S52HO.cjs.map → chunk-HHVL4RYG.cjs.map} +1 -1
- package/build/cjs/{chunk-KL6XOMW7.cjs → chunk-JNFOPEN2.cjs} +4 -4
- package/build/cjs/{chunk-KL6XOMW7.cjs.map → chunk-JNFOPEN2.cjs.map} +1 -1
- package/build/cjs/{chunk-NYLKEXSL.cjs → chunk-ONBWRKWJ.cjs} +11 -6
- package/build/cjs/chunk-ONBWRKWJ.cjs.map +1 -0
- package/build/cjs/{chunk-WI3KY6OH.cjs → chunk-QOKXBBSR.cjs} +4 -4
- package/build/cjs/{chunk-WI3KY6OH.cjs.map → chunk-QOKXBBSR.cjs.map} +1 -1
- package/build/cjs/{chunk-GJQTBA2H.cjs → chunk-R4M6VGVD.cjs} +3 -3
- package/build/cjs/chunk-R4M6VGVD.cjs.map +1 -0
- package/build/cjs/chunk-U2JT7LIS.cjs +11 -0
- package/build/cjs/{chunk-O4NEJHPQ.cjs.map → chunk-U2JT7LIS.cjs.map} +1 -1
- package/build/cjs/chunk-VICC2NSA.cjs +11 -0
- package/build/cjs/{chunk-5YKO2CK5.cjs.map → chunk-VICC2NSA.cjs.map} +1 -1
- 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 +13 -13
- 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/object-table.d.cts +4 -1
- 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 +46 -46
- package/build/esm/object-table/EditableCell.js +1 -0
- package/build/esm/object-table/EditableCell.js.map +1 -1
- package/build/esm/object-table/components/DropdownCellField.js +6 -2
- package/build/esm/object-table/components/DropdownCellField.js.map +1 -1
- package/build/esm/object-table/utils/types.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/object-table/EditableCell.d.ts.map +1 -1
- package/build/types/object-table/components/DropdownCellField.d.ts +8 -1
- package/build/types/object-table/components/DropdownCellField.d.ts.map +1 -1
- package/build/types/object-table/utils/types.d.ts +4 -1
- package/build/types/object-table/utils/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/build/cjs/chunk-4IA7YLME.cjs +0 -11
- package/build/cjs/chunk-5YKO2CK5.cjs +0 -11
- package/build/cjs/chunk-A33S52HO.cjs +0 -11
- package/build/cjs/chunk-GJQTBA2H.cjs.map +0 -1
- package/build/cjs/chunk-MFKT3FXM.cjs +0 -11
- package/build/cjs/chunk-NYLKEXSL.cjs.map +0 -1
- package/build/cjs/chunk-O4NEJHPQ.cjs +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,26 +1,19 @@
|
|
|
1
1
|
# @osdk/react-components
|
|
2
2
|
|
|
3
|
-
## 0.17.0
|
|
3
|
+
## 0.17.0
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
7
|
- 773194c: `ObjectTable` now accepts an optional `renderEmptyState` prop for overriding the default "No Data" indicator with a custom `ReactNode`.
|
|
8
|
+
- 546c673: Fix page scroll being blocked when opening a date picker in an editable ObjectTable
|
|
9
|
+
- 962ede9: prevent height jumps in SingleSelectInput, MultiSelectInput, and TextTagsInput during loading
|
|
8
10
|
- 3548f5e: ObjectTable:
|
|
9
11
|
- Fix "select all" + scroll: newly-loaded rows are now checked and the header checkbox stays in sync. `onRowSelection` refires in uncontrolled mode with the expanded id list as new pages load.
|
|
10
12
|
- Add `onRowSelectionChanged(change)` callback that delivers a `RowSelectionChange` payload with `selectedRowIds`, `selectedRows`, `isSelectAll`, and a derived `objectSet` (full underlying set on "select all", otherwise narrowed by `$primaryKey`).
|
|
11
13
|
- Deprecate `onRowSelection` in favor of `onRowSelectionChanged`. The legacy callback continues to fire for backwards compatibility.
|
|
12
14
|
|
|
13
15
|
- 6400c8b: Remove DocxViewer. `.docx` files now fall through to the DocumentViewer unsupported-file state. The `docx-preview` dependency, `DocxViewer`/`BaseDocxViewer` exports, `./experimental/docx-viewer` entrypoint, `ViewerType.Docx`, and `docxViewerProps` on `DocumentViewer` are removed. Removed primarily because rendering untrusted `.docx` directly in the browser via `docx-preview` parses arbitrary attacker-controlled Office Open XML in the host page; we'd rather route DOCX through a server-side decode pipeline (e.g. MIO transform → PDF) than ship a client-side parser as an attack surface. Consumers should pre-convert DOCX to PDF and use `PdfViewer`, or supply their own viewer.
|
|
14
|
-
|
|
15
|
-
### Patch Changes
|
|
16
|
-
|
|
17
|
-
- 546c673: Fix page scroll being blocked when opening a date picker in an editable ObjectTable
|
|
18
|
-
- 962ede9: prevent height jumps in SingleSelectInput, MultiSelectInput, and TextTagsInput during loading
|
|
19
|
-
- Updated dependencies [1a07c91]
|
|
20
|
-
- Updated dependencies [2db1450]
|
|
21
|
-
- @osdk/api@2.21.0-main-3548f5e502542a37ddd67afc82101ed7a819c70f
|
|
22
|
-
- @osdk/client@2.21.0-main-3548f5e502542a37ddd67afc82101ed7a819c70f
|
|
23
|
-
- @osdk/react@2.21.0-main-3548f5e502542a37ddd67afc82101ed7a819c70f
|
|
16
|
+
- ddeda7f: Fix custom value rendering in ObjectTable dropdown cells for non-string item types (booleans, numbers, etc.)
|
|
24
17
|
|
|
25
18
|
## 0.16.0
|
|
26
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCell.js","names":["Error","React","useCallback","useEffect","useMemo","useRef","useState","Tooltip","DatePickerCellField","DropdownCellField","TextInputCellField","styles","NUMBER_TYPES","DATE_TYPES","VALIDATION_ERROR_MESSAGE","valueToString","value","JSON","stringify","String","parseValueByType","dataType","includes","parsedNumber","Number","isNaN","EditableCellInner","initialValue","currentValue","cellId","onCellEdit","onCellValidationError","clearCellValidationError","originalRowData","rowId","columnId","validateEdit","validationError","editFieldConfig","rowCellEdits","isRowFocused","inputValue","setInputValue","isCancelled","validationAbortControllerRef","abortValidation","current","abort","hasValidationError","isEdited","runValidation","parsedValue","controller","AbortController","validationPromise","Promise","race","_","reject","signal","addEventListener","DOMException","then","errorMessage","aborted","error","name","commitEdit","newValue","oldValue","handleBlur","handleInputChange","handleKeyDown","e","key","currentTarget","blur","handleCommit","inputType","dropdownFieldProps","fieldComponent","getFieldComponentProps","undefined","datePickerFieldProps","createElement","Provider","Root","disabled","Trigger","className","osdkEditableCellTrigger","render","osdkTooltipTriggerWrapper","fieldComponentProps","onChange","onValueChange","onBlur","onKeyDown","Portal","Positioner","sideOffset","side","Popup","errorIcon","Arrow","EditableCell","memo"],"sources":["EditableCell.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 { Error } from \"@blueprintjs/icons\";\nimport type { RowData } from \"@tanstack/react-table\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { DatePickerCellField } from \"./components/DatePickerCellField.js\";\nimport { DropdownCellField } from \"./components/DropdownCellField.js\";\nimport { TextInputCellField } from \"./components/TextInputCellField.js\";\nimport styles from \"./EditableCell.module.css\";\nimport type { CellEditInfo, EditFieldConfig } from \"./utils/types.js\";\n\nconst NUMBER_TYPES: readonly string[] = [\n \"double\",\n \"integer\",\n \"long\",\n \"float\",\n \"decimal\",\n \"byte\",\n \"short\",\n];\n\nconst DATE_TYPES: readonly string[] = [\n \"datetime\",\n \"timestamp\",\n];\n\nconst VALIDATION_ERROR_MESSAGE = \"Validation error\";\n\nexport interface EditableCellProps<TData extends RowData, CellValue = unknown> {\n initialValue: CellValue;\n currentValue: CellValue;\n cellId: string;\n dataType?: string;\n onCellEdit: (cellId: string, info: CellEditInfo<TData, CellValue>) => void;\n onCellValidationError?: (\n cellId: string,\n error: string,\n ) => void;\n clearCellValidationError?: (cellId: string) => void;\n validationError?: string;\n originalRowData: TData;\n rowId: string;\n columnId: string;\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n editFieldConfig?: EditFieldConfig<TData>;\n /**\n * Pending edits for this row, keyed by `columnId`. Forwarded to\n * `EditFieldConfig#getFieldComponentProps`. Filtering happens in\n * `DefaultCellRenderer` so unedited rows receive a stable `undefined`\n * reference and `React.memo` can skip them.\n */\n rowCellEdits?: Record<string, CellEditInfo<TData, unknown>>;\n isRowFocused?: boolean;\n}\n\nfunction valueToString(value: unknown): string {\n if (value == null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n // At this point, value is a primitive (string, number, boolean, symbol, bigint)\n return String(value as string | number | boolean | symbol | bigint);\n}\n\nfunction parseValueByType(\n value: string,\n dataType?: string,\n): unknown {\n if (!dataType || !NUMBER_TYPES.includes(dataType)) {\n return value;\n }\n\n if (value === \"\") {\n return null;\n }\n\n const parsedNumber = Number(value);\n\n if (isNaN(parsedNumber)) {\n return value;\n }\n\n return parsedNumber;\n}\n\nfunction EditableCellInner<TData extends RowData, CellValue = unknown>({\n initialValue,\n currentValue,\n cellId,\n dataType,\n onCellEdit,\n onCellValidationError,\n clearCellValidationError,\n originalRowData,\n rowId,\n columnId,\n validateEdit,\n validationError,\n editFieldConfig,\n rowCellEdits,\n isRowFocused = false,\n}: EditableCellProps<TData, CellValue>): React.ReactElement {\n const [inputValue, setInputValue] = useState<string>(\n valueToString(currentValue),\n );\n const isCancelled = useRef(false);\n const validationAbortControllerRef = useRef<AbortController | null>(null);\n\n const abortValidation = useCallback(() => {\n if (validationAbortControllerRef.current) {\n validationAbortControllerRef.current.abort();\n validationAbortControllerRef.current = null;\n }\n }, []);\n\n const hasValidationError = validationError != null;\n const isEdited = (currentValue ?? null) !== (initialValue ?? null);\n\n useEffect(() => {\n setInputValue(valueToString(currentValue));\n }, [currentValue]);\n\n useEffect(() => {\n return () => {\n abortValidation();\n };\n }, [abortValidation]);\n\n const runValidation = useCallback(\n (parsedValue: unknown) => {\n if (!validateEdit) {\n return;\n }\n\n const controller = new AbortController();\n validationAbortControllerRef.current = controller;\n\n const validationPromise = validateEdit(parsedValue);\n\n // Race between validation and abort\n Promise.race([\n validationPromise,\n new Promise<string | undefined>((_, reject) => {\n controller.signal.addEventListener(\"abort\", () => {\n reject(new DOMException(\"Aborted\", \"AbortError\"));\n });\n }),\n ]).then(\n (errorMessage) => {\n if (controller.signal.aborted) {\n return;\n }\n if (errorMessage) {\n onCellValidationError?.(cellId, errorMessage);\n } else {\n clearCellValidationError?.(cellId);\n }\n },\n (error) => {\n if (\n !controller.signal.aborted\n && error.name !== \"AbortError\"\n ) {\n onCellValidationError?.(cellId, VALIDATION_ERROR_MESSAGE);\n }\n },\n );\n },\n [validateEdit, onCellValidationError, clearCellValidationError, cellId],\n );\n\n const commitEdit = useCallback(\n (newValue: CellValue) => {\n abortValidation();\n\n onCellEdit(cellId, {\n rowId,\n columnId,\n newValue,\n oldValue: initialValue,\n originalRowData,\n });\n\n runValidation(newValue);\n },\n [\n abortValidation,\n onCellEdit,\n cellId,\n rowId,\n columnId,\n initialValue,\n originalRowData,\n runValidation,\n ],\n );\n\n // Text/number input: commit on blur\n const handleBlur = useCallback(() => {\n if (isCancelled.current) {\n isCancelled.current = false;\n return;\n }\n\n // No-op when the input wasn't actually changed by the user\n if (inputValue === valueToString(currentValue)) {\n return;\n }\n\n const parsedValue = parseValueByType(inputValue, dataType) as CellValue;\n commitEdit(parsedValue);\n }, [inputValue, currentValue, dataType, commitEdit]);\n\n const handleInputChange = useCallback((value: string) => {\n // Cancel any in-flight validation\n abortValidation();\n setInputValue(value);\n }, [abortValidation]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n if (e.key === \"Escape\") {\n isCancelled.current = true;\n setInputValue(valueToString(currentValue));\n e.currentTarget.blur();\n }\n },\n [currentValue],\n );\n\n const handleCommit = useCallback(\n (newValue: unknown) => {\n if ((newValue ?? null) === (currentValue ?? null)) return;\n commitEdit(newValue as CellValue);\n },\n [commitEdit, currentValue],\n );\n\n const inputType = dataType && NUMBER_TYPES.includes(dataType)\n ? \"number\"\n : \"text\";\n\n // Compute field-component props once per (editFieldConfig, originalRowData, rowCellEdits).\n // The narrowed return type is preserved in each useMemo\n const dropdownFieldProps = useMemo(\n () =>\n editFieldConfig?.fieldComponent === \"DROPDOWN\"\n ? editFieldConfig.getFieldComponentProps(originalRowData, rowCellEdits)\n : undefined,\n [editFieldConfig, originalRowData, rowCellEdits],\n );\n\n const datePickerFieldProps = useMemo(\n () =>\n editFieldConfig?.fieldComponent === \"DATE_PICKER\"\n ? editFieldConfig.getFieldComponentProps(originalRowData, rowCellEdits)\n : undefined,\n [editFieldConfig, originalRowData, rowCellEdits],\n );\n\n const renderFieldInput = () => {\n switch (editFieldConfig?.fieldComponent) {\n case \"DROPDOWN\":\n return (\n <DropdownCellField\n fieldComponentProps={dropdownFieldProps!}\n isRowFocused={isRowFocused}\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onChange={handleCommit}\n />\n );\n case \"DATE_PICKER\":\n return (\n <DatePickerCellField\n fieldComponentProps={datePickerFieldProps}\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onChange={handleCommit}\n />\n );\n default:\n if (dataType != null && DATE_TYPES.includes(dataType)) {\n return (\n <DatePickerCellField\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onChange={handleCommit}\n dataType={dataType}\n />\n );\n }\n return (\n <TextInputCellField\n inputType={inputType}\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onValueChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n }\n };\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root disabled={!hasValidationError}>\n <Tooltip.Trigger\n className={styles.osdkEditableCellTrigger}\n render={<span className={styles.osdkTooltipTriggerWrapper} />}\n >\n {renderFieldInput()}\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Positioner sideOffset={4} side={\"bottom\"}>\n <Tooltip.Popup>\n <div className={styles.validationError}>\n <Error className={styles.errorIcon} />\n {validationError}\n </div>\n <Tooltip.Arrow />\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n}\n\nexport const EditableCell = React.memo(\n EditableCellInner,\n) as typeof EditableCellInner;\n\"\";\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"EditableCell.js","names":["Error","React","useCallback","useEffect","useMemo","useRef","useState","Tooltip","DatePickerCellField","DropdownCellField","TextInputCellField","styles","NUMBER_TYPES","DATE_TYPES","VALIDATION_ERROR_MESSAGE","valueToString","value","JSON","stringify","String","parseValueByType","dataType","includes","parsedNumber","Number","isNaN","EditableCellInner","initialValue","currentValue","cellId","onCellEdit","onCellValidationError","clearCellValidationError","originalRowData","rowId","columnId","validateEdit","validationError","editFieldConfig","rowCellEdits","isRowFocused","inputValue","setInputValue","isCancelled","validationAbortControllerRef","abortValidation","current","abort","hasValidationError","isEdited","runValidation","parsedValue","controller","AbortController","validationPromise","Promise","race","_","reject","signal","addEventListener","DOMException","then","errorMessage","aborted","error","name","commitEdit","newValue","oldValue","handleBlur","handleInputChange","handleKeyDown","e","key","currentTarget","blur","handleCommit","inputType","dropdownFieldProps","fieldComponent","getFieldComponentProps","undefined","datePickerFieldProps","createElement","Provider","Root","disabled","Trigger","className","osdkEditableCellTrigger","render","osdkTooltipTriggerWrapper","fieldComponentProps","onChange","onValueChange","onBlur","onKeyDown","Portal","Positioner","sideOffset","side","Popup","errorIcon","Arrow","EditableCell","memo"],"sources":["EditableCell.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 { Error } from \"@blueprintjs/icons\";\nimport type { RowData } from \"@tanstack/react-table\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { DatePickerCellField } from \"./components/DatePickerCellField.js\";\nimport { DropdownCellField } from \"./components/DropdownCellField.js\";\nimport { TextInputCellField } from \"./components/TextInputCellField.js\";\nimport styles from \"./EditableCell.module.css\";\nimport type { CellEditInfo, EditFieldConfig } from \"./utils/types.js\";\n\nconst NUMBER_TYPES: readonly string[] = [\n \"double\",\n \"integer\",\n \"long\",\n \"float\",\n \"decimal\",\n \"byte\",\n \"short\",\n];\n\nconst DATE_TYPES: readonly string[] = [\n \"datetime\",\n \"timestamp\",\n];\n\nconst VALIDATION_ERROR_MESSAGE = \"Validation error\";\n\nexport interface EditableCellProps<TData extends RowData, CellValue = unknown> {\n initialValue: CellValue;\n currentValue: CellValue;\n cellId: string;\n dataType?: string;\n onCellEdit: (cellId: string, info: CellEditInfo<TData, CellValue>) => void;\n onCellValidationError?: (\n cellId: string,\n error: string,\n ) => void;\n clearCellValidationError?: (cellId: string) => void;\n validationError?: string;\n originalRowData: TData;\n rowId: string;\n columnId: string;\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n editFieldConfig?: EditFieldConfig<TData>;\n /**\n * Pending edits for this row, keyed by `columnId`. Forwarded to\n * `EditFieldConfig#getFieldComponentProps`. Filtering happens in\n * `DefaultCellRenderer` so unedited rows receive a stable `undefined`\n * reference and `React.memo` can skip them.\n */\n rowCellEdits?: Record<string, CellEditInfo<TData, unknown>>;\n isRowFocused?: boolean;\n}\n\nfunction valueToString(value: unknown): string {\n if (value == null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n // At this point, value is a primitive (string, number, boolean, symbol, bigint)\n return String(value as string | number | boolean | symbol | bigint);\n}\n\nfunction parseValueByType(\n value: string,\n dataType?: string,\n): unknown {\n if (!dataType || !NUMBER_TYPES.includes(dataType)) {\n return value;\n }\n\n if (value === \"\") {\n return null;\n }\n\n const parsedNumber = Number(value);\n\n if (isNaN(parsedNumber)) {\n return value;\n }\n\n return parsedNumber;\n}\n\nfunction EditableCellInner<TData extends RowData, CellValue = unknown>({\n initialValue,\n currentValue,\n cellId,\n dataType,\n onCellEdit,\n onCellValidationError,\n clearCellValidationError,\n originalRowData,\n rowId,\n columnId,\n validateEdit,\n validationError,\n editFieldConfig,\n rowCellEdits,\n isRowFocused = false,\n}: EditableCellProps<TData, CellValue>): React.ReactElement {\n const [inputValue, setInputValue] = useState<string>(\n valueToString(currentValue),\n );\n const isCancelled = useRef(false);\n const validationAbortControllerRef = useRef<AbortController | null>(null);\n\n const abortValidation = useCallback(() => {\n if (validationAbortControllerRef.current) {\n validationAbortControllerRef.current.abort();\n validationAbortControllerRef.current = null;\n }\n }, []);\n\n const hasValidationError = validationError != null;\n const isEdited = (currentValue ?? null) !== (initialValue ?? null);\n\n useEffect(() => {\n setInputValue(valueToString(currentValue));\n }, [currentValue]);\n\n useEffect(() => {\n return () => {\n abortValidation();\n };\n }, [abortValidation]);\n\n const runValidation = useCallback(\n (parsedValue: unknown) => {\n if (!validateEdit) {\n return;\n }\n\n const controller = new AbortController();\n validationAbortControllerRef.current = controller;\n\n const validationPromise = validateEdit(parsedValue);\n\n // Race between validation and abort\n Promise.race([\n validationPromise,\n new Promise<string | undefined>((_, reject) => {\n controller.signal.addEventListener(\"abort\", () => {\n reject(new DOMException(\"Aborted\", \"AbortError\"));\n });\n }),\n ]).then(\n (errorMessage) => {\n if (controller.signal.aborted) {\n return;\n }\n if (errorMessage) {\n onCellValidationError?.(cellId, errorMessage);\n } else {\n clearCellValidationError?.(cellId);\n }\n },\n (error) => {\n if (\n !controller.signal.aborted\n && error.name !== \"AbortError\"\n ) {\n onCellValidationError?.(cellId, VALIDATION_ERROR_MESSAGE);\n }\n },\n );\n },\n [validateEdit, onCellValidationError, clearCellValidationError, cellId],\n );\n\n const commitEdit = useCallback(\n (newValue: CellValue) => {\n abortValidation();\n\n onCellEdit(cellId, {\n rowId,\n columnId,\n newValue,\n oldValue: initialValue,\n originalRowData,\n });\n\n runValidation(newValue);\n },\n [\n abortValidation,\n onCellEdit,\n cellId,\n rowId,\n columnId,\n initialValue,\n originalRowData,\n runValidation,\n ],\n );\n\n // Text/number input: commit on blur\n const handleBlur = useCallback(() => {\n if (isCancelled.current) {\n isCancelled.current = false;\n return;\n }\n\n // No-op when the input wasn't actually changed by the user\n if (inputValue === valueToString(currentValue)) {\n return;\n }\n\n const parsedValue = parseValueByType(inputValue, dataType) as CellValue;\n commitEdit(parsedValue);\n }, [inputValue, currentValue, dataType, commitEdit]);\n\n const handleInputChange = useCallback((value: string) => {\n // Cancel any in-flight validation\n abortValidation();\n setInputValue(value);\n }, [abortValidation]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n if (e.key === \"Escape\") {\n isCancelled.current = true;\n setInputValue(valueToString(currentValue));\n e.currentTarget.blur();\n }\n },\n [currentValue],\n );\n\n const handleCommit = useCallback(\n (newValue: unknown) => {\n if ((newValue ?? null) === (currentValue ?? null)) return;\n commitEdit(newValue as CellValue);\n },\n [commitEdit, currentValue],\n );\n\n const inputType = dataType && NUMBER_TYPES.includes(dataType)\n ? \"number\"\n : \"text\";\n\n // Compute field-component props once per (editFieldConfig, originalRowData, rowCellEdits).\n // The narrowed return type is preserved in each useMemo\n const dropdownFieldProps = useMemo(\n () =>\n editFieldConfig?.fieldComponent === \"DROPDOWN\"\n ? editFieldConfig.getFieldComponentProps(originalRowData, rowCellEdits)\n : undefined,\n [editFieldConfig, originalRowData, rowCellEdits],\n );\n\n const datePickerFieldProps = useMemo(\n () =>\n editFieldConfig?.fieldComponent === \"DATE_PICKER\"\n ? editFieldConfig.getFieldComponentProps(originalRowData, rowCellEdits)\n : undefined,\n [editFieldConfig, originalRowData, rowCellEdits],\n );\n\n const renderFieldInput = () => {\n switch (editFieldConfig?.fieldComponent) {\n case \"DROPDOWN\":\n return (\n <DropdownCellField\n fieldComponentProps={dropdownFieldProps!}\n isRowFocused={isRowFocused}\n inputValue={inputValue}\n value={currentValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onChange={handleCommit}\n />\n );\n case \"DATE_PICKER\":\n return (\n <DatePickerCellField\n fieldComponentProps={datePickerFieldProps}\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onChange={handleCommit}\n />\n );\n default:\n if (dataType != null && DATE_TYPES.includes(dataType)) {\n return (\n <DatePickerCellField\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onChange={handleCommit}\n dataType={dataType}\n />\n );\n }\n return (\n <TextInputCellField\n inputType={inputType}\n inputValue={inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n onValueChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n }\n };\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root disabled={!hasValidationError}>\n <Tooltip.Trigger\n className={styles.osdkEditableCellTrigger}\n render={<span className={styles.osdkTooltipTriggerWrapper} />}\n >\n {renderFieldInput()}\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Positioner sideOffset={4} side={\"bottom\"}>\n <Tooltip.Popup>\n <div className={styles.validationError}>\n <Error className={styles.errorIcon} />\n {validationError}\n </div>\n <Tooltip.Arrow />\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n}\n\nexport const EditableCell = React.memo(\n EditableCellInner,\n) as typeof EditableCellInner;\n\"\";\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,14 +25,18 @@ function DropdownCellFieldInner({
|
|
|
25
25
|
fieldComponentProps,
|
|
26
26
|
isRowFocused,
|
|
27
27
|
inputValue,
|
|
28
|
+
value,
|
|
28
29
|
hasValidationError,
|
|
29
30
|
isEdited,
|
|
30
31
|
onChange
|
|
31
32
|
}) {
|
|
32
33
|
const portalRef = useRegisterPortal();
|
|
34
|
+
const {
|
|
35
|
+
itemToStringLabel
|
|
36
|
+
} = fieldComponentProps;
|
|
33
37
|
if (!isRowFocused) {
|
|
34
38
|
return /*#__PURE__*/React.createElement(ReadonlyDisplayCell, {
|
|
35
|
-
inputValue: inputValue,
|
|
39
|
+
inputValue: itemToStringLabel ? itemToStringLabel(value) : inputValue,
|
|
36
40
|
hasValidationError: hasValidationError,
|
|
37
41
|
isEdited: isEdited
|
|
38
42
|
});
|
|
@@ -44,7 +48,7 @@ function DropdownCellFieldInner({
|
|
|
44
48
|
})
|
|
45
49
|
}, /*#__PURE__*/React.createElement(DropdownField, _extends({}, fieldComponentProps, {
|
|
46
50
|
portalRef: portalRef,
|
|
47
|
-
value:
|
|
51
|
+
value: value,
|
|
48
52
|
onChange: onChange,
|
|
49
53
|
modal: false
|
|
50
54
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownCellField.js","names":["classNames","React","DropdownField","styles","useRegisterPortal","ReadonlyDisplayCell","DropdownCellFieldInner","fieldComponentProps","isRowFocused","inputValue","hasValidationError","isEdited","onChange","portalRef","createElement","className","osdkEditableCellDropdown","error","osdkEditedInput","_extends","
|
|
1
|
+
{"version":3,"file":"DropdownCellField.js","names":["classNames","React","DropdownField","styles","useRegisterPortal","ReadonlyDisplayCell","DropdownCellFieldInner","fieldComponentProps","isRowFocused","inputValue","value","hasValidationError","isEdited","onChange","portalRef","itemToStringLabel","createElement","className","osdkEditableCellDropdown","error","osdkEditedInput","_extends","modal","DropdownCellField","memo"],"sources":["DropdownCellField.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 from \"react\";\nimport { DropdownField } from \"../../action-form/fields/DropdownField.js\";\nimport styles from \"../EditableCell.module.css\";\nimport { useRegisterPortal } from \"../utils/PortalTracker.js\";\nimport type { DropdownEditConfig } from \"../utils/types.js\";\nimport { ReadonlyDisplayCell } from \"./ReadonlyDisplayCell.js\";\n\ninterface DropdownCellFieldProps {\n fieldComponentProps: DropdownEditConfig;\n isRowFocused: boolean;\n /**\n * Stringified value for the readonly (non-focused) cell display.\n */\n inputValue: string;\n /**\n * The actual typed cell value.\n */\n value: unknown;\n hasValidationError: boolean;\n isEdited: boolean;\n onChange: (newValue: unknown) => void;\n}\n\nfunction DropdownCellFieldInner({\n fieldComponentProps,\n isRowFocused,\n inputValue,\n value,\n hasValidationError,\n isEdited,\n onChange,\n}: DropdownCellFieldProps): React.ReactElement {\n const portalRef = useRegisterPortal();\n const { itemToStringLabel } = fieldComponentProps;\n\n if (!isRowFocused) {\n return (\n <ReadonlyDisplayCell\n inputValue={itemToStringLabel\n ? itemToStringLabel(value)\n : inputValue}\n hasValidationError={hasValidationError}\n isEdited={isEdited}\n />\n );\n }\n return (\n <div\n className={classNames(\n styles.osdkEditableCellDropdown,\n {\n [styles.error]: hasValidationError,\n [styles.osdkEditedInput]: isEdited,\n },\n )}\n >\n <DropdownField\n {...fieldComponentProps}\n portalRef={portalRef}\n value={value}\n onChange={onChange}\n modal={false}\n />\n </div>\n );\n}\n\nexport const DropdownCellField: React.MemoExoticComponent<\n typeof DropdownCellFieldInner\n> = React.memo(DropdownCellFieldInner);\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,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,2CAA2C;AACzE,OAAOC,MAAM,MAAM,4BAA4B;AAC/C,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D,SAASC,mBAAmB,QAAQ,0BAA0B;AAkB9D,SAASC,sBAAsBA,CAAC;EAC9BC,mBAAmB;EACnBC,YAAY;EACZC,UAAU;EACVC,KAAK;EACLC,kBAAkB;EAClBC,QAAQ;EACRC;AACsB,CAAC,EAAsB;EAC7C,MAAMC,SAAS,GAAGV,iBAAiB,CAAC,CAAC;EACrC,MAAM;IAAEW;EAAkB,CAAC,GAAGR,mBAAmB;EAEjD,IAAI,CAACC,YAAY,EAAE;IACjB,oBACEP,KAAA,CAAAe,aAAA,CAACX,mBAAmB;MAClBI,UAAU,EAAEM,iBAAiB,GACzBA,iBAAiB,CAACL,KAAK,CAAC,GACxBD,UAAW;MACfE,kBAAkB,EAAEA,kBAAmB;MACvCC,QAAQ,EAAEA;IAAS,CACpB,CAAC;EAEN;EACA,oBACEX,KAAA,CAAAe,aAAA;IACEC,SAAS,EAAEjB,UAAU,CACnBG,MAAM,CAACe,wBAAwB,EAC/B;MACE,CAACf,MAAM,CAACgB,KAAK,GAAGR,kBAAkB;MAClC,CAACR,MAAM,CAACiB,eAAe,GAAGR;IAC5B,CACF;EAAE,gBAEFX,KAAA,CAAAe,aAAA,CAACd,aAAa,EAAAmB,QAAA,KACRd,mBAAmB;IACvBO,SAAS,EAAEA,SAAU;IACrBJ,KAAK,EAAEA,KAAM;IACbG,QAAQ,EAAEA,QAAS;IACnBS,KAAK,EAAE;EAAM,EACd,CACE,CAAC;AAEV;AAEA,OAAO,MAAMC,iBAEZ,gBAAGtB,KAAK,CAACuB,IAAI,CAAClB,sBAAsB,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["types.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport interface ColumnOption {\n id: string;\n name: string;\n canSort: boolean;\n}\n\nexport interface CellIdentifier {\n rowId: string;\n columnId: string;\n}\n\nexport interface CellEditInfo<\n TData extends RowData = unknown,\n CellValue = unknown,\n> extends CellIdentifier {\n newValue: CellValue | null;\n oldValue: CellValue | null;\n originalRowData: TData;\n}\n\nexport type EditModeState =\n | { type: \"always\"; isActive: true }\n | { type: \"manual\"; isActive: boolean; setActive: (value: boolean) => void };\n\nexport interface EditableConfig<\n TData extends RowData = unknown,\n CellValue = unknown,\n> {\n cellEdits: Record<string, CellEditInfo<TData, CellValue>>;\n onCellEdit: (\n cellId: string,\n info: CellEditInfo<TData, CellValue>,\n ) => void;\n onSubmitEdits?: () => Promise<boolean>;\n clearEdits: () => void;\n editModeState: EditModeState;\n onCellValidationError: (\n cellId: string,\n error: string,\n ) => void;\n validationErrors: Map<string, string>;\n clearCellValidationError: (cellId: string) => void;\n}\n\n/**\n * User-facing configuration for a dropdown editor in a table cell.\n *\n * This is intentionally a standalone interface rather than re-exporting\n * `DropdownFieldProps` from ActionForm, so the table API doesn't break\n * when ActionForm's prop shape changes (e.g. adding form-specific fields).\n */\nexport interface DropdownEditConfig<V = unknown> {\n /**\n * Available items for the dropdown.\n */\n items: V[];\n\n /**\n * Converts an item to a display string. Defaults to `String()`.\n */\n itemToStringLabel
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["types.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport interface ColumnOption {\n id: string;\n name: string;\n canSort: boolean;\n}\n\nexport interface CellIdentifier {\n rowId: string;\n columnId: string;\n}\n\nexport interface CellEditInfo<\n TData extends RowData = unknown,\n CellValue = unknown,\n> extends CellIdentifier {\n newValue: CellValue | null;\n oldValue: CellValue | null;\n originalRowData: TData;\n}\n\nexport type EditModeState =\n | { type: \"always\"; isActive: true }\n | { type: \"manual\"; isActive: boolean; setActive: (value: boolean) => void };\n\nexport interface EditableConfig<\n TData extends RowData = unknown,\n CellValue = unknown,\n> {\n cellEdits: Record<string, CellEditInfo<TData, CellValue>>;\n onCellEdit: (\n cellId: string,\n info: CellEditInfo<TData, CellValue>,\n ) => void;\n onSubmitEdits?: () => Promise<boolean>;\n clearEdits: () => void;\n editModeState: EditModeState;\n onCellValidationError: (\n cellId: string,\n error: string,\n ) => void;\n validationErrors: Map<string, string>;\n clearCellValidationError: (cellId: string) => void;\n}\n\n/**\n * User-facing configuration for a dropdown editor in a table cell.\n *\n * This is intentionally a standalone interface rather than re-exporting\n * `DropdownFieldProps` from ActionForm, so the table API doesn't break\n * when ActionForm's prop shape changes (e.g. adding form-specific fields).\n */\nexport interface DropdownEditConfig<V = unknown> {\n /**\n * Available items for the dropdown.\n */\n items: V[];\n\n /**\n * Converts an item to a display string. Defaults to `String()`.\n *\n * `item` may be `undefined` when the cell has no value yet — the formatter\n * is responsible for producing a sensible label in that case.\n */\n itemToStringLabel?(item: V | undefined): string;\n\n /**\n * Returns a unique string key for a list item. Used as the React `key`.\n * Falls back to the item's index when not provided.\n */\n itemToKey?: (item: V) => string;\n\n /**\n * Custom equality check for item values. Defaults to `Object.is`.\n * Required when items are objects to ensure correct selection matching.\n */\n isItemEqual?: (a: V, b: V) => boolean;\n\n /**\n * Whether the dropdown allows searching/filtering.\n * When true, renders a Combobox with a search input.\n * When false (default), renders a Select dropdown.\n */\n isSearchable?: boolean;\n\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n\n /**\n * Whether multiple values can be selected.\n */\n isMultiple?: boolean;\n}\n\n/**\n * User-facing configuration for a date picker editor in a table cell.\n *\n * Standalone by design rather than re-exporting `DatePickerProps` so the\n * table API doesn't break when the picker's prop shape changes.\n */\nexport interface DatePickerEditConfig {\n /**\n * The earliest date the user can select.\n */\n min?: Date;\n\n /**\n * The latest date the user can select.\n */\n max?: Date;\n\n /**\n * Whether to show a time picker alongside the calendar.\n */\n showTime?: boolean;\n\n /**\n * Whether to close the popover after selecting a date.\n * @default true when `showTime` is false, false when `showTime` is true\n */\n closeOnSelection?: boolean;\n\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n\n /**\n * Formats a Date for display in the input field when not editing.\n * Provide a matching `parseDate` if using a custom format.\n */\n formatDate?: (date: Date) => string;\n\n /**\n * Parses a user-typed string back into a Date.\n * Must be the inverse of `formatDate`.\n */\n parseDate?: (text: string) => Date | undefined;\n}\n\n/**\n * Maps each supported editable field component to its user-facing config.\n */\ninterface EditFieldPropsByType {\n DROPDOWN: DropdownEditConfig;\n DATE_PICKER: DatePickerEditConfig;\n}\n\ntype EditFieldComponent = keyof EditFieldPropsByType;\n\n/**\n * Configuration for an editable cell's field component.\n *\n * `getFieldComponentProps` is called with the row's object and a map of any\n * pending cell edits for the same row, keyed by `columnId`. This lets the\n * configuration depend on row state or on other in-progress edits within the\n * row (e.g. dropdown items that change once another column is edited).\n */\nexport type EditFieldConfig<TData = unknown> = {\n [K in EditFieldComponent]: {\n fieldComponent: K;\n getFieldComponentProps: (\n object: TData,\n edits?: Record<string, CellEditInfo<TData, unknown>>,\n ) => EditFieldPropsByType[K];\n };\n}[EditFieldComponent];\n"],"mappings":"","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.17.0
|
|
17
|
+
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.17.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":[]}
|
|
@@ -6,7 +6,7 @@ var chunkZ4JDLERD_cjs = require('./chunk-Z4JDLERD.cjs');
|
|
|
6
6
|
var chunkJBRNNWYC_cjs = require('./chunk-JBRNNWYC.cjs');
|
|
7
7
|
var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
|
|
8
8
|
var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunkR4M6VGVD_cjs = require('./chunk-R4M6VGVD.cjs');
|
|
10
10
|
var button = require('@base-ui/react/button');
|
|
11
11
|
var classnames3 = require('classnames');
|
|
12
12
|
var React13 = require('react');
|
|
@@ -5105,7 +5105,7 @@ function summarizeFilterValue(definition, state) {
|
|
|
5105
5105
|
}
|
|
5106
5106
|
|
|
5107
5107
|
// src/public/experimental/filter-list.ts
|
|
5108
|
-
var FilterList2 =
|
|
5108
|
+
var FilterList2 = chunkR4M6VGVD_cjs.withOsdkMetrics(FilterList, "FilterList");
|
|
5109
5109
|
|
|
5110
5110
|
exports.BaseFilterList = BaseFilterList;
|
|
5111
5111
|
exports.FilterInput = FilterInput;
|
|
@@ -5118,5 +5118,5 @@ exports.getFilterLabel = getFilterLabel;
|
|
|
5118
5118
|
exports.serializeFilterStates = serializeFilterStates;
|
|
5119
5119
|
exports.summarizeFilterValue = summarizeFilterValue;
|
|
5120
5120
|
exports.useFilterListState = useFilterListState;
|
|
5121
|
-
//# sourceMappingURL=chunk-
|
|
5122
|
-
//# sourceMappingURL=chunk-
|
|
5121
|
+
//# sourceMappingURL=chunk-25R5WVUR.cjs.map
|
|
5122
|
+
//# sourceMappingURL=chunk-25R5WVUR.cjs.map
|