@optimum-intelligence/opti-ui 0.0.0-stage → 0.3.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 (193) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +244 -2
  3. package/dist/components/accordion/Accordion.d.ts +17 -0
  4. package/dist/components/accordion/Accordion.js +204 -0
  5. package/dist/components/accordion/Accordion.js.map +1 -0
  6. package/dist/components/alert/Alert.d.ts +18 -0
  7. package/dist/components/alert/Alert.js +164 -0
  8. package/dist/components/alert/Alert.js.map +1 -0
  9. package/dist/components/app-shell/AppShell.d.ts +97 -0
  10. package/dist/components/app-shell/AppShell.js +689 -0
  11. package/dist/components/app-shell/AppShell.js.map +1 -0
  12. package/dist/components/avatar/Avatar.d.ts +21 -0
  13. package/dist/components/avatar/Avatar.js +190 -0
  14. package/dist/components/avatar/Avatar.js.map +1 -0
  15. package/dist/components/badge/Badge.d.ts +16 -0
  16. package/dist/components/badge/Badge.js +94 -0
  17. package/dist/components/badge/Badge.js.map +1 -0
  18. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +18 -0
  19. package/dist/components/breadcrumbs/Breadcrumbs.js +154 -0
  20. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
  21. package/dist/components/button/Button.d.ts +23 -0
  22. package/dist/components/button/Button.js +159 -0
  23. package/dist/components/button/Button.js.map +1 -0
  24. package/dist/components/calendar/Calendar.d.ts +59 -0
  25. package/dist/components/calendar/Calendar.js +709 -0
  26. package/dist/components/calendar/Calendar.js.map +1 -0
  27. package/dist/components/calendar/date-utils.d.ts +32 -0
  28. package/dist/components/calendar/date-utils.js +112 -0
  29. package/dist/components/calendar/date-utils.js.map +1 -0
  30. package/dist/components/card/Card.d.ts +42 -0
  31. package/dist/components/card/Card.js +82 -0
  32. package/dist/components/card/Card.js.map +1 -0
  33. package/dist/components/choice/Choice.d.ts +32 -0
  34. package/dist/components/choice/Choice.js +371 -0
  35. package/dist/components/choice/Choice.js.map +1 -0
  36. package/dist/components/collapsible/Collapsible.d.ts +15 -0
  37. package/dist/components/collapsible/Collapsible.js +155 -0
  38. package/dist/components/collapsible/Collapsible.js.map +1 -0
  39. package/dist/components/combobox/Combobox.d.ts +68 -0
  40. package/dist/components/combobox/Combobox.js +752 -0
  41. package/dist/components/combobox/Combobox.js.map +1 -0
  42. package/dist/components/command-palette/CommandPalette.d.ts +52 -0
  43. package/dist/components/command-palette/CommandPalette.js +328 -0
  44. package/dist/components/command-palette/CommandPalette.js.map +1 -0
  45. package/dist/components/data-table/DataTable.d.ts +73 -0
  46. package/dist/components/data-table/DataTable.js +478 -0
  47. package/dist/components/data-table/DataTable.js.map +1 -0
  48. package/dist/components/data-table/DataTableContent.d.ts +35 -0
  49. package/dist/components/data-table/DataTableContent.js +550 -0
  50. package/dist/components/data-table/DataTableContent.js.map +1 -0
  51. package/dist/components/data-table/DataTableFilters.d.ts +15 -0
  52. package/dist/components/data-table/DataTableFilters.js +284 -0
  53. package/dist/components/data-table/DataTableFilters.js.map +1 -0
  54. package/dist/components/data-table/DataTableRow.d.ts +33 -0
  55. package/dist/components/data-table/DataTableRow.js +552 -0
  56. package/dist/components/data-table/DataTableRow.js.map +1 -0
  57. package/dist/components/data-table/context.d.ts +5 -0
  58. package/dist/components/data-table/context.js +14 -0
  59. package/dist/components/data-table/context.js.map +1 -0
  60. package/dist/components/data-table/layout.d.ts +60 -0
  61. package/dist/components/data-table/layout.js +272 -0
  62. package/dist/components/data-table/layout.js.map +1 -0
  63. package/dist/components/data-table/types.d.ts +319 -0
  64. package/dist/components/data-table/useDataTable.d.ts +9 -0
  65. package/dist/components/data-table/useDataTable.js +666 -0
  66. package/dist/components/data-table/useDataTable.js.map +1 -0
  67. package/dist/components/date-picker/DatePicker.d.ts +50 -0
  68. package/dist/components/date-picker/DatePicker.js +485 -0
  69. package/dist/components/date-picker/DatePicker.js.map +1 -0
  70. package/dist/components/date-picker/DateRangePicker.d.ts +39 -0
  71. package/dist/components/date-picker/DateRangePicker.js +339 -0
  72. package/dist/components/date-picker/DateRangePicker.js.map +1 -0
  73. package/dist/components/date-picker/PickerField.d.ts +38 -0
  74. package/dist/components/date-picker/PickerField.js +238 -0
  75. package/dist/components/date-picker/PickerField.js.map +1 -0
  76. package/dist/components/dialog/Dialog.d.ts +70 -0
  77. package/dist/components/dialog/Dialog.js +354 -0
  78. package/dist/components/dialog/Dialog.js.map +1 -0
  79. package/dist/components/drawer/Drawer.d.ts +39 -0
  80. package/dist/components/drawer/Drawer.js +225 -0
  81. package/dist/components/drawer/Drawer.js.map +1 -0
  82. package/dist/components/empty-state/EmptyState.d.ts +12 -0
  83. package/dist/components/empty-state/EmptyState.js +116 -0
  84. package/dist/components/empty-state/EmptyState.js.map +1 -0
  85. package/dist/components/field/Field.d.ts +36 -0
  86. package/dist/components/field/Field.js +337 -0
  87. package/dist/components/field/Field.js.map +1 -0
  88. package/dist/components/file-upload/FileUpload.d.ts +91 -0
  89. package/dist/components/file-upload/FileUpload.js +714 -0
  90. package/dist/components/file-upload/FileUpload.js.map +1 -0
  91. package/dist/components/input/Input.d.ts +49 -0
  92. package/dist/components/input/Input.js +538 -0
  93. package/dist/components/input/Input.js.map +1 -0
  94. package/dist/components/link/Link.d.ts +17 -0
  95. package/dist/components/link/Link.js +91 -0
  96. package/dist/components/link/Link.js.map +1 -0
  97. package/dist/components/menu/Menu.d.ts +79 -0
  98. package/dist/components/menu/Menu.js +615 -0
  99. package/dist/components/menu/Menu.js.map +1 -0
  100. package/dist/components/number-field/NumberField.d.ts +16 -0
  101. package/dist/components/number-field/NumberField.js +188 -0
  102. package/dist/components/number-field/NumberField.js.map +1 -0
  103. package/dist/components/pagination/Pagination.d.ts +34 -0
  104. package/dist/components/pagination/Pagination.js +244 -0
  105. package/dist/components/pagination/Pagination.js.map +1 -0
  106. package/dist/components/popover/Popover.d.ts +22 -0
  107. package/dist/components/popover/Popover.js +186 -0
  108. package/dist/components/popover/Popover.js.map +1 -0
  109. package/dist/components/preview-card/PreviewCard.d.ts +20 -0
  110. package/dist/components/preview-card/PreviewCard.js +114 -0
  111. package/dist/components/preview-card/PreviewCard.js.map +1 -0
  112. package/dist/components/progress/Progress.d.ts +20 -0
  113. package/dist/components/progress/Progress.js +169 -0
  114. package/dist/components/progress/Progress.js.map +1 -0
  115. package/dist/components/scroll-area/ScrollArea.d.ts +8 -0
  116. package/dist/components/scroll-area/ScrollArea.js +112 -0
  117. package/dist/components/scroll-area/ScrollArea.js.map +1 -0
  118. package/dist/components/search-input/SearchInput.d.ts +14 -0
  119. package/dist/components/search-input/SearchInput.js +114 -0
  120. package/dist/components/search-input/SearchInput.js.map +1 -0
  121. package/dist/components/select/Select.d.ts +66 -0
  122. package/dist/components/select/Select.js +601 -0
  123. package/dist/components/select/Select.js.map +1 -0
  124. package/dist/components/separator/Separator.d.ts +4 -0
  125. package/dist/components/separator/Separator.js +46 -0
  126. package/dist/components/separator/Separator.js.map +1 -0
  127. package/dist/components/skeleton/Skeleton.d.ts +16 -0
  128. package/dist/components/skeleton/Skeleton.js +135 -0
  129. package/dist/components/skeleton/Skeleton.js.map +1 -0
  130. package/dist/components/slider/Slider.d.ts +11 -0
  131. package/dist/components/slider/Slider.js +107 -0
  132. package/dist/components/slider/Slider.js.map +1 -0
  133. package/dist/components/spinner/Spinner.d.ts +9 -0
  134. package/dist/components/spinner/Spinner.js +78 -0
  135. package/dist/components/spinner/Spinner.js.map +1 -0
  136. package/dist/components/stack/Stack.d.ts +23 -0
  137. package/dist/components/stack/Stack.js +79 -0
  138. package/dist/components/stack/Stack.js.map +1 -0
  139. package/dist/components/stat-card/StatCard.d.ts +22 -0
  140. package/dist/components/stat-card/StatCard.js +153 -0
  141. package/dist/components/stat-card/StatCard.js.map +1 -0
  142. package/dist/components/stepper/Stepper.d.ts +30 -0
  143. package/dist/components/stepper/Stepper.js +131 -0
  144. package/dist/components/stepper/Stepper.js.map +1 -0
  145. package/dist/components/table/Table.d.ts +53 -0
  146. package/dist/components/table/Table.js +221 -0
  147. package/dist/components/table/Table.js.map +1 -0
  148. package/dist/components/tabs/Tabs.d.ts +19 -0
  149. package/dist/components/tabs/Tabs.js +183 -0
  150. package/dist/components/tabs/Tabs.js.map +1 -0
  151. package/dist/components/tag/Tag.d.ts +22 -0
  152. package/dist/components/tag/Tag.js +121 -0
  153. package/dist/components/tag/Tag.js.map +1 -0
  154. package/dist/components/toast/Toast.d.ts +34 -0
  155. package/dist/components/toast/Toast.js +187 -0
  156. package/dist/components/toast/Toast.js.map +1 -0
  157. package/dist/components/toggle/Toggle.d.ts +31 -0
  158. package/dist/components/toggle/Toggle.js +197 -0
  159. package/dist/components/toggle/Toggle.js.map +1 -0
  160. package/dist/components/toolbar/Toolbar.d.ts +21 -0
  161. package/dist/components/toolbar/Toolbar.js +239 -0
  162. package/dist/components/toolbar/Toolbar.js.map +1 -0
  163. package/dist/components/tooltip/Tooltip.d.ts +33 -0
  164. package/dist/components/tooltip/Tooltip.js +182 -0
  165. package/dist/components/tooltip/Tooltip.js.map +1 -0
  166. package/dist/components/typography/Typography.d.ts +32 -0
  167. package/dist/components/typography/Typography.js +183 -0
  168. package/dist/components/typography/Typography.js.map +1 -0
  169. package/dist/fonts.css +3 -0
  170. package/dist/icons/index.d.ts +133 -0
  171. package/dist/icons/index.js +182 -0
  172. package/dist/icons/index.js.map +1 -0
  173. package/dist/index.d.ts +55 -0
  174. package/dist/index.js +58 -0
  175. package/dist/opti-ui.css +5692 -0
  176. package/dist/theme/ThemeProvider.d.ts +22 -0
  177. package/dist/theme/ThemeProvider.js +115 -0
  178. package/dist/theme/ThemeProvider.js.map +1 -0
  179. package/dist/theme/index.d.ts +2 -0
  180. package/dist/utils/cx.d.ts +10 -0
  181. package/dist/utils/cx.js +18 -0
  182. package/dist/utils/cx.js.map +1 -0
  183. package/dist/utils/index.d.ts +2 -0
  184. package/dist/utils/portal.d.ts +8 -0
  185. package/dist/utils/portal.js +16 -0
  186. package/dist/utils/portal.js.map +1 -0
  187. package/dist/utils/primitive.d.ts +13 -0
  188. package/dist/utils/primitive.js +61 -0
  189. package/dist/utils/primitive.js.map +1 -0
  190. package/dist/utils/search.d.ts +4 -0
  191. package/dist/utils/search.js +15 -0
  192. package/dist/utils/search.js.map +1 -0
  193. package/package.json +71 -4
@@ -0,0 +1,552 @@
1
+ "use client";
2
+ import { CheckIcon, PencilIcon, TrashIcon, XIcon } from "../../icons/index.js";
3
+ import { IconButton } from "../button/Button.js";
4
+ import { Input } from "../input/Input.js";
5
+ import { Select } from "../select/Select.js";
6
+ import { Checkbox } from "../choice/Choice.js";
7
+ import { Tooltip } from "../tooltip/Tooltip.js";
8
+ import { TableCell, TableRow } from "../table/Table.js";
9
+ import { getColumnValue } from "./useDataTable.js";
10
+ import { c } from "react/compiler-runtime";
11
+ import * as React from "react";
12
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
+ //#region src/components/data-table/DataTableRow.tsx
14
+ var INTERACTIVE = "a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"combobox\"]";
15
+ function isEmpty(value) {
16
+ return value === null || value === void 0 || value === "";
17
+ }
18
+ function labelOf(column) {
19
+ return column.label ?? (typeof column.header === "string" ? column.header : column.id);
20
+ }
21
+ function editOf(column) {
22
+ if (!column.edit) return null;
23
+ const config = typeof column.edit === "string" ? { type: column.edit } : column.edit;
24
+ return {
25
+ ...config,
26
+ field: config.field ?? column.id
27
+ };
28
+ }
29
+ /** Whether the column's editor is the built-in text input, which takes the focus when editing starts. */
30
+ function isTextEditor(column) {
31
+ const edit = editOf(column);
32
+ return edit !== null && !edit.render && (edit.type ?? "text") === "text";
33
+ }
34
+ function isAction(item) {
35
+ return typeof item === "object" && item !== null && !React.isValidElement(item) && "label" in item && "icon" in item;
36
+ }
37
+ /** What a cell shows outside editing: the column's `cell`, or its value as text. */
38
+ function cellContent(column, row) {
39
+ if (column.cell) return column.cell(row);
40
+ const value = getColumnValue(column, row);
41
+ if (React.isValidElement(value)) return value;
42
+ return isEmpty(value) ? "—" : String(value);
43
+ }
44
+ function ActionButton(t0) {
45
+ const $ = c(13);
46
+ let danger;
47
+ let icon;
48
+ let label;
49
+ let props;
50
+ if ($[0] !== t0) {
51
+ ({label, icon, danger, ...props} = t0);
52
+ $[0] = t0;
53
+ $[1] = danger;
54
+ $[2] = icon;
55
+ $[3] = label;
56
+ $[4] = props;
57
+ } else {
58
+ danger = $[1];
59
+ icon = $[2];
60
+ label = $[3];
61
+ props = $[4];
62
+ }
63
+ const t1 = danger ? "" : void 0;
64
+ let t2;
65
+ if ($[5] !== icon || $[6] !== label || $[7] !== props || $[8] !== t1) {
66
+ t2 = /* @__PURE__ */ jsx(IconButton, {
67
+ size: "sm",
68
+ className: "oui-data-table__action",
69
+ "aria-label": label,
70
+ "data-danger": t1,
71
+ ...props,
72
+ children: icon
73
+ });
74
+ $[5] = icon;
75
+ $[6] = label;
76
+ $[7] = props;
77
+ $[8] = t1;
78
+ $[9] = t2;
79
+ } else t2 = $[9];
80
+ let t3;
81
+ if ($[10] !== label || $[11] !== t2) {
82
+ t3 = /* @__PURE__ */ jsx(Tooltip, {
83
+ content: label,
84
+ children: t2
85
+ });
86
+ $[10] = label;
87
+ $[11] = t2;
88
+ $[12] = t3;
89
+ } else t3 = $[12];
90
+ return t3;
91
+ }
92
+ function Editor(t0) {
93
+ const $ = c(16);
94
+ const { table, column, edit, row, autoFocus } = t0;
95
+ let t1;
96
+ let t2;
97
+ if ($[0] !== autoFocus || $[1] !== column || $[2] !== edit || $[3] !== row || $[4] !== table) {
98
+ t2 = Symbol.for("react.early_return_sentinel");
99
+ bb0: {
100
+ const value = table.editValue(row, edit.field);
101
+ let t3;
102
+ if ($[7] !== edit.field || $[8] !== table) {
103
+ t3 = (next) => table.setEditValue(edit.field, next);
104
+ $[7] = edit.field;
105
+ $[8] = table;
106
+ $[9] = t3;
107
+ } else t3 = $[9];
108
+ const setValue = t3;
109
+ const disabled = table.saving;
110
+ let t4;
111
+ if ($[10] !== column) {
112
+ t4 = labelOf(column);
113
+ $[10] = column;
114
+ $[11] = t4;
115
+ } else t4 = $[11];
116
+ const label = t4;
117
+ if (edit.render) {
118
+ t2 = edit.render({
119
+ row,
120
+ value,
121
+ setValue,
122
+ disabled
123
+ });
124
+ break bb0;
125
+ }
126
+ if (edit.type === "checkbox") {
127
+ t2 = /* @__PURE__ */ jsx(Checkbox, {
128
+ size: "sm",
129
+ "aria-label": label,
130
+ checked: Boolean(value),
131
+ disabled,
132
+ onCheckedChange: setValue
133
+ });
134
+ break bb0;
135
+ }
136
+ if (edit.type === "select") {
137
+ let t5;
138
+ if ($[12] !== edit.options) {
139
+ t5 = edit.options ?? [];
140
+ $[12] = edit.options;
141
+ $[13] = t5;
142
+ } else t5 = $[13];
143
+ let t6;
144
+ if ($[14] !== label) {
145
+ t6 = { "aria-label": label };
146
+ $[14] = label;
147
+ $[15] = t6;
148
+ } else t6 = $[15];
149
+ t2 = /* @__PURE__ */ jsx(Select, {
150
+ size: "sm",
151
+ items: t5,
152
+ value: isEmpty(value) ? null : String(value),
153
+ onValueChange: setValue,
154
+ disabled,
155
+ triggerProps: t6
156
+ });
157
+ break bb0;
158
+ }
159
+ t1 = /* @__PURE__ */ jsx(Input, {
160
+ size: "sm",
161
+ "aria-label": label,
162
+ autoFocus,
163
+ disabled,
164
+ ...edit.inputProps,
165
+ value: isEmpty(value) ? "" : String(value),
166
+ onValueChange: setValue
167
+ });
168
+ }
169
+ $[0] = autoFocus;
170
+ $[1] = column;
171
+ $[2] = edit;
172
+ $[3] = row;
173
+ $[4] = table;
174
+ $[5] = t1;
175
+ $[6] = t2;
176
+ } else {
177
+ t1 = $[5];
178
+ t2 = $[6];
179
+ }
180
+ if (t2 !== Symbol.for("react.early_return_sentinel")) return t2;
181
+ return t1;
182
+ }
183
+ /** Trailing cell of a row: its own actions, then edit and delete; save and cancel while it is edited. */
184
+ function RowActions(t0) {
185
+ const $ = c(21);
186
+ const { table, entry: t1, onEdit } = t0;
187
+ const { row, id } = t1;
188
+ const text = table.labels;
189
+ const editing = table.editingId === id;
190
+ let T0;
191
+ let t2;
192
+ let t3;
193
+ let t4;
194
+ let t5;
195
+ if ($[0] !== editing || $[1] !== id || $[2] !== onEdit || $[3] !== row || $[4] !== table || $[5] !== text) {
196
+ const actions = table.rowActions?.(row);
197
+ const slots = table.editable ? table.deletable ? 3 : 2 : 0;
198
+ T0 = TableCell;
199
+ t5 = "oui-data-table__row-actions";
200
+ t2 = "oui-data-table__row-actions-list";
201
+ if ($[11] !== slots) {
202
+ t3 = slots ? { minWidth: `calc(${slots} * var(--oui-control-height-sm) + ${(slots - 1) * .125}rem)` } : void 0;
203
+ $[11] = slots;
204
+ $[12] = t3;
205
+ } else t3 = $[12];
206
+ t4 = editing ? /* @__PURE__ */ jsxs(Fragment, { children: [
207
+ /* @__PURE__ */ jsx(ActionButton, {
208
+ label: text.save,
209
+ icon: /* @__PURE__ */ jsx(CheckIcon, {}),
210
+ loading: table.saving,
211
+ onClick: table.saveEdit
212
+ }),
213
+ table.deletable && /* @__PURE__ */ jsx(ActionButton, {
214
+ label: text.delete,
215
+ icon: /* @__PURE__ */ jsx(TrashIcon, {}),
216
+ danger: true,
217
+ disabled: table.saving,
218
+ onClick: () => table.deleteRow(row)
219
+ }),
220
+ /* @__PURE__ */ jsx(ActionButton, {
221
+ label: text.cancel,
222
+ icon: /* @__PURE__ */ jsx(XIcon, {}),
223
+ disabled: table.saving,
224
+ onClick: table.cancelEdit
225
+ })
226
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
227
+ (Array.isArray(actions) ? actions : [actions]).map(_temp),
228
+ table.editable && /* @__PURE__ */ jsx(ActionButton, {
229
+ label: text.edit,
230
+ icon: /* @__PURE__ */ jsx(PencilIcon, {}),
231
+ disabled: table.saving,
232
+ onClick: (event) => {
233
+ onEdit?.(event.currentTarget);
234
+ table.startEdit(id);
235
+ }
236
+ }),
237
+ table.deletable && !table.editable && /* @__PURE__ */ jsx(ActionButton, {
238
+ label: text.delete,
239
+ icon: /* @__PURE__ */ jsx(TrashIcon, {}),
240
+ danger: true,
241
+ onClick: () => table.deleteRow(row)
242
+ })
243
+ ] });
244
+ $[0] = editing;
245
+ $[1] = id;
246
+ $[2] = onEdit;
247
+ $[3] = row;
248
+ $[4] = table;
249
+ $[5] = text;
250
+ $[6] = T0;
251
+ $[7] = t2;
252
+ $[8] = t3;
253
+ $[9] = t4;
254
+ $[10] = t5;
255
+ } else {
256
+ T0 = $[6];
257
+ t2 = $[7];
258
+ t3 = $[8];
259
+ t4 = $[9];
260
+ t5 = $[10];
261
+ }
262
+ let t6;
263
+ if ($[13] !== t2 || $[14] !== t3 || $[15] !== t4) {
264
+ t6 = /* @__PURE__ */ jsx("div", {
265
+ className: t2,
266
+ style: t3,
267
+ children: t4
268
+ });
269
+ $[13] = t2;
270
+ $[14] = t3;
271
+ $[15] = t4;
272
+ $[16] = t6;
273
+ } else t6 = $[16];
274
+ let t7;
275
+ if ($[17] !== T0 || $[18] !== t5 || $[19] !== t6) {
276
+ t7 = /* @__PURE__ */ jsx(T0, {
277
+ className: t5,
278
+ children: t6
279
+ });
280
+ $[17] = T0;
281
+ $[18] = t5;
282
+ $[19] = t6;
283
+ $[20] = t7;
284
+ } else t7 = $[20];
285
+ return t7;
286
+ }
287
+ function _temp(item, index) {
288
+ return isAction(item) ? /* @__PURE__ */ jsx(ActionButton, {
289
+ label: item.label,
290
+ icon: item.icon,
291
+ danger: item.danger,
292
+ disabled: item.disabled,
293
+ onClick: item.onClick
294
+ }, item.label) : /* @__PURE__ */ jsx(React.Fragment, { children: item }, index);
295
+ }
296
+ function Row(t0) {
297
+ const $ = c(63);
298
+ const { table, entry, columns, hasActions, focused, index, height } = t0;
299
+ const { row, id } = entry;
300
+ const editing = table.editingId === id;
301
+ const virtual = index !== void 0;
302
+ const [editHeight, setEditHeight] = React.useState();
303
+ const onRowClick = editing ? void 0 : table.onRowClick;
304
+ let t1;
305
+ if ($[0] !== row || $[1] !== table) {
306
+ t1 = table.rowProps?.(row);
307
+ $[0] = row;
308
+ $[1] = table;
309
+ $[2] = t1;
310
+ } else t1 = $[2];
311
+ const extra = t1;
312
+ const held = height ?? (editing ? editHeight : void 0);
313
+ let t2;
314
+ if ($[3] !== extra?.style || $[4] !== held) {
315
+ t2 = held !== void 0 ? {
316
+ height: held,
317
+ ...extra?.style
318
+ } : extra?.style;
319
+ $[3] = extra?.style;
320
+ $[4] = held;
321
+ $[5] = t2;
322
+ } else t2 = $[5];
323
+ const t3 = virtual ? index + 2 : void 0;
324
+ let t4;
325
+ if ($[6] !== id || $[7] !== table) {
326
+ t4 = table.isSelected(id) || void 0;
327
+ $[6] = id;
328
+ $[7] = table;
329
+ $[8] = t4;
330
+ } else t4 = $[8];
331
+ const t5 = onRowClick ? "" : void 0;
332
+ const t6 = editing ? "" : void 0;
333
+ let t7;
334
+ if ($[9] !== row || $[10] !== table) {
335
+ t7 = table.rowTone?.(row) ?? void 0;
336
+ $[9] = row;
337
+ $[10] = table;
338
+ $[11] = t7;
339
+ } else t7 = $[11];
340
+ const t8 = onRowClick ? 0 : extra?.tabIndex;
341
+ let t9;
342
+ if ($[12] !== extra || $[13] !== onRowClick || $[14] !== row || $[15] !== table) {
343
+ t9 = onRowClick ? table.rowLabel?.(row) : extra?.["aria-label"];
344
+ $[12] = extra;
345
+ $[13] = onRowClick;
346
+ $[14] = row;
347
+ $[15] = table;
348
+ $[16] = t9;
349
+ } else t9 = $[16];
350
+ let t10;
351
+ if ($[17] !== extra || $[18] !== onRowClick || $[19] !== row) {
352
+ t10 = (event) => {
353
+ extra?.onClick?.(event);
354
+ if (!onRowClick || event.ctrlKey || event.metaKey) return;
355
+ if (event.target.closest(INTERACTIVE)) return;
356
+ onRowClick(row);
357
+ };
358
+ $[17] = extra;
359
+ $[18] = onRowClick;
360
+ $[19] = row;
361
+ $[20] = t10;
362
+ } else t10 = $[20];
363
+ let t11;
364
+ if ($[21] !== editing || $[22] !== extra || $[23] !== onRowClick || $[24] !== row || $[25] !== table) {
365
+ t11 = (event_0) => {
366
+ extra?.onKeyDown?.(event_0);
367
+ if (onRowClick && event_0.target === event_0.currentTarget && event_0.key === "Enter") onRowClick(row);
368
+ if (!editing || !event_0.currentTarget.contains(event_0.target)) return;
369
+ if (event_0.key === "Escape") table.cancelEdit();
370
+ if (event_0.key === "Enter" && event_0.target.tagName === "INPUT") table.saveEdit();
371
+ };
372
+ $[21] = editing;
373
+ $[22] = extra;
374
+ $[23] = onRowClick;
375
+ $[24] = row;
376
+ $[25] = table;
377
+ $[26] = t11;
378
+ } else t11 = $[26];
379
+ let t12;
380
+ if ($[27] !== id || $[28] !== row || $[29] !== table) {
381
+ t12 = table.selectable && /* @__PURE__ */ jsx(TableCell, {
382
+ className: "oui-data-table__check",
383
+ children: /* @__PURE__ */ jsx(Checkbox, {
384
+ size: "sm",
385
+ "aria-label": table.labels.selectRow(table.rowLabel?.(row) ?? id),
386
+ checked: table.isSelected(id),
387
+ onCheckedChange: (checked) => table.toggleRow(id, checked)
388
+ })
389
+ });
390
+ $[27] = id;
391
+ $[28] = row;
392
+ $[29] = table;
393
+ $[30] = t12;
394
+ } else t12 = $[30];
395
+ let t13;
396
+ if ($[31] !== columns || $[32] !== editing || $[33] !== focused || $[34] !== row || $[35] !== table || $[36] !== virtual) {
397
+ let t14;
398
+ if ($[38] !== editing || $[39] !== focused || $[40] !== row || $[41] !== table || $[42] !== virtual) {
399
+ t14 = (column) => {
400
+ const edit = editing ? editOf(column) : null;
401
+ const className = typeof column.cellClassName === "function" ? column.cellClassName(row) : column.cellClassName;
402
+ const value = getColumnValue(column, row);
403
+ const title = (column.truncate || virtual) && !edit && (typeof value === "string" || typeof value === "number");
404
+ return /* @__PURE__ */ jsx(TableCell, {
405
+ align: column.align,
406
+ numeric: column.numeric,
407
+ className,
408
+ title: title ? String(value) : void 0,
409
+ "data-mono": column.mono || void 0,
410
+ "data-muted": column.muted || void 0,
411
+ "data-truncate": column.truncate && !edit || void 0,
412
+ "data-editor": edit ? "" : void 0,
413
+ children: edit ? /* @__PURE__ */ jsx(Editor, {
414
+ table,
415
+ column,
416
+ edit,
417
+ row,
418
+ autoFocus: column.id === focused
419
+ }) : cellContent(column, row)
420
+ }, column.id);
421
+ };
422
+ $[38] = editing;
423
+ $[39] = focused;
424
+ $[40] = row;
425
+ $[41] = table;
426
+ $[42] = virtual;
427
+ $[43] = t14;
428
+ } else t14 = $[43];
429
+ t13 = columns.map(t14);
430
+ $[31] = columns;
431
+ $[32] = editing;
432
+ $[33] = focused;
433
+ $[34] = row;
434
+ $[35] = table;
435
+ $[36] = virtual;
436
+ $[37] = t13;
437
+ } else t13 = $[37];
438
+ let t14;
439
+ if ($[44] !== entry || $[45] !== hasActions || $[46] !== table) {
440
+ t14 = hasActions && /* @__PURE__ */ jsx(RowActions, {
441
+ table,
442
+ entry,
443
+ onEdit: (button) => setEditHeight(button.closest("tr")?.getBoundingClientRect().height)
444
+ });
445
+ $[44] = entry;
446
+ $[45] = hasActions;
447
+ $[46] = table;
448
+ $[47] = t14;
449
+ } else t14 = $[47];
450
+ let t15;
451
+ if ($[48] !== extra || $[49] !== t10 || $[50] !== t11 || $[51] !== t12 || $[52] !== t13 || $[53] !== t14 || $[54] !== t2 || $[55] !== t3 || $[56] !== t4 || $[57] !== t5 || $[58] !== t6 || $[59] !== t7 || $[60] !== t8 || $[61] !== t9) {
452
+ t15 = /* @__PURE__ */ jsxs(TableRow, {
453
+ ...extra,
454
+ style: t2,
455
+ "aria-rowindex": t3,
456
+ "data-selected": t4,
457
+ "data-clickable": t5,
458
+ "data-editing": t6,
459
+ "data-tone": t7,
460
+ tabIndex: t8,
461
+ "aria-label": t9,
462
+ onClick: t10,
463
+ onKeyDown: t11,
464
+ children: [
465
+ t12,
466
+ t13,
467
+ t14
468
+ ]
469
+ });
470
+ $[48] = extra;
471
+ $[49] = t10;
472
+ $[50] = t11;
473
+ $[51] = t12;
474
+ $[52] = t13;
475
+ $[53] = t14;
476
+ $[54] = t2;
477
+ $[55] = t3;
478
+ $[56] = t4;
479
+ $[57] = t5;
480
+ $[58] = t6;
481
+ $[59] = t7;
482
+ $[60] = t8;
483
+ $[61] = t9;
484
+ $[62] = t15;
485
+ } else t15 = $[62];
486
+ return t15;
487
+ }
488
+ var DataTableRow = React.memo(Row);
489
+ /**
490
+ * A row that only gives its columns their width: what the cells would show, at
491
+ * no height. Rendered while the column widths are measured, never painted.
492
+ */
493
+ function SizerRow(t0) {
494
+ const $ = c(15);
495
+ const { table, entry, columns, hasActions } = t0;
496
+ let t1;
497
+ if ($[0] !== table.selectable) {
498
+ t1 = table.selectable && /* @__PURE__ */ jsx(TableCell, { className: "oui-data-table__check" });
499
+ $[0] = table.selectable;
500
+ $[1] = t1;
501
+ } else t1 = $[1];
502
+ let t2;
503
+ if ($[2] !== columns || $[3] !== entry) {
504
+ let t3;
505
+ if ($[5] !== entry) {
506
+ t3 = (column) => /* @__PURE__ */ jsx(TableCell, {
507
+ align: column.align,
508
+ numeric: column.numeric,
509
+ "data-mono": column.mono || void 0,
510
+ "data-truncate": column.truncate || void 0,
511
+ children: !column.truncate && /* @__PURE__ */ jsx("div", {
512
+ className: "oui-data-table__sizer-content",
513
+ children: cellContent(column, entry.row)
514
+ })
515
+ }, column.id);
516
+ $[5] = entry;
517
+ $[6] = t3;
518
+ } else t3 = $[6];
519
+ t2 = columns.map(t3);
520
+ $[2] = columns;
521
+ $[3] = entry;
522
+ $[4] = t2;
523
+ } else t2 = $[4];
524
+ let t3;
525
+ if ($[7] !== entry || $[8] !== hasActions || $[9] !== table) {
526
+ t3 = hasActions && /* @__PURE__ */ jsx(RowActions, {
527
+ table,
528
+ entry
529
+ });
530
+ $[7] = entry;
531
+ $[8] = hasActions;
532
+ $[9] = table;
533
+ $[10] = t3;
534
+ } else t3 = $[10];
535
+ let t4;
536
+ if ($[11] !== t1 || $[12] !== t2 || $[13] !== t3) {
537
+ t4 = /* @__PURE__ */ jsxs(TableRow, { children: [
538
+ t1,
539
+ t2,
540
+ t3
541
+ ] });
542
+ $[11] = t1;
543
+ $[12] = t2;
544
+ $[13] = t3;
545
+ $[14] = t4;
546
+ } else t4 = $[14];
547
+ return t4;
548
+ }
549
+ //#endregion
550
+ export { DataTableRow, RowActions, SizerRow, cellContent, isTextEditor };
551
+
552
+ //# sourceMappingURL=DataTableRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTableRow.js","names":["React","CheckIcon","PencilIcon","TrashIcon","XIcon","IconButton","IconButtonProps","Checkbox","Input","Select","TableCell","TableRow","Tooltip","getColumnValue","DataTableColumn","DataTableColumnEdit","DataTableEntry","DataTableInstance","DataTableRowAction","INTERACTIVE","isEmpty","value","undefined","labelOf","column","T","label","header","id","ResolvedEdit","Omit","field","editOf","edit","config","type","isTextEditor","render","isAction","item","isValidElement","cellContent","row","ReactNode","cell","String","ActionButtonProps","icon","danger","ActionButton","t0","$","_c","props","t1","t2","t3","EditorProps","table","autoFocus","Editor","Symbol","for","bb0","editValue","next","setEditValue","setValue","disabled","saving","t4","Boolean","t5","options","t6","inputProps","RowActionsProps","entry","onEdit","button","HTMLElement","RowActions","text","labels","editing","editingId","T0","actions","rowActions","slots","editable","deletable","minWidth","save","saveEdit","delete","deleteRow","cancel","cancelEdit","Array","isArray","map","_temp","event","currentTarget","startEdit","t7","index","onClick","DataTableRowProps","columns","hasActions","focused","height","Row","virtual","editHeight","setEditHeight","useState","onRowClick","rowProps","extra","held","style","isSelected","rowTone","t8","tabIndex","t9","rowLabel","t10","ctrlKey","metaKey","target","closest","t11","event_0","onKeyDown","key","contains","Node","tagName","t12","selectable","selectRow","checked","toggleRow","t13","t14","className","cellClassName","title","truncate","align","numeric","mono","muted","getBoundingClientRect","t15","DataTableRow","memo","SizerRow","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTableRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport { CheckIcon, PencilIcon, TrashIcon, XIcon } from '../../icons';\nimport { IconButton, type IconButtonProps } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { Input } from '../input/Input';\nimport { Select } from '../select/Select';\nimport { TableCell, TableRow } from '../table/Table';\nimport { Tooltip } from '../tooltip/Tooltip';\nimport { getColumnValue } from './useDataTable';\nimport type { DataTableColumn, DataTableColumnEdit, DataTableEntry, DataTableInstance, DataTableRowAction } from './types';\n\nconst INTERACTIVE = 'a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"combobox\"]';\n\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction labelOf<T>(column: DataTableColumn<T>) {\n return column.label ?? (typeof column.header === 'string' ? column.header : column.id);\n}\n\ntype ResolvedEdit<T> = Omit<DataTableColumnEdit<T>, 'field'> & { field: string };\n\nfunction editOf<T>(column: DataTableColumn<T>): ResolvedEdit<T> | null {\n if (!column.edit) return null;\n const config = typeof column.edit === 'string' ? { type: column.edit } : column.edit;\n return { ...config, field: config.field ?? column.id };\n}\n\n/** Whether the column's editor is the built-in text input, which takes the focus when editing starts. */\nexport function isTextEditor<T>(column: DataTableColumn<T>) {\n const edit = editOf(column);\n return edit !== null && !edit.render && (edit.type ?? 'text') === 'text';\n}\n\nfunction isAction(item: unknown): item is DataTableRowAction {\n return typeof item === 'object' && item !== null && !React.isValidElement(item) && 'label' in item && 'icon' in item;\n}\n\n/** What a cell shows outside editing: the column's `cell`, or its value as text. */\nexport function cellContent<T>(column: DataTableColumn<T>, row: T): React.ReactNode {\n if (column.cell) return column.cell(row);\n const value = getColumnValue(column, row);\n if (React.isValidElement(value)) return value;\n return isEmpty(value) ? '—' : String(value);\n}\n\ninterface ActionButtonProps extends Omit<IconButtonProps, 'aria-label' | 'children'> {\n label: string;\n icon: React.ReactNode;\n danger?: boolean;\n}\n\nfunction ActionButton({ label, icon, danger, ...props }: ActionButtonProps) {\n return (\n <Tooltip content={label}>\n <IconButton size=\"sm\" className=\"oui-data-table__action\" aria-label={label} data-danger={danger ? '' : undefined} {...props}>\n {icon}\n </IconButton>\n </Tooltip>\n );\n}\n\ninterface EditorProps<T> {\n table: DataTableInstance<T>;\n column: DataTableColumn<T>;\n edit: ResolvedEdit<T>;\n row: T;\n autoFocus: boolean;\n}\n\nfunction Editor<T>({ table, column, edit, row, autoFocus }: EditorProps<T>) {\n const value = table.editValue(row, edit.field);\n const setValue = (next: unknown) => table.setEditValue(edit.field, next);\n const disabled = table.saving;\n const label = labelOf(column);\n\n if (edit.render) return edit.render({ row, value, setValue, disabled });\n if (edit.type === 'checkbox') {\n return <Checkbox size=\"sm\" aria-label={label} checked={Boolean(value)} disabled={disabled} onCheckedChange={setValue} />;\n }\n if (edit.type === 'select') {\n return (\n <Select\n size=\"sm\"\n items={edit.options ?? []}\n value={isEmpty(value) ? null : String(value)}\n onValueChange={setValue}\n disabled={disabled}\n triggerProps={{ 'aria-label': label }}\n />\n );\n }\n return (\n <Input\n size=\"sm\"\n aria-label={label}\n autoFocus={autoFocus}\n disabled={disabled}\n {...edit.inputProps}\n value={isEmpty(value) ? '' : String(value)}\n onValueChange={setValue}\n />\n );\n}\n\ninterface RowActionsProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n /** Called with the edit button before editing starts. */\n onEdit?: (button: HTMLElement) => void;\n}\n\n/** Trailing cell of a row: its own actions, then edit and delete; save and cancel while it is edited. */\nexport function RowActions<T>({ table, entry: { row, id }, onEdit }: RowActionsProps<T>) {\n const text = table.labels;\n const editing = table.editingId === id;\n const actions = table.rowActions?.(row);\n // Room for the buttons of the edited state from the start, so entering it does not widen the column.\n const slots = table.editable ? (table.deletable ? 3 : 2) : 0;\n return (\n <TableCell className=\"oui-data-table__row-actions\">\n <div\n className=\"oui-data-table__row-actions-list\"\n style={slots ? { minWidth: `calc(${slots} * var(--oui-control-height-sm) + ${(slots - 1) * 0.125}rem)` } : undefined}\n >\n {editing ? (\n <>\n <ActionButton label={text.save} icon={<CheckIcon />} loading={table.saving} onClick={table.saveEdit} />\n {table.deletable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger disabled={table.saving} onClick={() => table.deleteRow(row)} />\n )}\n <ActionButton label={text.cancel} icon={<XIcon />} disabled={table.saving} onClick={table.cancelEdit} />\n </>\n ) : (\n <>\n {(Array.isArray(actions) ? actions : [actions]).map((item, index) =>\n isAction(item) ? (\n <ActionButton\n key={item.label}\n label={item.label}\n icon={item.icon}\n danger={item.danger}\n disabled={item.disabled}\n onClick={item.onClick}\n />\n ) : (\n <React.Fragment key={index}>{item}</React.Fragment>\n ),\n )}\n {table.editable && (\n <ActionButton\n label={text.edit}\n icon={<PencilIcon />}\n disabled={table.saving}\n onClick={(event) => {\n onEdit?.(event.currentTarget);\n table.startEdit(id);\n }}\n />\n )}\n {table.deletable && !table.editable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger onClick={() => table.deleteRow(row)} />\n )}\n </>\n )}\n </div>\n </TableCell>\n );\n}\n\nexport interface DataTableRowProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n columns: DataTableColumn<T>[];\n hasActions: boolean;\n /** Id of the column whose editor takes the focus when editing starts. */\n focused?: string;\n /** Virtualized tables: position among all rows, and the height every row shares. */\n index?: number;\n height?: number;\n}\n\nfunction Row<T>({ table, entry, columns, hasActions, focused, index, height }: DataTableRowProps<T>) {\n const { row, id } = entry;\n const editing = table.editingId === id;\n const virtual = index !== undefined;\n // Height the row had when its editing started: the editors fit inside it, so the rows below stay put.\n const [editHeight, setEditHeight] = React.useState<number>();\n const onRowClick = editing ? undefined : table.onRowClick;\n const extra = table.rowProps?.(row);\n const held = height ?? (editing ? editHeight : undefined);\n\n return (\n <TableRow\n {...extra}\n style={held !== undefined ? { height: held, ...extra?.style } : extra?.style}\n aria-rowindex={virtual ? index + 2 : undefined}\n data-selected={table.isSelected(id) || undefined}\n data-clickable={onRowClick ? '' : undefined}\n data-editing={editing ? '' : undefined}\n data-tone={table.rowTone?.(row) ?? undefined}\n tabIndex={onRowClick ? 0 : extra?.tabIndex}\n aria-label={onRowClick ? table.rowLabel?.(row) : extra?.['aria-label']}\n onClick={(event) => {\n extra?.onClick?.(event);\n if (!onRowClick || event.ctrlKey || event.metaKey) return;\n if ((event.target as HTMLElement).closest(INTERACTIVE)) return;\n onRowClick(row);\n }}\n onKeyDown={(event) => {\n extra?.onKeyDown?.(event);\n if (onRowClick && event.target === event.currentTarget && event.key === 'Enter') onRowClick(row);\n // Popups of the editors are portalled out of the row: their keys are not the row's.\n if (!editing || !event.currentTarget.contains(event.target as Node)) return;\n if (event.key === 'Escape') table.cancelEdit();\n if (event.key === 'Enter' && (event.target as HTMLElement).tagName === 'INPUT') table.saveEdit();\n }}\n >\n {table.selectable && (\n <TableCell className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={table.labels.selectRow(table.rowLabel?.(row) ?? id)}\n checked={table.isSelected(id)}\n onCheckedChange={(checked) => table.toggleRow(id, checked)}\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const edit = editing ? editOf(column) : null;\n const className = typeof column.cellClassName === 'function' ? column.cellClassName(row) : column.cellClassName;\n const value = getColumnValue(column, row);\n // Cut text can still be read in full by pointing at it.\n const title = (column.truncate || virtual) && !edit && (typeof value === 'string' || typeof value === 'number');\n return (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n className={className}\n title={title ? String(value) : undefined}\n data-mono={column.mono || undefined}\n data-muted={column.muted || undefined}\n data-truncate={(column.truncate && !edit) || undefined}\n data-editor={edit ? '' : undefined}\n >\n {edit ? (\n <Editor table={table} column={column} edit={edit} row={row} autoFocus={column.id === focused} />\n ) : (\n cellContent(column, row)\n )}\n </TableCell>\n );\n })}\n {hasActions && (\n <RowActions\n table={table}\n entry={entry}\n onEdit={(button) => setEditHeight(button.closest('tr')?.getBoundingClientRect().height)}\n />\n )}\n </TableRow>\n );\n}\n\n// Memoized by hand: scrolling a virtualized table renders its content on every\n// step, and the rows that stay in view have nothing new to show.\nexport const DataTableRow = React.memo(Row) as typeof Row;\n\n/**\n * A row that only gives its columns their width: what the cells would show, at\n * no height. Rendered while the column widths are measured, never painted.\n */\nexport function SizerRow<T>({ table, entry, columns, hasActions }: DataTableRowProps<T>) {\n return (\n <TableRow>\n {table.selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column) => (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n data-mono={column.mono || undefined}\n data-truncate={column.truncate || undefined}\n >\n {!column.truncate && <div className=\"oui-data-table__sizer-content\">{cellContent(column, entry.row)}</div>}\n </TableCell>\n ))}\n {hasActions && <RowActions table={table} entry={entry} />}\n </TableRow>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ import type { DataTableInstance } from './types';
3
+ export declare const DataTableContext: React.Context<DataTableInstance<any> | null>;
4
+ /** The table of the surrounding `DataTable.Root`, for building custom parts. */
5
+ export declare function useDataTableContext<T = unknown>(): DataTableInstance<T>;
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ //#region src/components/data-table/context.ts
4
+ var DataTableContext = React.createContext(null);
5
+ /** The table of the surrounding `DataTable.Root`, for building custom parts. */
6
+ function useDataTableContext() {
7
+ const table = React.useContext(DataTableContext);
8
+ if (!table) throw new Error("DataTable parts must be rendered inside <DataTable.Root>.");
9
+ return table;
10
+ }
11
+ //#endregion
12
+ export { DataTableContext, useDataTableContext };
13
+
14
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":["React","DataTableInstance","DataTableContext","createContext","useDataTableContext","table","useContext","Error"],"sources":["../../../src/components/data-table/context.ts"],"sourcesContent":["import * as React from 'react';\nimport type { DataTableInstance } from './types';\n\n// The parts never look inside a row: they hand it back to the column callbacks.\nexport const DataTableContext = React.createContext<DataTableInstance<any> | null>(null);\n\n/** The table of the surrounding `DataTable.Root`, for building custom parts. */\nexport function useDataTableContext<T = unknown>(): DataTableInstance<T> {\n const table = React.useContext(DataTableContext);\n if (!table) throw new Error('DataTable parts must be rendered inside <DataTable.Root>.');\n return table;\n}\n"],"mappings":";;;AAIA,IAAaE,mBAAmBF,MAAMG,cAA6C,IAAI;;AAGvF,SAAOC,sBAAA;CACL,MAAAC,QAAcL,MAAKM,WAAYJ,gBAAgB;CAC/C,IAAI,CAACG,OAAO,MAAM,IAAIE,MAAM,2DAA2D;CAAE,OAClFF;AAAK"}