radames commited on
Commit
d80bf49
1 Parent(s): cf6bfde

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -39,3 +39,4 @@ src/examples/rrt-star.rrd filter=lfs diff=lfs merge=lfs -text
39
  src/examples/structure_from_motion.rrd filter=lfs diff=lfs merge=lfs -text
40
  *.rrd filter=lfs diff=lfs merge=lfs -text
41
  src/backend/gradio_rerun/templates/component/re_viewer-DOCTrs8v.js filter=lfs diff=lfs merge=lfs -text
 
 
39
  src/examples/structure_from_motion.rrd filter=lfs diff=lfs merge=lfs -text
40
  *.rrd filter=lfs diff=lfs merge=lfs -text
41
  src/backend/gradio_rerun/templates/component/re_viewer-DOCTrs8v.js filter=lfs diff=lfs merge=lfs -text
42
+ src/backend/gradio_rerun/templates/component/index.js filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -122,6 +122,16 @@ with gr.Blocks() as demo:
122
  img = gr.Image(interactive=True, label="Image")
123
  with gr.Column():
124
  stream_blur = gr.Button("Stream Repeated Blur")
 
 
 
 
 
 
 
 
 
 
125
 
126
  with gr.Tab("Dynamic RRD"):
127
  pending_cleanup = gr.State(
@@ -139,6 +149,20 @@ with gr.Blocks() as demo:
139
  )
140
  with gr.Row():
141
  create_rrd = gr.Button("Create RRD")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
 
143
  with gr.Tab("Hosted RRD"):
144
  with gr.Row():
@@ -152,23 +176,16 @@ with gr.Blocks() as demo:
152
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
153
  ],
154
  )
155
-
156
- # Rerun 0.16 has issues when embedded in a Gradio tab, so we share a viewer between all the tabs.
157
- # In 0.17 we can instead scope each viewer to its own tab to clean up these examples further.
158
- with gr.Row():
159
- viewer = Rerun(
160
- streaming=True,
161
- )
162
-
163
- stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
164
-
165
- create_rrd.click(
166
- create_cube_rrd,
167
- inputs=[x_count, y_count, z_count, pending_cleanup],
168
- outputs=[viewer],
169
- )
170
-
171
- choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
172
 
173
 
174
  if __name__ == "__main__":
@@ -363,6 +380,19 @@ bool
363
  <td align="left"><code>True</code></td>
364
  <td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
365
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  </tbody></table>
367
 
368
 
 
122
  img = gr.Image(interactive=True, label="Image")
123
  with gr.Column():
124
  stream_blur = gr.Button("Stream Repeated Blur")
125
+ with gr.Row():
126
+ viewer = Rerun(
127
+ streaming=True,
128
+ panel_states={
129
+ "time": "collapsed",
130
+ "blueprint": "hidden",
131
+ "selection": "hidden",
132
+ },
133
+ )
134
+ stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
135
 
136
  with gr.Tab("Dynamic RRD"):
137
  pending_cleanup = gr.State(
 
149
  )
150
  with gr.Row():
151
  create_rrd = gr.Button("Create RRD")
152
+ with gr.Row():
153
+ viewer = Rerun(
154
+ streaming=True,
155
+ panel_states={
156
+ "time": "collapsed",
157
+ "blueprint": "hidden",
158
+ "selection": "hidden",
159
+ },
160
+ )
161
+ create_rrd.click(
162
+ create_cube_rrd,
163
+ inputs=[x_count, y_count, z_count, pending_cleanup],
164
+ outputs=[viewer],
165
+ )
166
 
167
  with gr.Tab("Hosted RRD"):
168
  with gr.Row():
 
176
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
177
  ],
178
  )
179
+ with gr.Row():
180
+ viewer = Rerun(
181
+ streaming=True,
182
+ panel_states={
183
+ "time": "collapsed",
184
+ "blueprint": "hidden",
185
+ "selection": "hidden",
186
+ },
187
+ )
188
+ choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
 
 
 
 
 
 
 
189
 
190
 
191
  if __name__ == "__main__":
 
380
  <td align="left"><code>True</code></td>
381
  <td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
382
  </tr>
383
+
384
+ <tr>
385
+ <td align="left"><code>panel_states</code></td>
386
+ <td align="left" style="width: 25%;">
387
+
388
+ ```python
389
+ dict[str, Any] | None
390
+ ```
391
+
392
+ </td>
393
+ <td align="left"><code>None</code></td>
394
+ <td align="left">Force viewer panels to a specific state. Any panels set cannot be toggled by the user in the viewer. Panel names are "top", "blueprint", "selection", and "time". States are "hidden", "collapsed", and "expanded".</td>
395
+ </tr>
396
  </tbody></table>
397
 
398
 
app.py CHANGED
@@ -97,6 +97,16 @@ with gr.Blocks() as demo:
97
  img = gr.Image(interactive=True, label="Image")
98
  with gr.Column():
99
  stream_blur = gr.Button("Stream Repeated Blur")
 
 
 
 
 
 
 
 
 
 
100
 
101
  with gr.Tab("Dynamic RRD"):
102
  pending_cleanup = gr.State(
@@ -114,6 +124,20 @@ with gr.Blocks() as demo:
114
  )
115
  with gr.Row():
116
  create_rrd = gr.Button("Create RRD")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
 
118
  with gr.Tab("Hosted RRD"):
119
  with gr.Row():
@@ -127,23 +151,16 @@ with gr.Blocks() as demo:
127
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
128
  ],
129
  )
130
-
131
- # Rerun 0.16 has issues when embedded in a Gradio tab, so we share a viewer between all the tabs.
132
- # In 0.17 we can instead scope each viewer to its own tab to clean up these examples further.
133
- with gr.Row():
134
- viewer = Rerun(
135
- streaming=True,
136
- )
137
-
138
- stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
139
-
140
- create_rrd.click(
141
- create_cube_rrd,
142
- inputs=[x_count, y_count, z_count, pending_cleanup],
143
- outputs=[viewer],
144
- )
145
-
146
- choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
147
 
148
 
149
  if __name__ == "__main__":
 
97
  img = gr.Image(interactive=True, label="Image")
98
  with gr.Column():
99
  stream_blur = gr.Button("Stream Repeated Blur")
100
+ with gr.Row():
101
+ viewer = Rerun(
102
+ streaming=True,
103
+ panel_states={
104
+ "time": "collapsed",
105
+ "blueprint": "hidden",
106
+ "selection": "hidden",
107
+ },
108
+ )
109
+ stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
110
 
111
  with gr.Tab("Dynamic RRD"):
112
  pending_cleanup = gr.State(
 
124
  )
125
  with gr.Row():
126
  create_rrd = gr.Button("Create RRD")
127
+ with gr.Row():
128
+ viewer = Rerun(
129
+ streaming=True,
130
+ panel_states={
131
+ "time": "collapsed",
132
+ "blueprint": "hidden",
133
+ "selection": "hidden",
134
+ },
135
+ )
136
+ create_rrd.click(
137
+ create_cube_rrd,
138
+ inputs=[x_count, y_count, z_count, pending_cleanup],
139
+ outputs=[viewer],
140
+ )
141
 
142
  with gr.Tab("Hosted RRD"):
143
  with gr.Row():
 
151
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
152
  ],
153
  )
154
+ with gr.Row():
155
+ viewer = Rerun(
156
+ streaming=True,
157
+ panel_states={
158
+ "time": "collapsed",
159
+ "blueprint": "hidden",
160
+ "selection": "hidden",
161
+ },
162
+ )
163
+ choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
 
 
 
 
 
 
 
164
 
165
 
166
  if __name__ == "__main__":
space.py CHANGED
@@ -3,7 +3,7 @@ import gradio as gr
3
  from app import demo as app
4
  import os
5
 
6
- _docs = {'Rerun': {'description': 'Creates a Rerun viewer component that can be used to display the output of a Rerun stream.', 'members': {'__init__': {'value': {'type': 'list[pathlib.Path | str]\n | pathlib.Path\n | str\n | bytes\n | Callable\n | None', 'default': 'None', 'description': 'Takes a singular or list of RRD resources. Each RRD can be a Path, a string containing a url, or a binary blob containing encoded RRD data. If callable, the function will be called whenever the app loads to set the initial value of the component.'}, 'label': {'type': 'str | None', 'default': 'None', 'description': 'The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.'}, 'every': {'type': 'float | None', 'default': 'None', 'description': "If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute."}, 'show_label': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will display label.'}, 'container': {'type': 'bool', 'default': 'True', 'description': 'If True, will place the component in a container - providing some extra padding around the border.'}, 'scale': {'type': 'int | None', 'default': 'None', 'description': 'relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.'}, 'min_width': {'type': 'int', 'default': '160', 'description': 'minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.'}, 'height': {'type': 'int | str', 'default': '640', 'description': 'height of component in pixels. If a string is provided, will be interpreted as a CSS value. If None, will be set to 640px.'}, 'visible': {'type': 'bool', 'default': 'True', 'description': 'If False, component will be hidden.'}, 'streaming': {'type': 'bool', 'default': 'False', 'description': 'If True, the data should be incrementally yielded from the source as `bytes` returned by calling `.read()` on an `rr.binary_stream()`'}, 'elem_id': {'type': 'str | None', 'default': 'None', 'description': 'An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'elem_classes': {'type': 'list[str] | str | None', 'default': 'None', 'description': 'An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'render': {'type': 'bool', 'default': 'True', 'description': 'If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.'}}, 'postprocess': {'value': {'type': 'list[pathlib.Path | str] | pathlib.Path | str | bytes', 'description': 'Expects'}}, 'preprocess': {'return': {'type': 'RerunData | None', 'description': 'A RerunData object.'}, 'value': None}}, 'events': {}}, '__meta__': {'additional_interfaces': {'RerunData': {'source': 'class RerunData(GradioRootModel):\n root: list[FileData | str]'}}, 'user_fn_refs': {'Rerun': ['RerunData']}}}
7
 
8
  abs_path = os.path.join(os.path.dirname(__file__), "css.css")
9
 
@@ -137,6 +137,16 @@ with gr.Blocks() as demo:
137
  img = gr.Image(interactive=True, label="Image")
138
  with gr.Column():
139
  stream_blur = gr.Button("Stream Repeated Blur")
 
 
 
 
 
 
 
 
 
 
140
 
141
  with gr.Tab("Dynamic RRD"):
142
  pending_cleanup = gr.State(
@@ -154,6 +164,20 @@ with gr.Blocks() as demo:
154
  )
155
  with gr.Row():
156
  create_rrd = gr.Button("Create RRD")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
 
158
  with gr.Tab("Hosted RRD"):
159
  with gr.Row():
@@ -167,23 +191,16 @@ with gr.Blocks() as demo:
167
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
168
  ],
169
  )
170
-
171
- # Rerun 0.16 has issues when embedded in a Gradio tab, so we share a viewer between all the tabs.
172
- # In 0.17 we can instead scope each viewer to its own tab to clean up these examples further.
173
- with gr.Row():
174
- viewer = Rerun(
175
- streaming=True,
176
- )
177
-
178
- stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
179
-
180
- create_rrd.click(
181
- create_cube_rrd,
182
- inputs=[x_count, y_count, z_count, pending_cleanup],
183
- outputs=[viewer],
184
- )
185
-
186
- choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
187
 
188
 
189
  if __name__ == "__main__":
 
3
  from app import demo as app
4
  import os
5
 
6
+ _docs = {'Rerun': {'description': 'Creates a Rerun viewer component that can be used to display the output of a Rerun stream.', 'members': {'__init__': {'value': {'type': 'list[pathlib.Path | str]\n | pathlib.Path\n | str\n | bytes\n | Callable\n | None', 'default': 'None', 'description': 'Takes a singular or list of RRD resources. Each RRD can be a Path, a string containing a url, or a binary blob containing encoded RRD data. If callable, the function will be called whenever the app loads to set the initial value of the component.'}, 'label': {'type': 'str | None', 'default': 'None', 'description': 'The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.'}, 'every': {'type': 'float | None', 'default': 'None', 'description': "If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute."}, 'show_label': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will display label.'}, 'container': {'type': 'bool', 'default': 'True', 'description': 'If True, will place the component in a container - providing some extra padding around the border.'}, 'scale': {'type': 'int | None', 'default': 'None', 'description': 'relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.'}, 'min_width': {'type': 'int', 'default': '160', 'description': 'minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.'}, 'height': {'type': 'int | str', 'default': '640', 'description': 'height of component in pixels. If a string is provided, will be interpreted as a CSS value. If None, will be set to 640px.'}, 'visible': {'type': 'bool', 'default': 'True', 'description': 'If False, component will be hidden.'}, 'streaming': {'type': 'bool', 'default': 'False', 'description': 'If True, the data should be incrementally yielded from the source as `bytes` returned by calling `.read()` on an `rr.binary_stream()`'}, 'elem_id': {'type': 'str | None', 'default': 'None', 'description': 'An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'elem_classes': {'type': 'list[str] | str | None', 'default': 'None', 'description': 'An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'render': {'type': 'bool', 'default': 'True', 'description': 'If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.'}, 'panel_states': {'type': 'dict[str, Any] | None', 'default': 'None', 'description': 'Force viewer panels to a specific state. Any panels set cannot be toggled by the user in the viewer. Panel names are "top", "blueprint", "selection", and "time". States are "hidden", "collapsed", and "expanded".'}}, 'postprocess': {'value': {'type': 'list[pathlib.Path | str] | pathlib.Path | str | bytes', 'description': 'Expects'}}, 'preprocess': {'return': {'type': 'RerunData | None', 'description': 'A RerunData object.'}, 'value': None}}, 'events': {}}, '__meta__': {'additional_interfaces': {'RerunData': {'source': 'class RerunData(GradioRootModel):\n root: list[FileData | str]'}}, 'user_fn_refs': {'Rerun': ['RerunData']}}}
7
 
8
  abs_path = os.path.join(os.path.dirname(__file__), "css.css")
9
 
 
137
  img = gr.Image(interactive=True, label="Image")
138
  with gr.Column():
139
  stream_blur = gr.Button("Stream Repeated Blur")
140
+ with gr.Row():
141
+ viewer = Rerun(
142
+ streaming=True,
143
+ panel_states={
144
+ "time": "collapsed",
145
+ "blueprint": "hidden",
146
+ "selection": "hidden",
147
+ },
148
+ )
149
+ stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
150
 
151
  with gr.Tab("Dynamic RRD"):
152
  pending_cleanup = gr.State(
 
164
  )
165
  with gr.Row():
166
  create_rrd = gr.Button("Create RRD")
167
+ with gr.Row():
168
+ viewer = Rerun(
169
+ streaming=True,
170
+ panel_states={
171
+ "time": "collapsed",
172
+ "blueprint": "hidden",
173
+ "selection": "hidden",
174
+ },
175
+ )
176
+ create_rrd.click(
177
+ create_cube_rrd,
178
+ inputs=[x_count, y_count, z_count, pending_cleanup],
179
+ outputs=[viewer],
180
+ )
181
 
182
  with gr.Tab("Hosted RRD"):
183
  with gr.Row():
 
191
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
192
  ],
193
  )
194
+ with gr.Row():
195
+ viewer = Rerun(
196
+ streaming=True,
197
+ panel_states={
198
+ "time": "collapsed",
199
+ "blueprint": "hidden",
200
+ "selection": "hidden",
201
+ },
202
+ )
203
+ choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
 
 
 
 
 
 
 
204
 
205
 
206
  if __name__ == "__main__":
src/README.md CHANGED
@@ -122,6 +122,16 @@ with gr.Blocks() as demo:
122
  img = gr.Image(interactive=True, label="Image")
123
  with gr.Column():
124
  stream_blur = gr.Button("Stream Repeated Blur")
 
 
 
 
 
 
 
 
 
 
125
 
126
  with gr.Tab("Dynamic RRD"):
127
  pending_cleanup = gr.State(
@@ -139,6 +149,20 @@ with gr.Blocks() as demo:
139
  )
140
  with gr.Row():
141
  create_rrd = gr.Button("Create RRD")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
 
143
  with gr.Tab("Hosted RRD"):
144
  with gr.Row():
@@ -152,23 +176,16 @@ with gr.Blocks() as demo:
152
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
153
  ],
154
  )
155
-
156
- # Rerun 0.16 has issues when embedded in a Gradio tab, so we share a viewer between all the tabs.
157
- # In 0.17 we can instead scope each viewer to its own tab to clean up these examples further.
158
- with gr.Row():
159
- viewer = Rerun(
160
- streaming=True,
161
- )
162
-
163
- stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
164
-
165
- create_rrd.click(
166
- create_cube_rrd,
167
- inputs=[x_count, y_count, z_count, pending_cleanup],
168
- outputs=[viewer],
169
- )
170
-
171
- choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
172
 
173
 
174
  if __name__ == "__main__":
@@ -363,6 +380,19 @@ bool
363
  <td align="left"><code>True</code></td>
364
  <td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
365
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  </tbody></table>
367
 
368
 
 
122
  img = gr.Image(interactive=True, label="Image")
123
  with gr.Column():
124
  stream_blur = gr.Button("Stream Repeated Blur")
125
+ with gr.Row():
126
+ viewer = Rerun(
127
+ streaming=True,
128
+ panel_states={
129
+ "time": "collapsed",
130
+ "blueprint": "hidden",
131
+ "selection": "hidden",
132
+ },
133
+ )
134
+ stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
135
 
136
  with gr.Tab("Dynamic RRD"):
137
  pending_cleanup = gr.State(
 
149
  )
150
  with gr.Row():
151
  create_rrd = gr.Button("Create RRD")
152
+ with gr.Row():
153
+ viewer = Rerun(
154
+ streaming=True,
155
+ panel_states={
156
+ "time": "collapsed",
157
+ "blueprint": "hidden",
158
+ "selection": "hidden",
159
+ },
160
+ )
161
+ create_rrd.click(
162
+ create_cube_rrd,
163
+ inputs=[x_count, y_count, z_count, pending_cleanup],
164
+ outputs=[viewer],
165
+ )
166
 
167
  with gr.Tab("Hosted RRD"):
168
  with gr.Row():
 
176
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
177
  ],
178
  )
179
+ with gr.Row():
180
+ viewer = Rerun(
181
+ streaming=True,
182
+ panel_states={
183
+ "time": "collapsed",
184
+ "blueprint": "hidden",
185
+ "selection": "hidden",
186
+ },
187
+ )
188
+ choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
 
 
 
 
 
 
 
189
 
190
 
191
  if __name__ == "__main__":
 
380
  <td align="left"><code>True</code></td>
381
  <td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
382
  </tr>
383
+
384
+ <tr>
385
+ <td align="left"><code>panel_states</code></td>
386
+ <td align="left" style="width: 25%;">
387
+
388
+ ```python
389
+ dict[str, Any] | None
390
+ ```
391
+
392
+ </td>
393
+ <td align="left"><code>None</code></td>
394
+ <td align="left">Force viewer panels to a specific state. Any panels set cannot be toggled by the user in the viewer. Panel names are "top", "blueprint", "selection", and "time". States are "hidden", "collapsed", and "expanded".</td>
395
+ </tr>
396
  </tbody></table>
397
 
398
 
src/backend/gradio_rerun/rerun.py CHANGED
@@ -47,6 +47,7 @@ class Rerun(Component, StreamingOutput):
47
  elem_id: str | None = None,
48
  elem_classes: list[str] | str | None = None,
49
  render: bool = True,
 
50
  ):
51
  """
52
  Parameters:
@@ -63,9 +64,11 @@ class Rerun(Component, StreamingOutput):
63
  elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
64
  elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.
65
  render: If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.
 
66
  """
67
  self.height = height
68
  self.streaming = streaming
 
69
  super().__init__(
70
  label=label,
71
  every=every,
@@ -81,6 +84,11 @@ class Rerun(Component, StreamingOutput):
81
  value=value,
82
  )
83
 
 
 
 
 
 
84
  def preprocess(self, payload: RerunData | None) -> RerunData | None:
85
  """
86
  This component does not accept input.
 
47
  elem_id: str | None = None,
48
  elem_classes: list[str] | str | None = None,
49
  render: bool = True,
50
+ panel_states: dict[str, Any] | None = None,
51
  ):
52
  """
53
  Parameters:
 
64
  elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
65
  elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.
66
  render: If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.
67
+ panel_states: Force viewer panels to a specific state. Any panels set cannot be toggled by the user in the viewer. Panel names are "top", "blueprint", "selection", and "time". States are "hidden", "collapsed", and "expanded".
68
  """
69
  self.height = height
70
  self.streaming = streaming
71
+ self.panel_states = panel_states
72
  super().__init__(
73
  label=label,
74
  every=every,
 
84
  value=value,
85
  )
86
 
87
+ def get_config(self):
88
+ config = super().get_config()
89
+ config["panel_states"] = self.panel_states
90
+ return config
91
+
92
  def preprocess(self, payload: RerunData | None) -> RerunData | None:
93
  """
94
  This component does not accept input.
src/backend/gradio_rerun/templates/component/index.js CHANGED
@@ -1,2737 +1,3 @@
1
- let he = null;
2
- async function Bt() {
3
- return he || (he = (await import("./re_viewer-DOCTrs8v.js")).WebHandle, he);
4
- }
5
- function Dt() {
6
- const l = new Uint8Array(16);
7
- return crypto.getRandomValues(l), Array.from(l).map((e) => e.toString(16).padStart(2, "0")).join("");
8
- }
9
- class Ht {
10
- /** @type {(import("./re_viewer.js").WebHandle) | null} */
11
- #e = null;
12
- /** @type {HTMLCanvasElement | null} */
13
- #n = null;
14
- /** @type {'ready' | 'starting' | 'stopped'} */
15
- #t = "stopped";
16
- /**
17
- * Start the viewer.
18
- *
19
- * @param {string | string[]} [rrd] URLs to `.rrd` files or WebSocket connections to our SDK.
20
- * @param {HTMLElement} [parent] The element to attach the canvas onto.
21
- * @param {boolean} [hide_welcome_screen] Whether to hide the welcome screen.
22
- * @returns {Promise<void>}
23
- */
24
- async start(e, t = document.body, n = !1) {
25
- if (this.#t !== "stopped")
26
- return;
27
- this.#t = "starting", this.#n = document.createElement("canvas"), this.#n.id = Dt(), t.append(this.#n);
28
- let i = await Bt();
29
- if (this.#t === "starting" && (this.#e = new i(), await this.#e.start(
30
- this.#n.id,
31
- void 0,
32
- void 0,
33
- void 0,
34
- n
35
- ), this.#t === "starting")) {
36
- if (this.#e.has_panicked())
37
- throw new Error(`Web viewer crashed: ${this.#e.panic_message()}`);
38
- this.#t = "ready", e && this.open(e);
39
- }
40
- }
41
- /**
42
- * Returns `true` if the viewer is ready to connect to data sources.
43
- */
44
- get ready() {
45
- return this.#t === "ready";
46
- }
47
- /**
48
- * Open a recording.
49
- *
50
- * The viewer must have been started via `WebViewer.start`.
51
- *
52
- * @see {WebViewer.start}
53
- *
54
- * @param {string | string[]} rrd URLs to `.rrd` files or WebSocket connections to our SDK.
55
- * @param {{ follow_if_http?: boolean }} options
56
- * - follow_if_http: Whether Rerun should open the resource in "Following" mode when streaming
57
- * from an HTTP url. Defaults to `false`. Ignored for non-HTTP URLs.
58
- */
59
- open(e, t = {}) {
60
- if (!this.#e)
61
- throw new Error(`attempted to open \`${e}\` in a stopped viewer`);
62
- const n = Array.isArray(e) ? e : [e];
63
- for (const i of n)
64
- if (this.#e.add_receiver(i, t.follow_if_http), this.#e.has_panicked())
65
- throw new Error(`Web viewer crashed: ${this.#e.panic_message()}`);
66
- }
67
- /**
68
- * Close a recording.
69
- *
70
- * The viewer must have been started via `WebViewer.start`.
71
- *
72
- * @see {WebViewer.start}
73
- *
74
- * @param {string | string[]} rrd URLs to `.rrd` files or WebSocket connections to our SDK.
75
- */
76
- close(e) {
77
- if (!this.#e)
78
- throw new Error(`attempted to close \`${e}\` in a stopped viewer`);
79
- const t = Array.isArray(e) ? e : [e];
80
- for (const n of t)
81
- if (this.#e.remove_receiver(n), this.#e.has_panicked())
82
- throw new Error(`Web viewer crashed: ${this.#e.panic_message()}`);
83
- }
84
- /**
85
- * Stop the viewer, freeing all associated memory.
86
- *
87
- * The same viewer instance may be started multiple times.
88
- */
89
- stop() {
90
- this.#t !== "stopped" && (this.#t = "stopped", this.#n?.remove(), this.#e?.destroy(), this.#e?.free(), this.#n = null, this.#e = null);
91
- }
92
- /**
93
- * Opens a new channel for sending log messages.
94
- *
95
- * The channel can be used to incrementally push `rrd` chunks into the viewer.
96
- *
97
- * @param {string} channel_name used to identify the channel.
98
- *
99
- * @returns {LogChannel}
100
- */
101
- open_channel(e = "rerun-io/web-viewer") {
102
- if (!this.#e)
103
- throw new Error("...");
104
- const t = crypto.randomUUID();
105
- this.#e.open_channel(t, e);
106
- const n = (o) => {
107
- if (!this.#e)
108
- throw new Error("...");
109
- this.#e.send_rrd_to_channel(t, o);
110
- }, i = () => {
111
- if (!this.#e)
112
- throw new Error("...");
113
- this.#e.close_channel(t);
114
- }, s = () => this.#t;
115
- return new Ot(n, i, s);
116
- }
117
- }
118
- class Ot {
119
- #e;
120
- #n;
121
- #t;
122
- #l = !1;
123
- /** @internal
124
- *
125
- * @param {(data: Uint8Array) => void} on_send
126
- * @param {() => void} on_close
127
- * @param {() => 'ready' | 'starting' | 'stopped'} get_state
128
- */
129
- constructor(e, t, n) {
130
- this.#e = e, this.#n = t, this.#t = n;
131
- }
132
- get ready() {
133
- return !this.#l && this.#t() === "ready";
134
- }
135
- /**
136
- * Send an `rrd` containing log messages to the viewer.
137
- *
138
- * Does nothing if `!this.ready`.
139
- *
140
- * @param {Uint8Array} rrd_bytes Is an rrd file stored in a byte array, received via some other side channel.
141
- */
142
- send_rrd(e) {
143
- this.ready && this.#e(e);
144
- }
145
- /**
146
- * Close the channel.
147
- *
148
- * Does nothing if `!this.ready`.
149
- */
150
- close() {
151
- this.ready && (this.#n(), this.#l = !0);
152
- }
153
- }
154
- const {
155
- SvelteComponent: Tt,
156
- assign: Ut,
157
- create_slot: Jt,
158
- detach: Rt,
159
- element: Xt,
160
- get_all_dirty_from_scope: Yt,
161
- get_slot_changes: Gt,
162
- get_spread_update: Kt,
163
- init: Qt,
164
- insert: xt,
165
- safe_not_equal: $t,
166
- set_dynamic_element_data: Pe,
167
- set_style: V,
168
- toggle_class: B,
169
- transition_in: dt,
170
- transition_out: mt,
171
- update_slot_base: en
172
- } = window.__gradio__svelte__internal;
173
- function tn(l) {
174
- let e, t, n;
175
- const i = (
176
- /*#slots*/
177
- l[18].default
178
- ), s = Jt(
179
- i,
180
- l,
181
- /*$$scope*/
182
- l[17],
183
- null
184
- );
185
- let o = [
186
- { "data-testid": (
187
- /*test_id*/
188
- l[7]
189
- ) },
190
- { id: (
191
- /*elem_id*/
192
- l[2]
193
- ) },
194
- {
195
- class: t = "block " + /*elem_classes*/
196
- l[3].join(" ") + " svelte-nl1om8"
197
- }
198
- ], a = {};
199
- for (let r = 0; r < o.length; r += 1)
200
- a = Ut(a, o[r]);
201
- return {
202
- c() {
203
- e = Xt(
204
- /*tag*/
205
- l[14]
206
- ), s && s.c(), Pe(
207
- /*tag*/
208
- l[14]
209
- )(e, a), B(
210
- e,
211
- "hidden",
212
- /*visible*/
213
- l[10] === !1
214
- ), B(
215
- e,
216
- "padded",
217
- /*padding*/
218
- l[6]
219
- ), B(
220
- e,
221
- "border_focus",
222
- /*border_mode*/
223
- l[5] === "focus"
224
- ), B(
225
- e,
226
- "border_contrast",
227
- /*border_mode*/
228
- l[5] === "contrast"
229
- ), B(e, "hide-container", !/*explicit_call*/
230
- l[8] && !/*container*/
231
- l[9]), V(
232
- e,
233
- "height",
234
- /*get_dimension*/
235
- l[15](
236
- /*height*/
237
- l[0]
238
- )
239
- ), V(e, "width", typeof /*width*/
240
- l[1] == "number" ? `calc(min(${/*width*/
241
- l[1]}px, 100%))` : (
242
- /*get_dimension*/
243
- l[15](
244
- /*width*/
245
- l[1]
246
- )
247
- )), V(
248
- e,
249
- "border-style",
250
- /*variant*/
251
- l[4]
252
- ), V(
253
- e,
254
- "overflow",
255
- /*allow_overflow*/
256
- l[11] ? "visible" : "hidden"
257
- ), V(
258
- e,
259
- "flex-grow",
260
- /*scale*/
261
- l[12]
262
- ), V(e, "min-width", `calc(min(${/*min_width*/
263
- l[13]}px, 100%))`), V(e, "border-width", "var(--block-border-width)");
264
- },
265
- m(r, f) {
266
- xt(r, e, f), s && s.m(e, null), n = !0;
267
- },
268
- p(r, f) {
269
- s && s.p && (!n || f & /*$$scope*/
270
- 131072) && en(
271
- s,
272
- i,
273
- r,
274
- /*$$scope*/
275
- r[17],
276
- n ? Gt(
277
- i,
278
- /*$$scope*/
279
- r[17],
280
- f,
281
- null
282
- ) : Yt(
283
- /*$$scope*/
284
- r[17]
285
- ),
286
- null
287
- ), Pe(
288
- /*tag*/
289
- r[14]
290
- )(e, a = Kt(o, [
291
- (!n || f & /*test_id*/
292
- 128) && { "data-testid": (
293
- /*test_id*/
294
- r[7]
295
- ) },
296
- (!n || f & /*elem_id*/
297
- 4) && { id: (
298
- /*elem_id*/
299
- r[2]
300
- ) },
301
- (!n || f & /*elem_classes*/
302
- 8 && t !== (t = "block " + /*elem_classes*/
303
- r[3].join(" ") + " svelte-nl1om8")) && { class: t }
304
- ])), B(
305
- e,
306
- "hidden",
307
- /*visible*/
308
- r[10] === !1
309
- ), B(
310
- e,
311
- "padded",
312
- /*padding*/
313
- r[6]
314
- ), B(
315
- e,
316
- "border_focus",
317
- /*border_mode*/
318
- r[5] === "focus"
319
- ), B(
320
- e,
321
- "border_contrast",
322
- /*border_mode*/
323
- r[5] === "contrast"
324
- ), B(e, "hide-container", !/*explicit_call*/
325
- r[8] && !/*container*/
326
- r[9]), f & /*height*/
327
- 1 && V(
328
- e,
329
- "height",
330
- /*get_dimension*/
331
- r[15](
332
- /*height*/
333
- r[0]
334
- )
335
- ), f & /*width*/
336
- 2 && V(e, "width", typeof /*width*/
337
- r[1] == "number" ? `calc(min(${/*width*/
338
- r[1]}px, 100%))` : (
339
- /*get_dimension*/
340
- r[15](
341
- /*width*/
342
- r[1]
343
- )
344
- )), f & /*variant*/
345
- 16 && V(
346
- e,
347
- "border-style",
348
- /*variant*/
349
- r[4]
350
- ), f & /*allow_overflow*/
351
- 2048 && V(
352
- e,
353
- "overflow",
354
- /*allow_overflow*/
355
- r[11] ? "visible" : "hidden"
356
- ), f & /*scale*/
357
- 4096 && V(
358
- e,
359
- "flex-grow",
360
- /*scale*/
361
- r[12]
362
- ), f & /*min_width*/
363
- 8192 && V(e, "min-width", `calc(min(${/*min_width*/
364
- r[13]}px, 100%))`);
365
- },
366
- i(r) {
367
- n || (dt(s, r), n = !0);
368
- },
369
- o(r) {
370
- mt(s, r), n = !1;
371
- },
372
- d(r) {
373
- r && Rt(e), s && s.d(r);
374
- }
375
- };
376
- }
377
- function nn(l) {
378
- let e, t = (
379
- /*tag*/
380
- l[14] && tn(l)
381
- );
382
- return {
383
- c() {
384
- t && t.c();
385
- },
386
- m(n, i) {
387
- t && t.m(n, i), e = !0;
388
- },
389
- p(n, [i]) {
390
- /*tag*/
391
- n[14] && t.p(n, i);
392
- },
393
- i(n) {
394
- e || (dt(t, n), e = !0);
395
- },
396
- o(n) {
397
- mt(t, n), e = !1;
398
- },
399
- d(n) {
400
- t && t.d(n);
401
- }
402
- };
403
- }
404
- function ln(l, e, t) {
405
- let { $$slots: n = {}, $$scope: i } = e, { height: s = void 0 } = e, { width: o = void 0 } = e, { elem_id: a = "" } = e, { elem_classes: r = [] } = e, { variant: f = "solid" } = e, { border_mode: u = "base" } = e, { padding: c = !0 } = e, { type: p = "normal" } = e, { test_id: m = void 0 } = e, { explicit_call: y = !1 } = e, { container: L = !0 } = e, { visible: v = !0 } = e, { allow_overflow: F = !0 } = e, { scale: d = null } = e, { min_width: _ = 0 } = e, q = p === "fieldset" ? "fieldset" : "div";
406
- const z = (b) => {
407
- if (b !== void 0) {
408
- if (typeof b == "number")
409
- return b + "px";
410
- if (typeof b == "string")
411
- return b;
412
- }
413
- };
414
- return l.$$set = (b) => {
415
- "height" in b && t(0, s = b.height), "width" in b && t(1, o = b.width), "elem_id" in b && t(2, a = b.elem_id), "elem_classes" in b && t(3, r = b.elem_classes), "variant" in b && t(4, f = b.variant), "border_mode" in b && t(5, u = b.border_mode), "padding" in b && t(6, c = b.padding), "type" in b && t(16, p = b.type), "test_id" in b && t(7, m = b.test_id), "explicit_call" in b && t(8, y = b.explicit_call), "container" in b && t(9, L = b.container), "visible" in b && t(10, v = b.visible), "allow_overflow" in b && t(11, F = b.allow_overflow), "scale" in b && t(12, d = b.scale), "min_width" in b && t(13, _ = b.min_width), "$$scope" in b && t(17, i = b.$$scope);
416
- }, [
417
- s,
418
- o,
419
- a,
420
- r,
421
- f,
422
- u,
423
- c,
424
- m,
425
- y,
426
- L,
427
- v,
428
- F,
429
- d,
430
- _,
431
- q,
432
- z,
433
- p,
434
- i,
435
- n
436
- ];
437
- }
438
- class sn extends Tt {
439
- constructor(e) {
440
- super(), Qt(this, e, ln, nn, $t, {
441
- height: 0,
442
- width: 1,
443
- elem_id: 2,
444
- elem_classes: 3,
445
- variant: 4,
446
- border_mode: 5,
447
- padding: 6,
448
- type: 16,
449
- test_id: 7,
450
- explicit_call: 8,
451
- container: 9,
452
- visible: 10,
453
- allow_overflow: 11,
454
- scale: 12,
455
- min_width: 13
456
- });
457
- }
458
- }
459
- const {
460
- SvelteComponent: fn,
461
- append: Se,
462
- attr: T,
463
- bubble: on,
464
- create_component: rn,
465
- destroy_component: an,
466
- detach: ht,
467
- element: ze,
468
- init: un,
469
- insert: bt,
470
- listen: cn,
471
- mount_component: _n,
472
- safe_not_equal: dn,
473
- set_data: mn,
474
- set_style: ee,
475
- space: hn,
476
- text: bn,
477
- toggle_class: M,
478
- transition_in: gn,
479
- transition_out: wn
480
- } = window.__gradio__svelte__internal;
481
- function We(l) {
482
- let e, t;
483
- return {
484
- c() {
485
- e = ze("span"), t = bn(
486
- /*label*/
487
- l[1]
488
- ), T(e, "class", "svelte-1lrphxw");
489
- },
490
- m(n, i) {
491
- bt(n, e, i), Se(e, t);
492
- },
493
- p(n, i) {
494
- i & /*label*/
495
- 2 && mn(
496
- t,
497
- /*label*/
498
- n[1]
499
- );
500
- },
501
- d(n) {
502
- n && ht(e);
503
- }
504
- };
505
- }
506
- function kn(l) {
507
- let e, t, n, i, s, o, a, r = (
508
- /*show_label*/
509
- l[2] && We(l)
510
- );
511
- return i = new /*Icon*/
512
- l[0]({}), {
513
- c() {
514
- e = ze("button"), r && r.c(), t = hn(), n = ze("div"), rn(i.$$.fragment), T(n, "class", "svelte-1lrphxw"), M(
515
- n,
516
- "small",
517
- /*size*/
518
- l[4] === "small"
519
- ), M(
520
- n,
521
- "large",
522
- /*size*/
523
- l[4] === "large"
524
- ), M(
525
- n,
526
- "medium",
527
- /*size*/
528
- l[4] === "medium"
529
- ), e.disabled = /*disabled*/
530
- l[7], T(
531
- e,
532
- "aria-label",
533
- /*label*/
534
- l[1]
535
- ), T(
536
- e,
537
- "aria-haspopup",
538
- /*hasPopup*/
539
- l[8]
540
- ), T(
541
- e,
542
- "title",
543
- /*label*/
544
- l[1]
545
- ), T(e, "class", "svelte-1lrphxw"), M(
546
- e,
547
- "pending",
548
- /*pending*/
549
- l[3]
550
- ), M(
551
- e,
552
- "padded",
553
- /*padded*/
554
- l[5]
555
- ), M(
556
- e,
557
- "highlight",
558
- /*highlight*/
559
- l[6]
560
- ), M(
561
- e,
562
- "transparent",
563
- /*transparent*/
564
- l[9]
565
- ), ee(e, "color", !/*disabled*/
566
- l[7] && /*_color*/
567
- l[12] ? (
568
- /*_color*/
569
- l[12]
570
- ) : "var(--block-label-text-color)"), ee(e, "--bg-color", /*disabled*/
571
- l[7] ? "auto" : (
572
- /*background*/
573
- l[10]
574
- )), ee(
575
- e,
576
- "margin-left",
577
- /*offset*/
578
- l[11] + "px"
579
- );
580
- },
581
- m(f, u) {
582
- bt(f, e, u), r && r.m(e, null), Se(e, t), Se(e, n), _n(i, n, null), s = !0, o || (a = cn(
583
- e,
584
- "click",
585
- /*click_handler*/
586
- l[14]
587
- ), o = !0);
588
- },
589
- p(f, [u]) {
590
- /*show_label*/
591
- f[2] ? r ? r.p(f, u) : (r = We(f), r.c(), r.m(e, t)) : r && (r.d(1), r = null), (!s || u & /*size*/
592
- 16) && M(
593
- n,
594
- "small",
595
- /*size*/
596
- f[4] === "small"
597
- ), (!s || u & /*size*/
598
- 16) && M(
599
- n,
600
- "large",
601
- /*size*/
602
- f[4] === "large"
603
- ), (!s || u & /*size*/
604
- 16) && M(
605
- n,
606
- "medium",
607
- /*size*/
608
- f[4] === "medium"
609
- ), (!s || u & /*disabled*/
610
- 128) && (e.disabled = /*disabled*/
611
- f[7]), (!s || u & /*label*/
612
- 2) && T(
613
- e,
614
- "aria-label",
615
- /*label*/
616
- f[1]
617
- ), (!s || u & /*hasPopup*/
618
- 256) && T(
619
- e,
620
- "aria-haspopup",
621
- /*hasPopup*/
622
- f[8]
623
- ), (!s || u & /*label*/
624
- 2) && T(
625
- e,
626
- "title",
627
- /*label*/
628
- f[1]
629
- ), (!s || u & /*pending*/
630
- 8) && M(
631
- e,
632
- "pending",
633
- /*pending*/
634
- f[3]
635
- ), (!s || u & /*padded*/
636
- 32) && M(
637
- e,
638
- "padded",
639
- /*padded*/
640
- f[5]
641
- ), (!s || u & /*highlight*/
642
- 64) && M(
643
- e,
644
- "highlight",
645
- /*highlight*/
646
- f[6]
647
- ), (!s || u & /*transparent*/
648
- 512) && M(
649
- e,
650
- "transparent",
651
- /*transparent*/
652
- f[9]
653
- ), u & /*disabled, _color*/
654
- 4224 && ee(e, "color", !/*disabled*/
655
- f[7] && /*_color*/
656
- f[12] ? (
657
- /*_color*/
658
- f[12]
659
- ) : "var(--block-label-text-color)"), u & /*disabled, background*/
660
- 1152 && ee(e, "--bg-color", /*disabled*/
661
- f[7] ? "auto" : (
662
- /*background*/
663
- f[10]
664
- )), u & /*offset*/
665
- 2048 && ee(
666
- e,
667
- "margin-left",
668
- /*offset*/
669
- f[11] + "px"
670
- );
671
- },
672
- i(f) {
673
- s || (gn(i.$$.fragment, f), s = !0);
674
- },
675
- o(f) {
676
- wn(i.$$.fragment, f), s = !1;
677
- },
678
- d(f) {
679
- f && ht(e), r && r.d(), an(i), o = !1, a();
680
- }
681
- };
682
- }
683
- function pn(l, e, t) {
684
- let n, { Icon: i } = e, { label: s = "" } = e, { show_label: o = !1 } = e, { pending: a = !1 } = e, { size: r = "small" } = e, { padded: f = !0 } = e, { highlight: u = !1 } = e, { disabled: c = !1 } = e, { hasPopup: p = !1 } = e, { color: m = "var(--block-label-text-color)" } = e, { transparent: y = !1 } = e, { background: L = "var(--background-fill-primary)" } = e, { offset: v = 0 } = e;
685
- function F(d) {
686
- on.call(this, l, d);
687
- }
688
- return l.$$set = (d) => {
689
- "Icon" in d && t(0, i = d.Icon), "label" in d && t(1, s = d.label), "show_label" in d && t(2, o = d.show_label), "pending" in d && t(3, a = d.pending), "size" in d && t(4, r = d.size), "padded" in d && t(5, f = d.padded), "highlight" in d && t(6, u = d.highlight), "disabled" in d && t(7, c = d.disabled), "hasPopup" in d && t(8, p = d.hasPopup), "color" in d && t(13, m = d.color), "transparent" in d && t(9, y = d.transparent), "background" in d && t(10, L = d.background), "offset" in d && t(11, v = d.offset);
690
- }, l.$$.update = () => {
691
- l.$$.dirty & /*highlight, color*/
692
- 8256 && t(12, n = u ? "var(--color-accent)" : m);
693
- }, [
694
- i,
695
- s,
696
- o,
697
- a,
698
- r,
699
- f,
700
- u,
701
- c,
702
- p,
703
- y,
704
- L,
705
- v,
706
- n,
707
- m,
708
- F
709
- ];
710
- }
711
- class yn extends fn {
712
- constructor(e) {
713
- super(), un(this, e, pn, kn, dn, {
714
- Icon: 0,
715
- label: 1,
716
- show_label: 2,
717
- pending: 3,
718
- size: 4,
719
- padded: 5,
720
- highlight: 6,
721
- disabled: 7,
722
- hasPopup: 8,
723
- color: 13,
724
- transparent: 9,
725
- background: 10,
726
- offset: 11
727
- });
728
- }
729
- }
730
- const {
731
- SvelteComponent: vn,
732
- append: Ce,
733
- attr: I,
734
- detach: qn,
735
- init: Cn,
736
- insert: Fn,
737
- noop: Fe,
738
- safe_not_equal: Ln,
739
- set_style: D,
740
- svg_element: be
741
- } = window.__gradio__svelte__internal;
742
- function Sn(l) {
743
- let e, t, n, i;
744
- return {
745
- c() {
746
- e = be("svg"), t = be("g"), n = be("path"), i = be("path"), I(n, "d", "M18,6L6.087,17.913"), D(n, "fill", "none"), D(n, "fill-rule", "nonzero"), D(n, "stroke-width", "2px"), I(t, "transform", "matrix(1.14096,-0.140958,-0.140958,1.14096,-0.0559523,0.0559523)"), I(i, "d", "M4.364,4.364L19.636,19.636"), D(i, "fill", "none"), D(i, "fill-rule", "nonzero"), D(i, "stroke-width", "2px"), I(e, "width", "100%"), I(e, "height", "100%"), I(e, "viewBox", "0 0 24 24"), I(e, "version", "1.1"), I(e, "xmlns", "http://www.w3.org/2000/svg"), I(e, "xmlns:xlink", "http://www.w3.org/1999/xlink"), I(e, "xml:space", "preserve"), I(e, "stroke", "currentColor"), D(e, "fill-rule", "evenodd"), D(e, "clip-rule", "evenodd"), D(e, "stroke-linecap", "round"), D(e, "stroke-linejoin", "round");
747
- },
748
- m(s, o) {
749
- Fn(s, e, o), Ce(e, t), Ce(t, n), Ce(e, i);
750
- },
751
- p: Fe,
752
- i: Fe,
753
- o: Fe,
754
- d(s) {
755
- s && qn(e);
756
- }
757
- };
758
- }
759
- class zn extends vn {
760
- constructor(e) {
761
- super(), Cn(this, e, null, Sn, Ln, {});
762
- }
763
- }
764
- const Mn = [
765
- { color: "red", primary: 600, secondary: 100 },
766
- { color: "green", primary: 600, secondary: 100 },
767
- { color: "blue", primary: 600, secondary: 100 },
768
- { color: "yellow", primary: 500, secondary: 100 },
769
- { color: "purple", primary: 600, secondary: 100 },
770
- { color: "teal", primary: 600, secondary: 100 },
771
- { color: "orange", primary: 600, secondary: 100 },
772
- { color: "cyan", primary: 600, secondary: 100 },
773
- { color: "lime", primary: 500, secondary: 100 },
774
- { color: "pink", primary: 600, secondary: 100 }
775
- ], Be = {
776
- inherit: "inherit",
777
- current: "currentColor",
778
- transparent: "transparent",
779
- black: "#000",
780
- white: "#fff",
781
- slate: {
782
- 50: "#f8fafc",
783
- 100: "#f1f5f9",
784
- 200: "#e2e8f0",
785
- 300: "#cbd5e1",
786
- 400: "#94a3b8",
787
- 500: "#64748b",
788
- 600: "#475569",
789
- 700: "#334155",
790
- 800: "#1e293b",
791
- 900: "#0f172a",
792
- 950: "#020617"
793
- },
794
- gray: {
795
- 50: "#f9fafb",
796
- 100: "#f3f4f6",
797
- 200: "#e5e7eb",
798
- 300: "#d1d5db",
799
- 400: "#9ca3af",
800
- 500: "#6b7280",
801
- 600: "#4b5563",
802
- 700: "#374151",
803
- 800: "#1f2937",
804
- 900: "#111827",
805
- 950: "#030712"
806
- },
807
- zinc: {
808
- 50: "#fafafa",
809
- 100: "#f4f4f5",
810
- 200: "#e4e4e7",
811
- 300: "#d4d4d8",
812
- 400: "#a1a1aa",
813
- 500: "#71717a",
814
- 600: "#52525b",
815
- 700: "#3f3f46",
816
- 800: "#27272a",
817
- 900: "#18181b",
818
- 950: "#09090b"
819
- },
820
- neutral: {
821
- 50: "#fafafa",
822
- 100: "#f5f5f5",
823
- 200: "#e5e5e5",
824
- 300: "#d4d4d4",
825
- 400: "#a3a3a3",
826
- 500: "#737373",
827
- 600: "#525252",
828
- 700: "#404040",
829
- 800: "#262626",
830
- 900: "#171717",
831
- 950: "#0a0a0a"
832
- },
833
- stone: {
834
- 50: "#fafaf9",
835
- 100: "#f5f5f4",
836
- 200: "#e7e5e4",
837
- 300: "#d6d3d1",
838
- 400: "#a8a29e",
839
- 500: "#78716c",
840
- 600: "#57534e",
841
- 700: "#44403c",
842
- 800: "#292524",
843
- 900: "#1c1917",
844
- 950: "#0c0a09"
845
- },
846
- red: {
847
- 50: "#fef2f2",
848
- 100: "#fee2e2",
849
- 200: "#fecaca",
850
- 300: "#fca5a5",
851
- 400: "#f87171",
852
- 500: "#ef4444",
853
- 600: "#dc2626",
854
- 700: "#b91c1c",
855
- 800: "#991b1b",
856
- 900: "#7f1d1d",
857
- 950: "#450a0a"
858
- },
859
- orange: {
860
- 50: "#fff7ed",
861
- 100: "#ffedd5",
862
- 200: "#fed7aa",
863
- 300: "#fdba74",
864
- 400: "#fb923c",
865
- 500: "#f97316",
866
- 600: "#ea580c",
867
- 700: "#c2410c",
868
- 800: "#9a3412",
869
- 900: "#7c2d12",
870
- 950: "#431407"
871
- },
872
- amber: {
873
- 50: "#fffbeb",
874
- 100: "#fef3c7",
875
- 200: "#fde68a",
876
- 300: "#fcd34d",
877
- 400: "#fbbf24",
878
- 500: "#f59e0b",
879
- 600: "#d97706",
880
- 700: "#b45309",
881
- 800: "#92400e",
882
- 900: "#78350f",
883
- 950: "#451a03"
884
- },
885
- yellow: {
886
- 50: "#fefce8",
887
- 100: "#fef9c3",
888
- 200: "#fef08a",
889
- 300: "#fde047",
890
- 400: "#facc15",
891
- 500: "#eab308",
892
- 600: "#ca8a04",
893
- 700: "#a16207",
894
- 800: "#854d0e",
895
- 900: "#713f12",
896
- 950: "#422006"
897
- },
898
- lime: {
899
- 50: "#f7fee7",
900
- 100: "#ecfccb",
901
- 200: "#d9f99d",
902
- 300: "#bef264",
903
- 400: "#a3e635",
904
- 500: "#84cc16",
905
- 600: "#65a30d",
906
- 700: "#4d7c0f",
907
- 800: "#3f6212",
908
- 900: "#365314",
909
- 950: "#1a2e05"
910
- },
911
- green: {
912
- 50: "#f0fdf4",
913
- 100: "#dcfce7",
914
- 200: "#bbf7d0",
915
- 300: "#86efac",
916
- 400: "#4ade80",
917
- 500: "#22c55e",
918
- 600: "#16a34a",
919
- 700: "#15803d",
920
- 800: "#166534",
921
- 900: "#14532d",
922
- 950: "#052e16"
923
- },
924
- emerald: {
925
- 50: "#ecfdf5",
926
- 100: "#d1fae5",
927
- 200: "#a7f3d0",
928
- 300: "#6ee7b7",
929
- 400: "#34d399",
930
- 500: "#10b981",
931
- 600: "#059669",
932
- 700: "#047857",
933
- 800: "#065f46",
934
- 900: "#064e3b",
935
- 950: "#022c22"
936
- },
937
- teal: {
938
- 50: "#f0fdfa",
939
- 100: "#ccfbf1",
940
- 200: "#99f6e4",
941
- 300: "#5eead4",
942
- 400: "#2dd4bf",
943
- 500: "#14b8a6",
944
- 600: "#0d9488",
945
- 700: "#0f766e",
946
- 800: "#115e59",
947
- 900: "#134e4a",
948
- 950: "#042f2e"
949
- },
950
- cyan: {
951
- 50: "#ecfeff",
952
- 100: "#cffafe",
953
- 200: "#a5f3fc",
954
- 300: "#67e8f9",
955
- 400: "#22d3ee",
956
- 500: "#06b6d4",
957
- 600: "#0891b2",
958
- 700: "#0e7490",
959
- 800: "#155e75",
960
- 900: "#164e63",
961
- 950: "#083344"
962
- },
963
- sky: {
964
- 50: "#f0f9ff",
965
- 100: "#e0f2fe",
966
- 200: "#bae6fd",
967
- 300: "#7dd3fc",
968
- 400: "#38bdf8",
969
- 500: "#0ea5e9",
970
- 600: "#0284c7",
971
- 700: "#0369a1",
972
- 800: "#075985",
973
- 900: "#0c4a6e",
974
- 950: "#082f49"
975
- },
976
- blue: {
977
- 50: "#eff6ff",
978
- 100: "#dbeafe",
979
- 200: "#bfdbfe",
980
- 300: "#93c5fd",
981
- 400: "#60a5fa",
982
- 500: "#3b82f6",
983
- 600: "#2563eb",
984
- 700: "#1d4ed8",
985
- 800: "#1e40af",
986
- 900: "#1e3a8a",
987
- 950: "#172554"
988
- },
989
- indigo: {
990
- 50: "#eef2ff",
991
- 100: "#e0e7ff",
992
- 200: "#c7d2fe",
993
- 300: "#a5b4fc",
994
- 400: "#818cf8",
995
- 500: "#6366f1",
996
- 600: "#4f46e5",
997
- 700: "#4338ca",
998
- 800: "#3730a3",
999
- 900: "#312e81",
1000
- 950: "#1e1b4b"
1001
- },
1002
- violet: {
1003
- 50: "#f5f3ff",
1004
- 100: "#ede9fe",
1005
- 200: "#ddd6fe",
1006
- 300: "#c4b5fd",
1007
- 400: "#a78bfa",
1008
- 500: "#8b5cf6",
1009
- 600: "#7c3aed",
1010
- 700: "#6d28d9",
1011
- 800: "#5b21b6",
1012
- 900: "#4c1d95",
1013
- 950: "#2e1065"
1014
- },
1015
- purple: {
1016
- 50: "#faf5ff",
1017
- 100: "#f3e8ff",
1018
- 200: "#e9d5ff",
1019
- 300: "#d8b4fe",
1020
- 400: "#c084fc",
1021
- 500: "#a855f7",
1022
- 600: "#9333ea",
1023
- 700: "#7e22ce",
1024
- 800: "#6b21a8",
1025
- 900: "#581c87",
1026
- 950: "#3b0764"
1027
- },
1028
- fuchsia: {
1029
- 50: "#fdf4ff",
1030
- 100: "#fae8ff",
1031
- 200: "#f5d0fe",
1032
- 300: "#f0abfc",
1033
- 400: "#e879f9",
1034
- 500: "#d946ef",
1035
- 600: "#c026d3",
1036
- 700: "#a21caf",
1037
- 800: "#86198f",
1038
- 900: "#701a75",
1039
- 950: "#4a044e"
1040
- },
1041
- pink: {
1042
- 50: "#fdf2f8",
1043
- 100: "#fce7f3",
1044
- 200: "#fbcfe8",
1045
- 300: "#f9a8d4",
1046
- 400: "#f472b6",
1047
- 500: "#ec4899",
1048
- 600: "#db2777",
1049
- 700: "#be185d",
1050
- 800: "#9d174d",
1051
- 900: "#831843",
1052
- 950: "#500724"
1053
- },
1054
- rose: {
1055
- 50: "#fff1f2",
1056
- 100: "#ffe4e6",
1057
- 200: "#fecdd3",
1058
- 300: "#fda4af",
1059
- 400: "#fb7185",
1060
- 500: "#f43f5e",
1061
- 600: "#e11d48",
1062
- 700: "#be123c",
1063
- 800: "#9f1239",
1064
- 900: "#881337",
1065
- 950: "#4c0519"
1066
- }
1067
- };
1068
- Mn.reduce(
1069
- (l, { color: e, primary: t, secondary: n }) => ({
1070
- ...l,
1071
- [e]: {
1072
- primary: Be[e][t],
1073
- secondary: Be[e][n]
1074
- }
1075
- }),
1076
- {}
1077
- );
1078
- function le(l) {
1079
- let e = ["", "k", "M", "G", "T", "P", "E", "Z"], t = 0;
1080
- for (; l > 1e3 && t < e.length - 1; )
1081
- l /= 1e3, t++;
1082
- let n = e[t];
1083
- return (Number.isInteger(l) ? l : l.toFixed(1)) + n;
1084
- }
1085
- function ke() {
1086
- }
1087
- function Vn(l, e) {
1088
- return l != l ? e == e : l !== e || l && typeof l == "object" || typeof l == "function";
1089
- }
1090
- const gt = typeof window < "u";
1091
- let De = gt ? () => window.performance.now() : () => Date.now(), wt = gt ? (l) => requestAnimationFrame(l) : ke;
1092
- const ie = /* @__PURE__ */ new Set();
1093
- function kt(l) {
1094
- ie.forEach((e) => {
1095
- e.c(l) || (ie.delete(e), e.f());
1096
- }), ie.size !== 0 && wt(kt);
1097
- }
1098
- function Nn(l) {
1099
- let e;
1100
- return ie.size === 0 && wt(kt), {
1101
- promise: new Promise((t) => {
1102
- ie.add(e = { c: l, f: t });
1103
- }),
1104
- abort() {
1105
- ie.delete(e);
1106
- }
1107
- };
1108
- }
1109
- const te = [];
1110
- function En(l, e = ke) {
1111
- let t;
1112
- const n = /* @__PURE__ */ new Set();
1113
- function i(a) {
1114
- if (Vn(l, a) && (l = a, t)) {
1115
- const r = !te.length;
1116
- for (const f of n)
1117
- f[1](), te.push(f, l);
1118
- if (r) {
1119
- for (let f = 0; f < te.length; f += 2)
1120
- te[f][0](te[f + 1]);
1121
- te.length = 0;
1122
- }
1123
- }
1124
- }
1125
- function s(a) {
1126
- i(a(l));
1127
- }
1128
- function o(a, r = ke) {
1129
- const f = [a, r];
1130
- return n.add(f), n.size === 1 && (t = e(i, s) || ke), a(l), () => {
1131
- n.delete(f), n.size === 0 && t && (t(), t = null);
1132
- };
1133
- }
1134
- return { set: i, update: s, subscribe: o };
1135
- }
1136
- function He(l) {
1137
- return Object.prototype.toString.call(l) === "[object Date]";
1138
- }
1139
- function Me(l, e, t, n) {
1140
- if (typeof t == "number" || He(t)) {
1141
- const i = n - t, s = (t - e) / (l.dt || 1 / 60), o = l.opts.stiffness * i, a = l.opts.damping * s, r = (o - a) * l.inv_mass, f = (s + r) * l.dt;
1142
- return Math.abs(f) < l.opts.precision && Math.abs(i) < l.opts.precision ? n : (l.settled = !1, He(t) ? new Date(t.getTime() + f) : t + f);
1143
- } else {
1144
- if (Array.isArray(t))
1145
- return t.map(
1146
- (i, s) => Me(l, e[s], t[s], n[s])
1147
- );
1148
- if (typeof t == "object") {
1149
- const i = {};
1150
- for (const s in t)
1151
- i[s] = Me(l, e[s], t[s], n[s]);
1152
- return i;
1153
- } else
1154
- throw new Error(`Cannot spring ${typeof t} values`);
1155
- }
1156
- }
1157
- function Oe(l, e = {}) {
1158
- const t = En(l), { stiffness: n = 0.15, damping: i = 0.8, precision: s = 0.01 } = e;
1159
- let o, a, r, f = l, u = l, c = 1, p = 0, m = !1;
1160
- function y(v, F = {}) {
1161
- u = v;
1162
- const d = r = {};
1163
- return l == null || F.hard || L.stiffness >= 1 && L.damping >= 1 ? (m = !0, o = De(), f = v, t.set(l = u), Promise.resolve()) : (F.soft && (p = 1 / ((F.soft === !0 ? 0.5 : +F.soft) * 60), c = 0), a || (o = De(), m = !1, a = Nn((_) => {
1164
- if (m)
1165
- return m = !1, a = null, !1;
1166
- c = Math.min(c + p, 1);
1167
- const q = {
1168
- inv_mass: c,
1169
- opts: L,
1170
- settled: !0,
1171
- dt: (_ - o) * 60 / 1e3
1172
- }, z = Me(q, f, l, u);
1173
- return o = _, f = l, t.set(l = z), q.settled && (a = null), !q.settled;
1174
- })), new Promise((_) => {
1175
- a.promise.then(() => {
1176
- d === r && _();
1177
- });
1178
- }));
1179
- }
1180
- const L = {
1181
- set: y,
1182
- update: (v, F) => y(v(u, l), F),
1183
- subscribe: t.subscribe,
1184
- stiffness: n,
1185
- damping: i,
1186
- precision: s
1187
- };
1188
- return L;
1189
- }
1190
- const {
1191
- SvelteComponent: An,
1192
- append: j,
1193
- attr: C,
1194
- component_subscribe: Te,
1195
- detach: In,
1196
- element: jn,
1197
- init: Zn,
1198
- insert: Pn,
1199
- noop: Ue,
1200
- safe_not_equal: Wn,
1201
- set_style: ge,
1202
- svg_element: Z,
1203
- toggle_class: Je
1204
- } = window.__gradio__svelte__internal, { onMount: Bn } = window.__gradio__svelte__internal;
1205
- function Dn(l) {
1206
- let e, t, n, i, s, o, a, r, f, u, c, p;
1207
- return {
1208
- c() {
1209
- e = jn("div"), t = Z("svg"), n = Z("g"), i = Z("path"), s = Z("path"), o = Z("path"), a = Z("path"), r = Z("g"), f = Z("path"), u = Z("path"), c = Z("path"), p = Z("path"), C(i, "d", "M255.926 0.754768L509.702 139.936V221.027L255.926 81.8465V0.754768Z"), C(i, "fill", "#FF7C00"), C(i, "fill-opacity", "0.4"), C(i, "class", "svelte-43sxxs"), C(s, "d", "M509.69 139.936L254.981 279.641V361.255L509.69 221.55V139.936Z"), C(s, "fill", "#FF7C00"), C(s, "class", "svelte-43sxxs"), C(o, "d", "M0.250138 139.937L254.981 279.641V361.255L0.250138 221.55V139.937Z"), C(o, "fill", "#FF7C00"), C(o, "fill-opacity", "0.4"), C(o, "class", "svelte-43sxxs"), C(a, "d", "M255.923 0.232622L0.236328 139.936V221.55L255.923 81.8469V0.232622Z"), C(a, "fill", "#FF7C00"), C(a, "class", "svelte-43sxxs"), ge(n, "transform", "translate(" + /*$top*/
1210
- l[1][0] + "px, " + /*$top*/
1211
- l[1][1] + "px)"), C(f, "d", "M255.926 141.5L509.702 280.681V361.773L255.926 222.592V141.5Z"), C(f, "fill", "#FF7C00"), C(f, "fill-opacity", "0.4"), C(f, "class", "svelte-43sxxs"), C(u, "d", "M509.69 280.679L254.981 420.384V501.998L509.69 362.293V280.679Z"), C(u, "fill", "#FF7C00"), C(u, "class", "svelte-43sxxs"), C(c, "d", "M0.250138 280.681L254.981 420.386V502L0.250138 362.295V280.681Z"), C(c, "fill", "#FF7C00"), C(c, "fill-opacity", "0.4"), C(c, "class", "svelte-43sxxs"), C(p, "d", "M255.923 140.977L0.236328 280.68V362.294L255.923 222.591V140.977Z"), C(p, "fill", "#FF7C00"), C(p, "class", "svelte-43sxxs"), ge(r, "transform", "translate(" + /*$bottom*/
1212
- l[2][0] + "px, " + /*$bottom*/
1213
- l[2][1] + "px)"), C(t, "viewBox", "-1200 -1200 3000 3000"), C(t, "fill", "none"), C(t, "xmlns", "http://www.w3.org/2000/svg"), C(t, "class", "svelte-43sxxs"), C(e, "class", "svelte-43sxxs"), Je(
1214
- e,
1215
- "margin",
1216
- /*margin*/
1217
- l[0]
1218
- );
1219
- },
1220
- m(m, y) {
1221
- Pn(m, e, y), j(e, t), j(t, n), j(n, i), j(n, s), j(n, o), j(n, a), j(t, r), j(r, f), j(r, u), j(r, c), j(r, p);
1222
- },
1223
- p(m, [y]) {
1224
- y & /*$top*/
1225
- 2 && ge(n, "transform", "translate(" + /*$top*/
1226
- m[1][0] + "px, " + /*$top*/
1227
- m[1][1] + "px)"), y & /*$bottom*/
1228
- 4 && ge(r, "transform", "translate(" + /*$bottom*/
1229
- m[2][0] + "px, " + /*$bottom*/
1230
- m[2][1] + "px)"), y & /*margin*/
1231
- 1 && Je(
1232
- e,
1233
- "margin",
1234
- /*margin*/
1235
- m[0]
1236
- );
1237
- },
1238
- i: Ue,
1239
- o: Ue,
1240
- d(m) {
1241
- m && In(e);
1242
- }
1243
- };
1244
- }
1245
- function Hn(l, e, t) {
1246
- let n, i;
1247
- var s = this && this.__awaiter || function(m, y, L, v) {
1248
- function F(d) {
1249
- return d instanceof L ? d : new L(function(_) {
1250
- _(d);
1251
- });
1252
- }
1253
- return new (L || (L = Promise))(function(d, _) {
1254
- function q(g) {
1255
- try {
1256
- b(v.next(g));
1257
- } catch (O) {
1258
- _(O);
1259
- }
1260
- }
1261
- function z(g) {
1262
- try {
1263
- b(v.throw(g));
1264
- } catch (O) {
1265
- _(O);
1266
- }
1267
- }
1268
- function b(g) {
1269
- g.done ? d(g.value) : F(g.value).then(q, z);
1270
- }
1271
- b((v = v.apply(m, y || [])).next());
1272
- });
1273
- };
1274
- let { margin: o = !0 } = e;
1275
- const a = Oe([0, 0]);
1276
- Te(l, a, (m) => t(1, n = m));
1277
- const r = Oe([0, 0]);
1278
- Te(l, r, (m) => t(2, i = m));
1279
- let f;
1280
- function u() {
1281
- return s(this, void 0, void 0, function* () {
1282
- yield Promise.all([a.set([125, 140]), r.set([-125, -140])]), yield Promise.all([a.set([-125, 140]), r.set([125, -140])]), yield Promise.all([a.set([-125, 0]), r.set([125, -0])]), yield Promise.all([a.set([125, 0]), r.set([-125, 0])]);
1283
- });
1284
- }
1285
- function c() {
1286
- return s(this, void 0, void 0, function* () {
1287
- yield u(), f || c();
1288
- });
1289
- }
1290
- function p() {
1291
- return s(this, void 0, void 0, function* () {
1292
- yield Promise.all([a.set([125, 0]), r.set([-125, 0])]), c();
1293
- });
1294
- }
1295
- return Bn(() => (p(), () => f = !0)), l.$$set = (m) => {
1296
- "margin" in m && t(0, o = m.margin);
1297
- }, [o, n, i, a, r];
1298
- }
1299
- class On extends An {
1300
- constructor(e) {
1301
- super(), Zn(this, e, Hn, Dn, Wn, { margin: 0 });
1302
- }
1303
- }
1304
- const {
1305
- SvelteComponent: Tn,
1306
- append: G,
1307
- attr: P,
1308
- binding_callbacks: Re,
1309
- check_outros: pt,
1310
- create_component: yt,
1311
- create_slot: Un,
1312
- destroy_component: vt,
1313
- destroy_each: qt,
1314
- detach: w,
1315
- element: H,
1316
- empty: se,
1317
- ensure_array_like: pe,
1318
- get_all_dirty_from_scope: Jn,
1319
- get_slot_changes: Rn,
1320
- group_outros: Ct,
1321
- init: Xn,
1322
- insert: k,
1323
- mount_component: Ft,
1324
- noop: Ve,
1325
- safe_not_equal: Yn,
1326
- set_data: A,
1327
- set_style: J,
1328
- space: W,
1329
- text: S,
1330
- toggle_class: E,
1331
- transition_in: K,
1332
- transition_out: Q,
1333
- update_slot_base: Gn
1334
- } = window.__gradio__svelte__internal, { tick: Kn } = window.__gradio__svelte__internal, { onDestroy: Qn } = window.__gradio__svelte__internal, { createEventDispatcher: xn } = window.__gradio__svelte__internal, $n = (l) => ({}), Xe = (l) => ({});
1335
- function Ye(l, e, t) {
1336
- const n = l.slice();
1337
- return n[41] = e[t], n[43] = t, n;
1338
- }
1339
- function Ge(l, e, t) {
1340
- const n = l.slice();
1341
- return n[41] = e[t], n;
1342
- }
1343
- function el(l) {
1344
- let e, t, n, i, s = (
1345
- /*i18n*/
1346
- l[1]("common.error") + ""
1347
- ), o, a, r;
1348
- t = new yn({
1349
- props: {
1350
- Icon: zn,
1351
- label: (
1352
- /*i18n*/
1353
- l[1]("common.clear")
1354
- ),
1355
- disabled: !1
1356
- }
1357
- }), t.$on(
1358
- "click",
1359
- /*click_handler*/
1360
- l[32]
1361
- );
1362
- const f = (
1363
- /*#slots*/
1364
- l[30].error
1365
- ), u = Un(
1366
- f,
1367
- l,
1368
- /*$$scope*/
1369
- l[29],
1370
- Xe
1371
- );
1372
- return {
1373
- c() {
1374
- e = H("div"), yt(t.$$.fragment), n = W(), i = H("span"), o = S(s), a = W(), u && u.c(), P(e, "class", "clear-status svelte-1yk38uw"), P(i, "class", "error svelte-1yk38uw");
1375
- },
1376
- m(c, p) {
1377
- k(c, e, p), Ft(t, e, null), k(c, n, p), k(c, i, p), G(i, o), k(c, a, p), u && u.m(c, p), r = !0;
1378
- },
1379
- p(c, p) {
1380
- const m = {};
1381
- p[0] & /*i18n*/
1382
- 2 && (m.label = /*i18n*/
1383
- c[1]("common.clear")), t.$set(m), (!r || p[0] & /*i18n*/
1384
- 2) && s !== (s = /*i18n*/
1385
- c[1]("common.error") + "") && A(o, s), u && u.p && (!r || p[0] & /*$$scope*/
1386
- 536870912) && Gn(
1387
- u,
1388
- f,
1389
- c,
1390
- /*$$scope*/
1391
- c[29],
1392
- r ? Rn(
1393
- f,
1394
- /*$$scope*/
1395
- c[29],
1396
- p,
1397
- $n
1398
- ) : Jn(
1399
- /*$$scope*/
1400
- c[29]
1401
- ),
1402
- Xe
1403
- );
1404
- },
1405
- i(c) {
1406
- r || (K(t.$$.fragment, c), K(u, c), r = !0);
1407
- },
1408
- o(c) {
1409
- Q(t.$$.fragment, c), Q(u, c), r = !1;
1410
- },
1411
- d(c) {
1412
- c && (w(e), w(n), w(i), w(a)), vt(t), u && u.d(c);
1413
- }
1414
- };
1415
- }
1416
- function tl(l) {
1417
- let e, t, n, i, s, o, a, r, f, u = (
1418
- /*variant*/
1419
- l[8] === "default" && /*show_eta_bar*/
1420
- l[18] && /*show_progress*/
1421
- l[6] === "full" && Ke(l)
1422
- );
1423
- function c(_, q) {
1424
- if (
1425
- /*progress*/
1426
- _[7]
1427
- )
1428
- return il;
1429
- if (
1430
- /*queue_position*/
1431
- _[2] !== null && /*queue_size*/
1432
- _[3] !== void 0 && /*queue_position*/
1433
- _[2] >= 0
1434
- )
1435
- return ll;
1436
- if (
1437
- /*queue_position*/
1438
- _[2] === 0
1439
- )
1440
- return nl;
1441
- }
1442
- let p = c(l), m = p && p(l), y = (
1443
- /*timer*/
1444
- l[5] && $e(l)
1445
- );
1446
- const L = [rl, ol], v = [];
1447
- function F(_, q) {
1448
- return (
1449
- /*last_progress_level*/
1450
- _[15] != null ? 0 : (
1451
- /*show_progress*/
1452
- _[6] === "full" ? 1 : -1
1453
- )
1454
- );
1455
- }
1456
- ~(s = F(l)) && (o = v[s] = L[s](l));
1457
- let d = !/*timer*/
1458
- l[5] && ft(l);
1459
- return {
1460
- c() {
1461
- u && u.c(), e = W(), t = H("div"), m && m.c(), n = W(), y && y.c(), i = W(), o && o.c(), a = W(), d && d.c(), r = se(), P(t, "class", "progress-text svelte-1yk38uw"), E(
1462
- t,
1463
- "meta-text-center",
1464
- /*variant*/
1465
- l[8] === "center"
1466
- ), E(
1467
- t,
1468
- "meta-text",
1469
- /*variant*/
1470
- l[8] === "default"
1471
- );
1472
- },
1473
- m(_, q) {
1474
- u && u.m(_, q), k(_, e, q), k(_, t, q), m && m.m(t, null), G(t, n), y && y.m(t, null), k(_, i, q), ~s && v[s].m(_, q), k(_, a, q), d && d.m(_, q), k(_, r, q), f = !0;
1475
- },
1476
- p(_, q) {
1477
- /*variant*/
1478
- _[8] === "default" && /*show_eta_bar*/
1479
- _[18] && /*show_progress*/
1480
- _[6] === "full" ? u ? u.p(_, q) : (u = Ke(_), u.c(), u.m(e.parentNode, e)) : u && (u.d(1), u = null), p === (p = c(_)) && m ? m.p(_, q) : (m && m.d(1), m = p && p(_), m && (m.c(), m.m(t, n))), /*timer*/
1481
- _[5] ? y ? y.p(_, q) : (y = $e(_), y.c(), y.m(t, null)) : y && (y.d(1), y = null), (!f || q[0] & /*variant*/
1482
- 256) && E(
1483
- t,
1484
- "meta-text-center",
1485
- /*variant*/
1486
- _[8] === "center"
1487
- ), (!f || q[0] & /*variant*/
1488
- 256) && E(
1489
- t,
1490
- "meta-text",
1491
- /*variant*/
1492
- _[8] === "default"
1493
- );
1494
- let z = s;
1495
- s = F(_), s === z ? ~s && v[s].p(_, q) : (o && (Ct(), Q(v[z], 1, 1, () => {
1496
- v[z] = null;
1497
- }), pt()), ~s ? (o = v[s], o ? o.p(_, q) : (o = v[s] = L[s](_), o.c()), K(o, 1), o.m(a.parentNode, a)) : o = null), /*timer*/
1498
- _[5] ? d && (d.d(1), d = null) : d ? d.p(_, q) : (d = ft(_), d.c(), d.m(r.parentNode, r));
1499
- },
1500
- i(_) {
1501
- f || (K(o), f = !0);
1502
- },
1503
- o(_) {
1504
- Q(o), f = !1;
1505
- },
1506
- d(_) {
1507
- _ && (w(e), w(t), w(i), w(a), w(r)), u && u.d(_), m && m.d(), y && y.d(), ~s && v[s].d(_), d && d.d(_);
1508
- }
1509
- };
1510
- }
1511
- function Ke(l) {
1512
- let e, t = `translateX(${/*eta_level*/
1513
- (l[17] || 0) * 100 - 100}%)`;
1514
- return {
1515
- c() {
1516
- e = H("div"), P(e, "class", "eta-bar svelte-1yk38uw"), J(e, "transform", t);
1517
- },
1518
- m(n, i) {
1519
- k(n, e, i);
1520
- },
1521
- p(n, i) {
1522
- i[0] & /*eta_level*/
1523
- 131072 && t !== (t = `translateX(${/*eta_level*/
1524
- (n[17] || 0) * 100 - 100}%)`) && J(e, "transform", t);
1525
- },
1526
- d(n) {
1527
- n && w(e);
1528
- }
1529
- };
1530
- }
1531
- function nl(l) {
1532
- let e;
1533
- return {
1534
- c() {
1535
- e = S("processing |");
1536
- },
1537
- m(t, n) {
1538
- k(t, e, n);
1539
- },
1540
- p: Ve,
1541
- d(t) {
1542
- t && w(e);
1543
- }
1544
- };
1545
- }
1546
- function ll(l) {
1547
- let e, t = (
1548
- /*queue_position*/
1549
- l[2] + 1 + ""
1550
- ), n, i, s, o;
1551
- return {
1552
- c() {
1553
- e = S("queue: "), n = S(t), i = S("/"), s = S(
1554
- /*queue_size*/
1555
- l[3]
1556
- ), o = S(" |");
1557
- },
1558
- m(a, r) {
1559
- k(a, e, r), k(a, n, r), k(a, i, r), k(a, s, r), k(a, o, r);
1560
- },
1561
- p(a, r) {
1562
- r[0] & /*queue_position*/
1563
- 4 && t !== (t = /*queue_position*/
1564
- a[2] + 1 + "") && A(n, t), r[0] & /*queue_size*/
1565
- 8 && A(
1566
- s,
1567
- /*queue_size*/
1568
- a[3]
1569
- );
1570
- },
1571
- d(a) {
1572
- a && (w(e), w(n), w(i), w(s), w(o));
1573
- }
1574
- };
1575
- }
1576
- function il(l) {
1577
- let e, t = pe(
1578
- /*progress*/
1579
- l[7]
1580
- ), n = [];
1581
- for (let i = 0; i < t.length; i += 1)
1582
- n[i] = xe(Ge(l, t, i));
1583
- return {
1584
- c() {
1585
- for (let i = 0; i < n.length; i += 1)
1586
- n[i].c();
1587
- e = se();
1588
- },
1589
- m(i, s) {
1590
- for (let o = 0; o < n.length; o += 1)
1591
- n[o] && n[o].m(i, s);
1592
- k(i, e, s);
1593
- },
1594
- p(i, s) {
1595
- if (s[0] & /*progress*/
1596
- 128) {
1597
- t = pe(
1598
- /*progress*/
1599
- i[7]
1600
- );
1601
- let o;
1602
- for (o = 0; o < t.length; o += 1) {
1603
- const a = Ge(i, t, o);
1604
- n[o] ? n[o].p(a, s) : (n[o] = xe(a), n[o].c(), n[o].m(e.parentNode, e));
1605
- }
1606
- for (; o < n.length; o += 1)
1607
- n[o].d(1);
1608
- n.length = t.length;
1609
- }
1610
- },
1611
- d(i) {
1612
- i && w(e), qt(n, i);
1613
- }
1614
- };
1615
- }
1616
- function Qe(l) {
1617
- let e, t = (
1618
- /*p*/
1619
- l[41].unit + ""
1620
- ), n, i, s = " ", o;
1621
- function a(u, c) {
1622
- return (
1623
- /*p*/
1624
- u[41].length != null ? fl : sl
1625
- );
1626
- }
1627
- let r = a(l), f = r(l);
1628
- return {
1629
- c() {
1630
- f.c(), e = W(), n = S(t), i = S(" | "), o = S(s);
1631
- },
1632
- m(u, c) {
1633
- f.m(u, c), k(u, e, c), k(u, n, c), k(u, i, c), k(u, o, c);
1634
- },
1635
- p(u, c) {
1636
- r === (r = a(u)) && f ? f.p(u, c) : (f.d(1), f = r(u), f && (f.c(), f.m(e.parentNode, e))), c[0] & /*progress*/
1637
- 128 && t !== (t = /*p*/
1638
- u[41].unit + "") && A(n, t);
1639
- },
1640
- d(u) {
1641
- u && (w(e), w(n), w(i), w(o)), f.d(u);
1642
- }
1643
- };
1644
- }
1645
- function sl(l) {
1646
- let e = le(
1647
- /*p*/
1648
- l[41].index || 0
1649
- ) + "", t;
1650
- return {
1651
- c() {
1652
- t = S(e);
1653
- },
1654
- m(n, i) {
1655
- k(n, t, i);
1656
- },
1657
- p(n, i) {
1658
- i[0] & /*progress*/
1659
- 128 && e !== (e = le(
1660
- /*p*/
1661
- n[41].index || 0
1662
- ) + "") && A(t, e);
1663
- },
1664
- d(n) {
1665
- n && w(t);
1666
- }
1667
- };
1668
- }
1669
- function fl(l) {
1670
- let e = le(
1671
- /*p*/
1672
- l[41].index || 0
1673
- ) + "", t, n, i = le(
1674
- /*p*/
1675
- l[41].length
1676
- ) + "", s;
1677
- return {
1678
- c() {
1679
- t = S(e), n = S("/"), s = S(i);
1680
- },
1681
- m(o, a) {
1682
- k(o, t, a), k(o, n, a), k(o, s, a);
1683
- },
1684
- p(o, a) {
1685
- a[0] & /*progress*/
1686
- 128 && e !== (e = le(
1687
- /*p*/
1688
- o[41].index || 0
1689
- ) + "") && A(t, e), a[0] & /*progress*/
1690
- 128 && i !== (i = le(
1691
- /*p*/
1692
- o[41].length
1693
- ) + "") && A(s, i);
1694
- },
1695
- d(o) {
1696
- o && (w(t), w(n), w(s));
1697
- }
1698
- };
1699
- }
1700
- function xe(l) {
1701
- let e, t = (
1702
- /*p*/
1703
- l[41].index != null && Qe(l)
1704
- );
1705
- return {
1706
- c() {
1707
- t && t.c(), e = se();
1708
- },
1709
- m(n, i) {
1710
- t && t.m(n, i), k(n, e, i);
1711
- },
1712
- p(n, i) {
1713
- /*p*/
1714
- n[41].index != null ? t ? t.p(n, i) : (t = Qe(n), t.c(), t.m(e.parentNode, e)) : t && (t.d(1), t = null);
1715
- },
1716
- d(n) {
1717
- n && w(e), t && t.d(n);
1718
- }
1719
- };
1720
- }
1721
- function $e(l) {
1722
- let e, t = (
1723
- /*eta*/
1724
- l[0] ? `/${/*formatted_eta*/
1725
- l[19]}` : ""
1726
- ), n, i;
1727
- return {
1728
- c() {
1729
- e = S(
1730
- /*formatted_timer*/
1731
- l[20]
1732
- ), n = S(t), i = S("s");
1733
- },
1734
- m(s, o) {
1735
- k(s, e, o), k(s, n, o), k(s, i, o);
1736
- },
1737
- p(s, o) {
1738
- o[0] & /*formatted_timer*/
1739
- 1048576 && A(
1740
- e,
1741
- /*formatted_timer*/
1742
- s[20]
1743
- ), o[0] & /*eta, formatted_eta*/
1744
- 524289 && t !== (t = /*eta*/
1745
- s[0] ? `/${/*formatted_eta*/
1746
- s[19]}` : "") && A(n, t);
1747
- },
1748
- d(s) {
1749
- s && (w(e), w(n), w(i));
1750
- }
1751
- };
1752
- }
1753
- function ol(l) {
1754
- let e, t;
1755
- return e = new On({
1756
- props: { margin: (
1757
- /*variant*/
1758
- l[8] === "default"
1759
- ) }
1760
- }), {
1761
- c() {
1762
- yt(e.$$.fragment);
1763
- },
1764
- m(n, i) {
1765
- Ft(e, n, i), t = !0;
1766
- },
1767
- p(n, i) {
1768
- const s = {};
1769
- i[0] & /*variant*/
1770
- 256 && (s.margin = /*variant*/
1771
- n[8] === "default"), e.$set(s);
1772
- },
1773
- i(n) {
1774
- t || (K(e.$$.fragment, n), t = !0);
1775
- },
1776
- o(n) {
1777
- Q(e.$$.fragment, n), t = !1;
1778
- },
1779
- d(n) {
1780
- vt(e, n);
1781
- }
1782
- };
1783
- }
1784
- function rl(l) {
1785
- let e, t, n, i, s, o = `${/*last_progress_level*/
1786
- l[15] * 100}%`, a = (
1787
- /*progress*/
1788
- l[7] != null && et(l)
1789
- );
1790
- return {
1791
- c() {
1792
- e = H("div"), t = H("div"), a && a.c(), n = W(), i = H("div"), s = H("div"), P(t, "class", "progress-level-inner svelte-1yk38uw"), P(s, "class", "progress-bar svelte-1yk38uw"), J(s, "width", o), P(i, "class", "progress-bar-wrap svelte-1yk38uw"), P(e, "class", "progress-level svelte-1yk38uw");
1793
- },
1794
- m(r, f) {
1795
- k(r, e, f), G(e, t), a && a.m(t, null), G(e, n), G(e, i), G(i, s), l[31](s);
1796
- },
1797
- p(r, f) {
1798
- /*progress*/
1799
- r[7] != null ? a ? a.p(r, f) : (a = et(r), a.c(), a.m(t, null)) : a && (a.d(1), a = null), f[0] & /*last_progress_level*/
1800
- 32768 && o !== (o = `${/*last_progress_level*/
1801
- r[15] * 100}%`) && J(s, "width", o);
1802
- },
1803
- i: Ve,
1804
- o: Ve,
1805
- d(r) {
1806
- r && w(e), a && a.d(), l[31](null);
1807
- }
1808
- };
1809
- }
1810
- function et(l) {
1811
- let e, t = pe(
1812
- /*progress*/
1813
- l[7]
1814
- ), n = [];
1815
- for (let i = 0; i < t.length; i += 1)
1816
- n[i] = st(Ye(l, t, i));
1817
- return {
1818
- c() {
1819
- for (let i = 0; i < n.length; i += 1)
1820
- n[i].c();
1821
- e = se();
1822
- },
1823
- m(i, s) {
1824
- for (let o = 0; o < n.length; o += 1)
1825
- n[o] && n[o].m(i, s);
1826
- k(i, e, s);
1827
- },
1828
- p(i, s) {
1829
- if (s[0] & /*progress_level, progress*/
1830
- 16512) {
1831
- t = pe(
1832
- /*progress*/
1833
- i[7]
1834
- );
1835
- let o;
1836
- for (o = 0; o < t.length; o += 1) {
1837
- const a = Ye(i, t, o);
1838
- n[o] ? n[o].p(a, s) : (n[o] = st(a), n[o].c(), n[o].m(e.parentNode, e));
1839
- }
1840
- for (; o < n.length; o += 1)
1841
- n[o].d(1);
1842
- n.length = t.length;
1843
- }
1844
- },
1845
- d(i) {
1846
- i && w(e), qt(n, i);
1847
- }
1848
- };
1849
- }
1850
- function tt(l) {
1851
- let e, t, n, i, s = (
1852
- /*i*/
1853
- l[43] !== 0 && al()
1854
- ), o = (
1855
- /*p*/
1856
- l[41].desc != null && nt(l)
1857
- ), a = (
1858
- /*p*/
1859
- l[41].desc != null && /*progress_level*/
1860
- l[14] && /*progress_level*/
1861
- l[14][
1862
- /*i*/
1863
- l[43]
1864
- ] != null && lt()
1865
- ), r = (
1866
- /*progress_level*/
1867
- l[14] != null && it(l)
1868
- );
1869
- return {
1870
- c() {
1871
- s && s.c(), e = W(), o && o.c(), t = W(), a && a.c(), n = W(), r && r.c(), i = se();
1872
- },
1873
- m(f, u) {
1874
- s && s.m(f, u), k(f, e, u), o && o.m(f, u), k(f, t, u), a && a.m(f, u), k(f, n, u), r && r.m(f, u), k(f, i, u);
1875
- },
1876
- p(f, u) {
1877
- /*p*/
1878
- f[41].desc != null ? o ? o.p(f, u) : (o = nt(f), o.c(), o.m(t.parentNode, t)) : o && (o.d(1), o = null), /*p*/
1879
- f[41].desc != null && /*progress_level*/
1880
- f[14] && /*progress_level*/
1881
- f[14][
1882
- /*i*/
1883
- f[43]
1884
- ] != null ? a || (a = lt(), a.c(), a.m(n.parentNode, n)) : a && (a.d(1), a = null), /*progress_level*/
1885
- f[14] != null ? r ? r.p(f, u) : (r = it(f), r.c(), r.m(i.parentNode, i)) : r && (r.d(1), r = null);
1886
- },
1887
- d(f) {
1888
- f && (w(e), w(t), w(n), w(i)), s && s.d(f), o && o.d(f), a && a.d(f), r && r.d(f);
1889
- }
1890
- };
1891
- }
1892
- function al(l) {
1893
- let e;
1894
- return {
1895
- c() {
1896
- e = S(" /");
1897
- },
1898
- m(t, n) {
1899
- k(t, e, n);
1900
- },
1901
- d(t) {
1902
- t && w(e);
1903
- }
1904
- };
1905
- }
1906
- function nt(l) {
1907
- let e = (
1908
- /*p*/
1909
- l[41].desc + ""
1910
- ), t;
1911
- return {
1912
- c() {
1913
- t = S(e);
1914
- },
1915
- m(n, i) {
1916
- k(n, t, i);
1917
- },
1918
- p(n, i) {
1919
- i[0] & /*progress*/
1920
- 128 && e !== (e = /*p*/
1921
- n[41].desc + "") && A(t, e);
1922
- },
1923
- d(n) {
1924
- n && w(t);
1925
- }
1926
- };
1927
- }
1928
- function lt(l) {
1929
- let e;
1930
- return {
1931
- c() {
1932
- e = S("-");
1933
- },
1934
- m(t, n) {
1935
- k(t, e, n);
1936
- },
1937
- d(t) {
1938
- t && w(e);
1939
- }
1940
- };
1941
- }
1942
- function it(l) {
1943
- let e = (100 * /*progress_level*/
1944
- (l[14][
1945
- /*i*/
1946
- l[43]
1947
- ] || 0)).toFixed(1) + "", t, n;
1948
- return {
1949
- c() {
1950
- t = S(e), n = S("%");
1951
- },
1952
- m(i, s) {
1953
- k(i, t, s), k(i, n, s);
1954
- },
1955
- p(i, s) {
1956
- s[0] & /*progress_level*/
1957
- 16384 && e !== (e = (100 * /*progress_level*/
1958
- (i[14][
1959
- /*i*/
1960
- i[43]
1961
- ] || 0)).toFixed(1) + "") && A(t, e);
1962
- },
1963
- d(i) {
1964
- i && (w(t), w(n));
1965
- }
1966
- };
1967
- }
1968
- function st(l) {
1969
- let e, t = (
1970
- /*p*/
1971
- (l[41].desc != null || /*progress_level*/
1972
- l[14] && /*progress_level*/
1973
- l[14][
1974
- /*i*/
1975
- l[43]
1976
- ] != null) && tt(l)
1977
- );
1978
- return {
1979
- c() {
1980
- t && t.c(), e = se();
1981
- },
1982
- m(n, i) {
1983
- t && t.m(n, i), k(n, e, i);
1984
- },
1985
- p(n, i) {
1986
- /*p*/
1987
- n[41].desc != null || /*progress_level*/
1988
- n[14] && /*progress_level*/
1989
- n[14][
1990
- /*i*/
1991
- n[43]
1992
- ] != null ? t ? t.p(n, i) : (t = tt(n), t.c(), t.m(e.parentNode, e)) : t && (t.d(1), t = null);
1993
- },
1994
- d(n) {
1995
- n && w(e), t && t.d(n);
1996
- }
1997
- };
1998
- }
1999
- function ft(l) {
2000
- let e, t;
2001
- return {
2002
- c() {
2003
- e = H("p"), t = S(
2004
- /*loading_text*/
2005
- l[9]
2006
- ), P(e, "class", "loading svelte-1yk38uw");
2007
- },
2008
- m(n, i) {
2009
- k(n, e, i), G(e, t);
2010
- },
2011
- p(n, i) {
2012
- i[0] & /*loading_text*/
2013
- 512 && A(
2014
- t,
2015
- /*loading_text*/
2016
- n[9]
2017
- );
2018
- },
2019
- d(n) {
2020
- n && w(e);
2021
- }
2022
- };
2023
- }
2024
- function ul(l) {
2025
- let e, t, n, i, s;
2026
- const o = [tl, el], a = [];
2027
- function r(f, u) {
2028
- return (
2029
- /*status*/
2030
- f[4] === "pending" ? 0 : (
2031
- /*status*/
2032
- f[4] === "error" ? 1 : -1
2033
- )
2034
- );
2035
- }
2036
- return ~(t = r(l)) && (n = a[t] = o[t](l)), {
2037
- c() {
2038
- e = H("div"), n && n.c(), P(e, "class", i = "wrap " + /*variant*/
2039
- l[8] + " " + /*show_progress*/
2040
- l[6] + " svelte-1yk38uw"), E(e, "hide", !/*status*/
2041
- l[4] || /*status*/
2042
- l[4] === "complete" || /*show_progress*/
2043
- l[6] === "hidden"), E(
2044
- e,
2045
- "translucent",
2046
- /*variant*/
2047
- l[8] === "center" && /*status*/
2048
- (l[4] === "pending" || /*status*/
2049
- l[4] === "error") || /*translucent*/
2050
- l[11] || /*show_progress*/
2051
- l[6] === "minimal"
2052
- ), E(
2053
- e,
2054
- "generating",
2055
- /*status*/
2056
- l[4] === "generating"
2057
- ), E(
2058
- e,
2059
- "border",
2060
- /*border*/
2061
- l[12]
2062
- ), J(
2063
- e,
2064
- "position",
2065
- /*absolute*/
2066
- l[10] ? "absolute" : "static"
2067
- ), J(
2068
- e,
2069
- "padding",
2070
- /*absolute*/
2071
- l[10] ? "0" : "var(--size-8) 0"
2072
- );
2073
- },
2074
- m(f, u) {
2075
- k(f, e, u), ~t && a[t].m(e, null), l[33](e), s = !0;
2076
- },
2077
- p(f, u) {
2078
- let c = t;
2079
- t = r(f), t === c ? ~t && a[t].p(f, u) : (n && (Ct(), Q(a[c], 1, 1, () => {
2080
- a[c] = null;
2081
- }), pt()), ~t ? (n = a[t], n ? n.p(f, u) : (n = a[t] = o[t](f), n.c()), K(n, 1), n.m(e, null)) : n = null), (!s || u[0] & /*variant, show_progress*/
2082
- 320 && i !== (i = "wrap " + /*variant*/
2083
- f[8] + " " + /*show_progress*/
2084
- f[6] + " svelte-1yk38uw")) && P(e, "class", i), (!s || u[0] & /*variant, show_progress, status, show_progress*/
2085
- 336) && E(e, "hide", !/*status*/
2086
- f[4] || /*status*/
2087
- f[4] === "complete" || /*show_progress*/
2088
- f[6] === "hidden"), (!s || u[0] & /*variant, show_progress, variant, status, translucent, show_progress*/
2089
- 2384) && E(
2090
- e,
2091
- "translucent",
2092
- /*variant*/
2093
- f[8] === "center" && /*status*/
2094
- (f[4] === "pending" || /*status*/
2095
- f[4] === "error") || /*translucent*/
2096
- f[11] || /*show_progress*/
2097
- f[6] === "minimal"
2098
- ), (!s || u[0] & /*variant, show_progress, status*/
2099
- 336) && E(
2100
- e,
2101
- "generating",
2102
- /*status*/
2103
- f[4] === "generating"
2104
- ), (!s || u[0] & /*variant, show_progress, border*/
2105
- 4416) && E(
2106
- e,
2107
- "border",
2108
- /*border*/
2109
- f[12]
2110
- ), u[0] & /*absolute*/
2111
- 1024 && J(
2112
- e,
2113
- "position",
2114
- /*absolute*/
2115
- f[10] ? "absolute" : "static"
2116
- ), u[0] & /*absolute*/
2117
- 1024 && J(
2118
- e,
2119
- "padding",
2120
- /*absolute*/
2121
- f[10] ? "0" : "var(--size-8) 0"
2122
- );
2123
- },
2124
- i(f) {
2125
- s || (K(n), s = !0);
2126
- },
2127
- o(f) {
2128
- Q(n), s = !1;
2129
- },
2130
- d(f) {
2131
- f && w(e), ~t && a[t].d(), l[33](null);
2132
- }
2133
- };
2134
- }
2135
- var cl = function(l, e, t, n) {
2136
- function i(s) {
2137
- return s instanceof t ? s : new t(function(o) {
2138
- o(s);
2139
- });
2140
- }
2141
- return new (t || (t = Promise))(function(s, o) {
2142
- function a(u) {
2143
- try {
2144
- f(n.next(u));
2145
- } catch (c) {
2146
- o(c);
2147
- }
2148
- }
2149
- function r(u) {
2150
- try {
2151
- f(n.throw(u));
2152
- } catch (c) {
2153
- o(c);
2154
- }
2155
- }
2156
- function f(u) {
2157
- u.done ? s(u.value) : i(u.value).then(a, r);
2158
- }
2159
- f((n = n.apply(l, e || [])).next());
2160
- });
2161
- };
2162
- let we = [], Le = !1;
2163
- function _l(l) {
2164
- return cl(this, arguments, void 0, function* (e, t = !0) {
2165
- if (!(window.__gradio_mode__ === "website" || window.__gradio_mode__ !== "app" && t !== !0)) {
2166
- if (we.push(e), !Le)
2167
- Le = !0;
2168
- else
2169
- return;
2170
- yield Kn(), requestAnimationFrame(() => {
2171
- let n = [0, 0];
2172
- for (let i = 0; i < we.length; i++) {
2173
- const o = we[i].getBoundingClientRect();
2174
- (i === 0 || o.top + window.scrollY <= n[0]) && (n[0] = o.top + window.scrollY, n[1] = i);
2175
- }
2176
- window.scrollTo({ top: n[0] - 20, behavior: "smooth" }), Le = !1, we = [];
2177
- });
2178
- }
2179
- });
2180
- }
2181
- function dl(l, e, t) {
2182
- let n, { $$slots: i = {}, $$scope: s } = e;
2183
- this && this.__awaiter;
2184
- const o = xn();
2185
- let { i18n: a } = e, { eta: r = null } = e, { queue_position: f } = e, { queue_size: u } = e, { status: c } = e, { scroll_to_output: p = !1 } = e, { timer: m = !0 } = e, { show_progress: y = "full" } = e, { message: L = null } = e, { progress: v = null } = e, { variant: F = "default" } = e, { loading_text: d = "Loading..." } = e, { absolute: _ = !0 } = e, { translucent: q = !1 } = e, { border: z = !1 } = e, { autoscroll: b } = e, g, O = !1, ue = 0, R = 0, x = null, $ = null, Ae = 0, X = null, fe, U = null, Ie = !0;
2186
- const Nt = () => {
2187
- t(0, r = t(27, x = t(19, ce = null))), t(25, ue = performance.now()), t(26, R = 0), O = !0, je();
2188
- };
2189
- function je() {
2190
- requestAnimationFrame(() => {
2191
- t(26, R = (performance.now() - ue) / 1e3), O && je();
2192
- });
2193
- }
2194
- function Ze() {
2195
- t(26, R = 0), t(0, r = t(27, x = t(19, ce = null))), O && (O = !1);
2196
- }
2197
- Qn(() => {
2198
- O && Ze();
2199
- });
2200
- let ce = null;
2201
- function Et(h) {
2202
- Re[h ? "unshift" : "push"](() => {
2203
- U = h, t(16, U), t(7, v), t(14, X), t(15, fe);
2204
- });
2205
- }
2206
- const At = () => {
2207
- o("clear_status");
2208
- };
2209
- function It(h) {
2210
- Re[h ? "unshift" : "push"](() => {
2211
- g = h, t(13, g);
2212
- });
2213
- }
2214
- return l.$$set = (h) => {
2215
- "i18n" in h && t(1, a = h.i18n), "eta" in h && t(0, r = h.eta), "queue_position" in h && t(2, f = h.queue_position), "queue_size" in h && t(3, u = h.queue_size), "status" in h && t(4, c = h.status), "scroll_to_output" in h && t(22, p = h.scroll_to_output), "timer" in h && t(5, m = h.timer), "show_progress" in h && t(6, y = h.show_progress), "message" in h && t(23, L = h.message), "progress" in h && t(7, v = h.progress), "variant" in h && t(8, F = h.variant), "loading_text" in h && t(9, d = h.loading_text), "absolute" in h && t(10, _ = h.absolute), "translucent" in h && t(11, q = h.translucent), "border" in h && t(12, z = h.border), "autoscroll" in h && t(24, b = h.autoscroll), "$$scope" in h && t(29, s = h.$$scope);
2216
- }, l.$$.update = () => {
2217
- l.$$.dirty[0] & /*eta, old_eta, timer_start, eta_from_start*/
2218
- 436207617 && (r === null && t(0, r = x), r != null && x !== r && (t(28, $ = (performance.now() - ue) / 1e3 + r), t(19, ce = $.toFixed(1)), t(27, x = r))), l.$$.dirty[0] & /*eta_from_start, timer_diff*/
2219
- 335544320 && t(17, Ae = $ === null || $ <= 0 || !R ? null : Math.min(R / $, 1)), l.$$.dirty[0] & /*progress*/
2220
- 128 && v != null && t(18, Ie = !1), l.$$.dirty[0] & /*progress, progress_level, progress_bar, last_progress_level*/
2221
- 114816 && (v != null ? t(14, X = v.map((h) => {
2222
- if (h.index != null && h.length != null)
2223
- return h.index / h.length;
2224
- if (h.progress != null)
2225
- return h.progress;
2226
- })) : t(14, X = null), X ? (t(15, fe = X[X.length - 1]), U && (fe === 0 ? t(16, U.style.transition = "0", U) : t(16, U.style.transition = "150ms", U))) : t(15, fe = void 0)), l.$$.dirty[0] & /*status*/
2227
- 16 && (c === "pending" ? Nt() : Ze()), l.$$.dirty[0] & /*el, scroll_to_output, status, autoscroll*/
2228
- 20979728 && g && p && (c === "pending" || c === "complete") && _l(g, b), l.$$.dirty[0] & /*status, message*/
2229
- 8388624, l.$$.dirty[0] & /*timer_diff*/
2230
- 67108864 && t(20, n = R.toFixed(1));
2231
- }, [
2232
- r,
2233
- a,
2234
- f,
2235
- u,
2236
- c,
2237
- m,
2238
- y,
2239
- v,
2240
- F,
2241
- d,
2242
- _,
2243
- q,
2244
- z,
2245
- g,
2246
- X,
2247
- fe,
2248
- U,
2249
- Ae,
2250
- Ie,
2251
- ce,
2252
- n,
2253
- o,
2254
- p,
2255
- L,
2256
- b,
2257
- ue,
2258
- R,
2259
- x,
2260
- $,
2261
- s,
2262
- i,
2263
- Et,
2264
- At,
2265
- It
2266
- ];
2267
- }
2268
- class ml extends Tn {
2269
- constructor(e) {
2270
- super(), Xn(
2271
- this,
2272
- e,
2273
- dl,
2274
- ul,
2275
- Yn,
2276
- {
2277
- i18n: 1,
2278
- eta: 0,
2279
- queue_position: 2,
2280
- queue_size: 3,
2281
- status: 4,
2282
- scroll_to_output: 22,
2283
- timer: 5,
2284
- show_progress: 6,
2285
- message: 23,
2286
- progress: 7,
2287
- variant: 8,
2288
- loading_text: 9,
2289
- absolute: 10,
2290
- translucent: 11,
2291
- border: 12,
2292
- autoscroll: 24
2293
- },
2294
- null,
2295
- [-1, -1]
2296
- );
2297
- }
2298
- }
2299
- const {
2300
- SvelteComponent: hl,
2301
- append: bl,
2302
- attr: re,
2303
- detach: Lt,
2304
- element: ot,
2305
- empty: gl,
2306
- init: wl,
2307
- insert: St,
2308
- noop: rt,
2309
- safe_not_equal: kl,
2310
- src_url_equal: at,
2311
- toggle_class: ne
2312
- } = window.__gradio__svelte__internal;
2313
- function ut(l) {
2314
- let e, t, n;
2315
- return {
2316
- c() {
2317
- e = ot("div"), t = ot("img"), at(t.src, n = /*value*/
2318
- l[0].url) || re(t, "src", n), re(t, "alt", ""), re(t, "class", "svelte-giydt1"), re(e, "class", "container svelte-giydt1"), ne(
2319
- e,
2320
- "table",
2321
- /*type*/
2322
- l[1] === "table"
2323
- ), ne(
2324
- e,
2325
- "gallery",
2326
- /*type*/
2327
- l[1] === "gallery"
2328
- ), ne(
2329
- e,
2330
- "selected",
2331
- /*selected*/
2332
- l[2]
2333
- );
2334
- },
2335
- m(i, s) {
2336
- St(i, e, s), bl(e, t);
2337
- },
2338
- p(i, s) {
2339
- s & /*value*/
2340
- 1 && !at(t.src, n = /*value*/
2341
- i[0].url) && re(t, "src", n), s & /*type*/
2342
- 2 && ne(
2343
- e,
2344
- "table",
2345
- /*type*/
2346
- i[1] === "table"
2347
- ), s & /*type*/
2348
- 2 && ne(
2349
- e,
2350
- "gallery",
2351
- /*type*/
2352
- i[1] === "gallery"
2353
- ), s & /*selected*/
2354
- 4 && ne(
2355
- e,
2356
- "selected",
2357
- /*selected*/
2358
- i[2]
2359
- );
2360
- },
2361
- d(i) {
2362
- i && Lt(e);
2363
- }
2364
- };
2365
- }
2366
- function pl(l) {
2367
- let e, t = (
2368
- /*value*/
2369
- l[0] && ut(l)
2370
- );
2371
- return {
2372
- c() {
2373
- t && t.c(), e = gl();
2374
- },
2375
- m(n, i) {
2376
- t && t.m(n, i), St(n, e, i);
2377
- },
2378
- p(n, [i]) {
2379
- /*value*/
2380
- n[0] ? t ? t.p(n, i) : (t = ut(n), t.c(), t.m(e.parentNode, e)) : t && (t.d(1), t = null);
2381
- },
2382
- i: rt,
2383
- o: rt,
2384
- d(n) {
2385
- n && Lt(e), t && t.d(n);
2386
- }
2387
- };
2388
- }
2389
- function yl(l, e, t) {
2390
- let { value: n } = e, { type: i } = e, { selected: s = !1 } = e;
2391
- return l.$$set = (o) => {
2392
- "value" in o && t(0, n = o.value), "type" in o && t(1, i = o.type), "selected" in o && t(2, s = o.selected);
2393
- }, [n, i, s];
2394
- }
2395
- class Bl extends hl {
2396
- constructor(e) {
2397
- super(), wl(this, e, yl, pl, kl, { value: 0, type: 1, selected: 2 });
2398
- }
2399
- }
2400
- const {
2401
- SvelteComponent: vl,
2402
- assign: ql,
2403
- attr: Cl,
2404
- binding_callbacks: Fl,
2405
- check_outros: Ll,
2406
- create_component: zt,
2407
- destroy_component: Mt,
2408
- detach: Ne,
2409
- element: Sl,
2410
- empty: zl,
2411
- flush: N,
2412
- get_spread_object: Ml,
2413
- get_spread_update: Vl,
2414
- group_outros: Nl,
2415
- init: El,
2416
- insert: Ee,
2417
- mount_component: Vt,
2418
- safe_not_equal: Al,
2419
- set_style: ct,
2420
- space: Il,
2421
- transition_in: ae,
2422
- transition_out: ye
2423
- } = window.__gradio__svelte__internal, { onMount: jl } = window.__gradio__svelte__internal;
2424
- function _t(l) {
2425
- let e, t;
2426
- return e = new sn({
2427
- props: {
2428
- visible: (
2429
- /*visible*/
2430
- l[3]
2431
- ),
2432
- variant: "solid",
2433
- border_mode: (
2434
- /*dragging*/
2435
- l[12] ? "focus" : "base"
2436
- ),
2437
- padding: !1,
2438
- elem_id: (
2439
- /*elem_id*/
2440
- l[1]
2441
- ),
2442
- elem_classes: (
2443
- /*elem_classes*/
2444
- l[2]
2445
- ),
2446
- allow_overflow: !1,
2447
- container: (
2448
- /*container*/
2449
- l[4]
2450
- ),
2451
- scale: (
2452
- /*scale*/
2453
- l[5]
2454
- ),
2455
- min_width: (
2456
- /*min_width*/
2457
- l[6]
2458
- ),
2459
- $$slots: { default: [Zl] },
2460
- $$scope: { ctx: l }
2461
- }
2462
- }), {
2463
- c() {
2464
- zt(e.$$.fragment);
2465
- },
2466
- m(n, i) {
2467
- Vt(e, n, i), t = !0;
2468
- },
2469
- p(n, i) {
2470
- const s = {};
2471
- i & /*visible*/
2472
- 8 && (s.visible = /*visible*/
2473
- n[3]), i & /*elem_id*/
2474
- 2 && (s.elem_id = /*elem_id*/
2475
- n[1]), i & /*elem_classes*/
2476
- 4 && (s.elem_classes = /*elem_classes*/
2477
- n[2]), i & /*container*/
2478
- 16 && (s.container = /*container*/
2479
- n[4]), i & /*scale*/
2480
- 32 && (s.scale = /*scale*/
2481
- n[5]), i & /*min_width*/
2482
- 64 && (s.min_width = /*min_width*/
2483
- n[6]), i & /*$$scope, ref, height, gradio, patched_loading_status, loading_status*/
2484
- 1052289 && (s.$$scope = { dirty: i, ctx: n }), e.$set(s);
2485
- },
2486
- i(n) {
2487
- t || (ae(e.$$.fragment, n), t = !0);
2488
- },
2489
- o(n) {
2490
- ye(e.$$.fragment, n), t = !1;
2491
- },
2492
- d(n) {
2493
- Mt(e, n);
2494
- }
2495
- };
2496
- }
2497
- function Zl(l) {
2498
- let e, t, n, i;
2499
- const s = [
2500
- { autoscroll: (
2501
- /*gradio*/
2502
- l[9].autoscroll
2503
- ) },
2504
- { i18n: (
2505
- /*gradio*/
2506
- l[9].i18n
2507
- ) },
2508
- /*patched_loading_status*/
2509
- l[10]
2510
- ];
2511
- let o = {};
2512
- for (let a = 0; a < s.length; a += 1)
2513
- o = ql(o, s[a]);
2514
- return e = new ml({ props: o }), e.$on(
2515
- "clear_status",
2516
- /*clear_status_handler*/
2517
- l[15]
2518
- ), {
2519
- c() {
2520
- zt(e.$$.fragment), t = Il(), n = Sl("div"), Cl(n, "class", "viewer svelte-mo2zro"), ct(
2521
- n,
2522
- "height",
2523
- /*height*/
2524
- l[0]
2525
- );
2526
- },
2527
- m(a, r) {
2528
- Vt(e, a, r), Ee(a, t, r), Ee(a, n, r), l[16](n), i = !0;
2529
- },
2530
- p(a, r) {
2531
- const f = r & /*gradio, patched_loading_status*/
2532
- 1536 ? Vl(s, [
2533
- r & /*gradio*/
2534
- 512 && { autoscroll: (
2535
- /*gradio*/
2536
- a[9].autoscroll
2537
- ) },
2538
- r & /*gradio*/
2539
- 512 && { i18n: (
2540
- /*gradio*/
2541
- a[9].i18n
2542
- ) },
2543
- r & /*patched_loading_status*/
2544
- 1024 && Ml(
2545
- /*patched_loading_status*/
2546
- a[10]
2547
- )
2548
- ]) : {};
2549
- e.$set(f), r & /*height*/
2550
- 1 && ct(
2551
- n,
2552
- "height",
2553
- /*height*/
2554
- a[0]
2555
- );
2556
- },
2557
- i(a) {
2558
- i || (ae(e.$$.fragment, a), i = !0);
2559
- },
2560
- o(a) {
2561
- ye(e.$$.fragment, a), i = !1;
2562
- },
2563
- d(a) {
2564
- a && (Ne(t), Ne(n)), Mt(e, a), l[16](null);
2565
- }
2566
- };
2567
- }
2568
- function Pl(l) {
2569
- let e, t, n = !/*interactive*/
2570
- l[8] && _t(l);
2571
- return {
2572
- c() {
2573
- n && n.c(), e = zl();
2574
- },
2575
- m(i, s) {
2576
- n && n.m(i, s), Ee(i, e, s), t = !0;
2577
- },
2578
- p(i, [s]) {
2579
- /*interactive*/
2580
- i[8] ? n && (Nl(), ye(n, 1, 1, () => {
2581
- n = null;
2582
- }), Ll()) : n ? (n.p(i, s), s & /*interactive*/
2583
- 256 && ae(n, 1)) : (n = _t(i), n.c(), ae(n, 1), n.m(e.parentNode, e));
2584
- },
2585
- i(i) {
2586
- t || (ae(n), t = !0);
2587
- },
2588
- o(i) {
2589
- ye(n), t = !1;
2590
- },
2591
- d(i) {
2592
- i && Ne(e), n && n.d(i);
2593
- }
2594
- };
2595
- }
2596
- function Wl(l, e, t) {
2597
- let { elem_id: n = "" } = e, { elem_classes: i = [] } = e, { visible: s = !0 } = e, { height: o = 640 } = e, { value: a = null } = e, { container: r = !0 } = e, { scale: f = null } = e, { min_width: u = void 0 } = e, { loading_status: c } = e, { interactive: p } = e, { streaming: m } = e, y = null, { gradio: L } = e, v, F, d, _;
2598
- function q() {
2599
- if (JSON.stringify(a) !== JSON.stringify(y) && F != null && F.ready)
2600
- if (y = a, !Array.isArray(a))
2601
- a.is_stream ? F.open(a.url, { follow_if_http: !0 }) : F.open(a.url);
2602
- else
2603
- for (const g of a)
2604
- typeof g != "string" ? g.url && F.open(g.url) : F.open(g);
2605
- }
2606
- jl(() => (F = new Ht(), F.start(void 0, d, !0).then(() => {
2607
- q();
2608
- }), () => {
2609
- F.stop();
2610
- }));
2611
- const z = () => L.dispatch("clear_status", c);
2612
- function b(g) {
2613
- Fl[g ? "unshift" : "push"](() => {
2614
- d = g, t(11, d);
2615
- });
2616
- }
2617
- return l.$$set = (g) => {
2618
- "elem_id" in g && t(1, n = g.elem_id), "elem_classes" in g && t(2, i = g.elem_classes), "visible" in g && t(3, s = g.visible), "height" in g && t(0, o = g.height), "value" in g && t(13, a = g.value), "container" in g && t(4, r = g.container), "scale" in g && t(5, f = g.scale), "min_width" in g && t(6, u = g.min_width), "loading_status" in g && t(7, c = g.loading_status), "interactive" in g && t(8, p = g.interactive), "streaming" in g && t(14, m = g.streaming), "gradio" in g && t(9, L = g.gradio);
2619
- }, l.$$.update = () => {
2620
- l.$$.dirty & /*height*/
2621
- 1 && t(0, o = typeof o == "number" ? `${o}px` : o), l.$$.dirty & /*loading_status, streaming, patched_loading_status*/
2622
- 17536 && (t(10, _ = c), m && _?.status === "generating" && t(10, _.status = "complete", _)), l.$$.dirty & /*value*/
2623
- 8192 && q();
2624
- }, [
2625
- o,
2626
- n,
2627
- i,
2628
- s,
2629
- r,
2630
- f,
2631
- u,
2632
- c,
2633
- p,
2634
- L,
2635
- _,
2636
- d,
2637
- v,
2638
- a,
2639
- m,
2640
- z,
2641
- b
2642
- ];
2643
- }
2644
- class Dl extends vl {
2645
- constructor(e) {
2646
- super(), El(this, e, Wl, Pl, Al, {
2647
- elem_id: 1,
2648
- elem_classes: 2,
2649
- visible: 3,
2650
- height: 0,
2651
- value: 13,
2652
- container: 4,
2653
- scale: 5,
2654
- min_width: 6,
2655
- loading_status: 7,
2656
- interactive: 8,
2657
- streaming: 14,
2658
- gradio: 9
2659
- });
2660
- }
2661
- get elem_id() {
2662
- return this.$$.ctx[1];
2663
- }
2664
- set elem_id(e) {
2665
- this.$$set({ elem_id: e }), N();
2666
- }
2667
- get elem_classes() {
2668
- return this.$$.ctx[2];
2669
- }
2670
- set elem_classes(e) {
2671
- this.$$set({ elem_classes: e }), N();
2672
- }
2673
- get visible() {
2674
- return this.$$.ctx[3];
2675
- }
2676
- set visible(e) {
2677
- this.$$set({ visible: e }), N();
2678
- }
2679
- get height() {
2680
- return this.$$.ctx[0];
2681
- }
2682
- set height(e) {
2683
- this.$$set({ height: e }), N();
2684
- }
2685
- get value() {
2686
- return this.$$.ctx[13];
2687
- }
2688
- set value(e) {
2689
- this.$$set({ value: e }), N();
2690
- }
2691
- get container() {
2692
- return this.$$.ctx[4];
2693
- }
2694
- set container(e) {
2695
- this.$$set({ container: e }), N();
2696
- }
2697
- get scale() {
2698
- return this.$$.ctx[5];
2699
- }
2700
- set scale(e) {
2701
- this.$$set({ scale: e }), N();
2702
- }
2703
- get min_width() {
2704
- return this.$$.ctx[6];
2705
- }
2706
- set min_width(e) {
2707
- this.$$set({ min_width: e }), N();
2708
- }
2709
- get loading_status() {
2710
- return this.$$.ctx[7];
2711
- }
2712
- set loading_status(e) {
2713
- this.$$set({ loading_status: e }), N();
2714
- }
2715
- get interactive() {
2716
- return this.$$.ctx[8];
2717
- }
2718
- set interactive(e) {
2719
- this.$$set({ interactive: e }), N();
2720
- }
2721
- get streaming() {
2722
- return this.$$.ctx[14];
2723
- }
2724
- set streaming(e) {
2725
- this.$$set({ streaming: e }), N();
2726
- }
2727
- get gradio() {
2728
- return this.$$.ctx[9];
2729
- }
2730
- set gradio(e) {
2731
- this.$$set({ gradio: e }), N();
2732
- }
2733
- }
2734
- export {
2735
- Bl as BaseExample,
2736
- Dl as default
2737
- };
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7c96fc4393ec3d292cb7e8559f3cd88ef339923771e158d6c15d88842408215
3
+ size 32012219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/backend/gradio_rerun/templates/component/re_viewer-B_L3tdvY.js ADDED
The diff for this file is too large to render. See raw diff
 
src/backend/gradio_rerun/templates/component/style.css CHANGED
@@ -1 +1 @@
1
- /*! tailwindcss v4.0.0-alpha.14 | MIT License | https://tailwindcss.com */@layer theme{:root{--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-family-sans);--default-font-feature-settings:var(--font-family-sans--font-feature-settings);--default-font-variation-settings:var(--font-family-sans--font-variation-settings);--default-mono-font-family:var(--font-family-mono);--default-mono-font-feature-settings:var(--font-family-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-family-mono--font-variation-settings);--breakpoint-sm:640px;--breakpoint-md:768px;--breakpoint-lg:1024px;--breakpoint-xl:1280px;--breakpoint-2xl:1536px;--color-black:#000;--color-white:#fff;--color-slate-50:#f8fafc;--color-slate-100:#f1f5f9;--color-slate-200:#e2e8f0;--color-slate-300:#cbd5e1;--color-slate-400:#94a3b8;--color-slate-500:#64748b;--color-slate-600:#475569;--color-slate-700:#334155;--color-slate-800:#1e293b;--color-slate-900:#0f172a;--color-slate-950:#020617;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-gray-950:#030712;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-200:#e4e4e7;--color-zinc-300:#d4d4d8;--color-zinc-400:#a1a1aa;--color-zinc-500:#71717a;--color-zinc-600:#52525b;--color-zinc-700:#3f3f46;--color-zinc-800:#27272a;--color-zinc-900:#18181b;--color-zinc-950:#09090b;--color-neutral-50:#fafafa;--color-neutral-100:#f5f5f5;--color-neutral-200:#e5e5e5;--color-neutral-300:#d4d4d4;--color-neutral-400:#a3a3a3;--color-neutral-500:#737373;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#262626;--color-neutral-900:#171717;--color-neutral-950:#0a0a0a;--color-stone-50:#fafaf9;--color-stone-100:#f5f5f4;--color-stone-200:#e7e5e4;--color-stone-300:#d6d3d1;--color-stone-400:#a8a29e;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-red-50:#fef2f2;--color-red-100:#fee2e2;--color-red-200:#fecaca;--color-red-300:#fca5a5;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-600:#dc2626;--color-red-700:#b91c1c;--color-red-800:#991b1b;--color-red-900:#7f1d1d;--color-red-950:#450a0a;--color-orange-50:#fff7ed;--color-orange-100:#ffedd5;--color-orange-200:#fed7aa;--color-orange-300:#fdba74;--color-orange-400:#fb923c;--color-orange-500:#f97316;--color-orange-600:#ea580c;--color-orange-700:#c2410c;--color-orange-800:#9a3412;--color-orange-900:#7c2d12;--color-orange-950:#431407;--color-amber-50:#fffbeb;--color-amber-100:#fef3c7;--color-amber-200:#fde68a;--color-amber-300:#fcd34d;--color-amber-400:#fbbf24;--color-amber-500:#f59e0b;--color-amber-600:#d97706;--color-amber-700:#b45309;--color-amber-800:#92400e;--color-amber-900:#78350f;--color-amber-950:#451a03;--color-yellow-50:#fefce8;--color-yellow-100:#fef9c3;--color-yellow-200:#fef08a;--color-yellow-300:#fde047;--color-yellow-400:#facc15;--color-yellow-500:#eab308;--color-yellow-600:#ca8a04;--color-yellow-700:#a16207;--color-yellow-800:#854d0e;--color-yellow-900:#713f12;--color-yellow-950:#422006;--color-lime-50:#f7fee7;--color-lime-100:#ecfccb;--color-lime-200:#d9f99d;--color-lime-300:#bef264;--color-lime-400:#a3e635;--color-lime-500:#84cc16;--color-lime-600:#65a30d;--color-lime-700:#4d7c0f;--color-lime-800:#3f6212;--color-lime-900:#365314;--color-lime-950:#1a2e05;--color-green-50:#f0fdf4;--color-green-100:#dcfce7;--color-green-200:#bbf7d0;--color-green-300:#86efac;--color-green-400:#4ade80;--color-green-500:#22c55e;--color-green-600:#16a34a;--color-green-700:#15803d;--color-green-800:#166534;--color-green-900:#14532d;--color-green-950:#052e16;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-700:#047857;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-teal-50:#f0fdfa;--color-teal-100:#ccfbf1;--color-teal-200:#99f6e4;--color-teal-300:#5eead4;--color-teal-400:#2dd4bf;--color-teal-500:#14b8a6;--color-teal-600:#0d9488;--color-teal-700:#0f766e;--color-teal-800:#115e59;--color-teal-900:#134e4a;--color-teal-950:#042f2e;--color-cyan-50:#ecfeff;--color-cyan-100:#cffafe;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#22d3ee;--color-cyan-500:#06b6d4;--color-cyan-600:#0891b2;--color-cyan-700:#0e7490;--color-cyan-800:#155e75;--color-cyan-900:#164e63;--color-cyan-950:#083344;--color-sky-50:#f0f9ff;--color-sky-100:#e0f2fe;--color-sky-200:#bae6fd;--color-sky-300:#7dd3fc;--color-sky-400:#38bdf8;--color-sky-500:#0ea5e9;--color-sky-600:#0284c7;--color-sky-700:#0369a1;--color-sky-800:#075985;--color-sky-900:#0c4a6e;--color-sky-950:#082f49;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bfdbfe;--color-blue-300:#93c5fd;--color-blue-400:#60a5fa;--color-blue-500:#3b82f6;--color-blue-600:#2563eb;--color-blue-700:#1d4ed8;--color-blue-800:#1e40af;--color-blue-900:#1e3a8a;--color-blue-950:#172554;--color-indigo-50:#eef2ff;--color-indigo-100:#e0e7ff;--color-indigo-200:#c7d2fe;--color-indigo-300:#a5b4fc;--color-indigo-400:#818cf8;--color-indigo-500:#6366f1;--color-indigo-600:#4f46e5;--color-indigo-700:#4338ca;--color-indigo-800:#3730a3;--color-indigo-900:#312e81;--color-indigo-950:#1e1b4b;--color-violet-50:#f5f3ff;--color-violet-100:#ede9fe;--color-violet-200:#ddd6fe;--color-violet-300:#c4b5fd;--color-violet-400:#a78bfa;--color-violet-500:#8b5cf6;--color-violet-600:#7c3aed;--color-violet-700:#6d28d9;--color-violet-800:#5b21b6;--color-violet-900:#4c1d95;--color-violet-950:#2e1065;--color-purple-50:#faf5ff;--color-purple-100:#f3e8ff;--color-purple-200:#e9d5ff;--color-purple-300:#d8b4fe;--color-purple-400:#c084fc;--color-purple-500:#a855f7;--color-purple-600:#9333ea;--color-purple-700:#7e22ce;--color-purple-800:#6b21a8;--color-purple-900:#581c87;--color-purple-950:#3b0764;--color-fuchsia-50:#fdf4ff;--color-fuchsia-100:#fae8ff;--color-fuchsia-200:#f5d0fe;--color-fuchsia-300:#f0abfc;--color-fuchsia-400:#e879f9;--color-fuchsia-500:#d946ef;--color-fuchsia-600:#c026d3;--color-fuchsia-700:#a21caf;--color-fuchsia-800:#86198f;--color-fuchsia-900:#701a75;--color-fuchsia-950:#4a044e;--color-pink-50:#fdf2f8;--color-pink-100:#fce7f3;--color-pink-200:#fbcfe8;--color-pink-300:#f9a8d4;--color-pink-400:#f472b6;--color-pink-500:#ec4899;--color-pink-600:#db2777;--color-pink-700:#be185d;--color-pink-800:#9d174d;--color-pink-900:#831843;--color-pink-950:#500724;--color-rose-50:#fff1f2;--color-rose-100:#ffe4e6;--color-rose-200:#fecdd3;--color-rose-300:#fda4af;--color-rose-400:#fb7185;--color-rose-500:#f43f5e;--color-rose-600:#e11d48;--color-rose-700:#be123c;--color-rose-800:#9f1239;--color-rose-900:#881337;--color-rose-950:#4c0519;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur:8px;--blur-sm:4px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--radius:.25rem;--radius-sm:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-xs:0 1px #0000000d;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--shadow-2xl:0 25px 50px -12px #00000040;--shadow-inner:inset 0 2px 4px 0 #0000000d;--inset-shadow-xs:inset 0 1px #0000000d;--inset-shadow-sm:inset 0 1px 1px #0000000d;--inset-shadow:inset 0 2px 4px #0000000d;--drop-shadow:0 1px 2px #0000001a,0 1px 1px #0000000f;--drop-shadow-sm:0 1px 1px #0000000d;--drop-shadow-md:0 4px 3px #00000012,0 2px 2px #0000000f;--drop-shadow-lg:0 10px 8px #0000000a,0 4px 3px #0000001a;--drop-shadow-xl:0 20px 13px #00000008,0 8px 5px #00000014;--drop-shadow-2xl:0 25px 25px #00000026;--spacing-px:1px;--spacing-0:0px;--spacing-0_5:.125rem;--spacing-1:.25rem;--spacing-1_5:.375rem;--spacing-2:.5rem;--spacing-2_5:.625rem;--spacing-3:.75rem;--spacing-3_5:.875rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-7:1.75rem;--spacing-8:2rem;--spacing-9:2.25rem;--spacing-10:2.5rem;--spacing-11:2.75rem;--spacing-12:3rem;--spacing-14:3.5rem;--spacing-16:4rem;--spacing-20:5rem;--spacing-24:6rem;--spacing-28:7rem;--spacing-32:8rem;--spacing-36:9rem;--spacing-40:10rem;--spacing-44:11rem;--spacing-48:12rem;--spacing-52:13rem;--spacing-56:14rem;--spacing-60:15rem;--spacing-64:16rem;--spacing-72:18rem;--spacing-80:20rem;--spacing-96:24rem;--width-3xs:16rem;--width-2xs:18rem;--width-xs:20rem;--width-sm:24rem;--width-md:28rem;--width-lg:32rem;--width-xl:36rem;--width-2xl:42rem;--width-3xl:48rem;--width-4xl:56rem;--width-5xl:64rem;--width-6xl:72rem;--width-7xl:80rem;--width-prose:65ch;--font-family-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--font-size-xs:.75rem;--font-size-xs--line-height:1rem;--font-size-sm:.875rem;--font-size-sm--line-height:1.25rem;--font-size-base:1rem;--font-size-base--line-height:1.5rem;--font-size-lg:1.125rem;--font-size-lg--line-height:1.75rem;--font-size-xl:1.25rem;--font-size-xl--line-height:1.75rem;--font-size-2xl:1.5rem;--font-size-2xl--line-height:2rem;--font-size-3xl:1.875rem;--font-size-3xl--line-height:2.25rem;--font-size-4xl:2.25rem;--font-size-4xl--line-height:2.5rem;--font-size-5xl:3rem;--font-size-5xl--line-height:1;--font-size-6xl:3.75rem;--font-size-6xl--line-height:1;--font-size-7xl:4.5rem;--font-size-7xl--line-height:1;--font-size-8xl:6rem;--font-size-8xl--line-height:1;--font-size-9xl:8rem;--font-size-9xl--line-height:1;--letter-spacing-tighter:-.05em;--letter-spacing-tight:-.025em;--letter-spacing-normal:0em;--letter-spacing-wide:.025em;--letter-spacing-wider:.05em;--letter-spacing-widest:.1em;--line-height-none:1;--line-height-tight:1.25;--line-height-snug:1.375;--line-height-normal:1.5;--line-height-relaxed:1.625;--line-height-loose:2;--line-height-3:.75rem;--line-height-4:1rem;--line-height-5:1.25rem;--line-height-6:1.5rem;--line-height-7:1.75rem;--line-height-8:2rem;--line-height-9:2.25rem;--line-height-10:2.5rem;--perspective-dramatic:100px;--perspective-near:300px;--perspective-normal:500px;--perspective-midrange:800px;--perspective-distant:1200px;--transition-timing-function-linear:linear;--transition-timing-function-in:cubic-bezier(.4,0,1,1);--transition-timing-function-out:cubic-bezier(0,0,.2,1);--transition-timing-function-in-out:cubic-bezier(.4,0,.2,1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{color:inherit;border-top-width:1px;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;background:0 0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;background:0 0}input:where(:not([type=button],[type=reset],[type=submit])),select,textarea{border:1px solid}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}summary{display:list-item}ol,ul,menu{list-style:none}textarea{resize:vertical}::placeholder{opacity:1;color:color-mix(in srgb,currentColor 50%,transparent)}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]{display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.static,.static\/Loader,.static\/Toast,.static\/index,.static\/types{position:static}.block{display:block}.hidden{display:none}.table{display:table}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.border{border-style:var(--tw-border-style);border-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:var(--transition-timing-function-in-out,cubic-bezier(.4,0,.2,1))}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@property --tw-rotate-x{syntax:"<transform-function>";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"<transform-function>";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"<transform-function>";inherits:false;initial-value:rotate(0)}@property --tw-skew-x{syntax:"<transform-function>";inherits:false;initial-value:skew(0)}@property --tw-skew-y{syntax:"<transform-function>";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"<custom-ident>";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}.block.svelte-nl1om8{position:relative;margin:0;box-shadow:var(--block-shadow);border-width:var(--block-border-width);border-color:var(--block-border-color);border-radius:var(--block-radius);background:var(--block-background-fill);width:100%;line-height:var(--line-sm)}.block.border_focus.svelte-nl1om8{border-color:var(--color-accent)}.block.border_contrast.svelte-nl1om8{border-color:var(--body-text-color)}.padded.svelte-nl1om8{padding:var(--block-padding)}.hidden.svelte-nl1om8{display:none}.hide-container.svelte-nl1om8{margin:0;box-shadow:none;--block-border-width:0;background:transparent;padding:0;overflow:visible}div.svelte-1hnfib2{margin-bottom:var(--spacing-lg);color:var(--block-info-text-color);font-weight:var(--block-info-text-weight);font-size:var(--block-info-text-size);line-height:var(--line-sm)}span.has-info.svelte-22c38v{margin-bottom:var(--spacing-xs)}span.svelte-22c38v:not(.has-info){margin-bottom:var(--spacing-lg)}span.svelte-22c38v{display:inline-block;position:relative;z-index:var(--layer-4);border:solid var(--block-title-border-width) var(--block-title-border-color);border-radius:var(--block-title-radius);background:var(--block-title-background-fill);padding:var(--block-title-padding);color:var(--block-title-text-color);font-weight:var(--block-title-text-weight);font-size:var(--block-title-text-size);line-height:var(--line-sm)}.hide.svelte-22c38v{margin:0;height:0}label.svelte-9gxdi0{display:inline-flex;align-items:center;z-index:var(--layer-2);box-shadow:var(--block-label-shadow);border:var(--block-label-border-width) solid var(--border-color-primary);border-top:none;border-left:none;border-radius:var(--block-label-radius);background:var(--block-label-background-fill);padding:var(--block-label-padding);pointer-events:none;color:var(--block-label-text-color);font-weight:var(--block-label-text-weight);font-size:var(--block-label-text-size);line-height:var(--line-sm)}.gr-group label.svelte-9gxdi0{border-top-left-radius:0}label.float.svelte-9gxdi0{position:absolute;top:var(--block-label-margin);left:var(--block-label-margin)}label.svelte-9gxdi0:not(.float){position:static;margin-top:var(--block-label-margin);margin-left:var(--block-label-margin)}.hide.svelte-9gxdi0{height:0}span.svelte-9gxdi0{opacity:.8;margin-right:var(--size-2);width:calc(var(--block-label-text-size) - 1px);height:calc(var(--block-label-text-size) - 1px)}.hide-label.svelte-9gxdi0{box-shadow:none;border-width:0;background:transparent;overflow:visible}button.svelte-1lrphxw{display:flex;justify-content:center;align-items:center;gap:1px;z-index:var(--layer-2);border-radius:var(--radius-sm);color:var(--block-label-text-color);border:1px solid transparent}button[disabled].svelte-1lrphxw{opacity:.5;box-shadow:none}button[disabled].svelte-1lrphxw:hover{cursor:not-allowed}.padded.svelte-1lrphxw{padding:2px;background:var(--bg-color);box-shadow:var(--shadow-drop);border:1px solid var(--button-secondary-border-color)}button.svelte-1lrphxw:hover,button.highlight.svelte-1lrphxw{cursor:pointer;color:var(--color-accent)}.padded.svelte-1lrphxw:hover{border:2px solid var(--button-secondary-border-color-hover);padding:1px;color:var(--block-label-text-color)}span.svelte-1lrphxw{padding:0 1px;font-size:10px}div.svelte-1lrphxw{padding:2px;display:flex;align-items:flex-end}.small.svelte-1lrphxw{width:14px;height:14px}.medium.svelte-1lrphxw{width:20px;height:20px}.large.svelte-1lrphxw{width:22px;height:22px}.pending.svelte-1lrphxw{animation:svelte-1lrphxw-flash .5s infinite}@keyframes svelte-1lrphxw-flash{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.transparent.svelte-1lrphxw{background:transparent;border:none;box-shadow:none}.empty.svelte-3w3rth{display:flex;justify-content:center;align-items:center;margin-top:calc(0px - var(--size-6));height:var(--size-full)}.icon.svelte-3w3rth{opacity:.5;height:var(--size-5);color:var(--body-text-color)}.small.svelte-3w3rth{min-height:calc(var(--size-32) - 20px)}.large.svelte-3w3rth{min-height:calc(var(--size-64) - 20px)}.unpadded_box.svelte-3w3rth{margin-top:0}.small_parent.svelte-3w3rth{min-height:100%!important}.dropdown-arrow.svelte-145leq6{fill:currentColor}.wrap.svelte-kzcjhc{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:var(--size-60);color:var(--block-label-text-color);line-height:var(--line-md);height:100%;padding-top:var(--size-3)}.or.svelte-kzcjhc{color:var(--body-text-color-subdued);display:flex}.icon-wrap.svelte-kzcjhc{width:30px;margin-bottom:var(--spacing-lg)}@media (--screen-md){.wrap.svelte-kzcjhc{font-size:var(--text-lg)}}.hovered.svelte-kzcjhc{color:var(--color-accent)}div.svelte-q32hvf{border-top:1px solid transparent;display:flex;max-height:100%;justify-content:center;align-items:center;gap:var(--spacing-sm);height:auto;align-items:flex-end;color:var(--block-label-text-color);flex-shrink:0}.show_border.svelte-q32hvf{border-top:1px solid var(--block-border-color);margin-top:var(--spacing-xxl);box-shadow:var(--shadow-drop)}.source-selection.svelte-1jp3vgd{display:flex;align-items:center;justify-content:center;border-top:1px solid var(--border-color-primary);width:95%;bottom:0;left:0;right:0;margin-left:auto;margin-right:auto}.icon.svelte-1jp3vgd{width:22px;height:22px;margin:var(--spacing-lg) var(--spacing-xs);padding:var(--spacing-xs);color:var(--neutral-400);border-radius:var(--radius-md)}.selected.svelte-1jp3vgd{color:var(--color-accent)}.icon.svelte-1jp3vgd:hover,.icon.svelte-1jp3vgd:focus{color:var(--color-accent)}svg.svelte-43sxxs.svelte-43sxxs{width:var(--size-20);height:var(--size-20)}svg.svelte-43sxxs path.svelte-43sxxs{fill:var(--loader-color)}div.svelte-43sxxs.svelte-43sxxs{z-index:var(--layer-2)}.margin.svelte-43sxxs.svelte-43sxxs{margin:var(--size-4)}.wrap.svelte-1yk38uw.svelte-1yk38uw{display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:var(--layer-top);transition:opacity .1s ease-in-out;border-radius:var(--block-radius);background:var(--block-background-fill);padding:0 var(--size-6);max-height:var(--size-screen-h);overflow:hidden}.wrap.center.svelte-1yk38uw.svelte-1yk38uw{top:0;right:0;left:0}.wrap.default.svelte-1yk38uw.svelte-1yk38uw{inset:0}.hide.svelte-1yk38uw.svelte-1yk38uw{opacity:0;pointer-events:none}.generating.svelte-1yk38uw.svelte-1yk38uw{animation:svelte-1yk38uw-pulse 2s cubic-bezier(.4,0,.6,1) infinite;border:2px solid var(--color-accent);background:transparent;z-index:var(--layer-1)}.translucent.svelte-1yk38uw.svelte-1yk38uw{background:none}@keyframes svelte-1yk38uw-pulse{0%,to{opacity:1}50%{opacity:.5}}.loading.svelte-1yk38uw.svelte-1yk38uw{z-index:var(--layer-2);color:var(--body-text-color)}.eta-bar.svelte-1yk38uw.svelte-1yk38uw{position:absolute;inset:0;transform-origin:left;opacity:.8;z-index:var(--layer-1);transition:10ms;background:var(--background-fill-secondary)}.progress-bar-wrap.svelte-1yk38uw.svelte-1yk38uw{border:1px solid var(--border-color-primary);background:var(--background-fill-primary);width:55.5%;height:var(--size-4)}.progress-bar.svelte-1yk38uw.svelte-1yk38uw{transform-origin:left;background-color:var(--loader-color);width:var(--size-full);height:var(--size-full)}.progress-level.svelte-1yk38uw.svelte-1yk38uw{display:flex;flex-direction:column;align-items:center;gap:1;z-index:var(--layer-2);width:var(--size-full)}.progress-level-inner.svelte-1yk38uw.svelte-1yk38uw{margin:var(--size-2) auto;color:var(--body-text-color);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text.svelte-1yk38uw.svelte-1yk38uw{position:absolute;top:0;right:0;z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text-center.svelte-1yk38uw.svelte-1yk38uw{display:flex;position:absolute;top:0;right:0;justify-content:center;align-items:center;transform:translateY(var(--size-6));z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono);text-align:center}.error.svelte-1yk38uw.svelte-1yk38uw{box-shadow:var(--shadow-drop);border:solid 1px var(--error-border-color);border-radius:var(--radius-full);background:var(--error-background-fill);padding-right:var(--size-4);padding-left:var(--size-4);color:var(--error-text-color);font-weight:var(--weight-semibold);font-size:var(--text-lg);line-height:var(--line-lg);font-family:var(--font)}.minimal.svelte-1yk38uw .progress-text.svelte-1yk38uw{background:var(--block-background-fill)}.border.svelte-1yk38uw.svelte-1yk38uw{border:1px solid var(--border-color-primary)}.clear-status.svelte-1yk38uw.svelte-1yk38uw{position:absolute;display:flex;top:var(--size-2);right:var(--size-2);justify-content:flex-end;gap:var(--spacing-sm);z-index:var(--layer-1)}.toast-body.svelte-solcu7{display:flex;position:relative;right:0;left:0;align-items:center;margin:var(--size-6) var(--size-4);margin:auto;border-radius:var(--container-radius);overflow:hidden;pointer-events:auto}.toast-body.error.svelte-solcu7{border:1px solid var(--color-red-700);background:var(--color-red-50)}.dark .toast-body.error.svelte-solcu7{border:1px solid var(--color-red-500);background-color:var(--color-grey-950)}.toast-body.warning.svelte-solcu7{border:1px solid var(--color-yellow-700);background:var(--color-yellow-50)}.dark .toast-body.warning.svelte-solcu7{border:1px solid var(--color-yellow-500);background-color:var(--color-grey-950)}.toast-body.info.svelte-solcu7{border:1px solid var(--color-grey-700);background:var(--color-grey-50)}.dark .toast-body.info.svelte-solcu7{border:1px solid var(--color-grey-500);background-color:var(--color-grey-950)}.toast-title.svelte-solcu7{display:flex;align-items:center;font-weight:var(--weight-bold);font-size:var(--text-lg);line-height:var(--line-sm);text-transform:capitalize}.toast-title.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-title.error.svelte-solcu7{color:var(--color-red-50)}.toast-title.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-title.warning.svelte-solcu7{color:var(--color-yellow-50)}.toast-title.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-title.info.svelte-solcu7{color:var(--color-grey-50)}.toast-close.svelte-solcu7{margin:0 var(--size-3);border-radius:var(--size-3);padding:0px var(--size-1-5);font-size:var(--size-5);line-height:var(--size-5)}.toast-close.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-close.error.svelte-solcu7{color:var(--color-red-500)}.toast-close.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-close.warning.svelte-solcu7{color:var(--color-yellow-500)}.toast-close.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-close.info.svelte-solcu7{color:var(--color-grey-500)}.toast-text.svelte-solcu7{font-size:var(--text-lg)}.toast-text.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-text.error.svelte-solcu7{color:var(--color-red-50)}.toast-text.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-text.warning.svelte-solcu7{color:var(--color-yellow-50)}.toast-text.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-text.info.svelte-solcu7{color:var(--color-grey-50)}.toast-details.svelte-solcu7{margin:var(--size-3) var(--size-3) var(--size-3) 0;width:100%}.toast-icon.svelte-solcu7{display:flex;position:absolute;position:relative;flex-shrink:0;justify-content:center;align-items:center;margin:var(--size-2);border-radius:var(--radius-full);padding:var(--size-1);padding-left:calc(var(--size-1) - 1px);width:35px;height:35px}.toast-icon.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-icon.error.svelte-solcu7{color:var(--color-red-500)}.toast-icon.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-icon.warning.svelte-solcu7{color:var(--color-yellow-500)}.toast-icon.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-icon.info.svelte-solcu7{color:var(--color-grey-500)}@keyframes svelte-solcu7-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.timer.svelte-solcu7{position:absolute;bottom:0;left:0;transform-origin:0 0;animation:svelte-solcu7-countdown 10s linear forwards;width:100%;height:var(--size-1)}.timer.error.svelte-solcu7{background:var(--color-red-700)}.dark .timer.error.svelte-solcu7{background:var(--color-red-500)}.timer.warning.svelte-solcu7{background:var(--color-yellow-700)}.dark .timer.warning.svelte-solcu7{background:var(--color-yellow-500)}.timer.info.svelte-solcu7{background:var(--color-grey-700)}.dark .timer.info.svelte-solcu7{background:var(--color-grey-500)}.toast-wrap.svelte-gatr8h{display:flex;position:fixed;top:var(--size-4);right:var(--size-4);flex-direction:column;align-items:end;gap:var(--size-2);z-index:var(--layer-top);width:calc(100% - var(--size-8))}@media (--screen-sm){.toast-wrap.svelte-gatr8h{width:calc(var(--size-96) + var(--size-10))}}.container.svelte-giydt1 img{width:100%;height:100%}.container.selected.svelte-giydt1.svelte-giydt1{border-color:var(--border-color-accent)}.container.table.svelte-giydt1.svelte-giydt1{margin:0 auto;border:2px solid var(--border-color-primary);border-radius:var(--radius-lg);overflow:hidden;width:var(--size-20);height:var(--size-20);object-fit:cover}.container.gallery.svelte-giydt1.svelte-giydt1{height:var(--size-20);max-height:var(--size-20);object-fit:cover}.container.svelte-giydt1 img.svelte-giydt1{object-fit:cover}div.viewer.svelte-mo2zro{width:100%}div.viewer.svelte-mo2zro>canvas{position:initial!important;top:unset!important;width:100%;height:100%}
 
1
+ /*! tailwindcss v4.0.0-alpha.14 | MIT License | https://tailwindcss.com */@layer theme{:root{--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-family-sans);--default-font-feature-settings:var(--font-family-sans--font-feature-settings);--default-font-variation-settings:var(--font-family-sans--font-variation-settings);--default-mono-font-family:var(--font-family-mono);--default-mono-font-feature-settings:var(--font-family-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-family-mono--font-variation-settings);--breakpoint-sm:640px;--breakpoint-md:768px;--breakpoint-lg:1024px;--breakpoint-xl:1280px;--breakpoint-2xl:1536px;--color-black:#000;--color-white:#fff;--color-slate-50:#f8fafc;--color-slate-100:#f1f5f9;--color-slate-200:#e2e8f0;--color-slate-300:#cbd5e1;--color-slate-400:#94a3b8;--color-slate-500:#64748b;--color-slate-600:#475569;--color-slate-700:#334155;--color-slate-800:#1e293b;--color-slate-900:#0f172a;--color-slate-950:#020617;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-gray-950:#030712;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-200:#e4e4e7;--color-zinc-300:#d4d4d8;--color-zinc-400:#a1a1aa;--color-zinc-500:#71717a;--color-zinc-600:#52525b;--color-zinc-700:#3f3f46;--color-zinc-800:#27272a;--color-zinc-900:#18181b;--color-zinc-950:#09090b;--color-neutral-50:#fafafa;--color-neutral-100:#f5f5f5;--color-neutral-200:#e5e5e5;--color-neutral-300:#d4d4d4;--color-neutral-400:#a3a3a3;--color-neutral-500:#737373;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#262626;--color-neutral-900:#171717;--color-neutral-950:#0a0a0a;--color-stone-50:#fafaf9;--color-stone-100:#f5f5f4;--color-stone-200:#e7e5e4;--color-stone-300:#d6d3d1;--color-stone-400:#a8a29e;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-red-50:#fef2f2;--color-red-100:#fee2e2;--color-red-200:#fecaca;--color-red-300:#fca5a5;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-600:#dc2626;--color-red-700:#b91c1c;--color-red-800:#991b1b;--color-red-900:#7f1d1d;--color-red-950:#450a0a;--color-orange-50:#fff7ed;--color-orange-100:#ffedd5;--color-orange-200:#fed7aa;--color-orange-300:#fdba74;--color-orange-400:#fb923c;--color-orange-500:#f97316;--color-orange-600:#ea580c;--color-orange-700:#c2410c;--color-orange-800:#9a3412;--color-orange-900:#7c2d12;--color-orange-950:#431407;--color-amber-50:#fffbeb;--color-amber-100:#fef3c7;--color-amber-200:#fde68a;--color-amber-300:#fcd34d;--color-amber-400:#fbbf24;--color-amber-500:#f59e0b;--color-amber-600:#d97706;--color-amber-700:#b45309;--color-amber-800:#92400e;--color-amber-900:#78350f;--color-amber-950:#451a03;--color-yellow-50:#fefce8;--color-yellow-100:#fef9c3;--color-yellow-200:#fef08a;--color-yellow-300:#fde047;--color-yellow-400:#facc15;--color-yellow-500:#eab308;--color-yellow-600:#ca8a04;--color-yellow-700:#a16207;--color-yellow-800:#854d0e;--color-yellow-900:#713f12;--color-yellow-950:#422006;--color-lime-50:#f7fee7;--color-lime-100:#ecfccb;--color-lime-200:#d9f99d;--color-lime-300:#bef264;--color-lime-400:#a3e635;--color-lime-500:#84cc16;--color-lime-600:#65a30d;--color-lime-700:#4d7c0f;--color-lime-800:#3f6212;--color-lime-900:#365314;--color-lime-950:#1a2e05;--color-green-50:#f0fdf4;--color-green-100:#dcfce7;--color-green-200:#bbf7d0;--color-green-300:#86efac;--color-green-400:#4ade80;--color-green-500:#22c55e;--color-green-600:#16a34a;--color-green-700:#15803d;--color-green-800:#166534;--color-green-900:#14532d;--color-green-950:#052e16;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-700:#047857;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-teal-50:#f0fdfa;--color-teal-100:#ccfbf1;--color-teal-200:#99f6e4;--color-teal-300:#5eead4;--color-teal-400:#2dd4bf;--color-teal-500:#14b8a6;--color-teal-600:#0d9488;--color-teal-700:#0f766e;--color-teal-800:#115e59;--color-teal-900:#134e4a;--color-teal-950:#042f2e;--color-cyan-50:#ecfeff;--color-cyan-100:#cffafe;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#22d3ee;--color-cyan-500:#06b6d4;--color-cyan-600:#0891b2;--color-cyan-700:#0e7490;--color-cyan-800:#155e75;--color-cyan-900:#164e63;--color-cyan-950:#083344;--color-sky-50:#f0f9ff;--color-sky-100:#e0f2fe;--color-sky-200:#bae6fd;--color-sky-300:#7dd3fc;--color-sky-400:#38bdf8;--color-sky-500:#0ea5e9;--color-sky-600:#0284c7;--color-sky-700:#0369a1;--color-sky-800:#075985;--color-sky-900:#0c4a6e;--color-sky-950:#082f49;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bfdbfe;--color-blue-300:#93c5fd;--color-blue-400:#60a5fa;--color-blue-500:#3b82f6;--color-blue-600:#2563eb;--color-blue-700:#1d4ed8;--color-blue-800:#1e40af;--color-blue-900:#1e3a8a;--color-blue-950:#172554;--color-indigo-50:#eef2ff;--color-indigo-100:#e0e7ff;--color-indigo-200:#c7d2fe;--color-indigo-300:#a5b4fc;--color-indigo-400:#818cf8;--color-indigo-500:#6366f1;--color-indigo-600:#4f46e5;--color-indigo-700:#4338ca;--color-indigo-800:#3730a3;--color-indigo-900:#312e81;--color-indigo-950:#1e1b4b;--color-violet-50:#f5f3ff;--color-violet-100:#ede9fe;--color-violet-200:#ddd6fe;--color-violet-300:#c4b5fd;--color-violet-400:#a78bfa;--color-violet-500:#8b5cf6;--color-violet-600:#7c3aed;--color-violet-700:#6d28d9;--color-violet-800:#5b21b6;--color-violet-900:#4c1d95;--color-violet-950:#2e1065;--color-purple-50:#faf5ff;--color-purple-100:#f3e8ff;--color-purple-200:#e9d5ff;--color-purple-300:#d8b4fe;--color-purple-400:#c084fc;--color-purple-500:#a855f7;--color-purple-600:#9333ea;--color-purple-700:#7e22ce;--color-purple-800:#6b21a8;--color-purple-900:#581c87;--color-purple-950:#3b0764;--color-fuchsia-50:#fdf4ff;--color-fuchsia-100:#fae8ff;--color-fuchsia-200:#f5d0fe;--color-fuchsia-300:#f0abfc;--color-fuchsia-400:#e879f9;--color-fuchsia-500:#d946ef;--color-fuchsia-600:#c026d3;--color-fuchsia-700:#a21caf;--color-fuchsia-800:#86198f;--color-fuchsia-900:#701a75;--color-fuchsia-950:#4a044e;--color-pink-50:#fdf2f8;--color-pink-100:#fce7f3;--color-pink-200:#fbcfe8;--color-pink-300:#f9a8d4;--color-pink-400:#f472b6;--color-pink-500:#ec4899;--color-pink-600:#db2777;--color-pink-700:#be185d;--color-pink-800:#9d174d;--color-pink-900:#831843;--color-pink-950:#500724;--color-rose-50:#fff1f2;--color-rose-100:#ffe4e6;--color-rose-200:#fecdd3;--color-rose-300:#fda4af;--color-rose-400:#fb7185;--color-rose-500:#f43f5e;--color-rose-600:#e11d48;--color-rose-700:#be123c;--color-rose-800:#9f1239;--color-rose-900:#881337;--color-rose-950:#4c0519;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur:8px;--blur-sm:4px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--radius:.25rem;--radius-sm:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-xs:0 1px #0000000d;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--shadow-2xl:0 25px 50px -12px #00000040;--shadow-inner:inset 0 2px 4px 0 #0000000d;--inset-shadow-xs:inset 0 1px #0000000d;--inset-shadow-sm:inset 0 1px 1px #0000000d;--inset-shadow:inset 0 2px 4px #0000000d;--drop-shadow:0 1px 2px #0000001a,0 1px 1px #0000000f;--drop-shadow-sm:0 1px 1px #0000000d;--drop-shadow-md:0 4px 3px #00000012,0 2px 2px #0000000f;--drop-shadow-lg:0 10px 8px #0000000a,0 4px 3px #0000001a;--drop-shadow-xl:0 20px 13px #00000008,0 8px 5px #00000014;--drop-shadow-2xl:0 25px 25px #00000026;--spacing-px:1px;--spacing-0:0px;--spacing-0_5:.125rem;--spacing-1:.25rem;--spacing-1_5:.375rem;--spacing-2:.5rem;--spacing-2_5:.625rem;--spacing-3:.75rem;--spacing-3_5:.875rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-7:1.75rem;--spacing-8:2rem;--spacing-9:2.25rem;--spacing-10:2.5rem;--spacing-11:2.75rem;--spacing-12:3rem;--spacing-14:3.5rem;--spacing-16:4rem;--spacing-20:5rem;--spacing-24:6rem;--spacing-28:7rem;--spacing-32:8rem;--spacing-36:9rem;--spacing-40:10rem;--spacing-44:11rem;--spacing-48:12rem;--spacing-52:13rem;--spacing-56:14rem;--spacing-60:15rem;--spacing-64:16rem;--spacing-72:18rem;--spacing-80:20rem;--spacing-96:24rem;--width-3xs:16rem;--width-2xs:18rem;--width-xs:20rem;--width-sm:24rem;--width-md:28rem;--width-lg:32rem;--width-xl:36rem;--width-2xl:42rem;--width-3xl:48rem;--width-4xl:56rem;--width-5xl:64rem;--width-6xl:72rem;--width-7xl:80rem;--width-prose:65ch;--font-family-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--font-size-xs:.75rem;--font-size-xs--line-height:1rem;--font-size-sm:.875rem;--font-size-sm--line-height:1.25rem;--font-size-base:1rem;--font-size-base--line-height:1.5rem;--font-size-lg:1.125rem;--font-size-lg--line-height:1.75rem;--font-size-xl:1.25rem;--font-size-xl--line-height:1.75rem;--font-size-2xl:1.5rem;--font-size-2xl--line-height:2rem;--font-size-3xl:1.875rem;--font-size-3xl--line-height:2.25rem;--font-size-4xl:2.25rem;--font-size-4xl--line-height:2.5rem;--font-size-5xl:3rem;--font-size-5xl--line-height:1;--font-size-6xl:3.75rem;--font-size-6xl--line-height:1;--font-size-7xl:4.5rem;--font-size-7xl--line-height:1;--font-size-8xl:6rem;--font-size-8xl--line-height:1;--font-size-9xl:8rem;--font-size-9xl--line-height:1;--letter-spacing-tighter:-.05em;--letter-spacing-tight:-.025em;--letter-spacing-normal:0em;--letter-spacing-wide:.025em;--letter-spacing-wider:.05em;--letter-spacing-widest:.1em;--line-height-none:1;--line-height-tight:1.25;--line-height-snug:1.375;--line-height-normal:1.5;--line-height-relaxed:1.625;--line-height-loose:2;--line-height-3:.75rem;--line-height-4:1rem;--line-height-5:1.25rem;--line-height-6:1.5rem;--line-height-7:1.75rem;--line-height-8:2rem;--line-height-9:2.25rem;--line-height-10:2.5rem;--perspective-dramatic:100px;--perspective-near:300px;--perspective-normal:500px;--perspective-midrange:800px;--perspective-distant:1200px;--transition-timing-function-linear:linear;--transition-timing-function-in:cubic-bezier(.4,0,1,1);--transition-timing-function-out:cubic-bezier(0,0,.2,1);--transition-timing-function-in-out:cubic-bezier(.4,0,.2,1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{color:inherit;border-top-width:1px;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;background:0 0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;background:0 0}input:where(:not([type=button],[type=reset],[type=submit])),select,textarea{border:1px solid}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}summary{display:list-item}ol,ul,menu{list-style:none}textarea{resize:vertical}::placeholder{opacity:1;color:color-mix(in srgb,currentColor 50%,transparent)}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]{display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.static,.static\/Loader,.static\/Toast,.static\/index,.static\/types{position:static}.block{display:block}.hidden{display:none}.table{display:table}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.border{border-style:var(--tw-border-style);border-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:var(--transition-timing-function-in-out,cubic-bezier(.4,0,.2,1))}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@property --tw-rotate-x{syntax:"<transform-function>";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"<transform-function>";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"<transform-function>";inherits:false;initial-value:rotate(0)}@property --tw-skew-x{syntax:"<transform-function>";inherits:false;initial-value:skew(0)}@property --tw-skew-y{syntax:"<transform-function>";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"<custom-ident>";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}.block.svelte-nl1om8{position:relative;margin:0;box-shadow:var(--block-shadow);border-width:var(--block-border-width);border-color:var(--block-border-color);border-radius:var(--block-radius);background:var(--block-background-fill);width:100%;line-height:var(--line-sm)}.block.border_focus.svelte-nl1om8{border-color:var(--color-accent)}.block.border_contrast.svelte-nl1om8{border-color:var(--body-text-color)}.padded.svelte-nl1om8{padding:var(--block-padding)}.hidden.svelte-nl1om8{display:none}.hide-container.svelte-nl1om8{margin:0;box-shadow:none;--block-border-width:0;background:transparent;padding:0;overflow:visible}div.svelte-1hnfib2{margin-bottom:var(--spacing-lg);color:var(--block-info-text-color);font-weight:var(--block-info-text-weight);font-size:var(--block-info-text-size);line-height:var(--line-sm)}span.has-info.svelte-22c38v{margin-bottom:var(--spacing-xs)}span.svelte-22c38v:not(.has-info){margin-bottom:var(--spacing-lg)}span.svelte-22c38v{display:inline-block;position:relative;z-index:var(--layer-4);border:solid var(--block-title-border-width) var(--block-title-border-color);border-radius:var(--block-title-radius);background:var(--block-title-background-fill);padding:var(--block-title-padding);color:var(--block-title-text-color);font-weight:var(--block-title-text-weight);font-size:var(--block-title-text-size);line-height:var(--line-sm)}.hide.svelte-22c38v{margin:0;height:0}label.svelte-9gxdi0{display:inline-flex;align-items:center;z-index:var(--layer-2);box-shadow:var(--block-label-shadow);border:var(--block-label-border-width) solid var(--border-color-primary);border-top:none;border-left:none;border-radius:var(--block-label-radius);background:var(--block-label-background-fill);padding:var(--block-label-padding);pointer-events:none;color:var(--block-label-text-color);font-weight:var(--block-label-text-weight);font-size:var(--block-label-text-size);line-height:var(--line-sm)}.gr-group label.svelte-9gxdi0{border-top-left-radius:0}label.float.svelte-9gxdi0{position:absolute;top:var(--block-label-margin);left:var(--block-label-margin)}label.svelte-9gxdi0:not(.float){position:static;margin-top:var(--block-label-margin);margin-left:var(--block-label-margin)}.hide.svelte-9gxdi0{height:0}span.svelte-9gxdi0{opacity:.8;margin-right:var(--size-2);width:calc(var(--block-label-text-size) - 1px);height:calc(var(--block-label-text-size) - 1px)}.hide-label.svelte-9gxdi0{box-shadow:none;border-width:0;background:transparent;overflow:visible}button.svelte-1lrphxw{display:flex;justify-content:center;align-items:center;gap:1px;z-index:var(--layer-2);border-radius:var(--radius-sm);color:var(--block-label-text-color);border:1px solid transparent}button[disabled].svelte-1lrphxw{opacity:.5;box-shadow:none}button[disabled].svelte-1lrphxw:hover{cursor:not-allowed}.padded.svelte-1lrphxw{padding:2px;background:var(--bg-color);box-shadow:var(--shadow-drop);border:1px solid var(--button-secondary-border-color)}button.svelte-1lrphxw:hover,button.highlight.svelte-1lrphxw{cursor:pointer;color:var(--color-accent)}.padded.svelte-1lrphxw:hover{border:2px solid var(--button-secondary-border-color-hover);padding:1px;color:var(--block-label-text-color)}span.svelte-1lrphxw{padding:0 1px;font-size:10px}div.svelte-1lrphxw{padding:2px;display:flex;align-items:flex-end}.small.svelte-1lrphxw{width:14px;height:14px}.medium.svelte-1lrphxw{width:20px;height:20px}.large.svelte-1lrphxw{width:22px;height:22px}.pending.svelte-1lrphxw{animation:svelte-1lrphxw-flash .5s infinite}@keyframes svelte-1lrphxw-flash{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.transparent.svelte-1lrphxw{background:transparent;border:none;box-shadow:none}.empty.svelte-3w3rth{display:flex;justify-content:center;align-items:center;margin-top:calc(0px - var(--size-6));height:var(--size-full)}.icon.svelte-3w3rth{opacity:.5;height:var(--size-5);color:var(--body-text-color)}.small.svelte-3w3rth{min-height:calc(var(--size-32) - 20px)}.large.svelte-3w3rth{min-height:calc(var(--size-64) - 20px)}.unpadded_box.svelte-3w3rth{margin-top:0}.small_parent.svelte-3w3rth{min-height:100%!important}.dropdown-arrow.svelte-145leq6{fill:currentColor}.wrap.svelte-kzcjhc{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:var(--size-60);color:var(--block-label-text-color);line-height:var(--line-md);height:100%;padding-top:var(--size-3)}.or.svelte-kzcjhc{color:var(--body-text-color-subdued);display:flex}.icon-wrap.svelte-kzcjhc{width:30px;margin-bottom:var(--spacing-lg)}@media (--screen-md){.wrap.svelte-kzcjhc{font-size:var(--text-lg)}}.hovered.svelte-kzcjhc{color:var(--color-accent)}div.svelte-q32hvf{border-top:1px solid transparent;display:flex;max-height:100%;justify-content:center;align-items:center;gap:var(--spacing-sm);height:auto;align-items:flex-end;color:var(--block-label-text-color);flex-shrink:0}.show_border.svelte-q32hvf{border-top:1px solid var(--block-border-color);margin-top:var(--spacing-xxl);box-shadow:var(--shadow-drop)}.source-selection.svelte-1jp3vgd{display:flex;align-items:center;justify-content:center;border-top:1px solid var(--border-color-primary);width:95%;bottom:0;left:0;right:0;margin-left:auto;margin-right:auto}.icon.svelte-1jp3vgd{width:22px;height:22px;margin:var(--spacing-lg) var(--spacing-xs);padding:var(--spacing-xs);color:var(--neutral-400);border-radius:var(--radius-md)}.selected.svelte-1jp3vgd{color:var(--color-accent)}.icon.svelte-1jp3vgd:hover,.icon.svelte-1jp3vgd:focus{color:var(--color-accent)}svg.svelte-43sxxs.svelte-43sxxs{width:var(--size-20);height:var(--size-20)}svg.svelte-43sxxs path.svelte-43sxxs{fill:var(--loader-color)}div.svelte-43sxxs.svelte-43sxxs{z-index:var(--layer-2)}.margin.svelte-43sxxs.svelte-43sxxs{margin:var(--size-4)}.wrap.svelte-1yk38uw.svelte-1yk38uw{display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:var(--layer-top);transition:opacity .1s ease-in-out;border-radius:var(--block-radius);background:var(--block-background-fill);padding:0 var(--size-6);max-height:var(--size-screen-h);overflow:hidden}.wrap.center.svelte-1yk38uw.svelte-1yk38uw{top:0;right:0;left:0}.wrap.default.svelte-1yk38uw.svelte-1yk38uw{top:0;right:0;bottom:0;left:0}.hide.svelte-1yk38uw.svelte-1yk38uw{opacity:0;pointer-events:none}.generating.svelte-1yk38uw.svelte-1yk38uw{animation:svelte-1yk38uw-pulse 2s cubic-bezier(.4,0,.6,1) infinite;border:2px solid var(--color-accent);background:transparent;z-index:var(--layer-1)}.translucent.svelte-1yk38uw.svelte-1yk38uw{background:none}@keyframes svelte-1yk38uw-pulse{0%,to{opacity:1}50%{opacity:.5}}.loading.svelte-1yk38uw.svelte-1yk38uw{z-index:var(--layer-2);color:var(--body-text-color)}.eta-bar.svelte-1yk38uw.svelte-1yk38uw{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left;opacity:.8;z-index:var(--layer-1);transition:10ms;background:var(--background-fill-secondary)}.progress-bar-wrap.svelte-1yk38uw.svelte-1yk38uw{border:1px solid var(--border-color-primary);background:var(--background-fill-primary);width:55.5%;height:var(--size-4)}.progress-bar.svelte-1yk38uw.svelte-1yk38uw{transform-origin:left;background-color:var(--loader-color);width:var(--size-full);height:var(--size-full)}.progress-level.svelte-1yk38uw.svelte-1yk38uw{display:flex;flex-direction:column;align-items:center;gap:1;z-index:var(--layer-2);width:var(--size-full)}.progress-level-inner.svelte-1yk38uw.svelte-1yk38uw{margin:var(--size-2) auto;color:var(--body-text-color);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text.svelte-1yk38uw.svelte-1yk38uw{position:absolute;top:0;right:0;z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text-center.svelte-1yk38uw.svelte-1yk38uw{display:flex;position:absolute;top:0;right:0;justify-content:center;align-items:center;transform:translateY(var(--size-6));z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono);text-align:center}.error.svelte-1yk38uw.svelte-1yk38uw{box-shadow:var(--shadow-drop);border:solid 1px var(--error-border-color);border-radius:var(--radius-full);background:var(--error-background-fill);padding-right:var(--size-4);padding-left:var(--size-4);color:var(--error-text-color);font-weight:var(--weight-semibold);font-size:var(--text-lg);line-height:var(--line-lg);font-family:var(--font)}.minimal.svelte-1yk38uw .progress-text.svelte-1yk38uw{background:var(--block-background-fill)}.border.svelte-1yk38uw.svelte-1yk38uw{border:1px solid var(--border-color-primary)}.clear-status.svelte-1yk38uw.svelte-1yk38uw{position:absolute;display:flex;top:var(--size-2);right:var(--size-2);justify-content:flex-end;gap:var(--spacing-sm);z-index:var(--layer-1)}.toast-body.svelte-solcu7{display:flex;position:relative;right:0;left:0;align-items:center;margin:var(--size-6) var(--size-4);margin:auto;border-radius:var(--container-radius);overflow:hidden;pointer-events:auto}.toast-body.error.svelte-solcu7{border:1px solid var(--color-red-700);background:var(--color-red-50)}.dark .toast-body.error.svelte-solcu7{border:1px solid var(--color-red-500);background-color:var(--color-grey-950)}.toast-body.warning.svelte-solcu7{border:1px solid var(--color-yellow-700);background:var(--color-yellow-50)}.dark .toast-body.warning.svelte-solcu7{border:1px solid var(--color-yellow-500);background-color:var(--color-grey-950)}.toast-body.info.svelte-solcu7{border:1px solid var(--color-grey-700);background:var(--color-grey-50)}.dark .toast-body.info.svelte-solcu7{border:1px solid var(--color-grey-500);background-color:var(--color-grey-950)}.toast-title.svelte-solcu7{display:flex;align-items:center;font-weight:var(--weight-bold);font-size:var(--text-lg);line-height:var(--line-sm);text-transform:capitalize}.toast-title.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-title.error.svelte-solcu7{color:var(--color-red-50)}.toast-title.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-title.warning.svelte-solcu7{color:var(--color-yellow-50)}.toast-title.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-title.info.svelte-solcu7{color:var(--color-grey-50)}.toast-close.svelte-solcu7{margin:0 var(--size-3);border-radius:var(--size-3);padding:0px var(--size-1-5);font-size:var(--size-5);line-height:var(--size-5)}.toast-close.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-close.error.svelte-solcu7{color:var(--color-red-500)}.toast-close.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-close.warning.svelte-solcu7{color:var(--color-yellow-500)}.toast-close.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-close.info.svelte-solcu7{color:var(--color-grey-500)}.toast-text.svelte-solcu7{font-size:var(--text-lg)}.toast-text.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-text.error.svelte-solcu7{color:var(--color-red-50)}.toast-text.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-text.warning.svelte-solcu7{color:var(--color-yellow-50)}.toast-text.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-text.info.svelte-solcu7{color:var(--color-grey-50)}.toast-details.svelte-solcu7{margin:var(--size-3) var(--size-3) var(--size-3) 0;width:100%}.toast-icon.svelte-solcu7{display:flex;position:absolute;position:relative;flex-shrink:0;justify-content:center;align-items:center;margin:var(--size-2);border-radius:var(--radius-full);padding:var(--size-1);padding-left:calc(var(--size-1) - 1px);width:35px;height:35px}.toast-icon.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-icon.error.svelte-solcu7{color:var(--color-red-500)}.toast-icon.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-icon.warning.svelte-solcu7{color:var(--color-yellow-500)}.toast-icon.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-icon.info.svelte-solcu7{color:var(--color-grey-500)}@keyframes svelte-solcu7-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.timer.svelte-solcu7{position:absolute;bottom:0;left:0;transform-origin:0 0;animation:svelte-solcu7-countdown 10s linear forwards;width:100%;height:var(--size-1)}.timer.error.svelte-solcu7{background:var(--color-red-700)}.dark .timer.error.svelte-solcu7{background:var(--color-red-500)}.timer.warning.svelte-solcu7{background:var(--color-yellow-700)}.dark .timer.warning.svelte-solcu7{background:var(--color-yellow-500)}.timer.info.svelte-solcu7{background:var(--color-grey-700)}.dark .timer.info.svelte-solcu7{background:var(--color-grey-500)}.toast-wrap.svelte-gatr8h{display:flex;position:fixed;top:var(--size-4);right:var(--size-4);flex-direction:column;align-items:end;gap:var(--size-2);z-index:var(--layer-top);width:calc(100% - var(--size-8))}@media (--screen-sm){.toast-wrap.svelte-gatr8h{width:calc(var(--size-96) + var(--size-10))}}.container.svelte-giydt1 img{width:100%;height:100%}.container.selected.svelte-giydt1.svelte-giydt1{border-color:var(--border-color-accent)}.container.table.svelte-giydt1.svelte-giydt1{margin:0 auto;border:2px solid var(--border-color-primary);border-radius:var(--radius-lg);overflow:hidden;width:var(--size-20);height:var(--size-20);object-fit:cover}.container.gallery.svelte-giydt1.svelte-giydt1{height:var(--size-20);max-height:var(--size-20);object-fit:cover}.container.svelte-giydt1 img.svelte-giydt1{object-fit:cover}div.viewer.svelte-ta7zm3{width:100%}div.viewer.svelte-ta7zm3>canvas{display:block;width:100%;height:100%}
src/demo/app.py CHANGED
@@ -97,6 +97,16 @@ with gr.Blocks() as demo:
97
  img = gr.Image(interactive=True, label="Image")
98
  with gr.Column():
99
  stream_blur = gr.Button("Stream Repeated Blur")
 
 
 
 
 
 
 
 
 
 
100
 
101
  with gr.Tab("Dynamic RRD"):
102
  pending_cleanup = gr.State(
@@ -114,6 +124,20 @@ with gr.Blocks() as demo:
114
  )
115
  with gr.Row():
116
  create_rrd = gr.Button("Create RRD")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
 
118
  with gr.Tab("Hosted RRD"):
119
  with gr.Row():
@@ -127,23 +151,16 @@ with gr.Blocks() as demo:
127
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
128
  ],
129
  )
130
-
131
- # Rerun 0.16 has issues when embedded in a Gradio tab, so we share a viewer between all the tabs.
132
- # In 0.17 we can instead scope each viewer to its own tab to clean up these examples further.
133
- with gr.Row():
134
- viewer = Rerun(
135
- streaming=True,
136
- )
137
-
138
- stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
139
-
140
- create_rrd.click(
141
- create_cube_rrd,
142
- inputs=[x_count, y_count, z_count, pending_cleanup],
143
- outputs=[viewer],
144
- )
145
-
146
- choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
147
 
148
 
149
  if __name__ == "__main__":
 
97
  img = gr.Image(interactive=True, label="Image")
98
  with gr.Column():
99
  stream_blur = gr.Button("Stream Repeated Blur")
100
+ with gr.Row():
101
+ viewer = Rerun(
102
+ streaming=True,
103
+ panel_states={
104
+ "time": "collapsed",
105
+ "blueprint": "hidden",
106
+ "selection": "hidden",
107
+ },
108
+ )
109
+ stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
110
 
111
  with gr.Tab("Dynamic RRD"):
112
  pending_cleanup = gr.State(
 
124
  )
125
  with gr.Row():
126
  create_rrd = gr.Button("Create RRD")
127
+ with gr.Row():
128
+ viewer = Rerun(
129
+ streaming=True,
130
+ panel_states={
131
+ "time": "collapsed",
132
+ "blueprint": "hidden",
133
+ "selection": "hidden",
134
+ },
135
+ )
136
+ create_rrd.click(
137
+ create_cube_rrd,
138
+ inputs=[x_count, y_count, z_count, pending_cleanup],
139
+ outputs=[viewer],
140
+ )
141
 
142
  with gr.Tab("Hosted RRD"):
143
  with gr.Row():
 
151
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
152
  ],
153
  )
154
+ with gr.Row():
155
+ viewer = Rerun(
156
+ streaming=True,
157
+ panel_states={
158
+ "time": "collapsed",
159
+ "blueprint": "hidden",
160
+ "selection": "hidden",
161
+ },
162
+ )
163
+ choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
 
 
 
 
 
 
 
164
 
165
 
166
  if __name__ == "__main__":
src/demo/space.py CHANGED
@@ -3,7 +3,7 @@ import gradio as gr
3
  from app import demo as app
4
  import os
5
 
6
- _docs = {'Rerun': {'description': 'Creates a Rerun viewer component that can be used to display the output of a Rerun stream.', 'members': {'__init__': {'value': {'type': 'list[pathlib.Path | str]\n | pathlib.Path\n | str\n | bytes\n | Callable\n | None', 'default': 'None', 'description': 'Takes a singular or list of RRD resources. Each RRD can be a Path, a string containing a url, or a binary blob containing encoded RRD data. If callable, the function will be called whenever the app loads to set the initial value of the component.'}, 'label': {'type': 'str | None', 'default': 'None', 'description': 'The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.'}, 'every': {'type': 'float | None', 'default': 'None', 'description': "If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute."}, 'show_label': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will display label.'}, 'container': {'type': 'bool', 'default': 'True', 'description': 'If True, will place the component in a container - providing some extra padding around the border.'}, 'scale': {'type': 'int | None', 'default': 'None', 'description': 'relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.'}, 'min_width': {'type': 'int', 'default': '160', 'description': 'minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.'}, 'height': {'type': 'int | str', 'default': '640', 'description': 'height of component in pixels. If a string is provided, will be interpreted as a CSS value. If None, will be set to 640px.'}, 'visible': {'type': 'bool', 'default': 'True', 'description': 'If False, component will be hidden.'}, 'streaming': {'type': 'bool', 'default': 'False', 'description': 'If True, the data should be incrementally yielded from the source as `bytes` returned by calling `.read()` on an `rr.binary_stream()`'}, 'elem_id': {'type': 'str | None', 'default': 'None', 'description': 'An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'elem_classes': {'type': 'list[str] | str | None', 'default': 'None', 'description': 'An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'render': {'type': 'bool', 'default': 'True', 'description': 'If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.'}}, 'postprocess': {'value': {'type': 'list[pathlib.Path | str] | pathlib.Path | str | bytes', 'description': 'Expects'}}, 'preprocess': {'return': {'type': 'RerunData | None', 'description': 'A RerunData object.'}, 'value': None}}, 'events': {}}, '__meta__': {'additional_interfaces': {'RerunData': {'source': 'class RerunData(GradioRootModel):\n root: list[FileData | str]'}}, 'user_fn_refs': {'Rerun': ['RerunData']}}}
7
 
8
  abs_path = os.path.join(os.path.dirname(__file__), "css.css")
9
 
@@ -137,6 +137,16 @@ with gr.Blocks() as demo:
137
  img = gr.Image(interactive=True, label="Image")
138
  with gr.Column():
139
  stream_blur = gr.Button("Stream Repeated Blur")
 
 
 
 
 
 
 
 
 
 
140
 
141
  with gr.Tab("Dynamic RRD"):
142
  pending_cleanup = gr.State(
@@ -154,6 +164,20 @@ with gr.Blocks() as demo:
154
  )
155
  with gr.Row():
156
  create_rrd = gr.Button("Create RRD")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
 
158
  with gr.Tab("Hosted RRD"):
159
  with gr.Row():
@@ -167,23 +191,16 @@ with gr.Blocks() as demo:
167
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
168
  ],
169
  )
170
-
171
- # Rerun 0.16 has issues when embedded in a Gradio tab, so we share a viewer between all the tabs.
172
- # In 0.17 we can instead scope each viewer to its own tab to clean up these examples further.
173
- with gr.Row():
174
- viewer = Rerun(
175
- streaming=True,
176
- )
177
-
178
- stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
179
-
180
- create_rrd.click(
181
- create_cube_rrd,
182
- inputs=[x_count, y_count, z_count, pending_cleanup],
183
- outputs=[viewer],
184
- )
185
-
186
- choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
187
 
188
 
189
  if __name__ == "__main__":
 
3
  from app import demo as app
4
  import os
5
 
6
+ _docs = {'Rerun': {'description': 'Creates a Rerun viewer component that can be used to display the output of a Rerun stream.', 'members': {'__init__': {'value': {'type': 'list[pathlib.Path | str]\n | pathlib.Path\n | str\n | bytes\n | Callable\n | None', 'default': 'None', 'description': 'Takes a singular or list of RRD resources. Each RRD can be a Path, a string containing a url, or a binary blob containing encoded RRD data. If callable, the function will be called whenever the app loads to set the initial value of the component.'}, 'label': {'type': 'str | None', 'default': 'None', 'description': 'The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.'}, 'every': {'type': 'float | None', 'default': 'None', 'description': "If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. Queue must be enabled. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute."}, 'show_label': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will display label.'}, 'container': {'type': 'bool', 'default': 'True', 'description': 'If True, will place the component in a container - providing some extra padding around the border.'}, 'scale': {'type': 'int | None', 'default': 'None', 'description': 'relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.'}, 'min_width': {'type': 'int', 'default': '160', 'description': 'minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.'}, 'height': {'type': 'int | str', 'default': '640', 'description': 'height of component in pixels. If a string is provided, will be interpreted as a CSS value. If None, will be set to 640px.'}, 'visible': {'type': 'bool', 'default': 'True', 'description': 'If False, component will be hidden.'}, 'streaming': {'type': 'bool', 'default': 'False', 'description': 'If True, the data should be incrementally yielded from the source as `bytes` returned by calling `.read()` on an `rr.binary_stream()`'}, 'elem_id': {'type': 'str | None', 'default': 'None', 'description': 'An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'elem_classes': {'type': 'list[str] | str | None', 'default': 'None', 'description': 'An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'render': {'type': 'bool', 'default': 'True', 'description': 'If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.'}, 'panel_states': {'type': 'dict[str, Any] | None', 'default': 'None', 'description': 'Force viewer panels to a specific state. Any panels set cannot be toggled by the user in the viewer. Panel names are "top", "blueprint", "selection", and "time". States are "hidden", "collapsed", and "expanded".'}}, 'postprocess': {'value': {'type': 'list[pathlib.Path | str] | pathlib.Path | str | bytes', 'description': 'Expects'}}, 'preprocess': {'return': {'type': 'RerunData | None', 'description': 'A RerunData object.'}, 'value': None}}, 'events': {}}, '__meta__': {'additional_interfaces': {'RerunData': {'source': 'class RerunData(GradioRootModel):\n root: list[FileData | str]'}}, 'user_fn_refs': {'Rerun': ['RerunData']}}}
7
 
8
  abs_path = os.path.join(os.path.dirname(__file__), "css.css")
9
 
 
137
  img = gr.Image(interactive=True, label="Image")
138
  with gr.Column():
139
  stream_blur = gr.Button("Stream Repeated Blur")
140
+ with gr.Row():
141
+ viewer = Rerun(
142
+ streaming=True,
143
+ panel_states={
144
+ "time": "collapsed",
145
+ "blueprint": "hidden",
146
+ "selection": "hidden",
147
+ },
148
+ )
149
+ stream_blur.click(streaming_repeated_blur, inputs=[img], outputs=[viewer])
150
 
151
  with gr.Tab("Dynamic RRD"):
152
  pending_cleanup = gr.State(
 
164
  )
165
  with gr.Row():
166
  create_rrd = gr.Button("Create RRD")
167
+ with gr.Row():
168
+ viewer = Rerun(
169
+ streaming=True,
170
+ panel_states={
171
+ "time": "collapsed",
172
+ "blueprint": "hidden",
173
+ "selection": "hidden",
174
+ },
175
+ )
176
+ create_rrd.click(
177
+ create_cube_rrd,
178
+ inputs=[x_count, y_count, z_count, pending_cleanup],
179
+ outputs=[viewer],
180
+ )
181
 
182
  with gr.Tab("Hosted RRD"):
183
  with gr.Row():
 
191
  f"{rr.bindings.get_app_url()}/examples/plots.rrd",
192
  ],
193
  )
194
+ with gr.Row():
195
+ viewer = Rerun(
196
+ streaming=True,
197
+ panel_states={
198
+ "time": "collapsed",
199
+ "blueprint": "hidden",
200
+ "selection": "hidden",
201
+ },
202
+ )
203
+ choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
 
 
 
 
 
 
 
204
 
205
 
206
  if __name__ == "__main__":
src/frontend/Index.svelte CHANGED
@@ -8,7 +8,7 @@
8
  import "./app.css";
9
  import type { Gradio } from "@gradio/utils";
10
 
11
- import { WebViewer, LogChannel } from "@rerun-io/web-viewer";
12
  import { onMount } from "svelte";
13
 
14
  import { Block } from "@gradio/atoms";
@@ -32,6 +32,7 @@
32
  export let loading_status: LoadingStatus;
33
  export let interactive: boolean;
34
  export let streaming: boolean;
 
35
 
36
  let old_value: null | BinaryStream | (FileData | string)[] = null;
37
 
@@ -50,11 +51,7 @@
50
  let patched_loading_status: LoadingStatus;
51
 
52
  function try_load_value() {
53
- if (
54
- JSON.stringify(value) !== JSON.stringify(old_value) &&
55
- rr != undefined &&
56
- rr.ready
57
- ) {
58
  old_value = value;
59
  if (!Array.isArray(value)) {
60
  if (value.is_stream) {
@@ -76,12 +73,32 @@
76
  }
77
  }
78
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  onMount(() => {
80
  rr = new WebViewer();
81
- rr.start(undefined, ref, true).then(() => {
82
  try_load_value();
 
83
  });
 
84
 
 
 
 
 
 
 
85
  return () => {
86
  rr.stop();
87
  };
@@ -92,12 +109,14 @@
92
 
93
  // In streaming mode, we want the UI to be interactive even while the model is generating
94
  // so set the status to complete.
 
95
  if (streaming && patched_loading_status?.status === "generating") {
96
  patched_loading_status.status = "complete";
97
  }
98
  }
99
 
100
  $: value, try_load_value();
 
101
  </script>
102
 
103
  {#if !interactive}
@@ -128,8 +147,7 @@
128
  width: 100%;
129
 
130
  :global(> canvas) {
131
- position: initial !important;
132
- top: unset !important;
133
  width: 100%;
134
  height: 100%;
135
  }
 
8
  import "./app.css";
9
  import type { Gradio } from "@gradio/utils";
10
 
11
+ import { WebViewer, type Panel, type PanelState } from "@rerun-io/web-viewer";
12
  import { onMount } from "svelte";
13
 
14
  import { Block } from "@gradio/atoms";
 
32
  export let loading_status: LoadingStatus;
33
  export let interactive: boolean;
34
  export let streaming: boolean;
35
+ export let panel_states: { [K in Panel]: PanelState } | null = null;
36
 
37
  let old_value: null | BinaryStream | (FileData | string)[] = null;
38
 
 
51
  let patched_loading_status: LoadingStatus;
52
 
53
  function try_load_value() {
54
+ if (JSON.stringify(value) !== JSON.stringify(old_value) && rr != undefined && rr.ready) {
 
 
 
 
55
  old_value = value;
56
  if (!Array.isArray(value)) {
57
  if (value.is_stream) {
 
73
  }
74
  }
75
 
76
+ const is_panel = (v: string): v is Panel => ["top", "blueprint", "selection", "time"].includes(v);
77
+
78
+ function setup_panels() {
79
+ if (rr?.ready && panel_states) {
80
+ for (const panel in panel_states) {
81
+ // ignore extra properties
82
+ if (!is_panel(panel)) continue;
83
+ rr.override_panel_state(panel, panel_states[panel]);
84
+ }
85
+ }
86
+ }
87
+
88
  onMount(() => {
89
  rr = new WebViewer();
90
+ rr.on("ready", () => {
91
  try_load_value();
92
+ setup_panels();
93
  });
94
+ rr.on("fullscreen", (on) => rr.toggle_panel_overrides(!on));
95
 
96
+ rr.start(undefined, ref, {
97
+ hide_welcome_screen: true,
98
+ allow_fullscreen: true,
99
+ width: "",
100
+ height: "",
101
+ });
102
  return () => {
103
  rr.stop();
104
  };
 
109
 
110
  // In streaming mode, we want the UI to be interactive even while the model is generating
111
  // so set the status to complete.
112
+ // @ts-expect-error: `status` union does not include `generating`
113
  if (streaming && patched_loading_status?.status === "generating") {
114
  patched_loading_status.status = "complete";
115
  }
116
  }
117
 
118
  $: value, try_load_value();
119
+ $: panel_states, setup_panels();
120
  </script>
121
 
122
  {#if !interactive}
 
147
  width: 100%;
148
 
149
  :global(> canvas) {
150
+ display: block;
 
151
  width: 100%;
152
  height: 100%;
153
  }
src/frontend/gradio.config.js CHANGED
@@ -1,9 +1,27 @@
1
  import tailwindcss from "@tailwindcss/vite";
2
  import wasm from "vite-plugin-wasm";
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  export default {
5
- plugins: [wasm(), tailwindcss()],
6
  svelte: {
7
  preprocess: [],
8
  },
 
 
 
9
  };
 
 
1
  import tailwindcss from "@tailwindcss/vite";
2
  import wasm from "vite-plugin-wasm";
3
 
4
+ // `@rerun-io/web-viewer` uses `new URL("./re_viewer_bg.wasm", import.meta.url)` since 0.17,
5
+ // which does not play well with `vite dev`: https://github.com/rerun-io/rerun/issues/6815
6
+ // we need to patch the config, but `gradio` does not let us directly set the `optimize` option.
7
+ /** @type {() => import("vite").Plugin} */
8
+ const hack = () => ({
9
+ config() {
10
+ return {
11
+ optimizeDeps: {
12
+ exclude: process.env.NODE_ENV === "production" ? [] : ["@rerun-io/web-viewer"],
13
+ },
14
+ };
15
+ },
16
+ });
17
+
18
  export default {
19
+ plugins: [wasm(), tailwindcss(), hack()],
20
  svelte: {
21
  preprocess: [],
22
  },
23
+ build: {
24
+ target: "esnext",
25
+ },
26
  };
27
+
src/frontend/package-lock.json CHANGED
@@ -16,7 +16,7 @@
16
  "@gradio/upload": "0.9.0",
17
  "@gradio/utils": "0.4.0",
18
  "@gradio/wasm": "0.10.0",
19
- "@rerun-io/web-viewer": "^0.16.1",
20
  "cropperjs": "^1.5.12",
21
  "lazy-brush": "^1.0.1",
22
  "resize-observer-polyfill": "^1.5.1",
@@ -25,7 +25,8 @@
25
  "devDependencies": {
26
  "@gradio/preview": "0.8.3",
27
  "@tailwindcss/vite": "^4.0.0-alpha.14",
28
- "tailwindcss": "^4.0.0-alpha.14"
 
29
  }
30
  },
31
  "../../rerun/rerun_js/web-viewer": {
@@ -704,9 +705,9 @@
704
  }
705
  },
706
  "node_modules/@rerun-io/web-viewer": {
707
- "version": "0.16.1",
708
- "resolved": "https://registry.npmjs.org/@rerun-io/web-viewer/-/web-viewer-0.16.1.tgz",
709
- "integrity": "sha512-S1Vd4ltHf+hTpZ/Z2BzbcHAljmTrx624pVm0o/fV8Af3Yf404kMW5Gjdt/WkLlA8z9jSwYN0B+o0dkoVQRKC4w==",
710
  "license": "MIT"
711
  },
712
  "node_modules/@rollup/plugin-sucrase": {
@@ -2607,7 +2608,6 @@
2607
  "cpu": [
2608
  "arm64"
2609
  ],
2610
- "dev": true,
2611
  "optional": true,
2612
  "os": [
2613
  "darwin"
@@ -2627,7 +2627,6 @@
2627
  "cpu": [
2628
  "x64"
2629
  ],
2630
- "dev": true,
2631
  "optional": true,
2632
  "os": [
2633
  "darwin"
@@ -2647,7 +2646,6 @@
2647
  "cpu": [
2648
  "x64"
2649
  ],
2650
- "dev": true,
2651
  "optional": true,
2652
  "os": [
2653
  "freebsd"
@@ -2667,7 +2665,6 @@
2667
  "cpu": [
2668
  "arm"
2669
  ],
2670
- "dev": true,
2671
  "optional": true,
2672
  "os": [
2673
  "linux"
@@ -2687,7 +2684,6 @@
2687
  "cpu": [
2688
  "arm64"
2689
  ],
2690
- "dev": true,
2691
  "optional": true,
2692
  "os": [
2693
  "linux"
@@ -2707,7 +2703,6 @@
2707
  "cpu": [
2708
  "arm64"
2709
  ],
2710
- "dev": true,
2711
  "optional": true,
2712
  "os": [
2713
  "linux"
@@ -2727,7 +2722,6 @@
2727
  "cpu": [
2728
  "x64"
2729
  ],
2730
- "dev": true,
2731
  "optional": true,
2732
  "os": [
2733
  "linux"
@@ -2747,7 +2741,6 @@
2747
  "cpu": [
2748
  "x64"
2749
  ],
2750
- "dev": true,
2751
  "optional": true,
2752
  "os": [
2753
  "linux"
@@ -2767,7 +2760,6 @@
2767
  "cpu": [
2768
  "x64"
2769
  ],
2770
- "dev": true,
2771
  "optional": true,
2772
  "os": [
2773
  "win32"
 
16
  "@gradio/upload": "0.9.0",
17
  "@gradio/utils": "0.4.0",
18
  "@gradio/wasm": "0.10.0",
19
+ "@rerun-io/web-viewer": "0.17.0",
20
  "cropperjs": "^1.5.12",
21
  "lazy-brush": "^1.0.1",
22
  "resize-observer-polyfill": "^1.5.1",
 
25
  "devDependencies": {
26
  "@gradio/preview": "0.8.3",
27
  "@tailwindcss/vite": "^4.0.0-alpha.14",
28
+ "tailwindcss": "^4.0.0-alpha.14",
29
+ "vite": "^5.2.9"
30
  }
31
  },
32
  "../../rerun/rerun_js/web-viewer": {
 
705
  }
706
  },
707
  "node_modules/@rerun-io/web-viewer": {
708
+ "version": "0.17.0",
709
+ "resolved": "https://registry.npmjs.org/@rerun-io/web-viewer/-/web-viewer-0.17.0.tgz",
710
+ "integrity": "sha512-pjdPvyTpM1flFoid8wf1rpGnH6+OmqzSzV20FOpc+gxx1w2Qq5GWmvDkRXHj6tbJyVManqQ5dk8OVJKn6P+F+g==",
711
  "license": "MIT"
712
  },
713
  "node_modules/@rollup/plugin-sucrase": {
 
2608
  "cpu": [
2609
  "arm64"
2610
  ],
 
2611
  "optional": true,
2612
  "os": [
2613
  "darwin"
 
2627
  "cpu": [
2628
  "x64"
2629
  ],
 
2630
  "optional": true,
2631
  "os": [
2632
  "darwin"
 
2646
  "cpu": [
2647
  "x64"
2648
  ],
 
2649
  "optional": true,
2650
  "os": [
2651
  "freebsd"
 
2665
  "cpu": [
2666
  "arm"
2667
  ],
 
2668
  "optional": true,
2669
  "os": [
2670
  "linux"
 
2684
  "cpu": [
2685
  "arm64"
2686
  ],
 
2687
  "optional": true,
2688
  "os": [
2689
  "linux"
 
2703
  "cpu": [
2704
  "arm64"
2705
  ],
 
2706
  "optional": true,
2707
  "os": [
2708
  "linux"
 
2722
  "cpu": [
2723
  "x64"
2724
  ],
 
2725
  "optional": true,
2726
  "os": [
2727
  "linux"
 
2741
  "cpu": [
2742
  "x64"
2743
  ],
 
2744
  "optional": true,
2745
  "os": [
2746
  "linux"
 
2760
  "cpu": [
2761
  "x64"
2762
  ],
 
2763
  "optional": true,
2764
  "os": [
2765
  "win32"
src/frontend/package.json CHANGED
@@ -14,7 +14,7 @@
14
  "@gradio/upload": "0.9.0",
15
  "@gradio/utils": "0.4.0",
16
  "@gradio/wasm": "0.10.0",
17
- "@rerun-io/web-viewer": "^0.16.1",
18
  "cropperjs": "^1.5.12",
19
  "lazy-brush": "^1.0.1",
20
  "resize-observer-polyfill": "^1.5.1",
@@ -23,7 +23,8 @@
23
  "devDependencies": {
24
  "@gradio/preview": "0.8.3",
25
  "@tailwindcss/vite": "^4.0.0-alpha.14",
26
- "tailwindcss": "^4.0.0-alpha.14"
 
27
  },
28
  "main_changeset": true,
29
  "main": "./Index.svelte",
@@ -32,4 +33,5 @@
32
  "./example": "./Example.svelte",
33
  "./package.json": "./package.json"
34
  }
35
- }
 
 
14
  "@gradio/upload": "0.9.0",
15
  "@gradio/utils": "0.4.0",
16
  "@gradio/wasm": "0.10.0",
17
+ "@rerun-io/web-viewer": "0.17.0",
18
  "cropperjs": "^1.5.12",
19
  "lazy-brush": "^1.0.1",
20
  "resize-observer-polyfill": "^1.5.1",
 
23
  "devDependencies": {
24
  "@gradio/preview": "0.8.3",
25
  "@tailwindcss/vite": "^4.0.0-alpha.14",
26
+ "tailwindcss": "^4.0.0-alpha.14",
27
+ "vite": "^5.2.9"
28
  },
29
  "main_changeset": true,
30
  "main": "./Index.svelte",
 
33
  "./example": "./Example.svelte",
34
  "./package.json": "./package.json"
35
  }
36
+ }
37
+
src/pyproject.toml CHANGED
@@ -8,7 +8,7 @@ build-backend = "hatchling.build"
8
 
9
  [project]
10
  name = "gradio_rerun"
11
- version = "0.0.3"
12
  description = "Rerun viewer with Gradio"
13
  readme = "README.md"
14
  license = "apache-2.0"
@@ -24,7 +24,7 @@ keywords = [
24
  "rerun-viewer",
25
  ]
26
  # Add dependencies here
27
- dependencies = ["gradio>=4.0,<5.0", "rerun-sdk>=0.16.1"]
28
  classifiers = [
29
  'Development Status :: 3 - Alpha',
30
  'Operating System :: OS Independent',
@@ -50,7 +50,7 @@ repository = "https://github.com/radames/gradio-rerun-viewer"
50
  # space = "your space url"
51
 
52
  [project.optional-dependencies]
53
- dev = ["build", "twine"]
54
 
55
  [tool.hatch.build]
56
  artifacts = ["/backend/gradio_rerun/templates", "*.pyi"]
 
8
 
9
  [project]
10
  name = "gradio_rerun"
11
+ version = "0.0.4"
12
  description = "Rerun viewer with Gradio"
13
  readme = "README.md"
14
  license = "apache-2.0"
 
24
  "rerun-viewer",
25
  ]
26
  # Add dependencies here
27
+ dependencies = ["gradio>=4.0,<5.0", "rerun-sdk==0.17.0", "opencv-python"]
28
  classifiers = [
29
  'Development Status :: 3 - Alpha',
30
  'Operating System :: OS Independent',
 
50
  # space = "your space url"
51
 
52
  [project.optional-dependencies]
53
+ dev = ["build", "twine", "opencv-python>=4.10.0"]
54
 
55
  [tool.hatch.build]
56
  artifacts = ["/backend/gradio_rerun/templates", "*.pyi"]