@dickpy/dsh-imagegen 1.5.4 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/lib/client.js +1141 -508
- package/lib/client.js.map +1 -1
- package/lib/index.js +217 -170
- package/package.json +1 -1
- package/src/canvas-store.ts +15 -16
- package/src/client/CanvasWorkspace.tsx +333 -31
- package/src/client/ImageGenPanel.tsx +2737 -2679
- package/src/client/SettingsCard.tsx +14 -0
- package/src/client/canvas-workspace.module.css +144 -8
- package/src/client/locales.ts +82 -25
- package/src/client/panel.module.css +20 -26
- package/src/engine.ts +181 -146
- package/src/gallery-store.ts +13 -13
- package/src/generation-runtime.ts +2 -2
- package/src/history-store.ts +12 -12
- package/src/image-storage-path.ts +12 -0
- package/src/index.ts +5 -0
- package/src/protocol.ts +8 -2
- package/src/routes.ts +3 -0
- package/src/task-queue.ts +4 -5
package/lib/client.js
CHANGED
|
@@ -485,7 +485,7 @@ window.__ModuleLoader__.load({
|
|
|
485
485
|
"canvas.untitled": "未命名画布",
|
|
486
486
|
"canvas.imageNode": "图片节点",
|
|
487
487
|
"canvas.textNode": "文本节点",
|
|
488
|
-
"canvas.fromGallery": "
|
|
488
|
+
"canvas.fromGallery": "素材库图片",
|
|
489
489
|
"canvas.fromHistory": "历史图片",
|
|
490
490
|
"canvas.project": "画布项目",
|
|
491
491
|
"canvas.newCanvas": "新建画布",
|
|
@@ -493,7 +493,15 @@ window.__ModuleLoader__.load({
|
|
|
493
493
|
"canvas.deleteCanvasConfirm": "再点一次确认删除",
|
|
494
494
|
"canvas.rename": "重命名画布",
|
|
495
495
|
"canvas.renameHint": "双击重命名",
|
|
496
|
-
"canvas.background": "
|
|
496
|
+
"canvas.background": "画布背景",
|
|
497
|
+
"canvas.backgroundDots": "点阵",
|
|
498
|
+
"canvas.backgroundLines": "网格线",
|
|
499
|
+
"canvas.backgroundDiagonal": "斜线",
|
|
500
|
+
"canvas.backgroundChecker": "棋盘格",
|
|
501
|
+
"canvas.backgroundBlank": "空白",
|
|
502
|
+
"canvas.backgroundUpload": "上传自定义背景…",
|
|
503
|
+
"canvas.backgroundRemove": "移除自定义背景",
|
|
504
|
+
"canvas.templateLibrary": "模板库(选择提示词生成文本+配置节点)",
|
|
497
505
|
"canvas.undo": "撤销 (Ctrl+Z)",
|
|
498
506
|
"canvas.redo": "重做 (Ctrl+Shift+Z)",
|
|
499
507
|
"canvas.saving": "保存中…",
|
|
@@ -514,6 +522,7 @@ window.__ModuleLoader__.load({
|
|
|
514
522
|
"canvas.generatingNode": "生成中…",
|
|
515
523
|
"canvas.generateFailed": "生成失败",
|
|
516
524
|
"canvas.retry": "重试",
|
|
525
|
+
"canvas.taskLost": "生成任务已丢失(服务重启),请重试",
|
|
517
526
|
"canvas.emptyImageNode": "点击上传图片",
|
|
518
527
|
"canvas.connectHint": "拖到其他节点建立连线",
|
|
519
528
|
"canvas.resizeHint": "拖动调整大小(图片锁定比例)",
|
|
@@ -542,7 +551,11 @@ window.__ModuleLoader__.load({
|
|
|
542
551
|
"canvas.close": "关闭",
|
|
543
552
|
"canvas.tabUpload": "上传",
|
|
544
553
|
"canvas.tabHistory": "历史记录",
|
|
545
|
-
"canvas.tabGallery": "
|
|
554
|
+
"canvas.tabGallery": "素材库",
|
|
555
|
+
"canvas.imageMenuUpload": "上传本地图片",
|
|
556
|
+
"canvas.imageMenuAssets": "从素材库选择",
|
|
557
|
+
"canvas.imageMenuHistory": "从历史记录选择",
|
|
558
|
+
"canvas.imageMenuGenerate": "AI 生成新图",
|
|
546
559
|
"canvas.tabGenerate": "AI 生成",
|
|
547
560
|
"canvas.dropHint": "图片拖动到此处即可添加",
|
|
548
561
|
"canvas.dropSub": "支持多选,PNG / JPG / WebP / GIF",
|
|
@@ -687,14 +700,18 @@ window.__ModuleLoader__.load({
|
|
|
687
700
|
"history.ratio": "比例筛选",
|
|
688
701
|
"history.allModels": "全部模型",
|
|
689
702
|
"history.allRatios": "全部比例",
|
|
690
|
-
"gallery.title": "
|
|
703
|
+
"gallery.title": "素材库",
|
|
691
704
|
"gallery.categories": "分类",
|
|
692
|
-
"gallery.all": "
|
|
705
|
+
"gallery.all": "全部素材",
|
|
706
|
+
"gallery.upload": "上传素材",
|
|
707
|
+
"gallery.uploadModel": "本地上传",
|
|
708
|
+
"gallery.uploaded": "素材已入库",
|
|
709
|
+
"gallery.uploadHint": "把本地图保存进素材库,画布随时可用",
|
|
693
710
|
"gallery.gpt": "gpt-image-2",
|
|
694
711
|
"gallery.grok": "grok-imagine-image",
|
|
695
712
|
"gallery.ratio": "画面比例",
|
|
696
713
|
"gallery.tags": "标签",
|
|
697
|
-
"gallery.filterHint": "
|
|
714
|
+
"gallery.filterHint": "按生成模式、模型和比例筛选素材",
|
|
698
715
|
"gallery.count": "· 共 {count} 幅",
|
|
699
716
|
"gallery.viewMode": "视图模式",
|
|
700
717
|
"gallery.masonry": "瀑布流",
|
|
@@ -716,16 +733,16 @@ window.__ModuleLoader__.load({
|
|
|
716
733
|
"gallery.downloadSelected": "下载所选",
|
|
717
734
|
"gallery.exportJson": "导出 JSON",
|
|
718
735
|
"gallery.select": "选择作品",
|
|
719
|
-
"gallery.add": "
|
|
720
|
-
"gallery.added": "
|
|
721
|
-
"gallery.already": "
|
|
722
|
-
"gallery.delete": "
|
|
736
|
+
"gallery.add": "加入素材库",
|
|
737
|
+
"gallery.added": "已加入素材库",
|
|
738
|
+
"gallery.already": "已在素材库中",
|
|
739
|
+
"gallery.delete": "移出素材库",
|
|
723
740
|
"gallery.openFolder": "打开文件夹",
|
|
724
|
-
"gallery.clear": "
|
|
741
|
+
"gallery.clear": "清空素材库",
|
|
725
742
|
"gallery.openFolderHint": "在系统的文件管理器中打开图片保存目录(~/.dsh/dsh-imagegen)",
|
|
726
|
-
"gallery.clearConfirm": "
|
|
727
|
-
"gallery.empty": "
|
|
728
|
-
"gallery.viewing": "
|
|
743
|
+
"gallery.clearConfirm": "确定要清空整个素材库吗?此操作不可撤销。",
|
|
744
|
+
"gallery.empty": "素材库还是空的,把喜欢的图片加入进来吧",
|
|
745
|
+
"gallery.viewing": "素材库 · {time}",
|
|
729
746
|
"preview.title": "图片预览",
|
|
730
747
|
"preview.open": "点击预览",
|
|
731
748
|
"preview.close": "关闭",
|
|
@@ -782,6 +799,8 @@ window.__ModuleLoader__.load({
|
|
|
782
799
|
"settings.removeModel": "移除模型",
|
|
783
800
|
"settings.optional": "可选",
|
|
784
801
|
"settings.moreOptions": "更多设置",
|
|
802
|
+
"settings.localStoragePath": "本地图片存储目录",
|
|
803
|
+
"settings.localStoragePathHint": "生成历史、素材库和无限画布图片统一保存到此目录;留空使用默认的 ~/.dsh/dsh-imagegen。",
|
|
785
804
|
"settings.storageTitle": "对象存储同步",
|
|
786
805
|
"settings.storageEnabled": "启用对象存储同步",
|
|
787
806
|
"settings.storageHint": "图片保存到本地后,异步上传一份到 S3 兼容对象存储(腾讯云 COS / 阿里云 OSS / 七牛云 S3 / MinIO / R2 等)",
|
|
@@ -795,8 +814,8 @@ window.__ModuleLoader__.load({
|
|
|
795
814
|
"settings.storageAccessKeyHint": "S3 兼容密钥 ID(COS SecretId / OSS AccessKeyId / 七牛 AK)",
|
|
796
815
|
"settings.storageSecretKey": "Secret Key",
|
|
797
816
|
"settings.storageSecretKeyHint": "S3 兼容密钥,仅保存在本机设置文档",
|
|
798
|
-
"settings.storageSyncGallery": "
|
|
799
|
-
"settings.storageSyncGalleryHint": "
|
|
817
|
+
"settings.storageSyncGallery": "同步素材库图片",
|
|
818
|
+
"settings.storageSyncGalleryHint": "加入素材库的图片自动上传",
|
|
800
819
|
"settings.storageSyncHistory": "同步历史记录图片",
|
|
801
820
|
"settings.storageSyncHistoryHint": "所有生成结果也一并上传(数量可能较大)",
|
|
802
821
|
"settings.storageTest": "测试连接",
|
|
@@ -894,7 +913,7 @@ window.__ModuleLoader__.load({
|
|
|
894
913
|
"channels.statusIncomplete": "配置未完成",
|
|
895
914
|
"channels.edit": "编辑",
|
|
896
915
|
"channels.delete": "删除",
|
|
897
|
-
"channels.deleteConfirmTitle": "删除渠道「{name}
|
|
916
|
+
"channels.deleteConfirmTitle": "删除渠道「{name}」?该渠道的密钥将被移除;历史与素材库中的记录仍会保留。",
|
|
898
917
|
"channels.confirm": "确认删除",
|
|
899
918
|
"channels.cancel": "取消",
|
|
900
919
|
"channels.editorTitle": "渠道",
|
|
@@ -965,7 +984,15 @@ window.__ModuleLoader__.load({
|
|
|
965
984
|
"canvas.deleteCanvasConfirm": "Click again to confirm",
|
|
966
985
|
"canvas.rename": "Rename canvas",
|
|
967
986
|
"canvas.renameHint": "Double-click to rename",
|
|
968
|
-
"canvas.background": "
|
|
987
|
+
"canvas.background": "Canvas background",
|
|
988
|
+
"canvas.backgroundDots": "Dots",
|
|
989
|
+
"canvas.backgroundLines": "Grid lines",
|
|
990
|
+
"canvas.backgroundDiagonal": "Diagonal",
|
|
991
|
+
"canvas.backgroundChecker": "Checkerboard",
|
|
992
|
+
"canvas.backgroundBlank": "Blank",
|
|
993
|
+
"canvas.backgroundUpload": "Upload custom background…",
|
|
994
|
+
"canvas.backgroundRemove": "Remove custom background",
|
|
995
|
+
"canvas.templateLibrary": "Template library (pick a prompt to create text + config nodes)",
|
|
969
996
|
"canvas.undo": "Undo (Ctrl+Z)",
|
|
970
997
|
"canvas.redo": "Redo (Ctrl+Shift+Z)",
|
|
971
998
|
"canvas.saving": "Saving…",
|
|
@@ -986,6 +1013,7 @@ window.__ModuleLoader__.load({
|
|
|
986
1013
|
"canvas.generatingNode": "Generating…",
|
|
987
1014
|
"canvas.generateFailed": "Generation failed",
|
|
988
1015
|
"canvas.retry": "Retry",
|
|
1016
|
+
"canvas.taskLost": "Generation task lost (service restarted); please retry",
|
|
989
1017
|
"canvas.emptyImageNode": "Click to upload an image",
|
|
990
1018
|
"canvas.connectHint": "Drag onto another node to connect",
|
|
991
1019
|
"canvas.resizeHint": "Drag to resize (image ratio locked)",
|
|
@@ -1014,7 +1042,11 @@ window.__ModuleLoader__.load({
|
|
|
1014
1042
|
"canvas.close": "Close",
|
|
1015
1043
|
"canvas.tabUpload": "Upload",
|
|
1016
1044
|
"canvas.tabHistory": "History",
|
|
1017
|
-
"canvas.tabGallery": "
|
|
1045
|
+
"canvas.tabGallery": "Assets",
|
|
1046
|
+
"canvas.imageMenuUpload": "Upload local image",
|
|
1047
|
+
"canvas.imageMenuAssets": "Pick from assets",
|
|
1048
|
+
"canvas.imageMenuHistory": "Pick from history",
|
|
1049
|
+
"canvas.imageMenuGenerate": "Generate with AI",
|
|
1018
1050
|
"canvas.tabGenerate": "AI generate",
|
|
1019
1051
|
"canvas.dropHint": "Drop images here to add them",
|
|
1020
1052
|
"canvas.dropSub": "Multiple files, PNG / JPG / WebP / GIF",
|
|
@@ -1159,9 +1191,13 @@ window.__ModuleLoader__.load({
|
|
|
1159
1191
|
"history.ratio": "Ratio filter",
|
|
1160
1192
|
"history.allModels": "All models",
|
|
1161
1193
|
"history.allRatios": "All ratios",
|
|
1162
|
-
"gallery.title": "
|
|
1194
|
+
"gallery.title": "Assets",
|
|
1163
1195
|
"gallery.categories": "Categories",
|
|
1164
|
-
"gallery.all": "All
|
|
1196
|
+
"gallery.all": "All assets",
|
|
1197
|
+
"gallery.upload": "Upload",
|
|
1198
|
+
"gallery.uploadModel": "Local upload",
|
|
1199
|
+
"gallery.uploaded": "Asset saved",
|
|
1200
|
+
"gallery.uploadHint": "Save local images for reuse on the canvas",
|
|
1165
1201
|
"gallery.gpt": "gpt-image-2",
|
|
1166
1202
|
"gallery.grok": "grok-imagine-image",
|
|
1167
1203
|
"gallery.ratio": "Aspect ratio",
|
|
@@ -1254,6 +1290,8 @@ window.__ModuleLoader__.load({
|
|
|
1254
1290
|
"settings.removeModel": "Remove model",
|
|
1255
1291
|
"settings.optional": "Optional",
|
|
1256
1292
|
"settings.moreOptions": "More settings",
|
|
1293
|
+
"settings.localStoragePath": "Local image storage directory",
|
|
1294
|
+
"settings.localStoragePathHint": "History, assets and canvas images share this directory; leave empty for the default ~/.dsh/dsh-imagegen.",
|
|
1257
1295
|
"settings.storageTitle": "Object storage sync",
|
|
1258
1296
|
"settings.storageEnabled": "Enable object storage sync",
|
|
1259
1297
|
"settings.storageHint": "After images land locally, mirror them to an S3-compatible store (Tencent COS / Alibaba OSS / Qiniu S3 / MinIO / R2 …)",
|
|
@@ -1438,7 +1476,15 @@ window.__ModuleLoader__.load({
|
|
|
1438
1476
|
"canvas.deleteCanvasConfirm": "Нажмите ещё раз для подтверждения",
|
|
1439
1477
|
"canvas.rename": "Переименовать холст",
|
|
1440
1478
|
"canvas.renameHint": "Двойной клик — переименовать",
|
|
1441
|
-
"canvas.background": "
|
|
1479
|
+
"canvas.background": "Фон холста",
|
|
1480
|
+
"canvas.backgroundDots": "Точки",
|
|
1481
|
+
"canvas.backgroundLines": "Сетка",
|
|
1482
|
+
"canvas.backgroundDiagonal": "Диагональ",
|
|
1483
|
+
"canvas.backgroundChecker": "Шахматка",
|
|
1484
|
+
"canvas.backgroundBlank": "Пустой",
|
|
1485
|
+
"canvas.backgroundUpload": "Загрузить свой фон…",
|
|
1486
|
+
"canvas.backgroundRemove": "Убрать свой фон",
|
|
1487
|
+
"canvas.templateLibrary": "Библиотека шаблонов (выберите промпт — создадутся текстовый узел и узел конфигурации)",
|
|
1442
1488
|
"canvas.undo": "Отменить (Ctrl+Z)",
|
|
1443
1489
|
"canvas.redo": "Повторить (Ctrl+Shift+Z)",
|
|
1444
1490
|
"canvas.saving": "Сохранение…",
|
|
@@ -1459,6 +1505,7 @@ window.__ModuleLoader__.load({
|
|
|
1459
1505
|
"canvas.generatingNode": "Генерация…",
|
|
1460
1506
|
"canvas.generateFailed": "Не удалось создать изображение",
|
|
1461
1507
|
"canvas.retry": "Повторить",
|
|
1508
|
+
"canvas.taskLost": "Задача генерации потеряна (сервис перезапущен); повторите",
|
|
1462
1509
|
"canvas.emptyImageNode": "Нажмите, чтобы загрузить изображение",
|
|
1463
1510
|
"canvas.connectHint": "Потяните к другому узлу, чтобы соединить",
|
|
1464
1511
|
"canvas.resizeHint": "Потяните, чтобы изменить размер (пропорции зафиксированы)",
|
|
@@ -1487,7 +1534,11 @@ window.__ModuleLoader__.load({
|
|
|
1487
1534
|
"canvas.close": "Закрыть",
|
|
1488
1535
|
"canvas.tabUpload": "Загрузка",
|
|
1489
1536
|
"canvas.tabHistory": "История",
|
|
1490
|
-
"canvas.tabGallery": "
|
|
1537
|
+
"canvas.tabGallery": "Материалы",
|
|
1538
|
+
"canvas.imageMenuUpload": "Загрузить локальное изображение",
|
|
1539
|
+
"canvas.imageMenuAssets": "Выбрать из материалов",
|
|
1540
|
+
"canvas.imageMenuHistory": "Выбрать из истории",
|
|
1541
|
+
"canvas.imageMenuGenerate": "Создать через AI",
|
|
1491
1542
|
"canvas.tabGenerate": "AI-генерация",
|
|
1492
1543
|
"canvas.dropHint": "Перетащите изображения сюда",
|
|
1493
1544
|
"canvas.dropSub": "Несколько файлов, PNG / JPG / WebP / GIF",
|
|
@@ -1632,9 +1683,13 @@ window.__ModuleLoader__.load({
|
|
|
1632
1683
|
"history.ratio": "Фильтр по пропорциям",
|
|
1633
1684
|
"history.allModels": "Все модели",
|
|
1634
1685
|
"history.allRatios": "Все пропорции",
|
|
1635
|
-
"gallery.title": "
|
|
1686
|
+
"gallery.title": "Материалы",
|
|
1636
1687
|
"gallery.categories": "Категории",
|
|
1637
|
-
"gallery.all": "Все
|
|
1688
|
+
"gallery.all": "Все материалы",
|
|
1689
|
+
"gallery.upload": "Загрузить",
|
|
1690
|
+
"gallery.uploadModel": "Локальный файл",
|
|
1691
|
+
"gallery.uploaded": "Материал добавлен",
|
|
1692
|
+
"gallery.uploadHint": "Сохраните локальные изображения для холста",
|
|
1638
1693
|
"gallery.gpt": "gpt-image-2",
|
|
1639
1694
|
"gallery.grok": "grok-imagine-image",
|
|
1640
1695
|
"gallery.ratio": "Пропорции",
|
|
@@ -1727,6 +1782,8 @@ window.__ModuleLoader__.load({
|
|
|
1727
1782
|
"settings.removeModel": "Удалить модель",
|
|
1728
1783
|
"settings.optional": "необязательно",
|
|
1729
1784
|
"settings.moreOptions": "Дополнительно",
|
|
1785
|
+
"settings.localStoragePath": "Локальная папка изображений",
|
|
1786
|
+
"settings.localStoragePathHint": "История, материалы и холст используют эту папку; пусто — ~/.dsh/dsh-imagegen.",
|
|
1730
1787
|
"settings.storageTitle": "Синхронизация с объектным хранилищем",
|
|
1731
1788
|
"settings.storageEnabled": "Включить синхронизацию",
|
|
1732
1789
|
"settings.storageHint": "После сохранения локально изображения выгружаются в S3-совместимое хранилище (Tencent COS / Alibaba OSS / Qiniu S3 / MinIO / R2…)",
|
|
@@ -1945,51 +2002,51 @@ window.__ModuleLoader__.load({
|
|
|
1945
2002
|
document.head.appendChild(tag);
|
|
1946
2003
|
}
|
|
1947
2004
|
var templates_module_css_default = {
|
|
1948
|
-
"
|
|
1949
|
-
"cardBody": "o0mAxG_cardBody",
|
|
1950
|
-
"detailOverlay": "o0mAxG_detailOverlay",
|
|
1951
|
-
"detailLink": "o0mAxG_detailLink",
|
|
1952
|
-
"cardSource": "o0mAxG_cardSource",
|
|
1953
|
-
"cardCategory": "o0mAxG_cardCategory",
|
|
2005
|
+
"shell": "o0mAxG_shell",
|
|
1954
2006
|
"search": "o0mAxG_search",
|
|
1955
|
-
"heading": "o0mAxG_heading",
|
|
1956
|
-
"sourceTab": "o0mAxG_sourceTab",
|
|
1957
|
-
"notice": "o0mAxG_notice",
|
|
1958
|
-
"categoryRow": "o0mAxG_categoryRow",
|
|
1959
2007
|
"card": "o0mAxG_card",
|
|
1960
|
-
"detailPrompt": "o0mAxG_detailPrompt",
|
|
1961
|
-
"detailActions": "o0mAxG_detailActions",
|
|
1962
|
-
"spinner": "o0mAxG_spinner",
|
|
1963
2008
|
"close": "o0mAxG_close",
|
|
1964
|
-
"detailInfo": "o0mAxG_detailInfo",
|
|
1965
|
-
"categoryPill": "o0mAxG_categoryPill",
|
|
1966
2009
|
"favStar": "o0mAxG_favStar",
|
|
1967
|
-
"
|
|
1968
|
-
"
|
|
1969
|
-
"detailMedia": "o0mAxG_detailMedia",
|
|
1970
|
-
"detailTitle": "o0mAxG_detailTitle",
|
|
1971
|
-
"headerActions": "o0mAxG_headerActions",
|
|
1972
|
-
"thumbPlaceholder": "o0mAxG_thumbPlaceholder",
|
|
2010
|
+
"meta": "o0mAxG_meta",
|
|
2011
|
+
"sourceTab": "o0mAxG_sourceTab",
|
|
1973
2012
|
"featuredBadge": "o0mAxG_featuredBadge",
|
|
1974
|
-
"
|
|
1975
|
-
"
|
|
2013
|
+
"cardBody": "o0mAxG_cardBody",
|
|
2014
|
+
"cardSource": "o0mAxG_cardSource",
|
|
2015
|
+
"footer": "o0mAxG_footer",
|
|
2016
|
+
"detailTitle": "o0mAxG_detailTitle",
|
|
1976
2017
|
"thumbWrap": "o0mAxG_thumbWrap",
|
|
1977
|
-
"
|
|
1978
|
-
"
|
|
2018
|
+
"cardMeta": "o0mAxG_cardMeta",
|
|
2019
|
+
"heading": "o0mAxG_heading",
|
|
2020
|
+
"state": "o0mAxG_state",
|
|
2021
|
+
"detailPrompt": "o0mAxG_detailPrompt",
|
|
2022
|
+
"overlay": "o0mAxG_overlay",
|
|
2023
|
+
"dsh-imagegen-templates-spin": "o0mAxG_dsh-imagegen-templates-spin",
|
|
1979
2024
|
"title": "o0mAxG_title",
|
|
1980
|
-
"
|
|
1981
|
-
"
|
|
2025
|
+
"headerActions": "o0mAxG_headerActions",
|
|
2026
|
+
"sourceTabs": "o0mAxG_sourceTabs",
|
|
1982
2027
|
"attribution": "o0mAxG_attribution",
|
|
1983
|
-
"
|
|
1984
|
-
"
|
|
2028
|
+
"detailMeta": "o0mAxG_detailMeta",
|
|
2029
|
+
"categoryPill": "o0mAxG_categoryPill",
|
|
1985
2030
|
"detail": "o0mAxG_detail",
|
|
1986
|
-
"
|
|
1987
|
-
"dsh-imagegen-templates-spin": "o0mAxG_dsh-imagegen-templates-spin",
|
|
1988
|
-
"overlay": "o0mAxG_overlay",
|
|
2031
|
+
"categoryRow": "o0mAxG_categoryRow",
|
|
1989
2032
|
"header": "o0mAxG_header",
|
|
2033
|
+
"detailInfo": "o0mAxG_detailInfo",
|
|
2034
|
+
"toolbar": "o0mAxG_toolbar",
|
|
2035
|
+
"thumbPlaceholder": "o0mAxG_thumbPlaceholder",
|
|
2036
|
+
"cardCategory": "o0mAxG_cardCategory",
|
|
2037
|
+
"detailOverlay": "o0mAxG_detailOverlay",
|
|
2038
|
+
"sourceLink": "o0mAxG_sourceLink",
|
|
2039
|
+
"notice": "o0mAxG_notice",
|
|
1990
2040
|
"body": "o0mAxG_body",
|
|
1991
|
-
"
|
|
1992
|
-
"
|
|
2041
|
+
"thumb": "o0mAxG_thumb",
|
|
2042
|
+
"spinner": "o0mAxG_spinner",
|
|
2043
|
+
"detailMedia": "o0mAxG_detailMedia",
|
|
2044
|
+
"detailImage": "o0mAxG_detailImage",
|
|
2045
|
+
"cardTitle": "o0mAxG_cardTitle",
|
|
2046
|
+
"sourceTabCount": "o0mAxG_sourceTabCount",
|
|
2047
|
+
"detailLink": "o0mAxG_detailLink",
|
|
2048
|
+
"detailActions": "o0mAxG_detailActions",
|
|
2049
|
+
"grid": "o0mAxG_grid"
|
|
1993
2050
|
};
|
|
1994
2051
|
//#endregion
|
|
1995
2052
|
//#region src/client/TemplateLibrary.tsx
|
|
@@ -2617,19 +2674,19 @@ window.__ModuleLoader__.load({
|
|
|
2617
2674
|
document.head.appendChild(tag);
|
|
2618
2675
|
}
|
|
2619
2676
|
var inspiration_module_css_default = {
|
|
2620
|
-
"
|
|
2621
|
-
"dsh-imagegen-inspiration-spin": "IgRnJG_dsh-imagegen-inspiration-spin",
|
|
2622
|
-
"thumbWrap": "IgRnJG_thumbWrap",
|
|
2623
|
-
"title": "IgRnJG_title",
|
|
2624
|
-
"grid": "IgRnJG_grid",
|
|
2677
|
+
"emptyIcon": "IgRnJG_emptyIcon",
|
|
2625
2678
|
"emptyTitle": "IgRnJG_emptyTitle",
|
|
2626
|
-
"
|
|
2679
|
+
"thumb": "IgRnJG_thumb",
|
|
2627
2680
|
"emptyHint": "IgRnJG_emptyHint",
|
|
2628
|
-
"
|
|
2681
|
+
"tile": "IgRnJG_tile",
|
|
2629
2682
|
"thumbFallback": "IgRnJG_thumbFallback",
|
|
2630
|
-
"
|
|
2683
|
+
"title": "IgRnJG_title",
|
|
2631
2684
|
"thumbTitle": "IgRnJG_thumbTitle",
|
|
2632
|
-
"
|
|
2685
|
+
"spinner": "IgRnJG_spinner",
|
|
2686
|
+
"grid": "IgRnJG_grid",
|
|
2687
|
+
"thumbWrap": "IgRnJG_thumbWrap",
|
|
2688
|
+
"dsh-imagegen-inspiration-spin": "IgRnJG_dsh-imagegen-inspiration-spin",
|
|
2689
|
+
"wrap": "IgRnJG_wrap"
|
|
2633
2690
|
};
|
|
2634
2691
|
//#endregion
|
|
2635
2692
|
//#region src/client/InspirationGallery.tsx
|
|
@@ -2777,7 +2834,7 @@ window.__ModuleLoader__.load({
|
|
|
2777
2834
|
}
|
|
2778
2835
|
//#endregion
|
|
2779
2836
|
//#region \0dsh-css:E:\dsh-plugin\src\client\canvas-workspace.module.css.mjs
|
|
2780
|
-
const css$3 = "._0yZr2a_root{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family,inherit);user-select:none;border-radius:10px;flex-direction:column;flex:auto;display:flex;position:relative;overflow:hidden}._0yZr2a_selectCursor{cursor:default}._0yZr2a_panCursor{cursor:grab}._0yZr2a_panCursor:active{cursor:grabbing}._0yZr2a_topBar{border-bottom:1px solid var(--dsw-alias-border-l1);z-index:40;background:var(--dsw-alias-bg-layer-1);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}._0yZr2a_projectSelect{border:1px solid var(--dsw-alias-border-l1);max-width:180px;height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}._0yZr2a_titleButton{height:30px;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:1px solid #0000;border-radius:8px;max-width:260px;padding:0 10px;font-size:13px;font-weight:600;overflow:hidden}._0yZr2a_titleButton:hover{border-color:var(--dsw-alias-border-l1)}._0yZr2a_titleInput{border:1px solid var(--dsw-alias-brand-primary);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;outline:none;width:240px;padding:0 10px;font-size:13px;font-weight:600}._0yZr2a_topBarSpacer{flex:1}._0yZr2a_saveState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11.5px}._0yZr2a_saveState[data-state=error]{color:var(--dsw-alias-label-error)}._0yZr2a_saveState[data-state=saving]{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-label-secondary))}._0yZr2a_iconButton{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}._0yZr2a_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._0yZr2a_iconButton[data-active]{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 16%, transparent);color:var(--dsw-alias-brand-primary)}._0yZr2a_iconButton:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_iconButton:disabled:hover{color:var(--dsw-alias-label-secondary);background:0 0}._0yZr2a_viewport{touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}._0yZr2a_grid{pointer-events:none;opacity:.5;position:absolute;inset:0}._0yZr2a_grid[data-mode=dots]{background-image:radial-gradient(circle, color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent) 1.1px, transparent 1.4px)}._0yZr2a_grid[data-mode=lines]{background-image:linear-gradient(color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px)}._0yZr2a_grid[data-mode=blank]{background-image:none}._0yZr2a_world{transform-origin:0 0;position:absolute;top:0;left:0}._0yZr2a_marquee{z-index:20;border:1px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);pointer-events:none;border-radius:4px;position:absolute}._0yZr2a_node{border:1.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);cursor:grab;touch-action:none;border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:visible;box-shadow:0 8px 24px #0f172a1f}._0yZr2a_node:active{cursor:grabbing}._0yZr2a_nodeGlow{pointer-events:none;opacity:0;border-radius:18px;transition:opacity .15s;position:absolute;inset:-6px}._0yZr2a_nodeSelected{border-color:var(--dsw-alias-brand-primary);z-index:2}._0yZr2a_nodeSelected ._0yZr2a_nodeGlow{opacity:1;box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent)}._0yZr2a_nodeRelated{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent)}._0yZr2a_nodeConnectTarget{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent)}._0yZr2a_nodeHeader{color:var(--dsw-alias-label-secondary);cursor:inherit;flex:none;align-items:center;gap:6px;padding:7px 12px 5px;font-size:11.5px;display:flex}._0yZr2a_nodeTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._0yZr2a_nodeSize{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto;font-size:10.5px}._0yZr2a_nodeSpinner{border:1.5px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);border-top-color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite _0yZr2a_canvasSpin}._0yZr2a_nodeBody{background:color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent);pointer-events:none;border-radius:9px;flex:1;justify-content:center;align-items:center;min-height:0;margin:0 8px 8px;display:flex;overflow:hidden}._0yZr2a_nodeBody img{object-fit:contain;width:100%;height:100%;display:block}._0yZr2a_nodeState,._0yZr2a_nodeStateError{color:var(--dsw-alias-label-secondary);text-align:center;pointer-events:auto;flex-direction:column;align-items:center;gap:8px;padding:12px;font-size:12px;display:flex}._0yZr2a_nodeStateError{color:var(--dsw-alias-label-error)}._0yZr2a_nodeStateError button{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:7px;padding:4px 12px;font-size:12px}._0yZr2a_nodeEmpty{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border-radius:9px;flex-direction:column;align-items:center;gap:8px;margin:6px;padding:14px;font-size:12px;display:flex}._0yZr2a_nodeEmpty:hover{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary)}._0yZr2a_textNode{cursor:default}._0yZr2a_imageNode ._0yZr2a_nodeBody{margin:6px}._0yZr2a_textArea{resize:none;min-height:0;color:var(--dsw-alias-label-primary);cursor:text;pointer-events:auto;background:0 0;border:none;outline:none;flex:1;margin:0 8px 8px;padding:4px 6px;font-size:13px;line-height:1.55}._0yZr2a_textArea::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_dock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:13px;align-items:center;gap:2px;padding:6px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0f172a24}._0yZr2a_dock ._0yZr2a_iconButton{width:34px;height:34px}._0yZr2a_dockDivider{background:var(--dsw-alias-border-l1);width:1px;height:18px;margin:0 4px}._0yZr2a_composer{z-index:35;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);backdrop-filter:blur(10px);border-radius:14px;flex-direction:column;gap:8px;width:560px;padding:10px;display:flex;position:absolute;box-shadow:0 16px 44px #0f172a2e}._0yZr2a_composerPrompt{resize:none;width:100%;min-height:38px;max-height:120px;color:var(--dsw-alias-label-primary);cursor:text;background:0 0;border:none;outline:none;padding:2px 4px;font-size:13px;line-height:1.5}._0yZr2a_composerPrompt::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_composerMeta{display:flex}._0yZr2a_composerChip{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent);color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;display:inline-flex}._0yZr2a_composerControls{align-items:center;gap:6px;display:flex}._0yZr2a_composerControls select{border:1px solid var(--dsw-alias-border-l1);height:28px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:999px;min-width:0;max-width:128px;padding:0 8px;font-size:11.5px}._0yZr2a_composerSend{background:var(--dsw-alias-label-primary);width:34px;height:34px;color:var(--dsw-alias-bg-layer-1);cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}._0yZr2a_composerSend:hover{opacity:.88}._0yZr2a_composerSend:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_configNode{cursor:grab;padding:0 10px 10px}._0yZr2a_configNode ._0yZr2a_nodeHeader{padding:7px 2px 5px}._0yZr2a_configLinks{flex:none;margin:2px 0 8px;display:flex}._0yZr2a_configLinks ._0yZr2a_composerChip{padding:2px 8px;font-size:10.5px}._0yZr2a_configHint{min-height:0;color:var(--dsw-alias-label-tertiary);flex:1;margin:0;font-size:11px;line-height:1.55;overflow:auto}._0yZr2a_handle{background:var(--dsw-alias-bg-layer-1);border:2px solid var(--dsw-alias-brand-primary);opacity:0;cursor:crosshair;z-index:3;border-radius:50%;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;top:50%;transform:translateY(-50%)scale(.6)}._0yZr2a_handleLeft{left:-7px}._0yZr2a_handleRight{right:-7px}._0yZr2a_node:hover ._0yZr2a_handle,._0yZr2a_nodeSelected ._0yZr2a_handle,._0yZr2a_nodeConnectTarget ._0yZr2a_handle{opacity:1;transform:translateY(-50%)scale(1)}._0yZr2a_handle:hover{background:var(--dsw-alias-brand-primary)}._0yZr2a_resizeHandle{background:var(--dsw-alias-brand-primary);border:2px solid var(--dsw-alias-bg-layer-1);cursor:nwse-resize;z-index:3;border-radius:4px;width:14px;height:14px;position:absolute;bottom:-5px;right:-5px}._0yZr2a_hoverToolbar{border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);opacity:0;pointer-events:none;z-index:4;border-radius:10px;gap:2px;padding:4px;transition:opacity .12s;display:flex;position:absolute;top:-36px;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #0f172a24}._0yZr2a_node:hover ._0yZr2a_hoverToolbar,._0yZr2a_nodeSelected ._0yZr2a_hoverToolbar{opacity:1;pointer-events:auto}._0yZr2a_connectionLayer{pointer-events:none;z-index:0;position:absolute;overflow:visible}._0yZr2a_connectionPath{fill:none;stroke:color-mix(in srgb, var(--dsw-alias-label-primary) 38%, transparent);stroke-width:2px;stroke-opacity:.85;pointer-events:none}._0yZr2a_connectionActive{stroke:var(--dsw-alias-brand-primary);stroke-width:3px;stroke-opacity:1;filter:drop-shadow(0 0 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent))}._0yZr2a_connectionPreview{fill:none;stroke:var(--dsw-alias-brand-primary);stroke-width:2px;stroke-dasharray:5 5;pointer-events:none}._0yZr2a_emptyHint{text-align:center;color:var(--dsw-alias-label-tertiary);pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}._0yZr2a_emptyHint strong{color:var(--dsw-alias-label-secondary);font-size:16px}._0yZr2a_emptyHint span{max-width:320px;font-size:12.5px;line-height:1.6}._0yZr2a_zoomDock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;bottom:14px;left:14px;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_zoomDock input[type=range]{width:96px;accent-color:var(--dsw-alias-brand-primary)}._0yZr2a_zoomValue{text-align:right;width:40px;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px}._0yZr2a_minimap{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;width:220px;height:150px;position:absolute;bottom:62px;left:14px;overflow:hidden;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_minimapCanvas{cursor:crosshair;width:100%;height:100%;position:relative}._0yZr2a_minimapNode{opacity:.8;border-radius:2px;position:absolute}._0yZr2a_minimapImage{background:var(--dsw-alias-brand-primary)}._0yZr2a_minimapText{background:color-mix(in srgb, var(--dsw-alias-label-primary) 40%, transparent)}._0yZr2a_minimapSelected{outline:1.5px solid var(--dsw-alias-brand-primary)}._0yZr2a_minimapViewport{border:1.5px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);pointer-events:none;border-radius:2px;position:absolute}._0yZr2a_inspectorRow{gap:8px;display:flex}._0yZr2a_inspectorRow>*{flex:1;min-width:0}._0yZr2a_contextMenu{z-index:90;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);border-radius:11px;flex-direction:column;min-width:176px;padding:5px;display:flex;position:fixed;box-shadow:0 16px 40px #0f172a33}._0yZr2a_contextMenu button{color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;display:flex}._0yZr2a_contextMenu button:hover{background:var(--dsw-alias-interactive-bg-hover)}._0yZr2a_contextMenu button[data-danger]{color:var(--dsw-alias-label-error)}._0yZr2a_errorToast{z-index:60;border:1px solid color-mix(in srgb, var(--dsw-alias-label-error) 35%, transparent);background:color-mix(in srgb, var(--dsw-alias-label-error) 12%, var(--dsw-alias-bg-layer-1));max-width:min(560px,80%);color:var(--dsw-alias-label-error);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:12.5px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0f172a2e}._0yZr2a_errorToast button{color:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:2px;display:inline-flex}._0yZr2a_modalBackdrop{z-index:70;background:color-mix(in srgb, var(--dsw-alias-label-primary) 32%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._0yZr2a_picker{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;width:min(720px,92%);max-height:84%;display:flex;overflow:hidden;box-shadow:0 24px 60px #0f172a42}._0yZr2a_pickerHeader{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:12px 14px;font-size:14px;display:flex}._0yZr2a_pickerHeader button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px}._0yZr2a_pickerTabs{gap:4px;padding:10px 14px 0;display:flex}._0yZr2a_pickerTabs button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px 8px 0 0;padding:7px 12px;font-size:12.5px}._0yZr2a_pickerTabs button[data-active]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-brand-primary)}._0yZr2a_pickerBody{flex:1;min-height:0;padding:14px;overflow:auto}._0yZr2a_pickerGrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}._0yZr2a_pickerCard{border:1.5px solid var(--dsw-alias-border-l1);cursor:pointer;text-align:left;color:var(--dsw-alias-label-primary);background:0 0;border-radius:10px;flex-direction:column;gap:6px;padding:6px;display:flex}._0yZr2a_pickerCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 25%, transparent)}._0yZr2a_pickerCard img{object-fit:cover;border-radius:7px;width:100%;height:110px}._0yZr2a_pickerCardPrompt{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}._0yZr2a_pickerCard small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}._0yZr2a_pickerFooter{color:var(--dsw-alias-label-secondary);justify-content:space-between;align-items:center;padding-top:12px;font-size:12.5px;display:flex}._0yZr2a_pickerFooter button,._0yZr2a_generateForm button{background:var(--dsw-alias-brand-primary);height:32px;color:var(--dsw-alias-bg-base,#fff);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 16px;font-size:12.5px;font-weight:600;display:inline-flex}._0yZr2a_pickerFooter button:disabled,._0yZr2a_generateForm button:disabled{opacity:.45;cursor:not-allowed}._0yZr2a_uploadBox{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 22%, transparent);min-height:220px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}._0yZr2a_uploadBox:hover{border-color:var(--dsw-alias-brand-primary)}._0yZr2a_uploadBox input{display:none}._0yZr2a_uploadBox small{color:var(--dsw-alias-label-tertiary);font-size:11px}._0yZr2a_uploadIcon{color:var(--dsw-alias-brand-primary)}._0yZr2a_generateForm{flex-direction:column;gap:10px;display:flex}._0yZr2a_generateForm textarea{resize:vertical;border:1px solid var(--dsw-alias-border-l1);min-height:110px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:9px;outline:none;padding:8px 10px;font-size:12.5px}._0yZr2a_generateForm select{border:1px solid var(--dsw-alias-border-l1);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}@keyframes _0yZr2a_canvasSpin{to{transform:rotate(360deg)}}";
|
|
2837
|
+
const css$3 = "._0yZr2a_root{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family,inherit);user-select:none;border-radius:10px;flex-direction:column;flex:auto;display:flex;position:relative;overflow:hidden}._0yZr2a_selectCursor{cursor:default}._0yZr2a_panCursor{cursor:grab}._0yZr2a_panCursor:active{cursor:grabbing}._0yZr2a_topBar{border-bottom:1px solid var(--dsw-alias-border-l1);z-index:40;background:var(--dsw-alias-bg-layer-1);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}._0yZr2a_projectSelect{border:1px solid var(--dsw-alias-border-l1);max-width:180px;height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}._0yZr2a_titleButton{height:30px;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:1px solid #0000;border-radius:8px;max-width:260px;padding:0 10px;font-size:13px;font-weight:600;overflow:hidden}._0yZr2a_titleButton:hover{border-color:var(--dsw-alias-border-l1)}._0yZr2a_titleInput{border:1px solid var(--dsw-alias-brand-primary);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;outline:none;width:240px;padding:0 10px;font-size:13px;font-weight:600}._0yZr2a_topBarSpacer{flex:1}._0yZr2a_saveState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11.5px}._0yZr2a_saveState[data-state=error]{color:var(--dsw-alias-label-error)}._0yZr2a_saveState[data-state=saving]{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-label-secondary))}._0yZr2a_iconButton{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}._0yZr2a_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._0yZr2a_iconButton[data-active]{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 16%, transparent);color:var(--dsw-alias-brand-primary)}._0yZr2a_iconButton:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_iconButton:disabled:hover{color:var(--dsw-alias-label-secondary);background:0 0}._0yZr2a_viewport{touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}._0yZr2a_grid{pointer-events:none;opacity:.5;position:absolute;inset:0}._0yZr2a_grid[data-mode=dots]{background-image:radial-gradient(circle, color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent) 1.1px, transparent 1.4px)}._0yZr2a_grid[data-mode=lines]{background-image:linear-gradient(color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px)}._0yZr2a_grid[data-mode=blank]{background-image:none}._0yZr2a_grid[data-mode=diagonal]{background-image:repeating-linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent) 0 1px, transparent 1px 16px)}._0yZr2a_grid[data-mode=checker]{background-image:conic-gradient(color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 90deg, transparent 90deg 180deg, color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 180deg 270deg, transparent 270deg);background-size:48px 48px}._0yZr2a_grid[data-mode=image]{background-image:none}._0yZr2a_gridScrim{background:var(--dsw-alias-bg-layer-1);opacity:.6;position:absolute;inset:0}._0yZr2a_backgroundMenu{z-index:45;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);border-radius:11px;flex-direction:column;min-width:168px;padding:5px;display:flex;position:absolute;transform:translate(-50%,-100%);box-shadow:0 16px 40px #0f172a33}._0yZr2a_backgroundMenu button{color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;justify-content:space-between;align-items:center;padding:7px 10px;font-size:12.5px;display:flex}._0yZr2a_backgroundMenu button:hover{background:var(--dsw-alias-interactive-bg-hover)}._0yZr2a_backgroundMenu button[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 12%, transparent)}._0yZr2a_backgroundMenuDivider{background:var(--dsw-alias-border-l1);height:1px;margin:4px 6px}._0yZr2a_world{transform-origin:0 0;position:absolute;top:0;left:0}._0yZr2a_marquee{z-index:20;border:1px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);pointer-events:none;border-radius:4px;position:absolute}._0yZr2a_node{border:1.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);cursor:grab;touch-action:none;border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:visible;box-shadow:0 8px 24px #0f172a1f}._0yZr2a_node:active{cursor:grabbing}._0yZr2a_nodeGlow{pointer-events:none;opacity:0;border-radius:18px;transition:opacity .15s;position:absolute;inset:-6px}._0yZr2a_nodeSelected{border-color:var(--dsw-alias-brand-primary);z-index:2}._0yZr2a_nodeSelected ._0yZr2a_nodeGlow{opacity:1;box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent)}._0yZr2a_nodeRelated{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent)}._0yZr2a_nodeConnectTarget{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent)}._0yZr2a_nodeHeader{color:var(--dsw-alias-label-secondary);cursor:inherit;flex:none;align-items:center;gap:6px;padding:7px 12px 5px;font-size:11.5px;display:flex}._0yZr2a_nodeTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._0yZr2a_nodeSize{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto;font-size:10.5px}._0yZr2a_nodeSpinner{border:1.5px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);border-top-color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite _0yZr2a_canvasSpin}._0yZr2a_nodeBody{background:color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent);pointer-events:none;border-radius:9px;flex:1;justify-content:center;align-items:center;min-height:0;margin:0 8px 8px;display:flex;overflow:hidden}._0yZr2a_nodeBody img{object-fit:contain;width:100%;height:100%;display:block}._0yZr2a_imageInfo{z-index:2;background:color-mix(in srgb, var(--dsw-alias-label-primary) 62%, transparent);color:var(--dsw-alias-bg-layer-1);pointer-events:none;backdrop-filter:blur(3px);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;max-width:calc(100% - 90px);padding:3px 8px;font-size:10.5px;line-height:1.4;position:absolute;top:6px;overflow:hidden}._0yZr2a_imageInfoLeft{font-weight:600;left:6px}._0yZr2a_imageInfoRight{font-variant-numeric:tabular-nums;opacity:.85;left:auto;right:6px}._0yZr2a_nodeState,._0yZr2a_nodeStateError{color:var(--dsw-alias-label-secondary);text-align:center;pointer-events:auto;flex-direction:column;align-items:center;gap:8px;padding:12px;font-size:12px;display:flex}._0yZr2a_nodeStateError{color:var(--dsw-alias-label-error)}._0yZr2a_nodeStateError button{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:7px;padding:4px 12px;font-size:12px}._0yZr2a_nodeEmpty{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border-radius:9px;flex-direction:column;align-items:center;gap:8px;margin:6px;padding:14px;font-size:12px;display:flex}._0yZr2a_nodeEmpty:hover{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary)}._0yZr2a_textNode{cursor:default}._0yZr2a_imageNode ._0yZr2a_nodeBody{margin:6px}._0yZr2a_textArea{resize:none;min-height:0;color:var(--dsw-alias-label-primary);cursor:text;pointer-events:auto;background:0 0;border:none;outline:none;flex:1;margin:0 8px 8px;padding:4px 6px;font-size:13px;line-height:1.55}._0yZr2a_textArea::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_dock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:13px;align-items:center;gap:2px;padding:6px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0f172a24}._0yZr2a_dock ._0yZr2a_iconButton{border-radius:11px;width:40px;height:40px;transition:transform .18s cubic-bezier(.34,1.9,.64,1),background .15s,color .15s,box-shadow .18s;position:relative;overflow:hidden}._0yZr2a_dock ._0yZr2a_iconButton:before{content:\"\";background:linear-gradient(105deg, transparent, color-mix(in srgb, currentColor 26%, transparent), transparent);opacity:0;pointer-events:none;width:65%;position:absolute;top:-4px;bottom:-4px;left:-150%;transform:skew(-18deg)}._0yZr2a_dock ._0yZr2a_iconButton:not(:disabled):hover{transform:translateY(calc(-3px - var(--dock-lift,0px)));box-shadow:0 6px 14px color-mix(in srgb, var(--dsw-alias-label-primary) 20%, transparent)}._0yZr2a_dock ._0yZr2a_iconButton:not(:disabled):hover:before{animation:.55s forwards _0yZr2a_dockShine}._0yZr2a_dock ._0yZr2a_iconButton:not(:disabled):active{transform:translateY(-1px)scale(.96)}@keyframes _0yZr2a_dockShine{0%{opacity:1;left:-150%}to{opacity:1;left:170%}}._0yZr2a_dock ._0yZr2a_iconButton[data-active],._0yZr2a_dock ._0yZr2a_iconButton[data-active]:hover{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-1)}._0yZr2a_dockDivider{background:var(--dsw-alias-border-l1);width:1px;height:18px;margin:0 4px}._0yZr2a_composer{z-index:35;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);backdrop-filter:blur(10px);border-radius:14px;flex-direction:column;gap:8px;width:560px;padding:10px;display:flex;position:absolute;box-shadow:0 16px 44px #0f172a2e}._0yZr2a_composerPrompt{resize:none;width:100%;min-height:38px;max-height:120px;color:var(--dsw-alias-label-primary);cursor:text;background:0 0;border:none;outline:none;padding:2px 4px;font-size:13px;line-height:1.5}._0yZr2a_composerPrompt::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_composerMeta{display:flex}._0yZr2a_composerChip{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent);color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;display:inline-flex}._0yZr2a_composerControls{align-items:center;gap:6px;display:flex}._0yZr2a_composerControls select{border:1px solid var(--dsw-alias-border-l1);height:28px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:999px;min-width:0;max-width:128px;padding:0 8px;font-size:11.5px}._0yZr2a_composerSend{background:var(--dsw-alias-label-primary);width:34px;height:34px;color:var(--dsw-alias-bg-layer-1);cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}._0yZr2a_composerSend:hover{opacity:.88}._0yZr2a_composerSend:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_configNode{cursor:grab;padding:0 14px 14px}._0yZr2a_configNode ._0yZr2a_nodeHeader{padding:10px 2px 6px;font-size:12px}._0yZr2a_configLinks{flex:none;align-items:center;margin:4px 0 10px;display:flex}._0yZr2a_configLinks ._0yZr2a_composerChip{padding:3px 10px;font-size:11px}._0yZr2a_configHint{min-height:0;color:var(--dsw-alias-label-tertiary);flex:1;margin:0;font-size:11.5px;line-height:1.7;overflow:auto}._0yZr2a_handle{background:var(--dsw-alias-bg-layer-1);border:2px solid var(--dsw-alias-brand-primary);opacity:0;cursor:crosshair;z-index:3;border-radius:50%;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;top:50%;transform:translateY(-50%)scale(.6)}._0yZr2a_handleLeft{left:-7px}._0yZr2a_handleRight{right:-7px}._0yZr2a_node:hover ._0yZr2a_handle,._0yZr2a_nodeSelected ._0yZr2a_handle,._0yZr2a_nodeConnectTarget ._0yZr2a_handle{opacity:1;transform:translateY(-50%)scale(1)}._0yZr2a_handle:hover{background:var(--dsw-alias-brand-primary)}._0yZr2a_resizeHandle{background:var(--dsw-alias-brand-primary);border:2px solid var(--dsw-alias-bg-layer-1);cursor:nwse-resize;z-index:3;border-radius:4px;width:14px;height:14px;position:absolute;bottom:-5px;right:-5px}._0yZr2a_hoverToolbar{border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);opacity:0;pointer-events:none;z-index:4;border-radius:10px;gap:2px;padding:4px;transition:opacity .12s;display:flex;position:absolute;top:-36px;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #0f172a24}._0yZr2a_node:hover ._0yZr2a_hoverToolbar,._0yZr2a_nodeSelected ._0yZr2a_hoverToolbar{opacity:1;pointer-events:auto}._0yZr2a_connectionLayer{pointer-events:none;z-index:0;position:absolute;overflow:visible}._0yZr2a_connectionPath{fill:none;stroke:color-mix(in srgb, var(--dsw-alias-label-primary) 38%, transparent);stroke-width:2px;stroke-opacity:.85;pointer-events:none}._0yZr2a_connectionActive{stroke:var(--dsw-alias-brand-primary);stroke-width:3px;stroke-opacity:1;filter:drop-shadow(0 0 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent))}._0yZr2a_connectionPreview{fill:none;stroke:var(--dsw-alias-brand-primary);stroke-width:2px;stroke-dasharray:5 5;pointer-events:none}._0yZr2a_emptyHint{text-align:center;color:var(--dsw-alias-label-tertiary);pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}._0yZr2a_emptyHint strong{color:var(--dsw-alias-label-secondary);font-size:16px}._0yZr2a_emptyHint span{max-width:320px;font-size:12.5px;line-height:1.6}._0yZr2a_zoomDock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;bottom:14px;left:14px;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_zoomDock input[type=range]{width:96px;accent-color:var(--dsw-alias-brand-primary)}._0yZr2a_zoomValue{text-align:right;width:40px;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px}._0yZr2a_minimap{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;width:220px;height:150px;position:absolute;bottom:62px;left:14px;overflow:hidden;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_minimapCanvas{cursor:crosshair;width:100%;height:100%;position:relative}._0yZr2a_minimapNode{opacity:.8;border-radius:2px;position:absolute}._0yZr2a_minimapImage{background:var(--dsw-alias-brand-primary)}._0yZr2a_minimapText{background:color-mix(in srgb, var(--dsw-alias-label-primary) 40%, transparent)}._0yZr2a_minimapSelected{outline:1.5px solid var(--dsw-alias-brand-primary)}._0yZr2a_minimapViewport{border:1.5px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);pointer-events:none;border-radius:2px;position:absolute}._0yZr2a_inspectorRow{gap:8px;display:flex}._0yZr2a_inspectorRow>*{flex:1;min-width:0}._0yZr2a_contextMenu{z-index:90;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);border-radius:11px;flex-direction:column;min-width:176px;padding:5px;display:flex;position:fixed;box-shadow:0 16px 40px #0f172a33}._0yZr2a_contextMenu button{color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;display:flex}._0yZr2a_contextMenu button:hover{background:var(--dsw-alias-interactive-bg-hover)}._0yZr2a_contextMenu button[data-danger]{color:var(--dsw-alias-label-error)}._0yZr2a_errorToast{z-index:60;border:1px solid color-mix(in srgb, var(--dsw-alias-label-error) 35%, transparent);background:color-mix(in srgb, var(--dsw-alias-label-error) 12%, var(--dsw-alias-bg-layer-1));max-width:min(560px,80%);color:var(--dsw-alias-label-error);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:12.5px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0f172a2e}._0yZr2a_errorToast button{color:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:2px;display:inline-flex}._0yZr2a_modalBackdrop{z-index:70;background:color-mix(in srgb, var(--dsw-alias-label-primary) 32%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._0yZr2a_picker{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;width:min(720px,92%);max-height:84%;display:flex;overflow:hidden;box-shadow:0 24px 60px #0f172a42}._0yZr2a_pickerHeader{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:12px 14px;font-size:14px;display:flex}._0yZr2a_pickerHeader button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px}._0yZr2a_pickerTabs{gap:4px;padding:10px 14px 0;display:flex}._0yZr2a_pickerTabs button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px 8px 0 0;padding:7px 12px;font-size:12.5px}._0yZr2a_pickerTabs button[data-active]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-brand-primary)}._0yZr2a_pickerBody{flex:1;min-height:0;padding:14px;overflow:auto}._0yZr2a_pickerGrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}._0yZr2a_pickerCard{border:1.5px solid var(--dsw-alias-border-l1);cursor:pointer;text-align:left;color:var(--dsw-alias-label-primary);background:0 0;border-radius:10px;flex-direction:column;gap:6px;padding:6px;display:flex}._0yZr2a_pickerCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 25%, transparent)}._0yZr2a_pickerCard img{object-fit:cover;border-radius:7px;width:100%;height:110px}._0yZr2a_pickerCardPrompt{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}._0yZr2a_pickerCard small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}._0yZr2a_pickerFooter{color:var(--dsw-alias-label-secondary);justify-content:space-between;align-items:center;padding-top:12px;font-size:12.5px;display:flex}._0yZr2a_pickerFooter button,._0yZr2a_generateForm button{background:var(--dsw-alias-brand-primary);height:32px;color:var(--dsw-alias-bg-base,#fff);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 16px;font-size:12.5px;font-weight:600;display:inline-flex}._0yZr2a_pickerFooter button:disabled,._0yZr2a_generateForm button:disabled{opacity:.45;cursor:not-allowed}._0yZr2a_uploadBox{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 22%, transparent);min-height:220px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}._0yZr2a_uploadBox:hover{border-color:var(--dsw-alias-brand-primary)}._0yZr2a_uploadBox input{display:none}._0yZr2a_uploadBox small{color:var(--dsw-alias-label-tertiary);font-size:11px}._0yZr2a_uploadIcon{color:var(--dsw-alias-brand-primary)}._0yZr2a_generateForm{flex-direction:column;gap:10px;display:flex}._0yZr2a_generateForm textarea{resize:vertical;border:1px solid var(--dsw-alias-border-l1);min-height:110px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:9px;outline:none;padding:8px 10px;font-size:12.5px}._0yZr2a_generateForm select{border:1px solid var(--dsw-alias-border-l1);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}@keyframes _0yZr2a_canvasSpin{to{transform:rotate(360deg)}}";
|
|
2781
2838
|
const tagId$3 = "@dickpy/dsh-imagegen/canvas-workspace.module.css";
|
|
2782
2839
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
2783
2840
|
const tag = document.createElement("style");
|
|
@@ -2787,82 +2844,89 @@ window.__ModuleLoader__.load({
|
|
|
2787
2844
|
document.head.appendChild(tag);
|
|
2788
2845
|
}
|
|
2789
2846
|
var canvas_workspace_module_css_default = {
|
|
2790
|
-
"
|
|
2791
|
-
"
|
|
2847
|
+
"titleInput": "_0yZr2a_titleInput",
|
|
2848
|
+
"configHint": "_0yZr2a_configHint",
|
|
2849
|
+
"connectionPreview": "_0yZr2a_connectionPreview",
|
|
2850
|
+
"minimapSelected": "_0yZr2a_minimapSelected",
|
|
2851
|
+
"imageNode": "_0yZr2a_imageNode",
|
|
2792
2852
|
"nodeStateError": "_0yZr2a_nodeStateError",
|
|
2853
|
+
"nodeEmpty": "_0yZr2a_nodeEmpty",
|
|
2854
|
+
"connectionActive": "_0yZr2a_connectionActive",
|
|
2855
|
+
"dock": "_0yZr2a_dock",
|
|
2856
|
+
"imageInfoLeft": "_0yZr2a_imageInfoLeft",
|
|
2857
|
+
"titleButton": "_0yZr2a_titleButton",
|
|
2858
|
+
"composer": "_0yZr2a_composer",
|
|
2859
|
+
"zoomValue": "_0yZr2a_zoomValue",
|
|
2860
|
+
"errorToast": "_0yZr2a_errorToast",
|
|
2861
|
+
"textArea": "_0yZr2a_textArea",
|
|
2862
|
+
"generateForm": "_0yZr2a_generateForm",
|
|
2863
|
+
"uploadBox": "_0yZr2a_uploadBox",
|
|
2864
|
+
"composerPrompt": "_0yZr2a_composerPrompt",
|
|
2865
|
+
"world": "_0yZr2a_world",
|
|
2866
|
+
"pickerCardPrompt": "_0yZr2a_pickerCardPrompt",
|
|
2793
2867
|
"emptyHint": "_0yZr2a_emptyHint",
|
|
2794
|
-
"
|
|
2795
|
-
"
|
|
2868
|
+
"minimapCanvas": "_0yZr2a_minimapCanvas",
|
|
2869
|
+
"backgroundMenuDivider": "_0yZr2a_backgroundMenuDivider",
|
|
2870
|
+
"pickerBody": "_0yZr2a_pickerBody",
|
|
2871
|
+
"pickerGrid": "_0yZr2a_pickerGrid",
|
|
2872
|
+
"node": "_0yZr2a_node",
|
|
2796
2873
|
"hoverToolbar": "_0yZr2a_hoverToolbar",
|
|
2797
|
-
"
|
|
2874
|
+
"saveState": "_0yZr2a_saveState",
|
|
2875
|
+
"dockDivider": "_0yZr2a_dockDivider",
|
|
2876
|
+
"grid": "_0yZr2a_grid",
|
|
2877
|
+
"inspectorRow": "_0yZr2a_inspectorRow",
|
|
2878
|
+
"nodeSize": "_0yZr2a_nodeSize",
|
|
2879
|
+
"composerMeta": "_0yZr2a_composerMeta",
|
|
2880
|
+
"nodeHeader": "_0yZr2a_nodeHeader",
|
|
2881
|
+
"viewport": "_0yZr2a_viewport",
|
|
2798
2882
|
"panCursor": "_0yZr2a_panCursor",
|
|
2799
|
-
"
|
|
2800
|
-
"
|
|
2801
|
-
"
|
|
2883
|
+
"minimapNode": "_0yZr2a_minimapNode",
|
|
2884
|
+
"topBarSpacer": "_0yZr2a_topBarSpacer",
|
|
2885
|
+
"minimap": "_0yZr2a_minimap",
|
|
2802
2886
|
"minimapImage": "_0yZr2a_minimapImage",
|
|
2803
|
-
"
|
|
2887
|
+
"nodeTitle": "_0yZr2a_nodeTitle",
|
|
2888
|
+
"handleRight": "_0yZr2a_handleRight",
|
|
2804
2889
|
"root": "_0yZr2a_root",
|
|
2805
|
-
"
|
|
2806
|
-
"
|
|
2807
|
-
"
|
|
2890
|
+
"connectionPath": "_0yZr2a_connectionPath",
|
|
2891
|
+
"composerChip": "_0yZr2a_composerChip",
|
|
2892
|
+
"nodeBody": "_0yZr2a_nodeBody",
|
|
2808
2893
|
"picker": "_0yZr2a_picker",
|
|
2809
|
-
"
|
|
2810
|
-
"pickerTabs": "_0yZr2a_pickerTabs",
|
|
2811
|
-
"errorToast": "_0yZr2a_errorToast",
|
|
2812
|
-
"resizeHandle": "_0yZr2a_resizeHandle",
|
|
2894
|
+
"textNode": "_0yZr2a_textNode",
|
|
2813
2895
|
"pickerCard": "_0yZr2a_pickerCard",
|
|
2896
|
+
"pickerHeader": "_0yZr2a_pickerHeader",
|
|
2897
|
+
"resizeHandle": "_0yZr2a_resizeHandle",
|
|
2898
|
+
"dockShine": "_0yZr2a_dockShine",
|
|
2899
|
+
"selectCursor": "_0yZr2a_selectCursor",
|
|
2900
|
+
"backgroundMenu": "_0yZr2a_backgroundMenu",
|
|
2901
|
+
"uploadIcon": "_0yZr2a_uploadIcon",
|
|
2814
2902
|
"nodeState": "_0yZr2a_nodeState",
|
|
2815
|
-
"
|
|
2816
|
-
"
|
|
2903
|
+
"nodeRelated": "_0yZr2a_nodeRelated",
|
|
2904
|
+
"configNode": "_0yZr2a_configNode",
|
|
2817
2905
|
"handleLeft": "_0yZr2a_handleLeft",
|
|
2818
|
-
"
|
|
2819
|
-
"connectionPreview": "_0yZr2a_connectionPreview",
|
|
2820
|
-
"nodeSize": "_0yZr2a_nodeSize",
|
|
2821
|
-
"saveState": "_0yZr2a_saveState",
|
|
2822
|
-
"composerControls": "_0yZr2a_composerControls",
|
|
2823
|
-
"uploadIcon": "_0yZr2a_uploadIcon",
|
|
2824
|
-
"minimapText": "_0yZr2a_minimapText",
|
|
2825
|
-
"inspectorRow": "_0yZr2a_inspectorRow",
|
|
2826
|
-
"connectionPath": "_0yZr2a_connectionPath",
|
|
2827
|
-
"pickerHeader": "_0yZr2a_pickerHeader",
|
|
2828
|
-
"handleRight": "_0yZr2a_handleRight",
|
|
2829
|
-
"configLinks": "_0yZr2a_configLinks",
|
|
2830
|
-
"topBar": "_0yZr2a_topBar",
|
|
2831
|
-
"pickerGrid": "_0yZr2a_pickerGrid",
|
|
2832
|
-
"node": "_0yZr2a_node",
|
|
2833
|
-
"viewport": "_0yZr2a_viewport",
|
|
2834
|
-
"titleButton": "_0yZr2a_titleButton",
|
|
2835
|
-
"nodeBody": "_0yZr2a_nodeBody",
|
|
2836
|
-
"textArea": "_0yZr2a_textArea",
|
|
2906
|
+
"nodeConnectTarget": "_0yZr2a_nodeConnectTarget",
|
|
2837
2907
|
"nodeSpinner": "_0yZr2a_nodeSpinner",
|
|
2838
|
-
"
|
|
2839
|
-
"
|
|
2840
|
-
"nodeHeader": "_0yZr2a_nodeHeader",
|
|
2841
|
-
"composer": "_0yZr2a_composer",
|
|
2842
|
-
"connectionActive": "_0yZr2a_connectionActive",
|
|
2843
|
-
"nodeGlow": "_0yZr2a_nodeGlow",
|
|
2844
|
-
"canvasSpin": "_0yZr2a_canvasSpin",
|
|
2845
|
-
"imageNode": "_0yZr2a_imageNode",
|
|
2908
|
+
"imageInfoRight": "_0yZr2a_imageInfoRight",
|
|
2909
|
+
"contextMenu": "_0yZr2a_contextMenu",
|
|
2846
2910
|
"composerSend": "_0yZr2a_composerSend",
|
|
2847
|
-
"
|
|
2848
|
-
"pickerBody": "_0yZr2a_pickerBody",
|
|
2849
|
-
"uploadBox": "_0yZr2a_uploadBox",
|
|
2850
|
-
"topBarSpacer": "_0yZr2a_topBarSpacer",
|
|
2851
|
-
"minimapSelected": "_0yZr2a_minimapSelected",
|
|
2852
|
-
"composerMeta": "_0yZr2a_composerMeta",
|
|
2853
|
-
"handle": "_0yZr2a_handle",
|
|
2854
|
-
"titleInput": "_0yZr2a_titleInput",
|
|
2855
|
-
"pickerCardPrompt": "_0yZr2a_pickerCardPrompt",
|
|
2911
|
+
"projectSelect": "_0yZr2a_projectSelect",
|
|
2856
2912
|
"pickerFooter": "_0yZr2a_pickerFooter",
|
|
2857
|
-
"
|
|
2858
|
-
"
|
|
2859
|
-
"textNode": "_0yZr2a_textNode",
|
|
2860
|
-
"composerChip": "_0yZr2a_composerChip",
|
|
2861
|
-
"generateForm": "_0yZr2a_generateForm",
|
|
2913
|
+
"marquee": "_0yZr2a_marquee",
|
|
2914
|
+
"handle": "_0yZr2a_handle",
|
|
2862
2915
|
"modalBackdrop": "_0yZr2a_modalBackdrop",
|
|
2916
|
+
"gridScrim": "_0yZr2a_gridScrim",
|
|
2917
|
+
"configLinks": "_0yZr2a_configLinks",
|
|
2918
|
+
"pickerTabs": "_0yZr2a_pickerTabs",
|
|
2919
|
+
"imageInfo": "_0yZr2a_imageInfo",
|
|
2920
|
+
"nodeSelected": "_0yZr2a_nodeSelected",
|
|
2921
|
+
"minimapViewport": "_0yZr2a_minimapViewport",
|
|
2863
2922
|
"iconButton": "_0yZr2a_iconButton",
|
|
2864
|
-
"
|
|
2865
|
-
"
|
|
2923
|
+
"minimapText": "_0yZr2a_minimapText",
|
|
2924
|
+
"zoomDock": "_0yZr2a_zoomDock",
|
|
2925
|
+
"composerControls": "_0yZr2a_composerControls",
|
|
2926
|
+
"connectionLayer": "_0yZr2a_connectionLayer",
|
|
2927
|
+
"canvasSpin": "_0yZr2a_canvasSpin",
|
|
2928
|
+
"nodeGlow": "_0yZr2a_nodeGlow",
|
|
2929
|
+
"topBar": "_0yZr2a_topBar"
|
|
2866
2930
|
};
|
|
2867
2931
|
//#endregion
|
|
2868
2932
|
//#region src/client/CanvasWorkspace.tsx
|
|
@@ -2884,6 +2948,10 @@ window.__ModuleLoader__.load({
|
|
|
2884
2948
|
height: 150
|
|
2885
2949
|
};
|
|
2886
2950
|
const CONFIG_NODE_SIZE = {
|
|
2951
|
+
width: 320,
|
|
2952
|
+
height: 190
|
|
2953
|
+
};
|
|
2954
|
+
const LEGACY_CONFIG_NODE_SIZE = {
|
|
2887
2955
|
width: 240,
|
|
2888
2956
|
height: 96
|
|
2889
2957
|
};
|
|
@@ -2960,6 +3028,19 @@ window.__ModuleLoader__.load({
|
|
|
2960
3028
|
maxY: -Infinity
|
|
2961
3029
|
});
|
|
2962
3030
|
}
|
|
3031
|
+
/** Enlarge config nodes still stored at the pre-expansion default so the
|
|
3032
|
+
* roomier layout applies to existing canvases too. */
|
|
3033
|
+
function normalizeConfigNodeSizes(document) {
|
|
3034
|
+
const nodes = document.nodes.map((node) => node.type === "config" && node.width === LEGACY_CONFIG_NODE_SIZE.width && node.height === LEGACY_CONFIG_NODE_SIZE.height ? {
|
|
3035
|
+
...node,
|
|
3036
|
+
width: CONFIG_NODE_SIZE.width,
|
|
3037
|
+
height: CONFIG_NODE_SIZE.height
|
|
3038
|
+
} : node);
|
|
3039
|
+
return nodes === document.nodes ? document : {
|
|
3040
|
+
...document,
|
|
3041
|
+
nodes
|
|
3042
|
+
};
|
|
3043
|
+
}
|
|
2963
3044
|
function summaryOf(document) {
|
|
2964
3045
|
return {
|
|
2965
3046
|
id: document.id,
|
|
@@ -2991,10 +3072,10 @@ window.__ModuleLoader__.load({
|
|
|
2991
3072
|
y: node.y + node.height / 2
|
|
2992
3073
|
};
|
|
2993
3074
|
}
|
|
2994
|
-
function ToolbarIcon({ name }) {
|
|
3075
|
+
function ToolbarIcon({ name, size = 16 }) {
|
|
2995
3076
|
const common = {
|
|
2996
|
-
width:
|
|
2997
|
-
height:
|
|
3077
|
+
width: size,
|
|
3078
|
+
height: size,
|
|
2998
3079
|
viewBox: "0 0 16 16",
|
|
2999
3080
|
fill: "none",
|
|
3000
3081
|
stroke: "currentColor",
|
|
@@ -3065,11 +3146,17 @@ window.__ModuleLoader__.load({
|
|
|
3065
3146
|
});
|
|
3066
3147
|
if (name === "background") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
3067
3148
|
...common,
|
|
3068
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3149
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
3150
|
+
x: "2",
|
|
3151
|
+
y: "4.5",
|
|
3152
|
+
width: "10.5",
|
|
3153
|
+
height: "9",
|
|
3154
|
+
rx: "1.5"
|
|
3155
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M4.5 2h10a1.5 1.5 0 0 1 1.5 1.5V11M4.5 10.5l2.6-2.8 2.1 2.2 2.3-2.4 1.5 1.5" })]
|
|
3156
|
+
});
|
|
3157
|
+
if (name === "template") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
3158
|
+
...common,
|
|
3159
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M8 3.6C6.9 2.5 5 2 2.5 2v10.6c2.5 0 4.4.5 5.5 1.6 1.1-1.1 3-1.6 5.5-1.6V2C11 2 9.1 2.5 8 3.6zM8 3.6V14" })
|
|
3073
3160
|
});
|
|
3074
3161
|
if (name === "download") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
3075
3162
|
...common,
|
|
@@ -3111,7 +3198,12 @@ window.__ModuleLoader__.load({
|
|
|
3111
3198
|
title: props.label,
|
|
3112
3199
|
disabled: props.disabled,
|
|
3113
3200
|
onClick: props.onClick,
|
|
3114
|
-
|
|
3201
|
+
onMouseEnter: props.onMouseEnter,
|
|
3202
|
+
onMouseLeave: props.onMouseLeave,
|
|
3203
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
|
|
3204
|
+
name: props.name,
|
|
3205
|
+
size: props.size
|
|
3206
|
+
})
|
|
3115
3207
|
});
|
|
3116
3208
|
}
|
|
3117
3209
|
function CanvasWorkspace(props) {
|
|
@@ -3133,6 +3225,44 @@ window.__ModuleLoader__.load({
|
|
|
3133
3225
|
const [createMenu, setCreateMenu] = (0, react.useState)(null);
|
|
3134
3226
|
const [minimapOpen, setMinimapOpen] = (0, react.useState)(true);
|
|
3135
3227
|
const [pickerOpen, setPickerOpen] = (0, react.useState)(false);
|
|
3228
|
+
const [backgroundMenu, setBackgroundMenu] = (0, react.useState)(null);
|
|
3229
|
+
const [imageMenu, setImageMenu] = (0, react.useState)(null);
|
|
3230
|
+
const menuCloseTimer = (0, react.useRef)(null);
|
|
3231
|
+
const clearMenuCloseTimer = () => {
|
|
3232
|
+
if (menuCloseTimer.current !== null) {
|
|
3233
|
+
window.clearTimeout(menuCloseTimer.current);
|
|
3234
|
+
menuCloseTimer.current = null;
|
|
3235
|
+
}
|
|
3236
|
+
};
|
|
3237
|
+
const scheduleMenuClose = (0, react.useCallback)(() => {
|
|
3238
|
+
clearMenuCloseTimer();
|
|
3239
|
+
menuCloseTimer.current = window.setTimeout(() => {
|
|
3240
|
+
setBackgroundMenu(null);
|
|
3241
|
+
setImageMenu(null);
|
|
3242
|
+
}, 280);
|
|
3243
|
+
}, []);
|
|
3244
|
+
/** Open one dock menu anchored to its button (root-relative) and close the
|
|
3245
|
+
* other: the two menus are mutually exclusive. */
|
|
3246
|
+
const openDockMenu = (0, react.useCallback)((kind, button) => {
|
|
3247
|
+
clearMenuCloseTimer();
|
|
3248
|
+
const bounds = button.getBoundingClientRect();
|
|
3249
|
+
const rootRect = rootRef.current?.getBoundingClientRect();
|
|
3250
|
+
const screen = {
|
|
3251
|
+
x: bounds.left + bounds.width / 2 - (rootRect?.left ?? 0),
|
|
3252
|
+
y: bounds.top - (rootRect?.top ?? 0)
|
|
3253
|
+
};
|
|
3254
|
+
if (kind === "image") {
|
|
3255
|
+
setImageMenu(screen);
|
|
3256
|
+
setBackgroundMenu(null);
|
|
3257
|
+
} else {
|
|
3258
|
+
setBackgroundMenu(screen);
|
|
3259
|
+
setImageMenu(null);
|
|
3260
|
+
}
|
|
3261
|
+
}, []);
|
|
3262
|
+
const [libraryOpen, setLibraryOpen] = (0, react.useState)(false);
|
|
3263
|
+
const [pickerTab, setPickerTab] = (0, react.useState)("upload");
|
|
3264
|
+
const backgroundFileRef = (0, react.useRef)(null);
|
|
3265
|
+
const imageFileRef = (0, react.useRef)(null);
|
|
3136
3266
|
const [renamingTitle, setRenamingTitle] = (0, react.useState)(false);
|
|
3137
3267
|
const [confirmDeleteProject, setConfirmDeleteProject] = (0, react.useState)(false);
|
|
3138
3268
|
const [saveState, setSaveState] = (0, react.useState)("loading");
|
|
@@ -3144,6 +3274,7 @@ window.__ModuleLoader__.load({
|
|
|
3144
3274
|
const [composerQuality, setComposerQuality] = (0, react.useState)("auto");
|
|
3145
3275
|
const [composerCount, setComposerCount] = (0, react.useState)(1);
|
|
3146
3276
|
const [composerBusy, setComposerBusy] = (0, react.useState)(false);
|
|
3277
|
+
const rootRef = (0, react.useRef)(null);
|
|
3147
3278
|
const viewportRef = (0, react.useRef)(null);
|
|
3148
3279
|
const documentRef = (0, react.useRef)(null);
|
|
3149
3280
|
const selectedIdsRef = (0, react.useRef)(selectedIds);
|
|
@@ -3156,6 +3287,8 @@ window.__ModuleLoader__.load({
|
|
|
3156
3287
|
const syncedRef = (0, react.useRef)("");
|
|
3157
3288
|
const processedTasks = (0, react.useRef)(/* @__PURE__ */ new Set());
|
|
3158
3289
|
const processedImport = (0, react.useRef)("");
|
|
3290
|
+
const localTaskIds = (0, react.useRef)(/* @__PURE__ */ new Set());
|
|
3291
|
+
const mountedAtRef = (0, react.useRef)(Date.now());
|
|
3159
3292
|
const internalClipboard = (0, react.useRef)(null);
|
|
3160
3293
|
const pastRef = (0, react.useRef)([]);
|
|
3161
3294
|
const futureRef = (0, react.useRef)([]);
|
|
@@ -3447,10 +3580,20 @@ window.__ModuleLoader__.load({
|
|
|
3447
3580
|
setComposerBusy(true);
|
|
3448
3581
|
try {
|
|
3449
3582
|
let image;
|
|
3583
|
+
let images;
|
|
3450
3584
|
let refName;
|
|
3451
3585
|
if (baseAsset !== void 0) {
|
|
3452
3586
|
image = await assetToDataUrl(baseAsset);
|
|
3453
3587
|
refName = "canvas-reference.png";
|
|
3588
|
+
const extras = [];
|
|
3589
|
+
for (const reference of referenceImages.slice(1, 4)) {
|
|
3590
|
+
const asset = usableAsset(reference);
|
|
3591
|
+
if (asset === void 0) continue;
|
|
3592
|
+
try {
|
|
3593
|
+
extras.push(await assetToDataUrl(asset));
|
|
3594
|
+
} catch {}
|
|
3595
|
+
}
|
|
3596
|
+
if (extras.length > 0) images = extras;
|
|
3454
3597
|
}
|
|
3455
3598
|
const footprint = nodeSizeFromRatio(composerSize, IMAGE_NODE_SIZE);
|
|
3456
3599
|
const request = {
|
|
@@ -3466,6 +3609,7 @@ window.__ModuleLoader__.load({
|
|
|
3466
3609
|
image,
|
|
3467
3610
|
refName
|
|
3468
3611
|
},
|
|
3612
|
+
...images === void 0 ? {} : { images },
|
|
3469
3613
|
canvas: {
|
|
3470
3614
|
canvasId: current.id,
|
|
3471
3615
|
...target === null ? {} : {
|
|
@@ -3476,6 +3620,7 @@ window.__ModuleLoader__.load({
|
|
|
3476
3620
|
}
|
|
3477
3621
|
};
|
|
3478
3622
|
const task = await api.taskSubmit(request);
|
|
3623
|
+
localTaskIds.current.add(task.id);
|
|
3479
3624
|
mutate((previous) => {
|
|
3480
3625
|
const nodes = [...previous.nodes];
|
|
3481
3626
|
const connections = [...previous.connections];
|
|
@@ -3535,47 +3680,154 @@ window.__ModuleLoader__.load({
|
|
|
3535
3680
|
onOpenSettings,
|
|
3536
3681
|
upstreamNodes
|
|
3537
3682
|
]);
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3683
|
+
/** Re-run a failed image node's generation from its recorded prompt/model,
|
|
3684
|
+
* re-deriving the edit base from the connected source config node. */
|
|
3685
|
+
const retryGeneration = (0, react.useCallback)(async (node) => {
|
|
3686
|
+
const current = documentRef.current;
|
|
3687
|
+
if (current === null || !connected) {
|
|
3688
|
+
setError(tt("canvas.needApi"));
|
|
3689
|
+
onOpenSettings?.();
|
|
3690
|
+
return;
|
|
3691
|
+
}
|
|
3692
|
+
const metadata = nodeMetadata(node);
|
|
3693
|
+
const prompt = (metadata.prompt ?? "").trim();
|
|
3694
|
+
if (prompt === "") {
|
|
3695
|
+
setError(tt("canvas.needPrompt"));
|
|
3696
|
+
return;
|
|
3697
|
+
}
|
|
3698
|
+
const model = imageModels.includes(metadata.model ?? "") ? metadata.model : imageModels[0] ?? "";
|
|
3699
|
+
if (model === "") {
|
|
3700
|
+
setError(tt("canvas.needModel"));
|
|
3701
|
+
return;
|
|
3702
|
+
}
|
|
3703
|
+
const sourceId = metadata.sourceNodeId;
|
|
3704
|
+
const references = sourceId === void 0 ? [] : upstreamNodes(current, sourceId).filter((item) => item.type === "image" && usableAsset(item) !== void 0);
|
|
3705
|
+
const baseAsset = references[0] !== void 0 ? usableAsset(references[0]) : void 0;
|
|
3706
|
+
try {
|
|
3707
|
+
let image;
|
|
3708
|
+
let images;
|
|
3709
|
+
let refName;
|
|
3710
|
+
if (baseAsset !== void 0) {
|
|
3711
|
+
image = await assetToDataUrl(baseAsset);
|
|
3712
|
+
refName = "canvas-reference.png";
|
|
3713
|
+
const extras = [];
|
|
3714
|
+
for (const reference of references.slice(1, 4)) {
|
|
3715
|
+
const asset = usableAsset(reference);
|
|
3716
|
+
if (asset === void 0) continue;
|
|
3717
|
+
try {
|
|
3718
|
+
extras.push(await assetToDataUrl(asset));
|
|
3719
|
+
} catch {}
|
|
3720
|
+
}
|
|
3721
|
+
if (extras.length > 0) images = extras;
|
|
3722
|
+
}
|
|
3723
|
+
const request = {
|
|
3724
|
+
mode: image === void 0 ? "text" : "edit",
|
|
3725
|
+
model,
|
|
3726
|
+
prompt,
|
|
3727
|
+
size: metadata.size ?? "auto",
|
|
3728
|
+
quality: metadata.quality ?? "auto",
|
|
3729
|
+
n: 1,
|
|
3730
|
+
detail: "",
|
|
3731
|
+
...defaultChannelId === void 0 ? {} : { channelId: defaultChannelId },
|
|
3732
|
+
...image === void 0 ? {} : {
|
|
3733
|
+
image,
|
|
3734
|
+
refName
|
|
3735
|
+
},
|
|
3736
|
+
...images === void 0 ? {} : { images },
|
|
3737
|
+
canvas: {
|
|
3738
|
+
canvasId: current.id,
|
|
3739
|
+
sourceNodeId: references[0]?.id ?? sourceId,
|
|
3740
|
+
parentNodeId: node.id,
|
|
3741
|
+
placement: "right"
|
|
3742
|
+
}
|
|
3743
|
+
};
|
|
3744
|
+
const task = await api.taskSubmit(request);
|
|
3745
|
+
localTaskIds.current.add(task.id);
|
|
3746
|
+
patchNode(node.id, {
|
|
3747
|
+
status: "generating",
|
|
3748
|
+
error: void 0,
|
|
3749
|
+
taskId: task.id
|
|
3750
|
+
});
|
|
3751
|
+
setError(null);
|
|
3752
|
+
} catch (caught) {
|
|
3753
|
+
setError(caught instanceof Error ? caught.message : String(caught));
|
|
3754
|
+
}
|
|
3755
|
+
}, [
|
|
3756
|
+
api,
|
|
3757
|
+
connected,
|
|
3758
|
+
defaultChannelId,
|
|
3759
|
+
imageModels,
|
|
3760
|
+
onOpenSettings,
|
|
3761
|
+
patchNode,
|
|
3762
|
+
upstreamNodes
|
|
3763
|
+
]);
|
|
3764
|
+
(0, react.useEffect)(() => {
|
|
3765
|
+
if (document === null) return;
|
|
3766
|
+
if (!(tasks.length > 0 || Date.now() - mountedAtRef.current > 8e3)) return;
|
|
3767
|
+
const feedIds = new Set(tasks.map((task) => task.id));
|
|
3768
|
+
if (document.nodes.filter((node) => {
|
|
3769
|
+
if (node.type !== "image" || nodeMetadata(node).status !== "generating") return false;
|
|
3770
|
+
const taskId = nodeMetadata(node).taskId;
|
|
3771
|
+
return taskId !== void 0 && !feedIds.has(taskId) && !localTaskIds.current.has(taskId);
|
|
3772
|
+
}).length === 0) return;
|
|
3773
|
+
updateNodes((nodes) => nodes.map((node) => {
|
|
3774
|
+
const taskId = node.type === "image" ? nodeMetadata(node).taskId : void 0;
|
|
3775
|
+
if (node.type !== "image" || nodeMetadata(node).status !== "generating" || taskId === void 0 || feedIds.has(taskId) || localTaskIds.current.has(taskId)) return node;
|
|
3776
|
+
return {
|
|
3777
|
+
...node,
|
|
3778
|
+
metadata: {
|
|
3779
|
+
...nodeMetadata(node),
|
|
3780
|
+
status: "error",
|
|
3781
|
+
error: tt("canvas.taskLost")
|
|
3782
|
+
}
|
|
3783
|
+
};
|
|
3784
|
+
}));
|
|
3785
|
+
}, [
|
|
3786
|
+
document,
|
|
3787
|
+
tasks,
|
|
3788
|
+
updateNodes
|
|
3789
|
+
]);
|
|
3790
|
+
(0, react.useEffect)(() => {
|
|
3791
|
+
if (document === null) return;
|
|
3792
|
+
const canvasTasks = tasks.filter((task) => task.request.canvas?.canvasId === document.id);
|
|
3793
|
+
for (const task of canvasTasks) {
|
|
3794
|
+
if (task.status !== "completed" && task.status !== "failed" && task.status !== "cancelled") continue;
|
|
3795
|
+
if (processedTasks.current.has(task.id)) continue;
|
|
3796
|
+
const targets = document.nodes.filter((node) => node.type === "image" && nodeMetadata(node).taskId === task.id && nodeMetadata(node).status === "generating");
|
|
3797
|
+
if (targets.length === 0) continue;
|
|
3798
|
+
processedTasks.current.add(task.id);
|
|
3799
|
+
const sourceId = nodeMetadata(targets[0]).sourceNodeId;
|
|
3800
|
+
const fail = (message) => {
|
|
3801
|
+
updateNodes((nodes) => nodes.map((node) => node.type === "image" && nodeMetadata(node).taskId === task.id && nodeMetadata(node).status === "generating" ? {
|
|
3802
|
+
...node,
|
|
3803
|
+
metadata: {
|
|
3804
|
+
...nodeMetadata(node),
|
|
3805
|
+
status: "error",
|
|
3806
|
+
error: message
|
|
3807
|
+
}
|
|
3808
|
+
} : node));
|
|
3809
|
+
};
|
|
3810
|
+
if (task.status !== "completed" || task.result === void 0 || task.result.images.length === 0) {
|
|
3811
|
+
fail(task.error ?? tt("canvas.generateFailed"));
|
|
3812
|
+
continue;
|
|
3813
|
+
}
|
|
3814
|
+
(async () => {
|
|
3815
|
+
const assets = [];
|
|
3816
|
+
for (const image of task.result.images) {
|
|
3817
|
+
const dataUrl = imageDataUrl(image);
|
|
3818
|
+
const dimensions = await readImageSize(dataUrl);
|
|
3819
|
+
assets.push(await api.canvasUpload(dataUrl, dimensions.width, dimensions.height, {
|
|
3820
|
+
origin: "generated",
|
|
3821
|
+
originId: task.id
|
|
3822
|
+
}));
|
|
3823
|
+
}
|
|
3824
|
+
updateDocument((previous) => {
|
|
3825
|
+
const ordered = previous.nodes.filter((node) => node.type === "image" && nodeMetadata(node).taskId === task.id && nodeMetadata(node).status === "generating");
|
|
3826
|
+
if (ordered.length === 0) return previous;
|
|
3827
|
+
const last = ordered[ordered.length - 1];
|
|
3828
|
+
const nodes = previous.nodes.map((node) => {
|
|
3829
|
+
const index = ordered.indexOf(node);
|
|
3830
|
+
if (index < 0) return node;
|
|
3579
3831
|
const asset = assets[index];
|
|
3580
3832
|
return asset === void 0 ? {
|
|
3581
3833
|
...node,
|
|
@@ -3698,7 +3950,7 @@ window.__ModuleLoader__.load({
|
|
|
3698
3950
|
const first = list[0] === void 0 ? await api.canvasCreate(tt("canvas.untitled")) : await api.canvasRead(list[0].id);
|
|
3699
3951
|
if (disposed) return;
|
|
3700
3952
|
setProjects(list[0] === void 0 ? [summaryOf(first)] : list);
|
|
3701
|
-
setDocument(first);
|
|
3953
|
+
setDocument(normalizeConfigNodeSizes(first));
|
|
3702
3954
|
syncedRef.current = JSON.stringify(first);
|
|
3703
3955
|
setSaveState("saved");
|
|
3704
3956
|
}).catch((caught) => {
|
|
@@ -3773,6 +4025,8 @@ window.__ModuleLoader__.load({
|
|
|
3773
4025
|
if (event.key === "Escape") {
|
|
3774
4026
|
setContextMenu(null);
|
|
3775
4027
|
setCreateMenu(null);
|
|
4028
|
+
setBackgroundMenu(null);
|
|
4029
|
+
setImageMenu(null);
|
|
3776
4030
|
if (!isEditingTarget(event.target)) {
|
|
3777
4031
|
setSelectedIds(/* @__PURE__ */ new Set());
|
|
3778
4032
|
setSelectedConnectionId(null);
|
|
@@ -3877,6 +4131,10 @@ window.__ModuleLoader__.load({
|
|
|
3877
4131
|
const target = event.target instanceof Element ? event.target : null;
|
|
3878
4132
|
setContextMenu(null);
|
|
3879
4133
|
setCreateMenu(null);
|
|
4134
|
+
if (!target?.closest("[data-canvas-no-zoom]")) {
|
|
4135
|
+
setBackgroundMenu(null);
|
|
4136
|
+
setImageMenu(null);
|
|
4137
|
+
}
|
|
3880
4138
|
const isBackground = target?.closest("[data-node-id],[data-connection-hit]") === null;
|
|
3881
4139
|
if (event.button === 1 || event.button === 0 && (tool === "pan" || temporaryPanTool) && isBackground) {
|
|
3882
4140
|
event.preventDefault();
|
|
@@ -4231,7 +4489,7 @@ window.__ModuleLoader__.load({
|
|
|
4231
4489
|
const selectProject = (0, react.useCallback)(async (id) => {
|
|
4232
4490
|
try {
|
|
4233
4491
|
const next = await api.canvasRead(id);
|
|
4234
|
-
setDocument(next);
|
|
4492
|
+
setDocument(normalizeConfigNodeSizes(next));
|
|
4235
4493
|
setSelectedIds(/* @__PURE__ */ new Set());
|
|
4236
4494
|
setSelectedConnectionId(null);
|
|
4237
4495
|
syncedRef.current = JSON.stringify(next);
|
|
@@ -4278,12 +4536,80 @@ window.__ModuleLoader__.load({
|
|
|
4278
4536
|
}, [document, selectedIds]);
|
|
4279
4537
|
const cursorClass = tool === "pan" || temporaryPanTool ? canvas_workspace_module_css_default.panCursor : canvas_workspace_module_css_default.selectCursor;
|
|
4280
4538
|
const backgroundMode = document?.background ?? "dots";
|
|
4281
|
-
const
|
|
4539
|
+
const setBackgroundMode = (0, react.useCallback)((mode) => {
|
|
4540
|
+
mutate((previous) => ({
|
|
4541
|
+
...previous,
|
|
4542
|
+
background: mode,
|
|
4543
|
+
...mode === "image" ? {} : { backgroundImage: void 0 }
|
|
4544
|
+
}));
|
|
4545
|
+
setBackgroundMenu(null);
|
|
4546
|
+
}, [mutate]);
|
|
4547
|
+
const uploadBackgroundImage = (0, react.useCallback)(async (file) => {
|
|
4548
|
+
try {
|
|
4549
|
+
const dataUrl = await new Promise((resolve, reject) => {
|
|
4550
|
+
const reader = new FileReader();
|
|
4551
|
+
reader.onload = () => resolve(String(reader.result));
|
|
4552
|
+
reader.onerror = () => reject(/* @__PURE__ */ new Error("读取图片失败"));
|
|
4553
|
+
reader.readAsDataURL(file);
|
|
4554
|
+
});
|
|
4555
|
+
const dimensions = await readImageSize(dataUrl);
|
|
4556
|
+
const asset = await api.canvasUpload(dataUrl, dimensions.width, dimensions.height, {
|
|
4557
|
+
origin: "upload",
|
|
4558
|
+
originId: "canvas-background"
|
|
4559
|
+
});
|
|
4560
|
+
mutate((previous) => ({
|
|
4561
|
+
...previous,
|
|
4562
|
+
background: "image",
|
|
4563
|
+
backgroundImage: asset.url
|
|
4564
|
+
}));
|
|
4565
|
+
setBackgroundMenu(null);
|
|
4566
|
+
setError(null);
|
|
4567
|
+
} catch (caught) {
|
|
4568
|
+
setError(caught instanceof Error ? caught.message : String(caught));
|
|
4569
|
+
}
|
|
4570
|
+
}, [api, mutate]);
|
|
4571
|
+
const removeBackgroundImage = (0, react.useCallback)(() => {
|
|
4282
4572
|
mutate((previous) => ({
|
|
4283
4573
|
...previous,
|
|
4284
|
-
background:
|
|
4574
|
+
background: "dots",
|
|
4575
|
+
backgroundImage: void 0
|
|
4285
4576
|
}));
|
|
4577
|
+
setBackgroundMenu(null);
|
|
4286
4578
|
}, [mutate]);
|
|
4579
|
+
const applyTemplate = (0, react.useCallback)((prompt) => {
|
|
4580
|
+
const center = canvasCenter();
|
|
4581
|
+
const config = createConfigNode(center);
|
|
4582
|
+
const placed = {
|
|
4583
|
+
...createTextNode(),
|
|
4584
|
+
x: Math.round(config.x - TEXT_NODE_SIZE.width - 80),
|
|
4585
|
+
y: Math.round(config.y + (config.height - TEXT_NODE_SIZE.height) / 2),
|
|
4586
|
+
metadata: {
|
|
4587
|
+
text: prompt,
|
|
4588
|
+
fontSize: 14
|
|
4589
|
+
}
|
|
4590
|
+
};
|
|
4591
|
+
mutate((previous) => ({
|
|
4592
|
+
...previous,
|
|
4593
|
+
nodes: [
|
|
4594
|
+
...previous.nodes,
|
|
4595
|
+
placed,
|
|
4596
|
+
config
|
|
4597
|
+
],
|
|
4598
|
+
connections: [...previous.connections, {
|
|
4599
|
+
id: newId("edge"),
|
|
4600
|
+
fromNodeId: placed.id,
|
|
4601
|
+
toNodeId: config.id
|
|
4602
|
+
}]
|
|
4603
|
+
}));
|
|
4604
|
+
setSelectedIds(/* @__PURE__ */ new Set([config.id]));
|
|
4605
|
+
setSelectedConnectionId(null);
|
|
4606
|
+
setLibraryOpen(false);
|
|
4607
|
+
}, [
|
|
4608
|
+
canvasCenter,
|
|
4609
|
+
createConfigNode,
|
|
4610
|
+
createTextNode,
|
|
4611
|
+
mutate
|
|
4612
|
+
]);
|
|
4287
4613
|
const gridSize = GRID_SIZE * (document?.viewport.k ?? 1);
|
|
4288
4614
|
const gridOffsetX = (document?.viewport.x ?? 0) % gridSize;
|
|
4289
4615
|
const gridOffsetY = (document?.viewport.y ?? 0) % gridSize;
|
|
@@ -4351,9 +4677,25 @@ window.__ModuleLoader__.load({
|
|
|
4351
4677
|
placeholder: tt("canvas.textPlaceholder"),
|
|
4352
4678
|
onPointerDown: (event) => event.stopPropagation(),
|
|
4353
4679
|
onChange: (event) => patchNode(node.id, { text: event.target.value })
|
|
4354
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.
|
|
4680
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4355
4681
|
className: canvas_workspace_module_css_default.nodeBody,
|
|
4356
|
-
children:
|
|
4682
|
+
children: [hasImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4683
|
+
"aria-hidden": "true",
|
|
4684
|
+
children: [metadata.model !== void 0 && metadata.model !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4685
|
+
className: `${canvas_workspace_module_css_default.imageInfo} ${canvas_workspace_module_css_default.imageInfoLeft}`,
|
|
4686
|
+
children: metadata.model
|
|
4687
|
+
}) : asset.origin === "gallery" || asset.origin === "history" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4688
|
+
className: `${canvas_workspace_module_css_default.imageInfo} ${canvas_workspace_module_css_default.imageInfoLeft}`,
|
|
4689
|
+
children: asset.origin === "gallery" ? tt("canvas.fromGallery") : tt("canvas.fromHistory")
|
|
4690
|
+
}) : null, asset !== void 0 && asset.width > 1 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
4691
|
+
className: `${canvas_workspace_module_css_default.imageInfo} ${canvas_workspace_module_css_default.imageInfoRight}`,
|
|
4692
|
+
children: [
|
|
4693
|
+
asset.width,
|
|
4694
|
+
"×",
|
|
4695
|
+
asset.height
|
|
4696
|
+
]
|
|
4697
|
+
}) : null]
|
|
4698
|
+
}) : null, isGenerating ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4357
4699
|
className: canvas_workspace_module_css_default.nodeState,
|
|
4358
4700
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4359
4701
|
className: canvas_workspace_module_css_default.spinner,
|
|
@@ -4363,11 +4705,10 @@ window.__ModuleLoader__.load({
|
|
|
4363
4705
|
className: canvas_workspace_module_css_default.nodeStateError,
|
|
4364
4706
|
children: [metadata.error ?? tt("canvas.generateFailed"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
4365
4707
|
type: "button",
|
|
4366
|
-
onClick: () =>
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
children: tt("canvas.dismiss")
|
|
4708
|
+
onClick: () => {
|
|
4709
|
+
retryGeneration(node);
|
|
4710
|
+
},
|
|
4711
|
+
children: tt("canvas.retry")
|
|
4371
4712
|
})]
|
|
4372
4713
|
}) : hasImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
4373
4714
|
src: asset.url,
|
|
@@ -4377,9 +4718,9 @@ window.__ModuleLoader__.load({
|
|
|
4377
4718
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
4378
4719
|
type: "button",
|
|
4379
4720
|
className: canvas_workspace_module_css_default.nodeEmpty,
|
|
4380
|
-
onClick: () =>
|
|
4721
|
+
onClick: () => imageFileRef.current?.click(),
|
|
4381
4722
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, { name: "image" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: tt("canvas.emptyImageNode") })]
|
|
4382
|
-
})
|
|
4723
|
+
})]
|
|
4383
4724
|
}),
|
|
4384
4725
|
isSelected ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4385
4726
|
className: canvas_workspace_module_css_default.resizeHandle,
|
|
@@ -4483,10 +4824,11 @@ window.__ModuleLoader__.load({
|
|
|
4483
4824
|
if (!composerVisible || document === null || composerTarget === null) return null;
|
|
4484
4825
|
const linkedCount = composerReferenceCount + composerTextCount;
|
|
4485
4826
|
const k = document.viewport.k;
|
|
4486
|
-
const
|
|
4827
|
+
const topOffset = viewportRef.current?.offsetTop ?? 0;
|
|
4828
|
+
const centerX = topOffset * 0 + document.viewport.x + (composerTarget.x + composerTarget.width / 2) * k;
|
|
4487
4829
|
const clampedX = Math.min(Math.max(centerX, 292), Math.max(292, viewportSize.width - 292));
|
|
4488
|
-
const belowY = document.viewport.y + (composerTarget.y + composerTarget.height) * k + 14;
|
|
4489
|
-
const top = belowY > viewportSize.height - 170 ? Math.max(64, document.viewport.y + composerTarget.y * k - 158) : belowY;
|
|
4830
|
+
const belowY = topOffset + document.viewport.y + (composerTarget.y + composerTarget.height) * k + 14;
|
|
4831
|
+
const top = belowY > viewportSize.height + topOffset - 170 ? Math.max(64, topOffset + document.viewport.y + composerTarget.y * k - 158) : belowY;
|
|
4490
4832
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4491
4833
|
className: canvas_workspace_module_css_default.composer,
|
|
4492
4834
|
"data-canvas-no-zoom": "",
|
|
@@ -4840,6 +5182,7 @@ window.__ModuleLoader__.load({
|
|
|
4840
5182
|
};
|
|
4841
5183
|
})();
|
|
4842
5184
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
5185
|
+
ref: rootRef,
|
|
4843
5186
|
className: canvas_workspace_module_css_default.root,
|
|
4844
5187
|
"data-canvas-workspace": "",
|
|
4845
5188
|
children: [
|
|
@@ -4900,23 +5243,6 @@ window.__ModuleLoader__.load({
|
|
|
4900
5243
|
children: document?.title ?? ""
|
|
4901
5244
|
}),
|
|
4902
5245
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.topBarSpacer }),
|
|
4903
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
4904
|
-
name: "background",
|
|
4905
|
-
label: tt("canvas.background"),
|
|
4906
|
-
onClick: cycleBackground
|
|
4907
|
-
}),
|
|
4908
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
4909
|
-
name: "undo",
|
|
4910
|
-
label: tt("canvas.undo"),
|
|
4911
|
-
disabled: pastRef.current.length === 0,
|
|
4912
|
-
onClick: undo
|
|
4913
|
-
}),
|
|
4914
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
4915
|
-
name: "redo",
|
|
4916
|
-
label: tt("canvas.redo"),
|
|
4917
|
-
disabled: futureRef.current.length === 0,
|
|
4918
|
-
onClick: redo
|
|
4919
|
-
}),
|
|
4920
5246
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4921
5247
|
className: canvas_workspace_module_css_default.saveState,
|
|
4922
5248
|
"data-state": saveState,
|
|
@@ -4957,12 +5283,17 @@ window.__ModuleLoader__.load({
|
|
|
4957
5283
|
children: [
|
|
4958
5284
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4959
5285
|
className: canvas_workspace_module_css_default.grid,
|
|
4960
|
-
style: {
|
|
5286
|
+
style: backgroundMode === "image" && document?.backgroundImage ? {
|
|
5287
|
+
backgroundImage: `url(${document.backgroundImage})`,
|
|
5288
|
+
backgroundSize: "cover",
|
|
5289
|
+
backgroundPosition: "center"
|
|
5290
|
+
} : {
|
|
4961
5291
|
backgroundSize: `${gridSize}px ${gridSize}px`,
|
|
4962
5292
|
backgroundPosition: `${gridOffsetX}px ${gridOffsetY}px`
|
|
4963
5293
|
},
|
|
4964
5294
|
"data-mode": backgroundMode,
|
|
4965
|
-
"aria-hidden": "true"
|
|
5295
|
+
"aria-hidden": "true",
|
|
5296
|
+
children: backgroundMode === "image" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: canvas_workspace_module_css_default.gridScrim }) : null
|
|
4966
5297
|
}),
|
|
4967
5298
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4968
5299
|
className: canvas_workspace_module_css_default.world,
|
|
@@ -4980,15 +5311,28 @@ window.__ModuleLoader__.load({
|
|
|
4980
5311
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4981
5312
|
className: `${canvas_workspace_module_css_default.dock} ${cursorClass}`,
|
|
4982
5313
|
"data-canvas-no-zoom": "",
|
|
5314
|
+
onPointerMove: (event) => {
|
|
5315
|
+
const buttons = [...event.currentTarget.querySelectorAll(".iconButton")];
|
|
5316
|
+
for (const button of buttons) {
|
|
5317
|
+
const rect = button.getBoundingClientRect();
|
|
5318
|
+
const distance = Math.abs(event.clientX - (rect.left + rect.width / 2)) / 40;
|
|
5319
|
+
button.style.setProperty("--dock-lift", `${Math.max(0, 4 - distance * 1.5)}px`);
|
|
5320
|
+
}
|
|
5321
|
+
},
|
|
5322
|
+
onPointerLeave: (event) => {
|
|
5323
|
+
for (const button of event.currentTarget.querySelectorAll(".iconButton")) button.style.removeProperty("--dock-lift");
|
|
5324
|
+
},
|
|
4983
5325
|
children: [
|
|
4984
5326
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
4985
5327
|
name: "select",
|
|
5328
|
+
size: 18,
|
|
4986
5329
|
label: tt("canvas.toolSelect"),
|
|
4987
5330
|
active: tool === "select",
|
|
4988
5331
|
onClick: () => setTool("select")
|
|
4989
5332
|
}),
|
|
4990
5333
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
4991
5334
|
name: "pan",
|
|
5335
|
+
size: 18,
|
|
4992
5336
|
label: tt("canvas.toolPan"),
|
|
4993
5337
|
active: tool === "pan",
|
|
4994
5338
|
onClick: () => setTool("pan")
|
|
@@ -4996,28 +5340,228 @@ window.__ModuleLoader__.load({
|
|
|
4996
5340
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.dockDivider }),
|
|
4997
5341
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
4998
5342
|
name: "image",
|
|
5343
|
+
size: 18,
|
|
4999
5344
|
label: tt("canvas.addImage"),
|
|
5000
|
-
|
|
5345
|
+
active: imageMenu !== null,
|
|
5346
|
+
onClick: (event) => openDockMenu("image", event.currentTarget),
|
|
5347
|
+
onMouseEnter: (event) => openDockMenu("image", event.currentTarget),
|
|
5348
|
+
onMouseLeave: scheduleMenuClose
|
|
5001
5349
|
}),
|
|
5002
5350
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5003
5351
|
name: "text",
|
|
5352
|
+
size: 18,
|
|
5004
5353
|
label: tt("canvas.addText"),
|
|
5005
5354
|
onClick: () => placeNewNode(createTextNode())
|
|
5006
5355
|
}),
|
|
5007
5356
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5008
5357
|
name: "sparkle",
|
|
5358
|
+
size: 18,
|
|
5009
5359
|
label: tt("canvas.addConfigNode"),
|
|
5010
5360
|
onClick: () => placeNewNode(createConfigNode())
|
|
5011
5361
|
}),
|
|
5362
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5363
|
+
name: "template",
|
|
5364
|
+
size: 18,
|
|
5365
|
+
label: tt("canvas.templateLibrary"),
|
|
5366
|
+
active: libraryOpen,
|
|
5367
|
+
onClick: () => setLibraryOpen((previous) => !previous)
|
|
5368
|
+
}),
|
|
5369
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.dockDivider }),
|
|
5370
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5371
|
+
name: "background",
|
|
5372
|
+
size: 18,
|
|
5373
|
+
label: tt("canvas.background"),
|
|
5374
|
+
active: backgroundMenu !== null,
|
|
5375
|
+
onClick: (event) => openDockMenu("background", event.currentTarget),
|
|
5376
|
+
onMouseEnter: (event) => openDockMenu("background", event.currentTarget),
|
|
5377
|
+
onMouseLeave: scheduleMenuClose
|
|
5378
|
+
}),
|
|
5379
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5380
|
+
name: "undo",
|
|
5381
|
+
size: 18,
|
|
5382
|
+
label: tt("canvas.undo"),
|
|
5383
|
+
disabled: pastRef.current.length === 0,
|
|
5384
|
+
onClick: undo
|
|
5385
|
+
}),
|
|
5386
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5387
|
+
name: "redo",
|
|
5388
|
+
size: 18,
|
|
5389
|
+
label: tt("canvas.redo"),
|
|
5390
|
+
disabled: futureRef.current.length === 0,
|
|
5391
|
+
onClick: redo
|
|
5392
|
+
}),
|
|
5012
5393
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.dockDivider }),
|
|
5013
5394
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
5014
5395
|
name: "trash",
|
|
5396
|
+
size: 18,
|
|
5015
5397
|
label: tt("canvas.delete"),
|
|
5016
5398
|
disabled: selectedIds.size === 0 && selectedConnectionId === null,
|
|
5017
5399
|
onClick: deleteSelection
|
|
5018
5400
|
})
|
|
5019
5401
|
]
|
|
5020
5402
|
}),
|
|
5403
|
+
imageMenu !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5404
|
+
className: canvas_workspace_module_css_default.backgroundMenu,
|
|
5405
|
+
style: {
|
|
5406
|
+
left: imageMenu.x,
|
|
5407
|
+
top: imageMenu.y - 10
|
|
5408
|
+
},
|
|
5409
|
+
"data-canvas-no-zoom": "",
|
|
5410
|
+
role: "menu",
|
|
5411
|
+
onMouseEnter: clearMenuCloseTimer,
|
|
5412
|
+
onMouseLeave: scheduleMenuClose,
|
|
5413
|
+
children: [
|
|
5414
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
5415
|
+
type: "button",
|
|
5416
|
+
role: "menuitem",
|
|
5417
|
+
onClick: () => {
|
|
5418
|
+
imageFileRef.current?.click();
|
|
5419
|
+
setImageMenu(null);
|
|
5420
|
+
},
|
|
5421
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
|
|
5422
|
+
name: "image",
|
|
5423
|
+
size: 16
|
|
5424
|
+
}), tt("canvas.imageMenuUpload")]
|
|
5425
|
+
}),
|
|
5426
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
5427
|
+
type: "button",
|
|
5428
|
+
role: "menuitem",
|
|
5429
|
+
onClick: () => {
|
|
5430
|
+
setPickerTab("gallery");
|
|
5431
|
+
setPickerOpen(true);
|
|
5432
|
+
setImageMenu(null);
|
|
5433
|
+
},
|
|
5434
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
|
|
5435
|
+
name: "template",
|
|
5436
|
+
size: 16
|
|
5437
|
+
}), tt("canvas.imageMenuAssets")]
|
|
5438
|
+
}),
|
|
5439
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
5440
|
+
type: "button",
|
|
5441
|
+
role: "menuitem",
|
|
5442
|
+
onClick: () => {
|
|
5443
|
+
setPickerTab("history");
|
|
5444
|
+
setPickerOpen(true);
|
|
5445
|
+
setImageMenu(null);
|
|
5446
|
+
},
|
|
5447
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
|
|
5448
|
+
name: "undo",
|
|
5449
|
+
size: 16
|
|
5450
|
+
}), tt("canvas.imageMenuHistory")]
|
|
5451
|
+
}),
|
|
5452
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
5453
|
+
type: "button",
|
|
5454
|
+
role: "menuitem",
|
|
5455
|
+
onClick: () => {
|
|
5456
|
+
setPickerTab("generate");
|
|
5457
|
+
setPickerOpen(true);
|
|
5458
|
+
setImageMenu(null);
|
|
5459
|
+
},
|
|
5460
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
|
|
5461
|
+
name: "sparkle",
|
|
5462
|
+
size: 16
|
|
5463
|
+
}), tt("canvas.imageMenuGenerate")]
|
|
5464
|
+
})
|
|
5465
|
+
]
|
|
5466
|
+
}) : null,
|
|
5467
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
5468
|
+
ref: imageFileRef,
|
|
5469
|
+
type: "file",
|
|
5470
|
+
accept: "image/png,image/jpeg,image/webp,image/gif",
|
|
5471
|
+
multiple: true,
|
|
5472
|
+
hidden: true,
|
|
5473
|
+
onChange: (event) => {
|
|
5474
|
+
const files = [...event.target.files ?? []].filter((file) => file.type.startsWith("image/"));
|
|
5475
|
+
event.target.value = "";
|
|
5476
|
+
if (files.length === 0) return;
|
|
5477
|
+
const world = canvasCenter();
|
|
5478
|
+
Promise.all(files.map(async (file) => {
|
|
5479
|
+
const dataUrl = await new Promise((resolve, reject) => {
|
|
5480
|
+
const reader = new FileReader();
|
|
5481
|
+
reader.onload = () => resolve(String(reader.result));
|
|
5482
|
+
reader.onerror = () => reject(/* @__PURE__ */ new Error("读取图片失败"));
|
|
5483
|
+
reader.readAsDataURL(file);
|
|
5484
|
+
});
|
|
5485
|
+
const dimensions = await readImageSize(dataUrl);
|
|
5486
|
+
return api.canvasUpload(dataUrl, dimensions.width, dimensions.height, {
|
|
5487
|
+
origin: "upload",
|
|
5488
|
+
originId: file.name
|
|
5489
|
+
});
|
|
5490
|
+
})).then((assets) => {
|
|
5491
|
+
const current = documentRef.current;
|
|
5492
|
+
const selectedId = selectedIdsRef.current.size === 1 ? [...selectedIdsRef.current][0] : void 0;
|
|
5493
|
+
const selectedNode = current?.nodes.find((node) => node.id === selectedId);
|
|
5494
|
+
if (selectedNode?.type === "image" && usableAsset(selectedNode) === void 0 && assets[0] !== void 0) {
|
|
5495
|
+
mutate((previous) => ({
|
|
5496
|
+
...previous,
|
|
5497
|
+
nodes: previous.nodes.map((node) => node.id === selectedNode.id ? {
|
|
5498
|
+
...node,
|
|
5499
|
+
width: sizeForAsset(assets[0]).width,
|
|
5500
|
+
height: sizeForAsset(assets[0]).height,
|
|
5501
|
+
metadata: {
|
|
5502
|
+
...nodeMetadata(node),
|
|
5503
|
+
asset: assets[0],
|
|
5504
|
+
status: "success",
|
|
5505
|
+
error: void 0
|
|
5506
|
+
}
|
|
5507
|
+
} : node)
|
|
5508
|
+
}));
|
|
5509
|
+
if (assets.length > 1) addAssets(assets.slice(1), world);
|
|
5510
|
+
} else addAssets(assets, world);
|
|
5511
|
+
}).catch((caught) => setError(caught instanceof Error ? caught.message : String(caught)));
|
|
5512
|
+
}
|
|
5513
|
+
}),
|
|
5514
|
+
backgroundMenu !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5515
|
+
className: canvas_workspace_module_css_default.backgroundMenu,
|
|
5516
|
+
style: {
|
|
5517
|
+
left: backgroundMenu.x,
|
|
5518
|
+
top: backgroundMenu.y - 10
|
|
5519
|
+
},
|
|
5520
|
+
"data-canvas-no-zoom": "",
|
|
5521
|
+
role: "menu",
|
|
5522
|
+
onMouseEnter: clearMenuCloseTimer,
|
|
5523
|
+
onMouseLeave: scheduleMenuClose,
|
|
5524
|
+
children: [
|
|
5525
|
+
[
|
|
5526
|
+
["dots", tt("canvas.backgroundDots")],
|
|
5527
|
+
["lines", tt("canvas.backgroundLines")],
|
|
5528
|
+
["diagonal", tt("canvas.backgroundDiagonal")],
|
|
5529
|
+
["checker", tt("canvas.backgroundChecker")],
|
|
5530
|
+
["blank", tt("canvas.backgroundBlank")]
|
|
5531
|
+
].map(([mode, label]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
5532
|
+
type: "button",
|
|
5533
|
+
role: "menuitem",
|
|
5534
|
+
"data-active": backgroundMode === mode ? "" : void 0,
|
|
5535
|
+
onClick: () => setBackgroundMode(mode),
|
|
5536
|
+
children: label
|
|
5537
|
+
}, mode)),
|
|
5538
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.backgroundMenuDivider }),
|
|
5539
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
5540
|
+
type: "button",
|
|
5541
|
+
role: "menuitem",
|
|
5542
|
+
"data-active": backgroundMode === "image" ? "" : void 0,
|
|
5543
|
+
onClick: () => backgroundFileRef.current?.click(),
|
|
5544
|
+
children: tt("canvas.backgroundUpload")
|
|
5545
|
+
}),
|
|
5546
|
+
backgroundMode === "image" && document?.backgroundImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
5547
|
+
type: "button",
|
|
5548
|
+
role: "menuitem",
|
|
5549
|
+
onClick: removeBackgroundImage,
|
|
5550
|
+
children: tt("canvas.backgroundRemove")
|
|
5551
|
+
}) : null,
|
|
5552
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
5553
|
+
ref: backgroundFileRef,
|
|
5554
|
+
type: "file",
|
|
5555
|
+
accept: "image/png,image/jpeg,image/webp,image/gif",
|
|
5556
|
+
hidden: true,
|
|
5557
|
+
onChange: (event) => {
|
|
5558
|
+
const file = event.target.files?.[0];
|
|
5559
|
+
if (file !== void 0) uploadBackgroundImage(file);
|
|
5560
|
+
event.target.value = "";
|
|
5561
|
+
}
|
|
5562
|
+
})
|
|
5563
|
+
]
|
|
5564
|
+
}) : null,
|
|
5021
5565
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5022
5566
|
className: canvas_workspace_module_css_default.zoomDock,
|
|
5023
5567
|
"data-canvas-no-zoom": "",
|
|
@@ -5051,6 +5595,11 @@ window.__ModuleLoader__.load({
|
|
|
5051
5595
|
minimapOpen ? renderMinimap() : null,
|
|
5052
5596
|
renderComposer(),
|
|
5053
5597
|
renderContextMenu(),
|
|
5598
|
+
libraryOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TemplateLibrary, {
|
|
5599
|
+
api,
|
|
5600
|
+
onClose: () => setLibraryOpen(false),
|
|
5601
|
+
onUse: applyTemplate
|
|
5602
|
+
}) : null,
|
|
5054
5603
|
error !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5055
5604
|
className: canvas_workspace_module_css_default.errorToast,
|
|
5056
5605
|
role: "status",
|
|
@@ -5070,6 +5619,7 @@ window.__ModuleLoader__.load({
|
|
|
5070
5619
|
defaultChannelId,
|
|
5071
5620
|
canvasId: document?.id ?? "",
|
|
5072
5621
|
connected,
|
|
5622
|
+
initialTab: pickerTab,
|
|
5073
5623
|
onClose: () => setPickerOpen(false),
|
|
5074
5624
|
onAssets: (assets) => {
|
|
5075
5625
|
addAssets(assets);
|
|
@@ -5106,7 +5656,7 @@ window.__ModuleLoader__.load({
|
|
|
5106
5656
|
}
|
|
5107
5657
|
function ImagePicker(props) {
|
|
5108
5658
|
const { api, history, gallery, imageModels, defaultChannelId, canvasId, connected, onClose, onAssets } = props;
|
|
5109
|
-
const [tab, setTab] = (0, react.useState)("upload");
|
|
5659
|
+
const [tab, setTab] = (0, react.useState)(props.initialTab ?? "upload");
|
|
5110
5660
|
const [selected, setSelected] = (0, react.useState)([]);
|
|
5111
5661
|
const [dimensions, setDimensions] = (0, react.useState)({});
|
|
5112
5662
|
const [prompt, setPrompt] = (0, react.useState)("");
|
|
@@ -5771,7 +6321,7 @@ window.__ModuleLoader__.load({
|
|
|
5771
6321
|
const CHAT_IMAGE_EVENT = "dsh-imagegen:chat-images";
|
|
5772
6322
|
//#endregion
|
|
5773
6323
|
//#region \0dsh-css:E:\dsh-plugin\src\client\panel.module.css.mjs
|
|
5774
|
-
const css$2 = "[data-pane=conversation],[class*=centerCol]{min-width:0;min-height:0;position:relative}[data-dsh-imagegen-view]{z-index:60;background:var(--dsw-alias-bg-base);grid-area:1/1;min-width:0;min-height:0;display:none;position:relative}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0, 1fr) 8px minmax(320px, clamp(320px, var(--dsh-imagegen-chat-width,36%), 70%));background:var(--dsw-alias-border-l1);grid-template-rows:minmax(0,1fr);gap:1px;overflow:hidden;display:grid!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-view]{display:block}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{background:var(--dsw-alias-bg-base);grid-area:1/3;align-items:stretch;width:auto;min-width:0;min-height:0;overflow:hidden;display:flex!important}html[data-dsh-imagegen-active] [data-slot=conversation]>[data-phase]{flex:auto;align-self:stretch;width:100%;min-width:0;max-width:none}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-chat-resizer]{grid-area:1/2}.Yvqh9W_chatResizer{z-index:70;width:8px;min-width:8px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-border-l1);cursor:col-resize;touch-action:none;justify-content:center;align-items:center;display:none;position:relative}.Yvqh9W_chatResizer:before{content:\"\";opacity:.55;background:currentColor;border-radius:3px;width:3px;height:36px}.Yvqh9W_chatResizer:hover,.Yvqh9W_chatResizer:focus-visible{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);outline:none}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:flex!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active] [data-dsh-imagegen-sidebar-root]>:not([data-dsh-imagegen-session-tabs]):not([class*=logoRow]):not([class*=regionArea]):not([class*=footArea]){display:none!important}@media (width<=760px){html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-rows:minmax(0,1fr) minmax(340px,.9fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{grid-area:2/1}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:none!important}}.Yvqh9W_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.Yvqh9W_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.Yvqh9W_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.Yvqh9W_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_entryLabel{text-overflow:ellipsis;overflow:hidden}.Yvqh9W_sessionTabs{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px;width:100%;min-width:0;padding:3px;display:grid}.Yvqh9W_sessionTab{min-width:0;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;display:inline-flex}[data-sidebar-collapsed] .Yvqh9W_sessionTabs{background:0 0;border:none;border-radius:0;flex-direction:column;gap:6px;width:auto;padding:0;display:flex}[data-sidebar-collapsed] .Yvqh9W_sessionTab{border-radius:9px;width:34px;height:34px;padding:0;font-size:0}[data-sidebar-collapsed] .Yvqh9W_sessionTabLabel{display:none}.Yvqh9W_sessionTab:hover,.Yvqh9W_sessionTab[data-active]{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-sidebar-nav-item-active)}.Yvqh9W_sessionTabIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_sessionTabLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}[class*=regionArea]{min-height:0;position:relative}.Yvqh9W_sidebarHistoryHost{z-index:30;background:var(--dsw-alias-bg-base);min-width:0;min-height:0;padding:6px 4px;display:none;position:absolute;inset:0;overflow:hidden}html[data-dsh-imagegen-active] .Yvqh9W_sidebarHistoryHost{display:flex}.Yvqh9W_sidebarHistoryHost .Yvqh9W_history{background:0 0;border:0;border-radius:8px;width:100%;height:100%}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_sidebarHistoryHost{display:none}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entryLabel{display:none}.Yvqh9W_view{width:100%;min-width:0;min-height:0;overflow:hidden}.Yvqh9W_panel,.Yvqh9W_panel *,.Yvqh9W_panel :before,.Yvqh9W_panel :after{box-sizing:border-box}.Yvqh9W_panel{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.Yvqh9W_panelHeader{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.Yvqh9W_panelHeading{align-items:baseline;gap:10px;min-width:0;display:flex}.Yvqh9W_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Yvqh9W_githubLink{width:22px;height:22px;color:var(--dsw-alias-label-secondary);border-radius:6px;flex:none;justify-content:center;align-items:center;text-decoration:none;transition:color .12s,background .12s;display:inline-flex}.Yvqh9W_githubLink:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_connectionStatus{border:1px solid var(--dsw-alias-label-error);height:28px;color:var(--dsw-alias-label-error);font:inherit;white-space:nowrap;background:0 0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:1;display:inline-flex}.Yvqh9W_connectionStatus[data-connected=true]{border-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary)}.Yvqh9W_connectionDot{background:currentColor;border-radius:50%;width:6px;height:6px}.Yvqh9W_updateBanner{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);overflow-wrap:anywhere;border-radius:10px;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px 7px 12px;font-size:12px;line-height:1.5;display:flex}.Yvqh9W_updateBanner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.Yvqh9W_updateText{min-width:0}.Yvqh9W_updateActions{flex:none;align-items:center;gap:10px;display:inline-flex}.Yvqh9W_updateRelease{color:inherit;text-underline-offset:2px;white-space:nowrap;text-decoration:underline}@media (width<=700px){.Yvqh9W_panelHeader{align-items:flex-start}.Yvqh9W_panelHeading{flex-direction:column;align-items:flex-start;gap:2px}.Yvqh9W_updateBanner{flex-direction:column;align-items:flex-start}.Yvqh9W_updateActions{justify-content:space-between;width:100%}}.Yvqh9W_studio{flex:1;min-width:0;min-height:0;display:flex}.Yvqh9W_generation{gap:14px;width:100%;min-width:0;min-height:0;display:flex}.Yvqh9W_generation[data-workspace=canvas]{height:100%;display:flex}.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_config,.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_canvas{display:none!important}.Yvqh9W_config{width:clamp(240px, var(--dsh-imagegen-config-width,300px), 480px);flex-direction:column;flex:none;gap:12px;min-width:240px;max-width:480px;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_configHeader{flex:none;justify-content:flex-end;min-height:28px;display:flex}.Yvqh9W_configToggle{border:1px solid var(--dsw-alias-border-l1);width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_configToggle:hover,.Yvqh9W_configToggle:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_config[data-collapsed=true]{gap:0;width:38px;min-width:38px;max-width:38px}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configHeader{justify-content:center}.Yvqh9W_config[data-collapsed=true]>:not(.Yvqh9W_configHeader){display:none}.Yvqh9W_configScroll{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:12px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.Yvqh9W_configScroll::-webkit-scrollbar{width:8px}.Yvqh9W_configScroll::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvas{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_taskTray{z-index:6;border:1px solid var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:9px;flex-direction:column;width:min(360px,100% - 24px);max-height:calc(100% - 24px);display:flex;position:absolute;top:12px;right:12px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_taskTray[data-open=false]{width:auto;max-width:calc(100% - 24px)}.Yvqh9W_taskTrayHeader{min-height:34px;color:var(--dsw-alias-label-primary);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:stretch;font-size:12px;font-weight:600;display:flex}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayHeader{border-bottom:0}.Yvqh9W_taskTrayToggle{min-width:0;color:inherit;cursor:pointer;font:inherit;font-size:inherit;font-weight:inherit;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:8px 10px;display:flex}.Yvqh9W_taskTrayToggle:hover{background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTrayCount{min-width:18px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 5px;font-size:11px;font-weight:500}.Yvqh9W_taskTrayChevron{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:12px;font-weight:400}.Yvqh9W_taskTrayClose{border:0;border-left:1px solid var(--dsw-alias-border-l1);width:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;font-size:17px}.Yvqh9W_taskTrayClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayToggle{min-height:34px}.Yvqh9W_taskRows{min-height:0;overflow-y:auto}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskRows{display:none}.Yvqh9W_taskRow{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 10px;display:grid}.Yvqh9W_taskRow:first-of-type{border-top:0}.Yvqh9W_taskStatus{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px}.Yvqh9W_taskRow[data-status=running] .Yvqh9W_taskStatus{color:var(--dsw-alias-brand-primary)}.Yvqh9W_taskRow[data-status=failed] .Yvqh9W_taskStatus{color:var(--dsw-alias-label-error)}.Yvqh9W_taskPrompt{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.Yvqh9W_taskRow button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border:0;border-radius:5px;padding:2px 7px;font-size:11px}.Yvqh9W_taskRow button:hover{color:var(--dsw-alias-brand-primary)}.Yvqh9W_configGuide{z-index:1100;background:#00000059;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Yvqh9W_configGuideBody{border:1px solid var(--dsw-alias-border-l2);width:min(360px,100%);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:12px;padding:18px;display:flex;box-shadow:0 14px 40px #0003}.Yvqh9W_configGuideBody span{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:1.55}.Yvqh9W_configGuideBody button{min-height:30px;color:var(--dsw-alias-bg-layer-1);background:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;border:0;border-radius:7px;align-self:flex-end;padding:0 12px;font-size:12px}.Yvqh9W_history{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;width:auto;min-width:0;max-width:none;min-height:0;display:flex;overflow:hidden}.Yvqh9W_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Yvqh9W_historyHeaderActions{flex:none;align-items:center;gap:6px;display:flex}.Yvqh9W_historyFilters{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:1fr 1fr;gap:6px;padding:8px 10px;display:grid}.Yvqh9W_historySearch,.Yvqh9W_historyFilters select,.Yvqh9W_gallerySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);min-width:0;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_historySearch{grid-column:1/-1}.Yvqh9W_gallerySearch{width:156px}.Yvqh9W_galleryTagInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:130px;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton{border:1px solid var(--dsw-alias-border-l2);min-height:29px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryBulkButton:disabled{opacity:.45;cursor:default}.Yvqh9W_historyTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.Yvqh9W_historyNew{width:26px;height:26px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyNew:hover{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyClear{font:inherit;color:var(--dsw-alias-label-tertiary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:999px;padding:2px 8px;font-size:11.5px}.Yvqh9W_historyClear:hover{color:var(--dsw-alias-label-error);border-color:var(--dsw-alias-label-error)}.Yvqh9W_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex;overflow-y:auto}.Yvqh9W_historyList::-webkit-scrollbar{width:8px}.Yvqh9W_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);flex:1;justify-content:center;align-items:center;padding:20px;font-size:12px;line-height:1.6;display:flex}.Yvqh9W_historyItem{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;flex:none;gap:6px;padding:8px;display:flex}.Yvqh9W_historyItem:hover{border-color:var(--dsw-alias-border-l2)}.Yvqh9W_historyItem[data-active]{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyMain{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;min-width:0;padding:0;display:flex}.Yvqh9W_historyThumb{object-fit:cover;background:var(--dsw-alias-bg-base);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyThumbPlaceholder{background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyInfo{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.Yvqh9W_historyPrompt{color:var(--dsw-alias-label-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.Yvqh9W_historyMeta{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.Yvqh9W_historyActions{justify-content:flex-end;gap:4px;display:flex}.Yvqh9W_historyIconAction{width:26px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyIconAction:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_historyIconAction:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_historyIconAction:disabled{opacity:.5;cursor:default}.Yvqh9W_historyIconAction[data-danger]:hover{color:var(--dsw-alias-state-error);background:color-mix(in srgb, var(--dsw-alias-state-error) 10%, transparent)}.Yvqh9W_card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.Yvqh9W_ecommerceWorkspace{flex-direction:column;gap:18px;max-width:760px;margin:0 auto;padding:10px 8px 18px;display:flex}.Yvqh9W_ecommerceSection{border:none;border-bottom:1px solid var(--dsw-alias-border-l1);background:0 0;border-radius:0;flex-direction:column;gap:10px;padding:0 0 16px;display:flex}.Yvqh9W_ecommerceSection:last-of-type{border-bottom:none;padding-bottom:4px}.Yvqh9W_ecommerceSection h3{align-items:baseline;gap:7px;margin:0 0 2px;font-size:14px;font-weight:650;display:flex}.Yvqh9W_ecommerceSectionHint{color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:400}.Yvqh9W_ecommerceSection input:not([type=checkbox]),.Yvqh9W_ecommerceSection select,.Yvqh9W_ecommerceSection textarea{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);font:inherit;border-radius:9px;padding:9px 11px}.Yvqh9W_ecommerceSection input:not([type=checkbox]):focus-visible,.Yvqh9W_ecommerceSection select:focus-visible,.Yvqh9W_ecommerceSection textarea:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_ecommerceSection textarea{resize:vertical;min-height:68px;line-height:1.5}.Yvqh9W_ecommerceField{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_ecommerceFieldLabel{color:var(--dsw-alias-label-secondary);font-size:11.5px}.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr 1fr;gap:12px 10px;display:grid}.Yvqh9W_ecommerceUploadHero{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:12px;display:flex}.Yvqh9W_ecommerceUploadHero:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_ecommerceUploadHero:focus-visible,.Yvqh9W_ecommerceAssetAdd:focus-visible,.Yvqh9W_ecommerceSlotCard:focus-visible,.Yvqh9W_ecommerceAdvancedToggle:focus-visible,.Yvqh9W_ecommerceAsset button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.Yvqh9W_ecommerceUploadHero span{font-size:12px}.Yvqh9W_ecommerceUploadHero small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}.Yvqh9W_ecommerceStructureGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceSlotCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:34px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;font-size:12px;display:flex;position:relative}.Yvqh9W_ecommerceSlotCard:hover{border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceSlotCard[data-active]{background:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_ecommerceSlotCount{background:var(--dsw-alias-brand-primary);color:#fff;text-align:center;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-6px;right:-6px}.Yvqh9W_ecommerceRefRow{grid-template-columns:64px 1fr;align-items:center;gap:8px;display:grid}.Yvqh9W_ecommerceRefRow>span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommercePrimaryAction{border-radius:999px;width:100%;height:38px;font-size:13.5px}.Yvqh9W_previewBadge{background:var(--dsw-alias-brand-primary);color:#fff;letter-spacing:.02em;border-radius:4px;margin-left:5px;padding:0 4px;font-size:9px;font-weight:700;line-height:13px}.Yvqh9W_ecommercePlanNote{color:var(--dsw-alias-label-secondary);font-size:11.5px;line-height:1.5}.Yvqh9W_ecommercePlanWarn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:6px;padding:6px 8px;font-size:11.5px;line-height:1.5}.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceAsset{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex-direction:column;gap:3px;padding:4px;display:flex;position:relative}.Yvqh9W_ecommerceAsset img{object-fit:cover;border-radius:5px;width:100%;height:44px}.Yvqh9W_ecommerceAsset select{width:100%;min-width:0;padding:2px;font-size:10px}.Yvqh9W_ecommerceAsset button{color:#fff;cursor:pointer;text-align:center;background:#0000008c;border:none;border-radius:50%;width:16px;height:16px;padding:0;font-size:11px;line-height:15px;position:absolute;top:7px;right:7px}.Yvqh9W_ecommerceAsset button:hover{background:#000c}.Yvqh9W_ecommerceAssetAdd{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.Yvqh9W_ecommerceAssetAdd:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceAssetAdd span{font-size:16px;line-height:1}.Yvqh9W_ecommerceAssetAdd small{font-size:10px}.Yvqh9W_ecommerceAdvancedToggle{width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;font-size:12.5px;display:flex}.Yvqh9W_ecommerceAdvancedToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceAdvancedChevron{font-size:11px}.Yvqh9W_ecommerceAdvancedBody{flex-direction:column;gap:8px;margin-top:8px;display:flex}.Yvqh9W_ecommerceFooterBody{flex-direction:column;gap:8px;display:flex}.Yvqh9W_ecommercePlanMini{border:1px solid var(--dsw-alias-brand-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px;display:flex}.Yvqh9W_ecommercePlanMini>strong{font-size:12.5px}.Yvqh9W_ecommercePlanList{flex-direction:column;gap:3px;max-height:116px;display:flex;overflow-y:auto}.Yvqh9W_ecommercePlanList>div{color:var(--dsw-alias-label-secondary);justify-content:space-between;gap:12px;font-size:11.5px;display:flex}.Yvqh9W_ecommercePlanBack{color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;font-size:12px}.Yvqh9W_ecommercePlanBack:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceFooterHint{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResults{flex-direction:column;gap:14px;width:100%;margin:0 auto;padding:16px 18px;display:flex;overflow-y:auto}.Yvqh9W_ecommerceResultsHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_ecommerceResultsHeader h3{margin:0;font-size:15px}.Yvqh9W_ecommerceResultsHeader>div:first-child{align-items:baseline;gap:10px;display:flex}.Yvqh9W_ecommerceResultsHeader span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResultsActions{gap:8px;display:flex}.Yvqh9W_ecommerceResultsEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;border:1.5px dashed var(--dsw-alias-border-l2);border-radius:12px;padding:32px 16px;font-size:13px}.Yvqh9W_ecommerceGroups{flex-direction:column;gap:16px;display:flex}.Yvqh9W_ecommerceGroup{background:0 0;border:none;border-radius:0;flex-direction:column;gap:8px;padding:0;display:flex}.Yvqh9W_ecommerceGroup>header{align-items:center;gap:10px;font-size:13px;display:flex}.Yvqh9W_ecommerceGroup>header strong{font-size:13px}.Yvqh9W_ecommerceGroup>header span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceGroup>header button{margin-left:auto}.Yvqh9W_ecommerceGroupGrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.Yvqh9W_ecommerceTaskCard{aspect-ratio:1;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:10px;justify-content:center;align-items:center;width:100%;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_ecommerceTaskCard[data-status=failed],.Yvqh9W_ecommerceTaskCard[data-status=cancelled]{color:var(--dsw-alias-label-tertiary);font-size:12px}.Yvqh9W_ecommerceTaskCard .Yvqh9W_imageCard{border:none;border-radius:0;width:100%;height:100%;margin:0}.Yvqh9W_ecommerceTaskCard .Yvqh9W_image{object-fit:cover;width:100%;height:100%}.Yvqh9W_ecommerceResultBadge{color:#fff;pointer-events:none;background:#0000008c;border-radius:999px;padding:0 7px;font-size:10px;line-height:16px;position:absolute;top:6px;left:6px}.Yvqh9W_ecommerceTaskActions{opacity:0;background:linear-gradient(#0000,#0000008c);justify-content:center;gap:4px;padding:10px 4px 5px;transition:opacity .12s;display:flex;position:absolute;bottom:0;left:0;right:0}.Yvqh9W_ecommerceTaskCard:hover .Yvqh9W_ecommerceTaskActions{opacity:1}.Yvqh9W_ecommerceActionChip{color:#111;cursor:pointer;white-space:nowrap;background:#ffffffeb;border:none;border-radius:6px;padding:0 6px;font-size:10px;font-weight:500;line-height:18px;text-decoration:none}.Yvqh9W_ecommerceActionChip:hover{background:#fff}.Yvqh9W_ecommerceActionChip:disabled{opacity:.5;cursor:default}.Yvqh9W_ecommerceTaskState{color:var(--dsw-alias-label-secondary);text-align:center;word-break:break-all;flex-direction:column;gap:3px;padding:10px 8px;font-size:11px;display:flex}.Yvqh9W_ecommerceTaskState b{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_topNav{flex:none;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.Yvqh9W_topNavItem{height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:0 14px;font-size:13px;display:inline-flex}.Yvqh9W_topNavItem,.Yvqh9W_topNavItem span{white-space:nowrap}.Yvqh9W_topNavItem:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_topNavItem[data-active]{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_topNavDivider{background:var(--dsw-alias-border-l2);width:1px;height:16px;margin:0 8px}.Yvqh9W_panelHeaderActions{align-items:center;gap:10px;display:inline-flex}.Yvqh9W_chatToggle{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;border-radius:999px;align-items:center;gap:5px;padding:0 10px;font-size:12px;display:inline-flex}.Yvqh9W_chatToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_chatToggle[data-open=true]{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0,1fr)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation],html[data-dsh-imagegen-chat-collapsed] [data-dsh-imagegen-chat-resizer]{display:none!important}.Yvqh9W_configResizer{cursor:col-resize;z-index:6;width:6px;height:100%;position:absolute;top:0;right:0}.Yvqh9W_configResizer:hover{background:linear-gradient(90deg, transparent, var(--dsw-alias-border-l2))}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configResizer{display:none}.Yvqh9W_modeRow{align-items:center;gap:8px;display:flex}.Yvqh9W_modePill{flex:1;justify-content:center;height:28px;font-size:12.5px}.Yvqh9W_modePill,.Yvqh9W_modePill span,.Yvqh9W_modePill div{white-space:nowrap;min-width:0}.Yvqh9W_uploadBox{min-height:128px;color:var(--dsw-alias-label-secondary);border:1.5px dashed var(--dsw-alias-border-l2);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;font-size:12.5px;display:flex}.Yvqh9W_uploadBox:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_uploadBox:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_uploadIcon{color:var(--dsw-alias-label-tertiary);display:inline-flex}.Yvqh9W_uploadHint{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_reference{flex-direction:column;gap:8px;display:flex}.Yvqh9W_referenceImage{object-fit:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;width:100%;max-height:176px}.Yvqh9W_referenceActions{gap:8px;display:flex}.Yvqh9W_hiddenFile{display:none}.Yvqh9W_prompt{width:100%;min-height:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);resize:vertical;box-sizing:border-box;border-radius:10px;outline:none;padding:10px 12px;font-family:inherit;font-size:13px;line-height:1.6}.Yvqh9W_prompt:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_prompt::placeholder{color:var(--dsw-alias-label-tertiary)}.Yvqh9W_promptFooter{justify-content:space-between;align-items:center;gap:8px;margin-top:-6px;display:flex}.Yvqh9W_templatesButton{border:1px solid var(--dsw-alias-brand-primary);background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 5%, transparent));height:26px;color:var(--dsw-alias-brand-primary);cursor:pointer;box-shadow:0 1px 0 color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12px;font-weight:600;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex}.Yvqh9W_templatesButton svg{flex:none}.Yvqh9W_templatesButton:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 24%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent));color:var(--dsw-alias-brand-primary);box-shadow:0 2px 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);transform:translateY(-1px)}.Yvqh9W_templatesButton:active{transform:translateY(0)}.Yvqh9W_enhanceButton{border:1px solid var(--dsw-alias-border-l2);height:26px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);font:inherit;cursor:pointer;border-radius:999px;margin-left:auto;padding:0 11px;font-size:12px}.Yvqh9W_enhanceButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_enhanceButton:disabled{opacity:.5;cursor:default}.Yvqh9W_promptCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.Yvqh9W_paramGroup{flex-direction:column;gap:8px;display:flex}.Yvqh9W_paramLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_optionRow{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_optionGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_optionPill{justify-content:center}.Yvqh9W_paramHint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.45}.Yvqh9W_footer{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:10px 2px 0 0;display:flex}.Yvqh9W_modelWrap{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_modelLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_modelSelect{width:100%;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;text-align:left;border-radius:18px;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:0 12px;font-family:inherit;font-size:13px;display:flex}.Yvqh9W_modelSelect:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_modelSelect:disabled{opacity:.55;cursor:default}.Yvqh9W_modelMenu{min-width:0;display:block;position:relative}.Yvqh9W_modelMenuList{z-index:40;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;right:0;overflow:hidden;box-shadow:0 -8px 24px #0000002e}.Yvqh9W_modelMenuItem{width:100%;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:8px;padding:7px 10px;font-size:13px;display:block;overflow:hidden}.Yvqh9W_modelMenuItem:hover{background:var(--dsw-alias-bg-hover)}.Yvqh9W_modelMenuItem[data-selected]{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-1);font-weight:600}.Yvqh9W_generateButton{width:100%}.Yvqh9W_generateInner{align-items:center;gap:7px;display:inline-flex}.Yvqh9W_canvasState{text-align:center;color:var(--dsw-alias-label-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.Yvqh9W_canvasStateTitle{color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:600}.Yvqh9W_canvasStateHint{max-width:380px;font-size:12px;line-height:1.6}.Yvqh9W_canvasEmptyIcon{color:var(--dsw-alias-label-tertiary);margin-bottom:4px;display:inline-flex}.Yvqh9W_canvasError{color:var(--dsw-alias-label-error);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-label-error);overflow-wrap:anywhere;border-radius:10px;flex:none;margin:14px;padding:10px 14px;font-size:12.5px;line-height:1.6}.Yvqh9W_canvasBody{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.Yvqh9W_canvasBody::-webkit-scrollbar{width:8px}.Yvqh9W_canvasBody::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvasMeta{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Yvqh9W_canvasHistoryTag{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px}.Yvqh9W_grid{flex:1;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;display:grid}.Yvqh9W_grid[data-count=\"1\"] .Yvqh9W_imageCard{grid-area:1/1/3/3}.Yvqh9W_imageCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:zoom-in;border-radius:12px;flex-direction:column;min-height:0;margin:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_imageCard:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_image{object-fit:cover;background:var(--dsw-alias-bg-base);flex:1;width:100%;min-height:0;display:block}.Yvqh9W_imageCaption{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;border-top:1px solid var(--dsw-alias-border-l1);padding:7px 10px;font-size:11px;line-height:1.5;overflow:hidden}.Yvqh9W_download{color:#fff;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;text-decoration:none;transition:opacity .12s;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_download{opacity:1}.Yvqh9W_download:hover{background:#0f1218f0}.Yvqh9W_download:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd{font:inherit;color:#fff;cursor:pointer;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_galleryAdd{opacity:1}.Yvqh9W_galleryAdd:hover{background:#0f1218f0}.Yvqh9W_galleryAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_conversationAdd{color:#fff;cursor:pointer;font:inherit;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:38px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_conversationAdd,.Yvqh9W_conversationAdd:focus-visible{opacity:1}.Yvqh9W_conversationAdd:hover{background:#0f1218f0}.Yvqh9W_conversationAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_conversationAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_zoomHint{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);opacity:0;backdrop-filter:blur(4px);pointer-events:none;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;bottom:8px;left:8px}.Yvqh9W_imageCard:hover .Yvqh9W_zoomHint{opacity:1}.Yvqh9W_spinner,.Yvqh9W_bigSpinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;animation:.8s linear infinite Yvqh9W_dshImageGenSpin;display:inline-block}.Yvqh9W_spinner{width:11px;height:11px}.Yvqh9W_bigSpinner{width:30px;height:30px;color:var(--dsw-alias-state-business-primary);border-width:3px;margin-bottom:6px}.Yvqh9W_lightbox{z-index:1000;backdrop-filter:blur(6px);background:#000000b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.Yvqh9W_lightboxClose{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex;position:absolute;top:16px;right:16px}.Yvqh9W_lightboxClose:hover{background:#ffffff42}.Yvqh9W_lightboxNav{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.Yvqh9W_lightboxNav:hover{background:#ffffff42}.Yvqh9W_lightboxNav[data-dir=prev]{left:max(20px,50% - 640px)}.Yvqh9W_lightboxNav[data-dir=next]{right:max(20px,50% - 640px)}.Yvqh9W_lightboxFigure{flex-direction:column;gap:10px;width:min(1100px,100vw - 160px);max-width:min(1100px,100vw - 160px);height:min(820px,100vh - 48px);min-height:0;margin:0;display:flex}.Yvqh9W_lightboxStage{background:#ffffff0a;border-radius:10px;flex:1;min-height:0;position:relative;overflow:auto}.Yvqh9W_lightboxScaleFrame{justify-content:center;align-items:center;min-width:100%;min-height:100%;display:flex}.Yvqh9W_lightboxImage{object-fit:contain;border-radius:10px;max-width:100%;max-height:100%;display:block;box-shadow:0 24px 80px #00000080}.Yvqh9W_lightboxTools{justify-content:center;align-items:center;gap:6px;display:flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel,.Yvqh9W_lightboxCopy{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel{height:32px}.Yvqh9W_lightboxTool{border-radius:50%;width:32px}.Yvqh9W_lightboxZoomLevel{min-width:58px;font:inherit;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 9px;font-size:12px}.Yvqh9W_lightboxTool:hover,.Yvqh9W_lightboxZoomLevel:hover,.Yvqh9W_lightboxCopy:hover{background:#ffffff42}.Yvqh9W_lightboxCaptionRow{align-items:flex-start;gap:8px;min-width:0;display:flex}.Yvqh9W_lightboxCaption{color:#ffffffe6;-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;min-width:0;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.Yvqh9W_lightboxCopy{min-height:28px;font:inherit;white-space:nowrap;border-radius:999px;flex:none;gap:5px;padding:4px 9px;font-size:12px}.Yvqh9W_lightboxMeta{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_lightboxIndex{color:#fffc;font-variant-numeric:tabular-nums;font-size:12px}.Yvqh9W_lightboxActions{align-items:center;gap:8px;display:inline-flex}.Yvqh9W_lightboxDownload,.Yvqh9W_lightboxEdit{font:inherit;color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px;padding:4px 14px;font-size:12.5px;font-weight:500;text-decoration:none}.Yvqh9W_lightboxDownload:hover,.Yvqh9W_lightboxEdit:hover{background:#ffffff42}.Yvqh9W_lightboxEdit{color:#fff;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px}@media (width<=720px){.Yvqh9W_lightbox{padding:16px}.Yvqh9W_lightboxFigure{width:calc(100vw - 32px);max-width:none}.Yvqh9W_lightboxNav[data-dir=prev]{left:20px}.Yvqh9W_lightboxNav[data-dir=next]{right:20px}.Yvqh9W_lightboxCaptionRow,.Yvqh9W_lightboxMeta{flex-direction:column;align-items:stretch}.Yvqh9W_lightboxCopy,.Yvqh9W_lightboxActions{align-self:flex-end}}@keyframes Yvqh9W_dshImageGenSpin{to{transform:rotate(360deg)}}.Yvqh9W_galleryToast{z-index:30;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Yvqh9W_dshImageGenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.Yvqh9W_conversationToast{z-index:30;border:1px solid var(--dsw-alias-border-l2);max-width:calc(100% - 32px);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);pointer-events:none;backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@media (prefers-reduced-motion:reduce){.Yvqh9W_download,.Yvqh9W_spinner,.Yvqh9W_bigSpinner{transition:none;animation-duration:1.5s}}.Yvqh9W_config[data-gallery=true] .Yvqh9W_configScroll>:not(:first-child),.Yvqh9W_config[data-gallery=true] .Yvqh9W_footer,.Yvqh9W_canvas[data-gallery=true]>.Yvqh9W_canvasState,.Yvqh9W_canvas[data-gallery=true]>.Yvqh9W_canvasError,.Yvqh9W_canvas[data-gallery=true]>.Yvqh9W_canvasBody,.Yvqh9W_studio:has(.Yvqh9W_config[data-gallery=true])>.Yvqh9W_history{display:none}.Yvqh9W_config[data-gallery=true] .Yvqh9W_configScroll{flex:none;order:1;display:flex;overflow:visible}.Yvqh9W_config[data-gallery=true] .Yvqh9W_galleryFilters{flex:1;order:2;min-height:0}.Yvqh9W_galleryFilters{padding:18px 14px;overflow:hidden auto}.Yvqh9W_galleryFilterHeading{color:var(--dsw-alias-label-tertiary);margin:0 4px 10px;font-size:12px;font-weight:600}.Yvqh9W_galleryFilter{width:100%;min-height:34px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:9px;justify-content:space-between;align-items:center;padding:0 10px;display:flex}.Yvqh9W_galleryFilter:hover,.Yvqh9W_galleryFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterCount{min-width:20px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 6px;font-size:11px}.Yvqh9W_galleryFilterDivider{background:var(--dsw-alias-border-l1);height:1px;margin:18px 4px}.Yvqh9W_galleryRatioList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryRatio{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border:0;border-radius:999px;padding:6px 10px;font-size:12px}.Yvqh9W_galleryRatio[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 13%, transparent)}.Yvqh9W_galleryTagFilterList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryTagFilter{border:1px solid var(--dsw-alias-border-l1);min-width:0;max-width:100%;min-height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:6px;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:inline-flex}.Yvqh9W_galleryTagFilter span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:112px;overflow:hidden}.Yvqh9W_galleryTagFilter span:last-child{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTagFilter:hover,.Yvqh9W_galleryTagFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterNote{color:var(--dsw-alias-label-quaternary);margin:20px 4px 0;font-size:11px;line-height:1.5}.Yvqh9W_galleryWorkspace{box-sizing:border-box;flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;padding:22px 24px 26px;display:flex;position:absolute;inset:0;overflow:hidden}.Yvqh9W_galleryToolbar{flex:none;justify-content:space-between;align-items:center;gap:16px;min-width:0;margin-bottom:18px;display:flex}.Yvqh9W_galleryHeading{color:var(--dsw-alias-label-primary);margin:0;font-size:20px;font-weight:700;display:inline}.Yvqh9W_galleryCount{color:var(--dsw-alias-label-tertiary);margin-left:8px;font-size:13px}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.Yvqh9W_gallerySelectMode,.Yvqh9W_galleryBulkButton,.Yvqh9W_gallerySelectionClear{border:1px solid var(--dsw-alias-border-l1);min-height:30px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_gallerySelectMode:hover,.Yvqh9W_gallerySelectMode[data-active],.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 38%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_galleryBulkButton:disabled{cursor:not-allowed;opacity:.45}.Yvqh9W_gallerySelectionBar{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 7%, var(--dsw-alias-bg-layer-1));border-radius:9px;flex:none;align-items:center;gap:10px;min-width:0;margin:-4px 0 16px;padding:10px 12px;display:flex}.Yvqh9W_gallerySelectionBar strong{color:var(--dsw-alias-brand-primary);flex:none;font-size:12px}.Yvqh9W_gallerySelectionClear{margin-left:auto}.Yvqh9W_gallerySelectionClear:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_galleryTagInput,.Yvqh9W_gallerySearch{border:1px solid var(--dsw-alias-border-l1);min-width:0;height:30px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:inherit;border-radius:7px;outline:none;padding:0 10px;font-size:12px}.Yvqh9W_galleryTagInput{flex:190px}.Yvqh9W_galleryTagInput:focus,.Yvqh9W_gallerySearch:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryViewToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;padding:3px;display:flex}.Yvqh9W_galleryViewToggle button,.Yvqh9W_gallerySort,.Yvqh9W_galleryClear{min-height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_galleryViewToggle button[data-active],.Yvqh9W_galleryViewToggle button:hover,.Yvqh9W_gallerySort:hover,.Yvqh9W_galleryClear:hover{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_gallerySort{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1)}.Yvqh9W_galleryClear{border:1px solid var(--dsw-alias-border-l1)}.Yvqh9W_compareControl{flex-direction:column;gap:6px;margin:0 0 10px;display:flex}.Yvqh9W_compareToggle,.Yvqh9W_compareModelChoices label{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.Yvqh9W_compareToggle input,.Yvqh9W_compareModelChoices input{accent-color:var(--dsw-alias-brand-primary)}.Yvqh9W_compareModelChoices{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_compareModelChoices label{border:1px solid var(--dsw-alias-border-l1);border-radius:5px;padding:4px 6px;font-size:10px}.Yvqh9W_comparisonBoard{z-index:4;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:8px;flex-direction:column;display:flex;position:absolute;inset:14px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_comparisonBoard>header{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.Yvqh9W_comparisonBoard>header div{align-items:baseline;gap:7px;display:flex}.Yvqh9W_comparisonBoard>header strong{color:var(--dsw-alias-label-primary);font-size:13px}.Yvqh9W_comparisonBoard>header span{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_comparisonBoard>header button{border:1px solid var(--dsw-alias-border-l1);min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:5px;padding:0 9px;font-size:11px}.Yvqh9W_comparisonGrid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;min-height:0;padding:12px;display:grid;overflow:auto}.Yvqh9W_comparisonGrid article{flex-direction:column;gap:7px;min-width:0;height:100%;min-height:0;display:flex}.Yvqh9W_comparisonGrid article>strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_comparisonImageButton{cursor:zoom-in;background:var(--dsw-alias-bg-base);border:0;flex:1;width:100%;min-height:0;padding:0;display:flex;overflow:hidden}.Yvqh9W_comparisonImageButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.Yvqh9W_comparisonGrid article>span{min-height:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);flex:1;place-items:center;font-size:12px;display:grid}.Yvqh9W_comparisonGrid img{object-fit:contain;background:var(--dsw-alias-bg-base);flex:1;width:100%;height:100%;min-height:0;max-height:none;display:block}.Yvqh9W_comparisonFullscreen{z-index:1200;background:#000000eb;padding:54px 24px 24px;position:fixed;inset:0;overflow:auto}.Yvqh9W_comparisonFullscreenGrid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:18px;min-height:100%;display:grid}.Yvqh9W_comparisonFullscreen figure{min-width:0;margin:0}.Yvqh9W_comparisonFullscreen figcaption{color:#fff;margin-bottom:8px;font-size:13px;font-weight:600}.Yvqh9W_comparisonFullscreen img{background:#111;width:100%;margin-bottom:10px;display:block}.Yvqh9W_historyItem[data-comparison]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 55%, var(--dsw-alias-border-l1))}.Yvqh9W_galleryMasonry{box-sizing:border-box;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex:auto;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:16px;width:100%;min-width:0;max-width:100%;height:0;min-height:0;padding:2px 8px 16px 2px;display:grid;overflow:hidden scroll}.Yvqh9W_galleryMasonry::-webkit-scrollbar{width:8px}.Yvqh9W_galleryMasonry::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_galleryCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;width:100%;margin:0;display:block;position:relative;overflow:hidden;box-shadow:0 5px 18px #18203612}.Yvqh9W_galleryCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent), 0 5px 18px #18203612}.Yvqh9W_gallerySelect{z-index:2;cursor:pointer;background:#00000094;border:1px solid #ffffffbf;border-radius:7px;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:9px;right:9px}.Yvqh9W_gallerySelect input{width:16px;height:16px;accent-color:var(--dsw-alias-brand-primary);cursor:pointer;margin:0}.Yvqh9W_galleryImageButton{background:var(--dsw-alias-bg-base);cursor:zoom-in;border:0;width:100%;padding:0;display:block;position:relative}.Yvqh9W_galleryImageButton[data-selecting]{cursor:pointer}.Yvqh9W_galleryImage{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+1) .Yvqh9W_galleryImage{aspect-ratio:4/5}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+2) .Yvqh9W_galleryImage{aspect-ratio:4/3}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n) .Yvqh9W_galleryImage{aspect-ratio:3/4}.Yvqh9W_galleryBadge{color:#fff;backdrop-filter:blur(4px);background:#121724c2;border-radius:999px;padding:4px 9px;font-size:11px;position:absolute;top:10px;left:10px}.Yvqh9W_galleryCardActions{padding:8px 12px 0;display:flex}.Yvqh9W_galleryCardAction{border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:4px;padding:0 4px;font-size:10px;font-weight:500;display:inline-flex}.Yvqh9W_galleryCardAction:hover,.Yvqh9W_galleryCardAction:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_galleryCardAction:disabled{cursor:wait;opacity:.55}.Yvqh9W_galleryCardFooter{align-items:center;gap:9px;min-width:0;padding:10px 12px;display:flex}.Yvqh9W_galleryAvatar{color:#fff;background:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;width:27px;height:27px;font-size:12px;font-weight:700;display:grid}.Yvqh9W_galleryCardInfo{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.Yvqh9W_galleryCardInfo strong,.Yvqh9W_galleryCardInfo small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Yvqh9W_galleryCardInfo strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_galleryCardInfo small{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.Yvqh9W_galleryTags button{max-width:96px;min-height:19px;color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);cursor:pointer;font:inherit;text-overflow:ellipsis;white-space:nowrap;border:0;border-radius:4px;padding:1px 6px;font-size:10px;line-height:1.35;overflow:hidden}.Yvqh9W_galleryTags button:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 17%, transparent)}.Yvqh9W_galleryTags .Yvqh9W_galleryTagEdit{color:var(--dsw-alias-label-tertiary);background:0 0;flex:none}.Yvqh9W_galleryTagEditor{align-items:center;gap:6px;padding:0 12px 10px 48px;display:flex}.Yvqh9W_galleryTagEditor input{border:1px solid var(--dsw-alias-border-l2);min-width:0;height:27px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:6px;outline:none;flex:1;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor input:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryTagEditor button{border:1px solid var(--dsw-alias-border-l2);height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:6px;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor button[type=submit]{color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryRemove{width:24px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;font-size:18px}.Yvqh9W_galleryRemove:hover{color:var(--dsw-alias-state-error);background:var(--dsw-alias-bg-layer-2)}@media (width<=760px){.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.Yvqh9W_ecommerceWorkspace{padding-inline:2px}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:1fr}}@media (width<=1100px){.Yvqh9W_galleryMasonry{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.Yvqh9W_studio{grid-template-rows:minmax(220px,36%) minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}.Yvqh9W_history{grid-area:1/1;min-height:220px}.Yvqh9W_generation{flex-direction:column;grid-area:2/1;min-height:0}.Yvqh9W_config{width:auto;max-width:none;height:auto;min-height:0}.Yvqh9W_config[data-gallery=true]{flex:none}.Yvqh9W_canvas{min-height:560px}.Yvqh9W_galleryToolbar{flex-direction:column;align-items:flex-start}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;width:100%}.Yvqh9W_galleryMasonry{grid-template-columns:1fr}}";
|
|
6324
|
+
const css$2 = "[data-pane=conversation],[class*=centerCol]{min-width:0;min-height:0;position:relative}[data-dsh-imagegen-view]{z-index:60;background:var(--dsw-alias-bg-base);grid-area:1/1;min-width:0;min-height:0;display:none;position:relative}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0, 1fr) 8px minmax(320px, clamp(320px, var(--dsh-imagegen-chat-width,36%), 70%));background:var(--dsw-alias-border-l1);grid-template-rows:minmax(0,1fr);gap:1px;overflow:hidden;display:grid!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-view]{display:block}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{background:var(--dsw-alias-bg-base);grid-area:1/3;align-items:stretch;width:auto;min-width:0;min-height:0;overflow:hidden;display:flex!important}html[data-dsh-imagegen-active] [data-slot=conversation]>[data-phase]{flex:auto;align-self:stretch;width:100%;min-width:0;max-width:none}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-chat-resizer]{grid-area:1/2}.Yvqh9W_chatResizer{z-index:70;width:8px;min-width:8px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-border-l1);cursor:col-resize;touch-action:none;justify-content:center;align-items:center;display:none;position:relative}.Yvqh9W_chatResizer:before{content:\"\";opacity:.55;background:currentColor;border-radius:3px;width:3px;height:36px}.Yvqh9W_chatResizer:hover,.Yvqh9W_chatResizer:focus-visible{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);outline:none}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:flex!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active] [data-dsh-imagegen-sidebar-root]>:not([data-dsh-imagegen-session-tabs]):not([class*=logoRow]):not([class*=regionArea]):not([class*=footArea]){display:none!important}@media (width<=760px){html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-rows:minmax(0,1fr) minmax(340px,.9fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{grid-area:2/1}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:none!important}}.Yvqh9W_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.Yvqh9W_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.Yvqh9W_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.Yvqh9W_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_entryLabel{text-overflow:ellipsis;overflow:hidden}.Yvqh9W_sessionTabs{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px;width:100%;min-width:0;padding:3px;display:grid}.Yvqh9W_sessionTab{min-width:0;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;display:inline-flex}[data-sidebar-collapsed] .Yvqh9W_sessionTabs{background:0 0;border:none;border-radius:0;flex-direction:column;gap:6px;width:auto;padding:0;display:flex}[data-sidebar-collapsed] .Yvqh9W_sessionTab{border-radius:9px;width:34px;height:34px;padding:0;font-size:0}[data-sidebar-collapsed] .Yvqh9W_sessionTabLabel{display:none}.Yvqh9W_sessionTab:hover,.Yvqh9W_sessionTab[data-active]{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-sidebar-nav-item-active)}.Yvqh9W_sessionTabIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_sessionTabLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}[class*=regionArea]{min-height:0;position:relative}.Yvqh9W_sidebarHistoryHost{z-index:30;background:var(--dsw-alias-bg-base);min-width:0;min-height:0;padding:6px 4px;display:none;position:absolute;inset:0;overflow:hidden}html[data-dsh-imagegen-active] .Yvqh9W_sidebarHistoryHost{display:flex}.Yvqh9W_sidebarHistoryHost .Yvqh9W_history{background:0 0;border:0;border-radius:8px;width:100%;height:100%}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_sidebarHistoryHost{display:none}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entryLabel{display:none}.Yvqh9W_view{width:100%;min-width:0;min-height:0;overflow:hidden}.Yvqh9W_panel,.Yvqh9W_panel *,.Yvqh9W_panel :before,.Yvqh9W_panel :after{box-sizing:border-box}.Yvqh9W_panel{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.Yvqh9W_panelHeader{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.Yvqh9W_panelHeading{align-items:baseline;gap:10px;min-width:0;display:flex}.Yvqh9W_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Yvqh9W_githubLink{width:22px;height:22px;color:var(--dsw-alias-label-secondary);border-radius:6px;flex:none;justify-content:center;align-items:center;text-decoration:none;transition:color .12s,background .12s;display:inline-flex}.Yvqh9W_githubLink:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_connectionStatus{border:1px solid var(--dsw-alias-label-error);height:28px;color:var(--dsw-alias-label-error);font:inherit;white-space:nowrap;background:0 0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:1;display:inline-flex}.Yvqh9W_connectionStatus[data-connected=true]{border-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary)}.Yvqh9W_connectionDot{background:currentColor;border-radius:50%;width:6px;height:6px}.Yvqh9W_updateBanner{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);overflow-wrap:anywhere;border-radius:10px;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px 7px 12px;font-size:12px;line-height:1.5;display:flex}.Yvqh9W_updateBanner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.Yvqh9W_updateText{min-width:0}.Yvqh9W_updateActions{flex:none;align-items:center;gap:10px;display:inline-flex}.Yvqh9W_updateRelease{color:inherit;text-underline-offset:2px;white-space:nowrap;text-decoration:underline}@media (width<=700px){.Yvqh9W_panelHeader{align-items:flex-start}.Yvqh9W_panelHeading{flex-direction:column;align-items:flex-start;gap:2px}.Yvqh9W_updateBanner{flex-direction:column;align-items:flex-start}.Yvqh9W_updateActions{justify-content:space-between;width:100%}}.Yvqh9W_studio{flex:1;min-width:0;min-height:0;display:flex}.Yvqh9W_generation{gap:14px;width:100%;min-width:0;min-height:0;display:flex}.Yvqh9W_generation[data-workspace=canvas]{height:100%;display:flex}.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_config,.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_canvas{display:none!important}.Yvqh9W_config{width:clamp(240px, var(--dsh-imagegen-config-width,300px), 480px);flex-direction:column;flex:none;gap:12px;min-width:240px;max-width:480px;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_configHeader{flex:none;justify-content:flex-end;min-height:28px;display:flex}.Yvqh9W_configToggle{border:1px solid var(--dsw-alias-border-l1);width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_configToggle:hover,.Yvqh9W_configToggle:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_config[data-collapsed=true]{gap:0;width:38px;min-width:38px;max-width:38px}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configHeader{justify-content:center}.Yvqh9W_config[data-collapsed=true]>:not(.Yvqh9W_configHeader){display:none}.Yvqh9W_configScroll{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:12px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.Yvqh9W_configScroll::-webkit-scrollbar{width:8px}.Yvqh9W_configScroll::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvas{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_taskTray{z-index:6;border:1px solid var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:9px;flex-direction:column;width:min(360px,100% - 24px);max-height:calc(100% - 24px);display:flex;position:absolute;top:12px;right:12px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_taskTray[data-open=false]{width:auto;max-width:calc(100% - 24px)}.Yvqh9W_taskTrayHeader{min-height:34px;color:var(--dsw-alias-label-primary);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:stretch;font-size:12px;font-weight:600;display:flex}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayHeader{border-bottom:0}.Yvqh9W_taskTrayToggle{min-width:0;color:inherit;cursor:pointer;font:inherit;font-size:inherit;font-weight:inherit;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:8px 10px;display:flex}.Yvqh9W_taskTrayToggle:hover{background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTrayCount{min-width:18px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 5px;font-size:11px;font-weight:500}.Yvqh9W_taskTrayChevron{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:12px;font-weight:400}.Yvqh9W_taskTrayClose{border:0;border-left:1px solid var(--dsw-alias-border-l1);width:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;font-size:17px}.Yvqh9W_taskTrayClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayToggle{min-height:34px}.Yvqh9W_taskRows{min-height:0;overflow-y:auto}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskRows{display:none}.Yvqh9W_taskRow{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 10px;display:grid}.Yvqh9W_taskRow:first-of-type{border-top:0}.Yvqh9W_taskStatus{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px}.Yvqh9W_taskRow[data-status=running] .Yvqh9W_taskStatus{color:var(--dsw-alias-brand-primary)}.Yvqh9W_taskRow[data-status=failed] .Yvqh9W_taskStatus{color:var(--dsw-alias-label-error)}.Yvqh9W_taskPrompt{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.Yvqh9W_taskRow button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border:0;border-radius:5px;padding:2px 7px;font-size:11px}.Yvqh9W_taskRow button:hover{color:var(--dsw-alias-brand-primary)}.Yvqh9W_configGuide{z-index:1100;background:#00000059;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Yvqh9W_configGuideBody{border:1px solid var(--dsw-alias-border-l2);width:min(360px,100%);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:12px;padding:18px;display:flex;box-shadow:0 14px 40px #0003}.Yvqh9W_configGuideBody span{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:1.55}.Yvqh9W_configGuideBody button{min-height:30px;color:var(--dsw-alias-bg-layer-1);background:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;border:0;border-radius:7px;align-self:flex-end;padding:0 12px;font-size:12px}.Yvqh9W_history{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;width:auto;min-width:0;max-width:none;min-height:0;display:flex;overflow:hidden}.Yvqh9W_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Yvqh9W_historyHeaderActions{flex:none;align-items:center;gap:6px;display:flex}.Yvqh9W_historyFilters{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:1fr 1fr;gap:6px;padding:8px 10px;display:grid}.Yvqh9W_historySearch,.Yvqh9W_historyFilters select,.Yvqh9W_gallerySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);min-width:0;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_historySearch{grid-column:1/-1}.Yvqh9W_gallerySearch{width:156px}.Yvqh9W_galleryTagInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:130px;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton{border:1px solid var(--dsw-alias-border-l2);min-height:29px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryBulkButton:disabled{opacity:.45;cursor:default}.Yvqh9W_historyTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.Yvqh9W_historyNew{width:26px;height:26px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyNew:hover{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyClear{font:inherit;color:var(--dsw-alias-label-tertiary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:999px;padding:2px 8px;font-size:11.5px}.Yvqh9W_historyClear:hover{color:var(--dsw-alias-label-error);border-color:var(--dsw-alias-label-error)}.Yvqh9W_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex;overflow-y:auto}.Yvqh9W_historyList::-webkit-scrollbar{width:8px}.Yvqh9W_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);flex:1;justify-content:center;align-items:center;padding:20px;font-size:12px;line-height:1.6;display:flex}.Yvqh9W_historyItem{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;flex:none;gap:6px;padding:8px;display:flex}.Yvqh9W_historyItem:hover{border-color:var(--dsw-alias-border-l2)}.Yvqh9W_historyItem[data-active]{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyMain{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;min-width:0;padding:0;display:flex}.Yvqh9W_historyThumb{object-fit:cover;background:var(--dsw-alias-bg-base);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyThumbPlaceholder{background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyInfo{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.Yvqh9W_historyPrompt{color:var(--dsw-alias-label-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.Yvqh9W_historyMeta{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.Yvqh9W_historyActions{justify-content:flex-end;gap:4px;display:flex}.Yvqh9W_historyIconAction{width:26px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyIconAction:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_historyIconAction:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_historyIconAction:disabled{opacity:.5;cursor:default}.Yvqh9W_historyIconAction[data-danger]:hover{color:var(--dsw-alias-state-error);background:color-mix(in srgb, var(--dsw-alias-state-error) 10%, transparent)}.Yvqh9W_card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.Yvqh9W_ecommerceWorkspace{flex-direction:column;gap:18px;max-width:760px;margin:0 auto;padding:10px 8px 18px;display:flex}.Yvqh9W_ecommerceSection{border:none;border-bottom:1px solid var(--dsw-alias-border-l1);background:0 0;border-radius:0;flex-direction:column;gap:10px;padding:0 0 16px;display:flex}.Yvqh9W_ecommerceSection:last-of-type{border-bottom:none;padding-bottom:4px}.Yvqh9W_ecommerceSection h3{align-items:baseline;gap:7px;margin:0 0 2px;font-size:14px;font-weight:650;display:flex}.Yvqh9W_ecommerceSectionHint{color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:400}.Yvqh9W_ecommerceSection input:not([type=checkbox]),.Yvqh9W_ecommerceSection select,.Yvqh9W_ecommerceSection textarea{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);font:inherit;border-radius:9px;padding:9px 11px}.Yvqh9W_ecommerceSection input:not([type=checkbox]):focus-visible,.Yvqh9W_ecommerceSection select:focus-visible,.Yvqh9W_ecommerceSection textarea:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_ecommerceSection textarea{resize:vertical;min-height:68px;line-height:1.5}.Yvqh9W_ecommerceField{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_ecommerceFieldLabel{color:var(--dsw-alias-label-secondary);font-size:11.5px}.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr 1fr;gap:12px 10px;display:grid}.Yvqh9W_ecommerceUploadHero{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:12px;display:flex}.Yvqh9W_ecommerceUploadHero:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_ecommerceUploadHero:focus-visible,.Yvqh9W_ecommerceAssetAdd:focus-visible,.Yvqh9W_ecommerceSlotCard:focus-visible,.Yvqh9W_ecommerceAdvancedToggle:focus-visible,.Yvqh9W_ecommerceAsset button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.Yvqh9W_ecommerceUploadHero span{font-size:12px}.Yvqh9W_ecommerceUploadHero small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}.Yvqh9W_ecommerceStructureGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceSlotCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:34px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;font-size:12px;display:flex;position:relative}.Yvqh9W_ecommerceSlotCard:hover{border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceSlotCard[data-active]{background:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_ecommerceSlotCount{background:var(--dsw-alias-brand-primary);color:#fff;text-align:center;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-6px;right:-6px}.Yvqh9W_ecommerceRefRow{grid-template-columns:64px 1fr;align-items:center;gap:8px;display:grid}.Yvqh9W_ecommerceRefRow>span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommercePrimaryAction{border-radius:999px;width:100%;height:38px;font-size:13.5px}.Yvqh9W_previewBadge{background:var(--dsw-alias-brand-primary);color:#fff;letter-spacing:.02em;border-radius:4px;margin-left:5px;padding:0 4px;font-size:9px;font-weight:700;line-height:13px}.Yvqh9W_ecommercePlanNote{color:var(--dsw-alias-label-secondary);font-size:11.5px;line-height:1.5}.Yvqh9W_ecommercePlanWarn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:6px;padding:6px 8px;font-size:11.5px;line-height:1.5}.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceAsset{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex-direction:column;gap:3px;padding:4px;display:flex;position:relative}.Yvqh9W_ecommerceAsset img{object-fit:cover;border-radius:5px;width:100%;height:44px}.Yvqh9W_ecommerceAsset select{width:100%;min-width:0;padding:2px;font-size:10px}.Yvqh9W_ecommerceAsset button{color:#fff;cursor:pointer;text-align:center;background:#0000008c;border:none;border-radius:50%;width:16px;height:16px;padding:0;font-size:11px;line-height:15px;position:absolute;top:7px;right:7px}.Yvqh9W_ecommerceAsset button:hover{background:#000c}.Yvqh9W_ecommerceAssetAdd{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.Yvqh9W_ecommerceAssetAdd:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceAssetAdd span{font-size:16px;line-height:1}.Yvqh9W_ecommerceAssetAdd small{font-size:10px}.Yvqh9W_ecommerceAdvancedToggle{width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;font-size:12.5px;display:flex}.Yvqh9W_ecommerceAdvancedToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceAdvancedChevron{font-size:11px}.Yvqh9W_ecommerceAdvancedBody{flex-direction:column;gap:8px;margin-top:8px;display:flex}.Yvqh9W_ecommerceFooterBody{flex-direction:column;gap:8px;display:flex}.Yvqh9W_ecommercePlanMini{border:1px solid var(--dsw-alias-brand-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px;display:flex}.Yvqh9W_ecommercePlanMini>strong{font-size:12.5px}.Yvqh9W_ecommercePlanList{flex-direction:column;gap:3px;max-height:116px;display:flex;overflow-y:auto}.Yvqh9W_ecommercePlanList>div{color:var(--dsw-alias-label-secondary);justify-content:space-between;gap:12px;font-size:11.5px;display:flex}.Yvqh9W_ecommercePlanBack{color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;font-size:12px}.Yvqh9W_ecommercePlanBack:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceFooterHint{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResults{flex-direction:column;gap:14px;width:100%;margin:0 auto;padding:16px 18px;display:flex;overflow-y:auto}.Yvqh9W_ecommerceResultsHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_ecommerceResultsHeader h3{margin:0;font-size:15px}.Yvqh9W_ecommerceResultsHeader>div:first-child{align-items:baseline;gap:10px;display:flex}.Yvqh9W_ecommerceResultsHeader span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResultsActions{gap:8px;display:flex}.Yvqh9W_ecommerceResultsEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;border:1.5px dashed var(--dsw-alias-border-l2);border-radius:12px;padding:32px 16px;font-size:13px}.Yvqh9W_ecommerceGroups{flex-direction:column;gap:16px;display:flex}.Yvqh9W_ecommerceGroup{background:0 0;border:none;border-radius:0;flex-direction:column;gap:8px;padding:0;display:flex}.Yvqh9W_ecommerceGroup>header{align-items:center;gap:10px;font-size:13px;display:flex}.Yvqh9W_ecommerceGroup>header strong{font-size:13px}.Yvqh9W_ecommerceGroup>header span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceGroup>header button{margin-left:auto}.Yvqh9W_ecommerceGroupGrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.Yvqh9W_ecommerceTaskCard{aspect-ratio:1;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:10px;justify-content:center;align-items:center;width:100%;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_ecommerceTaskCard[data-status=failed],.Yvqh9W_ecommerceTaskCard[data-status=cancelled]{color:var(--dsw-alias-label-tertiary);font-size:12px}.Yvqh9W_ecommerceTaskCard .Yvqh9W_imageCard{border:none;border-radius:0;width:100%;height:100%;margin:0}.Yvqh9W_ecommerceTaskCard .Yvqh9W_image{object-fit:cover;width:100%;height:100%}.Yvqh9W_ecommerceResultBadge{color:#fff;pointer-events:none;background:#0000008c;border-radius:999px;padding:0 7px;font-size:10px;line-height:16px;position:absolute;top:6px;left:6px}.Yvqh9W_ecommerceTaskActions{opacity:0;background:linear-gradient(#0000,#0000008c);justify-content:center;gap:4px;padding:10px 4px 5px;transition:opacity .12s;display:flex;position:absolute;bottom:0;left:0;right:0}.Yvqh9W_ecommerceTaskCard:hover .Yvqh9W_ecommerceTaskActions{opacity:1}.Yvqh9W_ecommerceActionChip{color:#111;cursor:pointer;white-space:nowrap;background:#ffffffeb;border:none;border-radius:6px;padding:0 6px;font-size:10px;font-weight:500;line-height:18px;text-decoration:none}.Yvqh9W_ecommerceActionChip:hover{background:#fff}.Yvqh9W_ecommerceActionChip:disabled{opacity:.5;cursor:default}.Yvqh9W_ecommerceTaskState{color:var(--dsw-alias-label-secondary);text-align:center;word-break:break-all;flex-direction:column;gap:3px;padding:10px 8px;font-size:11px;display:flex}.Yvqh9W_ecommerceTaskState b{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_topNav{flex:none;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.Yvqh9W_topNavItem{height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:0 14px;font-size:13px;display:inline-flex}.Yvqh9W_topNavItem,.Yvqh9W_topNavItem span{white-space:nowrap}.Yvqh9W_topNavItem:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_topNavItem[data-active]{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_topNavDivider{background:var(--dsw-alias-border-l2);width:1px;height:16px;margin:0 8px}.Yvqh9W_panelHeaderActions{align-items:center;gap:10px;display:inline-flex}.Yvqh9W_chatToggle{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;border-radius:999px;align-items:center;gap:5px;padding:0 10px;font-size:12px;display:inline-flex}.Yvqh9W_chatToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_chatToggle[data-open=true]{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0,1fr)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation],html[data-dsh-imagegen-chat-collapsed] [data-dsh-imagegen-chat-resizer]{display:none!important}.Yvqh9W_configResizer{cursor:col-resize;z-index:6;width:6px;height:100%;position:absolute;top:0;right:0}.Yvqh9W_configResizer:hover{background:linear-gradient(90deg, transparent, var(--dsw-alias-border-l2))}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configResizer{display:none}.Yvqh9W_modeRow{align-items:center;gap:8px;display:flex}.Yvqh9W_modePill{flex:1;justify-content:center;height:28px;font-size:12.5px}.Yvqh9W_modePill,.Yvqh9W_modePill span,.Yvqh9W_modePill div{white-space:nowrap;min-width:0}.Yvqh9W_uploadBox{min-height:128px;color:var(--dsw-alias-label-secondary);border:1.5px dashed var(--dsw-alias-border-l2);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;font-size:12.5px;display:flex}.Yvqh9W_uploadBox:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_uploadBox:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_uploadIcon{color:var(--dsw-alias-label-tertiary);display:inline-flex}.Yvqh9W_uploadHint{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_reference{flex-direction:column;gap:8px;display:flex}.Yvqh9W_referenceImage{object-fit:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;width:100%;max-height:176px}.Yvqh9W_referenceActions{gap:8px;display:flex}.Yvqh9W_hiddenFile{display:none}.Yvqh9W_prompt{width:100%;min-height:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);resize:vertical;box-sizing:border-box;border-radius:10px;outline:none;padding:10px 12px;font-family:inherit;font-size:13px;line-height:1.6}.Yvqh9W_prompt:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_prompt::placeholder{color:var(--dsw-alias-label-tertiary)}.Yvqh9W_promptFooter{justify-content:space-between;align-items:center;gap:8px;margin-top:-6px;display:flex}.Yvqh9W_templatesButton{border:1px solid var(--dsw-alias-brand-primary);background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 5%, transparent));height:26px;color:var(--dsw-alias-brand-primary);cursor:pointer;box-shadow:0 1px 0 color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12px;font-weight:600;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex}.Yvqh9W_templatesButton svg{flex:none}.Yvqh9W_templatesButton:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 24%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent));color:var(--dsw-alias-brand-primary);box-shadow:0 2px 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);transform:translateY(-1px)}.Yvqh9W_templatesButton:active{transform:translateY(0)}.Yvqh9W_enhanceButton{border:1px solid var(--dsw-alias-border-l2);height:26px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);font:inherit;cursor:pointer;border-radius:999px;margin-left:auto;padding:0 11px;font-size:12px}.Yvqh9W_enhanceButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_enhanceButton:disabled{opacity:.5;cursor:default}.Yvqh9W_promptCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.Yvqh9W_paramGroup{flex-direction:column;gap:8px;display:flex}.Yvqh9W_paramLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_optionRow{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_optionGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_optionPill{justify-content:center}.Yvqh9W_paramHint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.45}.Yvqh9W_footer{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:10px 2px 0 0;display:flex}.Yvqh9W_modelWrap{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_modelLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_modelSelect{width:100%;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;text-align:left;border-radius:18px;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:0 12px;font-family:inherit;font-size:13px;display:flex}.Yvqh9W_modelSelect:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_modelSelect:disabled{opacity:.55;cursor:default}.Yvqh9W_modelMenu{min-width:0;display:block;position:relative}.Yvqh9W_modelMenuList{z-index:40;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;right:0;overflow:hidden;box-shadow:0 -8px 24px #0000002e}.Yvqh9W_modelMenuItem{width:100%;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:8px;padding:7px 10px;font-size:13px;display:block;overflow:hidden}.Yvqh9W_modelMenuItem:hover{background:var(--dsw-alias-bg-hover)}.Yvqh9W_modelMenuItem[data-selected]{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-1);font-weight:600}.Yvqh9W_generateButton{width:100%}.Yvqh9W_generateInner{align-items:center;gap:7px;display:inline-flex}.Yvqh9W_canvasState{text-align:center;color:var(--dsw-alias-label-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.Yvqh9W_canvasStateTitle{color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:600}.Yvqh9W_canvasStateHint{max-width:380px;font-size:12px;line-height:1.6}.Yvqh9W_canvasEmptyIcon{color:var(--dsw-alias-label-tertiary);margin-bottom:4px;display:inline-flex}.Yvqh9W_canvasError{color:var(--dsw-alias-label-error);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-label-error);overflow-wrap:anywhere;border-radius:10px;flex:none;margin:14px;padding:10px 14px;font-size:12.5px;line-height:1.6}.Yvqh9W_canvasBody{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.Yvqh9W_canvasBody::-webkit-scrollbar{width:8px}.Yvqh9W_canvasBody::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvasMeta{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Yvqh9W_canvasHistoryTag{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px}.Yvqh9W_grid{flex:1;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;display:grid}.Yvqh9W_grid[data-count=\"1\"] .Yvqh9W_imageCard{grid-area:1/1/3/3}.Yvqh9W_imageCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:zoom-in;border-radius:12px;flex-direction:column;min-height:0;margin:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_imageCard:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_image{object-fit:cover;background:var(--dsw-alias-bg-base);flex:1;width:100%;min-height:0;display:block}.Yvqh9W_imageCaption{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;border-top:1px solid var(--dsw-alias-border-l1);padding:7px 10px;font-size:11px;line-height:1.5;overflow:hidden}.Yvqh9W_download{color:#fff;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;text-decoration:none;transition:opacity .12s;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_download{opacity:1}.Yvqh9W_download:hover{background:#0f1218f0}.Yvqh9W_download:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd{font:inherit;color:#fff;cursor:pointer;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_galleryAdd{opacity:1}.Yvqh9W_galleryAdd:hover{background:#0f1218f0}.Yvqh9W_galleryAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_conversationAdd{color:#fff;cursor:pointer;font:inherit;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:38px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_conversationAdd,.Yvqh9W_conversationAdd:focus-visible{opacity:1}.Yvqh9W_conversationAdd:hover{background:#0f1218f0}.Yvqh9W_conversationAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_conversationAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_zoomHint{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);opacity:0;backdrop-filter:blur(4px);pointer-events:none;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;bottom:8px;left:8px}.Yvqh9W_imageCard:hover .Yvqh9W_zoomHint{opacity:1}.Yvqh9W_spinner,.Yvqh9W_bigSpinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;animation:.8s linear infinite Yvqh9W_dshImageGenSpin;display:inline-block}.Yvqh9W_spinner{width:11px;height:11px}.Yvqh9W_bigSpinner{width:30px;height:30px;color:var(--dsw-alias-state-business-primary);border-width:3px;margin-bottom:6px}.Yvqh9W_lightbox{z-index:1000;backdrop-filter:blur(6px);background:#000000b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.Yvqh9W_lightboxClose{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex;position:absolute;top:16px;right:16px}.Yvqh9W_lightboxClose:hover{background:#ffffff42}.Yvqh9W_lightboxNav{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.Yvqh9W_lightboxNav:hover{background:#ffffff42}.Yvqh9W_lightboxNav[data-dir=prev]{left:max(20px,50% - 640px)}.Yvqh9W_lightboxNav[data-dir=next]{right:max(20px,50% - 640px)}.Yvqh9W_lightboxFigure{flex-direction:column;gap:10px;width:min(1100px,100vw - 160px);max-width:min(1100px,100vw - 160px);height:min(820px,100vh - 48px);min-height:0;margin:0;display:flex}.Yvqh9W_lightboxStage{background:#ffffff0a;border-radius:10px;flex:1;min-height:0;position:relative;overflow:auto}.Yvqh9W_lightboxScaleFrame{justify-content:center;align-items:center;min-width:100%;min-height:100%;display:flex}.Yvqh9W_lightboxImage{object-fit:contain;border-radius:10px;max-width:100%;max-height:100%;display:block;box-shadow:0 24px 80px #00000080}.Yvqh9W_lightboxTools{justify-content:center;align-items:center;gap:6px;display:flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel,.Yvqh9W_lightboxCopy{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel{height:32px}.Yvqh9W_lightboxTool{border-radius:50%;width:32px}.Yvqh9W_lightboxZoomLevel{min-width:58px;font:inherit;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 9px;font-size:12px}.Yvqh9W_lightboxTool:hover,.Yvqh9W_lightboxZoomLevel:hover,.Yvqh9W_lightboxCopy:hover{background:#ffffff42}.Yvqh9W_lightboxCaptionRow{align-items:flex-start;gap:8px;min-width:0;display:flex}.Yvqh9W_lightboxCaption{color:#ffffffe6;-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;min-width:0;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.Yvqh9W_lightboxCopy{min-height:28px;font:inherit;white-space:nowrap;border-radius:999px;flex:none;gap:5px;padding:4px 9px;font-size:12px}.Yvqh9W_lightboxMeta{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_lightboxIndex{color:#fffc;font-variant-numeric:tabular-nums;font-size:12px}.Yvqh9W_lightboxActions{align-items:center;gap:8px;display:inline-flex}.Yvqh9W_lightboxDownload,.Yvqh9W_lightboxEdit{font:inherit;color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px;padding:4px 14px;font-size:12.5px;font-weight:500;text-decoration:none}.Yvqh9W_lightboxDownload:hover,.Yvqh9W_lightboxEdit:hover{background:#ffffff42}.Yvqh9W_lightboxEdit{color:#fff;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px}@media (width<=720px){.Yvqh9W_lightbox{padding:16px}.Yvqh9W_lightboxFigure{width:calc(100vw - 32px);max-width:none}.Yvqh9W_lightboxNav[data-dir=prev]{left:20px}.Yvqh9W_lightboxNav[data-dir=next]{right:20px}.Yvqh9W_lightboxCaptionRow,.Yvqh9W_lightboxMeta{flex-direction:column;align-items:stretch}.Yvqh9W_lightboxCopy,.Yvqh9W_lightboxActions{align-self:flex-end}}@keyframes Yvqh9W_dshImageGenSpin{to{transform:rotate(360deg)}}.Yvqh9W_galleryToast{z-index:30;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Yvqh9W_dshImageGenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.Yvqh9W_conversationToast{z-index:30;border:1px solid var(--dsw-alias-border-l2);max-width:calc(100% - 32px);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);pointer-events:none;backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@media (prefers-reduced-motion:reduce){.Yvqh9W_download,.Yvqh9W_spinner,.Yvqh9W_bigSpinner{transition:none;animation-duration:1.5s}}.Yvqh9W_config[data-gallery=true] .Yvqh9W_configScroll{flex:none;order:1;display:flex;overflow:visible}.Yvqh9W_config[data-gallery=true] .Yvqh9W_galleryFilters{flex:1;order:2;min-height:0}.Yvqh9W_galleryFilters{padding:18px 14px;overflow:hidden auto}.Yvqh9W_galleryFilterHeading{color:var(--dsw-alias-label-tertiary);margin:0 4px 10px;font-size:12px;font-weight:600}.Yvqh9W_galleryFilter{width:100%;min-height:34px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:9px;justify-content:space-between;align-items:center;padding:0 10px;display:flex}.Yvqh9W_galleryFilter:hover,.Yvqh9W_galleryFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterCount{min-width:20px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 6px;font-size:11px}.Yvqh9W_galleryFilterDivider{background:var(--dsw-alias-border-l1);height:1px;margin:18px 4px}.Yvqh9W_galleryRatioList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryRatio{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border:0;border-radius:999px;padding:6px 10px;font-size:12px}.Yvqh9W_galleryRatio[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 13%, transparent)}.Yvqh9W_galleryTagFilterList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryTagFilter{border:1px solid var(--dsw-alias-border-l1);min-width:0;max-width:100%;min-height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:6px;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:inline-flex}.Yvqh9W_galleryTagFilter span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:112px;overflow:hidden}.Yvqh9W_galleryTagFilter span:last-child{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTagFilter:hover,.Yvqh9W_galleryTagFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterNote{color:var(--dsw-alias-label-quaternary);margin:20px 4px 0;font-size:11px;line-height:1.5}.Yvqh9W_galleryWorkspace{box-sizing:border-box;flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;padding:22px 24px 26px;display:flex;position:absolute;inset:0;overflow:hidden}.Yvqh9W_galleryToolbar{flex:none;justify-content:space-between;align-items:center;gap:16px;min-width:0;margin-bottom:18px;display:flex}.Yvqh9W_galleryHeading{color:var(--dsw-alias-label-primary);margin:0;font-size:20px;font-weight:700;display:inline}.Yvqh9W_galleryCount{color:var(--dsw-alias-label-tertiary);margin-left:8px;font-size:13px}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.Yvqh9W_gallerySelectMode,.Yvqh9W_galleryBulkButton,.Yvqh9W_gallerySelectionClear{border:1px solid var(--dsw-alias-border-l1);min-height:30px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_gallerySelectMode:hover,.Yvqh9W_gallerySelectMode[data-active],.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 38%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_galleryBulkButton:disabled{cursor:not-allowed;opacity:.45}.Yvqh9W_gallerySelectionBar{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 7%, var(--dsw-alias-bg-layer-1));border-radius:9px;flex:none;align-items:center;gap:10px;min-width:0;margin:-4px 0 16px;padding:10px 12px;display:flex}.Yvqh9W_gallerySelectionBar strong{color:var(--dsw-alias-brand-primary);flex:none;font-size:12px}.Yvqh9W_gallerySelectionClear{margin-left:auto}.Yvqh9W_gallerySelectionClear:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_galleryTagInput,.Yvqh9W_gallerySearch{border:1px solid var(--dsw-alias-border-l1);min-width:0;height:30px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:inherit;border-radius:7px;outline:none;padding:0 10px;font-size:12px}.Yvqh9W_galleryTagInput{flex:190px}.Yvqh9W_galleryTagInput:focus,.Yvqh9W_gallerySearch:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryViewToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;padding:3px;display:flex}.Yvqh9W_galleryViewToggle button,.Yvqh9W_gallerySort,.Yvqh9W_galleryClear{min-height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_galleryViewToggle button[data-active],.Yvqh9W_galleryViewToggle button:hover,.Yvqh9W_gallerySort:hover,.Yvqh9W_galleryClear:hover{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_gallerySort{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1)}.Yvqh9W_galleryClear{border:1px solid var(--dsw-alias-border-l1)}.Yvqh9W_compareControl{flex-direction:column;gap:6px;margin:0 0 10px;display:flex}.Yvqh9W_compareToggle,.Yvqh9W_compareModelChoices label{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.Yvqh9W_compareToggle input,.Yvqh9W_compareModelChoices input{accent-color:var(--dsw-alias-brand-primary)}.Yvqh9W_compareModelChoices{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_compareModelChoices label{border:1px solid var(--dsw-alias-border-l1);border-radius:5px;padding:4px 6px;font-size:10px}.Yvqh9W_comparisonBoard{z-index:4;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:8px;flex-direction:column;display:flex;position:absolute;inset:14px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_comparisonBoard>header{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.Yvqh9W_comparisonBoard>header div{align-items:baseline;gap:7px;display:flex}.Yvqh9W_comparisonBoard>header strong{color:var(--dsw-alias-label-primary);font-size:13px}.Yvqh9W_comparisonBoard>header span{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_comparisonBoard>header button{border:1px solid var(--dsw-alias-border-l1);min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:5px;padding:0 9px;font-size:11px}.Yvqh9W_comparisonGrid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;min-height:0;padding:12px;display:grid;overflow:auto}.Yvqh9W_comparisonGrid article{flex-direction:column;gap:7px;min-width:0;height:100%;min-height:0;display:flex}.Yvqh9W_comparisonGrid article>strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_comparisonImageButton{cursor:zoom-in;background:var(--dsw-alias-bg-base);border:0;flex:1;width:100%;min-height:0;padding:0;display:flex;overflow:hidden}.Yvqh9W_comparisonImageButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.Yvqh9W_comparisonGrid article>span{min-height:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);flex:1;place-items:center;font-size:12px;display:grid}.Yvqh9W_comparisonGrid img{object-fit:contain;background:var(--dsw-alias-bg-base);flex:1;width:100%;height:100%;min-height:0;max-height:none;display:block}.Yvqh9W_comparisonFullscreen{z-index:1200;background:#000000eb;padding:54px 24px 24px;position:fixed;inset:0;overflow:auto}.Yvqh9W_comparisonFullscreenGrid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:18px;min-height:100%;display:grid}.Yvqh9W_comparisonFullscreen figure{min-width:0;margin:0}.Yvqh9W_comparisonFullscreen figcaption{color:#fff;margin-bottom:8px;font-size:13px;font-weight:600}.Yvqh9W_comparisonFullscreen img{background:#111;width:100%;margin-bottom:10px;display:block}.Yvqh9W_historyItem[data-comparison]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 55%, var(--dsw-alias-border-l1))}.Yvqh9W_galleryMasonry{box-sizing:border-box;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex:auto;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:16px;width:100%;min-width:0;max-width:100%;height:0;min-height:0;padding:2px 8px 16px 2px;display:grid;overflow:hidden scroll}.Yvqh9W_galleryMasonry::-webkit-scrollbar{width:8px}.Yvqh9W_galleryMasonry::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_galleryCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;width:100%;margin:0;display:block;position:relative;overflow:hidden;box-shadow:0 5px 18px #18203612}.Yvqh9W_galleryCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent), 0 5px 18px #18203612}.Yvqh9W_gallerySelect{z-index:2;cursor:pointer;background:#00000094;border:1px solid #ffffffbf;border-radius:7px;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:9px;right:9px}.Yvqh9W_gallerySelect input{width:16px;height:16px;accent-color:var(--dsw-alias-brand-primary);cursor:pointer;margin:0}.Yvqh9W_galleryImageButton{background:var(--dsw-alias-bg-base);cursor:zoom-in;border:0;width:100%;padding:0;display:block;position:relative}.Yvqh9W_galleryImageButton[data-selecting]{cursor:pointer}.Yvqh9W_galleryImage{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+1) .Yvqh9W_galleryImage{aspect-ratio:4/5}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+2) .Yvqh9W_galleryImage{aspect-ratio:4/3}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n) .Yvqh9W_galleryImage{aspect-ratio:3/4}.Yvqh9W_galleryBadge{color:#fff;backdrop-filter:blur(4px);background:#121724c2;border-radius:999px;padding:4px 9px;font-size:11px;position:absolute;top:10px;left:10px}.Yvqh9W_galleryCardActions{padding:8px 12px 0;display:flex}.Yvqh9W_galleryCardAction{border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:4px;padding:0 4px;font-size:10px;font-weight:500;display:inline-flex}.Yvqh9W_galleryCardAction:hover,.Yvqh9W_galleryCardAction:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_galleryCardAction:disabled{cursor:wait;opacity:.55}.Yvqh9W_galleryCardFooter{align-items:center;gap:9px;min-width:0;padding:10px 12px;display:flex}.Yvqh9W_galleryAvatar{color:#fff;background:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;width:27px;height:27px;font-size:12px;font-weight:700;display:grid}.Yvqh9W_galleryCardInfo{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.Yvqh9W_galleryCardInfo strong,.Yvqh9W_galleryCardInfo small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Yvqh9W_galleryCardInfo strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_galleryCardInfo small{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.Yvqh9W_galleryTags button{max-width:96px;min-height:19px;color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);cursor:pointer;font:inherit;text-overflow:ellipsis;white-space:nowrap;border:0;border-radius:4px;padding:1px 6px;font-size:10px;line-height:1.35;overflow:hidden}.Yvqh9W_galleryTags button:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 17%, transparent)}.Yvqh9W_galleryTags .Yvqh9W_galleryTagEdit{color:var(--dsw-alias-label-tertiary);background:0 0;flex:none}.Yvqh9W_galleryTagEditor{align-items:center;gap:6px;padding:0 12px 10px 48px;display:flex}.Yvqh9W_galleryTagEditor input{border:1px solid var(--dsw-alias-border-l2);min-width:0;height:27px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:6px;outline:none;flex:1;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor input:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryTagEditor button{border:1px solid var(--dsw-alias-border-l2);height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:6px;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor button[type=submit]{color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryRemove{width:24px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;font-size:18px}.Yvqh9W_galleryRemove:hover{color:var(--dsw-alias-state-error);background:var(--dsw-alias-bg-layer-2)}@media (width<=760px){.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.Yvqh9W_ecommerceWorkspace{padding-inline:2px}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:1fr}}@media (width<=1100px){.Yvqh9W_galleryMasonry{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.Yvqh9W_studio{grid-template-rows:minmax(220px,36%) minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}.Yvqh9W_history{grid-area:1/1;min-height:220px}.Yvqh9W_generation{flex-direction:column;grid-area:2/1;min-height:0}.Yvqh9W_config{width:auto;max-width:none;height:auto;min-height:0}.Yvqh9W_config[data-gallery=true]{flex:none}.Yvqh9W_canvas{min-height:560px}.Yvqh9W_galleryToolbar{flex-direction:column;align-items:flex-start}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;width:100%}.Yvqh9W_galleryMasonry{grid-template-columns:1fr}}";
|
|
5775
6325
|
const tagId$2 = "@dickpy/dsh-imagegen/panel.module.css";
|
|
5776
6326
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
5777
6327
|
const tag = document.createElement("style");
|
|
@@ -5781,226 +6331,226 @@ window.__ModuleLoader__.load({
|
|
|
5781
6331
|
document.head.appendChild(tag);
|
|
5782
6332
|
}
|
|
5783
6333
|
var panel_module_css_default = {
|
|
5784
|
-
"
|
|
5785
|
-
"
|
|
5786
|
-
"
|
|
5787
|
-
"
|
|
5788
|
-
"
|
|
5789
|
-
"
|
|
5790
|
-
"
|
|
5791
|
-
"
|
|
5792
|
-
"
|
|
5793
|
-
"
|
|
5794
|
-
"
|
|
5795
|
-
"comparisonFullscreen": "Yvqh9W_comparisonFullscreen",
|
|
5796
|
-
"galleryToolbarActions": "Yvqh9W_galleryToolbarActions",
|
|
5797
|
-
"galleryCardInfo": "Yvqh9W_galleryCardInfo",
|
|
5798
|
-
"historyActions": "Yvqh9W_historyActions",
|
|
5799
|
-
"comparisonGrid": "Yvqh9W_comparisonGrid",
|
|
5800
|
-
"galleryClear": "Yvqh9W_galleryClear",
|
|
5801
|
-
"taskRow": "Yvqh9W_taskRow",
|
|
5802
|
-
"referenceImage": "Yvqh9W_referenceImage",
|
|
5803
|
-
"image": "Yvqh9W_image",
|
|
5804
|
-
"canvasError": "Yvqh9W_canvasError",
|
|
5805
|
-
"modelMenuList": "Yvqh9W_modelMenuList",
|
|
6334
|
+
"historyNew": "Yvqh9W_historyNew",
|
|
6335
|
+
"historyList": "Yvqh9W_historyList",
|
|
6336
|
+
"sessionTabs": "Yvqh9W_sessionTabs",
|
|
6337
|
+
"ecommerceAdvancedBody": "Yvqh9W_ecommerceAdvancedBody",
|
|
6338
|
+
"imageCard": "Yvqh9W_imageCard",
|
|
6339
|
+
"ecommerceFieldLabel": "Yvqh9W_ecommerceFieldLabel",
|
|
6340
|
+
"compareControl": "Yvqh9W_compareControl",
|
|
6341
|
+
"lightboxImage": "Yvqh9W_lightboxImage",
|
|
6342
|
+
"galleryTagEditor": "Yvqh9W_galleryTagEditor",
|
|
6343
|
+
"configToggle": "Yvqh9W_configToggle",
|
|
6344
|
+
"taskPrompt": "Yvqh9W_taskPrompt",
|
|
5806
6345
|
"connectionDot": "Yvqh9W_connectionDot",
|
|
6346
|
+
"uploadIcon": "Yvqh9W_uploadIcon",
|
|
6347
|
+
"updateText": "Yvqh9W_updateText",
|
|
6348
|
+
"generateButton": "Yvqh9W_generateButton",
|
|
6349
|
+
"card": "Yvqh9W_card",
|
|
6350
|
+
"ecommerceWorkspace": "Yvqh9W_ecommerceWorkspace",
|
|
6351
|
+
"lightboxTool": "Yvqh9W_lightboxTool",
|
|
6352
|
+
"ecommerceResultsEmpty": "Yvqh9W_ecommerceResultsEmpty",
|
|
6353
|
+
"galleryViewToggle": "Yvqh9W_galleryViewToggle",
|
|
6354
|
+
"ecommerceAdvancedChevron": "Yvqh9W_ecommerceAdvancedChevron",
|
|
6355
|
+
"panelHeaderActions": "Yvqh9W_panelHeaderActions",
|
|
6356
|
+
"modelLabel": "Yvqh9W_modelLabel",
|
|
6357
|
+
"paramLabel": "Yvqh9W_paramLabel",
|
|
6358
|
+
"lightboxCaptionRow": "Yvqh9W_lightboxCaptionRow",
|
|
6359
|
+
"previewBadge": "Yvqh9W_previewBadge",
|
|
6360
|
+
"historyEmpty": "Yvqh9W_historyEmpty",
|
|
5807
6361
|
"panel": "Yvqh9W_panel",
|
|
5808
|
-
"
|
|
5809
|
-
"
|
|
5810
|
-
"uploadHint": "Yvqh9W_uploadHint",
|
|
5811
|
-
"zoomHint": "Yvqh9W_zoomHint",
|
|
6362
|
+
"galleryCard": "Yvqh9W_galleryCard",
|
|
6363
|
+
"galleryImage": "Yvqh9W_galleryImage",
|
|
5812
6364
|
"galleryCardActions": "Yvqh9W_galleryCardActions",
|
|
5813
|
-
"
|
|
5814
|
-
"card": "Yvqh9W_card",
|
|
5815
|
-
"canvasHistoryTag": "Yvqh9W_canvasHistoryTag",
|
|
5816
|
-
"compareModelChoices": "Yvqh9W_compareModelChoices",
|
|
5817
|
-
"historyNew": "Yvqh9W_historyNew",
|
|
5818
|
-
"galleryBadge": "Yvqh9W_galleryBadge",
|
|
5819
|
-
"galleryTags": "Yvqh9W_galleryTags",
|
|
6365
|
+
"promptFooter": "Yvqh9W_promptFooter",
|
|
5820
6366
|
"ecommercePrimaryAction": "Yvqh9W_ecommercePrimaryAction",
|
|
5821
|
-
"
|
|
5822
|
-
"config": "Yvqh9W_config",
|
|
5823
|
-
"generation": "Yvqh9W_generation",
|
|
6367
|
+
"galleryTagFilterList": "Yvqh9W_galleryTagFilterList",
|
|
5824
6368
|
"ecommerceSection": "Yvqh9W_ecommerceSection",
|
|
5825
|
-
"
|
|
6369
|
+
"ecommerceFooterHint": "Yvqh9W_ecommerceFooterHint",
|
|
6370
|
+
"comparisonFullscreenGrid": "Yvqh9W_comparisonFullscreenGrid",
|
|
6371
|
+
"sessionTabIcon": "Yvqh9W_sessionTabIcon",
|
|
6372
|
+
"taskTrayChevron": "Yvqh9W_taskTrayChevron",
|
|
6373
|
+
"ecommerceResultBadge": "Yvqh9W_ecommerceResultBadge",
|
|
6374
|
+
"ecommerceParamGrid": "Yvqh9W_ecommerceParamGrid",
|
|
5826
6375
|
"updateRelease": "Yvqh9W_updateRelease",
|
|
5827
|
-
"
|
|
5828
|
-
"
|
|
5829
|
-
"canvasStateTitle": "Yvqh9W_canvasStateTitle",
|
|
5830
|
-
"dshImageGenSpin": "Yvqh9W_dshImageGenSpin",
|
|
5831
|
-
"galleryRatioList": "Yvqh9W_galleryRatioList",
|
|
5832
|
-
"chatToggle": "Yvqh9W_chatToggle",
|
|
5833
|
-
"compareControl": "Yvqh9W_compareControl",
|
|
5834
|
-
"configScroll": "Yvqh9W_configScroll",
|
|
5835
|
-
"galleryImage": "Yvqh9W_galleryImage",
|
|
5836
|
-
"previewBadge": "Yvqh9W_previewBadge",
|
|
5837
|
-
"conversationAdd": "Yvqh9W_conversationAdd",
|
|
5838
|
-
"ecommerceResultsHeader": "Yvqh9W_ecommerceResultsHeader",
|
|
5839
|
-
"modelSelect": "Yvqh9W_modelSelect",
|
|
5840
|
-
"generateInner": "Yvqh9W_generateInner",
|
|
6376
|
+
"optionPill": "Yvqh9W_optionPill",
|
|
6377
|
+
"download": "Yvqh9W_download",
|
|
5841
6378
|
"entryIcon": "Yvqh9W_entryIcon",
|
|
5842
|
-
"
|
|
5843
|
-
"
|
|
5844
|
-
"
|
|
5845
|
-
"
|
|
5846
|
-
"
|
|
5847
|
-
"
|
|
5848
|
-
"
|
|
6379
|
+
"galleryCardFooter": "Yvqh9W_galleryCardFooter",
|
|
6380
|
+
"ecommerceUploadHero": "Yvqh9W_ecommerceUploadHero",
|
|
6381
|
+
"galleryRatioList": "Yvqh9W_galleryRatioList",
|
|
6382
|
+
"compareModelChoices": "Yvqh9W_compareModelChoices",
|
|
6383
|
+
"history": "Yvqh9W_history",
|
|
6384
|
+
"modelMenuItem": "Yvqh9W_modelMenuItem",
|
|
6385
|
+
"ecommercePlanList": "Yvqh9W_ecommercePlanList",
|
|
6386
|
+
"topNavItem": "Yvqh9W_topNavItem",
|
|
6387
|
+
"uploadBox": "Yvqh9W_uploadBox",
|
|
6388
|
+
"promptCount": "Yvqh9W_promptCount",
|
|
6389
|
+
"galleryAdd": "Yvqh9W_galleryAdd",
|
|
6390
|
+
"taskTrayToggle": "Yvqh9W_taskTrayToggle",
|
|
6391
|
+
"modelMenu": "Yvqh9W_modelMenu",
|
|
6392
|
+
"lightboxCopy": "Yvqh9W_lightboxCopy",
|
|
5849
6393
|
"galleryFilter": "Yvqh9W_galleryFilter",
|
|
5850
|
-
"galleryRatio": "Yvqh9W_galleryRatio",
|
|
5851
|
-
"galleryToolbar": "Yvqh9W_galleryToolbar",
|
|
5852
|
-
"ecommerceTaskState": "Yvqh9W_ecommerceTaskState",
|
|
5853
|
-
"paramLabel": "Yvqh9W_paramLabel",
|
|
5854
|
-
"galleryCount": "Yvqh9W_galleryCount",
|
|
5855
|
-
"connectionStatus": "Yvqh9W_connectionStatus",
|
|
5856
|
-
"hiddenFile": "Yvqh9W_hiddenFile",
|
|
5857
|
-
"lightboxTool": "Yvqh9W_lightboxTool",
|
|
5858
|
-
"galleryTagInput": "Yvqh9W_galleryTagInput",
|
|
5859
|
-
"galleryHeading": "Yvqh9W_galleryHeading",
|
|
5860
|
-
"canvasState": "Yvqh9W_canvasState",
|
|
5861
|
-
"comparisonFullscreenGrid": "Yvqh9W_comparisonFullscreenGrid",
|
|
5862
|
-
"historyFilters": "Yvqh9W_historyFilters",
|
|
5863
|
-
"ecommercePlanWarn": "Yvqh9W_ecommercePlanWarn",
|
|
5864
|
-
"footer": "Yvqh9W_footer",
|
|
5865
|
-
"ecommerceTaskActions": "Yvqh9W_ecommerceTaskActions",
|
|
5866
6394
|
"lightboxScaleFrame": "Yvqh9W_lightboxScaleFrame",
|
|
5867
|
-
"
|
|
5868
|
-
"
|
|
5869
|
-
"
|
|
5870
|
-
"
|
|
6395
|
+
"ecommerceAssetAdd": "Yvqh9W_ecommerceAssetAdd",
|
|
6396
|
+
"ecommerceAdvancedToggle": "Yvqh9W_ecommerceAdvancedToggle",
|
|
6397
|
+
"lightboxEdit": "Yvqh9W_lightboxEdit",
|
|
6398
|
+
"ecommerceSlotCount": "Yvqh9W_ecommerceSlotCount",
|
|
6399
|
+
"modeRow": "Yvqh9W_modeRow",
|
|
6400
|
+
"taskRow": "Yvqh9W_taskRow",
|
|
6401
|
+
"ecommercePlanNote": "Yvqh9W_ecommercePlanNote",
|
|
5871
6402
|
"referenceActions": "Yvqh9W_referenceActions",
|
|
5872
|
-
"
|
|
5873
|
-
"
|
|
5874
|
-
"
|
|
5875
|
-
"
|
|
5876
|
-
"
|
|
5877
|
-
"
|
|
5878
|
-
"
|
|
5879
|
-
"
|
|
5880
|
-
"
|
|
5881
|
-
"historyInfo": "Yvqh9W_historyInfo",
|
|
5882
|
-
"galleryTagEdit": "Yvqh9W_galleryTagEdit",
|
|
5883
|
-
"ecommerceGroups": "Yvqh9W_ecommerceGroups",
|
|
5884
|
-
"galleryFilters": "Yvqh9W_galleryFilters",
|
|
5885
|
-
"lightboxDownload": "Yvqh9W_lightboxDownload",
|
|
5886
|
-
"lightboxMeta": "Yvqh9W_lightboxMeta",
|
|
5887
|
-
"comparisonImageButton": "Yvqh9W_comparisonImageButton",
|
|
5888
|
-
"ecommerceGroup": "Yvqh9W_ecommerceGroup",
|
|
5889
|
-
"sessionTabLabel": "Yvqh9W_sessionTabLabel",
|
|
5890
|
-
"ecommercePlanList": "Yvqh9W_ecommercePlanList",
|
|
6403
|
+
"lightboxTools": "Yvqh9W_lightboxTools",
|
|
6404
|
+
"gallerySort": "Yvqh9W_gallerySort",
|
|
6405
|
+
"ecommerceRefRow": "Yvqh9W_ecommerceRefRow",
|
|
6406
|
+
"galleryToolbarActions": "Yvqh9W_galleryToolbarActions",
|
|
6407
|
+
"view": "Yvqh9W_view",
|
|
6408
|
+
"galleryToast": "Yvqh9W_galleryToast",
|
|
6409
|
+
"ecommerceFooterBody": "Yvqh9W_ecommerceFooterBody",
|
|
6410
|
+
"uploadHint": "Yvqh9W_uploadHint",
|
|
6411
|
+
"taskStatus": "Yvqh9W_taskStatus",
|
|
5891
6412
|
"panelTitle": "Yvqh9W_panelTitle",
|
|
5892
|
-
"
|
|
5893
|
-
"
|
|
5894
|
-
"
|
|
5895
|
-
"
|
|
5896
|
-
"
|
|
5897
|
-
"
|
|
5898
|
-
"ecommerceAsset": "Yvqh9W_ecommerceAsset",
|
|
5899
|
-
"compareToggle": "Yvqh9W_compareToggle",
|
|
5900
|
-
"galleryBulkButton": "Yvqh9W_galleryBulkButton",
|
|
5901
|
-
"entryLabel": "Yvqh9W_entryLabel",
|
|
5902
|
-
"galleryCardAction": "Yvqh9W_galleryCardAction",
|
|
5903
|
-
"taskTrayClose": "Yvqh9W_taskTrayClose",
|
|
5904
|
-
"galleryTagFilterList": "Yvqh9W_galleryTagFilterList",
|
|
5905
|
-
"updateActions": "Yvqh9W_updateActions",
|
|
5906
|
-
"lightboxCopy": "Yvqh9W_lightboxCopy",
|
|
6413
|
+
"galleryTagInput": "Yvqh9W_galleryTagInput",
|
|
6414
|
+
"zoomHint": "Yvqh9W_zoomHint",
|
|
6415
|
+
"lightboxActions": "Yvqh9W_lightboxActions",
|
|
6416
|
+
"entry": "Yvqh9W_entry",
|
|
6417
|
+
"ecommerceGroups": "Yvqh9W_ecommerceGroups",
|
|
6418
|
+
"lightboxNav": "Yvqh9W_lightboxNav",
|
|
5907
6419
|
"galleryFilterCount": "Yvqh9W_galleryFilterCount",
|
|
5908
|
-
"
|
|
5909
|
-
"
|
|
5910
|
-
"
|
|
5911
|
-
"ecommerceResultBadge": "Yvqh9W_ecommerceResultBadge",
|
|
5912
|
-
"ecommerceActionChip": "Yvqh9W_ecommerceActionChip",
|
|
5913
|
-
"canvasStateHint": "Yvqh9W_canvasStateHint",
|
|
6420
|
+
"config": "Yvqh9W_config",
|
|
6421
|
+
"historyTitle": "Yvqh9W_historyTitle",
|
|
6422
|
+
"configResizer": "Yvqh9W_configResizer",
|
|
5914
6423
|
"bigSpinner": "Yvqh9W_bigSpinner",
|
|
5915
|
-
"
|
|
5916
|
-
"
|
|
5917
|
-
"
|
|
5918
|
-
"
|
|
5919
|
-
"panelHeaderActions": "Yvqh9W_panelHeaderActions",
|
|
5920
|
-
"ecommerceResultsEmpty": "Yvqh9W_ecommerceResultsEmpty",
|
|
5921
|
-
"sessionTabs": "Yvqh9W_sessionTabs",
|
|
5922
|
-
"panelHeader": "Yvqh9W_panelHeader",
|
|
5923
|
-
"taskTray": "Yvqh9W_taskTray",
|
|
5924
|
-
"topNavItem": "Yvqh9W_topNavItem",
|
|
5925
|
-
"ecommerceAdvancedToggle": "Yvqh9W_ecommerceAdvancedToggle",
|
|
5926
|
-
"githubLink": "Yvqh9W_githubLink",
|
|
5927
|
-
"ecommerceRefRow": "Yvqh9W_ecommerceRefRow",
|
|
5928
|
-
"modeRow": "Yvqh9W_modeRow",
|
|
6424
|
+
"comparisonFullscreen": "Yvqh9W_comparisonFullscreen",
|
|
6425
|
+
"historyFilters": "Yvqh9W_historyFilters",
|
|
6426
|
+
"historyIconAction": "Yvqh9W_historyIconAction",
|
|
6427
|
+
"configScroll": "Yvqh9W_configScroll",
|
|
5929
6428
|
"historyClear": "Yvqh9W_historyClear",
|
|
5930
|
-
"
|
|
5931
|
-
"
|
|
5932
|
-
"
|
|
5933
|
-
"
|
|
5934
|
-
"
|
|
5935
|
-
"
|
|
5936
|
-
"
|
|
5937
|
-
"
|
|
5938
|
-
"
|
|
5939
|
-
"lightboxStage": "Yvqh9W_lightboxStage",
|
|
5940
|
-
"canvasBody": "Yvqh9W_canvasBody",
|
|
5941
|
-
"download": "Yvqh9W_download",
|
|
5942
|
-
"galleryFilterHeading": "Yvqh9W_galleryFilterHeading",
|
|
5943
|
-
"galleryCardFooter": "Yvqh9W_galleryCardFooter",
|
|
5944
|
-
"galleryRemove": "Yvqh9W_galleryRemove",
|
|
5945
|
-
"gallerySort": "Yvqh9W_gallerySort",
|
|
5946
|
-
"ecommerceFooterHint": "Yvqh9W_ecommerceFooterHint",
|
|
5947
|
-
"imageCaption": "Yvqh9W_imageCaption",
|
|
5948
|
-
"galleryTagFilter": "Yvqh9W_galleryTagFilter",
|
|
6429
|
+
"templatesButton": "Yvqh9W_templatesButton",
|
|
6430
|
+
"enhanceButton": "Yvqh9W_enhanceButton",
|
|
6431
|
+
"historySearch": "Yvqh9W_historySearch",
|
|
6432
|
+
"ecommerceSectionHint": "Yvqh9W_ecommerceSectionHint",
|
|
6433
|
+
"ecommerceTaskActions": "Yvqh9W_ecommerceTaskActions",
|
|
6434
|
+
"canvasHistoryTag": "Yvqh9W_canvasHistoryTag",
|
|
6435
|
+
"chatResizer": "Yvqh9W_chatResizer",
|
|
6436
|
+
"gallerySearch": "Yvqh9W_gallerySearch",
|
|
6437
|
+
"historyItem": "Yvqh9W_historyItem",
|
|
5949
6438
|
"prompt": "Yvqh9W_prompt",
|
|
5950
|
-
"galleryTagEditor": "Yvqh9W_galleryTagEditor",
|
|
5951
6439
|
"paramHint": "Yvqh9W_paramHint",
|
|
5952
|
-
"
|
|
5953
|
-
"
|
|
5954
|
-
"
|
|
5955
|
-
"
|
|
5956
|
-
"
|
|
5957
|
-
"
|
|
5958
|
-
"
|
|
5959
|
-
"
|
|
5960
|
-
"
|
|
5961
|
-
"
|
|
5962
|
-
"
|
|
5963
|
-
"canvasMeta": "Yvqh9W_canvasMeta",
|
|
6440
|
+
"modelSelect": "Yvqh9W_modelSelect",
|
|
6441
|
+
"connectionStatus": "Yvqh9W_connectionStatus",
|
|
6442
|
+
"sessionTab": "Yvqh9W_sessionTab",
|
|
6443
|
+
"ecommerceSlotCard": "Yvqh9W_ecommerceSlotCard",
|
|
6444
|
+
"historyMain": "Yvqh9W_historyMain",
|
|
6445
|
+
"grid": "Yvqh9W_grid",
|
|
6446
|
+
"imageCaption": "Yvqh9W_imageCaption",
|
|
6447
|
+
"lightboxClose": "Yvqh9W_lightboxClose",
|
|
6448
|
+
"galleryFilterDivider": "Yvqh9W_galleryFilterDivider",
|
|
6449
|
+
"galleryFilterNote": "Yvqh9W_galleryFilterNote",
|
|
6450
|
+
"historyHeader": "Yvqh9W_historyHeader",
|
|
5964
6451
|
"spinner": "Yvqh9W_spinner",
|
|
5965
|
-
"
|
|
5966
|
-
"
|
|
5967
|
-
"
|
|
5968
|
-
"
|
|
6452
|
+
"galleryHeading": "Yvqh9W_galleryHeading",
|
|
6453
|
+
"gallerySelectMode": "Yvqh9W_gallerySelectMode",
|
|
6454
|
+
"galleryClear": "Yvqh9W_galleryClear",
|
|
6455
|
+
"compareToggle": "Yvqh9W_compareToggle",
|
|
6456
|
+
"comparisonGrid": "Yvqh9W_comparisonGrid",
|
|
6457
|
+
"gallerySelect": "Yvqh9W_gallerySelect",
|
|
5969
6458
|
"updateBanner": "Yvqh9W_updateBanner",
|
|
5970
|
-
"
|
|
5971
|
-
"
|
|
5972
|
-
"
|
|
5973
|
-
"
|
|
5974
|
-
"
|
|
6459
|
+
"galleryImageButton": "Yvqh9W_galleryImageButton",
|
|
6460
|
+
"reference": "Yvqh9W_reference",
|
|
6461
|
+
"galleryTagEdit": "Yvqh9W_galleryTagEdit",
|
|
6462
|
+
"configGuideBody": "Yvqh9W_configGuideBody",
|
|
6463
|
+
"ecommercePlanWarn": "Yvqh9W_ecommercePlanWarn",
|
|
6464
|
+
"studio": "Yvqh9W_studio",
|
|
6465
|
+
"ecommerceAssets": "Yvqh9W_ecommerceAssets",
|
|
6466
|
+
"ecommerceTaskCard": "Yvqh9W_ecommerceTaskCard",
|
|
6467
|
+
"taskTrayHeader": "Yvqh9W_taskTrayHeader",
|
|
6468
|
+
"historyInfo": "Yvqh9W_historyInfo",
|
|
6469
|
+
"ecommerceGroupGrid": "Yvqh9W_ecommerceGroupGrid",
|
|
6470
|
+
"topNavDivider": "Yvqh9W_topNavDivider",
|
|
6471
|
+
"modelWrap": "Yvqh9W_modelWrap",
|
|
6472
|
+
"optionGrid": "Yvqh9W_optionGrid",
|
|
6473
|
+
"generateInner": "Yvqh9W_generateInner",
|
|
6474
|
+
"lightboxFigure": "Yvqh9W_lightboxFigure",
|
|
6475
|
+
"lightboxStage": "Yvqh9W_lightboxStage",
|
|
6476
|
+
"dshImageGenToastIn": "Yvqh9W_dshImageGenToastIn",
|
|
6477
|
+
"taskRows": "Yvqh9W_taskRows",
|
|
6478
|
+
"ecommerceStructureGrid": "Yvqh9W_ecommerceStructureGrid",
|
|
6479
|
+
"lightboxMeta": "Yvqh9W_lightboxMeta",
|
|
6480
|
+
"ecommerceActionChip": "Yvqh9W_ecommerceActionChip",
|
|
5975
6481
|
"historyMeta": "Yvqh9W_historyMeta",
|
|
6482
|
+
"galleryFilterHeading": "Yvqh9W_galleryFilterHeading",
|
|
6483
|
+
"lightbox": "Yvqh9W_lightbox",
|
|
6484
|
+
"lightboxCaption": "Yvqh9W_lightboxCaption",
|
|
6485
|
+
"canvasState": "Yvqh9W_canvasState",
|
|
6486
|
+
"conversationToast": "Yvqh9W_conversationToast",
|
|
6487
|
+
"galleryWorkspace": "Yvqh9W_galleryWorkspace",
|
|
6488
|
+
"galleryToolbar": "Yvqh9W_galleryToolbar",
|
|
6489
|
+
"canvasEmptyIcon": "Yvqh9W_canvasEmptyIcon",
|
|
6490
|
+
"galleryRatio": "Yvqh9W_galleryRatio",
|
|
6491
|
+
"ecommerceResults": "Yvqh9W_ecommerceResults",
|
|
6492
|
+
"hiddenFile": "Yvqh9W_hiddenFile",
|
|
6493
|
+
"ecommerceAsset": "Yvqh9W_ecommerceAsset",
|
|
6494
|
+
"canvasStateHint": "Yvqh9W_canvasStateHint",
|
|
6495
|
+
"ecommercePlanBack": "Yvqh9W_ecommercePlanBack",
|
|
6496
|
+
"galleryCount": "Yvqh9W_galleryCount",
|
|
6497
|
+
"chatToggle": "Yvqh9W_chatToggle",
|
|
6498
|
+
"canvasBody": "Yvqh9W_canvasBody",
|
|
6499
|
+
"conversationAdd": "Yvqh9W_conversationAdd",
|
|
6500
|
+
"comparisonBoard": "Yvqh9W_comparisonBoard",
|
|
6501
|
+
"paramGroup": "Yvqh9W_paramGroup",
|
|
6502
|
+
"lightboxZoomLevel": "Yvqh9W_lightboxZoomLevel",
|
|
6503
|
+
"galleryBadge": "Yvqh9W_galleryBadge",
|
|
6504
|
+
"ecommerceTaskState": "Yvqh9W_ecommerceTaskState",
|
|
6505
|
+
"ecommerceResultsHeader": "Yvqh9W_ecommerceResultsHeader",
|
|
6506
|
+
"comparisonImageButton": "Yvqh9W_comparisonImageButton",
|
|
6507
|
+
"ecommerceGroup": "Yvqh9W_ecommerceGroup",
|
|
6508
|
+
"gallerySelectionClear": "Yvqh9W_gallerySelectionClear",
|
|
6509
|
+
"referenceImage": "Yvqh9W_referenceImage",
|
|
6510
|
+
"historyActions": "Yvqh9W_historyActions",
|
|
6511
|
+
"optionRow": "Yvqh9W_optionRow",
|
|
6512
|
+
"image": "Yvqh9W_image",
|
|
6513
|
+
"galleryCardInfo": "Yvqh9W_galleryCardInfo",
|
|
6514
|
+
"sidebarHistoryHost": "Yvqh9W_sidebarHistoryHost",
|
|
5976
6515
|
"taskTrayCount": "Yvqh9W_taskTrayCount",
|
|
5977
|
-
"
|
|
5978
|
-
"
|
|
5979
|
-
"
|
|
5980
|
-
"
|
|
5981
|
-
"
|
|
5982
|
-
"
|
|
6516
|
+
"canvasError": "Yvqh9W_canvasError",
|
|
6517
|
+
"ecommerceField": "Yvqh9W_ecommerceField",
|
|
6518
|
+
"galleryBulkButton": "Yvqh9W_galleryBulkButton",
|
|
6519
|
+
"canvasMeta": "Yvqh9W_canvasMeta",
|
|
6520
|
+
"galleryCardAction": "Yvqh9W_galleryCardAction",
|
|
6521
|
+
"sessionTabLabel": "Yvqh9W_sessionTabLabel",
|
|
6522
|
+
"taskTray": "Yvqh9W_taskTray",
|
|
6523
|
+
"lightboxDownload": "Yvqh9W_lightboxDownload",
|
|
6524
|
+
"githubLink": "Yvqh9W_githubLink",
|
|
6525
|
+
"gallerySelectionBar": "Yvqh9W_gallerySelectionBar",
|
|
6526
|
+
"topNav": "Yvqh9W_topNav",
|
|
6527
|
+
"footer": "Yvqh9W_footer",
|
|
6528
|
+
"updateActions": "Yvqh9W_updateActions",
|
|
6529
|
+
"modelMenuList": "Yvqh9W_modelMenuList",
|
|
6530
|
+
"historyHeaderActions": "Yvqh9W_historyHeaderActions",
|
|
5983
6531
|
"modePill": "Yvqh9W_modePill",
|
|
5984
|
-
"
|
|
5985
|
-
"
|
|
5986
|
-
"
|
|
5987
|
-
"
|
|
5988
|
-
"
|
|
5989
|
-
"
|
|
5990
|
-
"
|
|
5991
|
-
"
|
|
5992
|
-
"taskStatus": "Yvqh9W_taskStatus",
|
|
5993
|
-
"configHeader": "Yvqh9W_configHeader",
|
|
5994
|
-
"gallerySearch": "Yvqh9W_gallerySearch",
|
|
5995
|
-
"ecommerceAssetAdd": "Yvqh9W_ecommerceAssetAdd",
|
|
6532
|
+
"entryLabel": "Yvqh9W_entryLabel",
|
|
6533
|
+
"canvasStateTitle": "Yvqh9W_canvasStateTitle",
|
|
6534
|
+
"ecommerceResultsActions": "Yvqh9W_ecommerceResultsActions",
|
|
6535
|
+
"lightboxIndex": "Yvqh9W_lightboxIndex",
|
|
6536
|
+
"galleryTagFilter": "Yvqh9W_galleryTagFilter",
|
|
6537
|
+
"configGuide": "Yvqh9W_configGuide",
|
|
6538
|
+
"dshImageGenSpin": "Yvqh9W_dshImageGenSpin",
|
|
6539
|
+
"galleryFilters": "Yvqh9W_galleryFilters",
|
|
5996
6540
|
"galleryMasonry": "Yvqh9W_galleryMasonry",
|
|
5997
|
-
"
|
|
5998
|
-
"
|
|
5999
|
-
"
|
|
6000
|
-
"
|
|
6001
|
-
"
|
|
6002
|
-
"
|
|
6003
|
-
"
|
|
6541
|
+
"ecommercePlanMini": "Yvqh9W_ecommercePlanMini",
|
|
6542
|
+
"galleryTags": "Yvqh9W_galleryTags",
|
|
6543
|
+
"generation": "Yvqh9W_generation",
|
|
6544
|
+
"configHeader": "Yvqh9W_configHeader",
|
|
6545
|
+
"historyThumbPlaceholder": "Yvqh9W_historyThumbPlaceholder",
|
|
6546
|
+
"galleryAvatar": "Yvqh9W_galleryAvatar",
|
|
6547
|
+
"galleryRemove": "Yvqh9W_galleryRemove",
|
|
6548
|
+
"panelHeading": "Yvqh9W_panelHeading",
|
|
6549
|
+
"canvas": "Yvqh9W_canvas",
|
|
6550
|
+
"historyPrompt": "Yvqh9W_historyPrompt",
|
|
6551
|
+
"taskTrayClose": "Yvqh9W_taskTrayClose",
|
|
6552
|
+
"historyThumb": "Yvqh9W_historyThumb",
|
|
6553
|
+
"panelHeader": "Yvqh9W_panelHeader"
|
|
6004
6554
|
};
|
|
6005
6555
|
//#endregion
|
|
6006
6556
|
//#region src/client/ImageGenPanel.tsx
|
|
@@ -6494,6 +7044,7 @@ window.__ModuleLoader__.load({
|
|
|
6494
7044
|
const [galleryAdding, setGalleryAdding] = (0, react.useState)(false);
|
|
6495
7045
|
const [galleryMessage, setGalleryMessage] = (0, react.useState)(null);
|
|
6496
7046
|
const [galleryFilter, setGalleryFilter] = (0, react.useState)("all");
|
|
7047
|
+
const galleryUploadRef = (0, react.useRef)(null);
|
|
6497
7048
|
const [galleryRatio, setGalleryRatio] = (0, react.useState)("all");
|
|
6498
7049
|
const [galleryTagFilter, setGalleryTagFilter] = (0, react.useState)(null);
|
|
6499
7050
|
const [galleryView, setGalleryView] = (0, react.useState)("masonry");
|
|
@@ -7201,6 +7752,50 @@ window.__ModuleLoader__.load({
|
|
|
7201
7752
|
setGalleryAdding(false);
|
|
7202
7753
|
}
|
|
7203
7754
|
};
|
|
7755
|
+
/** Save local image files into the asset library so the canvas and studio
|
|
7756
|
+
* can reuse them later; entries dedupe by content host-side. */
|
|
7757
|
+
const uploadGalleryFiles = async (files) => {
|
|
7758
|
+
if (files.length === 0 || galleryAdding) return;
|
|
7759
|
+
setGalleryAdding(true);
|
|
7760
|
+
try {
|
|
7761
|
+
let entries;
|
|
7762
|
+
for (const file of files) {
|
|
7763
|
+
const dataUrl = await new Promise((resolve, reject) => {
|
|
7764
|
+
const reader = new FileReader();
|
|
7765
|
+
reader.onload = () => resolve(String(reader.result));
|
|
7766
|
+
reader.onerror = () => reject(new Error(tt("canvas.dropSub")));
|
|
7767
|
+
reader.readAsDataURL(file);
|
|
7768
|
+
});
|
|
7769
|
+
const separator = dataUrl.indexOf(",");
|
|
7770
|
+
entries = (await api.galleryAppend({
|
|
7771
|
+
id: "",
|
|
7772
|
+
createdAt: Date.now(),
|
|
7773
|
+
mode: "text",
|
|
7774
|
+
model: tt("gallery.uploadModel"),
|
|
7775
|
+
prompt: file.name.replace(/\.[a-z0-9]+$/i, ""),
|
|
7776
|
+
size: "auto",
|
|
7777
|
+
quality: "auto",
|
|
7778
|
+
detail: "",
|
|
7779
|
+
n: 1,
|
|
7780
|
+
images: [{
|
|
7781
|
+
b64: separator >= 0 ? dataUrl.slice(separator + 1) : dataUrl,
|
|
7782
|
+
mime: file.type || "image/png"
|
|
7783
|
+
}]
|
|
7784
|
+
})).entries;
|
|
7785
|
+
}
|
|
7786
|
+
if (entries !== void 0) {
|
|
7787
|
+
setGallery(entries);
|
|
7788
|
+
setGalleryMessage(tt("gallery.uploaded"));
|
|
7789
|
+
window.setTimeout(() => {
|
|
7790
|
+
setGalleryMessage(null);
|
|
7791
|
+
}, 2200);
|
|
7792
|
+
}
|
|
7793
|
+
} catch (caught) {
|
|
7794
|
+
setError(errorMessage(caught));
|
|
7795
|
+
} finally {
|
|
7796
|
+
setGalleryAdding(false);
|
|
7797
|
+
}
|
|
7798
|
+
};
|
|
7204
7799
|
/** Put a generated image into the native conversation composer. */
|
|
7205
7800
|
const addImageToConversation = async (image, index, actionKey = index) => {
|
|
7206
7801
|
if (addingToConversation !== null) return;
|
|
@@ -7738,6 +8333,8 @@ window.__ModuleLoader__.load({
|
|
|
7738
8333
|
})
|
|
7739
8334
|
]
|
|
7740
8335
|
});
|
|
8336
|
+
const isGallery = workspace === "normal" && tab === "gallery";
|
|
8337
|
+
const isGeneration = workspace === "normal" && tab !== "gallery";
|
|
7741
8338
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7742
8339
|
className: panel_module_css_default.panel,
|
|
7743
8340
|
children: [
|
|
@@ -7920,7 +8517,7 @@ window.__ModuleLoader__.load({
|
|
|
7920
8517
|
})
|
|
7921
8518
|
})
|
|
7922
8519
|
}),
|
|
7923
|
-
|
|
8520
|
+
isGallery ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7924
8521
|
className: panel_module_css_default.galleryFilters,
|
|
7925
8522
|
children: [
|
|
7926
8523
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -8376,7 +8973,7 @@ window.__ModuleLoader__.load({
|
|
|
8376
8973
|
})
|
|
8377
8974
|
]
|
|
8378
8975
|
}) : null,
|
|
8379
|
-
tab === "edit" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8976
|
+
isGeneration && tab === "edit" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8380
8977
|
className: panel_module_css_default.card,
|
|
8381
8978
|
children: [refImage === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
8382
8979
|
type: "button",
|
|
@@ -8452,7 +9049,7 @@ window.__ModuleLoader__.load({
|
|
|
8452
9049
|
}
|
|
8453
9050
|
})]
|
|
8454
9051
|
}) : null,
|
|
8455
|
-
|
|
9052
|
+
isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8456
9053
|
className: panel_module_css_default.card,
|
|
8457
9054
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
|
|
8458
9055
|
className: panel_module_css_default.prompt,
|
|
@@ -8641,7 +9238,7 @@ window.__ModuleLoader__.load({
|
|
|
8641
9238
|
children: tt("ecommerce.preview")
|
|
8642
9239
|
})] })
|
|
8643
9240
|
}) : null,
|
|
8644
|
-
|
|
9241
|
+
isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
8645
9242
|
className: panel_module_css_default.modelWrap,
|
|
8646
9243
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
8647
9244
|
className: panel_module_css_default.modelLabel,
|
|
@@ -8689,8 +9286,8 @@ window.__ModuleLoader__.load({
|
|
|
8689
9286
|
}, option))
|
|
8690
9287
|
}) : null]
|
|
8691
9288
|
})]
|
|
8692
|
-
}),
|
|
8693
|
-
|
|
9289
|
+
}) : null,
|
|
9290
|
+
isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8694
9291
|
className: panel_module_css_default.compareControl,
|
|
8695
9292
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
8696
9293
|
className: panel_module_css_default.compareToggle,
|
|
@@ -8714,7 +9311,7 @@ window.__ModuleLoader__.load({
|
|
|
8714
9311
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: option })] }, option))
|
|
8715
9312
|
}) : null]
|
|
8716
9313
|
}) : null,
|
|
8717
|
-
|
|
9314
|
+
isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
8718
9315
|
variant: "primary",
|
|
8719
9316
|
size: "md",
|
|
8720
9317
|
className: panel_module_css_default.generateButton,
|
|
@@ -8749,9 +9346,9 @@ window.__ModuleLoader__.load({
|
|
|
8749
9346
|
}) : null,
|
|
8750
9347
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
8751
9348
|
className: panel_module_css_default.canvas,
|
|
8752
|
-
"data-gallery":
|
|
9349
|
+
"data-gallery": isGallery ? "true" : void 0,
|
|
8753
9350
|
children: [
|
|
8754
|
-
|
|
9351
|
+
isGallery ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8755
9352
|
className: panel_module_css_default.galleryWorkspace,
|
|
8756
9353
|
children: [
|
|
8757
9354
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
@@ -8774,6 +9371,26 @@ window.__ModuleLoader__.load({
|
|
|
8774
9371
|
placeholder: tt("gallery.search"),
|
|
8775
9372
|
"aria-label": tt("gallery.search")
|
|
8776
9373
|
}),
|
|
9374
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
9375
|
+
type: "button",
|
|
9376
|
+
className: panel_module_css_default.gallerySelectMode,
|
|
9377
|
+
disabled: galleryAdding,
|
|
9378
|
+
title: tt("gallery.uploadHint"),
|
|
9379
|
+
onClick: () => galleryUploadRef.current?.click(),
|
|
9380
|
+
children: galleryAdding ? "…" : tt("gallery.upload")
|
|
9381
|
+
}),
|
|
9382
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
9383
|
+
ref: galleryUploadRef,
|
|
9384
|
+
type: "file",
|
|
9385
|
+
accept: "image/png,image/jpeg,image/webp,image/gif",
|
|
9386
|
+
multiple: true,
|
|
9387
|
+
hidden: true,
|
|
9388
|
+
onChange: (event) => {
|
|
9389
|
+
const files = [...event.target.files ?? []];
|
|
9390
|
+
event.target.value = "";
|
|
9391
|
+
if (files.length > 0) uploadGalleryFiles(files);
|
|
9392
|
+
}
|
|
9393
|
+
}),
|
|
8777
9394
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8778
9395
|
type: "button",
|
|
8779
9396
|
className: panel_module_css_default.gallerySelectMode,
|
|
@@ -9204,7 +9821,7 @@ window.__ModuleLoader__.load({
|
|
|
9204
9821
|
}, group.label))
|
|
9205
9822
|
})]
|
|
9206
9823
|
}) : null,
|
|
9207
|
-
|
|
9824
|
+
!isGallery && tasks.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
9208
9825
|
className: panel_module_css_default.taskTray,
|
|
9209
9826
|
"data-open": taskTrayOpen ? "true" : "false",
|
|
9210
9827
|
"aria-label": tt("tasks.title"),
|
|
@@ -9305,7 +9922,7 @@ window.__ModuleLoader__.load({
|
|
|
9305
9922
|
})
|
|
9306
9923
|
})]
|
|
9307
9924
|
}) : null,
|
|
9308
|
-
generating && comparison === null &&
|
|
9925
|
+
generating && comparison === null && isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9309
9926
|
className: panel_module_css_default.canvasState,
|
|
9310
9927
|
"data-generation-state": activeTask?.status ?? "submitting",
|
|
9311
9928
|
role: "status",
|
|
@@ -9326,14 +9943,14 @@ window.__ModuleLoader__.load({
|
|
|
9326
9943
|
role: "alert",
|
|
9327
9944
|
children: tt("canvas.error", { error })
|
|
9328
9945
|
}) : null,
|
|
9329
|
-
!generating && !error && images.length === 0
|
|
9946
|
+
isGeneration && !generating && !error && images.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InspirationGallery, {
|
|
9330
9947
|
api,
|
|
9331
9948
|
onUse: (text) => {
|
|
9332
9949
|
setPrompt(text);
|
|
9333
9950
|
setError(null);
|
|
9334
9951
|
}
|
|
9335
9952
|
}) : null,
|
|
9336
|
-
!generating && images.length > 0
|
|
9953
|
+
isGeneration && !generating && images.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9337
9954
|
className: panel_module_css_default.canvasBody,
|
|
9338
9955
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9339
9956
|
className: panel_module_css_default.canvasMeta,
|
|
@@ -10633,97 +11250,97 @@ window.__ModuleLoader__.load({
|
|
|
10633
11250
|
document.head.appendChild(tag);
|
|
10634
11251
|
}
|
|
10635
11252
|
var settings_card_module_css_default = {
|
|
10636
|
-
"
|
|
10637
|
-
"
|
|
10638
|
-
"sectionHint": "i1cc5G_sectionHint",
|
|
10639
|
-
"field": "i1cc5G_field",
|
|
10640
|
-
"failed": "i1cc5G_failed",
|
|
10641
|
-
"name": "i1cc5G_name",
|
|
10642
|
-
"presetInlineHeader": "i1cc5G_presetInlineHeader",
|
|
10643
|
-
"modelChip": "i1cc5G_modelChip",
|
|
10644
|
-
"editorField": "i1cc5G_editorField",
|
|
10645
|
-
"invalid": "i1cc5G_invalid",
|
|
10646
|
-
"channelName": "i1cc5G_channelName",
|
|
10647
|
-
"notExposed": "i1cc5G_notExposed",
|
|
10648
|
-
"modelRowRemove": "i1cc5G_modelRowRemove",
|
|
11253
|
+
"channelBadge": "i1cc5G_channelBadge",
|
|
11254
|
+
"inlineDisclosure": "i1cc5G_inlineDisclosure",
|
|
10649
11255
|
"card": "i1cc5G_card",
|
|
10650
11256
|
"modelCandidate": "i1cc5G_modelCandidate",
|
|
10651
|
-
"
|
|
10652
|
-
"
|
|
11257
|
+
"detectOk": "i1cc5G_detectOk",
|
|
11258
|
+
"spacer": "i1cc5G_spacer",
|
|
11259
|
+
"editorClose": "i1cc5G_editorClose",
|
|
10653
11260
|
"modelCandidateLabel": "i1cc5G_modelCandidateLabel",
|
|
10654
|
-
"
|
|
10655
|
-
"
|
|
10656
|
-
"
|
|
10657
|
-
"
|
|
11261
|
+
"label": "i1cc5G_label",
|
|
11262
|
+
"editorField": "i1cc5G_editorField",
|
|
11263
|
+
"chevronOpen": "i1cc5G_chevronOpen",
|
|
11264
|
+
"input": "i1cc5G_input",
|
|
11265
|
+
"header": "i1cc5G_header",
|
|
11266
|
+
"save": "i1cc5G_save",
|
|
11267
|
+
"modelArrow": "i1cc5G_modelArrow",
|
|
11268
|
+
"presetRow": "i1cc5G_presetRow",
|
|
11269
|
+
"select": "i1cc5G_select",
|
|
11270
|
+
"name": "i1cc5G_name",
|
|
11271
|
+
"discard": "i1cc5G_discard",
|
|
11272
|
+
"channelSection": "i1cc5G_channelSection",
|
|
11273
|
+
"editorDivider": "i1cc5G_editorDivider",
|
|
11274
|
+
"versionRow": "i1cc5G_versionRow",
|
|
11275
|
+
"head": "i1cc5G_head",
|
|
11276
|
+
"badges": "i1cc5G_badges",
|
|
11277
|
+
"footer": "i1cc5G_footer",
|
|
10658
11278
|
"editorTools": "i1cc5G_editorTools",
|
|
10659
|
-
"
|
|
10660
|
-
"
|
|
11279
|
+
"editorFooter": "i1cc5G_editorFooter",
|
|
11280
|
+
"editorBackdrop": "i1cc5G_editorBackdrop",
|
|
11281
|
+
"presetMeta": "i1cc5G_presetMeta",
|
|
11282
|
+
"channelDanger": "i1cc5G_channelDanger",
|
|
10661
11283
|
"channelRow": "i1cc5G_channelRow",
|
|
10662
|
-
"
|
|
10663
|
-
"editorSectionHeader": "i1cc5G_editorSectionHeader",
|
|
10664
|
-
"detectOk": "i1cc5G_detectOk",
|
|
10665
|
-
"channelControls": "i1cc5G_channelControls",
|
|
10666
|
-
"presetName": "i1cc5G_presetName",
|
|
10667
|
-
"sectionDivider": "i1cc5G_sectionDivider",
|
|
10668
|
-
"badge": "i1cc5G_badge",
|
|
10669
|
-
"channelBadge": "i1cc5G_channelBadge",
|
|
10670
|
-
"editorPanel": "i1cc5G_editorPanel",
|
|
10671
|
-
"modelCandidateList": "i1cc5G_modelCandidateList",
|
|
10672
|
-
"channelEmpty": "i1cc5G_channelEmpty",
|
|
11284
|
+
"channelDotWarn": "i1cc5G_channelDotWarn",
|
|
10673
11285
|
"modelRow": "i1cc5G_modelRow",
|
|
10674
|
-
"
|
|
10675
|
-
"modelFetchRow": "i1cc5G_modelFetchRow",
|
|
10676
|
-
"inlineDisclosure": "i1cc5G_inlineDisclosure",
|
|
10677
|
-
"head": "i1cc5G_head",
|
|
10678
|
-
"reset": "i1cc5G_reset",
|
|
10679
|
-
"optionalContent": "i1cc5G_optionalContent",
|
|
10680
|
-
"footer": "i1cc5G_footer",
|
|
11286
|
+
"modelRowInputs": "i1cc5G_modelRowInputs",
|
|
10681
11287
|
"channelAction": "i1cc5G_channelAction",
|
|
10682
|
-
"presetList": "i1cc5G_presetList",
|
|
10683
11288
|
"presetHint": "i1cc5G_presetHint",
|
|
10684
|
-
"
|
|
10685
|
-
"versionRow": "i1cc5G_versionRow",
|
|
10686
|
-
"channelMain": "i1cc5G_channelMain",
|
|
10687
|
-
"modelChoices": "i1cc5G_modelChoices",
|
|
11289
|
+
"versionValue": "i1cc5G_versionValue",
|
|
10688
11290
|
"sectionTitle": "i1cc5G_sectionTitle",
|
|
10689
|
-
"
|
|
10690
|
-
"
|
|
10691
|
-
"
|
|
11291
|
+
"channelHost": "i1cc5G_channelHost",
|
|
11292
|
+
"channelName": "i1cc5G_channelName",
|
|
11293
|
+
"editorPanel": "i1cc5G_editorPanel",
|
|
11294
|
+
"reset": "i1cc5G_reset",
|
|
11295
|
+
"body": "i1cc5G_body",
|
|
11296
|
+
"failed": "i1cc5G_failed",
|
|
11297
|
+
"disclosure": "i1cc5G_disclosure",
|
|
11298
|
+
"optionalContent": "i1cc5G_optionalContent",
|
|
11299
|
+
"pending": "i1cc5G_pending",
|
|
11300
|
+
"addModel": "i1cc5G_addModel",
|
|
11301
|
+
"modelFetch": "i1cc5G_modelFetch",
|
|
10692
11302
|
"channelAddRow": "i1cc5G_channelAddRow",
|
|
10693
|
-
"
|
|
10694
|
-
"
|
|
10695
|
-
"channelSection": "i1cc5G_channelSection",
|
|
10696
|
-
"description": "i1cc5G_description",
|
|
11303
|
+
"modelRows": "i1cc5G_modelRows",
|
|
11304
|
+
"presetInline": "i1cc5G_presetInline",
|
|
10697
11305
|
"deleteConfirmText": "i1cc5G_deleteConfirmText",
|
|
10698
|
-
"readOnly": "i1cc5G_readOnly",
|
|
10699
|
-
"spacer": "i1cc5G_spacer",
|
|
10700
|
-
"editorFooter": "i1cc5G_editorFooter",
|
|
10701
11306
|
"versionLabel": "i1cc5G_versionLabel",
|
|
10702
|
-
"
|
|
10703
|
-
"
|
|
10704
|
-
"
|
|
11307
|
+
"editorHeader": "i1cc5G_editorHeader",
|
|
11308
|
+
"textarea": "i1cc5G_textarea",
|
|
11309
|
+
"modelFetchRow": "i1cc5G_modelFetchRow",
|
|
11310
|
+
"modelCandidateList": "i1cc5G_modelCandidateList",
|
|
11311
|
+
"presetName": "i1cc5G_presetName",
|
|
10705
11312
|
"channelDotReady": "i1cc5G_channelDotReady",
|
|
10706
|
-
"
|
|
11313
|
+
"modelBadge": "i1cc5G_modelBadge",
|
|
11314
|
+
"channelMain": "i1cc5G_channelMain",
|
|
11315
|
+
"channelAdd": "i1cc5G_channelAdd",
|
|
11316
|
+
"notExposed": "i1cc5G_notExposed",
|
|
11317
|
+
"sectionHeader": "i1cc5G_sectionHeader",
|
|
11318
|
+
"modelRowBadges": "i1cc5G_modelRowBadges",
|
|
11319
|
+
"inputInvalid": "i1cc5G_inputInvalid",
|
|
11320
|
+
"hint": "i1cc5G_hint",
|
|
11321
|
+
"channelList": "i1cc5G_channelList",
|
|
11322
|
+
"badge": "i1cc5G_badge",
|
|
11323
|
+
"presetInlineHeader": "i1cc5G_presetInlineHeader",
|
|
11324
|
+
"readOnly": "i1cc5G_readOnly",
|
|
11325
|
+
"headText": "i1cc5G_headText",
|
|
11326
|
+
"modelRowRemove": "i1cc5G_modelRowRemove",
|
|
10707
11327
|
"manualModelRow": "i1cc5G_manualModelRow",
|
|
10708
11328
|
"textareaInvalid": "i1cc5G_textareaInvalid",
|
|
10709
|
-
"
|
|
10710
|
-
"
|
|
10711
|
-
"
|
|
10712
|
-
"
|
|
10713
|
-
"
|
|
10714
|
-
"
|
|
10715
|
-
"
|
|
10716
|
-
"
|
|
10717
|
-
"
|
|
10718
|
-
"
|
|
10719
|
-
"
|
|
10720
|
-
"
|
|
10721
|
-
"channelDotWarn": "i1cc5G_channelDotWarn",
|
|
10722
|
-
"label": "i1cc5G_label",
|
|
11329
|
+
"chevron": "i1cc5G_chevron",
|
|
11330
|
+
"modelChip": "i1cc5G_modelChip",
|
|
11331
|
+
"modelSummary": "i1cc5G_modelSummary",
|
|
11332
|
+
"description": "i1cc5G_description",
|
|
11333
|
+
"invalid": "i1cc5G_invalid",
|
|
11334
|
+
"sectionHint": "i1cc5G_sectionHint",
|
|
11335
|
+
"channelMeta": "i1cc5G_channelMeta",
|
|
11336
|
+
"editorSectionHeader": "i1cc5G_editorSectionHeader",
|
|
11337
|
+
"channelControls": "i1cc5G_channelControls",
|
|
11338
|
+
"sectionDivider": "i1cc5G_sectionDivider",
|
|
11339
|
+
"presetList": "i1cc5G_presetList",
|
|
11340
|
+
"modelChoices": "i1cc5G_modelChoices",
|
|
10723
11341
|
"modelSection": "i1cc5G_modelSection",
|
|
10724
|
-
"
|
|
10725
|
-
"
|
|
10726
|
-
"editorClose": "i1cc5G_editorClose"
|
|
11342
|
+
"field": "i1cc5G_field",
|
|
11343
|
+
"channelEmpty": "i1cc5G_channelEmpty"
|
|
10727
11344
|
};
|
|
10728
11345
|
//#endregion
|
|
10729
11346
|
//#region src/client/SettingsCard.tsx
|
|
@@ -10755,6 +11372,7 @@ window.__ModuleLoader__.load({
|
|
|
10755
11372
|
textField("promptApiUrl"),
|
|
10756
11373
|
secretField("promptApiKey"),
|
|
10757
11374
|
textField("promptModel"),
|
|
11375
|
+
textField("localStoragePath"),
|
|
10758
11376
|
booleanField("storageEnabled"),
|
|
10759
11377
|
textField("storageEndpoint"),
|
|
10760
11378
|
textField("storageRegion"),
|
|
@@ -10778,6 +11396,7 @@ window.__ModuleLoader__.load({
|
|
|
10778
11396
|
promptApiUrl: this.form.field("promptApiUrl"),
|
|
10779
11397
|
promptApiKey: this.form.field("promptApiKey"),
|
|
10780
11398
|
promptModel: this.form.field("promptModel"),
|
|
11399
|
+
localStoragePath: this.form.field("localStoragePath"),
|
|
10781
11400
|
storageEnabled: this.form.field("storageEnabled"),
|
|
10782
11401
|
storageEndpoint: this.form.field("storageEndpoint"),
|
|
10783
11402
|
storageRegion: this.form.field("storageRegion"),
|
|
@@ -11294,6 +11913,20 @@ window.__ModuleLoader__.load({
|
|
|
11294
11913
|
storageOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
11295
11914
|
className: settings_card_module_css_default.optionalContent,
|
|
11296
11915
|
children: [
|
|
11916
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ValueField, {
|
|
11917
|
+
id: "dsh-imagegen-settings-local-storage-path",
|
|
11918
|
+
label: t("settings.localStoragePath"),
|
|
11919
|
+
hint: t("settings.localStoragePathHint"),
|
|
11920
|
+
placeholder: "E:\\\\dsh-imagegen-data",
|
|
11921
|
+
...fieldProps,
|
|
11922
|
+
...state.localStoragePath,
|
|
11923
|
+
onEdit: (text) => {
|
|
11924
|
+
props.edit("localStoragePath", text);
|
|
11925
|
+
},
|
|
11926
|
+
onReset: () => {
|
|
11927
|
+
props.resetField("localStoragePath");
|
|
11928
|
+
}
|
|
11929
|
+
}),
|
|
11297
11930
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(BooleanField, {
|
|
11298
11931
|
id: "dsh-imagegen-settings-storage-enabled",
|
|
11299
11932
|
label: t("settings.storageEnabled"),
|
|
@@ -12190,14 +12823,14 @@ window.__ModuleLoader__.load({
|
|
|
12190
12823
|
}
|
|
12191
12824
|
var image_toolview_module_css_default = {
|
|
12192
12825
|
"error": "_3eGrYG_error",
|
|
12193
|
-
"loading": "_3eGrYG_loading",
|
|
12194
12826
|
"image": "_3eGrYG_image",
|
|
12827
|
+
"icon": "_3eGrYG_icon",
|
|
12828
|
+
"status": "_3eGrYG_status",
|
|
12195
12829
|
"root": "_3eGrYG_root",
|
|
12196
|
-
"header": "_3eGrYG_header",
|
|
12197
12830
|
"message": "_3eGrYG_message",
|
|
12198
|
-
"status": "_3eGrYG_status",
|
|
12199
12831
|
"imageLink": "_3eGrYG_imageLink",
|
|
12200
|
-
"
|
|
12832
|
+
"header": "_3eGrYG_header",
|
|
12833
|
+
"loading": "_3eGrYG_loading",
|
|
12201
12834
|
"images": "_3eGrYG_images"
|
|
12202
12835
|
};
|
|
12203
12836
|
//#endregion
|