@osdk/react-components 0.22.0 → 0.22.1-main-2e92b908fc461ab107d493cb0aa71a1be400ef2f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/browser/object-table/hooks/useRowSelection.js +8 -3
  3. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  4. package/build/browser/util/UserAgent.js +1 -1
  5. package/build/browser/util/UserAgent.js.map +1 -1
  6. package/build/cjs/chunk-23N6K2BP.cjs +11 -0
  7. package/build/cjs/{chunk-SBENFO5U.cjs.map → chunk-23N6K2BP.cjs.map} +1 -1
  8. package/build/cjs/{chunk-B6AIDSEZ.cjs → chunk-5263W3VC.cjs} +4 -4
  9. package/build/cjs/{chunk-B6AIDSEZ.cjs.map → chunk-5263W3VC.cjs.map} +1 -1
  10. package/build/cjs/{chunk-V3TF4PWW.cjs → chunk-7GZEFXBQ.cjs} +4 -4
  11. package/build/cjs/{chunk-V3TF4PWW.cjs.map → chunk-7GZEFXBQ.cjs.map} +1 -1
  12. package/build/cjs/{chunk-XUVWBVTL.cjs → chunk-CSSQ2OPC.cjs} +6 -6
  13. package/build/cjs/{chunk-XUVWBVTL.cjs.map → chunk-CSSQ2OPC.cjs.map} +1 -1
  14. package/build/cjs/{chunk-O3L7F3SI.cjs → chunk-DHQJOBAG.cjs} +3 -3
  15. package/build/cjs/chunk-DHQJOBAG.cjs.map +1 -0
  16. package/build/cjs/chunk-F2DOMIN5.cjs +11 -0
  17. package/build/cjs/{chunk-A3TEU5AA.cjs.map → chunk-F2DOMIN5.cjs.map} +1 -1
  18. package/build/cjs/{chunk-XZI3NYBD.cjs → chunk-LRP4RUF7.cjs} +4 -4
  19. package/build/cjs/{chunk-XZI3NYBD.cjs.map → chunk-LRP4RUF7.cjs.map} +1 -1
  20. package/build/cjs/chunk-ML5N3Z3U.cjs +11 -0
  21. package/build/cjs/{chunk-AJQTGMS6.cjs.map → chunk-ML5N3Z3U.cjs.map} +1 -1
  22. package/build/cjs/chunk-NMLJTXBP.cjs +11 -0
  23. package/build/cjs/{chunk-RVEV2776.cjs.map → chunk-NMLJTXBP.cjs.map} +1 -1
  24. package/build/cjs/{chunk-5OTHYCAN.cjs → chunk-UADOKJLS.cjs} +4 -4
  25. package/build/cjs/{chunk-5OTHYCAN.cjs.map → chunk-UADOKJLS.cjs.map} +1 -1
  26. package/build/cjs/{chunk-6JJVLART.cjs → chunk-UUXJXQCZ.cjs} +4 -4
  27. package/build/cjs/{chunk-6JJVLART.cjs.map → chunk-UUXJXQCZ.cjs.map} +1 -1
  28. package/build/cjs/{chunk-WWOD2EMG.cjs → chunk-WEET5XI2.cjs} +4 -4
  29. package/build/cjs/{chunk-WWOD2EMG.cjs.map → chunk-WEET5XI2.cjs.map} +1 -1
  30. package/build/cjs/chunk-WZFWCAWK.cjs +11 -0
  31. package/build/cjs/{chunk-QWVW5PEX.cjs.map → chunk-WZFWCAWK.cjs.map} +1 -1
  32. package/build/cjs/public/experimental/action-form.cjs +4 -4
  33. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  34. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  35. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  36. package/build/cjs/public/experimental/filter-list.cjs +14 -14
  37. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  38. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  39. package/build/cjs/public/experimental/object-table.cjs +8 -8
  40. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  41. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  42. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  43. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  44. package/build/cjs/public/experimental.cjs +47 -47
  45. package/build/esm/object-table/hooks/useRowSelection.js +8 -3
  46. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  47. package/build/esm/util/UserAgent.js +1 -1
  48. package/build/esm/util/UserAgent.js.map +1 -1
  49. package/package.json +7 -7
  50. package/build/cjs/chunk-A3TEU5AA.cjs +0 -11
  51. package/build/cjs/chunk-AJQTGMS6.cjs +0 -11
  52. package/build/cjs/chunk-O3L7F3SI.cjs.map +0 -1
  53. package/build/cjs/chunk-QWVW5PEX.cjs +0 -11
  54. package/build/cjs/chunk-RVEV2776.cjs +0 -11
  55. package/build/cjs/chunk-SBENFO5U.cjs +0 -11
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunkRVEV2776_cjs = require('../chunk-RVEV2776.cjs');
4
- var chunkB6AIDSEZ_cjs = require('../chunk-B6AIDSEZ.cjs');
5
- var chunkQWVW5PEX_cjs = require('../chunk-QWVW5PEX.cjs');
6
- var chunkWWOD2EMG_cjs = require('../chunk-WWOD2EMG.cjs');
7
- var chunkXUVWBVTL_cjs = require('../chunk-XUVWBVTL.cjs');
3
+ var chunkNMLJTXBP_cjs = require('../chunk-NMLJTXBP.cjs');
4
+ var chunk5263W3VC_cjs = require('../chunk-5263W3VC.cjs');
5
+ var chunkWZFWCAWK_cjs = require('../chunk-WZFWCAWK.cjs');
6
+ var chunkWEET5XI2_cjs = require('../chunk-WEET5XI2.cjs');
7
+ var chunkCSSQ2OPC_cjs = require('../chunk-CSSQ2OPC.cjs');
8
8
  require('../chunk-POHAXPLQ.cjs');
9
- var chunkXZI3NYBD_cjs = require('../chunk-XZI3NYBD.cjs');
9
+ var chunkLRP4RUF7_cjs = require('../chunk-LRP4RUF7.cjs');
10
10
  var chunk2YA74OKB_cjs = require('../chunk-2YA74OKB.cjs');
11
- var chunk6JJVLART_cjs = require('../chunk-6JJVLART.cjs');
12
- var chunkAJQTGMS6_cjs = require('../chunk-AJQTGMS6.cjs');
11
+ var chunkUUXJXQCZ_cjs = require('../chunk-UUXJXQCZ.cjs');
12
+ var chunkML5N3Z3U_cjs = require('../chunk-ML5N3Z3U.cjs');
13
13
  require('../chunk-C6IPNPMZ.cjs');
14
14
  require('../chunk-DWNKXV5E.cjs');
15
- var chunk5OTHYCAN_cjs = require('../chunk-5OTHYCAN.cjs');
15
+ var chunkUADOKJLS_cjs = require('../chunk-UADOKJLS.cjs');
16
16
  require('../chunk-JKNARBQW.cjs');
17
17
  require('../chunk-3S52UDZM.cjs');
18
18
  require('../chunk-E5OKIBYJ.cjs');
@@ -21,7 +21,7 @@ require('../chunk-NE7GRF7G.cjs');
21
21
  require('../chunk-HNBSGCSZ.cjs');
22
22
  require('../chunk-7LXS66DW.cjs');
23
23
  require('../chunk-MD4KDE44.cjs');
24
- var chunkV3TF4PWW_cjs = require('../chunk-V3TF4PWW.cjs');
24
+ var chunk7GZEFXBQ_cjs = require('../chunk-7GZEFXBQ.cjs');
25
25
  var chunkOUJQJQ7N_cjs = require('../chunk-OUJQJQ7N.cjs');
26
26
  var chunkVOROB7KJ_cjs = require('../chunk-VOROB7KJ.cjs');
27
27
  var chunkIYJOHKJE_cjs = require('../chunk-IYJOHKJE.cjs');
@@ -29,119 +29,119 @@ var chunkFWZS3WQ4_cjs = require('../chunk-FWZS3WQ4.cjs');
29
29
  var chunkIISDOJPR_cjs = require('../chunk-IISDOJPR.cjs');
30
30
  var chunkKHMOMROL_cjs = require('../chunk-KHMOMROL.cjs');
31
31
  require('../chunk-UCTQICPR.cjs');
32
- var chunkSBENFO5U_cjs = require('../chunk-SBENFO5U.cjs');
32
+ var chunk23N6K2BP_cjs = require('../chunk-23N6K2BP.cjs');
33
33
  var chunkPKJFOG2Z_cjs = require('../chunk-PKJFOG2Z.cjs');
34
- var chunkA3TEU5AA_cjs = require('../chunk-A3TEU5AA.cjs');
34
+ var chunkF2DOMIN5_cjs = require('../chunk-F2DOMIN5.cjs');
35
35
  var chunk4VJIPB7R_cjs = require('../chunk-4VJIPB7R.cjs');
36
36
  require('../chunk-MVQKV5BJ.cjs');
37
- require('../chunk-O3L7F3SI.cjs');
37
+ require('../chunk-DHQJOBAG.cjs');
38
38
  require('../chunk-Q2W6GYRK.cjs');
39
39
 
40
40
 
41
41
 
42
42
  Object.defineProperty(exports, "XmlViewer", {
43
43
  enumerable: true,
44
- get: function () { return chunkRVEV2776_cjs.XmlViewer; }
44
+ get: function () { return chunkNMLJTXBP_cjs.XmlViewer; }
45
45
  });
46
46
  Object.defineProperty(exports, "BaseFilterList", {
47
47
  enumerable: true,
48
- get: function () { return chunkB6AIDSEZ_cjs.BaseFilterList; }
48
+ get: function () { return chunk5263W3VC_cjs.BaseFilterList; }
49
49
  });
50
50
  Object.defineProperty(exports, "FilterInput", {
51
51
  enumerable: true,
52
- get: function () { return chunkB6AIDSEZ_cjs.FilterInput; }
52
+ get: function () { return chunk5263W3VC_cjs.FilterInput; }
53
53
  });
54
54
  Object.defineProperty(exports, "FilterList", {
55
55
  enumerable: true,
56
- get: function () { return chunkB6AIDSEZ_cjs.FilterList; }
56
+ get: function () { return chunk5263W3VC_cjs.FilterList; }
57
57
  });
58
58
  Object.defineProperty(exports, "FilterPopover", {
59
59
  enumerable: true,
60
- get: function () { return chunkB6AIDSEZ_cjs.FilterPopover; }
60
+ get: function () { return chunk5263W3VC_cjs.FilterPopover; }
61
61
  });
62
62
  Object.defineProperty(exports, "deserializeFilterStates", {
63
63
  enumerable: true,
64
- get: function () { return chunkB6AIDSEZ_cjs.deserializeFilterStates; }
64
+ get: function () { return chunk5263W3VC_cjs.deserializeFilterStates; }
65
65
  });
66
66
  Object.defineProperty(exports, "filterHasActiveState", {
67
67
  enumerable: true,
68
- get: function () { return chunkB6AIDSEZ_cjs.filterHasActiveState; }
68
+ get: function () { return chunk5263W3VC_cjs.filterHasActiveState; }
69
69
  });
70
70
  Object.defineProperty(exports, "getFilterKey", {
71
71
  enumerable: true,
72
- get: function () { return chunkB6AIDSEZ_cjs.getFilterKey; }
72
+ get: function () { return chunk5263W3VC_cjs.getFilterKey; }
73
73
  });
74
74
  Object.defineProperty(exports, "getFilterLabel", {
75
75
  enumerable: true,
76
- get: function () { return chunkB6AIDSEZ_cjs.getFilterLabel; }
76
+ get: function () { return chunk5263W3VC_cjs.getFilterLabel; }
77
77
  });
78
78
  Object.defineProperty(exports, "narrowObjectSet", {
79
79
  enumerable: true,
80
- get: function () { return chunkB6AIDSEZ_cjs.narrowObjectSet; }
80
+ get: function () { return chunk5263W3VC_cjs.narrowObjectSet; }
81
81
  });
82
82
  Object.defineProperty(exports, "serializeFilterStates", {
83
83
  enumerable: true,
84
- get: function () { return chunkB6AIDSEZ_cjs.serializeFilterStates; }
84
+ get: function () { return chunk5263W3VC_cjs.serializeFilterStates; }
85
85
  });
86
86
  Object.defineProperty(exports, "summarizeFilterValue", {
87
87
  enumerable: true,
88
- get: function () { return chunkB6AIDSEZ_cjs.summarizeFilterValue; }
88
+ get: function () { return chunk5263W3VC_cjs.summarizeFilterValue; }
89
89
  });
90
90
  Object.defineProperty(exports, "useFilterListState", {
91
91
  enumerable: true,
92
- get: function () { return chunkB6AIDSEZ_cjs.useFilterListState; }
92
+ get: function () { return chunk5263W3VC_cjs.useFilterListState; }
93
93
  });
94
94
  Object.defineProperty(exports, "ImageViewer", {
95
95
  enumerable: true,
96
- get: function () { return chunkQWVW5PEX_cjs.ImageViewer; }
96
+ get: function () { return chunkWZFWCAWK_cjs.ImageViewer; }
97
97
  });
98
98
  Object.defineProperty(exports, "MarkdownViewerMedia", {
99
99
  enumerable: true,
100
- get: function () { return chunkWWOD2EMG_cjs.MarkdownViewerMedia; }
100
+ get: function () { return chunkWEET5XI2_cjs.MarkdownViewerMedia; }
101
101
  });
102
102
  Object.defineProperty(exports, "BaseTable", {
103
103
  enumerable: true,
104
- get: function () { return chunkXUVWBVTL_cjs.BaseTable; }
104
+ get: function () { return chunkCSSQ2OPC_cjs.BaseTable; }
105
105
  });
106
106
  Object.defineProperty(exports, "ColumnConfigDialog", {
107
107
  enumerable: true,
108
- get: function () { return chunkXUVWBVTL_cjs.ColumnConfigDialog; }
108
+ get: function () { return chunkCSSQ2OPC_cjs.ColumnConfigDialog; }
109
109
  });
110
110
  Object.defineProperty(exports, "LoadingCell", {
111
111
  enumerable: true,
112
- get: function () { return chunkXUVWBVTL_cjs.LoadingCell; }
112
+ get: function () { return chunkCSSQ2OPC_cjs.LoadingCell; }
113
113
  });
114
114
  Object.defineProperty(exports, "LoadingCellContent", {
115
115
  enumerable: true,
116
- get: function () { return chunkXUVWBVTL_cjs.LoadingCellContent; }
116
+ get: function () { return chunkCSSQ2OPC_cjs.LoadingCellContent; }
117
117
  });
118
118
  Object.defineProperty(exports, "MultiColumnSortDialog", {
119
119
  enumerable: true,
120
- get: function () { return chunkXUVWBVTL_cjs.MultiColumnSortDialog; }
120
+ get: function () { return chunkCSSQ2OPC_cjs.MultiColumnSortDialog; }
121
121
  });
122
122
  Object.defineProperty(exports, "ObjectTable", {
123
123
  enumerable: true,
124
- get: function () { return chunkXUVWBVTL_cjs.ObjectTable; }
124
+ get: function () { return chunkCSSQ2OPC_cjs.ObjectTable; }
125
125
  });
126
126
  Object.defineProperty(exports, "PdfViewer", {
127
127
  enumerable: true,
128
- get: function () { return chunkXZI3NYBD_cjs.PdfViewer; }
128
+ get: function () { return chunkLRP4RUF7_cjs.PdfViewer; }
129
129
  });
130
130
  Object.defineProperty(exports, "PdfViewerContent", {
131
131
  enumerable: true,
132
- get: function () { return chunkXZI3NYBD_cjs.PdfViewerContent; }
132
+ get: function () { return chunkLRP4RUF7_cjs.PdfViewerContent; }
133
133
  });
134
134
  Object.defineProperty(exports, "PdfViewerProvider", {
135
135
  enumerable: true,
136
- get: function () { return chunkXZI3NYBD_cjs.PdfViewerProvider; }
136
+ get: function () { return chunkLRP4RUF7_cjs.PdfViewerProvider; }
137
137
  });
138
138
  Object.defineProperty(exports, "usePdfViewerContext", {
139
139
  enumerable: true,
140
- get: function () { return chunkXZI3NYBD_cjs.usePdfViewerContext; }
140
+ get: function () { return chunkLRP4RUF7_cjs.usePdfViewerContext; }
141
141
  });
142
142
  Object.defineProperty(exports, "usePdfViewerInstance", {
143
143
  enumerable: true,
144
- get: function () { return chunkXZI3NYBD_cjs.usePdfViewerInstance; }
144
+ get: function () { return chunkLRP4RUF7_cjs.usePdfViewerInstance; }
145
145
  });
146
146
  Object.defineProperty(exports, "OsdkThemeProvider", {
147
147
  enumerable: true,
@@ -153,27 +153,27 @@ Object.defineProperty(exports, "useOsdkTheme", {
153
153
  });
154
154
  Object.defineProperty(exports, "TiffViewerMedia", {
155
155
  enumerable: true,
156
- get: function () { return chunk6JJVLART_cjs.TiffViewerMedia; }
156
+ get: function () { return chunkUUXJXQCZ_cjs.TiffViewerMedia; }
157
157
  });
158
158
  Object.defineProperty(exports, "VideoViewer", {
159
159
  enumerable: true,
160
- get: function () { return chunkAJQTGMS6_cjs.VideoViewer; }
160
+ get: function () { return chunkML5N3Z3U_cjs.VideoViewer; }
161
161
  });
162
162
  Object.defineProperty(exports, "ActionForm", {
163
163
  enumerable: true,
164
- get: function () { return chunk5OTHYCAN_cjs.ActionForm; }
164
+ get: function () { return chunkUADOKJLS_cjs.ActionForm; }
165
165
  });
166
166
  Object.defineProperty(exports, "BaseForm", {
167
167
  enumerable: true,
168
- get: function () { return chunk5OTHYCAN_cjs.BaseForm; }
168
+ get: function () { return chunkUADOKJLS_cjs.BaseForm; }
169
169
  });
170
170
  Object.defineProperty(exports, "DocumentViewer", {
171
171
  enumerable: true,
172
- get: function () { return chunkV3TF4PWW_cjs.DocumentViewer; }
172
+ get: function () { return chunk7GZEFXBQ_cjs.DocumentViewer; }
173
173
  });
174
174
  Object.defineProperty(exports, "ViewerType", {
175
175
  enumerable: true,
176
- get: function () { return chunkV3TF4PWW_cjs.ViewerType; }
176
+ get: function () { return chunk7GZEFXBQ_cjs.ViewerType; }
177
177
  });
178
178
  Object.defineProperty(exports, "BaseXmlViewer", {
179
179
  enumerable: true,
@@ -265,7 +265,7 @@ Object.defineProperty(exports, "BaseVideoViewer", {
265
265
  });
266
266
  Object.defineProperty(exports, "EmailViewer", {
267
267
  enumerable: true,
268
- get: function () { return chunkSBENFO5U_cjs.EmailViewer; }
268
+ get: function () { return chunk23N6K2BP_cjs.EmailViewer; }
269
269
  });
270
270
  Object.defineProperty(exports, "BaseEmailViewer", {
271
271
  enumerable: true,
@@ -273,7 +273,7 @@ Object.defineProperty(exports, "BaseEmailViewer", {
273
273
  });
274
274
  Object.defineProperty(exports, "ExcelViewer", {
275
275
  enumerable: true,
276
- get: function () { return chunkA3TEU5AA_cjs.ExcelViewer; }
276
+ get: function () { return chunkF2DOMIN5_cjs.ExcelViewer; }
277
277
  });
278
278
  Object.defineProperty(exports, "BaseExcelViewer", {
279
279
  enumerable: true,
@@ -54,6 +54,8 @@ export function useRowSelection({
54
54
  const selectedCount = useMemo(() => Object.values(rowSelectionState).filter(Boolean).length, [rowSelectionState]);
55
55
  const totalCount = data?.length ?? 0;
56
56
  const isAllSelected = deriveIsAllSelected(isControlled, isAllSelectedProp, internalIsAllSelected, selectedCount, totalCount);
57
+ const hasSelection = isAllSelected || selectedCount > 0;
58
+
57
59
  // Dedupes refires when "select all" is active and data grows.
58
60
  const lastFiredAllSelectedIdsRef = useRef(null);
59
61
  const fireSelectionCallbacks = useEventCallback((ids, isSelectAll) => {
@@ -69,7 +71,10 @@ export function useRowSelection({
69
71
  });
70
72
  const onToggleAll = useCallback(() => {
71
73
  if (!enableRowSelection || !data) return;
72
- const newIsAllSelected = !isAllSelected;
74
+
75
+ // Any existing selection (full or partial/indeterminate) clears on click;
76
+ // only an empty selection promotes to "select all".
77
+ const newIsAllSelected = !hasSelection;
73
78
  const newSelectedRows = newIsAllSelected ? data.map(item => item.$primaryKey) : [];
74
79
  if (!isControlled) {
75
80
  setInternalIsAllSelected(newIsAllSelected);
@@ -77,7 +82,7 @@ export function useRowSelection({
77
82
  }
78
83
  lastFiredAllSelectedIdsRef.current = newIsAllSelected ? JSON.stringify(newSelectedRows) : null;
79
84
  fireSelectionCallbacks(newSelectedRows, newIsAllSelected);
80
- }, [enableRowSelection, data, isAllSelected, isControlled, fireSelectionCallbacks]);
85
+ }, [enableRowSelection, data, hasSelection, isControlled, fireSelectionCallbacks]);
81
86
  const onToggleRow = useCallback((rowId, rowIndex, isShiftClick = false) => {
82
87
  if (!enableRowSelection || !data) return;
83
88
  let newSelectedRows;
@@ -140,7 +145,7 @@ export function useRowSelection({
140
145
  rowSelection: rowSelectionState,
141
146
  isAllSelected,
142
147
  enableRowSelection,
143
- hasSelection: isAllSelected || selectedCount > 0,
148
+ hasSelection,
144
149
  onToggleAll,
145
150
  onToggleRow
146
151
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useRowSelection.js","names":["useCallback","useEffect","useMemo","useRef","useState","useEventCallback","getRowId","getRowIdFromPrimaryKey","useRowSelection","selectionMode","selectedRows","isAllSelected","isAllSelectedProp","onRowSelection","onRowSelectionChanged","data","internalRowSelection","setInternalRowSelection","internalIsAllSelected","setInternalIsAllSelected","lastSelectedRowIndex","setLastSelectedRowIndex","isControlled","undefined","enableRowSelection","rowSelectionState","selectedRowIds","map","item","$primaryKey","getRowSelectionState","selectedCount","Object","values","filter","Boolean","length","totalCount","deriveIsAllSelected","lastFiredAllSelectedIdsRef","fireSelectionCallbacks","ids","isSelectAll","selectedKeySet","Set","id","String","instances","has","onToggleAll","newIsAllSelected","newSelectedRows","current","JSON","stringify","onToggleRow","rowId","rowIndex","isShiftClick","getSingleSelectionRows","getRangeSelectionRows","getMultipleSelectionRows","isCurrentlySelected","serializedIds","rowSelection","hasSelection","primaryKey","rowsInRange","getRowsInRange","primaryKeysInRange","currentlySelected","getSelectedPrimaryKeys","forEach","includes","push","i","startIndex","endIndex","start","Math","min","end","max","rows","primaryKeys","reduce","acc","selectionState"],"sources":["useRowSelection.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 {\n ObjectOrInterfaceDefinition,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { RowSelectionState } from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useEventCallback } from \"../../shared/hooks/useEventCallback.js\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\n\n/**\n * Payload delivered by {@link UseRowSelectionProps.onRowSelectionChanged}.\n * Mirrors the OSDK-level `RowSelectionChange` but without the `objectSet`\n * field, which requires OSDK context and is composed in `ObjectTable`.\n */\nexport interface UseRowSelectionChange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectedRows: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n >[];\n isSelectAll: boolean;\n}\n\nexport interface UseRowSelectionProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n selectedRows?: PrimaryKeyType<Q>[];\n isAllSelected?: boolean;\n /**\n * @deprecated Use {@link onRowSelectionChanged} instead.\n */\n onRowSelection?: (\n selectedRowIds: PrimaryKeyType<Q>[],\n isSelectAll: boolean,\n ) => void;\n onRowSelectionChanged?: (\n change: UseRowSelectionChange<Q, RDPs>,\n ) => void;\n data:\n | Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n | undefined;\n}\n\nexport interface UseRowSelectionResult {\n rowSelection: RowSelectionState;\n isAllSelected: boolean;\n hasSelection: boolean;\n enableRowSelection: boolean;\n onToggleAll: () => void;\n onToggleRow: (\n rowId: string,\n rowIndex: number,\n isShiftClick?: boolean,\n ) => void;\n}\n\nexport function useRowSelection<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- intentional pass-through to fire alongside onRowSelectionChanged for backwards compatibility\n onRowSelection,\n onRowSelectionChanged,\n data,\n}: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult {\n const [internalRowSelection, setInternalRowSelection] = useState<\n RowSelectionState\n >({});\n\n // When true, newly fetched rows are auto-selected (uncontrolled mode only).\n const [internalIsAllSelected, setInternalIsAllSelected] = useState(false);\n\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState<\n number | null\n >(null);\n\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n const rowSelectionState: RowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled) {\n const selectedRowIds = isAllSelectedProp\n ? (data ?? []).map(item => item.$primaryKey)\n : selectedRows;\n return getRowSelectionState(selectedRowIds);\n }\n if (internalIsAllSelected) {\n return getRowSelectionState(\n (data ?? []).map(item => item.$primaryKey),\n );\n }\n return internalRowSelection;\n }, [\n enableRowSelection,\n isControlled,\n selectedRows,\n isAllSelectedProp,\n internalIsAllSelected,\n internalRowSelection,\n data,\n ]);\n\n const selectedCount = useMemo(\n () => Object.values(rowSelectionState).filter(Boolean).length,\n [rowSelectionState],\n );\n const totalCount = data?.length ?? 0;\n const isAllSelected = deriveIsAllSelected(\n isControlled,\n isAllSelectedProp,\n internalIsAllSelected,\n selectedCount,\n totalCount,\n );\n const hasSelection = isAllSelected || selectedCount > 0;\n\n // Dedupes refires when \"select all\" is active and data grows.\n const lastFiredAllSelectedIdsRef = useRef<string | null>(null);\n\n const fireSelectionCallbacks = useEventCallback(\n (ids: PrimaryKeyType<Q>[], isSelectAll: boolean) => {\n onRowSelection?.(ids, isSelectAll);\n if (onRowSelectionChanged) {\n const currentData = data ?? [];\n const selectedKeySet = new Set(ids.map(id => String(id)));\n const instances = currentData.filter(item =>\n selectedKeySet.has(String(item.$primaryKey))\n );\n onRowSelectionChanged({\n selectedRows: instances,\n isSelectAll,\n });\n }\n },\n );\n\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n\n const newIsAllSelected = !isAllSelected;\n const newSelectedRows: PrimaryKeyType<Q>[] = newIsAllSelected\n ? data.map(item => item.$primaryKey)\n : [];\n\n if (!isControlled) {\n setInternalIsAllSelected(newIsAllSelected);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = newIsAllSelected\n ? JSON.stringify(newSelectedRows)\n : null;\n fireSelectionCallbacks(newSelectedRows, newIsAllSelected);\n }, [\n enableRowSelection,\n data,\n isAllSelected,\n isControlled,\n fireSelectionCallbacks,\n ]);\n\n const onToggleRow = useCallback(\n (rowId: string, rowIndex: number, isShiftClick: boolean = false) => {\n if (!enableRowSelection || !data) return;\n\n let newSelectedRows: PrimaryKeyType<Q>[];\n\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n });\n } else {\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows(\n { rowId, rowIndex, data, lastSelectedRowIndex, rowSelectionState },\n );\n setLastSelectedRowIndex(rowIndex);\n } else {\n newSelectedRows = getMultipleSelectionRows(\n { rowId, rowIndex, data, rowSelectionState },\n );\n if (\n !isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ) {\n setLastSelectedRowIndex(rowIndex);\n }\n }\n }\n if (!isControlled) {\n setInternalIsAllSelected(false);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = null;\n fireSelectionCallbacks(newSelectedRows, false);\n },\n [\n enableRowSelection,\n data,\n selectionMode,\n isControlled,\n fireSelectionCallbacks,\n rowSelectionState,\n lastSelectedRowIndex,\n ],\n );\n\n // Refire callbacks when uncontrolled \"select all\" is active and new rows arrive.\n useEffect(function syncSelectAllOnDataChange() {\n if (isControlled || !internalIsAllSelected || !data) {\n if (!internalIsAllSelected) {\n lastFiredAllSelectedIdsRef.current = null;\n }\n return;\n }\n const ids = data.map(item => item.$primaryKey);\n const serializedIds = JSON.stringify(ids);\n if (lastFiredAllSelectedIdsRef.current === serializedIds) return;\n lastFiredAllSelectedIdsRef.current = serializedIds;\n fireSelectionCallbacks(ids, true);\n }, [isControlled, internalIsAllSelected, data, fireSelectionCallbacks]);\n\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow,\n };\n}\n\ninterface GetSelectedRowsProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n rowId: string;\n rowIndex: number;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>;\n rowSelectionState: RowSelectionState;\n lastSelectedRowIndex?: number;\n}\n\nfunction getSingleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { rowId, rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n return rowSelectionState[rowId] ? [] : [primaryKey];\n}\n\nfunction getRangeSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { lastSelectedRowIndex, rowIndex, data, rowSelectionState }:\n GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\n\nfunction isCurrentlySelected<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { rowIndex, data, rowSelectionState }: Pick<\n GetSelectedRowsProps<Q, RDPs>,\n \"rowIndex\" | \"data\" | \"rowSelectionState\"\n >,\n): boolean {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return currentlySelected.includes(primaryKey);\n}\n\nfunction getMultipleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ? currentlySelected.filter(i => i !== primaryKey)\n : [...currentlySelected, primaryKey];\n}\n\nfunction getRowsInRange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>,\n startIndex: number,\n endIndex: number,\n): Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>> {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows: Array<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = [];\n\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n\n return rows;\n}\n\nfunction deriveIsAllSelected(\n isControlled: boolean,\n isAllSelectedProp: boolean | undefined,\n internalIsAllSelected: boolean,\n selectedCount: number,\n totalCount: number,\n): boolean {\n if (isControlled && isAllSelectedProp !== undefined) return isAllSelectedProp;\n if (!isControlled && internalIsAllSelected) return true;\n return totalCount > 0 && selectedCount === totalCount;\n}\n\nfunction getRowSelectionState<Q extends ObjectOrInterfaceDefinition>(\n primaryKeys: PrimaryKeyType<Q>[],\n): RowSelectionState {\n return primaryKeys.reduce<RowSelectionState>(\n (acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n },\n {},\n );\n}\n\nfunction getSelectedPrimaryKeys<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n selectionState: RowSelectionState,\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>,\n): PrimaryKeyType<Q>[] {\n return data\n .filter(item => selectionState[getRowId(item)])\n .map(item => item.$primaryKey);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useRowSelection.js","names":["useCallback","useEffect","useMemo","useRef","useState","useEventCallback","getRowId","getRowIdFromPrimaryKey","useRowSelection","selectionMode","selectedRows","isAllSelected","isAllSelectedProp","onRowSelection","onRowSelectionChanged","data","internalRowSelection","setInternalRowSelection","internalIsAllSelected","setInternalIsAllSelected","lastSelectedRowIndex","setLastSelectedRowIndex","isControlled","undefined","enableRowSelection","rowSelectionState","selectedRowIds","map","item","$primaryKey","getRowSelectionState","selectedCount","Object","values","filter","Boolean","length","totalCount","deriveIsAllSelected","hasSelection","lastFiredAllSelectedIdsRef","fireSelectionCallbacks","ids","isSelectAll","selectedKeySet","Set","id","String","instances","has","onToggleAll","newIsAllSelected","newSelectedRows","current","JSON","stringify","onToggleRow","rowId","rowIndex","isShiftClick","getSingleSelectionRows","getRangeSelectionRows","getMultipleSelectionRows","isCurrentlySelected","serializedIds","rowSelection","primaryKey","rowsInRange","getRowsInRange","primaryKeysInRange","currentlySelected","getSelectedPrimaryKeys","forEach","includes","push","i","startIndex","endIndex","start","Math","min","end","max","rows","primaryKeys","reduce","acc","selectionState"],"sources":["useRowSelection.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 {\n ObjectOrInterfaceDefinition,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { RowSelectionState } from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useEventCallback } from \"../../shared/hooks/useEventCallback.js\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\n\n/**\n * Payload delivered by {@link UseRowSelectionProps.onRowSelectionChanged}.\n * Mirrors the OSDK-level `RowSelectionChange` but without the `objectSet`\n * field, which requires OSDK context and is composed in `ObjectTable`.\n */\nexport interface UseRowSelectionChange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectedRows: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n >[];\n isSelectAll: boolean;\n}\n\nexport interface UseRowSelectionProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n selectedRows?: PrimaryKeyType<Q>[];\n isAllSelected?: boolean;\n /**\n * @deprecated Use {@link onRowSelectionChanged} instead.\n */\n onRowSelection?: (\n selectedRowIds: PrimaryKeyType<Q>[],\n isSelectAll: boolean,\n ) => void;\n onRowSelectionChanged?: (\n change: UseRowSelectionChange<Q, RDPs>,\n ) => void;\n data:\n | Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n | undefined;\n}\n\nexport interface UseRowSelectionResult {\n rowSelection: RowSelectionState;\n isAllSelected: boolean;\n hasSelection: boolean;\n enableRowSelection: boolean;\n onToggleAll: () => void;\n onToggleRow: (\n rowId: string,\n rowIndex: number,\n isShiftClick?: boolean,\n ) => void;\n}\n\nexport function useRowSelection<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- intentional pass-through to fire alongside onRowSelectionChanged for backwards compatibility\n onRowSelection,\n onRowSelectionChanged,\n data,\n}: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult {\n const [internalRowSelection, setInternalRowSelection] = useState<\n RowSelectionState\n >({});\n\n // When true, newly fetched rows are auto-selected (uncontrolled mode only).\n const [internalIsAllSelected, setInternalIsAllSelected] = useState(false);\n\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState<\n number | null\n >(null);\n\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n const rowSelectionState: RowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled) {\n const selectedRowIds = isAllSelectedProp\n ? (data ?? []).map(item => item.$primaryKey)\n : selectedRows;\n return getRowSelectionState(selectedRowIds);\n }\n if (internalIsAllSelected) {\n return getRowSelectionState(\n (data ?? []).map(item => item.$primaryKey),\n );\n }\n return internalRowSelection;\n }, [\n enableRowSelection,\n isControlled,\n selectedRows,\n isAllSelectedProp,\n internalIsAllSelected,\n internalRowSelection,\n data,\n ]);\n\n const selectedCount = useMemo(\n () => Object.values(rowSelectionState).filter(Boolean).length,\n [rowSelectionState],\n );\n const totalCount = data?.length ?? 0;\n const isAllSelected = deriveIsAllSelected(\n isControlled,\n isAllSelectedProp,\n internalIsAllSelected,\n selectedCount,\n totalCount,\n );\n const hasSelection = isAllSelected || selectedCount > 0;\n\n // Dedupes refires when \"select all\" is active and data grows.\n const lastFiredAllSelectedIdsRef = useRef<string | null>(null);\n\n const fireSelectionCallbacks = useEventCallback(\n (ids: PrimaryKeyType<Q>[], isSelectAll: boolean) => {\n onRowSelection?.(ids, isSelectAll);\n if (onRowSelectionChanged) {\n const currentData = data ?? [];\n const selectedKeySet = new Set(ids.map(id => String(id)));\n const instances = currentData.filter(item =>\n selectedKeySet.has(String(item.$primaryKey))\n );\n onRowSelectionChanged({\n selectedRows: instances,\n isSelectAll,\n });\n }\n },\n );\n\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n\n // Any existing selection (full or partial/indeterminate) clears on click;\n // only an empty selection promotes to \"select all\".\n const newIsAllSelected = !hasSelection;\n const newSelectedRows: PrimaryKeyType<Q>[] = newIsAllSelected\n ? data.map(item => item.$primaryKey)\n : [];\n\n if (!isControlled) {\n setInternalIsAllSelected(newIsAllSelected);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = newIsAllSelected\n ? JSON.stringify(newSelectedRows)\n : null;\n fireSelectionCallbacks(newSelectedRows, newIsAllSelected);\n }, [\n enableRowSelection,\n data,\n hasSelection,\n isControlled,\n fireSelectionCallbacks,\n ]);\n\n const onToggleRow = useCallback(\n (rowId: string, rowIndex: number, isShiftClick: boolean = false) => {\n if (!enableRowSelection || !data) return;\n\n let newSelectedRows: PrimaryKeyType<Q>[];\n\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n });\n } else {\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows(\n { rowId, rowIndex, data, lastSelectedRowIndex, rowSelectionState },\n );\n setLastSelectedRowIndex(rowIndex);\n } else {\n newSelectedRows = getMultipleSelectionRows(\n { rowId, rowIndex, data, rowSelectionState },\n );\n if (\n !isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ) {\n setLastSelectedRowIndex(rowIndex);\n }\n }\n }\n if (!isControlled) {\n setInternalIsAllSelected(false);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = null;\n fireSelectionCallbacks(newSelectedRows, false);\n },\n [\n enableRowSelection,\n data,\n selectionMode,\n isControlled,\n fireSelectionCallbacks,\n rowSelectionState,\n lastSelectedRowIndex,\n ],\n );\n\n // Refire callbacks when uncontrolled \"select all\" is active and new rows arrive.\n useEffect(function syncSelectAllOnDataChange() {\n if (isControlled || !internalIsAllSelected || !data) {\n if (!internalIsAllSelected) {\n lastFiredAllSelectedIdsRef.current = null;\n }\n return;\n }\n const ids = data.map(item => item.$primaryKey);\n const serializedIds = JSON.stringify(ids);\n if (lastFiredAllSelectedIdsRef.current === serializedIds) return;\n lastFiredAllSelectedIdsRef.current = serializedIds;\n fireSelectionCallbacks(ids, true);\n }, [isControlled, internalIsAllSelected, data, fireSelectionCallbacks]);\n\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow,\n };\n}\n\ninterface GetSelectedRowsProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n rowId: string;\n rowIndex: number;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>;\n rowSelectionState: RowSelectionState;\n lastSelectedRowIndex?: number;\n}\n\nfunction getSingleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { rowId, rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n return rowSelectionState[rowId] ? [] : [primaryKey];\n}\n\nfunction getRangeSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { lastSelectedRowIndex, rowIndex, data, rowSelectionState }:\n GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\n\nfunction isCurrentlySelected<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { rowIndex, data, rowSelectionState }: Pick<\n GetSelectedRowsProps<Q, RDPs>,\n \"rowIndex\" | \"data\" | \"rowSelectionState\"\n >,\n): boolean {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return currentlySelected.includes(primaryKey);\n}\n\nfunction getMultipleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n { rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ? currentlySelected.filter(i => i !== primaryKey)\n : [...currentlySelected, primaryKey];\n}\n\nfunction getRowsInRange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>,\n startIndex: number,\n endIndex: number,\n): Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>> {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows: Array<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = [];\n\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n\n return rows;\n}\n\nfunction deriveIsAllSelected(\n isControlled: boolean,\n isAllSelectedProp: boolean | undefined,\n internalIsAllSelected: boolean,\n selectedCount: number,\n totalCount: number,\n): boolean {\n if (isControlled && isAllSelectedProp !== undefined) return isAllSelectedProp;\n if (!isControlled && internalIsAllSelected) return true;\n return totalCount > 0 && selectedCount === totalCount;\n}\n\nfunction getRowSelectionState<Q extends ObjectOrInterfaceDefinition>(\n primaryKeys: PrimaryKeyType<Q>[],\n): RowSelectionState {\n return primaryKeys.reduce<RowSelectionState>(\n (acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n },\n {},\n );\n}\n\nfunction getSelectedPrimaryKeys<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n selectionState: RowSelectionState,\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>,\n): PrimaryKeyType<Q>[] {\n return data\n .filter(item => selectionState[getRowId(item)])\n .map(item => item.$primaryKey);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const PACKAGE_USER_AGENT = `osdk-react-components/${"0.22.0"}`;
17
+ const PACKAGE_USER_AGENT = `osdk-react-components/${"0.22.1-main-2e92b908fc461ab107d493cb0aa71a1be400ef2f"}`;
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,mCAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
1
+ {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,iFAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/react-components",
3
- "version": "0.22.0",
3
+ "version": "0.22.1-main-2e92b908fc461ab107d493cb0aa71a1be400ef2f",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -193,9 +193,9 @@
193
193
  "xlsx": "^0.18.5"
194
194
  },
195
195
  "peerDependencies": {
196
- "@osdk/api": "^2.8.0",
197
- "@osdk/client": "^2.8.0",
198
- "@osdk/react": "^2.8.0",
196
+ "@osdk/api": ">=2.25.1-beta.0",
197
+ "@osdk/client": ">=2.25.1-beta.0",
198
+ "@osdk/react": ">=2.25.1-beta.0",
199
199
  "@types/react": "^17 || ^18 || ^19",
200
200
  "classnames": "^2.0.0",
201
201
  "react": "^17 || ^18 || ^19",
@@ -220,11 +220,11 @@
220
220
  "react-dom": "^18.3.1",
221
221
  "typescript": "~5.5.4",
222
222
  "@osdk/aip-core": "0.4.0",
223
+ "@osdk/api": "2.25.1-main-2e92b908fc461ab107d493cb0aa71a1be400ef2f",
224
+ "@osdk/client": "2.25.1-main-2e92b908fc461ab107d493cb0aa71a1be400ef2f",
223
225
  "@osdk/monorepo.api-extractor": "~0.7.0",
224
- "@osdk/client": "2.25.0",
225
226
  "@osdk/monorepo.tsconfig": "~0.7.0",
226
- "@osdk/api": "2.25.0",
227
- "@osdk/react": "2.25.0"
227
+ "@osdk/react": "2.25.1-main-2e92b908fc461ab107d493cb0aa71a1be400ef2f"
228
228
  },
229
229
  "publishConfig": {
230
230
  "access": "public"
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk4VJIPB7R_cjs = require('./chunk-4VJIPB7R.cjs');
4
- var chunkO3L7F3SI_cjs = require('./chunk-O3L7F3SI.cjs');
5
-
6
- // src/public/experimental/excel-viewer.ts
7
- var ExcelViewer2 = chunkO3L7F3SI_cjs.withOsdkMetrics(chunk4VJIPB7R_cjs.ExcelViewer, "ExcelViewer");
8
-
9
- exports.ExcelViewer = ExcelViewer2;
10
- //# sourceMappingURL=chunk-A3TEU5AA.cjs.map
11
- //# sourceMappingURL=chunk-A3TEU5AA.cjs.map
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkKHMOMROL_cjs = require('./chunk-KHMOMROL.cjs');
4
- var chunkO3L7F3SI_cjs = require('./chunk-O3L7F3SI.cjs');
5
-
6
- // src/public/experimental/video-viewer.ts
7
- var VideoViewer2 = chunkO3L7F3SI_cjs.withOsdkMetrics(chunkKHMOMROL_cjs.VideoViewer, "VideoViewer");
8
-
9
- exports.VideoViewer = VideoViewer2;
10
- //# sourceMappingURL=chunk-AJQTGMS6.cjs.map
11
- //# sourceMappingURL=chunk-AJQTGMS6.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/util/UserAgent.ts","../../src/util/withOsdkMetrics.ts"],"names":["useRegisterUserAgent","React"],"mappings":";;;;;;;;;;;;AAgBA,IAAM,kBAAA,GAAqB,yBAAyB,QAA2B,CAAA,CAAA;AACxE,SAAS,mBAAmB,aAAA,EAAe;AAChD,EAAA,OAAO,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAC/C;;;ACKO,SAAS,eAAA,CAAgB,WAAW,IAAA,EAAM;AAC/C,EAAA,MAAM,UAAU,CAAA,KAAA,KAAS;AACvB,IAAAA,0BAAA,CAAqB,kBAAA,CAAmB,IAAI,CAAC,CAAA;AAC7C,IAAA,uBAAoBC,sBAAA,CAAM,aAAA,CAAc,SAAA,EAAW,KAAK,CAAA;AAAA,EAC1D,CAAA;AACA,EAAA,OAAA,CAAQ,WAAA,GAAc,mBAAmB,IAAI,CAAA,CAAA,CAAA;AAC7C,EAAA,OAAO,OAAA;AACT","file":"chunk-O3L7F3SI.cjs","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 = `osdk-react-components/${process.env.PACKAGE_VERSION}`;\nexport function componentUserAgent(componentName) {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\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 { useRegisterUserAgent } from \"@osdk/react\";\nimport React from \"react\";\nimport { componentUserAgent } from \"./UserAgent.js\";\n\n// `any` is required: FunctionComponent defaults to FunctionComponent<{}> which\n// rejects components with required props. A generic P parameter doesn't help\n// because TS can't infer both P and C simultaneously from a single argument.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withOsdkMetrics(Component, name) {\n const Wrapped = props => {\n useRegisterUserAgent(componentUserAgent(name));\n return /*#__PURE__*/React.createElement(Component, props);\n };\n Wrapped.displayName = `withOsdkMetrics(${name})`;\n return Wrapped;\n}"]}
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkVOROB7KJ_cjs = require('./chunk-VOROB7KJ.cjs');
4
- var chunkO3L7F3SI_cjs = require('./chunk-O3L7F3SI.cjs');
5
-
6
- // src/public/experimental/image-viewer.ts
7
- var ImageViewer2 = chunkO3L7F3SI_cjs.withOsdkMetrics(chunkVOROB7KJ_cjs.ImageViewer, "ImageViewer");
8
-
9
- exports.ImageViewer = ImageViewer2;
10
- //# sourceMappingURL=chunk-QWVW5PEX.cjs.map
11
- //# sourceMappingURL=chunk-QWVW5PEX.cjs.map
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkOUJQJQ7N_cjs = require('./chunk-OUJQJQ7N.cjs');
4
- var chunkO3L7F3SI_cjs = require('./chunk-O3L7F3SI.cjs');
5
-
6
- // src/public/experimental/xml-viewer.ts
7
- var XmlViewer2 = chunkO3L7F3SI_cjs.withOsdkMetrics(chunkOUJQJQ7N_cjs.XmlViewer, "XmlViewer");
8
-
9
- exports.XmlViewer = XmlViewer2;
10
- //# sourceMappingURL=chunk-RVEV2776.cjs.map
11
- //# sourceMappingURL=chunk-RVEV2776.cjs.map
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkPKJFOG2Z_cjs = require('./chunk-PKJFOG2Z.cjs');
4
- var chunkO3L7F3SI_cjs = require('./chunk-O3L7F3SI.cjs');
5
-
6
- // src/public/experimental/email-viewer.ts
7
- var EmailViewer2 = chunkO3L7F3SI_cjs.withOsdkMetrics(chunkPKJFOG2Z_cjs.EmailViewer, "EmailViewer");
8
-
9
- exports.EmailViewer = EmailViewer2;
10
- //# sourceMappingURL=chunk-SBENFO5U.cjs.map
11
- //# sourceMappingURL=chunk-SBENFO5U.cjs.map