@osdk/react-components 0.15.0 → 0.16.0-main-cf496ff080ba8375b89e85ea47c2568a7caca990

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 (49) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +10 -5
  3. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
  4. package/build/browser/object-table/DefaultCellRenderer.js +18 -0
  5. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  6. package/build/browser/object-table/EditableCell.js +4 -3
  7. package/build/browser/object-table/EditableCell.js.map +1 -1
  8. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  9. package/build/browser/object-table/utils/types.js.map +1 -1
  10. package/build/browser/util/UserAgent.js +1 -1
  11. package/build/browser/util/UserAgent.js.map +1 -1
  12. package/build/cjs/{chunk-4MKY6RU2.cjs → chunk-JLSIIL5M.cjs} +20 -6
  13. package/build/cjs/chunk-JLSIIL5M.cjs.map +1 -0
  14. package/build/cjs/{chunk-VWMSVA2B.cjs → chunk-KOH3HIJX.cjs} +3 -3
  15. package/build/cjs/chunk-KOH3HIJX.cjs.map +1 -0
  16. package/build/cjs/{chunk-HTGC4GAZ.cjs → chunk-O7L3KWPU.cjs} +4 -4
  17. package/build/cjs/{chunk-HTGC4GAZ.cjs.map → chunk-O7L3KWPU.cjs.map} +1 -1
  18. package/build/cjs/{chunk-IMOIQYNW.cjs → chunk-U6QUBJUK.cjs} +4 -4
  19. package/build/cjs/{chunk-IMOIQYNW.cjs.map → chunk-U6QUBJUK.cjs.map} +1 -1
  20. package/build/cjs/{chunk-JWNRU2TC.cjs → chunk-ZGCXYPDR.cjs} +15 -8
  21. package/build/cjs/chunk-ZGCXYPDR.cjs.map +1 -0
  22. package/build/cjs/public/experimental/action-form.cjs +4 -4
  23. package/build/cjs/public/experimental/filter-list.cjs +13 -13
  24. package/build/cjs/public/experimental/object-table.cjs +8 -8
  25. package/build/cjs/public/experimental/object-table.d.cts +9 -6
  26. package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
  27. package/build/cjs/public/experimental.cjs +46 -46
  28. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +10 -5
  29. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
  30. package/build/esm/object-table/DefaultCellRenderer.js +18 -0
  31. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  32. package/build/esm/object-table/EditableCell.js +4 -3
  33. package/build/esm/object-table/EditableCell.js.map +1 -1
  34. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  35. package/build/esm/object-table/utils/types.js.map +1 -1
  36. package/build/esm/util/UserAgent.js +1 -1
  37. package/build/esm/util/UserAgent.js.map +1 -1
  38. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -1
  39. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
  40. package/build/types/object-table/EditableCell.d.ts +8 -1
  41. package/build/types/object-table/EditableCell.d.ts.map +1 -1
  42. package/build/types/object-table/ObjectTableApi.d.ts +4 -3
  43. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  44. package/build/types/object-table/utils/types.d.ts +5 -3
  45. package/build/types/object-table/utils/types.d.ts.map +1 -1
  46. package/package.json +7 -7
  47. package/build/cjs/chunk-4MKY6RU2.cjs.map +0 -1
  48. package/build/cjs/chunk-JWNRU2TC.cjs.map +0 -1
  49. package/build/cjs/chunk-VWMSVA2B.cjs.map +0 -1
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkHTGC4GAZ_cjs = require('../../chunk-HTGC4GAZ.cjs');
3
+ var chunkO7L3KWPU_cjs = require('../../chunk-O7L3KWPU.cjs');
4
4
  require('../../chunk-X337DNCW.cjs');
5
5
  require('../../chunk-ZBJEZKOD.cjs');
6
6
  require('../../chunk-I3OSD6CF.cjs');
7
7
  require('../../chunk-Z4JDLERD.cjs');
8
- require('../../chunk-VWMSVA2B.cjs');
8
+ require('../../chunk-KOH3HIJX.cjs');
9
9
  require('../../chunk-LBWASTWS.cjs');
10
10
  require('../../chunk-JBRNNWYC.cjs');
11
11
  require('../../chunk-7LXS66DW.cjs');
@@ -16,11 +16,11 @@ require('../../chunk-Q2W6GYRK.cjs');
16
16
 
17
17
  Object.defineProperty(exports, "ActionForm", {
18
18
  enumerable: true,
19
- get: function () { return chunkHTGC4GAZ_cjs.ActionForm; }
19
+ get: function () { return chunkO7L3KWPU_cjs.ActionForm; }
20
20
  });
21
21
  Object.defineProperty(exports, "BaseForm", {
22
22
  enumerable: true,
23
- get: function () { return chunkHTGC4GAZ_cjs.BaseForm; }
23
+ get: function () { return chunkO7L3KWPU_cjs.BaseForm; }
24
24
  });
25
25
  //# sourceMappingURL=action-form.cjs.map
26
26
  //# sourceMappingURL=action-form.cjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkJWNRU2TC_cjs = require('../../chunk-JWNRU2TC.cjs');
3
+ var chunkZGCXYPDR_cjs = require('../../chunk-ZGCXYPDR.cjs');
4
4
  require('../../chunk-X337DNCW.cjs');
5
5
  require('../../chunk-EWLPXTKT.cjs');
6
6
  require('../../chunk-Z4JDLERD.cjs');
7
- require('../../chunk-VWMSVA2B.cjs');
7
+ require('../../chunk-KOH3HIJX.cjs');
8
8
  require('../../chunk-LBWASTWS.cjs');
9
9
  require('../../chunk-JBRNNWYC.cjs');
10
10
  require('../../chunk-7LXS66DW.cjs');
@@ -15,47 +15,47 @@ require('../../chunk-Q2W6GYRK.cjs');
15
15
 
16
16
  Object.defineProperty(exports, "BaseFilterList", {
17
17
  enumerable: true,
18
- get: function () { return chunkJWNRU2TC_cjs.BaseFilterList; }
18
+ get: function () { return chunkZGCXYPDR_cjs.BaseFilterList; }
19
19
  });
20
20
  Object.defineProperty(exports, "FilterInput", {
21
21
  enumerable: true,
22
- get: function () { return chunkJWNRU2TC_cjs.FilterInput; }
22
+ get: function () { return chunkZGCXYPDR_cjs.FilterInput; }
23
23
  });
24
24
  Object.defineProperty(exports, "FilterList", {
25
25
  enumerable: true,
26
- get: function () { return chunkJWNRU2TC_cjs.FilterList; }
26
+ get: function () { return chunkZGCXYPDR_cjs.FilterList; }
27
27
  });
28
28
  Object.defineProperty(exports, "FilterPopover", {
29
29
  enumerable: true,
30
- get: function () { return chunkJWNRU2TC_cjs.FilterPopover; }
30
+ get: function () { return chunkZGCXYPDR_cjs.FilterPopover; }
31
31
  });
32
32
  Object.defineProperty(exports, "deserializeFilterStates", {
33
33
  enumerable: true,
34
- get: function () { return chunkJWNRU2TC_cjs.deserializeFilterStates; }
34
+ get: function () { return chunkZGCXYPDR_cjs.deserializeFilterStates; }
35
35
  });
36
36
  Object.defineProperty(exports, "filterHasActiveState", {
37
37
  enumerable: true,
38
- get: function () { return chunkJWNRU2TC_cjs.filterHasActiveState; }
38
+ get: function () { return chunkZGCXYPDR_cjs.filterHasActiveState; }
39
39
  });
40
40
  Object.defineProperty(exports, "getFilterKey", {
41
41
  enumerable: true,
42
- get: function () { return chunkJWNRU2TC_cjs.getFilterKey; }
42
+ get: function () { return chunkZGCXYPDR_cjs.getFilterKey; }
43
43
  });
44
44
  Object.defineProperty(exports, "getFilterLabel", {
45
45
  enumerable: true,
46
- get: function () { return chunkJWNRU2TC_cjs.getFilterLabel; }
46
+ get: function () { return chunkZGCXYPDR_cjs.getFilterLabel; }
47
47
  });
48
48
  Object.defineProperty(exports, "serializeFilterStates", {
49
49
  enumerable: true,
50
- get: function () { return chunkJWNRU2TC_cjs.serializeFilterStates; }
50
+ get: function () { return chunkZGCXYPDR_cjs.serializeFilterStates; }
51
51
  });
52
52
  Object.defineProperty(exports, "summarizeFilterValue", {
53
53
  enumerable: true,
54
- get: function () { return chunkJWNRU2TC_cjs.summarizeFilterValue; }
54
+ get: function () { return chunkZGCXYPDR_cjs.summarizeFilterValue; }
55
55
  });
56
56
  Object.defineProperty(exports, "useFilterListState", {
57
57
  enumerable: true,
58
- get: function () { return chunkJWNRU2TC_cjs.useFilterListState; }
58
+ get: function () { return chunkZGCXYPDR_cjs.useFilterListState; }
59
59
  });
60
60
  //# sourceMappingURL=filter-list.cjs.map
61
61
  //# sourceMappingURL=filter-list.cjs.map
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunk4MKY6RU2_cjs = require('../../chunk-4MKY6RU2.cjs');
3
+ var chunkJLSIIL5M_cjs = require('../../chunk-JLSIIL5M.cjs');
4
4
  require('../../chunk-O5EUACSV.cjs');
5
5
  require('../../chunk-ZBJEZKOD.cjs');
6
6
  require('../../chunk-I3OSD6CF.cjs');
7
7
  require('../../chunk-EWLPXTKT.cjs');
8
8
  require('../../chunk-Z4JDLERD.cjs');
9
- require('../../chunk-VWMSVA2B.cjs');
9
+ require('../../chunk-KOH3HIJX.cjs');
10
10
  require('../../chunk-LBWASTWS.cjs');
11
11
  require('../../chunk-JBRNNWYC.cjs');
12
12
  require('../../chunk-7LXS66DW.cjs');
@@ -17,27 +17,27 @@ require('../../chunk-Q2W6GYRK.cjs');
17
17
 
18
18
  Object.defineProperty(exports, "BaseTable", {
19
19
  enumerable: true,
20
- get: function () { return chunk4MKY6RU2_cjs.BaseTable; }
20
+ get: function () { return chunkJLSIIL5M_cjs.BaseTable; }
21
21
  });
22
22
  Object.defineProperty(exports, "ColumnConfigDialog", {
23
23
  enumerable: true,
24
- get: function () { return chunk4MKY6RU2_cjs.ColumnConfigDialog; }
24
+ get: function () { return chunkJLSIIL5M_cjs.ColumnConfigDialog; }
25
25
  });
26
26
  Object.defineProperty(exports, "LoadingCell", {
27
27
  enumerable: true,
28
- get: function () { return chunk4MKY6RU2_cjs.LoadingCell; }
28
+ get: function () { return chunkJLSIIL5M_cjs.LoadingCell; }
29
29
  });
30
30
  Object.defineProperty(exports, "LoadingCellContent", {
31
31
  enumerable: true,
32
- get: function () { return chunk4MKY6RU2_cjs.LoadingCellContent; }
32
+ get: function () { return chunkJLSIIL5M_cjs.LoadingCellContent; }
33
33
  });
34
34
  Object.defineProperty(exports, "MultiColumnSortDialog", {
35
35
  enumerable: true,
36
- get: function () { return chunk4MKY6RU2_cjs.MultiColumnSortDialog; }
36
+ get: function () { return chunkJLSIIL5M_cjs.MultiColumnSortDialog; }
37
37
  });
38
38
  Object.defineProperty(exports, "ObjectTable", {
39
39
  enumerable: true,
40
- get: function () { return chunk4MKY6RU2_cjs.ObjectTable; }
40
+ get: function () { return chunkJLSIIL5M_cjs.ObjectTable; }
41
41
  });
42
42
  //# sourceMappingURL=object-table.cjs.map
43
43
  //# sourceMappingURL=object-table.cjs.map
@@ -127,13 +127,15 @@ type EditFieldComponent = keyof EditFieldPropsByType;
127
127
  /**
128
128
  * Configuration for an editable cell's field component.
129
129
  *
130
- * `getFieldComponentProps` is called with the row's object so the configuration
131
- * can vary per row (e.g. dropdown items that depend on row state).
130
+ * `getFieldComponentProps` is called with the row's object and a map of any
131
+ * pending cell edits for the same row, keyed by `columnId`. This lets the
132
+ * configuration depend on row state or on other in-progress edits within the
133
+ * row (e.g. dropdown items that change once another column is edited).
132
134
  */
133
135
  type EditFieldConfig<TData = unknown> = {
134
136
  [K in EditFieldComponent]: {
135
137
  fieldComponent: K;
136
- getFieldComponentProps: (object: TData) => EditFieldPropsByType[K];
138
+ getFieldComponentProps: (object: TData, edits?: Record<string, CellEditInfo<TData, unknown>>) => EditFieldPropsByType[K];
137
139
  };
138
140
  }[EditFieldComponent];
139
141
 
@@ -196,9 +198,10 @@ interface EditableColumnDefinition<Q extends ObjectOrInterfaceDefinition, RDPs e
196
198
  * When provided, the column uses the specified field component
197
199
  * (e.g. dropdown) instead of the default auto-detected text/number input.
198
200
  *
199
- * `getFieldComponentProps` receives the row's object and returns the props
200
- * to pass to the field component, so editor configuration can depend on the
201
- * current row.
201
+ * `getFieldComponentProps` receives the row's object and a map of any
202
+ * pending edits for that row (keyed by column id), and returns the props to
203
+ * pass to the field component. Editor configuration can depend on the
204
+ * current row or on other in-progress edits within the row.
202
205
  */
203
206
  editFieldConfig?: EditFieldConfig<Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>>;
204
207
  /**
@@ -1,98 +1,98 @@
1
1
  'use strict';
2
2
 
3
- var chunkIMOIQYNW_cjs = require('../../chunk-IMOIQYNW.cjs');
4
- require('../../chunk-VWMSVA2B.cjs');
3
+ var chunkU6QUBJUK_cjs = require('../../chunk-U6QUBJUK.cjs');
4
+ require('../../chunk-KOH3HIJX.cjs');
5
5
  require('../../chunk-Q2W6GYRK.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "BasePdfViewer", {
10
10
  enumerable: true,
11
- get: function () { return chunkIMOIQYNW_cjs.BasePdfViewer; }
11
+ get: function () { return chunkU6QUBJUK_cjs.BasePdfViewer; }
12
12
  });
13
13
  Object.defineProperty(exports, "PdfViewer", {
14
14
  enumerable: true,
15
- get: function () { return chunkIMOIQYNW_cjs.PdfViewer; }
15
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewer; }
16
16
  });
17
17
  Object.defineProperty(exports, "PdfViewerAnnotationLayer", {
18
18
  enumerable: true,
19
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerAnnotationLayer; }
19
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerAnnotationLayer; }
20
20
  });
21
21
  Object.defineProperty(exports, "PdfViewerContent", {
22
22
  enumerable: true,
23
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerContent; }
23
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerContent; }
24
24
  });
25
25
  Object.defineProperty(exports, "PdfViewerOutlineSidebar", {
26
26
  enumerable: true,
27
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerOutlineSidebar; }
27
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerOutlineSidebar; }
28
28
  });
29
29
  Object.defineProperty(exports, "PdfViewerProvider", {
30
30
  enumerable: true,
31
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerProvider; }
31
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerProvider; }
32
32
  });
33
33
  Object.defineProperty(exports, "PdfViewerSearchBar", {
34
34
  enumerable: true,
35
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerSearchBar; }
35
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerSearchBar; }
36
36
  });
37
37
  Object.defineProperty(exports, "PdfViewerSidebar", {
38
38
  enumerable: true,
39
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerSidebar; }
39
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerSidebar; }
40
40
  });
41
41
  Object.defineProperty(exports, "PdfViewerToolbar", {
42
42
  enumerable: true,
43
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerToolbar; }
43
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerToolbar; }
44
44
  });
45
45
  Object.defineProperty(exports, "usePdfAnnotationPortals", {
46
46
  enumerable: true,
47
- get: function () { return chunkIMOIQYNW_cjs.usePdfAnnotationPortals; }
47
+ get: function () { return chunkU6QUBJUK_cjs.usePdfAnnotationPortals; }
48
48
  });
49
49
  Object.defineProperty(exports, "usePdfAnnotationsByPage", {
50
50
  enumerable: true,
51
- get: function () { return chunkIMOIQYNW_cjs.usePdfAnnotationsByPage; }
51
+ get: function () { return chunkU6QUBJUK_cjs.usePdfAnnotationsByPage; }
52
52
  });
53
53
  Object.defineProperty(exports, "usePdfDocument", {
54
54
  enumerable: true,
55
- get: function () { return chunkIMOIQYNW_cjs.usePdfDocument; }
55
+ get: function () { return chunkU6QUBJUK_cjs.usePdfDocument; }
56
56
  });
57
57
  Object.defineProperty(exports, "usePdfFormFields", {
58
58
  enumerable: true,
59
- get: function () { return chunkIMOIQYNW_cjs.usePdfFormFields; }
59
+ get: function () { return chunkU6QUBJUK_cjs.usePdfFormFields; }
60
60
  });
61
61
  Object.defineProperty(exports, "usePdfHighlightMode", {
62
62
  enumerable: true,
63
- get: function () { return chunkIMOIQYNW_cjs.usePdfHighlightMode; }
63
+ get: function () { return chunkU6QUBJUK_cjs.usePdfHighlightMode; }
64
64
  });
65
65
  Object.defineProperty(exports, "usePdfOutline", {
66
66
  enumerable: true,
67
- get: function () { return chunkIMOIQYNW_cjs.usePdfOutline; }
67
+ get: function () { return chunkU6QUBJUK_cjs.usePdfOutline; }
68
68
  });
69
69
  Object.defineProperty(exports, "usePdfViewer", {
70
70
  enumerable: true,
71
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewer; }
71
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewer; }
72
72
  });
73
73
  Object.defineProperty(exports, "usePdfViewerContext", {
74
74
  enumerable: true,
75
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerContext; }
75
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerContext; }
76
76
  });
77
77
  Object.defineProperty(exports, "usePdfViewerCore", {
78
78
  enumerable: true,
79
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerCore; }
79
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerCore; }
80
80
  });
81
81
  Object.defineProperty(exports, "usePdfViewerInstance", {
82
82
  enumerable: true,
83
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerInstance; }
83
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerInstance; }
84
84
  });
85
85
  Object.defineProperty(exports, "usePdfViewerSearch", {
86
86
  enumerable: true,
87
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerSearch; }
87
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerSearch; }
88
88
  });
89
89
  Object.defineProperty(exports, "usePdfViewerState", {
90
90
  enumerable: true,
91
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerState; }
91
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerState; }
92
92
  });
93
93
  Object.defineProperty(exports, "usePdfViewerSync", {
94
94
  enumerable: true,
95
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerSync; }
95
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerSync; }
96
96
  });
97
97
  //# sourceMappingURL=pdf-viewer.cjs.map
98
98
  //# sourceMappingURL=pdf-viewer.cjs.map
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunkIMOIQYNW_cjs = require('../chunk-IMOIQYNW.cjs');
3
+ var chunkU6QUBJUK_cjs = require('../chunk-U6QUBJUK.cjs');
4
4
  var chunkIDDBCC5C_cjs = require('../chunk-IDDBCC5C.cjs');
5
- var chunkHTGC4GAZ_cjs = require('../chunk-HTGC4GAZ.cjs');
6
- var chunkJWNRU2TC_cjs = require('../chunk-JWNRU2TC.cjs');
5
+ var chunkO7L3KWPU_cjs = require('../chunk-O7L3KWPU.cjs');
6
+ var chunkZGCXYPDR_cjs = require('../chunk-ZGCXYPDR.cjs');
7
7
  require('../chunk-X337DNCW.cjs');
8
8
  var chunk2LKVRPJY_cjs = require('../chunk-2LKVRPJY.cjs');
9
- var chunk4MKY6RU2_cjs = require('../chunk-4MKY6RU2.cjs');
9
+ var chunkJLSIIL5M_cjs = require('../chunk-JLSIIL5M.cjs');
10
10
  require('../chunk-O5EUACSV.cjs');
11
11
  require('../chunk-ZBJEZKOD.cjs');
12
12
  require('../chunk-I3OSD6CF.cjs');
13
13
  require('../chunk-EWLPXTKT.cjs');
14
14
  require('../chunk-Z4JDLERD.cjs');
15
- require('../chunk-VWMSVA2B.cjs');
15
+ require('../chunk-KOH3HIJX.cjs');
16
16
  require('../chunk-LBWASTWS.cjs');
17
17
  require('../chunk-JBRNNWYC.cjs');
18
18
  require('../chunk-7LXS66DW.cjs');
@@ -23,91 +23,91 @@ require('../chunk-Q2W6GYRK.cjs');
23
23
 
24
24
  Object.defineProperty(exports, "BasePdfViewer", {
25
25
  enumerable: true,
26
- get: function () { return chunkIMOIQYNW_cjs.BasePdfViewer; }
26
+ get: function () { return chunkU6QUBJUK_cjs.BasePdfViewer; }
27
27
  });
28
28
  Object.defineProperty(exports, "PdfViewer", {
29
29
  enumerable: true,
30
- get: function () { return chunkIMOIQYNW_cjs.PdfViewer; }
30
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewer; }
31
31
  });
32
32
  Object.defineProperty(exports, "PdfViewerAnnotationLayer", {
33
33
  enumerable: true,
34
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerAnnotationLayer; }
34
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerAnnotationLayer; }
35
35
  });
36
36
  Object.defineProperty(exports, "PdfViewerContent", {
37
37
  enumerable: true,
38
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerContent; }
38
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerContent; }
39
39
  });
40
40
  Object.defineProperty(exports, "PdfViewerOutlineSidebar", {
41
41
  enumerable: true,
42
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerOutlineSidebar; }
42
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerOutlineSidebar; }
43
43
  });
44
44
  Object.defineProperty(exports, "PdfViewerProvider", {
45
45
  enumerable: true,
46
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerProvider; }
46
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerProvider; }
47
47
  });
48
48
  Object.defineProperty(exports, "PdfViewerSearchBar", {
49
49
  enumerable: true,
50
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerSearchBar; }
50
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerSearchBar; }
51
51
  });
52
52
  Object.defineProperty(exports, "PdfViewerSidebar", {
53
53
  enumerable: true,
54
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerSidebar; }
54
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerSidebar; }
55
55
  });
56
56
  Object.defineProperty(exports, "PdfViewerToolbar", {
57
57
  enumerable: true,
58
- get: function () { return chunkIMOIQYNW_cjs.PdfViewerToolbar; }
58
+ get: function () { return chunkU6QUBJUK_cjs.PdfViewerToolbar; }
59
59
  });
60
60
  Object.defineProperty(exports, "usePdfAnnotationPortals", {
61
61
  enumerable: true,
62
- get: function () { return chunkIMOIQYNW_cjs.usePdfAnnotationPortals; }
62
+ get: function () { return chunkU6QUBJUK_cjs.usePdfAnnotationPortals; }
63
63
  });
64
64
  Object.defineProperty(exports, "usePdfAnnotationsByPage", {
65
65
  enumerable: true,
66
- get: function () { return chunkIMOIQYNW_cjs.usePdfAnnotationsByPage; }
66
+ get: function () { return chunkU6QUBJUK_cjs.usePdfAnnotationsByPage; }
67
67
  });
68
68
  Object.defineProperty(exports, "usePdfDocument", {
69
69
  enumerable: true,
70
- get: function () { return chunkIMOIQYNW_cjs.usePdfDocument; }
70
+ get: function () { return chunkU6QUBJUK_cjs.usePdfDocument; }
71
71
  });
72
72
  Object.defineProperty(exports, "usePdfFormFields", {
73
73
  enumerable: true,
74
- get: function () { return chunkIMOIQYNW_cjs.usePdfFormFields; }
74
+ get: function () { return chunkU6QUBJUK_cjs.usePdfFormFields; }
75
75
  });
76
76
  Object.defineProperty(exports, "usePdfHighlightMode", {
77
77
  enumerable: true,
78
- get: function () { return chunkIMOIQYNW_cjs.usePdfHighlightMode; }
78
+ get: function () { return chunkU6QUBJUK_cjs.usePdfHighlightMode; }
79
79
  });
80
80
  Object.defineProperty(exports, "usePdfOutline", {
81
81
  enumerable: true,
82
- get: function () { return chunkIMOIQYNW_cjs.usePdfOutline; }
82
+ get: function () { return chunkU6QUBJUK_cjs.usePdfOutline; }
83
83
  });
84
84
  Object.defineProperty(exports, "usePdfViewer", {
85
85
  enumerable: true,
86
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewer; }
86
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewer; }
87
87
  });
88
88
  Object.defineProperty(exports, "usePdfViewerContext", {
89
89
  enumerable: true,
90
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerContext; }
90
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerContext; }
91
91
  });
92
92
  Object.defineProperty(exports, "usePdfViewerCore", {
93
93
  enumerable: true,
94
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerCore; }
94
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerCore; }
95
95
  });
96
96
  Object.defineProperty(exports, "usePdfViewerInstance", {
97
97
  enumerable: true,
98
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerInstance; }
98
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerInstance; }
99
99
  });
100
100
  Object.defineProperty(exports, "usePdfViewerSearch", {
101
101
  enumerable: true,
102
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerSearch; }
102
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerSearch; }
103
103
  });
104
104
  Object.defineProperty(exports, "usePdfViewerState", {
105
105
  enumerable: true,
106
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerState; }
106
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerState; }
107
107
  });
108
108
  Object.defineProperty(exports, "usePdfViewerSync", {
109
109
  enumerable: true,
110
- get: function () { return chunkIMOIQYNW_cjs.usePdfViewerSync; }
110
+ get: function () { return chunkU6QUBJUK_cjs.usePdfViewerSync; }
111
111
  });
112
112
  Object.defineProperty(exports, "TiffRenderer", {
113
113
  enumerable: true,
@@ -115,55 +115,55 @@ Object.defineProperty(exports, "TiffRenderer", {
115
115
  });
116
116
  Object.defineProperty(exports, "ActionForm", {
117
117
  enumerable: true,
118
- get: function () { return chunkHTGC4GAZ_cjs.ActionForm; }
118
+ get: function () { return chunkO7L3KWPU_cjs.ActionForm; }
119
119
  });
120
120
  Object.defineProperty(exports, "BaseForm", {
121
121
  enumerable: true,
122
- get: function () { return chunkHTGC4GAZ_cjs.BaseForm; }
122
+ get: function () { return chunkO7L3KWPU_cjs.BaseForm; }
123
123
  });
124
124
  Object.defineProperty(exports, "BaseFilterList", {
125
125
  enumerable: true,
126
- get: function () { return chunkJWNRU2TC_cjs.BaseFilterList; }
126
+ get: function () { return chunkZGCXYPDR_cjs.BaseFilterList; }
127
127
  });
128
128
  Object.defineProperty(exports, "FilterInput", {
129
129
  enumerable: true,
130
- get: function () { return chunkJWNRU2TC_cjs.FilterInput; }
130
+ get: function () { return chunkZGCXYPDR_cjs.FilterInput; }
131
131
  });
132
132
  Object.defineProperty(exports, "FilterList", {
133
133
  enumerable: true,
134
- get: function () { return chunkJWNRU2TC_cjs.FilterList; }
134
+ get: function () { return chunkZGCXYPDR_cjs.FilterList; }
135
135
  });
136
136
  Object.defineProperty(exports, "FilterPopover", {
137
137
  enumerable: true,
138
- get: function () { return chunkJWNRU2TC_cjs.FilterPopover; }
138
+ get: function () { return chunkZGCXYPDR_cjs.FilterPopover; }
139
139
  });
140
140
  Object.defineProperty(exports, "deserializeFilterStates", {
141
141
  enumerable: true,
142
- get: function () { return chunkJWNRU2TC_cjs.deserializeFilterStates; }
142
+ get: function () { return chunkZGCXYPDR_cjs.deserializeFilterStates; }
143
143
  });
144
144
  Object.defineProperty(exports, "filterHasActiveState", {
145
145
  enumerable: true,
146
- get: function () { return chunkJWNRU2TC_cjs.filterHasActiveState; }
146
+ get: function () { return chunkZGCXYPDR_cjs.filterHasActiveState; }
147
147
  });
148
148
  Object.defineProperty(exports, "getFilterKey", {
149
149
  enumerable: true,
150
- get: function () { return chunkJWNRU2TC_cjs.getFilterKey; }
150
+ get: function () { return chunkZGCXYPDR_cjs.getFilterKey; }
151
151
  });
152
152
  Object.defineProperty(exports, "getFilterLabel", {
153
153
  enumerable: true,
154
- get: function () { return chunkJWNRU2TC_cjs.getFilterLabel; }
154
+ get: function () { return chunkZGCXYPDR_cjs.getFilterLabel; }
155
155
  });
156
156
  Object.defineProperty(exports, "serializeFilterStates", {
157
157
  enumerable: true,
158
- get: function () { return chunkJWNRU2TC_cjs.serializeFilterStates; }
158
+ get: function () { return chunkZGCXYPDR_cjs.serializeFilterStates; }
159
159
  });
160
160
  Object.defineProperty(exports, "summarizeFilterValue", {
161
161
  enumerable: true,
162
- get: function () { return chunkJWNRU2TC_cjs.summarizeFilterValue; }
162
+ get: function () { return chunkZGCXYPDR_cjs.summarizeFilterValue; }
163
163
  });
164
164
  Object.defineProperty(exports, "useFilterListState", {
165
165
  enumerable: true,
166
- get: function () { return chunkJWNRU2TC_cjs.useFilterListState; }
166
+ get: function () { return chunkZGCXYPDR_cjs.useFilterListState; }
167
167
  });
168
168
  Object.defineProperty(exports, "MarkdownRenderer", {
169
169
  enumerable: true,
@@ -171,27 +171,27 @@ Object.defineProperty(exports, "MarkdownRenderer", {
171
171
  });
172
172
  Object.defineProperty(exports, "BaseTable", {
173
173
  enumerable: true,
174
- get: function () { return chunk4MKY6RU2_cjs.BaseTable; }
174
+ get: function () { return chunkJLSIIL5M_cjs.BaseTable; }
175
175
  });
176
176
  Object.defineProperty(exports, "ColumnConfigDialog", {
177
177
  enumerable: true,
178
- get: function () { return chunk4MKY6RU2_cjs.ColumnConfigDialog; }
178
+ get: function () { return chunkJLSIIL5M_cjs.ColumnConfigDialog; }
179
179
  });
180
180
  Object.defineProperty(exports, "LoadingCell", {
181
181
  enumerable: true,
182
- get: function () { return chunk4MKY6RU2_cjs.LoadingCell; }
182
+ get: function () { return chunkJLSIIL5M_cjs.LoadingCell; }
183
183
  });
184
184
  Object.defineProperty(exports, "LoadingCellContent", {
185
185
  enumerable: true,
186
- get: function () { return chunk4MKY6RU2_cjs.LoadingCellContent; }
186
+ get: function () { return chunkJLSIIL5M_cjs.LoadingCellContent; }
187
187
  });
188
188
  Object.defineProperty(exports, "MultiColumnSortDialog", {
189
189
  enumerable: true,
190
- get: function () { return chunk4MKY6RU2_cjs.MultiColumnSortDialog; }
190
+ get: function () { return chunkJLSIIL5M_cjs.MultiColumnSortDialog; }
191
191
  });
192
192
  Object.defineProperty(exports, "ObjectTable", {
193
193
  enumerable: true,
194
- get: function () { return chunk4MKY6RU2_cjs.ObjectTable; }
194
+ get: function () { return chunkJLSIIL5M_cjs.ObjectTable; }
195
195
  });
196
196
  //# sourceMappingURL=experimental.cjs.map
197
197
  //# sourceMappingURL=experimental.cjs.map
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { useOsdkAggregation } from "@osdk/react";
17
+ import { useOsdkAggregation, useOsdkMetadata } from "@osdk/react";
18
18
  import React, { memo, useCallback, useMemo } from "react";
19
19
  import { NullValueWrapper } from "../base/inputs/NullValueWrapper.js";
20
20
  import { NumberRangeInput } from "../base/inputs/NumberRangeInput.js";
@@ -30,6 +30,11 @@ function NumberRangeFilterInputInner({
30
30
  }) {
31
31
  const numberRangeState = filterState?.type === "NUMBER_RANGE" ? filterState : undefined;
32
32
  const includeNull = filterState?.includeNull;
33
+ const {
34
+ metadata
35
+ } = useOsdkMetadata(objectType);
36
+ const propertyType = metadata?.properties?.[propertyKey]?.type;
37
+ const isInteger = propertyType === "integer" || propertyType === "long" || propertyType === "short" || propertyType === "byte";
33
38
  const handleNullChange = useCallback(includeNull => {
34
39
  onFilterStateChanged({
35
40
  type: "NUMBER_RANGE",
@@ -41,11 +46,11 @@ function NumberRangeFilterInputInner({
41
46
  const handleRangeChange = useCallback((minValue, maxValue) => {
42
47
  onFilterStateChanged({
43
48
  type: "NUMBER_RANGE",
44
- minValue,
45
- maxValue,
49
+ minValue: (v => isInteger && v !== undefined ? Math.ceil(v) : v)(minValue),
50
+ maxValue: (v => isInteger && v !== undefined ? Math.floor(v) : v)(maxValue),
46
51
  includeNull
47
52
  });
48
- }, [onFilterStateChanged, includeNull]);
53
+ }, [onFilterStateChanged, includeNull, isInteger]);
49
54
  const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);
50
55
  const histogramArgs = useMemo(() => ({
51
56
  aggregate: aggregateOptions,
@@ -111,7 +116,7 @@ function NumberRangeFilterInputInner({
111
116
  minValue: numberRangeState?.minValue,
112
117
  maxValue: numberRangeState?.maxValue,
113
118
  onChange: handleRangeChange,
114
- clickToFilter: clickToFilter
119
+ clickToFilter: clickToFilter && metadata != null
115
120
  }));
116
121
  }
117
122
  export const NumberRangeFilterInput = /*#__PURE__*/memo(NumberRangeFilterInputInner);
@@ -1 +1 @@
1
- {"version":3,"file":"NumberRangeFilterInput.js","names":["useOsdkAggregation","React","memo","useCallback","useMemo","NullValueWrapper","NumberRangeInput","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","NumberRangeFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","clickToFilter","numberRangeState","type","undefined","includeNull","handleNullChange","minValue","maxValue","handleRangeChange","aggregateOptions","histogramArgs","aggregate","where","data","aggregateData","isLoading","histLoading","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","String","isNaN","push","value","count","$count","nullCountAggregateOptions","nullCountWhereClause","$and","nullCountArgs","nullCountData","nullLoading","error","nullError","nullCount","result","createElement","onIncludeNullChange","onChange","NumberRangeFilterInput"],"sources":["NumberRangeFilterInput.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\n\ninterface NumberRangeFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet?: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n clickToFilter?: boolean;\n}\n\nfunction NumberRangeFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n clickToFilter,\n}: NumberRangeFilterInputProps<Q>): React.ReactElement {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\"\n ? filterState\n : undefined;\n const includeNull = filterState?.includeNull;\n\n const handleNullChange = useCallback(\n (includeNull: boolean) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull,\n });\n },\n [\n onFilterStateChanged,\n numberRangeState?.minValue,\n numberRangeState?.maxValue,\n ],\n );\n\n const handleRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [onFilterStateChanged, includeNull],\n );\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions, objectSet, where: whereClause }),\n [aggregateOptions, objectSet, whereClause],\n );\n\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\n\n const valueCountPairs = useMemo<Array<{ value: number; count: number }>>(\n () => {\n if (!aggregateData) return [];\n const dataArray = aggregateData as Iterable<{\n $group: Record<string, unknown>;\n $count?: number;\n }>;\n const pairs: Array<{ value: number; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({ value: parsed, count: item.$count ?? 0 });\n }\n }\n }\n return pairs;\n },\n [aggregateData, propertyKey],\n );\n\n const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n // Combine null-check with cross-filter where clause so the null count\n // reflects the filtered dataset, not the full dataset\n const nullCountWhereClause = useMemo(\n () =>\n ({\n $and: [createNullWhereClause<Q>(propertyKey), whereClause],\n }) as WhereClause<Q>,\n [propertyKey, whereClause],\n );\n\n const nullCountArgs = useMemo(\n () => ({\n where: nullCountWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet,\n }),\n [nullCountWhereClause, nullCountAggregateOptions, objectSet],\n );\n\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError,\n } = useOsdkAggregation(\n objectType,\n nullCountArgs,\n );\n\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData as { $count?: number } | Iterable<unknown>;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n\n const isLoading = histLoading || nullLoading;\n\n return (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={isLoading}\n error={nullError}\n includeNull={includeNull}\n onIncludeNullChange={handleNullChange}\n >\n <NumberRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={isLoading}\n minValue={numberRangeState?.minValue}\n maxValue={numberRangeState?.maxValue}\n onChange={handleRangeChange}\n clickToFilter={clickToFilter}\n />\n </NullValueWrapper>\n );\n}\n\nexport const NumberRangeFilterInput: typeof NumberRangeFilterInputInner = memo(\n NumberRangeFilterInputInner,\n) as typeof NumberRangeFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NumberRangeFilterInput.js","names":["useOsdkAggregation","useOsdkMetadata","React","memo","useCallback","useMemo","NullValueWrapper","NumberRangeInput","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","NumberRangeFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","clickToFilter","numberRangeState","type","undefined","includeNull","metadata","propertyType","properties","isInteger","handleNullChange","minValue","maxValue","handleRangeChange","v","Math","ceil","floor","aggregateOptions","histogramArgs","aggregate","where","data","aggregateData","isLoading","histLoading","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","String","isNaN","push","value","count","$count","nullCountAggregateOptions","nullCountWhereClause","$and","nullCountArgs","nullCountData","nullLoading","error","nullError","nullCount","result","createElement","onIncludeNullChange","onChange","NumberRangeFilterInput"],"sources":["NumberRangeFilterInput.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport { useOsdkAggregation, useOsdkMetadata } from \"@osdk/react\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\n\ninterface NumberRangeFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet?: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n clickToFilter?: boolean;\n}\n\nfunction NumberRangeFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n clickToFilter,\n}: NumberRangeFilterInputProps<Q>): React.ReactElement {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\"\n ? filterState\n : undefined;\n const includeNull = filterState?.includeNull;\n\n const { metadata } = useOsdkMetadata(objectType);\n const propertyType = metadata?.properties?.[propertyKey]?.type;\n const isInteger = propertyType === \"integer\"\n || propertyType === \"long\"\n || propertyType === \"short\"\n || propertyType === \"byte\";\n\n const handleNullChange = useCallback(\n (includeNull: boolean) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull,\n });\n },\n [\n onFilterStateChanged,\n numberRangeState?.minValue,\n numberRangeState?.maxValue,\n ],\n );\n\n const handleRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n const coerceMin = (v: number | undefined): number | undefined =>\n isInteger && v !== undefined ? Math.ceil(v) : v;\n const coerceMax = (v: number | undefined): number | undefined =>\n isInteger && v !== undefined ? Math.floor(v) : v;\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: coerceMin(minValue),\n maxValue: coerceMax(maxValue),\n includeNull,\n });\n },\n [onFilterStateChanged, includeNull, isInteger],\n );\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions, objectSet, where: whereClause }),\n [aggregateOptions, objectSet, whereClause],\n );\n\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\n\n const valueCountPairs = useMemo<Array<{ value: number; count: number }>>(\n () => {\n if (!aggregateData) return [];\n const dataArray = aggregateData as Iterable<{\n $group: Record<string, unknown>;\n $count?: number;\n }>;\n const pairs: Array<{ value: number; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({ value: parsed, count: item.$count ?? 0 });\n }\n }\n }\n return pairs;\n },\n [aggregateData, propertyKey],\n );\n\n const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n // Combine null-check with cross-filter where clause so the null count\n // reflects the filtered dataset, not the full dataset\n const nullCountWhereClause = useMemo(\n () =>\n ({\n $and: [createNullWhereClause<Q>(propertyKey), whereClause],\n }) as WhereClause<Q>,\n [propertyKey, whereClause],\n );\n\n const nullCountArgs = useMemo(\n () => ({\n where: nullCountWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet,\n }),\n [nullCountWhereClause, nullCountAggregateOptions, objectSet],\n );\n\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError,\n } = useOsdkAggregation(\n objectType,\n nullCountArgs,\n );\n\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData as { $count?: number } | Iterable<unknown>;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n\n const isLoading = histLoading || nullLoading;\n\n return (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={isLoading}\n error={nullError}\n includeNull={includeNull}\n onIncludeNullChange={handleNullChange}\n >\n <NumberRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={isLoading}\n minValue={numberRangeState?.minValue}\n maxValue={numberRangeState?.maxValue}\n onChange={handleRangeChange}\n clickToFilter={clickToFilter && metadata != null}\n />\n </NullValueWrapper>\n );\n}\n\nexport const NumberRangeFilterInput: typeof NumberRangeFilterInputInner = memo(\n NumberRangeFilterInputInner,\n) as typeof NumberRangeFilterInputInner;\n"],"mappings":"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","ignoreList":[]}