Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -80,16 +80,17 @@ def run_flow(blocks):
|
|
| 80 |
# ACTIONS
|
| 81 |
# -----------------------------
|
| 82 |
|
|
|
|
|
|
|
|
|
|
| 83 |
def add_block(blocks, block_type):
|
| 84 |
blocks.append(create_block(block_type))
|
| 85 |
|
| 86 |
-
choices =
|
| 87 |
-
|
| 88 |
selected = choices[-1] if choices else None
|
| 89 |
|
| 90 |
return blocks, choices, selected
|
| 91 |
|
| 92 |
-
|
| 93 |
def load_block(blocks, selected):
|
| 94 |
if not selected:
|
| 95 |
return "", "", "", "", ""
|
|
@@ -99,7 +100,6 @@ def load_block(blocks, selected):
|
|
| 99 |
|
| 100 |
return b["var"], b["value"], b["prompt"], b["system"], b["output"]
|
| 101 |
|
| 102 |
-
|
| 103 |
def save_block(blocks, selected, var, value, prompt, system):
|
| 104 |
if not selected:
|
| 105 |
return blocks
|
|
@@ -133,15 +133,14 @@ with gr.Blocks() as demo:
|
|
| 133 |
add_text = gr.Button("➕ Text Input")
|
| 134 |
add_ai = gr.Button("➕ AI Block")
|
| 135 |
|
| 136 |
-
# CANVAS
|
| 137 |
with gr.Column(scale=2):
|
| 138 |
gr.Markdown("## 🧠 Canvas")
|
| 139 |
|
| 140 |
-
|
| 141 |
choices=[],
|
| 142 |
value=None,
|
| 143 |
-
label="
|
| 144 |
-
interactive=True
|
| 145 |
)
|
| 146 |
|
| 147 |
# INSPECTOR
|
|
@@ -164,42 +163,42 @@ with gr.Blocks() as demo:
|
|
| 164 |
add_text.click(
|
| 165 |
fn=lambda b: add_block(b, "text"),
|
| 166 |
inputs=blocks_state,
|
| 167 |
-
outputs=[blocks_state,
|
| 168 |
)
|
| 169 |
|
| 170 |
add_ai.click(
|
| 171 |
fn=lambda b: add_block(b, "ai"),
|
| 172 |
inputs=blocks_state,
|
| 173 |
-
outputs=[blocks_state,
|
| 174 |
)
|
| 175 |
|
| 176 |
-
|
| 177 |
fn=load_block,
|
| 178 |
-
inputs=[blocks_state,
|
| 179 |
outputs=[var, value, prompt, system, output]
|
| 180 |
)
|
| 181 |
|
| 182 |
var.change(
|
| 183 |
fn=save_block,
|
| 184 |
-
inputs=[blocks_state,
|
| 185 |
outputs=blocks_state
|
| 186 |
)
|
| 187 |
|
| 188 |
value.change(
|
| 189 |
fn=save_block,
|
| 190 |
-
inputs=[blocks_state,
|
| 191 |
outputs=blocks_state
|
| 192 |
)
|
| 193 |
|
| 194 |
prompt.change(
|
| 195 |
fn=save_block,
|
| 196 |
-
inputs=[blocks_state,
|
| 197 |
outputs=blocks_state
|
| 198 |
)
|
| 199 |
|
| 200 |
system.change(
|
| 201 |
fn=save_block,
|
| 202 |
-
inputs=[blocks_state,
|
| 203 |
outputs=blocks_state
|
| 204 |
)
|
| 205 |
|
|
@@ -209,7 +208,7 @@ with gr.Blocks() as demo:
|
|
| 209 |
outputs=[blocks_state, variables_out, logs]
|
| 210 |
)
|
| 211 |
|
| 212 |
-
#
|
| 213 |
demo.launch(css="""
|
| 214 |
body { background-color: #0f172a; color: white; }
|
| 215 |
""")
|
|
|
|
| 80 |
# ACTIONS
|
| 81 |
# -----------------------------
|
| 82 |
|
| 83 |
+
def refresh_choices(blocks):
|
| 84 |
+
return [f"{i}: {b['title']}" for i, b in enumerate(blocks)]
|
| 85 |
+
|
| 86 |
def add_block(blocks, block_type):
|
| 87 |
blocks.append(create_block(block_type))
|
| 88 |
|
| 89 |
+
choices = refresh_choices(blocks)
|
|
|
|
| 90 |
selected = choices[-1] if choices else None
|
| 91 |
|
| 92 |
return blocks, choices, selected
|
| 93 |
|
|
|
|
| 94 |
def load_block(blocks, selected):
|
| 95 |
if not selected:
|
| 96 |
return "", "", "", "", ""
|
|
|
|
| 100 |
|
| 101 |
return b["var"], b["value"], b["prompt"], b["system"], b["output"]
|
| 102 |
|
|
|
|
| 103 |
def save_block(blocks, selected, var, value, prompt, system):
|
| 104 |
if not selected:
|
| 105 |
return blocks
|
|
|
|
| 133 |
add_text = gr.Button("➕ Text Input")
|
| 134 |
add_ai = gr.Button("➕ AI Block")
|
| 135 |
|
| 136 |
+
# CANVAS (Dropdown instead of Radio)
|
| 137 |
with gr.Column(scale=2):
|
| 138 |
gr.Markdown("## 🧠 Canvas")
|
| 139 |
|
| 140 |
+
block_selector = gr.Dropdown(
|
| 141 |
choices=[],
|
| 142 |
value=None,
|
| 143 |
+
label="Select Block"
|
|
|
|
| 144 |
)
|
| 145 |
|
| 146 |
# INSPECTOR
|
|
|
|
| 163 |
add_text.click(
|
| 164 |
fn=lambda b: add_block(b, "text"),
|
| 165 |
inputs=blocks_state,
|
| 166 |
+
outputs=[blocks_state, block_selector, block_selector]
|
| 167 |
)
|
| 168 |
|
| 169 |
add_ai.click(
|
| 170 |
fn=lambda b: add_block(b, "ai"),
|
| 171 |
inputs=blocks_state,
|
| 172 |
+
outputs=[blocks_state, block_selector, block_selector]
|
| 173 |
)
|
| 174 |
|
| 175 |
+
block_selector.change(
|
| 176 |
fn=load_block,
|
| 177 |
+
inputs=[blocks_state, block_selector],
|
| 178 |
outputs=[var, value, prompt, system, output]
|
| 179 |
)
|
| 180 |
|
| 181 |
var.change(
|
| 182 |
fn=save_block,
|
| 183 |
+
inputs=[blocks_state, block_selector, var, value, prompt, system],
|
| 184 |
outputs=blocks_state
|
| 185 |
)
|
| 186 |
|
| 187 |
value.change(
|
| 188 |
fn=save_block,
|
| 189 |
+
inputs=[blocks_state, block_selector, var, value, prompt, system],
|
| 190 |
outputs=blocks_state
|
| 191 |
)
|
| 192 |
|
| 193 |
prompt.change(
|
| 194 |
fn=save_block,
|
| 195 |
+
inputs=[blocks_state, block_selector, var, value, prompt, system],
|
| 196 |
outputs=blocks_state
|
| 197 |
)
|
| 198 |
|
| 199 |
system.change(
|
| 200 |
fn=save_block,
|
| 201 |
+
inputs=[blocks_state, block_selector, var, value, prompt, system],
|
| 202 |
outputs=blocks_state
|
| 203 |
)
|
| 204 |
|
|
|
|
| 208 |
outputs=[blocks_state, variables_out, logs]
|
| 209 |
)
|
| 210 |
|
| 211 |
+
# CSS fix
|
| 212 |
demo.launch(css="""
|
| 213 |
body { background-color: #0f172a; color: white; }
|
| 214 |
""")
|