react-science 13.0.2 → 15.0.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 (150) hide show
  1. package/lib/components/activity_bar/activity_bar.js +1 -1
  2. package/lib/components/activity_bar/activity_bar.js.map +1 -1
  3. package/lib/components/activity_panel/activity_panel.js +1 -1
  4. package/lib/components/activity_panel/activity_panel.js.map +1 -1
  5. package/lib/components/drop-zone/DropZone.js +1 -1
  6. package/lib/components/drop-zone/DropZone.js.map +1 -1
  7. package/lib/components/forms/radio-button-group/RadioButton.js +4 -4
  8. package/lib/components/forms/radio-button-group/RadioButton.js.map +1 -1
  9. package/lib/components/forms/radio-button-group/RadioButtonGroup.d.ts +2 -2
  10. package/lib/components/forms/radio-button-group/RadioButtonGroup.d.ts.map +1 -1
  11. package/lib/components/forms/radio-button-group/RadioButtonGroup.js +8 -8
  12. package/lib/components/forms/radio-button-group/RadioButtonGroup.js.map +1 -1
  13. package/lib/components/forms/styles.d.ts +0 -1
  14. package/lib/components/forms/styles.d.ts.map +1 -1
  15. package/lib/components/forms/styles.js.map +1 -1
  16. package/lib/components/header/PanelHeader.d.ts.map +1 -1
  17. package/lib/components/header/PanelHeader.js +1 -1
  18. package/lib/components/header/PanelHeader.js.map +1 -1
  19. package/lib/components/index.d.ts +1 -1
  20. package/lib/components/index.js +1 -1
  21. package/lib/components/info-panel/InfoPanel.js +2 -2
  22. package/lib/components/info-panel/InfoPanel.js.map +1 -1
  23. package/lib/components/logger/FifoLoggerDialog.js +1 -1
  24. package/lib/components/logger/FifoLoggerDialog.js.map +1 -1
  25. package/lib/components/split_pane/index.d.ts +3 -0
  26. package/lib/components/split_pane/index.d.ts.map +1 -0
  27. package/lib/components/split_pane/index.js +3 -0
  28. package/lib/components/split_pane/index.js.map +1 -0
  29. package/lib/components/{split-pane/SplitPane.d.ts → split_pane/split_pane.d.ts} +7 -5
  30. package/lib/components/split_pane/split_pane.d.ts.map +1 -0
  31. package/lib/components/{split-pane/SplitPane.js → split_pane/split_pane.js} +25 -32
  32. package/lib/components/split_pane/split_pane.js.map +1 -0
  33. package/lib/components/split_pane/split_pane_helpers.d.ts +9 -0
  34. package/lib/components/split_pane/split_pane_helpers.d.ts.map +1 -0
  35. package/lib/components/split_pane/split_pane_helpers.js +10 -0
  36. package/lib/components/split_pane/split_pane_helpers.js.map +1 -0
  37. package/lib/components/{split-pane/useSplitPaneSize.d.ts → split_pane/use_split_pane_size.d.ts} +5 -3
  38. package/lib/components/split_pane/use_split_pane_size.d.ts.map +1 -0
  39. package/lib/components/split_pane/use_split_pane_size.js +78 -0
  40. package/lib/components/split_pane/use_split_pane_size.js.map +1 -0
  41. package/lib/components/table/index.d.ts +1 -0
  42. package/lib/components/table/index.d.ts.map +1 -1
  43. package/lib/components/table/index.js +1 -0
  44. package/lib/components/table/index.js.map +1 -1
  45. package/lib/components/table/reorder_rows/draggable_row_context.d.ts +9 -0
  46. package/lib/components/table/reorder_rows/draggable_row_context.d.ts.map +1 -0
  47. package/lib/components/table/reorder_rows/draggable_row_context.js +10 -0
  48. package/lib/components/table/reorder_rows/draggable_row_context.js.map +1 -0
  49. package/lib/components/table/reorder_rows/draggable_row_tr.d.ts +18 -0
  50. package/lib/components/table/reorder_rows/draggable_row_tr.d.ts.map +1 -0
  51. package/lib/components/table/reorder_rows/draggable_row_tr.js +107 -0
  52. package/lib/components/table/reorder_rows/draggable_row_tr.js.map +1 -0
  53. package/lib/components/table/reorder_rows/drop_indicator.d.ts +18 -0
  54. package/lib/components/table/reorder_rows/drop_indicator.d.ts.map +1 -0
  55. package/lib/components/table/reorder_rows/drop_indicator.js +19 -0
  56. package/lib/components/table/reorder_rows/drop_indicator.js.map +1 -0
  57. package/lib/components/table/reorder_rows/dropped_item_context.d.ts +3 -0
  58. package/lib/components/table/reorder_rows/dropped_item_context.d.ts.map +1 -0
  59. package/lib/components/table/reorder_rows/dropped_item_context.js +10 -0
  60. package/lib/components/table/reorder_rows/dropped_item_context.js.map +1 -0
  61. package/lib/components/table/reorder_rows/dropped_item_provider.d.ts +5 -0
  62. package/lib/components/table/reorder_rows/dropped_item_provider.d.ts.map +1 -0
  63. package/lib/components/table/reorder_rows/dropped_item_provider.js +8 -0
  64. package/lib/components/table/reorder_rows/dropped_item_provider.js.map +1 -0
  65. package/lib/components/table/reorder_rows/index.d.ts +5 -0
  66. package/lib/components/table/reorder_rows/index.d.ts.map +1 -0
  67. package/lib/components/table/reorder_rows/index.js +5 -0
  68. package/lib/components/table/reorder_rows/index.js.map +1 -0
  69. package/lib/components/table/reorder_rows/item_data.d.ts +26 -0
  70. package/lib/components/table/reorder_rows/item_data.d.ts.map +1 -0
  71. package/lib/components/table/reorder_rows/item_data.js +13 -0
  72. package/lib/components/table/reorder_rows/item_data.js.map +1 -0
  73. package/lib/components/table/reorder_rows/item_order_context.d.ts +15 -0
  74. package/lib/components/table/reorder_rows/item_order_context.d.ts.map +1 -0
  75. package/lib/components/table/reorder_rows/item_order_context.js +10 -0
  76. package/lib/components/table/reorder_rows/item_order_context.js.map +1 -0
  77. package/lib/components/table/reorder_rows/item_order_provider.d.ts +10 -0
  78. package/lib/components/table/reorder_rows/item_order_provider.d.ts.map +1 -0
  79. package/lib/components/table/reorder_rows/item_order_provider.js +34 -0
  80. package/lib/components/table/reorder_rows/item_order_provider.js.map +1 -0
  81. package/lib/components/table/reorder_rows/table_drag_row_handler.d.ts +2 -0
  82. package/lib/components/table/reorder_rows/table_drag_row_handler.d.ts.map +1 -0
  83. package/lib/components/table/reorder_rows/table_drag_row_handler.js +9 -0
  84. package/lib/components/table/reorder_rows/table_drag_row_handler.js.map +1 -0
  85. package/lib/components/table/reorder_rows/use_drop_monitor.d.ts +9 -0
  86. package/lib/components/table/reorder_rows/use_drop_monitor.d.ts.map +1 -0
  87. package/lib/components/table/reorder_rows/use_drop_monitor.js +57 -0
  88. package/lib/components/table/reorder_rows/use_drop_monitor.js.map +1 -0
  89. package/lib/components/table/table_body.d.ts +4 -1
  90. package/lib/components/table/table_body.d.ts.map +1 -1
  91. package/lib/components/table/table_body.js +20 -6
  92. package/lib/components/table/table_body.js.map +1 -1
  93. package/lib/components/table/table_root.d.ts +37 -1
  94. package/lib/components/table/table_root.d.ts.map +1 -1
  95. package/lib/components/table/table_root.js +41 -7
  96. package/lib/components/table/table_root.js.map +1 -1
  97. package/lib/components/table/table_row_cell.d.ts +2 -1
  98. package/lib/components/table/table_row_cell.d.ts.map +1 -1
  99. package/lib/components/table/table_row_cell.js +2 -2
  100. package/lib/components/table/table_row_cell.js.map +1 -1
  101. package/lib/components/table/table_utils.d.ts +11 -2
  102. package/lib/components/table/table_utils.d.ts.map +1 -1
  103. package/lib/components/table/table_utils.js.map +1 -1
  104. package/lib/components/toolbar/Toolbar.js +2 -2
  105. package/lib/components/toolbar/Toolbar.js.map +1 -1
  106. package/lib/components/toolbar/TooltipHelpContent.js +2 -2
  107. package/package.json +19 -16
  108. package/src/components/activity_bar/activity_bar.tsx +1 -1
  109. package/src/components/activity_panel/activity_panel.tsx +1 -1
  110. package/src/components/drop-zone/DropZone.tsx +1 -1
  111. package/src/components/forms/radio-button-group/RadioButton.tsx +7 -7
  112. package/src/components/forms/radio-button-group/RadioButtonGroup.tsx +15 -11
  113. package/src/components/forms/styles.ts +0 -2
  114. package/src/components/header/PanelHeader.tsx +6 -1
  115. package/src/components/index.ts +1 -1
  116. package/src/components/info-panel/InfoPanel.tsx +2 -2
  117. package/src/components/logger/FifoLoggerDialog.tsx +2 -2
  118. package/src/components/split_pane/index.ts +2 -0
  119. package/src/components/{split-pane/SplitPane.tsx → split_pane/split_pane.tsx} +63 -56
  120. package/src/components/split_pane/split_pane_helpers.ts +19 -0
  121. package/src/components/split_pane/use_split_pane_size.tsx +120 -0
  122. package/src/components/table/index.ts +1 -0
  123. package/src/components/table/reorder_rows/draggable_row_context.ts +23 -0
  124. package/src/components/table/reorder_rows/draggable_row_tr.tsx +166 -0
  125. package/src/components/table/reorder_rows/drop_indicator.tsx +28 -0
  126. package/src/components/table/reorder_rows/dropped_item_context.ts +23 -0
  127. package/src/components/table/reorder_rows/dropped_item_provider.tsx +13 -0
  128. package/src/components/table/reorder_rows/index.ts +4 -0
  129. package/src/components/table/reorder_rows/item_data.ts +33 -0
  130. package/src/components/table/reorder_rows/item_order_context.ts +27 -0
  131. package/src/components/table/reorder_rows/item_order_provider.tsx +61 -0
  132. package/src/components/table/reorder_rows/table_drag_row_handler.tsx +22 -0
  133. package/src/components/table/reorder_rows/use_drop_monitor.ts +74 -0
  134. package/src/components/table/table_body.tsx +58 -9
  135. package/src/components/table/table_root.tsx +167 -35
  136. package/src/components/table/table_row_cell.tsx +5 -3
  137. package/src/components/table/table_utils.ts +16 -2
  138. package/src/components/toolbar/Toolbar.tsx +2 -2
  139. package/src/components/toolbar/TooltipHelpContent.tsx +2 -2
  140. package/lib/components/split-pane/SplitPane.d.ts.map +0 -1
  141. package/lib/components/split-pane/SplitPane.js.map +0 -1
  142. package/lib/components/split-pane/index.d.ts +0 -2
  143. package/lib/components/split-pane/index.d.ts.map +0 -1
  144. package/lib/components/split-pane/index.js +0 -2
  145. package/lib/components/split-pane/index.js.map +0 -1
  146. package/lib/components/split-pane/useSplitPaneSize.d.ts.map +0 -1
  147. package/lib/components/split-pane/useSplitPaneSize.js +0 -60
  148. package/lib/components/split-pane/useSplitPaneSize.js.map +0 -1
  149. package/src/components/split-pane/index.ts +0 -1
  150. package/src/components/split-pane/useSplitPaneSize.tsx +0 -99
@@ -1,6 +1,6 @@
1
1
  import { HTMLTable } from '@blueprintjs/core';
2
2
  import styled from '@emotion/styled';
3
- import type { RowData, TableOptions } from '@tanstack/react-table';
3
+ import type { Header, RowData, TableOptions } from '@tanstack/react-table';
4
4
  import {
5
5
  getCoreRowModel,
6
6
  getSortedRowModel,
@@ -8,14 +8,19 @@ import {
8
8
  } from '@tanstack/react-table';
9
9
  import { useVirtualizer } from '@tanstack/react-virtual';
10
10
  import type { ReactNode, RefObject, TableHTMLAttributes } from 'react';
11
- import { useRef } from 'react';
11
+ import { useEffect, useRef } from 'react';
12
12
 
13
+ import { DroppedItemProvider } from './reorder_rows/dropped_item_provider.js';
14
+ import { ItemOrderProvider } from './reorder_rows/item_order_provider.js';
15
+ import { useDropMonitor } from './reorder_rows/use_drop_monitor.js';
13
16
  import { TableBody } from './table_body.js';
14
17
  import { TableHeader } from './table_header.js';
15
18
  import type { HeaderCellRenderer } from './table_header_cell.js';
16
19
  import type {
20
+ GetTdProps,
17
21
  Scroller,
18
22
  TableColumnDef,
23
+ TableRowPreviewRenderer,
19
24
  TableRowTrRenderer,
20
25
  VirtualScroller,
21
26
  } from './table_utils.js';
@@ -34,7 +39,7 @@ const CustomHTMLTable = styled(HTMLTable, {
34
39
  box-shadow: inset 0 -1px #11141826;
35
40
  }
36
41
 
37
- tbody tr:first-child td {
42
+ tbody tr:first-of-type td {
38
43
  box-shadow: ${
39
44
  props.bordered
40
45
  ? 'inset 1px 0 0 0 #11141826 !important'
@@ -42,7 +47,7 @@ const CustomHTMLTable = styled(HTMLTable, {
42
47
  };
43
48
  }
44
49
 
45
- tbody tr:first-child td:first-child {
50
+ tbody tr:first-of-type td:first-of-type {
46
51
  box-shadow: none !important;
47
52
  }
48
53
  `;
@@ -57,6 +62,9 @@ const CustomHTMLTable = styled(HTMLTable, {
57
62
  `;
58
63
 
59
64
  interface TableBaseProps<TData extends RowData> {
65
+ /**
66
+ * The original data to display in the table.
67
+ */
60
68
  data: TData[];
61
69
  /**
62
70
  * Tanstack table definition of columns in the table.
@@ -115,19 +123,55 @@ interface TableBaseProps<TData extends RowData> {
115
123
  */
116
124
  renderHeaderCell?: HeaderCellRenderer<TData>;
117
125
 
126
+ /**
127
+ * Pass custom props to the `<td>`.
128
+ * The callback is called for each cell and receives the row's data.
129
+ * The returned properties are spread onto the `<td>` element.
130
+ */
131
+ getTdProps?: GetTdProps<TData>;
132
+
118
133
  /**
119
134
  * A ref which will be set with a callback to scroll to a row in the
120
135
  * table, specified by the row's ID.
121
136
  */
122
137
  scrollToRowRef?: RefObject<VirtualScroller | ScrollToOptions | undefined>;
123
138
 
139
+ /**
140
+ * An accessor which should return a unique identifier for the row.
141
+ */
124
142
  getRowId?: TableOptions<TData>['getRowId'];
143
+
144
+ /**
145
+ * Called when the user changed the order of the rows.
146
+ * Specifying this callback enables row reordering by drag and drop.
147
+ * Make sure to specify `getRowId` and not to use column sorting when you
148
+ * enable row reordering.
149
+ * Use the `TableDragRowHandler` component within table cells to provide the
150
+ * drag and drop interface for reordering rows.
151
+ * @param rows The rows in their new order.
152
+ */
153
+ onRowOrderChanged?: (rows: TData[]) => void;
154
+
155
+ /**
156
+ * Render function to customize the preview of the row being dragged
157
+ * when reordering.
158
+ * It receives the row being dragged.
159
+ * Ignored when using custom row rendering with `renderRowTr`.
160
+ */
161
+ renderRowPreview?: TableRowPreviewRenderer<TData>;
125
162
  }
126
163
 
127
164
  interface RegularTableProps<TData extends RowData>
128
165
  extends TableBaseProps<TData> {
129
166
  virtualizeRows?: false | undefined;
130
167
  scrollToRowRef?: RefObject<Scroller | undefined>;
168
+ /**
169
+ * Specify a custom scrollable reference, which will be used to
170
+ * automatically scroll the table when reordering elements.
171
+ * By default, the table itself is used as the scrollable element, but
172
+ * you must style it to make it scrollable.
173
+ */
174
+ scrollableElementRef?: RefObject<Element>;
131
175
  }
132
176
 
133
177
  interface VirtualizedTableProps<TData extends RowData>
@@ -162,11 +206,14 @@ export function Table<TData extends RowData>(props: TableProps<TData>) {
162
206
  className,
163
207
  renderRowTr,
164
208
  renderHeaderCell,
209
+ getTdProps,
165
210
 
166
211
  virtualizeRows,
167
212
  getRowId,
213
+ onRowOrderChanged,
214
+ renderRowPreview,
168
215
  } = props;
169
-
216
+ const isReorderingEnabled = !!onRowOrderChanged;
170
217
  const scrollElementRef = useRef<HTMLDivElement>(null);
171
218
  const columnDefs = useTableColumns(columns);
172
219
  const table = useReactTable<TData>({
@@ -199,31 +246,56 @@ export function Table<TData extends RowData>(props: TableProps<TData>) {
199
246
  finalClassName = tableProps?.className;
200
247
  }
201
248
 
249
+ const tableHeaders = table.getFlatHeaders();
250
+ useCheckProps(
251
+ props as TableProps<unknown>,
252
+ tableHeaders as Array<Header<unknown, unknown>>,
253
+ );
202
254
  return (
203
- <Container virtualizeRows={virtualizeRows} scrollRef={scrollElementRef}>
204
- <CustomHTMLTable
205
- ref={tableRef}
206
- bordered={bordered}
207
- compact={compact}
208
- interactive={interactive}
209
- striped={striped}
210
- stickyHeader={stickyHeader}
211
- {...tableProps}
212
- className={finalClassName}
255
+ <DroppedItemProvider>
256
+ <ItemOrderProvider
257
+ items={table.getRowModel().rows}
258
+ onOrderChanged={(items) => {
259
+ onRowOrderChanged?.(items.map((item) => item.original));
260
+ }}
213
261
  >
214
- <TableHeader
215
- sticky={stickyHeader}
216
- headers={table.getFlatHeaders()}
217
- renderHeaderCell={renderHeaderCell}
218
- />
219
- <TableBody
220
- rows={table.getRowModel().rows}
221
- renderRowTr={renderRowTr}
222
- virtualizer={tanstackVirtualizer}
262
+ <Container
223
263
  virtualizeRows={virtualizeRows}
224
- />
225
- </CustomHTMLTable>
226
- </Container>
264
+ scrollRef={
265
+ virtualizeRows
266
+ ? scrollElementRef
267
+ : props.scrollableElementRef || tableRef
268
+ }
269
+ isReorderingEnabled={isReorderingEnabled}
270
+ >
271
+ <CustomHTMLTable
272
+ ref={tableRef}
273
+ bordered={bordered}
274
+ compact={compact}
275
+ interactive={interactive}
276
+ striped={striped}
277
+ stickyHeader={stickyHeader}
278
+ {...tableProps}
279
+ className={finalClassName}
280
+ >
281
+ <TableHeader
282
+ sticky={stickyHeader}
283
+ headers={tableHeaders}
284
+ renderHeaderCell={renderHeaderCell}
285
+ />
286
+ <TableBody
287
+ rows={table.getRowModel().rows}
288
+ renderRowTr={renderRowTr}
289
+ getTdProps={getTdProps}
290
+ virtualizer={tanstackVirtualizer}
291
+ virtualizeRows={virtualizeRows}
292
+ renderRowPreview={renderRowPreview}
293
+ isReorderingEnabled={isReorderingEnabled}
294
+ />
295
+ </CustomHTMLTable>
296
+ </Container>
297
+ </ItemOrderProvider>
298
+ </DroppedItemProvider>
227
299
  );
228
300
  }
229
301
 
@@ -232,17 +304,77 @@ const ScrollRefDiv = styled.div`
232
304
  overflow: auto;
233
305
  `;
234
306
 
235
- function Container({
236
- virtualizeRows,
237
- scrollRef,
238
- children,
239
- }: {
307
+ interface ContainerProps {
240
308
  virtualizeRows?: boolean;
241
309
  children: ReactNode;
242
- scrollRef: RefObject<HTMLDivElement>;
243
- }) {
310
+ scrollRef: RefObject<Element>;
311
+ isReorderingEnabled: boolean;
312
+ }
313
+
314
+ function Container(props: ContainerProps) {
315
+ const { virtualizeRows, scrollRef, isReorderingEnabled, children } = props;
244
316
  if (virtualizeRows) {
245
- return <ScrollRefDiv ref={scrollRef}>{children}</ScrollRefDiv>;
317
+ return (
318
+ <ContainerVirtual
319
+ scrollElementRef={scrollRef}
320
+ enabled={isReorderingEnabled}
321
+ >
322
+ {children}
323
+ </ContainerVirtual>
324
+ );
246
325
  }
326
+ return (
327
+ <ContainerTable scrollElementRef={scrollRef} enabled={isReorderingEnabled}>
328
+ {children}
329
+ </ContainerTable>
330
+ );
331
+ }
332
+
333
+ interface ContainerWithReorderingProps {
334
+ scrollElementRef: RefObject<Element>;
335
+ enabled: boolean;
336
+ children: ReactNode;
337
+ }
338
+
339
+ function ContainerVirtual(props: ContainerWithReorderingProps) {
340
+ const { scrollElementRef, enabled, children } = props;
341
+ useDropMonitor(scrollElementRef, enabled);
342
+
343
+ return (
344
+ <ScrollRefDiv ref={scrollElementRef as RefObject<HTMLDivElement>}>
345
+ {children}
346
+ </ScrollRefDiv>
347
+ );
348
+ }
349
+
350
+ interface ContainerTableProps {
351
+ scrollElementRef: RefObject<Element>;
352
+ enabled: boolean;
353
+ children: ReactNode;
354
+ }
355
+ function ContainerTable(props: ContainerTableProps) {
356
+ const { scrollElementRef, enabled, children } = props;
357
+ useDropMonitor(scrollElementRef, enabled);
247
358
  return <>{children}</>;
248
359
  }
360
+
361
+ function useCheckProps(
362
+ props: TableProps<unknown>,
363
+ headers: Array<Header<unknown, unknown>>,
364
+ ) {
365
+ const { onRowOrderChanged, getRowId } = props;
366
+ useEffect(() => {
367
+ if (onRowOrderChanged && !getRowId) {
368
+ // eslint-disable-next-line no-console
369
+ console.warn(
370
+ 'When reordering rows is enabled via the `onRowOrderChanged` prop, the `getRowId` prop must be provided to identify each row unambiguously.',
371
+ );
372
+ }
373
+ if (headers.some((header) => header.column.getCanSort())) {
374
+ // eslint-disable-next-line no-console
375
+ console.warn(
376
+ 'When reordering rows is enabled via the `onRowOrderChanged` prop, none of the columns should be sortable as data order will be overriden by internal sorting.',
377
+ );
378
+ }
379
+ }, [onRowOrderChanged, getRowId, headers]);
380
+ }
@@ -1,18 +1,20 @@
1
1
  import type { Cell, RowData } from '@tanstack/react-table';
2
2
  import { flexRender } from '@tanstack/react-table';
3
3
 
4
+ import type { GetTdProps } from './table_utils.js';
5
+
4
6
  interface TableRowCellProps<TData extends RowData> {
5
7
  cell: Cell<TData, unknown>;
6
- className?: string;
8
+ getTdProps: GetTdProps<TData> | undefined;
7
9
  }
8
10
 
9
11
  export function TableRowCell<TData extends RowData>(
10
12
  props: TableRowCellProps<TData>,
11
13
  ) {
12
- const { cell, className } = props;
14
+ const { cell, getTdProps } = props;
13
15
 
14
16
  return (
15
- <td style={{ position: 'relative' }} className={className}>
17
+ <td {...getTdProps?.(cell)}>
16
18
  {flexRender(cell.column.columnDef.cell, cell.getContext())}
17
19
  </td>
18
20
  );
@@ -1,19 +1,26 @@
1
- import type { ColumnDef, Row, RowData } from '@tanstack/react-table';
1
+ import type { Cell, ColumnDef, Row, RowData } from '@tanstack/react-table';
2
2
  import { createColumnHelper } from '@tanstack/react-table';
3
3
  import type { ScrollToOptions } from '@tanstack/react-virtual';
4
- import type { ReactNode } from 'react';
4
+ import type { CSSProperties, ReactNode, TdHTMLAttributes } from 'react';
5
5
 
6
6
  export type TableColumnDef<TData extends RowData, TValue = unknown> = ColumnDef<
7
7
  TData,
8
8
  TValue
9
9
  >;
10
10
 
11
+ type TableTdProps = TdHTMLAttributes<HTMLTableCellElement>;
12
+
13
+ export type GetTdProps<TData extends RowData> = (
14
+ cell: Cell<TData, unknown>,
15
+ ) => TableTdProps;
16
+
11
17
  export function createTableColumnHelper<TData extends RowData>() {
12
18
  return createColumnHelper<TData>();
13
19
  }
14
20
 
15
21
  export interface TableRowTrProps {
16
22
  className: string;
23
+ style: CSSProperties;
17
24
  children: ReactNode;
18
25
  // eslint-disable-next-line @typescript-eslint/naming-convention
19
26
  'data-row-id': string;
@@ -24,6 +31,13 @@ export type TableRowTrRenderer<TData extends RowData> = (
24
31
  row: Row<TData>,
25
32
  ) => ReactNode;
26
33
 
34
+ export type TableRowPreviewRenderer<TData extends RowData> = (
35
+ /**
36
+ * The row being dragged, for which to render a preview.
37
+ */
38
+ row: Row<TData>,
39
+ ) => ReactNode;
40
+
27
41
  export interface VirtualScroller {
28
42
  scrollIntoView: (id: string, options?: ScrollToOptions) => void;
29
43
  }
@@ -126,7 +126,7 @@ export function Toolbar(props: ToolbarProps) {
126
126
  // TODO: remove once the workaround is no longer needed
127
127
  key={String(vertical)}
128
128
  vertical={vertical}
129
- minimal
129
+ variant="minimal"
130
130
  style={{
131
131
  flexWrap: 'wrap',
132
132
  borderRight: vertical ? border : undefined,
@@ -174,7 +174,7 @@ function ToolbarItemInternal(props: ToolbarItemInternalProps) {
174
174
 
175
175
  return (
176
176
  <ToolbarButton
177
- alignText={isPopover ? 'left' : undefined}
177
+ alignText={isPopover ? 'start' : undefined}
178
178
  disabled={disabled}
179
179
  intent={intent}
180
180
  type="button"
@@ -18,12 +18,12 @@ const Title = styled.span<TitleProps>`
18
18
  font-size: ${({ size }) => size};
19
19
  flex: 1;
20
20
  padding: 5px 0;
21
- text-align: left;
21
+ text-align: start;
22
22
  `;
23
23
  const Description = styled.p`
24
24
  padding-top: 1rem;
25
25
  font-size: 0.7rem;
26
- text-align: left;
26
+ text-align: start;
27
27
  `;
28
28
 
29
29
  const ShortcutItem = styled.div`
@@ -1 +0,0 @@
1
- {"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../../src/components/split-pane/SplitPane.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,SAAS,EAEV,MAAM,OAAO,CAAC;AAOf,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC;IAE/B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAsG9C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SplitPane.js","sourceRoot":"","sources":["../../../src/components/split-pane/SplitPane.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './SplitPane.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/split-pane/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './SplitPane.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/split-pane/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSplitPaneSize.d.ts","sourceRoot":"","sources":["../../../src/components/split-pane/useSplitPaneSize.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACd,MAAM,gBAAgB,CAAC;AAExB,UAAU,uBAAuB;IAC/B,cAAc,EAAE,aAAa,CAAC;IAC9B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACvC,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB;;EAoEhE"}
@@ -1,60 +0,0 @@
1
- export function useSplitPaneSize(options) {
2
- const { controlledSide, direction, splitterRef, sizeType, onSizeChange, onResize, } = options;
3
- function downCallback() {
4
- let lastSize = null;
5
- function moveCallback(event) {
6
- if (!splitterRef.current)
7
- return;
8
- const { clientX, clientY } = event;
9
- const parentDiv = splitterRef.current.parentElement;
10
- const bounds = parentDiv.getBoundingClientRect();
11
- const parentDimension = direction === 'horizontal'
12
- ? parentDiv.clientWidth
13
- : parentDiv.clientHeight;
14
- const client = direction === 'horizontal'
15
- ? clientX - bounds.left
16
- : clientY - bounds.top;
17
- const centralizingValue = direction === 'horizontal'
18
- ? splitterRef.current.clientWidth / 2
19
- : splitterRef.current.clientHeight / 2;
20
- const value = controlledSide === 'start' ? client : parentDimension - client;
21
- if (sizeType === 'px') {
22
- const newSize = getValueFromSplitter(value - centralizingValue, {
23
- min: 50,
24
- max: parentDimension - 50,
25
- });
26
- lastSize = [newSize, sizeType];
27
- onSizeChange(lastSize);
28
- }
29
- else if (sizeType === '%') {
30
- const valueDiff = (value / parentDimension) * 100;
31
- const newSize = getValueFromSplitter(valueDiff, {
32
- min: 5,
33
- max: 95,
34
- });
35
- lastSize = [newSize, sizeType];
36
- onSizeChange(lastSize);
37
- }
38
- }
39
- function upCallback() {
40
- window.removeEventListener('pointermove', moveCallback);
41
- window.removeEventListener('pointerup', upCallback);
42
- if (lastSize && onResize) {
43
- onResize(`${lastSize[0]}${lastSize[1]}`);
44
- }
45
- }
46
- window.addEventListener('pointermove', moveCallback);
47
- window.addEventListener('pointerup', upCallback);
48
- }
49
- return {
50
- onPointerDown: downCallback,
51
- };
52
- }
53
- function getValueFromSplitter(value, options) {
54
- const newValue = Math.round((value + Number.EPSILON) * 100) / 100;
55
- return getMinMax(newValue, options);
56
- }
57
- function getMinMax(value, options) {
58
- return Math.min(Math.max(value, options.min), options.max);
59
- }
60
- //# sourceMappingURL=useSplitPaneSize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSplitPaneSize.js","sourceRoot":"","sources":["../../../src/components/split-pane/useSplitPaneSize.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export * from './SplitPane.js';
@@ -1,99 +0,0 @@
1
- import type { RefObject } from 'react';
2
-
3
- import type {
4
- SplitPaneDirection,
5
- SplitPaneSide,
6
- SplitPaneSize,
7
- SplitPaneType,
8
- } from './SplitPane.js';
9
-
10
- interface UseSplitPaneSizeOptions {
11
- controlledSide: SplitPaneSide;
12
- direction: SplitPaneDirection;
13
- splitterRef: RefObject<HTMLDivElement>;
14
- sizeType: SplitPaneType;
15
- onSizeChange: (newSize: [number, SplitPaneType]) => void;
16
- onResize?: (newSize: SplitPaneSize) => void;
17
- }
18
-
19
- export function useSplitPaneSize(options: UseSplitPaneSizeOptions) {
20
- const {
21
- controlledSide,
22
- direction,
23
- splitterRef,
24
- sizeType,
25
- onSizeChange,
26
- onResize,
27
- } = options;
28
-
29
- function downCallback() {
30
- let lastSize: [number, SplitPaneType] | null = null;
31
- function moveCallback(event: PointerEvent) {
32
- if (!splitterRef.current) return;
33
- const { clientX, clientY } = event;
34
- const parentDiv = splitterRef.current.parentElement as HTMLDivElement;
35
- const bounds = parentDiv.getBoundingClientRect();
36
- const parentDimension =
37
- direction === 'horizontal'
38
- ? parentDiv.clientWidth
39
- : parentDiv.clientHeight;
40
-
41
- const client =
42
- direction === 'horizontal'
43
- ? clientX - bounds.left
44
- : clientY - bounds.top;
45
-
46
- const centralizingValue =
47
- direction === 'horizontal'
48
- ? splitterRef.current.clientWidth / 2
49
- : splitterRef.current.clientHeight / 2;
50
-
51
- const value =
52
- controlledSide === 'start' ? client : parentDimension - client;
53
-
54
- if (sizeType === 'px') {
55
- const newSize = getValueFromSplitter(value - centralizingValue, {
56
- min: 50,
57
- max: parentDimension - 50,
58
- });
59
- lastSize = [newSize, sizeType];
60
- onSizeChange(lastSize);
61
- } else if (sizeType === '%') {
62
- const valueDiff = (value / parentDimension) * 100;
63
- const newSize = getValueFromSplitter(valueDiff, {
64
- min: 5,
65
- max: 95,
66
- });
67
- lastSize = [newSize, sizeType];
68
- onSizeChange(lastSize);
69
- }
70
- }
71
-
72
- function upCallback() {
73
- window.removeEventListener('pointermove', moveCallback);
74
- window.removeEventListener('pointerup', upCallback);
75
- if (lastSize && onResize) {
76
- onResize(`${lastSize[0]}${lastSize[1]}`);
77
- }
78
- }
79
-
80
- window.addEventListener('pointermove', moveCallback);
81
- window.addEventListener('pointerup', upCallback);
82
- }
83
-
84
- return {
85
- onPointerDown: downCallback,
86
- };
87
- }
88
-
89
- function getValueFromSplitter(
90
- value: number,
91
- options: { min: number; max: number },
92
- ) {
93
- const newValue = Math.round((value + Number.EPSILON) * 100) / 100;
94
- return getMinMax(newValue, options);
95
- }
96
-
97
- function getMinMax(value: number, options: { min: number; max: number }) {
98
- return Math.min(Math.max(value, options.min), options.max);
99
- }