@osdk/react-components 0.1.0-beta.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +2 -5
  3. package/build/browser/base-components/checkbox/Checkbox.js +32 -27
  4. package/build/browser/object-table/CellContextMenu.js +20 -23
  5. package/build/browser/object-table/LoadingCell.js +38 -0
  6. package/build/browser/object-table/LoadingCell.js.map +1 -0
  7. package/build/browser/object-table/LoadingRow.js +69 -0
  8. package/build/browser/object-table/LoadingRow.js.map +1 -0
  9. package/build/browser/object-table/LoadingStateTable.js +395 -0
  10. package/build/browser/object-table/LoadingStateTable.js.map +1 -0
  11. package/build/browser/object-table/NonIdealState.js +25 -0
  12. package/build/browser/object-table/NonIdealState.js.map +1 -0
  13. package/build/browser/object-table/ObjectTable.js +6 -5
  14. package/build/browser/object-table/ObjectTable.js.map +1 -1
  15. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  16. package/build/browser/object-table/Table.js +948 -45
  17. package/build/browser/object-table/Table.js.map +1 -1
  18. package/build/browser/object-table/TableBody.js +269 -34
  19. package/build/browser/object-table/TableBody.js.map +1 -1
  20. package/build/browser/object-table/TableCell.js +111 -31
  21. package/build/browser/object-table/TableCell.js.map +1 -1
  22. package/build/browser/object-table/TableHeader.js +215 -38
  23. package/build/browser/object-table/TableHeaderContent.js +18 -21
  24. package/build/browser/object-table/TableHeaderContent.js.map +1 -1
  25. package/build/browser/object-table/TableHeaderWithPopover.js +80 -66
  26. package/build/browser/object-table/TableRow.js +144 -26
  27. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +18 -20
  28. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  29. package/build/browser/object-table/hooks/useColumnDefs.js +6 -2
  30. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  31. package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -1
  32. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
  33. package/build/browser/object-table/hooks/useObjectTableData.js +7 -6
  34. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  35. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  36. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  37. package/build/browser/object-table/hooks/useTableSorting.js.map +1 -1
  38. package/build/browser/object-table/utils/getRowId.js.map +1 -1
  39. package/build/cjs/public/experimental.cjs +435 -264
  40. package/build/cjs/public/experimental.cjs.map +1 -1
  41. package/build/cjs/public/experimental.css +114 -56
  42. package/build/cjs/public/experimental.css.map +1 -1
  43. package/build/cjs/public/experimental.d.cts +8 -11
  44. package/build/esm/base-components/checkbox/Checkbox.module.css +10 -3
  45. package/build/esm/object-table/CellContextMenu.module.css +1 -1
  46. package/build/{browser/object-table/CellContextMenu.module.css → esm/object-table/LoadingCell.js} +16 -3
  47. package/build/esm/object-table/LoadingCell.js.map +1 -0
  48. package/build/esm/object-table/LoadingCell.module.css +48 -0
  49. package/build/esm/object-table/LoadingRow.js +43 -0
  50. package/build/esm/object-table/LoadingRow.js.map +1 -0
  51. package/build/esm/object-table/LoadingStateTable.js +101 -0
  52. package/build/esm/object-table/LoadingStateTable.js.map +1 -0
  53. package/build/{browser/object-table/TableHeaderContent.module.css → esm/object-table/NonIdealState.js} +11 -13
  54. package/build/esm/object-table/NonIdealState.js.map +1 -0
  55. package/build/{browser/object-table/Table.module.css → esm/object-table/NonIdealState.module.css} +10 -4
  56. package/build/esm/object-table/ObjectTable.js +6 -5
  57. package/build/esm/object-table/ObjectTable.js.map +1 -1
  58. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  59. package/build/esm/object-table/Table.js +34 -13
  60. package/build/esm/object-table/Table.js.map +1 -1
  61. package/build/esm/object-table/Table.module.css +2 -2
  62. package/build/esm/object-table/TableBody.js +13 -2
  63. package/build/esm/object-table/TableBody.js.map +1 -1
  64. package/build/esm/object-table/TableCell.js.map +1 -1
  65. package/build/esm/object-table/TableCell.module.css +7 -8
  66. package/build/esm/object-table/TableHeader.module.css +15 -9
  67. package/build/esm/object-table/TableHeaderContent.js.map +1 -1
  68. package/build/esm/object-table/TableHeaderWithPopover.module.css +31 -26
  69. package/build/esm/object-table/TableRow.module.css +1 -1
  70. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +18 -20
  71. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  72. package/build/esm/object-table/hooks/useColumnDefs.js +6 -2
  73. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  74. package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -1
  75. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
  76. package/build/esm/object-table/hooks/useObjectTableData.js +7 -6
  77. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  78. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  79. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  80. package/build/esm/object-table/hooks/useTableSorting.js.map +1 -1
  81. package/build/esm/object-table/utils/getRowId.js.map +1 -1
  82. package/build/types/object-table/LoadingCell.d.ts +4 -0
  83. package/build/types/object-table/LoadingCell.d.ts.map +1 -0
  84. package/build/types/object-table/LoadingRow.d.ts +11 -0
  85. package/build/types/object-table/LoadingRow.d.ts.map +1 -0
  86. package/build/types/object-table/LoadingStateTable.d.ts +11 -0
  87. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -0
  88. package/build/types/object-table/NonIdealState.d.ts +6 -0
  89. package/build/types/object-table/NonIdealState.d.ts.map +1 -0
  90. package/build/types/object-table/ObjectTable.d.ts +4 -4
  91. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  92. package/build/types/object-table/ObjectTableApi.d.ts +4 -8
  93. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  94. package/build/types/object-table/Table.d.ts +2 -1
  95. package/build/types/object-table/Table.d.ts.map +1 -1
  96. package/build/types/object-table/TableBody.d.ts +4 -2
  97. package/build/types/object-table/TableBody.d.ts.map +1 -1
  98. package/build/types/object-table/TableHeaderContent.d.ts.map +1 -1
  99. package/build/types/object-table/hooks/useColumnDefs.d.ts +3 -3
  100. package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
  101. package/build/types/object-table/hooks/useColumnPinning.d.ts +3 -3
  102. package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -1
  103. package/build/types/object-table/hooks/useColumnVisibility.d.ts +3 -3
  104. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
  105. package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -6
  106. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  107. package/build/types/object-table/hooks/useRowSelection.d.ts +3 -3
  108. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  109. package/build/types/object-table/hooks/useSelectionColumn.d.ts +2 -2
  110. package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
  111. package/build/types/object-table/hooks/useTableSorting.d.ts +3 -3
  112. package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -1
  113. package/build/types/object-table/utils/getRowId.d.ts +3 -3
  114. package/build/types/object-table/utils/getRowId.d.ts.map +1 -1
  115. package/package.json +6 -6
  116. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -72
  117. package/build/browser/object-table/TableBody.module.css +0 -20
  118. package/build/browser/object-table/TableCell.module.css +0 -63
  119. package/build/browser/object-table/TableHeader.module.css +0 -95
  120. package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -105
  121. package/build/browser/object-table/TableRow.module.css +0 -60
@@ -18,7 +18,7 @@
18
18
  display: grid;
19
19
  position: sticky;
20
20
  top: 0;
21
- z-index: var(--bp-surface-zIndex-1);
21
+ z-index: var(--osdk-surface-z-index-1);
22
22
  background-color: var(--osdk-table-header-bg);
23
23
  }
24
24
 
@@ -27,7 +27,6 @@
27
27
  user-select: none;
28
28
  }
29
29
 
30
-
31
30
  .osdkTableHeaderRow {
32
31
  display: flex;
33
32
  }
@@ -57,17 +56,19 @@
57
56
  .osdkTableHeaderCell[data-pinned="left"],
58
57
  .osdkTableHeaderCell[data-pinned="right"] {
59
58
  position: sticky;
60
- z-index: var(--bp-surface-zIndex-2);
59
+ z-index: var(--osdk-surface-z-index-2);
61
60
  }
62
61
 
63
62
  /* Last left-pinned column - no left-pinned siblings after it */
64
63
  .osdkTableHeaderCell[data-pinned="left"]:not(:has(~ [data-pinned="left"])) {
65
- border-right: calc(var(--osdk-table-border-width)* 2) solid var(--osdk-table-border-color);
64
+ border-right: var(--osdk-table-pinned-column-border);
66
65
  }
67
66
 
68
67
  /* First right-pinned column - no right-pinned siblings before it */
69
- .osdkTableHeaderCell[data-pinned="right"]:not(:has(~ [data-pinned="right"]):nth-child(n+2)) {
70
- border-left: calc(var(--osdk-table-border-width)* 2) solid var(--osdk-table-border-color);
68
+ .osdkTableHeaderCell[data-pinned="right"]:not(
69
+ :has(~ [data-pinned="right"]):nth-child(n + 2)
70
+ ) {
71
+ border-left: var(--osdk-table-pinned-column-border);
71
72
  }
72
73
 
73
74
  .osdkTableHeaderCell:has([role="checkbox"]) {
@@ -83,13 +84,18 @@
83
84
  top: 0;
84
85
  touch-action: none;
85
86
  width: 3px;
86
- z-index: var(--bp-surface-zIndex-2);
87
+ z-index: var(--osdk-surface-z-index-2);
87
88
 
88
89
  &:hover {
89
- background: var(--bp-intent-primary-hover);
90
+ background: var(--osdk-intent-primary-hover);
90
91
  }
91
92
 
92
93
  &:active {
93
- background: var(--bp-intent-primary-active);
94
+ background: var(--osdk-intent-primary-active);
94
95
  }
95
96
  }
97
+
98
+ .osdkLoadingHeaderCell {
99
+ height: var(--osdk-table-header-fontSize);
100
+ flex: 1;
101
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderContent.js","names":["flexRender","React","styles","TableHeaderContent","header","createElement","className","osdkHeaderContent","column","columnDef","getContext"],"sources":["TableHeaderContent.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 { flexRender, type Header, type RowData } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport styles from \"./TableHeaderContent.module.css\";\n\ninterface TableHeaderContentProps<TData extends RowData> {\n header: Header<TData, unknown>;\n}\n\nexport function TableHeaderContent<TData extends RowData>(\n { header }: TableHeaderContentProps<TData>,\n): React.ReactElement {\n return (\n <div className={styles.osdkHeaderContent}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAmC,uBAAuB;AAC7E,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,iCAAiC;AAMpD,OAAO,SAASC,kBAAkBA,CAChC;EAAEC;AAAuC,CAAC,EACtB;EACpB,oBACEH,KAAA,CAAAI,aAAA;IAAKC,SAAS,EAAEJ,MAAM,CAACK;EAAkB,GACtCP,UAAU,CACTI,MAAM,CAACI,MAAM,CAACC,SAAS,CAACL,MAAM,EAC9BA,MAAM,CAACM,UAAU,CAAC,CACpB,CACG,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"TableHeaderContent.js","names":["flexRender","React","styles","TableHeaderContent","header","createElement","className","osdkHeaderContent","column","columnDef","getContext"],"sources":["TableHeaderContent.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 { flexRender, type Header, type RowData } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\nimport React from \"react\";\nimport styles from \"./TableHeaderContent.module.css\";\n\ninterface TableHeaderContentProps<TData extends RowData> {\n header: Header<TData, unknown>;\n}\n\nexport function TableHeaderContent<TData extends RowData>(\n { header }: TableHeaderContentProps<TData>,\n): React.ReactElement {\n return (\n <div className={styles.osdkHeaderContent}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n ) as ReactNode}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAmC,uBAAuB;AAE7E,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,iCAAiC;AAMpD,OAAO,SAASC,kBAAkBA,CAChC;EAAEC;AAAuC,CAAC,EACtB;EACpB,oBACEH,KAAA,CAAAI,aAAA;IAAKC,SAAS,EAAEJ,MAAM,CAACK;EAAkB,GACtCP,UAAU,CACTI,MAAM,CAACI,MAAM,CAACC,SAAS,CAACL,MAAM,EAC9BA,MAAM,CAACM,UAAU,CAAC,CACpB,CACG,CAAC;AAEV","ignoreList":[]}
@@ -22,7 +22,7 @@
22
22
 
23
23
  .osdkContentGap {
24
24
  display: flex;
25
- gap: var(--bp-surface-spacing);
25
+ gap: var(--osdk-surface-spacing);
26
26
  }
27
27
 
28
28
  .osdkHeaderContainer {
@@ -42,64 +42,69 @@
42
42
  }
43
43
 
44
44
  .osdkHeaderPopoverTrigger {
45
+ padding: 0;
45
46
  flex-shrink: 0;
46
47
  flex-grow: 0;
47
- border: var(--bp-surface-borderWidth) solid
48
- var(--bp-surface-borderColor-default);
49
- border-radius: var(--bp-surface-borderRadius);
50
- color: var(--bp-intent-default-foreground);
48
+ border: var(--osdk-surface-border-width) solid
49
+ var(--osdk-surface-border-color-default);
50
+ border-radius: var(--osdk-surface-border-radius);
51
+ color: var(--osdk-intent-default-foreground);
51
52
  user-select: none;
53
+ outline: none;
54
+
52
55
  &:hover {
53
- background-color: var(--bp-intent-default-hover);
56
+ background-color: var(--osdk-intent-default-hover);
54
57
  }
55
58
 
56
59
  &[data-popup-open] {
57
- background-color: var(--bp-intent-primary-rest);
60
+ background-color: var(--osdk-intent-primary-rest);
58
61
  }
59
62
 
60
63
  &:focus-visible {
61
- outline: var(--bp-surface-borderWidth) solid var(--bp-intent-primary-rest);
62
- outline-offset: calc(-1 * var(--bp-surface-borderWidth));
64
+ outline: var(--osdk-focus-visible-outline);
65
+ outline-offset: var(--osdk-focus-visible-outline-offset);
63
66
  }
64
67
  }
65
68
 
66
69
  .osdkHeaderIcon {
67
- width: var(--bp-iconography-size-small);
68
- height: var(--bp-iconography-size-small);
70
+ width: var(--osdk-iconography-size-small);
71
+ height: var(--osdk-iconography-size-small);
69
72
  }
70
73
 
71
74
  .osdkHeaderPopup {
72
75
  box-sizing: border-box;
73
- padding: var(--bp-surface-spacing);
74
- border-radius: var(--bp-surface-borderRadius);
75
- border: var(--bp-surface-borderWidth) solid
76
- var(--bp-surface-borderColor-default);
77
- background-color: var(--bp-palette-gray-100);
78
- color: var(--bp-typography-colorRest-default);
79
- box-shadow: var(--bp-surface-shadow-2);
80
- font-size: var(--bp-typography-size-bodyMedium);
76
+ padding: var(--osdk-surface-spacing);
77
+ border-radius: var(--osdk-surface-border-radius);
78
+ border: var(--osdk-surface-border-width) solid
79
+ var(--osdk-surface-border-color-default);
80
+ background-color: var(--osdk-surface-background-color-default);
81
+ color: var(--osdk-typography-color-default-rest);
82
+ box-shadow: var(--osdk-surface-shadow-2);
83
+ font-size: var(--osdk-typography-size-body-medium);
84
+ outline: none;
81
85
  }
82
86
 
83
87
  .osdkHeaderMenuItem {
84
88
  justify-content: flex-start;
85
- padding: var(--bp-surface-spacing);
89
+ padding: var(--osdk-surface-spacing);
86
90
  cursor: pointer;
87
91
  }
88
92
 
89
93
  .osdkHeaderMenuItem:hover {
90
- background-color: var(--bp-surface-colorHover-default);
91
- border-radius: var(--bp-surface-borderRadius);
94
+ outline: none;
95
+ background-color: var(--osdk-surface-background-color-default-hover);
96
+ border-radius: var(--osdk-surface-border-radius);
92
97
  }
93
98
 
94
99
  .osdkHeaderActiveMenuItem {
95
- background-color: var(--bp-intent-primary-rest);
96
- color: var(--bp-intent-primary-foreground);
100
+ background-color: var(--osdk-intent-primary-rest);
101
+ color: var(--osdk-intent-primary-foreground);
97
102
  }
98
103
 
99
104
  .osdkHeaderActiveMenuItem:hover {
100
- background-color: var(--bp-intent-primary-hover);
105
+ background-color: var(--osdk-intent-primary-hover);
101
106
  }
102
107
 
103
108
  .osdkHeaderActiveMenuItem:active {
104
- background-color: var(--bp-intent-primary-active);
109
+ background-color: var(--osdk-intent-primary-active);
105
110
  }
@@ -37,7 +37,7 @@
37
37
  z-index: 1;
38
38
  background-color: var(
39
39
  --osdk-table-row-bg-hover,
40
- var(--bp-surface-colorHover-default)
40
+ var(--osdk-surface-background-color-default-hover)
41
41
  );
42
42
  border-top-color: var(--osdk-table-row-border-color-hover);
43
43
  border-bottom-color: var(--osdk-table-row-border-color-hover);
@@ -20,7 +20,7 @@ import * as React from "react";
20
20
  import { describe, expect, it, vi } from "vitest";
21
21
  import { useObjectTableData } from "../useObjectTableData.js";
22
22
  vi.mock("@osdk/react/experimental", () => ({
23
- useObjectSet: vi.fn((objectSet, options) => {
23
+ useOsdkObjects: vi.fn((objectType, options) => {
24
24
  return {
25
25
  data: [],
26
26
  isLoading: false,
@@ -37,9 +37,6 @@ const TestObjectType = {
37
37
  type: "object",
38
38
  apiName: "TestObject"
39
39
  };
40
- const mockObjectSet = {
41
- objectType: TestObjectType
42
- };
43
40
  describe(useObjectTableData, () => {
44
41
  const wrapper = (client => {
45
42
  return ({
@@ -50,41 +47,42 @@ describe(useObjectTableData, () => {
50
47
  }, children);
51
48
  };
52
49
  })({});
53
- it("calls useObjectSet with pageSize of 50", () => {
50
+ it("calls useOsdkObjects with pageSize of 50", () => {
54
51
  const {
55
52
  result
56
- } = renderHook(() => useObjectTableData(mockObjectSet), {
53
+ } = renderHook(() => useObjectTableData(TestObjectType), {
57
54
  wrapper
58
55
  });
59
56
  const mockResult = result.current;
60
57
  expect(mockResult._testOptions).toEqual({
61
58
  withProperties: undefined,
62
- pageSize: 50
59
+ pageSize: 50,
60
+ orderBy: undefined
63
61
  });
64
62
  });
65
- it("calls useObjectSet with filter clause provided", () => {
63
+ it("calls useOsdkObjects with filter clause provided", () => {
66
64
  const filterClause = {
67
65
  name: "John"
68
66
  };
69
67
  const {
70
68
  result
71
- } = renderHook(() => useObjectTableData(mockObjectSet, undefined, filterClause), {
69
+ } = renderHook(() => useObjectTableData(TestObjectType, undefined, filterClause), {
72
70
  wrapper
73
71
  });
74
72
  const mockResult = result.current;
75
73
  expect(mockResult._testOptions.where).toEqual(filterClause);
76
74
  });
77
- it("calls useObjectSet without withProperties when no columnDefinitions provided", () => {
75
+ it("calls useOsdkObjects without withProperties when no columnDefinitions provided", () => {
78
76
  const {
79
77
  result
80
- } = renderHook(() => useObjectTableData(mockObjectSet, undefined), {
78
+ } = renderHook(() => useObjectTableData(TestObjectType, undefined), {
81
79
  wrapper
82
80
  });
83
81
  const mockResult = result.current;
84
82
  expect(mockResult._testOptions.withProperties).toBeUndefined();
85
83
  expect(mockResult._testOptions.pageSize).toBe(50);
86
84
  });
87
- it("calls useObjectSet without withProperties when columnDefinitions have no RDP columns", () => {
85
+ it("calls useOsdkObjects without withProperties when columnDefinitions have no RDP columns", () => {
88
86
  const columnDefinitions = [{
89
87
  locator: {
90
88
  type: "property",
@@ -98,14 +96,14 @@ describe(useObjectTableData, () => {
98
96
  }];
99
97
  const {
100
98
  result
101
- } = renderHook(() => useObjectTableData(mockObjectSet, columnDefinitions), {
99
+ } = renderHook(() => useObjectTableData(TestObjectType, columnDefinitions), {
102
100
  wrapper
103
101
  });
104
102
  const mockResult = result.current;
105
- expect(mockResult._testOptions.withProperties).toEqual({});
103
+ expect(mockResult._testOptions.withProperties).toBeUndefined();
106
104
  expect(mockResult._testOptions.pageSize).toBe(50);
107
105
  });
108
- it("extracts RDP creators and passes them to useObjectSet", () => {
106
+ it("extracts RDP creators and passes them to useOsdkObjects", () => {
109
107
  const mockRdpCreator1 = vi.fn();
110
108
  const mockRdpCreator2 = vi.fn();
111
109
  const columnDefinitions = [{
@@ -133,7 +131,7 @@ describe(useObjectTableData, () => {
133
131
  }];
134
132
  const {
135
133
  result
136
- } = renderHook(() => useObjectTableData(mockObjectSet, columnDefinitions), {
134
+ } = renderHook(() => useObjectTableData(TestObjectType, columnDefinitions), {
137
135
  wrapper
138
136
  });
139
137
  const mockResult = result.current;
@@ -156,7 +154,7 @@ describe(useObjectTableData, () => {
156
154
  rerender
157
155
  } = renderHook(({
158
156
  colDefs
159
- }) => useObjectTableData(mockObjectSet, colDefs), {
157
+ }) => useObjectTableData(TestObjectType, colDefs), {
160
158
  initialProps: {
161
159
  colDefs: columnDefinitions
162
160
  },
@@ -182,7 +180,7 @@ describe(useObjectTableData, () => {
182
180
  rerender
183
181
  } = renderHook(({
184
182
  colDefs
185
- }) => useObjectTableData(mockObjectSet, colDefs), {
183
+ }) => useObjectTableData(TestObjectType, colDefs), {
186
184
  initialProps: {
187
185
  colDefs: [{
188
186
  locator: {
@@ -212,10 +210,10 @@ describe(useObjectTableData, () => {
212
210
  rdp2: mockRdpCreator2
213
211
  });
214
212
  });
215
- it("returns useObjectSet result structure", () => {
213
+ it("returns useOsdkObjects result structure", () => {
216
214
  const {
217
215
  result
218
- } = renderHook(() => useObjectTableData(mockObjectSet), {
216
+ } = renderHook(() => useObjectTableData(TestObjectType), {
219
217
  wrapper
220
218
  });
221
219
  expect(result.current).toHaveProperty("data");
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectTableData.test.js","names":["OsdkProvider","renderHook","React","describe","expect","it","vi","useObjectTableData","mock","useObjectSet","fn","objectSet","options","data","isLoading","error","undefined","fetchNextPage","hasNextPage","isFetchingNextPage","_testOptions","TestObjectType","type","apiName","mockObjectSet","objectType","wrapper","client","children","createElement","result","mockResult","current","toEqual","withProperties","pageSize","filterClause","name","where","toBeUndefined","toBe","columnDefinitions","locator","id","mockRdpCreator1","mockRdpCreator2","creator","rdp1","rdp2","mockRdpCreator","rerender","colDefs","initialProps","firstMockResult","firstWithProperties","secondMockResult","toHaveProperty"],"sources":["useObjectTableData.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { Client } from \"@osdk/client\";\nimport { OsdkProvider } from \"@osdk/react\";\nimport { renderHook } from \"@testing-library/react\";\nimport * as React from \"react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport type { ColumnDefinition } from \"../../ObjectTableApi.js\";\nimport { useObjectTableData } from \"../useObjectTableData.js\";\n\ninterface MockUseObjectSetReturn {\n data: [];\n isLoading: false;\n error: undefined;\n fetchNextPage: ReturnType<typeof vi.fn>;\n hasNextPage: false;\n isFetchingNextPage: false;\n _testOptions: {\n withProperties?: Record<string, unknown>;\n pageSize: number;\n where?: WhereClause<any>;\n };\n}\n\nvi.mock(\"@osdk/react/experimental\", () => ({\n useObjectSet: vi.fn((objectSet, options): MockUseObjectSetReturn => {\n return {\n data: [],\n isLoading: false,\n error: undefined,\n fetchNextPage: vi.fn(),\n hasNextPage: false,\n isFetchingNextPage: false,\n // Return the options to verify they were passed correctly\n _testOptions: options,\n };\n }),\n}));\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\ntype TestObjectKeys = PropertyKeys<TestObject>;\n\nconst mockObjectSet = {\n objectType: TestObjectType,\n} as unknown as ObjectSet<TestObject>;\n\ndescribe(useObjectTableData, () => {\n const createWrapper = (client: Client) => {\n return ({ children }: React.PropsWithChildren) => {\n return <OsdkProvider client={client}>{children}</OsdkProvider>;\n };\n };\n\n const fakeClient = {} as unknown as Client;\n const wrapper = createWrapper(fakeClient);\n\n it(\"calls useObjectSet with pageSize of 50\", () => {\n const { result } = renderHook(\n () => useObjectTableData(mockObjectSet),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseObjectSetReturn;\n expect(mockResult._testOptions).toEqual({\n withProperties: undefined,\n pageSize: 50,\n });\n });\n\n it(\"calls useObjectSet with filter clause provided\", () => {\n const filterClause = {\n name: \"John\",\n } as unknown as WhereClause<TestObject>;\n const { result } = renderHook(\n () => useObjectTableData(mockObjectSet, undefined, filterClause),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseObjectSetReturn;\n expect(mockResult._testOptions.where).toEqual(filterClause);\n });\n\n it(\"calls useObjectSet without withProperties when no columnDefinitions provided\", () => {\n const { result } = renderHook(\n () => useObjectTableData(mockObjectSet, undefined),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseObjectSetReturn;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"calls useObjectSet without withProperties when columnDefinitions have no RDP columns\", () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(mockObjectSet, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseObjectSetReturn;\n expect(mockResult._testOptions.withProperties).toEqual({});\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"extracts RDP creators and passes them to useObjectSet\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<\n TestObject,\n { rdp1: any; rdp2: any },\n { myFunction: any }\n >\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n {\n locator: { type: \"function\", id: \"myFunction\" },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(mockObjectSet, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseObjectSetReturn;\n expect(mockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"memoizes withProperties based on columnDefinitions\", () => {\n const mockRdpCreator = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<TestObject, { myRdp: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"myRdp\", creator: mockRdpCreator },\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ colDefs }) => useObjectTableData(mockObjectSet, colDefs),\n {\n initialProps: { colDefs: columnDefinitions },\n wrapper,\n },\n );\n\n const firstMockResult = result.current as unknown as MockUseObjectSetReturn;\n const firstWithProperties = firstMockResult._testOptions.withProperties;\n\n // Rerender with same columnDefinitions reference\n rerender({ colDefs: columnDefinitions });\n\n // Should be the same reference (memoized)\n const secondMockResult = result\n .current as unknown as MockUseObjectSetReturn;\n expect(secondMockResult._testOptions.withProperties).toBe(\n firstWithProperties,\n );\n });\n\n it(\"updates withProperties when columnDefinitions change\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const initialColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp1: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n ];\n\n type ColDefs =\n | Array<\n ColumnDefinition<TestObject, Record<string, SimplePropertyDef>, {}>\n >\n | undefined;\n\n const { result, rerender } = renderHook(\n ({ colDefs }: { colDefs: ColDefs }) =>\n useObjectTableData(mockObjectSet, colDefs),\n {\n initialProps: { colDefs: initialColumnDefinitions as ColDefs },\n wrapper,\n },\n );\n\n const firstMockResult = result.current as unknown as MockUseObjectSetReturn;\n expect(firstMockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n });\n\n const updatedColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp2: SimplePropertyDef }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n ];\n\n rerender({ colDefs: updatedColumnDefinitions as ColDefs });\n\n const secondMockResult = result\n .current as unknown as MockUseObjectSetReturn;\n expect(secondMockResult._testOptions.withProperties).toEqual({\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"returns useObjectSet result structure\", () => {\n const { result } = renderHook(\n () => useObjectTableData(mockObjectSet),\n { wrapper },\n );\n\n expect(result.current).toHaveProperty(\"data\");\n expect(result.current).toHaveProperty(\"isLoading\");\n expect(result.current).toHaveProperty(\"error\");\n expect(result.current).toHaveProperty(\"fetchNextPage\");\n expect(result.current).toHaveProperty(\"hasNextPage\");\n expect(result.current).toHaveProperty(\"isFetchingNextPage\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useObjectTableData.test.js","names":["OsdkProvider","renderHook","React","describe","expect","it","vi","useObjectTableData","mock","useOsdkObjects","fn","objectType","options","data","isLoading","error","undefined","fetchNextPage","hasNextPage","isFetchingNextPage","_testOptions","TestObjectType","type","apiName","wrapper","client","children","createElement","result","mockResult","current","toEqual","withProperties","pageSize","orderBy","filterClause","name","where","toBeUndefined","toBe","columnDefinitions","locator","id","mockRdpCreator1","mockRdpCreator2","creator","rdp1","rdp2","mockRdpCreator","rerender","colDefs","initialProps","firstMockResult","firstWithProperties","secondMockResult","toHaveProperty"],"sources":["useObjectTableData.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n ObjectTypeDefinition,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { Client } from \"@osdk/client\";\nimport { OsdkProvider } from \"@osdk/react\";\nimport { renderHook } from \"@testing-library/react\";\nimport * as React from \"react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport type { ColumnDefinition } from \"../../ObjectTableApi.js\";\nimport { useObjectTableData } from \"../useObjectTableData.js\";\n\ninterface MockUseOsdkObjectsReturn {\n data: [];\n isLoading: false;\n error: undefined;\n fetchNextPage: ReturnType<typeof vi.fn>;\n hasNextPage: false;\n isFetchingNextPage: false;\n _testOptions: {\n withProperties?: Record<string, unknown>;\n pageSize: number;\n where?: WhereClause<any>;\n };\n}\n\nvi.mock(\"@osdk/react/experimental\", () => ({\n useOsdkObjects: vi.fn((objectType, options): MockUseOsdkObjectsReturn => {\n return {\n data: [],\n isLoading: false,\n error: undefined,\n fetchNextPage: vi.fn(),\n hasNextPage: false,\n isFetchingNextPage: false,\n // Return the options to verify they were passed correctly\n _testOptions: options,\n };\n }),\n}));\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\ntype TestObjectKeys = PropertyKeys<TestObject>;\n\ndescribe(useObjectTableData, () => {\n const createWrapper = (client: Client) => {\n return ({ children }: React.PropsWithChildren) => {\n return <OsdkProvider client={client}>{children}</OsdkProvider>;\n };\n };\n\n const fakeClient = {} as unknown as Client;\n const wrapper = createWrapper(fakeClient);\n\n it(\"calls useOsdkObjects with pageSize of 50\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions).toEqual({\n withProperties: undefined,\n pageSize: 50,\n orderBy: undefined,\n });\n });\n\n it(\"calls useOsdkObjects with filter clause provided\", () => {\n const filterClause = {\n name: \"John\",\n } as unknown as WhereClause<TestObject>;\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, undefined, filterClause),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.where).toEqual(filterClause);\n });\n\n it(\"calls useOsdkObjects without withProperties when no columnDefinitions provided\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, undefined),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"calls useOsdkObjects without withProperties when columnDefinitions have no RDP columns\", () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"extracts RDP creators and passes them to useOsdkObjects\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<\n TestObject,\n { rdp1: any; rdp2: any },\n { myFunction: any }\n >\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n {\n locator: { type: \"function\", id: \"myFunction\" },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"memoizes withProperties based on columnDefinitions\", () => {\n const mockRdpCreator = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<TestObject, { myRdp: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"myRdp\", creator: mockRdpCreator },\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ colDefs }) => useObjectTableData(TestObjectType, colDefs),\n {\n initialProps: { colDefs: columnDefinitions },\n wrapper,\n },\n );\n\n const firstMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n const firstWithProperties = firstMockResult._testOptions.withProperties;\n\n // Rerender with same columnDefinitions reference\n rerender({ colDefs: columnDefinitions });\n\n // Should be the same reference (memoized)\n const secondMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n expect(secondMockResult._testOptions.withProperties).toBe(\n firstWithProperties,\n );\n });\n\n it(\"updates withProperties when columnDefinitions change\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const initialColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp1: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n ];\n\n type ColDefs =\n | Array<\n ColumnDefinition<TestObject, Record<string, SimplePropertyDef>, {}>\n >\n | undefined;\n\n const { result, rerender } = renderHook(\n ({ colDefs }: { colDefs: ColDefs }) =>\n useObjectTableData(TestObjectType, colDefs),\n {\n initialProps: { colDefs: initialColumnDefinitions as ColDefs },\n wrapper,\n },\n );\n\n const firstMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n expect(firstMockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n });\n\n const updatedColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp2: SimplePropertyDef }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n ];\n\n rerender({ colDefs: updatedColumnDefinitions as ColDefs });\n\n const secondMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n expect(secondMockResult._testOptions.withProperties).toEqual({\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"returns useOsdkObjects result structure\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType),\n { wrapper },\n );\n\n expect(result.current).toHaveProperty(\"data\");\n expect(result.current).toHaveProperty(\"isLoading\");\n expect(result.current).toHaveProperty(\"error\");\n expect(result.current).toHaveProperty(\"fetchNextPage\");\n expect(result.current).toHaveProperty(\"hasNextPage\");\n expect(result.current).toHaveProperty(\"isFetchingNextPage\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -61,8 +61,12 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
61
61
  accessorKey: colKey,
62
62
  header: renderHeader ?? propertyMetadata?.displayName,
63
63
  size: width,
64
- minSize: minWidth,
65
- maxSize: maxWidth,
64
+ ...(minWidth ? {
65
+ minSize: minWidth
66
+ } : {}),
67
+ ...(maxWidth ? {
68
+ maxSize: maxWidth
69
+ } : {}),
66
70
  enableResizing: resizable,
67
71
  enableSorting: orderable,
68
72
  enableColumnFilter: filterable,
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","renderCell","renderHeader","propertyMetadata","type","id","undefined","colKey","colDef","accessorKey","header","displayName","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","getValue","Object","entries","key","property"],"sources":["useColumnDefs.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 ObjectMetadata,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n renderCell,\n renderHeader,\n } = col;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? propertyMetadata?.displayName,\n size: width,\n minSize: minWidth,\n maxSize: maxWidth,\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n return renderCell\n ? renderCell(object, locator)\n : cellContext.getValue();\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,SAASA,eAAe,QAAQ,aAAa;AAE7C,SAASC,OAAO,QAAQ,OAAO;AAmB/B;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAW3BC,UAAa,EACbC,iBAAqE,EACvC;EAC9B,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGP,eAAe,CAACG,UAAU,CAAC;EAEhE,MAAMK,OAEH,GAAGP,OAAO,CAAC,MAAM;IAClB,MAAMQ,gBAAgB,GAAGJ,QAAQ,EAAEK,UAAU;IAC7C;IACA,IAAIN,iBAAiB,EAAE;MACrB,OAAOO,+BAA+B,CACpCP,iBAAiB,EACjBK,gBACF,CAAC;IACH;;IAEA;IACA,OAAOG,iBAAiB,CAAUH,gBAAgB,CAAC;EACrD,CAAC,EAAE,CAACL,iBAAiB,EAAEC,QAAQ,EAAEK,UAAU,CAAC,CAAC;EAE7C,OAAO;IAAEF,OAAO;IAAEF,OAAO;IAAEC;EAAM,CAAC;AACpC;AAEA,SAASI,+BAA+BA,CAWtCP,iBAAoE,EACpEK,gBAAuD,EAKvD;EACA,OAAOL,iBAAiB,CAACS,GAAG,CAAEC,GAAG,IAAK;IACpC,MAAM;MACJC,OAAO;MACPC,KAAK;MACLC,QAAQ;MACRC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,UAAU;MACVC,UAAU;MACVC;IACF,CAAC,GAAGT,GAAG;IAEP,MAAMU,gBAAgB,GAAGT,OAAO,CAACU,IAAI,KAAK,UAAU,GAChDhB,gBAAgB,GAAGM,OAAO,CAACW,EAAE,CAAC,GAC9BC,SAAS;IAEb,MAAMC,MAAM,GAAGb,OAAO,CAACW,EAAY;IAEnC,MAAMG,MAEL,GAAG;MACFH,EAAE,EAAEE,MAAM;MACVE,WAAW,EAAEF,MAAM;MACnBG,MAAM,EAAER,YAAY,IAAIC,gBAAgB,EAAEQ,WAAW;MACrDC,IAAI,EAAEjB,KAAK;MACXkB,OAAO,EAAEjB,QAAQ;MACjBkB,OAAO,EAAEjB,QAAQ;MACjBkB,cAAc,EAAEjB,SAAS;MACzBkB,aAAa,EAAEjB,SAAS;MACxBkB,kBAAkB,EAAEjB,UAAU;MAC9BkB,IAAI,EAAGC,WAAW,IAAK;QACrB,MAAMC,MAKL,GAAGD,WAAW,CAACE,GAAG,CAACC,QAAQ;QAE5B,OAAOrB,UAAU,GACbA,UAAU,CAACmB,MAAM,EAAE1B,OAAO,CAAC,GAC3ByB,WAAW,CAACI,QAAQ,CAAC,CAAC;MAC5B;IACF,CAAC;IAED,OAAOf,MAAM;EACf,CAAC,CAAC;AACJ;AAEA,SAASjB,iBAAiBA,CAOxBH,gBAAuD,EAKvD;EACA,IAAI,CAACA,gBAAgB,EAAE,OAAO,EAAE;EAEhC,OAAOoC,MAAM,CAACC,OAAO,CAACrC,gBAAgB,CAAC,CAACI,GAAG,CAAC,CAAC,CAACkC,GAAG,EAAEC,QAAQ,CAAC,KAAK;IAC/D,MAAMnB,MAEL,GAAG;MACFC,WAAW,EAAEiB,GAAG;MAChBhB,MAAM,EAAEiB,QAAQ,CAAChB,WAAW,IAAIe;IAClC,CAAC;IACD,OAAOlB,MAAM;EACf,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","renderCell","renderHeader","propertyMetadata","type","id","undefined","colKey","colDef","accessorKey","header","displayName","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","getValue","Object","entries","key","property"],"sources":["useColumnDefs.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 ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n renderCell,\n renderHeader,\n } = col;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? propertyMetadata?.displayName,\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n return renderCell\n ? renderCell(object, locator)\n : cellContext.getValue();\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,SAASA,eAAe,QAAQ,aAAa;AAE7C,SAASC,OAAO,QAAQ,OAAO;AAgB/B;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAW3BC,UAAa,EACbC,iBAAqE,EACvC;EAC9B,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGP,eAAe,CAACG,UAAU,CAAC;EAEhE,MAAMK,OAEH,GAAGP,OAAO,CAAC,MAAM;IAClB,MAAMQ,gBAAgB,GAAGJ,QAAQ,EAAEK,UAAU;IAC7C;IACA,IAAIN,iBAAiB,EAAE;MACrB,OAAOO,+BAA+B,CACpCP,iBAAiB,EACjBK,gBACF,CAAC;IACH;;IAEA;IACA,OAAOG,iBAAiB,CAAUH,gBAAgB,CAAC;EACrD,CAAC,EAAE,CAACL,iBAAiB,EAAEC,QAAQ,EAAEK,UAAU,CAAC,CAAC;EAE7C,OAAO;IAAEF,OAAO;IAAEF,OAAO;IAAEC;EAAM,CAAC;AACpC;AAEA,SAASI,+BAA+BA,CAWtCP,iBAAoE,EACpEK,gBAAuD,EAKvD;EACA,OAAOL,iBAAiB,CAACS,GAAG,CAAEC,GAAG,IAAK;IACpC,MAAM;MACJC,OAAO;MACPC,KAAK;MACLC,QAAQ;MACRC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,UAAU;MACVC,UAAU;MACVC;IACF,CAAC,GAAGT,GAAG;IAEP,MAAMU,gBAAgB,GAAGT,OAAO,CAACU,IAAI,KAAK,UAAU,GAChDhB,gBAAgB,GAAGM,OAAO,CAACW,EAAE,CAAC,GAC9BC,SAAS;IAEb,MAAMC,MAAM,GAAGb,OAAO,CAACW,EAAY;IAEnC,MAAMG,MAEL,GAAG;MACFH,EAAE,EAAEE,MAAM;MACVE,WAAW,EAAEF,MAAM;MACnBG,MAAM,EAAER,YAAY,IAAIC,gBAAgB,EAAEQ,WAAW;MACrDC,IAAI,EAAEjB,KAAK;MACX,IAAIC,QAAQ,GAAG;QAAEiB,OAAO,EAAEjB;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1C,IAAIC,QAAQ,GAAG;QAAEiB,OAAO,EAAEjB;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1CkB,cAAc,EAAEjB,SAAS;MACzBkB,aAAa,EAAEjB,SAAS;MACxBkB,kBAAkB,EAAEjB,UAAU;MAC9BkB,IAAI,EAAGC,WAAW,IAAK;QACrB,MAAMC,MAKL,GAAGD,WAAW,CAACE,GAAG,CAACC,QAAQ;QAE5B,OAAOrB,UAAU,GACbA,UAAU,CAACmB,MAAM,EAAE1B,OAAO,CAAC,GAC3ByB,WAAW,CAACI,QAAQ,CAAC,CAAC;MAC5B;IACF,CAAC;IAED,OAAOf,MAAM;EACf,CAAC,CAAC;AACJ;AAEA,SAASjB,iBAAiBA,CAOxBH,gBAAuD,EAKvD;EACA,IAAI,CAACA,gBAAgB,EAAE,OAAO,EAAE;EAEhC,OAAOoC,MAAM,CAACC,OAAO,CAACrC,gBAAgB,CAAC,CAACI,GAAG,CAAC,CAAC,CAACkC,GAAG,EAAEC,QAAQ,CAAC,KAAK;IAC/D,MAAMnB,MAEL,GAAG;MACFC,WAAW,EAAEiB,GAAG;MAChBhB,MAAM,EAAEiB,QAAQ,CAAChB,WAAW,IAAIe;IAClC,CAAC;IACD,OAAOlB,MAAM;EACf,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnPinning.js","names":["useCallback","useEffect","useState","SELECTION_COLUMN_ID","useColumnPinning","columnDefinitions","hasSelectionColumn","onColumnsPinnedChanged","columnPinning","setColumnPinning","left","right","defaultState","getColumnPinningStateFromColumnDefs","selectionCol","onColumnPinningChange","updater","prev","newPinning","newStates","convertColumnPinningStateToArray","stateWithoutSelectionCol","filter","state","columnId","columnPinningState","reduce","acc","locator","pinned","colKey","id","toString","pinningState","map"],"sources":["useColumnPinning.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 ObjectTypeDefinition,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { ColumnPinningState, OnChangeFn } from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\n\ninterface UseColumnPinningProps<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n columnDefinitions: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"columnDefinitions\"];\n\n hasSelectionColumn?: boolean;\n\n onColumnsPinnedChanged?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onColumnsPinnedChanged\"];\n}\n\ninterface UseColumnPinningResults {\n columnPinning: ColumnPinningState;\n onColumnPinningChange: OnChangeFn<ColumnPinningState>;\n}\n\nexport const useColumnPinning = <\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n columnDefinitions,\n hasSelectionColumn,\n onColumnsPinnedChanged,\n}: UseColumnPinningProps<\n Q,\n RDPs,\n FunctionColumns\n>): UseColumnPinningResults => {\n const [columnPinning, setColumnPinning] = useState<ColumnPinningState>({\n left: [],\n right: [],\n });\n\n // Update column pinning when columnDefinitions change\n useEffect(() => {\n const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);\n const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];\n setColumnPinning({\n left: [...selectionCol, ...(defaultState.left ?? [])],\n right: [...(defaultState.right ?? [])],\n });\n }, [columnDefinitions, hasSelectionColumn]);\n\n const onColumnPinningChange: OnChangeFn<ColumnPinningState> = useCallback(\n (updater) => {\n setColumnPinning((prev) => {\n const newPinning = typeof updater === \"function\"\n ? updater(prev)\n : updater;\n\n if (onColumnsPinnedChanged) {\n const newStates = convertColumnPinningStateToArray(newPinning);\n const stateWithoutSelectionCol = newStates.filter(\n (state) => state.columnId !== SELECTION_COLUMN_ID,\n );\n onColumnsPinnedChanged(stateWithoutSelectionCol);\n }\n\n return newPinning;\n });\n },\n [onColumnsPinnedChanged],\n );\n\n return { columnPinning, onColumnPinningChange };\n};\n\nconst getColumnPinningStateFromColumnDefs = <\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"columnDefinitions\"],\n): ColumnPinningState => {\n if (!columnDefinitions) {\n return {};\n }\n const columnPinningState: ColumnPinningState = columnDefinitions.reduce<\n ColumnPinningState\n >(\n (acc, { locator, pinned }) => {\n const colKey: string = locator.id.toString();\n const isPinned = pinned != null && pinned !== \"none\";\n if (!isPinned) {\n return acc;\n }\n\n if (pinned === \"left\") {\n return {\n ...acc,\n left: [...(acc.left ?? []), colKey],\n };\n }\n\n return {\n ...acc,\n right: [...(acc.right ?? []), colKey],\n };\n },\n { left: [], right: [] },\n );\n return columnPinningState;\n};\n\n/**\n * Converts ColumnPinningState to array format for the callback\n */\nfunction convertColumnPinningStateToArray(\n pinningState: ColumnPinningState,\n): Array<{ columnId: string; pinned: \"left\" | \"right\" | \"none\" }> {\n return [\n ...(pinningState.left ?? []).map((columnId) => ({\n columnId,\n pinned: \"left\" as const,\n })),\n ...(pinningState.right ?? []).map((columnId) => ({\n columnId,\n pinned: \"right\" as const,\n })),\n ];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAExD,SAASC,mBAAmB,QAAQ,uBAAuB;AA8B3D,OAAO,MAAMC,gBAAgB,GAAGA,CAO9B;EACAC,iBAAiB;EACjBC,kBAAkB;EAClBC;AAKF,CAAC,KAA8B;EAC7B,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGP,QAAQ,CAAqB;IACrEQ,IAAI,EAAE,EAAE;IACRC,KAAK,EAAE;EACT,CAAC,CAAC;;EAEF;EACAV,SAAS,CAAC,MAAM;IACd,MAAMW,YAAY,GAAGC,mCAAmC,CAACR,iBAAiB,CAAC;IAC3E,MAAMS,YAAY,GAAGR,kBAAkB,GAAG,CAACH,mBAAmB,CAAC,GAAG,EAAE;IACpEM,gBAAgB,CAAC;MACfC,IAAI,EAAE,CAAC,GAAGI,YAAY,EAAE,IAAIF,YAAY,CAACF,IAAI,IAAI,EAAE,CAAC,CAAC;MACrDC,KAAK,EAAE,CAAC,IAAIC,YAAY,CAACD,KAAK,IAAI,EAAE,CAAC;IACvC,CAAC,CAAC;EACJ,CAAC,EAAE,CAACN,iBAAiB,EAAEC,kBAAkB,CAAC,CAAC;EAE3C,MAAMS,qBAAqD,GAAGf,WAAW,CACtEgB,OAAO,IAAK;IACXP,gBAAgB,CAAEQ,IAAI,IAAK;MACzB,MAAMC,UAAU,GAAG,OAAOF,OAAO,KAAK,UAAU,GAC5CA,OAAO,CAACC,IAAI,CAAC,GACbD,OAAO;MAEX,IAAIT,sBAAsB,EAAE;QAC1B,MAAMY,SAAS,GAAGC,gCAAgC,CAACF,UAAU,CAAC;QAC9D,MAAMG,wBAAwB,GAAGF,SAAS,CAACG,MAAM,CAC9CC,KAAK,IAAKA,KAAK,CAACC,QAAQ,KAAKrB,mBAChC,CAAC;QACDI,sBAAsB,CAACc,wBAAwB,CAAC;MAClD;MAEA,OAAOH,UAAU;IACnB,CAAC,CAAC;EACJ,CAAC,EACD,CAACX,sBAAsB,CACzB,CAAC;EAED,OAAO;IAAEC,aAAa;IAAEO;EAAsB,CAAC;AACjD,CAAC;AAED,MAAMF,mCAAmC,GAQvCR,iBAIsB,IACC;EACvB,IAAI,CAACA,iBAAiB,EAAE;IACtB,OAAO,CAAC,CAAC;EACX;EACA,MAAMoB,kBAAsC,GAAGpB,iBAAiB,CAACqB,MAAM,CAGrE,CAACC,GAAG,EAAE;IAAEC,OAAO;IAAEC;EAAO,CAAC,KAAK;IAC5B,MAAMC,MAAc,GAAGF,OAAO,CAACG,EAAE,CAACC,QAAQ,CAAC,CAAC;IAE5C,IAAI,EADaH,MAAM,IAAI,IAAI,IAAIA,MAAM,KAAK,MAAM,CACvC,EAAE;MACb,OAAOF,GAAG;IACZ;IAEA,IAAIE,MAAM,KAAK,MAAM,EAAE;MACrB,OAAO;QACL,GAAGF,GAAG;QACNjB,IAAI,EAAE,CAAC,IAAIiB,GAAG,CAACjB,IAAI,IAAI,EAAE,CAAC,EAAEoB,MAAM;MACpC,CAAC;IACH;IAEA,OAAO;MACL,GAAGH,GAAG;MACNhB,KAAK,EAAE,CAAC,IAAIgB,GAAG,CAAChB,KAAK,IAAI,EAAE,CAAC,EAAEmB,MAAM;IACtC,CAAC;EACH,CAAC,EACD;IAAEpB,IAAI,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAG,CACxB,CAAC;EACD,OAAOc,kBAAkB;AAC3B,CAAC;;AAED;AACA;AACA;AACA,SAASL,gCAAgCA,CACvCa,YAAgC,EACgC;EAChE,OAAO,CACL,GAAG,CAACA,YAAY,CAACvB,IAAI,IAAI,EAAE,EAAEwB,GAAG,CAAEV,QAAQ,KAAM;IAC9CA,QAAQ;IACRK,MAAM,EAAE;EACV,CAAC,CAAC,CAAC,EACH,GAAG,CAACI,YAAY,CAACtB,KAAK,IAAI,EAAE,EAAEuB,GAAG,CAAEV,QAAQ,KAAM;IAC/CA,QAAQ;IACRK,MAAM,EAAE;EACV,CAAC,CAAC,CAAC,CACJ;AACH","ignoreList":[]}
1
+ {"version":3,"file":"useColumnPinning.js","names":["useCallback","useEffect","useState","SELECTION_COLUMN_ID","useColumnPinning","columnDefinitions","hasSelectionColumn","onColumnsPinnedChanged","columnPinning","setColumnPinning","left","right","defaultState","getColumnPinningStateFromColumnDefs","selectionCol","onColumnPinningChange","updater","prev","newPinning","newStates","convertColumnPinningStateToArray","stateWithoutSelectionCol","filter","state","columnId","columnPinningState","reduce","acc","locator","pinned","colKey","id","toString","pinningState","map"],"sources":["useColumnPinning.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 QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { ColumnPinningState, OnChangeFn } from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\n\ninterface UseColumnPinningProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n columnDefinitions: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"columnDefinitions\"];\n\n hasSelectionColumn?: boolean;\n\n onColumnsPinnedChanged?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onColumnsPinnedChanged\"];\n}\n\ninterface UseColumnPinningResults {\n columnPinning: ColumnPinningState;\n onColumnPinningChange: OnChangeFn<ColumnPinningState>;\n}\n\nexport const useColumnPinning = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n columnDefinitions,\n hasSelectionColumn,\n onColumnsPinnedChanged,\n}: UseColumnPinningProps<\n Q,\n RDPs,\n FunctionColumns\n>): UseColumnPinningResults => {\n const [columnPinning, setColumnPinning] = useState<ColumnPinningState>({\n left: [],\n right: [],\n });\n\n // Update column pinning when columnDefinitions change\n useEffect(() => {\n const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);\n const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];\n setColumnPinning({\n left: [...selectionCol, ...(defaultState.left ?? [])],\n right: [...(defaultState.right ?? [])],\n });\n }, [columnDefinitions, hasSelectionColumn]);\n\n const onColumnPinningChange: OnChangeFn<ColumnPinningState> = useCallback(\n (updater) => {\n setColumnPinning((prev) => {\n const newPinning = typeof updater === \"function\"\n ? updater(prev)\n : updater;\n\n if (onColumnsPinnedChanged) {\n const newStates = convertColumnPinningStateToArray(newPinning);\n const stateWithoutSelectionCol = newStates.filter(\n (state) => state.columnId !== SELECTION_COLUMN_ID,\n );\n onColumnsPinnedChanged(stateWithoutSelectionCol);\n }\n\n return newPinning;\n });\n },\n [onColumnsPinnedChanged],\n );\n\n return { columnPinning, onColumnPinningChange };\n};\n\nconst getColumnPinningStateFromColumnDefs = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"columnDefinitions\"],\n): ColumnPinningState => {\n if (!columnDefinitions) {\n return {};\n }\n const columnPinningState: ColumnPinningState = columnDefinitions.reduce<\n ColumnPinningState\n >(\n (acc, { locator, pinned }) => {\n const colKey: string = locator.id.toString();\n const isPinned = pinned != null && pinned !== \"none\";\n if (!isPinned) {\n return acc;\n }\n\n if (pinned === \"left\") {\n return {\n ...acc,\n left: [...(acc.left ?? []), colKey],\n };\n }\n\n return {\n ...acc,\n right: [...(acc.right ?? []), colKey],\n };\n },\n { left: [], right: [] },\n );\n return columnPinningState;\n};\n\n/**\n * Converts ColumnPinningState to array format for the callback\n */\nfunction convertColumnPinningStateToArray(\n pinningState: ColumnPinningState,\n): Array<{ columnId: string; pinned: \"left\" | \"right\" | \"none\" }> {\n return [\n ...(pinningState.left ?? []).map((columnId) => ({\n columnId,\n pinned: \"left\" as const,\n })),\n ...(pinningState.right ?? []).map((columnId) => ({\n columnId,\n pinned: \"right\" as const,\n })),\n ];\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnVisibility.js","names":["useMemo","useColumnVisibility","columnDefinitions","columnVisibility","colVisibility","reduce","acc","colDef","isVisible","undefined","locator","colKey","id"],"sources":["useColumnVisibility.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 ObjectTypeDefinition,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { VisibilityState } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\n\ninterface UseColumnVisibilityProps<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n columnDefinitions: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"columnDefinitions\"];\n}\n\nexport const useColumnVisibility = <\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n { columnDefinitions }: UseColumnVisibilityProps<\n Q,\n RDPs,\n FunctionColumns\n >,\n): VisibilityState | undefined => {\n const columnVisibility = useMemo(() => {\n if (columnDefinitions) {\n const colVisibility: VisibilityState = columnDefinitions.reduce(\n (acc, colDef) => {\n if (colDef.isVisible !== undefined) {\n const { locator } = colDef;\n const colKey = locator.id;\n\n return {\n ...acc,\n [colKey]: colDef.isVisible,\n };\n }\n return acc;\n },\n {},\n );\n\n return colVisibility;\n }\n }, [columnDefinitions]);\n\n return columnVisibility;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,SAASA,OAAO,QAAQ,OAAO;AAkB/B,OAAO,MAAMC,mBAAmB,GAAGA,CAQjC;EAAEC;AAIF,CAAC,KAC+B;EAChC,MAAMC,gBAAgB,GAAGH,OAAO,CAAC,MAAM;IACrC,IAAIE,iBAAiB,EAAE;MACrB,MAAME,aAA8B,GAAGF,iBAAiB,CAACG,MAAM,CAC7D,CAACC,GAAG,EAAEC,MAAM,KAAK;QACf,IAAIA,MAAM,CAACC,SAAS,KAAKC,SAAS,EAAE;UAClC,MAAM;YAAEC;UAAQ,CAAC,GAAGH,MAAM;UAC1B,MAAMI,MAAM,GAAGD,OAAO,CAACE,EAAE;UAEzB,OAAO;YACL,GAAGN,GAAG;YACN,CAACK,MAAM,GAAGJ,MAAM,CAACC;UACnB,CAAC;QACH;QACA,OAAOF,GAAG;MACZ,CAAC,EACD,CAAC,CACH,CAAC;MAED,OAAOF,aAAa;IACtB;EACF,CAAC,EAAE,CAACF,iBAAiB,CAAC,CAAC;EAEvB,OAAOC,gBAAgB;AACzB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useColumnVisibility.js","names":["useMemo","useColumnVisibility","columnDefinitions","columnVisibility","colVisibility","reduce","acc","colDef","isVisible","undefined","locator","colKey","id"],"sources":["useColumnVisibility.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 QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { VisibilityState } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\n\ninterface UseColumnVisibilityProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n columnDefinitions: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"columnDefinitions\"];\n}\n\nexport const useColumnVisibility = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n { columnDefinitions }: UseColumnVisibilityProps<\n Q,\n RDPs,\n FunctionColumns\n >,\n): VisibilityState | undefined => {\n const columnVisibility = useMemo(() => {\n if (columnDefinitions) {\n const colVisibility: VisibilityState = columnDefinitions.reduce(\n (acc, colDef) => {\n if (colDef.isVisible !== undefined) {\n const { locator } = colDef;\n const colKey = locator.id;\n\n return {\n ...acc,\n [colKey]: colDef.isVisible,\n };\n }\n return acc;\n },\n {},\n );\n\n return colVisibility;\n }\n }, [columnDefinitions]);\n\n return columnVisibility;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,SAASA,OAAO,QAAQ,OAAO;AAkB/B,OAAO,MAAMC,mBAAmB,GAAGA,CAQjC;EAAEC;AAIF,CAAC,KAC+B;EAChC,MAAMC,gBAAgB,GAAGH,OAAO,CAAC,MAAM;IACrC,IAAIE,iBAAiB,EAAE;MACrB,MAAME,aAA8B,GAAGF,iBAAiB,CAACG,MAAM,CAC7D,CAACC,GAAG,EAAEC,MAAM,KAAK;QACf,IAAIA,MAAM,CAACC,SAAS,KAAKC,SAAS,EAAE;UAClC,MAAM;YAAEC;UAAQ,CAAC,GAAGH,MAAM;UAC1B,MAAMI,MAAM,GAAGD,OAAO,CAACE,EAAE;UAEzB,OAAO;YACL,GAAGN,GAAG;YACN,CAACK,MAAM,GAAGJ,MAAM,CAACC;UACnB,CAAC;QACH;QACA,OAAOF,GAAG;MACZ,CAAC,EACD,CAAC,CACH,CAAC;MAED,OAAOF,aAAa;IACtB;EACF,CAAC,EAAE,CAACF,iBAAiB,CAAC,CAAC;EAEvB,OAAOC,gBAAgB;AACzB,CAAC","ignoreList":[]}
@@ -14,18 +14,16 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { useObjectSet } from "@osdk/react/experimental";
17
+ import { useOsdkObjects } from "@osdk/react/experimental";
18
18
  import { useMemo } from "react";
19
19
  const PAGE_SIZE = 50;
20
20
 
21
21
  /**
22
- * This hook is a wrapper around useObjectSet
22
+ * This hook is a wrapper around useOsdkObjects
23
23
  * It extracts RDP locators from columnDefinitions and calls useObjectSet + withProperties
24
24
  * to return data containing the derived properties.
25
25
  */
26
-
27
- export function useObjectTableData(objectSet, columnDefinitions, filter, sorting) {
28
- // Convert React Table sorting state to OSDK orderBy format
26
+ export function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting) {
29
27
  const orderBy = useMemo(() => {
30
28
  if (!sorting || sorting.length === 0) {
31
29
  return undefined;
@@ -44,6 +42,9 @@ export function useObjectTableData(objectSet, columnDefinitions, filter, sorting
44
42
  const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(colLocator => {
45
43
  return colLocator.type === "rdp";
46
44
  });
45
+ if (!rdpColumns.length) {
46
+ return;
47
+ }
47
48
  return rdpColumns.reduce((acc, cur) => {
48
49
  return {
49
50
  ...acc,
@@ -51,7 +52,7 @@ export function useObjectTableData(objectSet, columnDefinitions, filter, sorting
51
52
  };
52
53
  }, {});
53
54
  }, [columnDefinitions]);
54
- return useObjectSet(objectSet, {
55
+ return useOsdkObjects(objectOrInterfaceType, {
55
56
  withProperties,
56
57
  pageSize: PAGE_SIZE,
57
58
  where: filter,
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectTableData.js","names":["useObjectSet","useMemo","PAGE_SIZE","useObjectTableData","objectSet","columnDefinitions","filter","sorting","orderBy","length","undefined","reduce","acc","sort","id","desc","withProperties","rdpColumns","map","colDef","locator","colLocator","type","cur","creator","pageSize","where"],"sources":["useObjectTableData.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 DerivedProperty,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport { useObjectSet } from \"@osdk/react/experimental\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\nconst PAGE_SIZE = 50;\n\n/**\n * This hook is a wrapper around useObjectSet\n * It extracts RDP locators from columnDefinitions and calls useObjectSet + withProperties\n * to return data containing the derived properties.\n */\n\nexport function useObjectTableData<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectSet: ObjectSet<Q>,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n filter?: WhereClause<Q, RDPs>,\n sorting?: SortingState,\n): ReturnType<typeof useObjectSet<Q, never, RDPs>> {\n // Convert React Table sorting state to OSDK orderBy format\n const orderBy = useMemo(() => {\n if (!sorting || sorting.length === 0) {\n return undefined;\n }\n\n return sorting.reduce<{ [K in PropertyKeys<Q>]?: \"asc\" | \"desc\" }>(\n (acc, sort) => {\n acc[sort.id as PropertyKeys<Q>] = sort.desc ? \"desc\" : \"asc\";\n return acc;\n },\n {},\n );\n }, [sorting]);\n\n // Extract derived properties definition\n const withProperties = useMemo(() => {\n if (!columnDefinitions) {\n return;\n }\n\n const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(\n (colLocator) => {\n return colLocator.type === \"rdp\";\n },\n );\n\n return rdpColumns.reduce<\n { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> }\n >(\n (acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur.creator,\n };\n },\n {} as {\n [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]>;\n },\n );\n }, [columnDefinitions]);\n\n return useObjectSet<Q, never, RDPs>(\n objectSet,\n {\n withProperties,\n pageSize: PAGE_SIZE,\n where: filter,\n orderBy,\n },\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,SAASA,YAAY,QAAQ,0BAA0B;AAEvD,SAASC,OAAO,QAAQ,OAAO;AAG/B,MAAMC,SAAS,GAAG,EAAE;;AAEpB;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,kBAAkBA,CAQhCC,SAAuB,EACvBC,iBAAqE,EACrEC,MAA6B,EAC7BC,OAAsB,EAC2B;EACjD;EACA,MAAMC,OAAO,GAAGP,OAAO,CAAC,MAAM;IAC5B,IAAI,CAACM,OAAO,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;MACpC,OAAOC,SAAS;IAClB;IAEA,OAAOH,OAAO,CAACI,MAAM,CACnB,CAACC,GAAG,EAAEC,IAAI,KAAK;MACbD,GAAG,CAACC,IAAI,CAACC,EAAE,CAAoB,GAAGD,IAAI,CAACE,IAAI,GAAG,MAAM,GAAG,KAAK;MAC5D,OAAOH,GAAG;IACZ,CAAC,EACD,CAAC,CACH,CAAC;EACH,CAAC,EAAE,CAACL,OAAO,CAAC,CAAC;;EAEb;EACA,MAAMS,cAAc,GAAGf,OAAO,CAAC,MAAM;IACnC,IAAI,CAACI,iBAAiB,EAAE;MACtB;IACF;IAEA,MAAMY,UAAU,GAAGZ,iBAAiB,CAACa,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACC,OAAO,CAAC,CAACd,MAAM,CACtEe,UAAU,IAAK;MACd,OAAOA,UAAU,CAACC,IAAI,KAAK,KAAK;IAClC,CACF,CAAC;IAED,OAAOL,UAAU,CAACN,MAAM,CAGtB,CAACC,GAAG,EAAEW,GAAG,KAAK;MACZ,OAAO;QACL,GAAGX,GAAG;QACN,CAACW,GAAG,CAACT,EAAE,GAAGS,GAAG,CAACC;MAChB,CAAC;IACH,CAAC,EACD,CAAC,CAGH,CAAC;EACH,CAAC,EAAE,CAACnB,iBAAiB,CAAC,CAAC;EAEvB,OAAOL,YAAY,CACjBI,SAAS,EACT;IACEY,cAAc;IACdS,QAAQ,EAAEvB,SAAS;IACnBwB,KAAK,EAAEpB,MAAM;IACbE;EACF,CACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"useObjectTableData.js","names":["useOsdkObjects","useMemo","PAGE_SIZE","useObjectTableData","objectOrInterfaceType","columnDefinitions","filter","sorting","orderBy","length","undefined","reduce","acc","sort","id","desc","withProperties","rdpColumns","map","colDef","locator","colLocator","type","cur","creator","pageSize","where"],"sources":["useObjectTableData.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 DerivedProperty,\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { UseOsdkListResult } from \"@osdk/react/experimental\";\nimport { useOsdkObjects } from \"@osdk/react/experimental\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\nconst PAGE_SIZE = 50;\n\n/**\n * This hook is a wrapper around useOsdkObjects\n * It extracts RDP locators from columnDefinitions and calls useObjectSet + withProperties\n * to return data containing the derived properties.\n */\nexport function useObjectTableData<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectOrInterfaceType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n filter?: WhereClause<Q, RDPs>,\n sorting?: SortingState,\n): UseOsdkListResult<Q, RDPs> {\n const orderBy = useMemo(() => {\n if (!sorting || sorting.length === 0) {\n return undefined;\n }\n\n return sorting.reduce<{ [K in PropertyKeys<Q>]?: \"asc\" | \"desc\" }>(\n (acc, sort) => {\n acc[sort.id as PropertyKeys<Q>] = sort.desc ? \"desc\" : \"asc\";\n return acc;\n },\n {},\n );\n }, [sorting]);\n\n // Extract derived properties definition\n const withProperties = useMemo(() => {\n if (!columnDefinitions) {\n return;\n }\n\n const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(\n (colLocator) => {\n return colLocator.type === \"rdp\";\n },\n );\n\n if (!rdpColumns.length) {\n return;\n }\n\n return rdpColumns.reduce<\n { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> }\n >(\n (acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur.creator,\n };\n },\n {} as { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> },\n );\n }, [columnDefinitions]);\n\n return useOsdkObjects<\n Q,\n RDPs\n >(\n objectOrInterfaceType,\n {\n withProperties,\n pageSize: PAGE_SIZE,\n where: filter,\n orderBy,\n },\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,SAASA,cAAc,QAAQ,0BAA0B;AAEzD,SAASC,OAAO,QAAQ,OAAO;AAG/B,MAAMC,SAAS,GAAG,EAAE;;AAEpB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAWhCC,qBAAwB,EACxBC,iBAAqE,EACrEC,MAA6B,EAC7BC,OAAsB,EACM;EAC5B,MAAMC,OAAO,GAAGP,OAAO,CAAC,MAAM;IAC5B,IAAI,CAACM,OAAO,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;MACpC,OAAOC,SAAS;IAClB;IAEA,OAAOH,OAAO,CAACI,MAAM,CACnB,CAACC,GAAG,EAAEC,IAAI,KAAK;MACbD,GAAG,CAACC,IAAI,CAACC,EAAE,CAAoB,GAAGD,IAAI,CAACE,IAAI,GAAG,MAAM,GAAG,KAAK;MAC5D,OAAOH,GAAG;IACZ,CAAC,EACD,CAAC,CACH,CAAC;EACH,CAAC,EAAE,CAACL,OAAO,CAAC,CAAC;;EAEb;EACA,MAAMS,cAAc,GAAGf,OAAO,CAAC,MAAM;IACnC,IAAI,CAACI,iBAAiB,EAAE;MACtB;IACF;IAEA,MAAMY,UAAU,GAAGZ,iBAAiB,CAACa,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACC,OAAO,CAAC,CAACd,MAAM,CACtEe,UAAU,IAAK;MACd,OAAOA,UAAU,CAACC,IAAI,KAAK,KAAK;IAClC,CACF,CAAC;IAED,IAAI,CAACL,UAAU,CAACR,MAAM,EAAE;MACtB;IACF;IAEA,OAAOQ,UAAU,CAACN,MAAM,CAGtB,CAACC,GAAG,EAAEW,GAAG,KAAK;MACZ,OAAO;QACL,GAAGX,GAAG;QACN,CAACW,GAAG,CAACT,EAAE,GAAGS,GAAG,CAACC;MAChB,CAAC;IACH,CAAC,EACD,CAAC,CACH,CAAC;EACH,CAAC,EAAE,CAACnB,iBAAiB,CAAC,CAAC;EAEvB,OAAOL,cAAc,CAInBI,qBAAqB,EACrB;IACEY,cAAc;IACdS,QAAQ,EAAEvB,SAAS;IACnBwB,KAAK,EAAEpB,MAAM;IACbE;EACF,CACF,CAAC;AACH","ignoreList":[]}