@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
package/Index.svelte CHANGED
@@ -1,128 +1,129 @@
1
- <svelte:options accessors={true} />
2
-
3
- <script context="module" lang="ts">
1
+ <script module lang="ts">
4
2
  export { default as BaseDataFrame } from "./shared/Table.svelte";
5
3
  export { default as BaseExample } from "./Example.svelte";
6
4
  </script>
7
5
 
8
6
  <script lang="ts">
9
- import type { SharedProps } from "@gradio/utils";
7
+ import { tick } from "svelte";
8
+ import Table from "./shared/Table.svelte";
9
+ import StatusTracker from "@gradio/statustracker";
10
+ import { Block } from "@gradio/atoms";
10
11
  import { Gradio } from "@gradio/utils";
11
-
12
12
  import type { DataframeProps, DataframeEvents } from "./types";
13
13
  import { dequal } from "dequal";
14
- import { onMount } from "svelte";
15
- import DF from "@gradio/dataframe-interim";
16
- import "@gradio/dataframe-interim/css";
17
14
 
18
- let prev_data: any = null;
15
+ let _props = $props();
16
+ const gradio = new Gradio<DataframeEvents, DataframeProps>(_props);
19
17
 
20
- let changed = false;
18
+ let fullscreen = $state(gradio.props.fullscreen ?? false);
21
19
 
22
- class DataframeGradio extends Gradio<DataframeEvents, DataframeProps> {
23
- async set_data(data: Partial<DataframeProps & SharedProps>): Promise<void> {
24
- if (data.value) {
25
- changed = true;
26
- }
20
+ // align datatype array to current value headers using the original
21
+ // config-time header→datatype mapping.
22
+ // when columns are hidden or reordered, positional indices shift but
23
+ // the datatype prop doesn't update, the map keeps them synced
24
+ let aligned_datatype = $derived.by(() => {
25
+ const dt = gradio.props.datatype;
26
+ if (!Array.isArray(dt)) return dt;
27
27
 
28
- super.set_data(data);
29
- if (data.value && dequal(data.value, JSON.parse(prev_data)) === false) {
30
- // this.dispatch("change");
31
- prev_data = JSON.stringify(data.value);
32
- }
28
+ const config_headers: string[] | undefined = (gradio.props as any).headers;
29
+ const current_headers = gradio.props.value?.headers;
30
+ if (!config_headers || !current_headers) return dt;
31
+
32
+ const map = new Map<string, string>();
33
+ for (let i = 0; i < Math.min(config_headers.length, dt.length); i++) {
34
+ map.set(config_headers[i], dt[i]);
35
+ }
36
+ return current_headers.map(
37
+ (h: string, i: number) => map.get(h) ?? dt[i] ?? "str"
38
+ );
39
+ });
40
+
41
+ let old_value = $state(
42
+ gradio.props.value ? JSON.stringify(gradio.props.value) : null
43
+ );
44
+
45
+ function handle_change(detail: any): void {
46
+ gradio.props.value = detail;
47
+ const serialized = JSON.stringify(detail);
48
+ if (serialized !== old_value) {
49
+ old_value = serialized;
50
+ gradio.dispatch("change", detail);
33
51
  }
34
52
  }
35
53
 
36
- let props = $props();
37
- let gradio = new DataframeGradio(props);
38
- let el: HTMLDivElement;
39
- let Component: typeof DF | null = null;
40
- onMount(() => {
41
- Component = new DF({
42
- target: el,
43
- props: {
44
- elem_id: gradio.shared.elem_id,
45
- elem_classes: gradio.shared.elem_classes,
46
- visible: gradio.shared.visible,
47
- value: gradio.props.value,
54
+ function handle_input(): void {
55
+ gradio.dispatch("input");
56
+ }
48
57
 
49
- col_count: gradio.props.col_count,
50
- row_count: gradio.props.row_count,
51
- label: gradio.shared.label,
52
- show_label: gradio.shared.show_label,
53
- wrap: gradio.props.wrap,
54
- datatype: gradio.props.datatype,
55
- scale: gradio.shared.scale,
56
- min_width: gradio.shared.min_width,
57
- root: gradio.shared.root,
58
- line_breaks: gradio.props.line_breaks,
59
- column_widths: gradio.props.column_widths,
60
- gradio: compat_gradio,
61
- latex_delimiters: gradio.props.latex_delimiters,
62
- max_height: gradio.props.max_height,
63
- loading_status: gradio.shared.loading_status,
64
- interactive: gradio.shared.interactive,
65
- buttons: gradio.props.buttons,
66
- max_chars: gradio.props.max_chars,
67
- show_row_numbers: gradio.props.show_row_numbers,
68
- show_search: gradio.props.show_search,
69
- pinned_columns: gradio.props.pinned_columns,
70
- static_columns: gradio.props.static_columns,
71
- fullscreen: gradio.props.fullscreen,
72
- show_copy_button:
73
- gradio.props.buttons && gradio.props.buttons.includes("copy"),
74
- show_fullscreen_button:
75
- gradio.props.buttons && gradio.props.buttons.includes("fullscreen")
76
- }
77
- });
78
- });
58
+ function handle_select(detail: any): void {
59
+ gradio.dispatch("select", detail);
60
+ }
79
61
 
80
- const compat_gradio = {
81
- i18n: gradio.i18n,
82
- client: gradio.shared.client,
83
- dispatch(name: keyof DataframeEvents, detail?: any) {
84
- if (name === "input" && changed) {
85
- changed = false;
86
- return;
87
- }
88
- gradio.dispatch(name, detail);
89
- },
90
- autoscroll: gradio.shared.autoscroll
91
- };
92
- $effect(() => {
93
- if (Component) {
94
- Component.$set({
95
- elem_id: gradio.shared.elem_id,
96
- elem_classes: gradio.shared.elem_classes,
97
- visible: gradio.shared.visible,
98
- value: gradio.props.value,
62
+ function handle_edit(detail: any): void {
63
+ gradio.dispatch("edit", detail);
64
+ }
99
65
 
100
- col_count: gradio.props.col_count,
101
- row_count: gradio.props.row_count,
102
- label: gradio.shared.label,
103
- show_label: gradio.shared.show_label,
104
- wrap: gradio.props.wrap,
105
- datatype: gradio.props.datatype,
106
- scale: gradio.shared.scale,
107
- min_width: gradio.shared.min_width,
108
- root: gradio.shared.root,
109
- line_breaks: gradio.props.line_breaks,
110
- column_widths: gradio.props.column_widths,
111
- gradio: compat_gradio,
112
- latex_delimiters: gradio.props.latex_delimiters,
113
- max_height: gradio.props.max_height,
114
- loading_status: gradio.shared.loading_status,
115
- interactive: gradio.shared.interactive,
116
- buttons: gradio.props.buttons,
117
- max_chars: gradio.props.max_chars,
118
- show_row_numbers: gradio.props.show_row_numbers,
119
- show_search: gradio.props.show_search,
120
- pinned_columns: gradio.props.pinned_columns,
121
- static_columns: gradio.props.static_columns,
122
- fullscreen: gradio.props.fullscreen
123
- });
66
+ $effect(() => {
67
+ const v = gradio.props.value;
68
+ if (v) {
69
+ const serialized = JSON.stringify(v);
70
+ if (serialized !== old_value) {
71
+ old_value = serialized;
72
+ gradio.dispatch("change", v);
73
+ }
124
74
  }
125
75
  });
126
76
  </script>
127
77
 
128
- <div bind:this={el} />
78
+ <Block
79
+ visible={gradio.shared.visible}
80
+ elem_id={gradio.shared.elem_id}
81
+ elem_classes={gradio.shared.elem_classes}
82
+ scale={gradio.shared.scale}
83
+ min_width={gradio.shared.min_width}
84
+ padding={false}
85
+ container={false}
86
+ overflow_behavior="visible"
87
+ {fullscreen}
88
+ >
89
+ <StatusTracker
90
+ autoscroll={gradio.shared.autoscroll}
91
+ i18n={gradio.i18n}
92
+ {...gradio.shared.loading_status}
93
+ />
94
+ <Table
95
+ headers={gradio.props.value?.headers ?? []}
96
+ values={gradio.props.value?.data ?? []}
97
+ display_value={gradio.props.value?.metadata?.display_value ?? null}
98
+ styling={gradio.props.value?.metadata?.styling ?? null}
99
+ col_count={gradio.props.col_count}
100
+ row_count={gradio.props.row_count}
101
+ label={gradio.shared.label}
102
+ show_label={gradio.shared.show_label}
103
+ wrap={gradio.props.wrap}
104
+ datatype={aligned_datatype}
105
+ latex_delimiters={gradio.props.latex_delimiters}
106
+ max_height={gradio.props.max_height}
107
+ editable={gradio.shared.interactive ?? true}
108
+ line_breaks={gradio.props.line_breaks}
109
+ column_widths={gradio.props.column_widths ?? []}
110
+ root={gradio.shared.root}
111
+ i18n={gradio.i18n}
112
+ upload={gradio.shared.client?.upload}
113
+ stream_handler={gradio.shared.client?.stream}
114
+ buttons={gradio.props.buttons}
115
+ max_chars={gradio.props.max_chars}
116
+ show_row_numbers={gradio.props.show_row_numbers}
117
+ show_search={gradio.props.show_search}
118
+ pinned_columns={gradio.props.pinned_columns}
119
+ static_columns={gradio.props.static_columns ?? []}
120
+ {fullscreen}
121
+ onfullscreen={() => {
122
+ fullscreen = !fullscreen;
123
+ }}
124
+ onchange={handle_change}
125
+ oninput={handle_input}
126
+ onselect={handle_select}
127
+ onedit={handle_edit}
128
+ />
129
+ </Block>
package/dist/Index.svelte CHANGED
@@ -1,128 +1,129 @@
1
- <svelte:options accessors={true} />
2
-
3
- <script context="module" lang="ts">
1
+ <script module lang="ts">
4
2
  export { default as BaseDataFrame } from "./shared/Table.svelte";
5
3
  export { default as BaseExample } from "./Example.svelte";
6
4
  </script>
7
5
 
8
6
  <script lang="ts">
9
- import type { SharedProps } from "@gradio/utils";
7
+ import { tick } from "svelte";
8
+ import Table from "./shared/Table.svelte";
9
+ import StatusTracker from "@gradio/statustracker";
10
+ import { Block } from "@gradio/atoms";
10
11
  import { Gradio } from "@gradio/utils";
11
-
12
12
  import type { DataframeProps, DataframeEvents } from "./types";
13
13
  import { dequal } from "dequal";
14
- import { onMount } from "svelte";
15
- import DF from "@gradio/dataframe-interim";
16
- import "@gradio/dataframe-interim/css";
17
14
 
18
- let prev_data: any = null;
15
+ let _props = $props();
16
+ const gradio = new Gradio<DataframeEvents, DataframeProps>(_props);
19
17
 
20
- let changed = false;
18
+ let fullscreen = $state(gradio.props.fullscreen ?? false);
21
19
 
22
- class DataframeGradio extends Gradio<DataframeEvents, DataframeProps> {
23
- async set_data(data: Partial<DataframeProps & SharedProps>): Promise<void> {
24
- if (data.value) {
25
- changed = true;
26
- }
20
+ // align datatype array to current value headers using the original
21
+ // config-time header→datatype mapping.
22
+ // when columns are hidden or reordered, positional indices shift but
23
+ // the datatype prop doesn't update, the map keeps them synced
24
+ let aligned_datatype = $derived.by(() => {
25
+ const dt = gradio.props.datatype;
26
+ if (!Array.isArray(dt)) return dt;
27
27
 
28
- super.set_data(data);
29
- if (data.value && dequal(data.value, JSON.parse(prev_data)) === false) {
30
- // this.dispatch("change");
31
- prev_data = JSON.stringify(data.value);
32
- }
28
+ const config_headers: string[] | undefined = (gradio.props as any).headers;
29
+ const current_headers = gradio.props.value?.headers;
30
+ if (!config_headers || !current_headers) return dt;
31
+
32
+ const map = new Map<string, string>();
33
+ for (let i = 0; i < Math.min(config_headers.length, dt.length); i++) {
34
+ map.set(config_headers[i], dt[i]);
35
+ }
36
+ return current_headers.map(
37
+ (h: string, i: number) => map.get(h) ?? dt[i] ?? "str"
38
+ );
39
+ });
40
+
41
+ let old_value = $state(
42
+ gradio.props.value ? JSON.stringify(gradio.props.value) : null
43
+ );
44
+
45
+ function handle_change(detail: any): void {
46
+ gradio.props.value = detail;
47
+ const serialized = JSON.stringify(detail);
48
+ if (serialized !== old_value) {
49
+ old_value = serialized;
50
+ gradio.dispatch("change", detail);
33
51
  }
34
52
  }
35
53
 
36
- let props = $props();
37
- let gradio = new DataframeGradio(props);
38
- let el: HTMLDivElement;
39
- let Component: typeof DF | null = null;
40
- onMount(() => {
41
- Component = new DF({
42
- target: el,
43
- props: {
44
- elem_id: gradio.shared.elem_id,
45
- elem_classes: gradio.shared.elem_classes,
46
- visible: gradio.shared.visible,
47
- value: gradio.props.value,
54
+ function handle_input(): void {
55
+ gradio.dispatch("input");
56
+ }
48
57
 
49
- col_count: gradio.props.col_count,
50
- row_count: gradio.props.row_count,
51
- label: gradio.shared.label,
52
- show_label: gradio.shared.show_label,
53
- wrap: gradio.props.wrap,
54
- datatype: gradio.props.datatype,
55
- scale: gradio.shared.scale,
56
- min_width: gradio.shared.min_width,
57
- root: gradio.shared.root,
58
- line_breaks: gradio.props.line_breaks,
59
- column_widths: gradio.props.column_widths,
60
- gradio: compat_gradio,
61
- latex_delimiters: gradio.props.latex_delimiters,
62
- max_height: gradio.props.max_height,
63
- loading_status: gradio.shared.loading_status,
64
- interactive: gradio.shared.interactive,
65
- buttons: gradio.props.buttons,
66
- max_chars: gradio.props.max_chars,
67
- show_row_numbers: gradio.props.show_row_numbers,
68
- show_search: gradio.props.show_search,
69
- pinned_columns: gradio.props.pinned_columns,
70
- static_columns: gradio.props.static_columns,
71
- fullscreen: gradio.props.fullscreen,
72
- show_copy_button:
73
- gradio.props.buttons && gradio.props.buttons.includes("copy"),
74
- show_fullscreen_button:
75
- gradio.props.buttons && gradio.props.buttons.includes("fullscreen")
76
- }
77
- });
78
- });
58
+ function handle_select(detail: any): void {
59
+ gradio.dispatch("select", detail);
60
+ }
79
61
 
80
- const compat_gradio = {
81
- i18n: gradio.i18n,
82
- client: gradio.shared.client,
83
- dispatch(name: keyof DataframeEvents, detail?: any) {
84
- if (name === "input" && changed) {
85
- changed = false;
86
- return;
87
- }
88
- gradio.dispatch(name, detail);
89
- },
90
- autoscroll: gradio.shared.autoscroll
91
- };
92
- $effect(() => {
93
- if (Component) {
94
- Component.$set({
95
- elem_id: gradio.shared.elem_id,
96
- elem_classes: gradio.shared.elem_classes,
97
- visible: gradio.shared.visible,
98
- value: gradio.props.value,
62
+ function handle_edit(detail: any): void {
63
+ gradio.dispatch("edit", detail);
64
+ }
99
65
 
100
- col_count: gradio.props.col_count,
101
- row_count: gradio.props.row_count,
102
- label: gradio.shared.label,
103
- show_label: gradio.shared.show_label,
104
- wrap: gradio.props.wrap,
105
- datatype: gradio.props.datatype,
106
- scale: gradio.shared.scale,
107
- min_width: gradio.shared.min_width,
108
- root: gradio.shared.root,
109
- line_breaks: gradio.props.line_breaks,
110
- column_widths: gradio.props.column_widths,
111
- gradio: compat_gradio,
112
- latex_delimiters: gradio.props.latex_delimiters,
113
- max_height: gradio.props.max_height,
114
- loading_status: gradio.shared.loading_status,
115
- interactive: gradio.shared.interactive,
116
- buttons: gradio.props.buttons,
117
- max_chars: gradio.props.max_chars,
118
- show_row_numbers: gradio.props.show_row_numbers,
119
- show_search: gradio.props.show_search,
120
- pinned_columns: gradio.props.pinned_columns,
121
- static_columns: gradio.props.static_columns,
122
- fullscreen: gradio.props.fullscreen
123
- });
66
+ $effect(() => {
67
+ const v = gradio.props.value;
68
+ if (v) {
69
+ const serialized = JSON.stringify(v);
70
+ if (serialized !== old_value) {
71
+ old_value = serialized;
72
+ gradio.dispatch("change", v);
73
+ }
124
74
  }
125
75
  });
126
76
  </script>
127
77
 
128
- <div bind:this={el} />
78
+ <Block
79
+ visible={gradio.shared.visible}
80
+ elem_id={gradio.shared.elem_id}
81
+ elem_classes={gradio.shared.elem_classes}
82
+ scale={gradio.shared.scale}
83
+ min_width={gradio.shared.min_width}
84
+ padding={false}
85
+ container={false}
86
+ overflow_behavior="visible"
87
+ {fullscreen}
88
+ >
89
+ <StatusTracker
90
+ autoscroll={gradio.shared.autoscroll}
91
+ i18n={gradio.i18n}
92
+ {...gradio.shared.loading_status}
93
+ />
94
+ <Table
95
+ headers={gradio.props.value?.headers ?? []}
96
+ values={gradio.props.value?.data ?? []}
97
+ display_value={gradio.props.value?.metadata?.display_value ?? null}
98
+ styling={gradio.props.value?.metadata?.styling ?? null}
99
+ col_count={gradio.props.col_count}
100
+ row_count={gradio.props.row_count}
101
+ label={gradio.shared.label}
102
+ show_label={gradio.shared.show_label}
103
+ wrap={gradio.props.wrap}
104
+ datatype={aligned_datatype}
105
+ latex_delimiters={gradio.props.latex_delimiters}
106
+ max_height={gradio.props.max_height}
107
+ editable={gradio.shared.interactive ?? true}
108
+ line_breaks={gradio.props.line_breaks}
109
+ column_widths={gradio.props.column_widths ?? []}
110
+ root={gradio.shared.root}
111
+ i18n={gradio.i18n}
112
+ upload={gradio.shared.client?.upload}
113
+ stream_handler={gradio.shared.client?.stream}
114
+ buttons={gradio.props.buttons}
115
+ max_chars={gradio.props.max_chars}
116
+ show_row_numbers={gradio.props.show_row_numbers}
117
+ show_search={gradio.props.show_search}
118
+ pinned_columns={gradio.props.pinned_columns}
119
+ static_columns={gradio.props.static_columns ?? []}
120
+ {fullscreen}
121
+ onfullscreen={() => {
122
+ fullscreen = !fullscreen;
123
+ }}
124
+ onchange={handle_change}
125
+ oninput={handle_input}
126
+ onselect={handle_select}
127
+ onedit={handle_edit}
128
+ />
129
+ </Block>
@@ -1,6 +1,5 @@
1
1
  export { default as BaseDataFrame } from "./shared/Table.svelte";
2
2
  export { default as BaseExample } from "./Example.svelte";
3
- import "@gradio/dataframe-interim/css";
4
3
  declare const Index: import("svelte").Component<$$ComponentProps, {}, "">;
5
4
  type Index = ReturnType<typeof Index>;
6
5
  export default Index;
@@ -1,13 +1,19 @@
1
1
  <script lang="ts">
2
2
  import { BaseCheckbox } from "@gradio/checkbox";
3
3
 
4
- export let value = false;
5
- export let editable = true;
6
- export let on_change: (value: boolean) => void;
4
+ let {
5
+ value = $bindable(false),
6
+ editable = true,
7
+ on_change
8
+ }: {
9
+ value?: boolean;
10
+ editable?: boolean;
11
+ on_change: (value: boolean) => void;
12
+ } = $props();
7
13
 
8
- function handle_change(event: CustomEvent<boolean>): void {
14
+ function handle_change(val: boolean): void {
9
15
  if (editable) {
10
- on_change(event.detail);
16
+ on_change(val);
11
17
  }
12
18
  }
13
19
  </script>
@@ -17,7 +23,7 @@
17
23
  bind:value
18
24
  label=""
19
25
  interactive={editable}
20
- on:change={handle_change}
26
+ on_change={handle_change}
21
27
  />
22
28
  </div>
23
29
 
@@ -1,22 +1,8 @@
1
- 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> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const BooleanCell: $$__sveltets_2_IsomorphicComponent<{
1
+ type $$ComponentProps = {
15
2
  value?: boolean;
16
3
  editable?: boolean;
17
4
  on_change: (value: boolean) => void;
18
- }, {
19
- [evt: string]: CustomEvent<any>;
20
- }, {}, {}, string>;
21
- type BooleanCell = InstanceType<typeof BooleanCell>;
5
+ };
6
+ declare const BooleanCell: import("svelte").Component<$$ComponentProps, {}, "value">;
7
+ type BooleanCell = ReturnType<typeof BooleanCell>;
22
8
  export default BooleanCell;