@gradio/dataframe 0.21.7 → 0.23.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 (128) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/Dataframe.test.ts +697 -32
  3. package/Index.svelte +107 -106
  4. package/dist/Index.svelte +107 -106
  5. package/dist/Index.svelte.d.ts +0 -1
  6. package/dist/shared/BooleanCell.svelte +12 -6
  7. package/dist/shared/BooleanCell.svelte.d.ts +4 -18
  8. package/dist/shared/CellMenu.svelte +74 -49
  9. package/dist/shared/CellMenu.svelte.d.ts +5 -19
  10. package/dist/shared/CellMenuButton.svelte +3 -3
  11. package/dist/shared/CellMenuButton.svelte.d.ts +4 -18
  12. package/dist/shared/CellMenuIcons.svelte +1 -1
  13. package/dist/shared/CellMenuIcons.svelte.d.ts +4 -18
  14. package/dist/shared/DataCell.svelte +189 -0
  15. package/dist/shared/DataCell.svelte.d.ts +44 -0
  16. package/dist/shared/EditableCell.svelte +88 -64
  17. package/dist/shared/EditableCell.svelte.d.ts +8 -26
  18. package/dist/shared/EmptyRowButton.svelte +2 -2
  19. package/dist/shared/EmptyRowButton.svelte.d.ts +4 -18
  20. package/dist/shared/FilterMenu.svelte +26 -18
  21. package/dist/shared/FilterMenu.svelte.d.ts +5 -21
  22. package/dist/shared/HeaderCell.svelte +218 -0
  23. package/dist/shared/HeaderCell.svelte.d.ts +30 -0
  24. package/dist/shared/RowNumber.svelte +4 -2
  25. package/dist/shared/RowNumber.svelte.d.ts +4 -18
  26. package/dist/shared/Table.svelte +1039 -947
  27. package/dist/shared/Table.svelte.d.ts +12 -30
  28. package/dist/shared/Toolbar.svelte +32 -22
  29. package/dist/shared/Toolbar.svelte.d.ts +6 -21
  30. package/dist/shared/column_measurement.svelte.d.ts +20 -0
  31. package/dist/shared/column_measurement.svelte.js +79 -0
  32. package/dist/shared/icons/FilterIcon.svelte +14 -6
  33. package/dist/shared/icons/FilterIcon.svelte.d.ts +14 -6
  34. package/dist/shared/icons/Padlock.svelte +6 -2
  35. package/dist/shared/icons/Padlock.svelte.d.ts +4 -25
  36. package/dist/shared/icons/SelectionButtons.svelte +23 -8
  37. package/dist/shared/icons/SelectionButtons.svelte.d.ts +4 -18
  38. package/dist/shared/icons/SortButtonDown.svelte +15 -4
  39. package/dist/shared/icons/SortButtonDown.svelte.d.ts +4 -25
  40. package/dist/shared/icons/SortButtonUp.svelte +15 -5
  41. package/dist/shared/icons/SortButtonUp.svelte.d.ts +4 -25
  42. package/dist/shared/icons/SortIcon.svelte +13 -7
  43. package/dist/shared/icons/SortIcon.svelte.d.ts +7 -21
  44. package/dist/shared/tanstack/index.d.ts +3 -0
  45. package/dist/shared/tanstack/index.js +3 -0
  46. package/dist/shared/tanstack/table.svelte.d.ts +26 -0
  47. package/dist/shared/tanstack/table.svelte.js +102 -0
  48. package/dist/shared/tanstack/virtual.svelte.d.ts +14 -0
  49. package/dist/shared/tanstack/virtual.svelte.js +76 -0
  50. package/dist/shared/types.d.ts +2 -0
  51. package/dist/shared/utils/filter.d.ts +5 -0
  52. package/dist/shared/utils/filter.js +62 -0
  53. package/dist/shared/utils/selection_utils.js +1 -1
  54. package/dist/shared/utils/table_utils.d.ts +1 -14
  55. package/dist/shared/utils/table_utils.js +0 -61
  56. package/dist/standalone/Index.svelte +71 -46
  57. package/dist/standalone/Index.svelte.d.ts +4 -23
  58. package/dist/types.d.ts +32 -0
  59. package/dist/types.js +1 -0
  60. package/package.json +12 -11
  61. package/shared/BooleanCell.svelte +12 -6
  62. package/shared/CellMenu.svelte +74 -49
  63. package/shared/CellMenuButton.svelte +3 -3
  64. package/shared/CellMenuIcons.svelte +1 -1
  65. package/shared/DataCell.svelte +189 -0
  66. package/shared/EditableCell.svelte +88 -64
  67. package/shared/EmptyRowButton.svelte +2 -2
  68. package/shared/FilterMenu.svelte +26 -18
  69. package/shared/HeaderCell.svelte +218 -0
  70. package/shared/RowNumber.svelte +4 -2
  71. package/shared/Table.svelte +1039 -947
  72. package/shared/Toolbar.svelte +32 -22
  73. package/shared/column_measurement.svelte.ts +103 -0
  74. package/shared/icons/FilterIcon.svelte +14 -6
  75. package/shared/icons/Padlock.svelte +6 -2
  76. package/shared/icons/SelectionButtons.svelte +23 -8
  77. package/shared/icons/SortButtonDown.svelte +15 -4
  78. package/shared/icons/SortButtonUp.svelte +15 -5
  79. package/shared/icons/SortIcon.svelte +13 -7
  80. package/shared/tanstack/index.ts +23 -0
  81. package/shared/tanstack/table.svelte.ts +117 -0
  82. package/shared/tanstack/virtual.svelte.ts +105 -0
  83. package/shared/types.ts +3 -0
  84. package/shared/utils/filter.ts +66 -0
  85. package/shared/utils/selection_utils.ts +1 -1
  86. package/shared/utils/table_utils.ts +1 -100
  87. package/standalone/Index.svelte +71 -46
  88. package/test/filter.test.ts +350 -0
  89. package/test/selection_utils.test.ts +416 -0
  90. package/test/table_utils.test.ts +45 -112
  91. package/types.ts +34 -0
  92. package/dist/shared/TableCell.svelte +0 -330
  93. package/dist/shared/TableCell.svelte.d.ts +0 -66
  94. package/dist/shared/TableHeader.svelte +0 -344
  95. package/dist/shared/TableHeader.svelte.d.ts +0 -61
  96. package/dist/shared/VirtualTable.svelte +0 -379
  97. package/dist/shared/VirtualTable.svelte.d.ts +0 -42
  98. package/dist/shared/context/dataframe_context.d.ts +0 -180
  99. package/dist/shared/context/dataframe_context.js +0 -412
  100. package/dist/shared/icons/SortArrowDown.svelte +0 -25
  101. package/dist/shared/icons/SortArrowDown.svelte.d.ts +0 -20
  102. package/dist/shared/icons/SortArrowUp.svelte +0 -25
  103. package/dist/shared/icons/SortArrowUp.svelte.d.ts +0 -20
  104. package/dist/shared/utils/data_processing.d.ts +0 -14
  105. package/dist/shared/utils/data_processing.js +0 -47
  106. package/dist/shared/utils/drag_utils.d.ts +0 -15
  107. package/dist/shared/utils/drag_utils.js +0 -67
  108. package/dist/shared/utils/filter_utils.d.ts +0 -29
  109. package/dist/shared/utils/filter_utils.js +0 -123
  110. package/dist/shared/utils/keyboard_utils.d.ts +0 -3
  111. package/dist/shared/utils/keyboard_utils.js +0 -236
  112. package/dist/shared/utils/menu_utils.d.ts +0 -42
  113. package/dist/shared/utils/menu_utils.js +0 -58
  114. package/dist/shared/utils/sort_utils.d.ts +0 -26
  115. package/dist/shared/utils/sort_utils.js +0 -59
  116. package/shared/TableCell.svelte +0 -330
  117. package/shared/TableHeader.svelte +0 -344
  118. package/shared/VirtualTable.svelte +0 -379
  119. package/shared/context/dataframe_context.ts +0 -701
  120. package/shared/icons/SortArrowDown.svelte +0 -25
  121. package/shared/icons/SortArrowUp.svelte +0 -25
  122. package/shared/utils/data_processing.ts +0 -77
  123. package/shared/utils/drag_utils.ts +0 -105
  124. package/shared/utils/filter_utils.ts +0 -208
  125. package/shared/utils/keyboard_utils.ts +0 -309
  126. package/shared/utils/menu_utils.ts +0 -115
  127. package/shared/utils/sort_utils.ts +0 -91
  128. package/test/sort_utils.test.ts +0 -323
@@ -1,330 +0,0 @@
1
- <script lang="ts">
2
- import EditableCell from "./EditableCell.svelte";
3
- import CellMenuButton from "./CellMenuButton.svelte";
4
- import type { I18nFormatter } from "js/core/src/gradio_helper";
5
- import type { Datatype } from "./utils/utils";
6
- import type { CellValue } from "./types";
7
- import { is_cell_in_selection } from "./utils/selection_utils";
8
-
9
- export let value: CellValue;
10
- export let index: number;
11
- export let j: number;
12
- export let actual_pinned_columns: number;
13
- export let get_cell_width: (index: number) => string;
14
- export let handle_cell_click: (
15
- event: MouseEvent,
16
- row: number,
17
- col: number
18
- ) => void;
19
- export let handle_blur: (
20
- event: CustomEvent<{
21
- blur_event: FocusEvent;
22
- coords: [number, number];
23
- }>
24
- ) => void;
25
- export let toggle_cell_menu: (
26
- event: MouseEvent,
27
- row: number,
28
- col: number
29
- ) => void;
30
- export let is_cell_selected: (
31
- coords: [number, number],
32
- selected_cells: [number, number][]
33
- ) => string;
34
- export let should_show_cell_menu: (
35
- coords: [number, number],
36
- selected_cells: [number, number][],
37
- editable: boolean
38
- ) => boolean;
39
- export let selected_cells: [number, number][];
40
- export let copy_flash: boolean;
41
- export let active_cell_menu: {
42
- row: number;
43
- col: number;
44
- x: number;
45
- y: number;
46
- } | null;
47
- export let styling: string | undefined;
48
- export let latex_delimiters: {
49
- left: string;
50
- right: string;
51
- display: boolean;
52
- }[];
53
- export let line_breaks: boolean;
54
- export let datatype: Datatype;
55
- export let editing: [number, number] | false;
56
- export let max_chars: number | undefined;
57
- export let editable: boolean;
58
- export let is_static = false;
59
- export let i18n: I18nFormatter;
60
- export let components: Record<string, any> = {};
61
- export let el: {
62
- cell: HTMLTableCellElement | null;
63
- input: HTMLTextAreaElement | null;
64
- };
65
- export let handle_select_column: (col: number) => void;
66
- export let handle_select_row: (row: number) => void;
67
- export let is_dragging: boolean;
68
- export let display_value: string | undefined;
69
- export let wrap = false;
70
-
71
- function get_cell_position(col_index: number): string {
72
- if (col_index >= actual_pinned_columns) {
73
- return "auto";
74
- }
75
-
76
- if (col_index === 0) {
77
- return "0";
78
- }
79
-
80
- const previous_widths = Array(col_index)
81
- .fill(0)
82
- .map((_, idx) => {
83
- return get_cell_width(idx);
84
- })
85
- .join(" + ");
86
-
87
- return `calc(${previous_widths})`;
88
- }
89
-
90
- $: cell_classes = is_cell_selected([index, j], selected_cells || []);
91
- $: is_in_selection = is_cell_in_selection([index, j], selected_cells);
92
- $: has_no_top = cell_classes.includes("no-top");
93
- $: has_no_bottom = cell_classes.includes("no-bottom");
94
- $: has_no_left = cell_classes.includes("no-left");
95
- $: has_no_right = cell_classes.includes("no-right");
96
- </script>
97
-
98
- <td
99
- class:pinned-column={j < actual_pinned_columns}
100
- class:last-pinned={j === actual_pinned_columns - 1}
101
- tabindex={j < actual_pinned_columns ? -1 : 0}
102
- bind:this={el.cell}
103
- data-row={index}
104
- data-col={j}
105
- data-testid={`cell-${index}-${j}`}
106
- on:mousedown={(e) => handle_cell_click(e, index, j)}
107
- on:contextmenu|preventDefault={(e) => toggle_cell_menu(e, index, j)}
108
- style="width: {get_cell_width(j)}; left: {get_cell_position(j)}; {styling ||
109
- ''}"
110
- class:flash={copy_flash && is_in_selection}
111
- class:cell-selected={is_in_selection}
112
- class:no-top={has_no_top}
113
- class:no-bottom={has_no_bottom}
114
- class:no-left={has_no_left}
115
- class:no-right={has_no_right}
116
- class:menu-active={active_cell_menu &&
117
- active_cell_menu.row === index &&
118
- active_cell_menu.col === j}
119
- class:dragging={is_dragging}
120
- >
121
- <div class="cell-wrap">
122
- <EditableCell
123
- bind:value
124
- bind:el={el.input}
125
- display_value={display_value !== undefined
126
- ? display_value
127
- : String(value)}
128
- {latex_delimiters}
129
- {line_breaks}
130
- {editable}
131
- {is_static}
132
- edit={editing && editing[0] === index && editing[1] === j}
133
- {datatype}
134
- on:focus={() => {
135
- const row = index;
136
- const col = j;
137
- if (!selected_cells.some(([r, c]) => r === row && c === col)) {
138
- selected_cells = [[row, col]];
139
- }
140
- }}
141
- on:blur={handle_blur}
142
- {max_chars}
143
- {i18n}
144
- {components}
145
- show_selection_buttons={selected_cells.length === 1 &&
146
- selected_cells[0][0] === index &&
147
- selected_cells[0][1] === j}
148
- coords={[index, j]}
149
- on_select_column={handle_select_column}
150
- on_select_row={handle_select_row}
151
- {is_dragging}
152
- wrap_text={wrap}
153
- />
154
- {#if editable && should_show_cell_menu([index, j], selected_cells, editable)}
155
- <CellMenuButton on_click={(event) => toggle_cell_menu(event, index, j)} />
156
- {/if}
157
- </div>
158
- </td>
159
-
160
- <style>
161
- td {
162
- --ring-color: transparent;
163
- position: relative;
164
- outline: none;
165
- box-shadow: inset 0 0 0 1px var(--ring-color);
166
- padding: 0;
167
- border-right-width: 0px;
168
- border-left-width: 1px;
169
- border-style: solid;
170
- border-color: var(--border-color-primary);
171
- }
172
-
173
- .cell-wrap {
174
- display: flex;
175
- align-items: center;
176
- justify-content: flex-start;
177
- outline: none;
178
- min-height: var(--size-9);
179
- position: relative;
180
- height: 100%;
181
- padding: var(--size-2);
182
- box-sizing: border-box;
183
- margin: 0;
184
- gap: var(--size-1);
185
- overflow: visible;
186
- min-width: 0;
187
- border-radius: var(--table-radius);
188
- }
189
-
190
- .cell-selected {
191
- --ring-color: var(--color-accent);
192
- box-shadow: inset 0 0 0 2px var(--ring-color);
193
- z-index: 2;
194
- position: relative;
195
- }
196
-
197
- .cell-selected :global(.cell-menu-button) {
198
- display: flex;
199
- }
200
-
201
- .flash.cell-selected {
202
- animation: flash-color 700ms ease-out;
203
- }
204
-
205
- @keyframes flash-color {
206
- 0%,
207
- 30% {
208
- background: var(--color-accent-copied);
209
- }
210
-
211
- 100% {
212
- background: transparent;
213
- }
214
- }
215
-
216
- .pinned-column {
217
- position: sticky;
218
- z-index: 3;
219
- border-right: none;
220
- }
221
-
222
- .pinned-column:nth-child(odd) {
223
- background: var(--table-odd-background-fill);
224
- }
225
-
226
- .pinned-column:nth-child(even) {
227
- background: var(--table-even-background-fill);
228
- }
229
-
230
- td:first-child {
231
- border-left-width: 0px;
232
- }
233
-
234
- :global(tr:last-child) td:first-child {
235
- border-bottom-left-radius: var(--table-radius);
236
- }
237
-
238
- :global(tr:last-child) td:last-child {
239
- border-bottom-right-radius: var(--table-radius);
240
- }
241
-
242
- .dragging {
243
- cursor: crosshair;
244
- }
245
-
246
- /* Add back the cell selection border styles */
247
- .cell-selected.no-top {
248
- box-shadow:
249
- inset 2px 0 0 var(--ring-color),
250
- inset -2px 0 0 var(--ring-color),
251
- inset 0 -2px 0 var(--ring-color);
252
- }
253
-
254
- .cell-selected.no-bottom {
255
- box-shadow:
256
- inset 2px 0 0 var(--ring-color),
257
- inset -2px 0 0 var(--ring-color),
258
- inset 0 2px 0 var(--ring-color);
259
- }
260
-
261
- .cell-selected.no-left {
262
- box-shadow:
263
- inset 0 2px 0 var(--ring-color),
264
- inset -2px 0 0 var(--ring-color),
265
- inset 0 -2px 0 var(--ring-color);
266
- }
267
-
268
- .cell-selected.no-right {
269
- box-shadow:
270
- inset 0 2px 0 var(--ring-color),
271
- inset 2px 0 0 var(--ring-color),
272
- inset 0 -2px 0 var(--ring-color);
273
- }
274
-
275
- .cell-selected.no-top.no-left {
276
- box-shadow:
277
- inset -2px 0 0 var(--ring-color),
278
- inset 0 -2px 0 var(--ring-color);
279
- }
280
-
281
- .cell-selected.no-top.no-right {
282
- box-shadow:
283
- inset 2px 0 0 var(--ring-color),
284
- inset 0 -2px 0 var(--ring-color);
285
- }
286
-
287
- .cell-selected.no-bottom.no-left {
288
- box-shadow:
289
- inset -2px 0 0 var(--ring-color),
290
- inset 0 2px 0 var(--ring-color);
291
- }
292
-
293
- .cell-selected.no-bottom.no-right {
294
- box-shadow:
295
- inset 2px 0 0 var(--ring-color),
296
- inset 0 2px 0 var(--ring-color);
297
- }
298
-
299
- .cell-selected.no-top.no-bottom {
300
- box-shadow:
301
- inset 2px 0 0 var(--ring-color),
302
- inset -2px 0 0 var(--ring-color);
303
- }
304
-
305
- .cell-selected.no-left.no-right {
306
- box-shadow:
307
- inset 0 2px 0 var(--ring-color),
308
- inset 0 -2px 0 var(--ring-color);
309
- }
310
-
311
- .cell-selected.no-top.no-left.no-right {
312
- box-shadow: inset 0 -2px 0 var(--ring-color);
313
- }
314
-
315
- .cell-selected.no-bottom.no-left.no-right {
316
- box-shadow: inset 0 2px 0 var(--ring-color);
317
- }
318
-
319
- .cell-selected.no-left.no-top.no-bottom {
320
- box-shadow: inset -2px 0 0 var(--ring-color);
321
- }
322
-
323
- .cell-selected.no-right.no-top.no-bottom {
324
- box-shadow: inset 2px 0 0 var(--ring-color);
325
- }
326
-
327
- .cell-selected.no-top.no-bottom.no-left.no-right {
328
- box-shadow: none;
329
- }
330
- </style>
@@ -1,66 +0,0 @@
1
- import type { I18nFormatter } from "js/core/src/gradio_helper";
2
- import type { Datatype } from "./utils/utils";
3
- import type { CellValue } from "./types";
4
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
5
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
6
- $$bindings?: Bindings;
7
- } & Exports;
8
- (internal: unknown, props: Props & {
9
- $$events?: Events;
10
- $$slots?: Slots;
11
- }): Exports & {
12
- $set?: any;
13
- $on?: any;
14
- };
15
- z_$$bindings?: Bindings;
16
- }
17
- declare const TableCell: $$__sveltets_2_IsomorphicComponent<{
18
- value: CellValue;
19
- index: number;
20
- j: number;
21
- actual_pinned_columns: number;
22
- get_cell_width: (index: number) => string;
23
- handle_cell_click: (event: MouseEvent, row: number, col: number) => void;
24
- handle_blur: (event: CustomEvent<{
25
- blur_event: FocusEvent;
26
- coords: [number, number];
27
- }>) => void;
28
- toggle_cell_menu: (event: MouseEvent, row: number, col: number) => void;
29
- is_cell_selected: (coords: [number, number], selected_cells: [number, number][]) => string;
30
- should_show_cell_menu: (coords: [number, number], selected_cells: [number, number][], editable: boolean) => boolean;
31
- selected_cells: [number, number][];
32
- copy_flash: boolean;
33
- active_cell_menu: {
34
- row: number;
35
- col: number;
36
- x: number;
37
- y: number;
38
- } | null;
39
- styling: string | undefined;
40
- latex_delimiters: {
41
- left: string;
42
- right: string;
43
- display: boolean;
44
- }[];
45
- line_breaks: boolean;
46
- datatype: Datatype;
47
- editing: [number, number] | false;
48
- max_chars: number | undefined;
49
- editable: boolean;
50
- is_static?: boolean;
51
- i18n: I18nFormatter;
52
- components?: Record<string, any>;
53
- el: {
54
- cell: HTMLTableCellElement | null;
55
- input: HTMLTextAreaElement | null;
56
- };
57
- handle_select_column: (col: number) => void;
58
- handle_select_row: (row: number) => void;
59
- is_dragging: boolean;
60
- display_value: string | undefined;
61
- wrap?: boolean;
62
- }, {
63
- [evt: string]: CustomEvent<any>;
64
- }, {}, {}, string>;
65
- type TableCell = InstanceType<typeof TableCell>;
66
- export default TableCell;