Spaces:
Running
Running
live preview first and split files
Browse files
app.py
CHANGED
|
@@ -6335,6 +6335,8 @@ with gr.Blocks(
|
|
| 6335 |
|
| 6336 |
with gr.Column() as main_column:
|
| 6337 |
with gr.Tabs():
|
|
|
|
|
|
|
| 6338 |
with gr.Tab("Code"):
|
| 6339 |
code_output = gr.Code(
|
| 6340 |
language="html",
|
|
@@ -6343,7 +6345,7 @@ with gr.Blocks(
|
|
| 6343 |
label="Generated code"
|
| 6344 |
)
|
| 6345 |
|
| 6346 |
-
|
| 6347 |
|
| 6348 |
# Transformers.js multi-file editors (hidden by default)
|
| 6349 |
with gr.Group(visible=False) as tjs_group:
|
|
@@ -6354,8 +6356,47 @@ with gr.Blocks(
|
|
| 6354 |
tjs_js_code = gr.Code(language="javascript", lines=20, interactive=True, label="index.js")
|
| 6355 |
with gr.Tab("style.css"):
|
| 6356 |
tjs_css_code = gr.Code(language="css", lines=20, interactive=True, label="style.css")
|
| 6357 |
-
|
| 6358 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6359 |
# Removed Import Logs tab for cleaner UI
|
| 6360 |
# History tab hidden per user request
|
| 6361 |
# with gr.Tab("History"):
|
|
@@ -6499,6 +6540,165 @@ with gr.Blocks(
|
|
| 6499 |
outputs=[code_output, tjs_group, tjs_html_code, tjs_js_code, tjs_css_code],
|
| 6500 |
)
|
| 6501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6502 |
def sync_tjs_from_code(code_text, language):
|
| 6503 |
if language != "transformers.js":
|
| 6504 |
return [gr.update(), gr.update(), gr.update(), gr.update()]
|
|
@@ -6641,6 +6841,18 @@ with gr.Blocks(
|
|
| 6641 |
toggle_editors,
|
| 6642 |
inputs=[language_dropdown, code_output],
|
| 6643 |
outputs=[code_output, tjs_group, tjs_html_code, tjs_js_code, tjs_css_code]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6644 |
).then(
|
| 6645 |
show_deploy_components,
|
| 6646 |
None,
|
|
@@ -6896,6 +7108,17 @@ with gr.Blocks(
|
|
| 6896 |
toggle_editors,
|
| 6897 |
inputs=[language_dropdown, code_output],
|
| 6898 |
outputs=[code_output, tjs_group, tjs_html_code, tjs_js_code, tjs_css_code]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6899 |
).then(
|
| 6900 |
show_deploy_components,
|
| 6901 |
None,
|
|
|
|
| 6335 |
|
| 6336 |
with gr.Column() as main_column:
|
| 6337 |
with gr.Tabs():
|
| 6338 |
+
with gr.Tab("Preview"):
|
| 6339 |
+
sandbox = gr.HTML(label="Live preview")
|
| 6340 |
with gr.Tab("Code"):
|
| 6341 |
code_output = gr.Code(
|
| 6342 |
language="html",
|
|
|
|
| 6345 |
label="Generated code"
|
| 6346 |
)
|
| 6347 |
|
| 6348 |
+
|
| 6349 |
|
| 6350 |
# Transformers.js multi-file editors (hidden by default)
|
| 6351 |
with gr.Group(visible=False) as tjs_group:
|
|
|
|
| 6356 |
tjs_js_code = gr.Code(language="javascript", lines=20, interactive=True, label="index.js")
|
| 6357 |
with gr.Tab("style.css"):
|
| 6358 |
tjs_css_code = gr.Code(language="css", lines=20, interactive=True, label="style.css")
|
| 6359 |
+
|
| 6360 |
+
# Static HTML multi-file editors (hidden by default). Use separate tab groups for different file counts.
|
| 6361 |
+
with gr.Group(visible=False) as static_group_2:
|
| 6362 |
+
with gr.Tabs():
|
| 6363 |
+
with gr.Tab("index.html") as static_tab_2_1:
|
| 6364 |
+
static_code_2_1 = gr.Code(language="html", lines=20, interactive=True, label="index.html")
|
| 6365 |
+
with gr.Tab("file 2") as static_tab_2_2:
|
| 6366 |
+
static_code_2_2 = gr.Code(language="html", lines=18, interactive=True, label="file 2")
|
| 6367 |
+
|
| 6368 |
+
with gr.Group(visible=False) as static_group_3:
|
| 6369 |
+
with gr.Tabs():
|
| 6370 |
+
with gr.Tab("index.html") as static_tab_3_1:
|
| 6371 |
+
static_code_3_1 = gr.Code(language="html", lines=20, interactive=True, label="index.html")
|
| 6372 |
+
with gr.Tab("file 2") as static_tab_3_2:
|
| 6373 |
+
static_code_3_2 = gr.Code(language="html", lines=18, interactive=True, label="file 2")
|
| 6374 |
+
with gr.Tab("file 3") as static_tab_3_3:
|
| 6375 |
+
static_code_3_3 = gr.Code(language="html", lines=18, interactive=True, label="file 3")
|
| 6376 |
+
|
| 6377 |
+
with gr.Group(visible=False) as static_group_4:
|
| 6378 |
+
with gr.Tabs():
|
| 6379 |
+
with gr.Tab("index.html") as static_tab_4_1:
|
| 6380 |
+
static_code_4_1 = gr.Code(language="html", lines=20, interactive=True, label="index.html")
|
| 6381 |
+
with gr.Tab("file 2") as static_tab_4_2:
|
| 6382 |
+
static_code_4_2 = gr.Code(language="html", lines=18, interactive=True, label="file 2")
|
| 6383 |
+
with gr.Tab("file 3") as static_tab_4_3:
|
| 6384 |
+
static_code_4_3 = gr.Code(language="html", lines=18, interactive=True, label="file 3")
|
| 6385 |
+
with gr.Tab("file 4") as static_tab_4_4:
|
| 6386 |
+
static_code_4_4 = gr.Code(language="html", lines=18, interactive=True, label="file 4")
|
| 6387 |
+
|
| 6388 |
+
with gr.Group(visible=False) as static_group_5plus:
|
| 6389 |
+
with gr.Tabs():
|
| 6390 |
+
with gr.Tab("index.html") as static_tab_5_1:
|
| 6391 |
+
static_code_5_1 = gr.Code(language="html", lines=20, interactive=True, label="index.html")
|
| 6392 |
+
with gr.Tab("file 2") as static_tab_5_2:
|
| 6393 |
+
static_code_5_2 = gr.Code(language="html", lines=18, interactive=True, label="file 2")
|
| 6394 |
+
with gr.Tab("file 3") as static_tab_5_3:
|
| 6395 |
+
static_code_5_3 = gr.Code(language="html", lines=18, interactive=True, label="file 3")
|
| 6396 |
+
with gr.Tab("file 4") as static_tab_5_4:
|
| 6397 |
+
static_code_5_4 = gr.Code(language="html", lines=18, interactive=True, label="file 4")
|
| 6398 |
+
with gr.Tab("file 5") as static_tab_5_5:
|
| 6399 |
+
static_code_5_5 = gr.Code(language="html", lines=18, interactive=True, label="file 5")
|
| 6400 |
# Removed Import Logs tab for cleaner UI
|
| 6401 |
# History tab hidden per user request
|
| 6402 |
# with gr.Tab("History"):
|
|
|
|
| 6540 |
outputs=[code_output, tjs_group, tjs_html_code, tjs_js_code, tjs_css_code],
|
| 6541 |
)
|
| 6542 |
|
| 6543 |
+
# Static HTML multi-file toggling and population
|
| 6544 |
+
def toggle_static_editors(language, code_text):
|
| 6545 |
+
# If not static HTML language, ensure single editor visible and all static groups hidden
|
| 6546 |
+
if language != "html":
|
| 6547 |
+
return [
|
| 6548 |
+
gr.update(visible=True), # code_output
|
| 6549 |
+
gr.update(visible=False), # static_group_2
|
| 6550 |
+
gr.update(visible=False), # static_group_3
|
| 6551 |
+
gr.update(visible=False), # static_group_4
|
| 6552 |
+
gr.update(visible=False), # static_group_5plus
|
| 6553 |
+
# All tab and code components get empty updates (tab, code, tab, code, ...)
|
| 6554 |
+
gr.update(), gr.update(), gr.update(), gr.update(), # 2-file group
|
| 6555 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), # 3-file group
|
| 6556 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), # 4-file group
|
| 6557 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update() # 5-file group
|
| 6558 |
+
]
|
| 6559 |
+
|
| 6560 |
+
files = parse_multipage_html_output(code_text or "")
|
| 6561 |
+
files = validate_and_autofix_files(files)
|
| 6562 |
+
|
| 6563 |
+
if not isinstance(files, dict) or len(files) <= 1:
|
| 6564 |
+
# No multi-file content; keep single editor
|
| 6565 |
+
return [
|
| 6566 |
+
gr.update(visible=True), # code_output
|
| 6567 |
+
gr.update(visible=False), # static_group_2
|
| 6568 |
+
gr.update(visible=False), # static_group_3
|
| 6569 |
+
gr.update(visible=False), # static_group_4
|
| 6570 |
+
gr.update(visible=False), # static_group_5plus
|
| 6571 |
+
# All tab and code components get empty updates (tab, code, tab, code, ...)
|
| 6572 |
+
gr.update(), gr.update(), gr.update(), gr.update(), # 2-file group
|
| 6573 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), # 3-file group
|
| 6574 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), # 4-file group
|
| 6575 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update() # 5-file group
|
| 6576 |
+
]
|
| 6577 |
+
|
| 6578 |
+
# We have multi-file static output: hide single editor, show appropriate static group
|
| 6579 |
+
# Order: index.html first, then others sorted by path
|
| 6580 |
+
ordered_paths = []
|
| 6581 |
+
if 'index.html' in files:
|
| 6582 |
+
ordered_paths.append('index.html')
|
| 6583 |
+
for p in sorted(files.keys()):
|
| 6584 |
+
if p == 'index.html':
|
| 6585 |
+
continue
|
| 6586 |
+
ordered_paths.append(p)
|
| 6587 |
+
|
| 6588 |
+
# Map extension to language
|
| 6589 |
+
def _lang_for(path: str):
|
| 6590 |
+
p = (path or '').lower()
|
| 6591 |
+
if p.endswith('.html'):
|
| 6592 |
+
return 'html'
|
| 6593 |
+
if p.endswith('.css'):
|
| 6594 |
+
return 'css'
|
| 6595 |
+
if p.endswith('.js'):
|
| 6596 |
+
return 'javascript'
|
| 6597 |
+
if p.endswith('.json'):
|
| 6598 |
+
return 'json'
|
| 6599 |
+
if p.endswith('.md') or p.endswith('.markdown'):
|
| 6600 |
+
return 'markdown'
|
| 6601 |
+
return 'html'
|
| 6602 |
+
|
| 6603 |
+
num_files = len(ordered_paths)
|
| 6604 |
+
|
| 6605 |
+
# Hide single editor, show appropriate group based on file count
|
| 6606 |
+
updates = [gr.update(visible=False)] # code_output
|
| 6607 |
+
|
| 6608 |
+
if num_files == 2:
|
| 6609 |
+
updates.extend([
|
| 6610 |
+
gr.update(visible=True), # static_group_2
|
| 6611 |
+
gr.update(visible=False), # static_group_3
|
| 6612 |
+
gr.update(visible=False), # static_group_4
|
| 6613 |
+
gr.update(visible=False), # static_group_5plus
|
| 6614 |
+
])
|
| 6615 |
+
# Populate 2-file group (tab labels + code content)
|
| 6616 |
+
path1, path2 = ordered_paths[0], ordered_paths[1]
|
| 6617 |
+
updates.extend([
|
| 6618 |
+
gr.update(label=path1), gr.update(value=files.get(path1, ''), label=path1, language=_lang_for(path1)),
|
| 6619 |
+
gr.update(label=path2), gr.update(value=files.get(path2, ''), label=path2, language=_lang_for(path2)),
|
| 6620 |
+
# Empty updates for unused groups
|
| 6621 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6622 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6623 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update()
|
| 6624 |
+
])
|
| 6625 |
+
elif num_files == 3:
|
| 6626 |
+
updates.extend([
|
| 6627 |
+
gr.update(visible=False), # static_group_2
|
| 6628 |
+
gr.update(visible=True), # static_group_3
|
| 6629 |
+
gr.update(visible=False), # static_group_4
|
| 6630 |
+
gr.update(visible=False), # static_group_5plus
|
| 6631 |
+
])
|
| 6632 |
+
# Populate 3-file group (tab labels + code content)
|
| 6633 |
+
path1, path2, path3 = ordered_paths[0], ordered_paths[1], ordered_paths[2]
|
| 6634 |
+
updates.extend([
|
| 6635 |
+
# Empty updates for 2-file group
|
| 6636 |
+
gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6637 |
+
# Populate 3-file group
|
| 6638 |
+
gr.update(label=path1), gr.update(value=files.get(path1, ''), label=path1, language=_lang_for(path1)),
|
| 6639 |
+
gr.update(label=path2), gr.update(value=files.get(path2, ''), label=path2, language=_lang_for(path2)),
|
| 6640 |
+
gr.update(label=path3), gr.update(value=files.get(path3, ''), label=path3, language=_lang_for(path3)),
|
| 6641 |
+
# Empty updates for unused groups
|
| 6642 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6643 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update()
|
| 6644 |
+
])
|
| 6645 |
+
elif num_files == 4:
|
| 6646 |
+
updates.extend([
|
| 6647 |
+
gr.update(visible=False), # static_group_2
|
| 6648 |
+
gr.update(visible=False), # static_group_3
|
| 6649 |
+
gr.update(visible=True), # static_group_4
|
| 6650 |
+
gr.update(visible=False), # static_group_5plus
|
| 6651 |
+
])
|
| 6652 |
+
# Populate 4-file group (tab labels + code content)
|
| 6653 |
+
paths = ordered_paths[:4]
|
| 6654 |
+
updates.extend([
|
| 6655 |
+
# Empty updates for 2-file and 3-file groups
|
| 6656 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6657 |
+
# Populate 4-file group
|
| 6658 |
+
gr.update(label=paths[0]), gr.update(value=files.get(paths[0], ''), label=paths[0], language=_lang_for(paths[0])),
|
| 6659 |
+
gr.update(label=paths[1]), gr.update(value=files.get(paths[1], ''), label=paths[1], language=_lang_for(paths[1])),
|
| 6660 |
+
gr.update(label=paths[2]), gr.update(value=files.get(paths[2], ''), label=paths[2], language=_lang_for(paths[2])),
|
| 6661 |
+
gr.update(label=paths[3]), gr.update(value=files.get(paths[3], ''), label=paths[3], language=_lang_for(paths[3])),
|
| 6662 |
+
# Empty updates for 5+ group
|
| 6663 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update()
|
| 6664 |
+
])
|
| 6665 |
+
else: # 5+ files
|
| 6666 |
+
updates.extend([
|
| 6667 |
+
gr.update(visible=False), # static_group_2
|
| 6668 |
+
gr.update(visible=False), # static_group_3
|
| 6669 |
+
gr.update(visible=False), # static_group_4
|
| 6670 |
+
gr.update(visible=True), # static_group_5plus
|
| 6671 |
+
])
|
| 6672 |
+
# Populate 5+ file group (show first 5) (tab labels + code content)
|
| 6673 |
+
paths = ordered_paths[:5]
|
| 6674 |
+
updates.extend([
|
| 6675 |
+
# Empty updates for 2-file, 3-file, and 4-file groups
|
| 6676 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6677 |
+
gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(),
|
| 6678 |
+
# Populate 5+ file group
|
| 6679 |
+
gr.update(label=paths[0]), gr.update(value=files.get(paths[0], ''), label=paths[0], language=_lang_for(paths[0])),
|
| 6680 |
+
gr.update(label=paths[1]), gr.update(value=files.get(paths[1], ''), label=paths[1], language=_lang_for(paths[1])),
|
| 6681 |
+
gr.update(label=paths[2]), gr.update(value=files.get(paths[2], ''), label=paths[2], language=_lang_for(paths[2])),
|
| 6682 |
+
gr.update(label=paths[3]), gr.update(value=files.get(paths[3], ''), label=paths[3], language=_lang_for(paths[3])),
|
| 6683 |
+
gr.update(label=paths[4]), gr.update(value=files.get(paths[4], ''), label=paths[4], language=_lang_for(paths[4]))
|
| 6684 |
+
])
|
| 6685 |
+
|
| 6686 |
+
return updates
|
| 6687 |
+
|
| 6688 |
+
# Respond to language change to show/hide static multi-file editors appropriately
|
| 6689 |
+
language_dropdown.change(
|
| 6690 |
+
toggle_static_editors,
|
| 6691 |
+
inputs=[language_dropdown, code_output],
|
| 6692 |
+
outputs=[
|
| 6693 |
+
code_output,
|
| 6694 |
+
static_group_2, static_group_3, static_group_4, static_group_5plus,
|
| 6695 |
+
static_tab_2_1, static_code_2_1, static_tab_2_2, static_code_2_2,
|
| 6696 |
+
static_tab_3_1, static_code_3_1, static_tab_3_2, static_code_3_2, static_tab_3_3, static_code_3_3,
|
| 6697 |
+
static_tab_4_1, static_code_4_1, static_tab_4_2, static_code_4_2, static_tab_4_3, static_code_4_3, static_tab_4_4, static_code_4_4,
|
| 6698 |
+
static_tab_5_1, static_code_5_1, static_tab_5_2, static_code_5_2, static_tab_5_3, static_code_5_3, static_tab_5_4, static_code_5_4, static_tab_5_5, static_code_5_5,
|
| 6699 |
+
],
|
| 6700 |
+
)
|
| 6701 |
+
|
| 6702 |
def sync_tjs_from_code(code_text, language):
|
| 6703 |
if language != "transformers.js":
|
| 6704 |
return [gr.update(), gr.update(), gr.update(), gr.update()]
|
|
|
|
| 6841 |
toggle_editors,
|
| 6842 |
inputs=[language_dropdown, code_output],
|
| 6843 |
outputs=[code_output, tjs_group, tjs_html_code, tjs_js_code, tjs_css_code]
|
| 6844 |
+
).then(
|
| 6845 |
+
# After generation, toggle static multi-file editors for HTML
|
| 6846 |
+
toggle_static_editors,
|
| 6847 |
+
inputs=[language_dropdown, code_output],
|
| 6848 |
+
outputs=[
|
| 6849 |
+
code_output,
|
| 6850 |
+
static_group_2, static_group_3, static_group_4, static_group_5plus,
|
| 6851 |
+
static_tab_2_1, static_code_2_1, static_tab_2_2, static_code_2_2,
|
| 6852 |
+
static_tab_3_1, static_code_3_1, static_tab_3_2, static_code_3_2, static_tab_3_3, static_code_3_3,
|
| 6853 |
+
static_tab_4_1, static_code_4_1, static_tab_4_2, static_code_4_2, static_tab_4_3, static_code_4_3, static_tab_4_4, static_code_4_4,
|
| 6854 |
+
static_tab_5_1, static_code_5_1, static_tab_5_2, static_code_5_2, static_tab_5_3, static_code_5_3, static_tab_5_4, static_code_5_4, static_tab_5_5, static_code_5_5,
|
| 6855 |
+
]
|
| 6856 |
).then(
|
| 6857 |
show_deploy_components,
|
| 6858 |
None,
|
|
|
|
| 7108 |
toggle_editors,
|
| 7109 |
inputs=[language_dropdown, code_output],
|
| 7110 |
outputs=[code_output, tjs_group, tjs_html_code, tjs_js_code, tjs_css_code]
|
| 7111 |
+
).then(
|
| 7112 |
+
toggle_static_editors,
|
| 7113 |
+
inputs=[language_dropdown, code_output],
|
| 7114 |
+
outputs=[
|
| 7115 |
+
code_output,
|
| 7116 |
+
static_group_2, static_group_3, static_group_4, static_group_5plus,
|
| 7117 |
+
static_tab_2_1, static_code_2_1, static_tab_2_2, static_code_2_2,
|
| 7118 |
+
static_tab_3_1, static_code_3_1, static_tab_3_2, static_code_3_2, static_tab_3_3, static_code_3_3,
|
| 7119 |
+
static_tab_4_1, static_code_4_1, static_tab_4_2, static_code_4_2, static_tab_4_3, static_code_4_3, static_tab_4_4, static_code_4_4,
|
| 7120 |
+
static_tab_5_1, static_code_5_1, static_tab_5_2, static_code_5_2, static_tab_5_3, static_code_5_3, static_tab_5_4, static_code_5_4, static_tab_5_5, static_code_5_5,
|
| 7121 |
+
]
|
| 7122 |
).then(
|
| 7123 |
show_deploy_components,
|
| 7124 |
None,
|