@gradio/dataframe 0.9.2 → 0.10.1-beta.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # @gradio/dataframe
2
2
 
3
+ ## 0.10.1-beta.1
4
+
5
+ ### Features
6
+
7
+ - [#9187](https://github.com/gradio-app/gradio/pull/9187) [`5bf00b7`](https://github.com/gradio-app/gradio/commit/5bf00b7524ebf399b48719120a49d15bb21bd65c) - make all component SSR compatible. Thanks @pngwn!
8
+
9
+ ### Dependency updates
10
+
11
+ - @gradio/atoms@0.8.1-beta.1
12
+ - @gradio/statustracker@0.8.0-beta.1
13
+ - @gradio/utils@0.7.0-beta.1
14
+ - @gradio/client@1.6.0-beta.1
15
+ - @gradio/upload@0.12.4-beta.1
16
+ - @gradio/markdown@0.9.4-beta.1
17
+ - @gradio/button@0.3.0-beta.1
18
+
19
+ ## 0.10.1-beta.0
20
+
21
+ ### Fixes
22
+
23
+ - [#9163](https://github.com/gradio-app/gradio/pull/9163) [`2b6cbf2`](https://github.com/gradio-app/gradio/commit/2b6cbf25908e42cf027324e54ef2cc0baad11a91) - fix exports and generate types. Thanks @pngwn!
24
+
25
+ ### Dependency updates
26
+
27
+ - @gradio/utils@0.7.0-beta.0
28
+ - @gradio/statustracker@0.8.0-beta.0
29
+ - @gradio/atoms@0.8.1-beta.0
30
+ - @gradio/client@1.6.0-beta.0
31
+ - @gradio/button@0.2.51-beta.0
32
+ - @gradio/upload@0.12.4-beta.0
33
+ - @gradio/markdown@0.9.4-beta.0
34
+
35
+ ## 0.10.0
36
+
37
+ ### Features
38
+
39
+ - [#9128](https://github.com/gradio-app/gradio/pull/9128) [`747013b`](https://github.com/gradio-app/gradio/commit/747013bbacebae6bfdda554b45e541e80b2894e0) - Allow accessing the entire row of selected values in `gr.DataFrame`. Thanks @abidlabs!
40
+ - [#9118](https://github.com/gradio-app/gradio/pull/9118) [`e1c404d`](https://github.com/gradio-app/gradio/commit/e1c404da1143fb52b659d03e028bdba1badf443d) - setup npm-previews of all packages. Thanks @pngwn!
41
+ - [#9102](https://github.com/gradio-app/gradio/pull/9102) [`efdc323`](https://github.com/gradio-app/gradio/commit/efdc3231a7bde38cfe45d10086d0d36a24c1b9b4) - Initial SSR refactor. Thanks @pngwn!
42
+
43
+ ### Dependency updates
44
+
45
+ - @gradio/utils@0.6.0
46
+ - @gradio/upload@0.12.3
47
+ - @gradio/atoms@0.8.0
48
+ - @gradio/button@0.2.50
49
+ - @gradio/client@1.5.1
50
+ - @gradio/markdown@0.9.3
51
+ - @gradio/statustracker@0.7.5
52
+
3
53
  ## 0.9.2
4
54
 
5
55
  ### Dependency updates
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">
2
2
  import { Meta, Template, Story } from "@storybook/addon-svelte-csf";
3
- import { Gradio } from "../app/src/gradio_helper";
4
3
  import Table from "./shared/Table.svelte";
5
4
  </script>
6
5
 
package/Index.svelte CHANGED
@@ -66,7 +66,10 @@
66
66
  display_value = _data?.metadata?.display_value
67
67
  ? [..._data?.metadata?.display_value]
68
68
  : null;
69
- styling = _data?.metadata?.styling ? [..._data?.metadata?.styling] : null;
69
+ styling =
70
+ !interactive && _data?.metadata?.styling
71
+ ? [..._data?.metadata?.styling]
72
+ : null;
70
73
  await tick();
71
74
 
72
75
  gradio.dispatch("change");
@@ -0,0 +1,104 @@
1
+ <script>export let value;
2
+ export let type;
3
+ export let selected = false;
4
+ export let index;
5
+ let hovered = false;
6
+ let loaded = Array.isArray(value);
7
+ </script>
8
+
9
+ {#if loaded}
10
+ <!-- TODO: fix-->
11
+ <!-- svelte-ignore a11y-no-static-element-interactions-->
12
+ <div
13
+ class:table={type === "table"}
14
+ class:gallery={type === "gallery"}
15
+ class:selected
16
+ on:mouseenter={() => (hovered = true)}
17
+ on:mouseleave={() => (hovered = false)}
18
+ >
19
+ {#if typeof value === "string"}
20
+ {value}
21
+ {:else}
22
+ <table class="">
23
+ {#each value.slice(0, 3) as row, i}
24
+ <tr>
25
+ {#each row.slice(0, 3) as cell, j}
26
+ <td>{cell}</td>
27
+ {/each}
28
+ {#if row.length > 3}
29
+ <td>…</td>
30
+ {/if}
31
+ </tr>
32
+ {/each}
33
+ {#if value.length > 3}
34
+ <div
35
+ class="overlay"
36
+ class:odd={index % 2 != 0}
37
+ class:even={index % 2 == 0}
38
+ class:button={type === "gallery"}
39
+ />
40
+ {/if}
41
+ </table>
42
+ {/if}
43
+ </div>
44
+ {/if}
45
+
46
+ <style>
47
+ table {
48
+ position: relative;
49
+ }
50
+
51
+ td {
52
+ border: 1px solid var(--table-border-color);
53
+ padding: var(--size-2);
54
+ font-size: var(--text-sm);
55
+ font-family: var(--font-mono);
56
+ }
57
+
58
+ .selected td {
59
+ border-color: var(--border-color-accent);
60
+ }
61
+
62
+ .table {
63
+ display: inline-block;
64
+ margin: 0 auto;
65
+ }
66
+
67
+ .gallery td:first-child {
68
+ border-left: none;
69
+ }
70
+
71
+ .gallery tr:first-child td {
72
+ border-top: none;
73
+ }
74
+
75
+ .gallery td:last-child {
76
+ border-right: none;
77
+ }
78
+
79
+ .gallery tr:last-child td {
80
+ border-bottom: none;
81
+ }
82
+
83
+ .overlay {
84
+ --gradient-to: transparent;
85
+ position: absolute;
86
+ bottom: 0;
87
+ background: linear-gradient(to bottom, transparent, var(--gradient-to));
88
+ width: var(--size-full);
89
+ height: 50%;
90
+ }
91
+
92
+ /* i dont know what i've done here but it is what it is */
93
+ .odd {
94
+ --gradient-to: var(--table-even-background-fill);
95
+ }
96
+
97
+ .even {
98
+ --gradient-to: var(--table-odd-background-fill);
99
+ }
100
+
101
+ .button {
102
+ --gradient-to: var(--background-fill-primary);
103
+ }
104
+ </style>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ value: (string | number)[][] | string;
5
+ type: "gallery" | "table";
6
+ selected?: boolean | undefined;
7
+ index: number;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ };
14
+ export type ExampleProps = typeof __propDef.props;
15
+ export type ExampleEvents = typeof __propDef.events;
16
+ export type ExampleSlots = typeof __propDef.slots;
17
+ export default class Example extends SvelteComponent<ExampleProps, ExampleEvents, ExampleSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,117 @@
1
+ <script context="module">export { default as BaseDataFrame } from "./shared/Table.svelte";
2
+ export { default as BaseExample } from "./Example.svelte";
3
+ </script>
4
+
5
+ <script>import { afterUpdate, tick } from "svelte";
6
+ import { Block } from "@gradio/atoms";
7
+ import Table from "./shared/Table.svelte";
8
+ import { StatusTracker } from "@gradio/statustracker";
9
+ export let headers = [];
10
+ export let elem_id = "";
11
+ export let elem_classes = [];
12
+ export let visible = true;
13
+ export let value = {
14
+ data: [["", "", ""]],
15
+ headers: ["1", "2", "3"],
16
+ metadata: null
17
+ };
18
+ let old_value = "";
19
+ export let value_is_output = false;
20
+ export let col_count;
21
+ export let row_count;
22
+ export let label = null;
23
+ export let show_label = true;
24
+ export let wrap;
25
+ export let datatype;
26
+ export let scale = null;
27
+ export let min_width = void 0;
28
+ export let root;
29
+ export let line_breaks = true;
30
+ export let column_widths = [];
31
+ export let gradio;
32
+ export let latex_delimiters;
33
+ export let height = void 0;
34
+ export let loading_status;
35
+ export let interactive;
36
+ let _headers;
37
+ let display_value;
38
+ let styling;
39
+ let values;
40
+ async function handle_change(data) {
41
+ let _data = data || value;
42
+ _headers = [..._data.headers || headers];
43
+ values = _data.data ? [..._data.data] : [];
44
+ display_value = _data?.metadata?.display_value ? [..._data?.metadata?.display_value] : null;
45
+ styling = !interactive && _data?.metadata?.styling ? [..._data?.metadata?.styling] : null;
46
+ await tick();
47
+ gradio.dispatch("change");
48
+ if (!value_is_output) {
49
+ gradio.dispatch("input");
50
+ }
51
+ }
52
+ handle_change();
53
+ afterUpdate(() => {
54
+ value_is_output = false;
55
+ });
56
+ $: {
57
+ if (old_value && JSON.stringify(value) !== old_value) {
58
+ old_value = JSON.stringify(value);
59
+ handle_change();
60
+ }
61
+ }
62
+ if (Array.isArray(value) && value?.[0]?.length === 0 || value.data?.[0]?.length === 0) {
63
+ value = {
64
+ data: [Array(col_count?.[0] || 3).fill("")],
65
+ headers: Array(col_count?.[0] || 3).fill("").map((_, i) => `${i + 1}`),
66
+ metadata: null
67
+ };
68
+ }
69
+ async function handle_value_change(data) {
70
+ if (JSON.stringify(data) !== old_value) {
71
+ value = { ...data };
72
+ old_value = JSON.stringify(value);
73
+ handle_change(data);
74
+ }
75
+ }
76
+ </script>
77
+
78
+ <Block
79
+ {visible}
80
+ padding={false}
81
+ {elem_id}
82
+ {elem_classes}
83
+ container={false}
84
+ {scale}
85
+ {min_width}
86
+ allow_overflow={false}
87
+ >
88
+ <StatusTracker
89
+ autoscroll={gradio.autoscroll}
90
+ i18n={gradio.i18n}
91
+ {...loading_status}
92
+ on:clear_status={() => gradio.dispatch("clear_status", loading_status)}
93
+ />
94
+ <Table
95
+ {root}
96
+ {label}
97
+ {show_label}
98
+ {row_count}
99
+ {col_count}
100
+ {values}
101
+ {display_value}
102
+ {styling}
103
+ headers={_headers}
104
+ on:change={(e) => handle_value_change(e.detail)}
105
+ on:select={(e) => gradio.dispatch("select", e.detail)}
106
+ {wrap}
107
+ {datatype}
108
+ {latex_delimiters}
109
+ editable={interactive}
110
+ {height}
111
+ i18n={gradio.i18n}
112
+ {line_breaks}
113
+ {column_widths}
114
+ upload={gradio.client.upload}
115
+ stream_handler={gradio.client.stream}
116
+ />
117
+ </Block>
@@ -0,0 +1,54 @@
1
+ import { SvelteComponent } from "svelte";
2
+ export { default as BaseDataFrame } from "./shared/Table.svelte";
3
+ export { default as BaseExample } from "./Example.svelte";
4
+ import type { Gradio, SelectData } from "@gradio/utils";
5
+ import type { LoadingStatus } from "@gradio/statustracker";
6
+ import type { Headers, Data, Metadata, Datatype } from "./shared/utils";
7
+ declare const __propDef: {
8
+ props: {
9
+ headers?: Headers | undefined;
10
+ elem_id?: string | undefined;
11
+ elem_classes?: string[] | undefined;
12
+ visible?: boolean | undefined;
13
+ value?: {
14
+ data: Data;
15
+ headers: Headers;
16
+ metadata: Metadata;
17
+ } | undefined;
18
+ value_is_output?: boolean | undefined;
19
+ col_count: [number, "fixed" | "dynamic"];
20
+ row_count: [number, "fixed" | "dynamic"];
21
+ label?: (string | null) | undefined;
22
+ show_label?: boolean | undefined;
23
+ wrap: boolean;
24
+ datatype: Datatype | Datatype[];
25
+ scale?: (number | null) | undefined;
26
+ min_width?: number | undefined;
27
+ root: string;
28
+ line_breaks?: boolean | undefined;
29
+ column_widths?: string[] | undefined;
30
+ gradio: Gradio<{
31
+ change: never;
32
+ select: SelectData;
33
+ input: never;
34
+ clear_status: LoadingStatus;
35
+ }>;
36
+ latex_delimiters: {
37
+ left: string;
38
+ right: string;
39
+ display: boolean;
40
+ }[];
41
+ height?: number | undefined;
42
+ loading_status: LoadingStatus;
43
+ interactive: boolean;
44
+ };
45
+ events: {
46
+ [evt: string]: CustomEvent<any>;
47
+ };
48
+ slots: {};
49
+ };
50
+ export type IndexProps = typeof __propDef.props;
51
+ export type IndexEvents = typeof __propDef.events;
52
+ export type IndexSlots = typeof __propDef.slots;
53
+ export default class Index extends SvelteComponent<IndexProps, IndexEvents, IndexSlots> {
54
+ }
@@ -0,0 +1,106 @@
1
+ <script>import { createEventDispatcher } from "svelte";
2
+ import { MarkdownCode } from "@gradio/markdown";
3
+ export let edit;
4
+ export let value = "";
5
+ export let display_value = null;
6
+ export let styling = "";
7
+ export let header = false;
8
+ export let datatype = "str";
9
+ export let latex_delimiters;
10
+ export let clear_on_focus = false;
11
+ export let select_on_focus = false;
12
+ export let line_breaks = true;
13
+ export let editable = true;
14
+ export let root;
15
+ const dispatch = createEventDispatcher();
16
+ export let el;
17
+ $:
18
+ _value = value;
19
+ function use_focus(node) {
20
+ if (clear_on_focus) {
21
+ _value = "";
22
+ }
23
+ if (select_on_focus) {
24
+ node.select();
25
+ }
26
+ node.focus();
27
+ return {};
28
+ }
29
+ function handle_blur({
30
+ currentTarget
31
+ }) {
32
+ value = currentTarget.value;
33
+ dispatch("blur");
34
+ }
35
+ </script>
36
+
37
+ {#if edit}
38
+ <input
39
+ role="textbox"
40
+ bind:this={el}
41
+ bind:value={_value}
42
+ class:header
43
+ tabindex="-1"
44
+ on:blur={handle_blur}
45
+ use:use_focus
46
+ on:keydown
47
+ />
48
+ {/if}
49
+
50
+ <span
51
+ on:dblclick
52
+ tabindex="-1"
53
+ role="button"
54
+ class:edit
55
+ on:focus|preventDefault
56
+ style={styling}
57
+ >
58
+ {#if datatype === "html"}
59
+ {@html value}
60
+ {:else if datatype === "markdown"}
61
+ <MarkdownCode
62
+ message={value.toLocaleString()}
63
+ {latex_delimiters}
64
+ {line_breaks}
65
+ chatbot={false}
66
+ {root}
67
+ />
68
+ {:else}
69
+ {editable ? value : display_value || value}
70
+ {/if}
71
+ </span>
72
+
73
+ <style>
74
+ input {
75
+ position: absolute;
76
+ top: var(--size-2);
77
+ right: var(--size-2);
78
+ bottom: var(--size-2);
79
+ left: var(--size-2);
80
+ flex: 1 1 0%;
81
+ transform: translateX(-0.1px);
82
+ outline: none;
83
+ border: none;
84
+ background: transparent;
85
+ }
86
+
87
+ span {
88
+ flex: 1 1 0%;
89
+ outline: none;
90
+ padding: var(--size-2);
91
+ -webkit-user-select: text;
92
+ -moz-user-select: text;
93
+ -ms-user-select: text;
94
+ user-select: text;
95
+ }
96
+
97
+ .header {
98
+ transform: translateX(0);
99
+ font: var(--weight-bold);
100
+ }
101
+
102
+ .edit {
103
+ opacity: 0;
104
+ pointer-events: none;
105
+ }
106
+ </style>
@@ -0,0 +1,37 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ edit: boolean;
5
+ value?: (string | number) | undefined;
6
+ display_value?: (string | null) | undefined;
7
+ styling?: string | undefined;
8
+ header?: boolean | undefined;
9
+ datatype?: ("str" | "markdown" | "html" | "number" | "bool" | "date") | undefined;
10
+ latex_delimiters: {
11
+ left: string;
12
+ right: string;
13
+ display: boolean;
14
+ }[];
15
+ clear_on_focus?: boolean | undefined;
16
+ select_on_focus?: boolean | undefined;
17
+ line_breaks?: boolean | undefined;
18
+ editable?: boolean | undefined;
19
+ root: string;
20
+ el: HTMLInputElement | null;
21
+ };
22
+ events: {
23
+ keydown: KeyboardEvent;
24
+ dblclick: MouseEvent;
25
+ focus: FocusEvent;
26
+ blur: CustomEvent<any>;
27
+ } & {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {};
31
+ };
32
+ export type EditableCellProps = typeof __propDef.props;
33
+ export type EditableCellEvents = typeof __propDef.events;
34
+ export type EditableCellSlots = typeof __propDef.slots;
35
+ export default class EditableCell extends SvelteComponent<EditableCellProps, EditableCellEvents, EditableCellSlots> {
36
+ }
37
+ export {};
@@ -0,0 +1,28 @@
1
+ <script>export let value;
2
+ </script>
3
+
4
+ <table class="input-dataframe-example">
5
+ {#each value.slice(0, 3) as row}
6
+ <tr>
7
+ {#each row.slice(0, 3) as cell}
8
+ <td class="p-2">{cell}</td>
9
+ {/each}
10
+ {#if row.length > 3}
11
+ <td class="p-2">...</td>
12
+ {/if}
13
+ </tr>
14
+ {/each}
15
+ {#if value.length > 3}
16
+ <tr>
17
+ {#each Array(Math.min(4, value[0].length)) as _}
18
+ <td class="p-2">...</td>
19
+ {/each}
20
+ </tr>
21
+ {/if}
22
+ </table>
23
+
24
+ <style>
25
+ table {
26
+ border-collapse: separate;
27
+ }
28
+ </style>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ value: (string | number)[][];
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type ExampleProps = typeof __propDef.props;
12
+ export type ExampleEvents = typeof __propDef.events;
13
+ export type ExampleSlots = typeof __propDef.slots;
14
+ export default class Example extends SvelteComponent<ExampleProps, ExampleEvents, ExampleSlots> {
15
+ }
16
+ export {};