dsh-audiogen 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -799,7 +799,7 @@ window.__ModuleLoader__.load({
799
799
  }
800
800
  //#endregion
801
801
  //#region \0dsh-css:/Users/shimingming/Projects_code/dsh-audiogen/src/client/audio-panel.module.css.mjs
802
- const css$4 = ".Oo1fpq_panel{background:var(--dsw-alias-bg-base,#f7f7f8);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary,#1f2328);font-family:var(--dsw-font-family,system-ui, sans-serif);flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex;position:relative}.Oo1fpq_panel,.Oo1fpq_panel *,.Oo1fpq_panel :before,.Oo1fpq_panel :after{box-sizing:border-box}.Oo1fpq_header{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.Oo1fpq_title{color:var(--dsw-alias-label-primary,#1f2328);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Oo1fpq_tabs{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:10px;align-items:center;gap:2px;padding:3px;display:inline-flex}.Oo1fpq_tab{min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12.5px;transition:color .12s,background .12s;display:inline-flex}.Oo1fpq_tab:hover{color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_tab[data-active=true]{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-1,#fff);font-weight:600;box-shadow:0 1px 3px #0000001a}.Oo1fpq_studio{flex:1;gap:14px;min-width:0;min-height:0;display:flex}.Oo1fpq_formCol{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:none;gap:11px;width:300px;min-width:260px;max-width:340px;min-height:0;padding:2px;display:flex;overflow-y:auto}.Oo1fpq_formCol::-webkit-scrollbar{width:8px}.Oo1fpq_formCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_modeRow{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.Oo1fpq_modeButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);min-height:34px;color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;cursor:pointer;border-radius:9px;justify-content:center;align-items:center;padding:6px 4px;font-family:inherit;font-size:11.5px;transition:border-color .12s,color .12s,background .12s;display:flex}.Oo1fpq_modeButton:hover{border-color:var(--dsw-alias-label-dimmed,#9ca3af);color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_modeButton[data-active=true]{border-color:var(--dsw-alias-brand-primary,#2563eb);color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent);font-weight:600}.Oo1fpq_label{color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;gap:5px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_input,.Oo1fpq_textarea{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fff);width:100%;min-height:36px;color:var(--dsw-alias-label-primary,#1f2328);border-radius:9px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px;transition:border-color .12s,box-shadow .12s}.Oo1fpq_input:focus,.Oo1fpq_textarea:focus{border-color:var(--dsw-alias-brand-primary,#2563eb);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 14%, transparent)}.Oo1fpq_textarea{resize:vertical;min-height:96px}.Oo1fpq_checkbox{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;align-items:center;gap:7px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_checkbox input{accent-color:var(--dsw-alias-brand-primary,#2563eb);margin:0}.Oo1fpq_hint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px;line-height:1.55}.Oo1fpq_row{align-items:flex-end;gap:8px;display:flex}.Oo1fpq_row .Oo1fpq_label{flex:1;min-width:0}.Oo1fpq_advanced{border:1px dashed var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;flex-direction:column;gap:9px;padding:9px 11px;display:flex}.Oo1fpq_advanced summary{cursor:pointer;color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px;font-weight:600}.Oo1fpq_generate{background:var(--dsw-alias-label-primary,#1f2328);color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .12s,transform 80ms}.Oo1fpq_generate:hover:not(:disabled){opacity:.92}.Oo1fpq_generate:active:not(:disabled){transform:translateY(1px)}.Oo1fpq_generate:disabled{opacity:.5;cursor:default}.Oo1fpq_resultCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;border-radius:12px;flex-direction:column;flex:1;gap:10px;min-width:0;padding:14px;display:flex;overflow-y:auto}.Oo1fpq_resultCol::-webkit-scrollbar{width:8px}.Oo1fpq_resultCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_resultEmpty{text-align:center;color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;font-size:13px;display:flex}.Oo1fpq_resultEmptyIcon{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:4px;font-size:24px;display:inline-flex}.Oo1fpq_resultEmptyHint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px}.Oo1fpq_error{border:1px solid var(--dsw-alias-label-error,#b91c1c);background:color-mix(in srgb, var(--dsw-alias-label-error,#b91c1c) 6%, transparent);color:var(--dsw-alias-label-error,#b91c1c);border-radius:9px;flex:none;margin:0;padding:9px 12px;font-size:12.5px;line-height:1.55}.Oo1fpq_resultMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Oo1fpq_resultModeChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:2px 9px;font-size:11px}.Oo1fpq_audioList{gap:10px;display:grid}.Oo1fpq_audioCard{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:12px;flex-direction:column;gap:8px;padding:12px;transition:border-color .12s;display:flex}.Oo1fpq_audioCard[data-saved=true]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 42%, var(--dsw-alias-border-l1,#e5e7eb));background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 5%, var(--dsw-alias-bg-layer-2,#f7f7f8))}.Oo1fpq_audioCardHead{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.Oo1fpq_voiceIdChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);max-width:100%;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:2px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;overflow:hidden}.Oo1fpq_savedChip{background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 12%, transparent);color:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.Oo1fpq_audioCardIndex{color:var(--dsw-alias-label-tertiary,#9ca3af);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.Oo1fpq_audioCardActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.Oo1fpq_ghostButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:5px;padding:3px 11px;font-family:inherit;font-size:12px;text-decoration:none;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.Oo1fpq_ghostButton:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent)}.Oo1fpq_historyCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;flex:none;width:250px;min-width:210px;max-width:290px;min-height:0;display:flex;overflow:hidden}.Oo1fpq_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1,#e5e7eb);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Oo1fpq_historyTitle{color:var(--dsw-alias-label-primary,#1f2328);font-size:13px;font-weight:700}.Oo1fpq_historyClear{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border-radius:999px;padding:2px 9px;font-family:inherit;font-size:11px}.Oo1fpq_historyClear:hover{color:var(--dsw-alias-label-error,#b91c1c);border-color:var(--dsw-alias-label-error,#b91c1c)}.Oo1fpq_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:9px;display:flex;overflow-y:auto}.Oo1fpq_historyList::-webkit-scrollbar{width:8px}.Oo1fpq_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary,#9ca3af);flex:1;justify-content:center;align-items:center;padding:18px;font-size:12px;display:flex}.Oo1fpq_historyItem{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:10px;flex-direction:column;gap:6px;padding:9px;display:flex}.Oo1fpq_historyPrompt{color:var(--dsw-alias-label-primary,#1f2328);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.Oo1fpq_historyMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.Oo1fpq_historyActions{justify-content:flex-end;display:flex}.Oo1fpq_historyAction{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-family:inherit;font-size:11px;display:inline-flex}.Oo1fpq_historyAction:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb)}.Oo1fpq_player{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;align-items:center;gap:9px;padding:8px 10px;display:flex}.Oo1fpq_playerCompact{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:9px;align-items:center;gap:8px;padding:6px 8px;display:flex}.Oo1fpq_playButton{background:var(--dsw-alias-label-primary,#1f2328);width:30px;height:30px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;transition:opacity .12s,transform 80ms;display:inline-flex}.Oo1fpq_playerCompact .Oo1fpq_playButton{width:26px;height:26px}.Oo1fpq_playButton:hover{opacity:.9}.Oo1fpq_playButton:active{transform:scale(.94)}.Oo1fpq_track{background:var(--dsw-alias-border-l2,#d1d5db);cursor:pointer;border-radius:999px;flex:1;min-width:0;height:4px;position:relative}.Oo1fpq_trackFill{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;position:absolute;inset:0 auto 0 0}.Oo1fpq_trackKnob{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:50%;width:11px;height:11px;transition:transform .1s;position:absolute;top:50%;transform:translate(-50%,-50%)}.Oo1fpq_time{font-variant-numeric:tabular-nums;min-width:62px;color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-align:right;flex:none;font-size:10.5px}.Oo1fpq_playerCompact .Oo1fpq_time{min-width:56px;font-size:10px}.Oo1fpq_muteButton{width:24px;height:24px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;display:inline-flex}.Oo1fpq_muteButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_modalMask{z-index:200;backdrop-filter:blur(3px);background:#0006;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Oo1fpq_modal{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:14px;flex-direction:column;gap:12px;width:440px;max-width:100%;max-height:calc(100vh - 40px);padding:16px;display:flex;box-shadow:0 18px 50px #00000038}.Oo1fpq_modalHead{color:var(--dsw-alias-label-primary,#1f2328);justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.Oo1fpq_modalBody{flex-direction:column;gap:11px;min-height:0;display:flex;overflow-y:auto}.Oo1fpq_formRow{grid-template-columns:1fr 1fr;gap:10px;display:grid}.Oo1fpq_modalFoot{justify-content:flex-end;align-items:center;gap:8px;display:flex}.Oo1fpq_primaryButton{background:var(--dsw-alias-label-primary,#1f2328);min-height:32px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-family:inherit;font-size:12.5px;font-weight:600;display:inline-flex}.Oo1fpq_primaryButton:disabled{opacity:.5;cursor:default}.Oo1fpq_secondaryButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:32px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:8px;padding:0 14px;font-family:inherit;font-size:12.5px}.Oo1fpq_secondaryButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.Oo1fpq_iconButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_toast{z-index:150;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-mask-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:7px 16px;font-size:12.5px;animation:.16s ease-out Oo1fpq_audiogenToastIn;display:inline-flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Oo1fpq_audiogenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.Oo1fpq_toast{animation-duration:1ms}}";
802
+ const css$4 = ".Oo1fpq_panel{background:var(--dsw-alias-bg-base,#f7f7f8);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary,#1f2328);font-family:var(--dsw-font-family,system-ui, sans-serif);flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex;position:relative}.Oo1fpq_panel,.Oo1fpq_panel *,.Oo1fpq_panel :before,.Oo1fpq_panel :after{box-sizing:border-box}.Oo1fpq_header{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.Oo1fpq_title{color:var(--dsw-alias-label-primary,#1f2328);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Oo1fpq_tabs{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:10px;align-items:center;gap:2px;padding:3px;display:inline-flex}.Oo1fpq_tab{min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12.5px;transition:color .12s,background .12s;display:inline-flex}.Oo1fpq_tab:hover{color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_tab[data-active=true]{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-1,#fff);font-weight:600;box-shadow:0 1px 3px #0000001a}.Oo1fpq_studio{flex:1;gap:14px;min-width:0;min-height:0;display:flex}.Oo1fpq_formCol{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:none;gap:11px;width:300px;min-width:260px;max-width:340px;min-height:0;padding:2px;display:flex;overflow-y:auto}.Oo1fpq_formCol::-webkit-scrollbar{width:8px}.Oo1fpq_formCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_modeRow{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.Oo1fpq_modeButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);min-height:34px;color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;cursor:pointer;border-radius:9px;justify-content:center;align-items:center;padding:6px 4px;font-family:inherit;font-size:11.5px;transition:border-color .12s,color .12s,background .12s;display:flex}.Oo1fpq_modeButton:hover{border-color:var(--dsw-alias-label-dimmed,#9ca3af);color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_modeButton[data-active=true]{border-color:var(--dsw-alias-brand-primary,#2563eb);color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent);font-weight:600}.Oo1fpq_label{color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;gap:5px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_input,.Oo1fpq_textarea{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fff);width:100%;min-height:36px;color:var(--dsw-alias-label-primary,#1f2328);border-radius:9px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px;transition:border-color .12s,box-shadow .12s}.Oo1fpq_input:focus,.Oo1fpq_textarea:focus{border-color:var(--dsw-alias-brand-primary,#2563eb);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 14%, transparent)}.Oo1fpq_textarea{resize:vertical;min-height:96px}.Oo1fpq_checkbox{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;align-items:center;gap:7px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_checkbox input{accent-color:var(--dsw-alias-brand-primary,#2563eb);margin:0}.Oo1fpq_hint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px;line-height:1.55}.Oo1fpq_row{align-items:flex-end;gap:8px;display:flex}.Oo1fpq_row .Oo1fpq_label{flex:1;min-width:0}.Oo1fpq_advanced{border:1px dashed var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;flex-direction:column;gap:9px;padding:9px 11px;display:flex}.Oo1fpq_advanced summary{cursor:pointer;color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px;font-weight:600}.Oo1fpq_generate{background:var(--dsw-alias-label-primary,#1f2328);color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .12s,transform 80ms}.Oo1fpq_generate:hover:not(:disabled){opacity:.92}.Oo1fpq_generate:active:not(:disabled){transform:translateY(1px)}.Oo1fpq_generate:disabled{opacity:.5;cursor:default}.Oo1fpq_resultCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;border-radius:12px;flex-direction:column;flex:1;gap:10px;min-width:0;padding:14px;display:flex;overflow-y:auto}.Oo1fpq_resultCol::-webkit-scrollbar{width:8px}.Oo1fpq_resultCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_resultEmpty{text-align:center;color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;font-size:13px;display:flex}.Oo1fpq_resultEmptyIcon{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:4px;font-size:24px;display:inline-flex}.Oo1fpq_resultEmptyHint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px}.Oo1fpq_error{border:1px solid var(--dsw-alias-label-error,#b91c1c);background:color-mix(in srgb, var(--dsw-alias-label-error,#b91c1c) 6%, transparent);color:var(--dsw-alias-label-error,#b91c1c);border-radius:9px;flex:none;margin:0;padding:9px 12px;font-size:12.5px;line-height:1.55}.Oo1fpq_resultMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Oo1fpq_resultModeChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:2px 9px;font-size:11px}.Oo1fpq_audioList{gap:10px;display:grid}.Oo1fpq_audioCard{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:12px;flex-direction:column;gap:8px;padding:12px;transition:border-color .12s;display:flex}.Oo1fpq_audioCard[data-saved=true]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 42%, var(--dsw-alias-border-l1,#e5e7eb));background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 5%, var(--dsw-alias-bg-layer-2,#f7f7f8))}.Oo1fpq_audioCardHead{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.Oo1fpq_voiceIdChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);max-width:100%;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:2px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;overflow:hidden}.Oo1fpq_savedChip{background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 12%, transparent);color:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.Oo1fpq_audioCardIndex{color:var(--dsw-alias-label-tertiary,#9ca3af);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.Oo1fpq_audioCardActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.Oo1fpq_ghostButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:5px;padding:3px 11px;font-family:inherit;font-size:12px;text-decoration:none;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.Oo1fpq_ghostButton:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent)}.Oo1fpq_historyCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;flex:none;width:250px;min-width:210px;max-width:290px;min-height:0;display:flex;overflow:hidden}.Oo1fpq_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1,#e5e7eb);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Oo1fpq_historyTitle{color:var(--dsw-alias-label-primary,#1f2328);font-size:13px;font-weight:700}.Oo1fpq_historyClear{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border-radius:999px;padding:2px 9px;font-family:inherit;font-size:11px}.Oo1fpq_historyClear:hover{color:var(--dsw-alias-label-error,#b91c1c);border-color:var(--dsw-alias-label-error,#b91c1c)}.Oo1fpq_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:9px;display:flex;overflow-y:auto}.Oo1fpq_historyList::-webkit-scrollbar{width:8px}.Oo1fpq_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary,#9ca3af);flex:1;justify-content:center;align-items:center;padding:18px;font-size:12px;display:flex}.Oo1fpq_historyItem{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:10px;flex-direction:column;gap:6px;padding:9px;display:flex}.Oo1fpq_historyPrompt{color:var(--dsw-alias-label-primary,#1f2328);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.Oo1fpq_historyMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.Oo1fpq_historyActions{justify-content:flex-end;display:flex}.Oo1fpq_historyAction{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-family:inherit;font-size:11px;display:inline-flex}.Oo1fpq_historyAction:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb)}.Oo1fpq_player{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;align-items:center;gap:9px;padding:8px 10px;display:flex}.Oo1fpq_playerCompact{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:9px;align-items:center;gap:8px;padding:6px 8px;display:flex}.Oo1fpq_playButton{background:var(--dsw-alias-label-primary,#1f2328);width:30px;height:30px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;transition:opacity .12s,transform 80ms;display:inline-flex}.Oo1fpq_playerCompact .Oo1fpq_playButton{width:26px;height:26px}.Oo1fpq_playButton:hover{opacity:.9}.Oo1fpq_playButton:active{transform:scale(.94)}.Oo1fpq_track{background:var(--dsw-alias-border-l2,#d1d5db);cursor:pointer;border-radius:999px;flex:1;min-width:0;height:4px;position:relative}.Oo1fpq_trackFill{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;position:absolute;inset:0 auto 0 0}.Oo1fpq_trackKnob{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:50%;width:11px;height:11px;transition:transform .1s;position:absolute;top:50%;transform:translate(-50%,-50%)}.Oo1fpq_time{font-variant-numeric:tabular-nums;min-width:62px;color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-align:right;flex:none;font-size:10.5px}.Oo1fpq_playerCompact .Oo1fpq_time{min-width:56px;font-size:10px}.Oo1fpq_muteButton{width:24px;height:24px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;display:inline-flex}.Oo1fpq_muteButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_modalMask{z-index:200;backdrop-filter:blur(3px);background:#0006;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Oo1fpq_modal{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:14px;flex-direction:column;gap:12px;width:440px;max-width:100%;max-height:calc(100vh - 40px);padding:16px;display:flex;box-shadow:0 18px 50px #00000038}.Oo1fpq_modalHead{color:var(--dsw-alias-label-primary,#1f2328);justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.Oo1fpq_modalBody{flex-direction:column;gap:11px;min-height:0;display:flex;overflow-y:auto}.Oo1fpq_formRow{grid-template-columns:1fr 1fr;gap:10px;display:grid}.Oo1fpq_modalFoot{justify-content:flex-end;align-items:center;gap:8px;display:flex}.Oo1fpq_primaryButton{background:var(--dsw-alias-label-primary,#1f2328);min-height:32px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-family:inherit;font-size:12.5px;font-weight:600;display:inline-flex}.Oo1fpq_primaryButton:disabled{opacity:.5;cursor:default}.Oo1fpq_secondaryButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:32px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:8px;padding:0 14px;font-family:inherit;font-size:12.5px}.Oo1fpq_secondaryButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.Oo1fpq_iconButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_toast{z-index:150;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-mask-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:7px 16px;font-size:12.5px;animation:.16s ease-out Oo1fpq_audiogenToastIn;display:inline-flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Oo1fpq_audiogenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.Oo1fpq_toast{animation-duration:1ms}}.Oo1fpq_modelCheckList{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);border-radius:8px;flex-direction:column;gap:4px;max-height:180px;padding:8px;display:flex;overflow-y:auto}.Oo1fpq_resultGroups{flex-direction:column;gap:16px;display:flex}.Oo1fpq_resultGroup{flex-direction:column;gap:8px;display:flex}.Oo1fpq_resultGroupHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_resultGroupChip{background:var(--dsw-alias-bg-hover,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-primary,#1f2328);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.Oo1fpq_resultGroupError{color:#dc2626;font-size:12px}.Oo1fpq_resultGroupCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px}.Oo1fpq_overrideTable{flex-direction:column;gap:6px;display:flex}.Oo1fpq_overrideRow{align-items:center;gap:6px;display:flex}.Oo1fpq_overrideCell{min-width:0;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}.Oo1fpq_overrideCell .Oo1fpq_input{min-height:30px;padding:5px 8px}.Oo1fpq_overrideCellHead{color:var(--dsw-alias-label-primary,#1f2328);white-space:normal;font-weight:700}";
803
803
  const tagId$4 = "dsh-audiogen/audio-panel.module.css";
804
804
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
805
805
  const tag = document.createElement("style");
@@ -809,68 +809,79 @@ window.__ModuleLoader__.load({
809
809
  document.head.appendChild(tag);
810
810
  }
811
811
  var audio_panel_module_css_default = {
812
- "playButton": "Oo1fpq_playButton",
813
- "secondaryButton": "Oo1fpq_secondaryButton",
814
- "iconButton": "Oo1fpq_iconButton",
815
- "title": "Oo1fpq_title",
816
- "historyCol": "Oo1fpq_historyCol",
817
- "audioList": "Oo1fpq_audioList",
818
- "savedChip": "Oo1fpq_savedChip",
819
- "ghostButton": "Oo1fpq_ghostButton",
820
- "resultCol": "Oo1fpq_resultCol",
821
- "modalFoot": "Oo1fpq_modalFoot",
822
- "hint": "Oo1fpq_hint",
823
- "modeRow": "Oo1fpq_modeRow",
812
+ "audioCardHead": "Oo1fpq_audioCardHead",
824
813
  "modeButton": "Oo1fpq_modeButton",
814
+ "title": "Oo1fpq_title",
815
+ "formCol": "Oo1fpq_formCol",
816
+ "voiceIdChip": "Oo1fpq_voiceIdChip",
825
817
  "historyItem": "Oo1fpq_historyItem",
818
+ "resultGroupChip": "Oo1fpq_resultGroupChip",
826
819
  "resultEmpty": "Oo1fpq_resultEmpty",
820
+ "historyHeader": "Oo1fpq_historyHeader",
821
+ "historyActions": "Oo1fpq_historyActions",
822
+ "historyAction": "Oo1fpq_historyAction",
823
+ "resultGroups": "Oo1fpq_resultGroups",
824
+ "resultGroup": "Oo1fpq_resultGroup",
825
+ "panel": "Oo1fpq_panel",
826
+ "modeRow": "Oo1fpq_modeRow",
827
+ "playerCompact": "Oo1fpq_playerCompact",
828
+ "generate": "Oo1fpq_generate",
829
+ "resultEmptyIcon": "Oo1fpq_resultEmptyIcon",
830
+ "formRow": "Oo1fpq_formRow",
831
+ "audioList": "Oo1fpq_audioList",
832
+ "modalFoot": "Oo1fpq_modalFoot",
833
+ "resultGroupCount": "Oo1fpq_resultGroupCount",
834
+ "historyTitle": "Oo1fpq_historyTitle",
835
+ "overrideTable": "Oo1fpq_overrideTable",
836
+ "historyCol": "Oo1fpq_historyCol",
827
837
  "advanced": "Oo1fpq_advanced",
838
+ "overrideCell": "Oo1fpq_overrideCell",
839
+ "header": "Oo1fpq_header",
840
+ "textarea": "Oo1fpq_textarea",
841
+ "error": "Oo1fpq_error",
842
+ "ghostButton": "Oo1fpq_ghostButton",
843
+ "secondaryButton": "Oo1fpq_secondaryButton",
844
+ "iconButton": "Oo1fpq_iconButton",
828
845
  "resultMeta": "Oo1fpq_resultMeta",
829
- "historyClear": "Oo1fpq_historyClear",
830
- "historyTitle": "Oo1fpq_historyTitle",
831
- "resultModeChip": "Oo1fpq_resultModeChip",
832
- "checkbox": "Oo1fpq_checkbox",
833
- "track": "Oo1fpq_track",
834
- "panel": "Oo1fpq_panel",
835
- "modal": "Oo1fpq_modal",
836
- "historyActions": "Oo1fpq_historyActions",
837
846
  "primaryButton": "Oo1fpq_primaryButton",
838
- "playerCompact": "Oo1fpq_playerCompact",
839
- "modalBody": "Oo1fpq_modalBody",
840
- "modalHead": "Oo1fpq_modalHead",
841
- "historyEmpty": "Oo1fpq_historyEmpty",
842
847
  "historyPrompt": "Oo1fpq_historyPrompt",
843
- "historyAction": "Oo1fpq_historyAction",
844
- "header": "Oo1fpq_header",
845
- "audioCardHead": "Oo1fpq_audioCardHead",
848
+ "audiogenToastIn": "Oo1fpq_audiogenToastIn",
849
+ "modalBody": "Oo1fpq_modalBody",
850
+ "studio": "Oo1fpq_studio",
846
851
  "tab": "Oo1fpq_tab",
847
- "row": "Oo1fpq_row",
848
- "formCol": "Oo1fpq_formCol",
849
- "input": "Oo1fpq_input",
850
852
  "historyList": "Oo1fpq_historyList",
851
- "formRow": "Oo1fpq_formRow",
852
- "historyMeta": "Oo1fpq_historyMeta",
853
- "trackKnob": "Oo1fpq_trackKnob",
853
+ "checkbox": "Oo1fpq_checkbox",
854
+ "row": "Oo1fpq_row",
855
+ "hint": "Oo1fpq_hint",
856
+ "modal": "Oo1fpq_modal",
857
+ "toast": "Oo1fpq_toast",
854
858
  "audioCardIndex": "Oo1fpq_audioCardIndex",
855
- "historyHeader": "Oo1fpq_historyHeader",
856
- "modalMask": "Oo1fpq_modalMask",
857
- "audiogenToastIn": "Oo1fpq_audiogenToastIn",
858
- "voiceIdChip": "Oo1fpq_voiceIdChip",
859
- "label": "Oo1fpq_label",
860
- "error": "Oo1fpq_error",
861
- "generate": "Oo1fpq_generate",
862
- "audioCardActions": "Oo1fpq_audioCardActions",
863
- "time": "Oo1fpq_time",
859
+ "track": "Oo1fpq_track",
860
+ "input": "Oo1fpq_input",
864
861
  "tabs": "Oo1fpq_tabs",
862
+ "resultModeChip": "Oo1fpq_resultModeChip",
863
+ "modalHead": "Oo1fpq_modalHead",
864
+ "modelCheckList": "Oo1fpq_modelCheckList",
865
+ "label": "Oo1fpq_label",
866
+ "historyMeta": "Oo1fpq_historyMeta",
867
+ "overrideCellHead": "Oo1fpq_overrideCellHead",
868
+ "savedChip": "Oo1fpq_savedChip",
869
+ "historyClear": "Oo1fpq_historyClear",
865
870
  "resultEmptyHint": "Oo1fpq_resultEmptyHint",
866
- "studio": "Oo1fpq_studio",
867
- "resultEmptyIcon": "Oo1fpq_resultEmptyIcon",
868
- "audioCard": "Oo1fpq_audioCard",
869
- "player": "Oo1fpq_player",
870
- "toast": "Oo1fpq_toast",
871
+ "historyEmpty": "Oo1fpq_historyEmpty",
871
872
  "trackFill": "Oo1fpq_trackFill",
873
+ "trackKnob": "Oo1fpq_trackKnob",
874
+ "resultCol": "Oo1fpq_resultCol",
875
+ "time": "Oo1fpq_time",
876
+ "playButton": "Oo1fpq_playButton",
877
+ "audioCardActions": "Oo1fpq_audioCardActions",
878
+ "overrideRow": "Oo1fpq_overrideRow",
879
+ "resultGroupHead": "Oo1fpq_resultGroupHead",
872
880
  "muteButton": "Oo1fpq_muteButton",
873
- "textarea": "Oo1fpq_textarea"
881
+ "audioCard": "Oo1fpq_audioCard",
882
+ "resultGroupError": "Oo1fpq_resultGroupError",
883
+ "modalMask": "Oo1fpq_modalMask",
884
+ "player": "Oo1fpq_player"
874
885
  };
875
886
  //#endregion
876
887
  //#region src/client/audio-player.tsx
@@ -1181,6 +1192,115 @@ window.__ModuleLoader__.load({
1181
1192
  * compact generation history (right). Owns the «加入资源库» interactions —
1182
1193
  * a pre-generation checkbox, a per-card save dialog, and a history star.
1183
1194
  */
1195
+ /** 每模型可覆盖的参数行(留空 = 自动,沿用上方全局配置)。 */
1196
+ const OVERRIDE_ROWS = [
1197
+ {
1198
+ key: "format",
1199
+ label: "输出格式",
1200
+ type: "select",
1201
+ options: [
1202
+ "mp3",
1203
+ "wav",
1204
+ "pcm",
1205
+ "flac",
1206
+ "ogg"
1207
+ ],
1208
+ placeholder: "自动"
1209
+ },
1210
+ {
1211
+ key: "duration",
1212
+ label: "时长(秒)",
1213
+ type: "number",
1214
+ placeholder: "自动"
1215
+ },
1216
+ {
1217
+ key: "voice",
1218
+ label: "音色",
1219
+ type: "text",
1220
+ placeholder: "自动"
1221
+ },
1222
+ {
1223
+ key: "speed",
1224
+ label: "语速",
1225
+ type: "number",
1226
+ placeholder: "自动"
1227
+ },
1228
+ {
1229
+ key: "emotion",
1230
+ label: "情绪",
1231
+ type: "text",
1232
+ placeholder: "自动"
1233
+ },
1234
+ {
1235
+ key: "sample_rate",
1236
+ label: "采样率",
1237
+ type: "number",
1238
+ placeholder: "自动"
1239
+ },
1240
+ {
1241
+ key: "bitrate",
1242
+ label: "码率",
1243
+ type: "number",
1244
+ placeholder: "自动"
1245
+ },
1246
+ {
1247
+ key: "lyrics",
1248
+ label: "歌词",
1249
+ type: "text",
1250
+ placeholder: "自动"
1251
+ },
1252
+ {
1253
+ key: "seed",
1254
+ label: "seed",
1255
+ type: "number",
1256
+ placeholder: "自动"
1257
+ },
1258
+ {
1259
+ key: "steps",
1260
+ label: "steps",
1261
+ type: "number",
1262
+ placeholder: "自动"
1263
+ },
1264
+ {
1265
+ key: "cfg_scale",
1266
+ label: "cfg_scale",
1267
+ type: "number",
1268
+ placeholder: "自动"
1269
+ }
1270
+ ];
1271
+ /** 每模型覆盖值 → 请求字段的数值/类型转换(空值跳过)。 */
1272
+ function overrideSpread(override) {
1273
+ const out = {};
1274
+ const val = override.format?.trim() ?? "";
1275
+ if (val !== "") out.format = val;
1276
+ const num = (key) => {
1277
+ const raw = (override[key] ?? "").trim();
1278
+ if (raw === "") return void 0;
1279
+ const parsed = Number(raw);
1280
+ return Number.isFinite(parsed) ? parsed : void 0;
1281
+ };
1282
+ const duration = num("duration");
1283
+ if (duration !== void 0) out.duration = duration;
1284
+ const voice = override.voice?.trim() ?? "";
1285
+ if (voice !== "") out.voice = voice;
1286
+ const speed = num("speed");
1287
+ if (speed !== void 0) out.speed = speed;
1288
+ const emotion = override.emotion?.trim() ?? "";
1289
+ if (emotion !== "") out.emotion = emotion;
1290
+ const sampleRate = num("sample_rate");
1291
+ if (sampleRate !== void 0) out.sampleRate = sampleRate;
1292
+ const bitrate = num("bitrate");
1293
+ if (bitrate !== void 0) out.bitrate = bitrate;
1294
+ const lyrics = override.lyrics?.trim() ?? "";
1295
+ if (lyrics !== "") out.lyrics = lyrics;
1296
+ const seed = num("seed");
1297
+ if (seed !== void 0) out.seed = seed;
1298
+ const steps = num("steps");
1299
+ if (steps !== void 0) out.steps = steps;
1300
+ const cfgScale = num("cfg_scale");
1301
+ if (cfgScale !== void 0) out.cfgScale = cfgScale;
1302
+ return out;
1303
+ }
1184
1304
  function useConfig(scope) {
1185
1305
  const [value, setValue] = (0, react.useState)(scope.getSnapshot().value);
1186
1306
  (0, react.useEffect)(() => scope.subscribe(() => {
@@ -1261,6 +1381,8 @@ window.__ModuleLoader__.load({
1261
1381
  const [prompt, setPrompt] = (0, react.useState)("");
1262
1382
  const [previewText, setPreviewText] = (0, react.useState)("");
1263
1383
  const [model, setModel] = (0, react.useState)("");
1384
+ const [selectedModels, setSelectedModels] = (0, react.useState)([]);
1385
+ const [overrides, setOverrides] = (0, react.useState)({});
1264
1386
  const [voice, setVoice] = (0, react.useState)("");
1265
1387
  const [speed, setSpeed] = (0, react.useState)("");
1266
1388
  const [duration, setDuration] = (0, react.useState)("");
@@ -1278,8 +1400,9 @@ window.__ModuleLoader__.load({
1278
1400
  const [audioChannel, setAudioChannel] = (0, react.useState)("");
1279
1401
  const [subtitle, setSubtitle] = (0, react.useState)(false);
1280
1402
  const [loading, setLoading] = (0, react.useState)(false);
1403
+ const [progress, setProgress] = (0, react.useState)("");
1281
1404
  const [error, setError] = (0, react.useState)(null);
1282
- const [outputs, setOutputs] = (0, react.useState)([]);
1405
+ const [results, setResults] = (0, react.useState)([]);
1283
1406
  const [saveToLibrary, setSaveToLibrary] = (0, react.useState)(cfg?.autoSaveToLibrary === true);
1284
1407
  const [savedIds, setSavedIds] = (0, react.useState)(/* @__PURE__ */ new Set());
1285
1408
  const [saveDialog, setSaveDialog] = (0, react.useState)(null);
@@ -1301,6 +1424,30 @@ window.__ModuleLoader__.load({
1301
1424
  if (mode === "voice_design") return [];
1302
1425
  return modelOptions.models.filter((entry) => entry.category === void 0 || entry.category === "tts" && mode === "tts" || entry.category === mode).map((entry) => entry.alias);
1303
1426
  }, [modelOptions.models, mode]);
1427
+ (0, react.useEffect)(() => {
1428
+ if (visibleModels.length === 0) return;
1429
+ setSelectedModels((current) => {
1430
+ const valid = current.filter((item) => visibleModels.includes(item));
1431
+ if (valid.length > 0) return valid;
1432
+ return [visibleModels[0]];
1433
+ });
1434
+ }, [visibleModels]);
1435
+ (0, react.useEffect)(() => {
1436
+ setOverrides((current) => {
1437
+ const next = {};
1438
+ for (const alias of selectedModels) if (current[alias] !== void 0) next[alias] = current[alias];
1439
+ return next;
1440
+ });
1441
+ }, [selectedModels]);
1442
+ const setOverrideValue = (model, key, value) => {
1443
+ setOverrides((current) => ({
1444
+ ...current,
1445
+ [model]: {
1446
+ ...current[model] ?? {},
1447
+ [key]: value
1448
+ }
1449
+ }));
1450
+ };
1304
1451
  (0, react.useEffect)(() => {
1305
1452
  if (visibleModels.length > 0 && !visibleModels.includes(model)) setModel(visibleModels[0]);
1306
1453
  }, [visibleModels, model]);
@@ -1308,56 +1455,93 @@ window.__ModuleLoader__.load({
1308
1455
  if (reuse === void 0 || reuse === null) return;
1309
1456
  setMode(reuse.mode);
1310
1457
  if (reuse.voiceId !== void 0 || reuse.voice !== void 0) setVoice(reuse.voiceId ?? reuse.voice ?? "");
1311
- if (reuse.model !== void 0 && reuse.model !== "") setModel(reuse.model);
1458
+ if (reuse.model !== void 0 && reuse.model !== "") {
1459
+ setModel(reuse.model);
1460
+ setSelectedModels([reuse.model]);
1461
+ }
1312
1462
  }, [reuse?.nonce]);
1313
1463
  const submit = async () => {
1314
1464
  if (prompt.trim() === "") {
1315
1465
  setError(tt("prompt.required"));
1316
1466
  return;
1317
1467
  }
1468
+ const targets = mode === "voice_design" ? [""] : selectedModels.length > 0 ? selectedModels : model !== "" ? [model] : visibleModels.length > 0 ? [visibleModels[0]] : [];
1469
+ if (targets.length === 0) {
1470
+ setError("当前模式暂无可用模型");
1471
+ return;
1472
+ }
1318
1473
  setLoading(true);
1319
1474
  setError(null);
1475
+ setProgress("");
1476
+ const gathered = [];
1477
+ let anySaved = false;
1320
1478
  try {
1321
- const response = await api.generate({
1322
- mode,
1323
- model: mode === "voice_design" ? "" : (model || visibleModels[0]) ?? "",
1324
- prompt: prompt.trim(),
1325
- saveToLibrary,
1326
- ...mode === "voice_design" && designChannelId !== "" ? { channelId: designChannelId } : {},
1327
- ...previewText.trim() !== "" ? { previewText: previewText.trim() } : {},
1328
- ...voice.trim() !== "" ? { voice: voice.trim() } : {},
1329
- ...speed.trim() !== "" ? { speed: Number(speed) } : {},
1330
- ...duration.trim() !== "" ? { duration: Number(duration) } : {},
1331
- ...lyrics.trim() !== "" ? { lyrics: lyrics.trim() } : {},
1332
- ...instrumental ? { isInstrumental: true } : {},
1333
- ...loop ? { loop: true } : {},
1334
- ...promptInfluence.trim() !== "" ? { promptInfluence: Number(promptInfluence) } : {},
1335
- ...format.trim() !== "" ? { format: format.trim() } : {},
1336
- ...emotion.trim() !== "" ? { emotion: emotion.trim() } : {},
1337
- ...vol.trim() !== "" ? { vol: Number(vol) } : {},
1338
- ...pitch.trim() !== "" ? { pitch: Number(pitch) } : {},
1339
- ...toneText.trim() !== "" ? { pronunciationTone: toneText.split("\n").map((item) => item.trim()).filter((item) => item !== "") } : {},
1340
- ...sampleRate.trim() !== "" ? { sampleRate: Number(sampleRate) } : {},
1341
- ...bitrate.trim() !== "" ? { bitrate: Number(bitrate) } : {},
1342
- ...audioChannel.trim() !== "" ? { audioChannel: Number(audioChannel) } : {},
1343
- ...subtitle ? { subtitleEnable: true } : {}
1344
- });
1345
- if (!response.ok) {
1346
- setError(response.message ?? "生成失败");
1347
- return;
1479
+ for (const [index, target] of targets.entries()) {
1480
+ setProgress(`生成中 ${index + 1}/${targets.length}(${target || "音色设计"})…`);
1481
+ let response;
1482
+ try {
1483
+ response = await api.generate({
1484
+ mode,
1485
+ model: target,
1486
+ prompt: prompt.trim(),
1487
+ saveToLibrary,
1488
+ ...mode === "voice_design" && designChannelId !== "" ? { channelId: designChannelId } : {},
1489
+ ...previewText.trim() !== "" ? { previewText: previewText.trim() } : {},
1490
+ ...voice.trim() !== "" ? { voice: voice.trim() } : {},
1491
+ ...speed.trim() !== "" ? { speed: Number(speed) } : {},
1492
+ ...duration.trim() !== "" ? { duration: Number(duration) } : {},
1493
+ ...lyrics.trim() !== "" ? { lyrics: lyrics.trim() } : {},
1494
+ ...instrumental ? { isInstrumental: true } : {},
1495
+ ...loop ? { loop: true } : {},
1496
+ ...promptInfluence.trim() !== "" ? { promptInfluence: Number(promptInfluence) } : {},
1497
+ ...format.trim() !== "" ? { format: format.trim() } : {},
1498
+ ...emotion.trim() !== "" ? { emotion: emotion.trim() } : {},
1499
+ ...vol.trim() !== "" ? { vol: Number(vol) } : {},
1500
+ ...pitch.trim() !== "" ? { pitch: Number(pitch) } : {},
1501
+ ...toneText.trim() !== "" ? { pronunciationTone: toneText.split("\n").map((item) => item.trim()).filter((item) => item !== "") } : {},
1502
+ ...sampleRate.trim() !== "" ? { sampleRate: Number(sampleRate) } : {},
1503
+ ...bitrate.trim() !== "" ? { bitrate: Number(bitrate) } : {},
1504
+ ...audioChannel.trim() !== "" ? { audioChannel: Number(audioChannel) } : {},
1505
+ ...subtitle ? { subtitleEnable: true } : {},
1506
+ ...target === "" ? {} : overrideSpread(overrides[target] ?? {})
1507
+ });
1508
+ } catch (err) {
1509
+ gathered.push({
1510
+ model: target,
1511
+ outputs: [],
1512
+ error: err instanceof Error ? err.message : String(err)
1513
+ });
1514
+ continue;
1515
+ }
1516
+ if (!response.ok) {
1517
+ gathered.push({
1518
+ model: target,
1519
+ outputs: [],
1520
+ error: response.message ?? "生成失败"
1521
+ });
1522
+ continue;
1523
+ }
1524
+ const generated = response.outputs ?? [];
1525
+ gathered.push({
1526
+ model: target,
1527
+ outputs: generated
1528
+ });
1529
+ if ((response.resources?.length ?? 0) > 0 && saveToLibrary) anySaved = true;
1348
1530
  }
1349
- const generated = response.outputs ?? [];
1350
- setOutputs(generated);
1351
- if ((response.resources?.length ?? 0) > 0 && saveToLibrary) {
1352
- setSavedIds(new Set(generated.map((item) => item.id)));
1531
+ setResults(gathered);
1532
+ if (anySaved) {
1533
+ setSavedIds((current) => /* @__PURE__ */ new Set([...current, ...gathered.flatMap((group) => group.outputs.map((item) => item.id))]));
1353
1534
  props.showToast("已保存到资源库");
1354
1535
  props.onLibraryChanged();
1355
1536
  }
1537
+ const failed = gathered.filter((group) => group.error !== void 0 && group.outputs.length === 0);
1538
+ if (failed.length > 0 && failed.length === gathered.length) setError(failed.map((group) => `「${group.model || "音色设计"}」${group.error}`).join(";"));
1356
1539
  reload();
1357
1540
  } catch (err) {
1358
1541
  setError(err instanceof Error ? err.message : String(err));
1359
1542
  } finally {
1360
1543
  setLoading(false);
1544
+ setProgress("");
1361
1545
  }
1362
1546
  };
1363
1547
  const openSaveDialog = (files, context) => {
@@ -1446,19 +1630,71 @@ window.__ModuleLoader__.load({
1446
1630
  ] }) : null,
1447
1631
  needModel ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
1448
1632
  className: audio_panel_module_css_default.label,
1449
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: tt("model.label") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
1450
- className: audio_panel_module_css_default.input,
1451
- value: model,
1452
- onChange: (event) => setModel(event.target.value),
1453
- children: [visibleModels.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1454
- value: "",
1633
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [tt("model.label"), "(可多选,同一提示词逐个生成以对比)"] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1634
+ className: audio_panel_module_css_default.modelCheckList,
1635
+ children: [visibleModels.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1636
+ className: audio_panel_module_css_default.hint,
1455
1637
  children: "(当前模式暂无可用模型)"
1456
- }) : null, visibleModels.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1457
- value: item,
1458
- children: item
1638
+ }) : null, visibleModels.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
1639
+ className: audio_panel_module_css_default.checkbox,
1640
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1641
+ type: "checkbox",
1642
+ checked: selectedModels.includes(item),
1643
+ onChange: (event) => {
1644
+ const checked = event.target.checked;
1645
+ setSelectedModels((current) => checked ? [.../* @__PURE__ */ new Set([...current, item])] : current.filter((alias) => alias !== item));
1646
+ if (checked && (model === "" || !visibleModels.includes(model))) setModel(item);
1647
+ }
1648
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1649
+ title: "点击生成对比",
1650
+ children: item
1651
+ })]
1459
1652
  }, item))]
1460
1653
  })]
1461
1654
  }) : null,
1655
+ needModel && selectedModels.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
1656
+ className: audio_panel_module_css_default.advanced,
1657
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", { children: "每模型参数覆盖(默认自动:沿用上方相同配置,如输出格式均为 mp3)" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1658
+ className: audio_panel_module_css_default.overrideTable,
1659
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1660
+ className: audio_panel_module_css_default.overrideRow,
1661
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: `${audio_panel_module_css_default.overrideCell} ${audio_panel_module_css_default.overrideCellHead}` }), selectedModels.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1662
+ className: `${audio_panel_module_css_default.overrideCell} ${audio_panel_module_css_default.overrideCellHead}`,
1663
+ children: item
1664
+ }, item))]
1665
+ }), OVERRIDE_ROWS.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1666
+ className: audio_panel_module_css_default.overrideRow,
1667
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1668
+ className: audio_panel_module_css_default.overrideCell,
1669
+ title: row.label,
1670
+ children: row.label
1671
+ }), selectedModels.map((item) => {
1672
+ const value = overrides[item]?.[row.key] ?? "";
1673
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1674
+ className: audio_panel_module_css_default.overrideCell,
1675
+ children: row.type === "select" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
1676
+ className: audio_panel_module_css_default.input,
1677
+ value,
1678
+ onChange: (event) => setOverrideValue(item, row.key, event.target.value),
1679
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1680
+ value: "",
1681
+ children: "自动"
1682
+ }), row.options.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1683
+ value: option,
1684
+ children: option
1685
+ }, option))]
1686
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1687
+ className: audio_panel_module_css_default.input,
1688
+ type: row.type === "number" ? "number" : "text",
1689
+ value,
1690
+ placeholder: row.placeholder ?? "自动",
1691
+ onChange: (event) => setOverrideValue(item, row.key, event.target.value)
1692
+ })
1693
+ }, item);
1694
+ })]
1695
+ }, row.key))]
1696
+ })]
1697
+ }) : null,
1462
1698
  mode === "tts" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
1463
1699
  className: audio_panel_module_css_default.label,
1464
1700
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: tt("voice.label") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
@@ -1754,7 +1990,7 @@ window.__ModuleLoader__.load({
1754
1990
  className: audio_panel_module_css_default.generate,
1755
1991
  disabled: loading || !connected || needModel && visibleModels.length === 0,
1756
1992
  onClick: () => void submit(),
1757
- children: loading ? tt("generating") : tt("generate")
1993
+ children: loading ? progress !== "" ? progress : tt("generating") : tt("generate")
1758
1994
  })
1759
1995
  ]
1760
1996
  }),
@@ -1763,7 +1999,7 @@ window.__ModuleLoader__.load({
1763
1999
  children: [error !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1764
2000
  className: audio_panel_module_css_default.error,
1765
2001
  children: error
1766
- }) : null, outputs.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2002
+ }) : null, results.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1767
2003
  className: audio_panel_module_css_default.resultEmpty,
1768
2004
  children: [
1769
2005
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -1778,78 +2014,100 @@ window.__ModuleLoader__.load({
1778
2014
  ]
1779
2015
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1780
2016
  className: audio_panel_module_css_default.resultMeta,
1781
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: tt("result.done", { count: outputs.length }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2017
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: tt("result.done", { count: results.reduce((sum, group) => sum + group.outputs.length, 0) }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1782
2018
  className: audio_panel_module_css_default.resultModeChip,
1783
2019
  children: modeLabel
1784
2020
  })]
1785
2021
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1786
- className: audio_panel_module_css_default.audioList,
1787
- children: outputs.map((audio, index) => {
1788
- const saved = savedIds.has(audio.id);
1789
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1790
- className: audio_panel_module_css_default.audioCard,
1791
- "data-saved": saved ? "true" : "false",
2022
+ className: audio_panel_module_css_default.resultGroups,
2023
+ children: results.map((group, groupIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2024
+ className: audio_panel_module_css_default.resultGroup,
2025
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2026
+ className: audio_panel_module_css_default.resultGroupHead,
1792
2027
  children: [
1793
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1794
- className: audio_panel_module_css_default.audioCardHead,
2028
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2029
+ className: audio_panel_module_css_default.resultGroupChip,
2030
+ children: group.model || "音色设计"
2031
+ }),
2032
+ group.error !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2033
+ className: audio_panel_module_css_default.resultGroupError,
2034
+ children: ["生成失败:", group.error]
2035
+ }) : null,
2036
+ group.outputs.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2037
+ className: audio_panel_module_css_default.resultGroupCount,
2038
+ children: [group.outputs.length, " 段"]
2039
+ }) : null
2040
+ ]
2041
+ }), group.outputs.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2042
+ className: audio_panel_module_css_default.audioList,
2043
+ children: group.outputs.map((audio, index) => {
2044
+ const saved = savedIds.has(audio.id);
2045
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2046
+ className: audio_panel_module_css_default.audioCard,
2047
+ "data-saved": saved ? "true" : "false",
1795
2048
  children: [
1796
- audio.voiceId !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1797
- className: audio_panel_module_css_default.voiceIdChip,
1798
- title: "新音色 ID",
1799
- children: ["新音色 ", audio.voiceId]
1800
- }) : null,
1801
- saved ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1802
- className: audio_panel_module_css_default.savedChip,
1803
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckIcon, {}), " 已入库"]
1804
- }) : null,
1805
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1806
- className: audio_panel_module_css_default.audioCardIndex,
1807
- children: ["#", index + 1]
2049
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2050
+ className: audio_panel_module_css_default.audioCardHead,
2051
+ children: [
2052
+ audio.voiceId !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2053
+ className: audio_panel_module_css_default.voiceIdChip,
2054
+ title: "新音色 ID",
2055
+ children: ["新音色 ", audio.voiceId]
2056
+ }) : null,
2057
+ saved ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2058
+ className: audio_panel_module_css_default.savedChip,
2059
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckIcon, {}), " 已入库"]
2060
+ }) : null,
2061
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2062
+ className: audio_panel_module_css_default.audioCardIndex,
2063
+ children: ["#", index + 1]
2064
+ })
2065
+ ]
2066
+ }),
2067
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AudioPlayer, {
2068
+ src: dataUrlOf(audio),
2069
+ itemKey: audio.id
2070
+ }),
2071
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2072
+ className: audio_panel_module_css_default.audioCardActions,
2073
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
2074
+ className: audio_panel_module_css_default.ghostButton,
2075
+ href: dataUrlOf(audio),
2076
+ download: `generated-${groupIndex + 1}-${index + 1}.${audio.mime.split("/")[1]?.replace("mpeg", "mp3") ?? "mp3"}`,
2077
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DownloadIcon, {}), " 下载"]
2078
+ }), saved ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2079
+ type: "button",
2080
+ className: audio_panel_module_css_default.ghostButton,
2081
+ onClick: () => props.showToast("该音频已加入资源库"),
2082
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckIcon, {}), " 已入库"]
2083
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2084
+ type: "button",
2085
+ className: audio_panel_module_css_default.ghostButton,
2086
+ onClick: () => openSaveDialog([audio], {
2087
+ mode,
2088
+ prompt: prompt.trim(),
2089
+ ...voice.trim() !== "" ? { voice: voice.trim() } : {},
2090
+ ...audio.voiceId === void 0 ? {} : { voiceId: audio.voiceId },
2091
+ ...group.model !== "" ? { model: group.model } : {},
2092
+ ...channels.length > 0 ? { channel: channels.find((candidate) => candidate.id === (mode === "voice_design" ? designChannelId : modelOptions.defaultChannelId))?.name ?? channels[0]?.name ?? "" } : {},
2093
+ params: {
2094
+ mode,
2095
+ model: mode === "voice_design" ? "" : group.model,
2096
+ prompt: prompt.trim(),
2097
+ ...voice.trim() !== "" ? { voice: voice.trim() } : {},
2098
+ ...speed.trim() !== "" ? { speed: Number(speed) } : {},
2099
+ ...duration.trim() !== "" ? { duration: Number(duration) } : {},
2100
+ ...format.trim() !== "" ? { format: format.trim() } : {}
2101
+ }
2102
+ }),
2103
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(StarIcon, {}), " 加入资源库"]
2104
+ })]
1808
2105
  })
1809
2106
  ]
1810
- }),
1811
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AudioPlayer, {
1812
- src: dataUrlOf(audio),
1813
- itemKey: audio.id
1814
- }),
1815
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1816
- className: audio_panel_module_css_default.audioCardActions,
1817
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
1818
- className: audio_panel_module_css_default.ghostButton,
1819
- href: dataUrlOf(audio),
1820
- download: `generated-${index + 1}.${audio.mime.split("/")[1]?.replace("mpeg", "mp3") ?? "mp3"}`,
1821
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DownloadIcon, {}), " 下载"]
1822
- }), saved ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
1823
- type: "button",
1824
- className: audio_panel_module_css_default.ghostButton,
1825
- onClick: () => props.showToast("该音频已加入资源库"),
1826
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckIcon, {}), " 已入库"]
1827
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
1828
- type: "button",
1829
- className: audio_panel_module_css_default.ghostButton,
1830
- onClick: () => openSaveDialog([audio], {
1831
- mode,
1832
- prompt: prompt.trim(),
1833
- ...voice.trim() !== "" ? { voice: voice.trim() } : {},
1834
- ...audio.voiceId === void 0 ? {} : { voiceId: audio.voiceId },
1835
- ...model !== "" ? { model } : {},
1836
- ...channels.length > 0 ? { channel: channels.find((candidate) => candidate.id === (mode === "voice_design" ? designChannelId : modelOptions.defaultChannelId))?.name ?? channels[0]?.name ?? "" } : {},
1837
- params: {
1838
- mode,
1839
- model: mode === "voice_design" ? "" : (model || visibleModels[0]) ?? "",
1840
- prompt: prompt.trim(),
1841
- ...voice.trim() !== "" ? { voice: voice.trim() } : {},
1842
- ...speed.trim() !== "" ? { speed: Number(speed) } : {},
1843
- ...duration.trim() !== "" ? { duration: Number(duration) } : {},
1844
- ...format.trim() !== "" ? { format: format.trim() } : {}
1845
- }
1846
- }),
1847
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(StarIcon, {}), " 加入资源库"]
1848
- })]
1849
- })
1850
- ]
1851
- }, audio.id);
1852
- })
2107
+ }, audio.id);
2108
+ })
2109
+ }) : null]
2110
+ }, `${group.model}-${groupIndex}`))
1853
2111
  })] })]
1854
2112
  }),
1855
2113
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
@@ -1926,62 +2184,62 @@ window.__ModuleLoader__.load({
1926
2184
  document.head.appendChild(tag);
1927
2185
  }
1928
2186
  var library_module_css_default = {
1929
- "toolbar": "vzUV2a_toolbar",
1930
- "primaryBtn": "vzUV2a_primaryBtn",
1931
- "audiogenDrawerIn": "vzUV2a_audiogenDrawerIn",
1932
- "drawerLabel": "vzUV2a_drawerLabel",
1933
- "emptyHint": "vzUV2a_emptyHint",
1934
- "emptyIcon": "vzUV2a_emptyIcon",
2187
+ "provRow": "vzUV2a_provRow",
2188
+ "textarea": "vzUV2a_textarea",
2189
+ "drawerActions": "vzUV2a_drawerActions",
1935
2190
  "chipCount": "vzUV2a_chipCount",
2191
+ "listActions": "vzUV2a_listActions",
2192
+ "cardCheck": "vzUV2a_cardCheck",
2193
+ "typeBadge": "vzUV2a_typeBadge",
2194
+ "mono": "vzUV2a_mono",
2195
+ "primaryBtn": "vzUV2a_primaryBtn",
2196
+ "grid": "vzUV2a_grid",
2197
+ "card": "vzUV2a_card",
1936
2198
  "filterRow": "vzUV2a_filterRow",
1937
- "cardFoot": "vzUV2a_cardFoot",
1938
- "listCount": "vzUV2a_listCount",
1939
- "chip": "vzUV2a_chip",
1940
- "metaChip": "vzUV2a_metaChip",
2199
+ "drawer": "vzUV2a_drawer",
1941
2200
  "drawerHead": "vzUV2a_drawerHead",
1942
- "typeBadge": "vzUV2a_typeBadge",
1943
- "drawerSection": "vzUV2a_drawerSection",
1944
- "textarea": "vzUV2a_textarea",
1945
- "smallChip": "vzUV2a_smallChip",
1946
- "dangerBtn": "vzUV2a_dangerBtn",
2201
+ "drawerBody": "vzUV2a_drawerBody",
2202
+ "listHead": "vzUV2a_listHead",
2203
+ "typeChips": "vzUV2a_typeChips",
1947
2204
  "cardTime": "vzUV2a_cardTime",
1948
- "listActions": "vzUV2a_listActions",
1949
- "drawer": "vzUV2a_drawer",
1950
2205
  "cardName": "vzUV2a_cardName",
1951
- "iconBtn": "vzUV2a_iconBtn",
1952
- "drawerPlayerList": "vzUV2a_drawerPlayerList",
2206
+ "empty": "vzUV2a_empty",
1953
2207
  "drawerPlayerName": "vzUV2a_drawerPlayerName",
1954
- "drawerField": "vzUV2a_drawerField",
1955
- "input": "vzUV2a_input",
1956
- "filterLabel": "vzUV2a_filterLabel",
1957
2208
  "provenance": "vzUV2a_provenance",
1958
- "searchBox": "vzUV2a_searchBox",
2209
+ "toolbar": "vzUV2a_toolbar",
2210
+ "drawerMask": "vzUV2a_drawerMask",
2211
+ "drawerPlayer": "vzUV2a_drawerPlayer",
2212
+ "paramsDetails": "vzUV2a_paramsDetails",
2213
+ "filterLabel": "vzUV2a_filterLabel",
2214
+ "stateNote": "vzUV2a_stateNote",
2215
+ "promptText": "vzUV2a_promptText",
2216
+ "smallSelect": "vzUV2a_smallSelect",
2217
+ "selCount": "vzUV2a_selCount",
2218
+ "chip": "vzUV2a_chip",
1959
2219
  "provKey": "vzUV2a_provKey",
1960
- "cardCheck": "vzUV2a_cardCheck",
1961
2220
  "provValue": "vzUV2a_provValue",
1962
- "mono": "vzUV2a_mono",
1963
2221
  "ghostBtn": "vzUV2a_ghostBtn",
2222
+ "dangerBtn": "vzUV2a_dangerBtn",
2223
+ "drawerLabel": "vzUV2a_drawerLabel",
2224
+ "emptyIcon": "vzUV2a_emptyIcon",
2225
+ "searchBox": "vzUV2a_searchBox",
1964
2226
  "code": "vzUV2a_code",
1965
- "stateNote": "vzUV2a_stateNote",
1966
- "typeChips": "vzUV2a_typeChips",
1967
- "drawerPlayer": "vzUV2a_drawerPlayer",
1968
- "paramsDetails": "vzUV2a_paramsDetails",
1969
- "listHead": "vzUV2a_listHead",
2227
+ "smallChip": "vzUV2a_smallChip",
1970
2228
  "cardHead": "vzUV2a_cardHead",
1971
- "drawerSplit": "vzUV2a_drawerSplit",
1972
- "selCount": "vzUV2a_selCount",
2229
+ "drawerPlayerList": "vzUV2a_drawerPlayerList",
2230
+ "listCount": "vzUV2a_listCount",
2231
+ "emptyHint": "vzUV2a_emptyHint",
2232
+ "cardFoot": "vzUV2a_cardFoot",
2233
+ "iconBtn": "vzUV2a_iconBtn",
1973
2234
  "drawerTitle": "vzUV2a_drawerTitle",
1974
- "provRow": "vzUV2a_provRow",
1975
- "empty": "vzUV2a_empty",
1976
- "promptText": "vzUV2a_promptText",
1977
- "searchInput": "vzUV2a_searchInput",
1978
- "drawerActions": "vzUV2a_drawerActions",
1979
- "drawerMask": "vzUV2a_drawerMask",
1980
- "grid": "vzUV2a_grid",
1981
- "card": "vzUV2a_card",
2235
+ "drawerSection": "vzUV2a_drawerSection",
1982
2236
  "library": "vzUV2a_library",
1983
- "smallSelect": "vzUV2a_smallSelect",
1984
- "drawerBody": "vzUV2a_drawerBody"
2237
+ "searchInput": "vzUV2a_searchInput",
2238
+ "drawerSplit": "vzUV2a_drawerSplit",
2239
+ "metaChip": "vzUV2a_metaChip",
2240
+ "drawerField": "vzUV2a_drawerField",
2241
+ "input": "vzUV2a_input",
2242
+ "audiogenDrawerIn": "vzUV2a_audiogenDrawerIn"
1985
2243
  };
1986
2244
  //#endregion
1987
2245
  //#region src/client/library-view.tsx
@@ -2854,167 +3112,167 @@ window.__ModuleLoader__.load({
2854
3112
  document.head.appendChild(tag);
2855
3113
  }
2856
3114
  var panel_module_css_default = {
2857
- "modelWrap": "rwa6qG_modelWrap",
2858
- "modeRow": "rwa6qG_modeRow",
2859
- "taskStatus": "rwa6qG_taskStatus",
2860
- "panelHeader": "rwa6qG_panelHeader",
2861
- "taskPrompt": "rwa6qG_taskPrompt",
2862
- "compareControl": "rwa6qG_compareControl",
2863
- "download": "rwa6qG_download",
2864
- "canvasMeta": "rwa6qG_canvasMeta",
2865
- "galleryTagFilter": "rwa6qG_galleryTagFilter",
2866
- "galleryClear": "rwa6qG_galleryClear",
2867
- "historyThumbPlaceholder": "rwa6qG_historyThumbPlaceholder",
3115
+ "lightboxDownload": "rwa6qG_lightboxDownload",
3116
+ "galleryHeading": "rwa6qG_galleryHeading",
2868
3117
  "panelTitle": "rwa6qG_panelTitle",
2869
- "lightboxTools": "rwa6qG_lightboxTools",
2870
- "galleryTags": "rwa6qG_galleryTags",
2871
- "githubLink": "rwa6qG_githubLink",
2872
- "imageCard": "rwa6qG_imageCard",
2873
- "galleryCardFooter": "rwa6qG_galleryCardFooter",
2874
- "lightboxCaption": "rwa6qG_lightboxCaption",
2875
- "view": "rwa6qG_view",
2876
- "panel": "rwa6qG_panel",
2877
- "canvasError": "rwa6qG_canvasError",
2878
- "canvasBody": "rwa6qG_canvasBody",
2879
- "lightboxMeta": "rwa6qG_lightboxMeta",
2880
- "galleryTagEditor": "rwa6qG_galleryTagEditor",
2881
- "galleryToolbar": "rwa6qG_galleryToolbar",
2882
- "uploadBox": "rwa6qG_uploadBox",
2883
- "galleryTagFilterList": "rwa6qG_galleryTagFilterList",
2884
- "history": "rwa6qG_history",
2885
- "historySearch": "rwa6qG_historySearch",
2886
- "historyFilters": "rwa6qG_historyFilters",
2887
- "modePill": "rwa6qG_modePill",
2888
- "prompt": "rwa6qG_prompt",
2889
- "lightboxStage": "rwa6qG_lightboxStage",
2890
- "comparisonBoard": "rwa6qG_comparisonBoard",
2891
- "spinner": "rwa6qG_spinner",
2892
- "galleryImage": "rwa6qG_galleryImage",
2893
- "dshImageGenToastIn": "rwa6qG_dshImageGenToastIn",
2894
- "hiddenFile": "rwa6qG_hiddenFile",
2895
- "taskTrayCount": "rwa6qG_taskTrayCount",
2896
- "compareModelChoices": "rwa6qG_compareModelChoices",
2897
- "taskTray": "rwa6qG_taskTray",
2898
- "canvasEmptyIcon": "rwa6qG_canvasEmptyIcon",
2899
- "gallerySort": "rwa6qG_gallerySort",
2900
- "galleryRemove": "rwa6qG_galleryRemove",
2901
- "bigSpinner": "rwa6qG_bigSpinner",
2902
- "historyClear": "rwa6qG_historyClear",
2903
- "templatesButton": "rwa6qG_templatesButton",
2904
- "promptCount": "rwa6qG_promptCount",
2905
- "generateButton": "rwa6qG_generateButton",
2906
- "taskRow": "rwa6qG_taskRow",
2907
- "modelSelect": "rwa6qG_modelSelect",
3118
+ "canvasStateHint": "rwa6qG_canvasStateHint",
2908
3119
  "compareToggle": "rwa6qG_compareToggle",
2909
- "taskTrayToggle": "rwa6qG_taskTrayToggle",
2910
- "taskTrayChevron": "rwa6qG_taskTrayChevron",
2911
- "galleryImageButton": "rwa6qG_galleryImageButton",
2912
- "lightboxTool": "rwa6qG_lightboxTool",
2913
- "comparisonImageButton": "rwa6qG_comparisonImageButton",
2914
- "galleryCount": "rwa6qG_galleryCount",
2915
- "galleryFilterHeading": "rwa6qG_galleryFilterHeading",
2916
- "entryLabel": "rwa6qG_entryLabel",
2917
- "galleryHeading": "rwa6qG_galleryHeading",
2918
- "galleryRatioList": "rwa6qG_galleryRatioList",
2919
- "lightboxCaptionRow": "rwa6qG_lightboxCaptionRow",
2920
- "updateActions": "rwa6qG_updateActions",
2921
- "configGuideBody": "rwa6qG_configGuideBody",
2922
- "uploadIcon": "rwa6qG_uploadIcon",
2923
- "optionGrid": "rwa6qG_optionGrid",
2924
- "dshImageGenSpin": "rwa6qG_dshImageGenSpin",
2925
- "footer": "rwa6qG_footer",
3120
+ "generateInner": "rwa6qG_generateInner",
3121
+ "config": "rwa6qG_config",
3122
+ "galleryViewToggle": "rwa6qG_galleryViewToggle",
3123
+ "galleryRatio": "rwa6qG_galleryRatio",
3124
+ "canvasError": "rwa6qG_canvasError",
3125
+ "galleryMasonry": "rwa6qG_galleryMasonry",
3126
+ "galleryFilterDivider": "rwa6qG_galleryFilterDivider",
3127
+ "lightboxZoomLevel": "rwa6qG_lightboxZoomLevel",
2926
3128
  "reference": "rwa6qG_reference",
2927
- "lightbox": "rwa6qG_lightbox",
2928
3129
  "lightboxEdit": "rwa6qG_lightboxEdit",
2929
- "referenceImage": "rwa6qG_referenceImage",
2930
- "enhanceButton": "rwa6qG_enhanceButton",
2931
- "galleryRatio": "rwa6qG_galleryRatio",
2932
- "galleryToolbarActions": "rwa6qG_galleryToolbarActions",
2933
- "paramHint": "rwa6qG_paramHint",
2934
- "card": "rwa6qG_card",
2935
- "comparisonFullscreenGrid": "rwa6qG_comparisonFullscreenGrid",
2936
- "connectionDot": "rwa6qG_connectionDot",
2937
- "historyMain": "rwa6qG_historyMain",
2938
- "connectionStatus": "rwa6qG_connectionStatus",
2939
- "galleryTagInput": "rwa6qG_galleryTagInput",
2940
- "lightboxDownload": "rwa6qG_lightboxDownload",
3130
+ "lightboxTool": "rwa6qG_lightboxTool",
3131
+ "githubLink": "rwa6qG_githubLink",
3132
+ "galleryAdd": "rwa6qG_galleryAdd",
3133
+ "lightboxCaption": "rwa6qG_lightboxCaption",
3134
+ "panelHeader": "rwa6qG_panelHeader",
2941
3135
  "lightboxScaleFrame": "rwa6qG_lightboxScaleFrame",
2942
- "galleryFilterDivider": "rwa6qG_galleryFilterDivider",
2943
- "config": "rwa6qG_config",
2944
- "updateRelease": "rwa6qG_updateRelease",
2945
- "galleryFilter": "rwa6qG_galleryFilter",
2946
- "galleryTagEdit": "rwa6qG_galleryTagEdit",
2947
3136
  "configGuide": "rwa6qG_configGuide",
2948
- "panelHeading": "rwa6qG_panelHeading",
2949
- "entryIcon": "rwa6qG_entryIcon",
2950
- "gallerySelectionClear": "rwa6qG_gallerySelectionClear",
2951
- "galleryFilterCount": "rwa6qG_galleryFilterCount",
2952
- "historyHeader": "rwa6qG_historyHeader",
2953
- "paramGroup": "rwa6qG_paramGroup",
2954
- "lightboxActions": "rwa6qG_lightboxActions",
2955
- "galleryToast": "rwa6qG_galleryToast",
3137
+ "canvasBody": "rwa6qG_canvasBody",
3138
+ "galleryBadge": "rwa6qG_galleryBadge",
3139
+ "historyEmpty": "rwa6qG_historyEmpty",
3140
+ "connectionDot": "rwa6qG_connectionDot",
2956
3141
  "paramLabel": "rwa6qG_paramLabel",
2957
- "taskRows": "rwa6qG_taskRows",
2958
- "modelLabel": "rwa6qG_modelLabel",
2959
- "generateInner": "rwa6qG_generateInner",
2960
- "updateBanner": "rwa6qG_updateBanner",
2961
- "lightboxImage": "rwa6qG_lightboxImage",
2962
- "comparisonFullscreen": "rwa6qG_comparisonFullscreen",
2963
- "historyInfo": "rwa6qG_historyInfo",
2964
- "promptFooter": "rwa6qG_promptFooter",
2965
- "image": "rwa6qG_image",
3142
+ "configScroll": "rwa6qG_configScroll",
3143
+ "galleryToast": "rwa6qG_galleryToast",
3144
+ "lightbox": "rwa6qG_lightbox",
3145
+ "updateRelease": "rwa6qG_updateRelease",
3146
+ "canvasState": "rwa6qG_canvasState",
3147
+ "lightboxIndex": "rwa6qG_lightboxIndex",
2966
3148
  "optionRow": "rwa6qG_optionRow",
2967
- "modelMenuList": "rwa6qG_modelMenuList",
2968
- "imageCaption": "rwa6qG_imageCaption",
2969
- "galleryCard": "rwa6qG_galleryCard",
2970
- "canvasStateHint": "rwa6qG_canvasStateHint",
2971
- "galleryWorkspace": "rwa6qG_galleryWorkspace",
2972
- "historyEmpty": "rwa6qG_historyEmpty",
3149
+ "modePill": "rwa6qG_modePill",
3150
+ "lightboxImage": "rwa6qG_lightboxImage",
3151
+ "updateBanner": "rwa6qG_updateBanner",
3152
+ "hiddenFile": "rwa6qG_hiddenFile",
3153
+ "modelWrap": "rwa6qG_modelWrap",
2973
3154
  "galleryAvatar": "rwa6qG_galleryAvatar",
2974
- "studio": "rwa6qG_studio",
3155
+ "canvasMeta": "rwa6qG_canvasMeta",
3156
+ "galleryCardFooter": "rwa6qG_galleryCardFooter",
3157
+ "comparisonImageButton": "rwa6qG_comparisonImageButton",
2975
3158
  "historyTitle": "rwa6qG_historyTitle",
2976
- "canvasHistoryTag": "rwa6qG_canvasHistoryTag",
3159
+ "galleryTagEditor": "rwa6qG_galleryTagEditor",
3160
+ "generateButton": "rwa6qG_generateButton",
3161
+ "historyAction": "rwa6qG_historyAction",
3162
+ "connectionStatus": "rwa6qG_connectionStatus",
3163
+ "taskTrayChevron": "rwa6qG_taskTrayChevron",
3164
+ "galleryBulkButton": "rwa6qG_galleryBulkButton",
3165
+ "referenceActions": "rwa6qG_referenceActions",
2977
3166
  "historyThumb": "rwa6qG_historyThumb",
3167
+ "panel": "rwa6qG_panel",
3168
+ "paramGroup": "rwa6qG_paramGroup",
3169
+ "galleryTagFilter": "rwa6qG_galleryTagFilter",
3170
+ "comparisonBoard": "rwa6qG_comparisonBoard",
3171
+ "paramHint": "rwa6qG_paramHint",
3172
+ "modelSelect": "rwa6qG_modelSelect",
2978
3173
  "historyMeta": "rwa6qG_historyMeta",
2979
- "historyActions": "rwa6qG_historyActions",
2980
- "uploadHint": "rwa6qG_uploadHint",
2981
- "galleryMasonry": "rwa6qG_galleryMasonry",
2982
- "modelMenuItem": "rwa6qG_modelMenuItem",
2983
- "configScroll": "rwa6qG_configScroll",
2984
- "zoomHint": "rwa6qG_zoomHint",
2985
- "galleryFilterNote": "rwa6qG_galleryFilterNote",
2986
- "entry": "rwa6qG_entry",
2987
- "taskTrayClose": "rwa6qG_taskTrayClose",
2988
- "referenceActions": "rwa6qG_referenceActions",
2989
- "modelMenu": "rwa6qG_modelMenu",
2990
- "canvasStateTitle": "rwa6qG_canvasStateTitle",
3174
+ "galleryTags": "rwa6qG_galleryTags",
3175
+ "uploadBox": "rwa6qG_uploadBox",
3176
+ "modelLabel": "rwa6qG_modelLabel",
3177
+ "gallerySelectionClear": "rwa6qG_gallerySelectionClear",
3178
+ "modeRow": "rwa6qG_modeRow",
3179
+ "spinner": "rwa6qG_spinner",
2991
3180
  "historyPrompt": "rwa6qG_historyPrompt",
2992
- "historyItem": "rwa6qG_historyItem",
2993
- "lightboxZoomLevel": "rwa6qG_lightboxZoomLevel",
3181
+ "modelMenuList": "rwa6qG_modelMenuList",
3182
+ "optionGrid": "rwa6qG_optionGrid",
3183
+ "image": "rwa6qG_image",
3184
+ "lightboxStage": "rwa6qG_lightboxStage",
2994
3185
  "lightboxCopy": "rwa6qG_lightboxCopy",
2995
- "lightboxIndex": "rwa6qG_lightboxIndex",
2996
- "gallerySelectionBar": "rwa6qG_gallerySelectionBar",
2997
- "galleryBadge": "rwa6qG_galleryBadge",
3186
+ "lightboxFigure": "rwa6qG_lightboxFigure",
3187
+ "panelHeading": "rwa6qG_panelHeading",
3188
+ "galleryFilters": "rwa6qG_galleryFilters",
3189
+ "lightboxMeta": "rwa6qG_lightboxMeta",
3190
+ "galleryRatioList": "rwa6qG_galleryRatioList",
3191
+ "configGuideBody": "rwa6qG_configGuideBody",
3192
+ "canvasStateTitle": "rwa6qG_canvasStateTitle",
3193
+ "entryIcon": "rwa6qG_entryIcon",
2998
3194
  "updateText": "rwa6qG_updateText",
2999
- "historyList": "rwa6qG_historyList",
3195
+ "galleryToolbar": "rwa6qG_galleryToolbar",
3196
+ "gallerySelectionBar": "rwa6qG_gallerySelectionBar",
3197
+ "galleryImageButton": "rwa6qG_galleryImageButton",
3198
+ "galleryCardInfo": "rwa6qG_galleryCardInfo",
3199
+ "taskPrompt": "rwa6qG_taskPrompt",
3200
+ "imageCard": "rwa6qG_imageCard",
3201
+ "canvasEmptyIcon": "rwa6qG_canvasEmptyIcon",
3202
+ "modelMenu": "rwa6qG_modelMenu",
3203
+ "galleryClear": "rwa6qG_galleryClear",
3204
+ "compareControl": "rwa6qG_compareControl",
3205
+ "view": "rwa6qG_view",
3000
3206
  "taskTrayHeader": "rwa6qG_taskTrayHeader",
3207
+ "bigSpinner": "rwa6qG_bigSpinner",
3208
+ "promptFooter": "rwa6qG_promptFooter",
3209
+ "taskTray": "rwa6qG_taskTray",
3210
+ "historyInfo": "rwa6qG_historyInfo",
3211
+ "gallerySort": "rwa6qG_gallerySort",
3212
+ "galleryCount": "rwa6qG_galleryCount",
3213
+ "studio": "rwa6qG_studio",
3214
+ "historyHeader": "rwa6qG_historyHeader",
3215
+ "grid": "rwa6qG_grid",
3001
3216
  "lightboxNav": "rwa6qG_lightboxNav",
3002
- "canvasState": "rwa6qG_canvasState",
3217
+ "taskTrayCount": "rwa6qG_taskTrayCount",
3218
+ "updateActions": "rwa6qG_updateActions",
3219
+ "imageCaption": "rwa6qG_imageCaption",
3220
+ "historyItem": "rwa6qG_historyItem",
3221
+ "optionPill": "rwa6qG_optionPill",
3222
+ "modelMenuItem": "rwa6qG_modelMenuItem",
3223
+ "lightboxCaptionRow": "rwa6qG_lightboxCaptionRow",
3224
+ "comparisonGrid": "rwa6qG_comparisonGrid",
3225
+ "galleryTagFilterList": "rwa6qG_galleryTagFilterList",
3226
+ "galleryImage": "rwa6qG_galleryImage",
3227
+ "enhanceButton": "rwa6qG_enhanceButton",
3228
+ "dshImageGenToastIn": "rwa6qG_dshImageGenToastIn",
3229
+ "historyThumbPlaceholder": "rwa6qG_historyThumbPlaceholder",
3230
+ "entry": "rwa6qG_entry",
3231
+ "prompt": "rwa6qG_prompt",
3003
3232
  "gallerySearch": "rwa6qG_gallerySearch",
3233
+ "galleryFilterCount": "rwa6qG_galleryFilterCount",
3234
+ "historySearch": "rwa6qG_historySearch",
3235
+ "galleryToolbarActions": "rwa6qG_galleryToolbarActions",
3236
+ "comparisonFullscreen": "rwa6qG_comparisonFullscreen",
3237
+ "templatesButton": "rwa6qG_templatesButton",
3238
+ "footer": "rwa6qG_footer",
3239
+ "lightboxTools": "rwa6qG_lightboxTools",
3240
+ "referenceImage": "rwa6qG_referenceImage",
3241
+ "uploadHint": "rwa6qG_uploadHint",
3242
+ "galleryTagEdit": "rwa6qG_galleryTagEdit",
3243
+ "canvasHistoryTag": "rwa6qG_canvasHistoryTag",
3244
+ "galleryFilter": "rwa6qG_galleryFilter",
3245
+ "taskTrayToggle": "rwa6qG_taskTrayToggle",
3004
3246
  "canvas": "rwa6qG_canvas",
3005
- "galleryAdd": "rwa6qG_galleryAdd",
3006
- "lightboxFigure": "rwa6qG_lightboxFigure",
3007
- "historyAction": "rwa6qG_historyAction",
3008
- "galleryBulkButton": "rwa6qG_galleryBulkButton",
3009
- "galleryFilters": "rwa6qG_galleryFilters",
3247
+ "historyMain": "rwa6qG_historyMain",
3248
+ "promptCount": "rwa6qG_promptCount",
3249
+ "historyActions": "rwa6qG_historyActions",
3250
+ "lightboxActions": "rwa6qG_lightboxActions",
3251
+ "galleryWorkspace": "rwa6qG_galleryWorkspace",
3252
+ "galleryFilterNote": "rwa6qG_galleryFilterNote",
3253
+ "historyFilters": "rwa6qG_historyFilters",
3254
+ "compareModelChoices": "rwa6qG_compareModelChoices",
3255
+ "comparisonFullscreenGrid": "rwa6qG_comparisonFullscreenGrid",
3256
+ "taskRow": "rwa6qG_taskRow",
3257
+ "historyClear": "rwa6qG_historyClear",
3258
+ "zoomHint": "rwa6qG_zoomHint",
3259
+ "galleryRemove": "rwa6qG_galleryRemove",
3010
3260
  "gallerySelectMode": "rwa6qG_gallerySelectMode",
3011
- "galleryViewToggle": "rwa6qG_galleryViewToggle",
3012
- "galleryCardInfo": "rwa6qG_galleryCardInfo",
3013
- "gallerySelect": "rwa6qG_gallerySelect",
3014
- "comparisonGrid": "rwa6qG_comparisonGrid",
3015
3261
  "lightboxClose": "rwa6qG_lightboxClose",
3016
- "optionPill": "rwa6qG_optionPill",
3017
- "grid": "rwa6qG_grid"
3262
+ "entryLabel": "rwa6qG_entryLabel",
3263
+ "uploadIcon": "rwa6qG_uploadIcon",
3264
+ "galleryFilterHeading": "rwa6qG_galleryFilterHeading",
3265
+ "gallerySelect": "rwa6qG_gallerySelect",
3266
+ "taskTrayClose": "rwa6qG_taskTrayClose",
3267
+ "download": "rwa6qG_download",
3268
+ "card": "rwa6qG_card",
3269
+ "dshImageGenSpin": "rwa6qG_dshImageGenSpin",
3270
+ "historyList": "rwa6qG_historyList",
3271
+ "history": "rwa6qG_history",
3272
+ "galleryCard": "rwa6qG_galleryCard",
3273
+ "taskStatus": "rwa6qG_taskStatus",
3274
+ "taskRows": "rwa6qG_taskRows",
3275
+ "galleryTagInput": "rwa6qG_galleryTagInput"
3018
3276
  };
3019
3277
  //#endregion
3020
3278
  //#region src/client/mount.tsx
@@ -3671,79 +3929,79 @@ window.__ModuleLoader__.load({
3671
3929
  document.head.appendChild(tag);
3672
3930
  }
3673
3931
  var settings_card_module_css_default = {
3674
- "channelAddRow": "zmjoSq_channelAddRow",
3675
- "channelRow": "zmjoSq_channelRow",
3676
- "channelMeta": "zmjoSq_channelMeta",
3677
- "editorTitle": "zmjoSq_editorTitle",
3678
- "editorHeader": "zmjoSq_editorHeader",
3679
- "linkButton": "zmjoSq_linkButton",
3680
- "sectionHeader": "zmjoSq_sectionHeader",
3681
- "customSettings": "zmjoSq_customSettings",
3682
- "modelCatalog": "zmjoSq_modelCatalog",
3683
- "field": "zmjoSq_field",
3684
- "candidate": "zmjoSq_candidate",
3685
- "pending": "zmjoSq_pending",
3686
3932
  "candidateLabel": "zmjoSq_candidateLabel",
3687
- "head": "zmjoSq_head",
3688
- "channelAction": "zmjoSq_channelAction",
3689
- "failed": "zmjoSq_failed",
3933
+ "chevronOpen": "zmjoSq_chevronOpen",
3934
+ "channelMeta": "zmjoSq_channelMeta",
3935
+ "modelBadge": "zmjoSq_modelBadge",
3936
+ "candidatePanel": "zmjoSq_candidatePanel",
3937
+ "channelEditor": "zmjoSq_channelEditor",
3938
+ "channelList": "zmjoSq_channelList",
3690
3939
  "sectionHint": "zmjoSq_sectionHint",
3691
- "editorTag": "zmjoSq_editorTag",
3692
- "channelName": "zmjoSq_channelName",
3693
- "modelRowRemove": "zmjoSq_modelRowRemove",
3940
+ "channelAction": "zmjoSq_channelAction",
3941
+ "card": "zmjoSq_card",
3694
3942
  "link": "zmjoSq_link",
3695
- "name": "zmjoSq_name",
3696
- "modelArrow": "zmjoSq_modelArrow",
3943
+ "channelDotWarn": "zmjoSq_channelDotWarn",
3944
+ "headText": "zmjoSq_headText",
3945
+ "modelCatalog": "zmjoSq_modelCatalog",
3946
+ "modelEmpty": "zmjoSq_modelEmpty",
3947
+ "candidateList": "zmjoSq_candidateList",
3948
+ "label": "zmjoSq_label",
3949
+ "body": "zmjoSq_body",
3950
+ "reset": "zmjoSq_reset",
3951
+ "channelAddRow": "zmjoSq_channelAddRow",
3952
+ "customSettings": "zmjoSq_customSettings",
3953
+ "channelRow": "zmjoSq_channelRow",
3697
3954
  "modelRows": "zmjoSq_modelRows",
3698
- "footer": "zmjoSq_footer",
3699
- "addModel": "zmjoSq_addModel",
3700
- "channelMain": "zmjoSq_channelMain",
3701
- "customSettingsSummary": "zmjoSq_customSettingsSummary",
3702
- "modelInput": "zmjoSq_modelInput",
3703
- "save": "zmjoSq_save",
3704
- "header": "zmjoSq_header",
3705
- "modelCategorySelect": "zmjoSq_modelCategorySelect",
3706
- "card": "zmjoSq_card",
3707
- "channelEmpty": "zmjoSq_channelEmpty",
3955
+ "candidateTitle": "zmjoSq_candidateTitle",
3956
+ "description": "zmjoSq_description",
3708
3957
  "candidateActions": "zmjoSq_candidateActions",
3709
- "channelList": "zmjoSq_channelList",
3710
- "channelDanger": "zmjoSq_channelDanger",
3958
+ "modelCatalogTools": "zmjoSq_modelCatalogTools",
3959
+ "head": "zmjoSq_head",
3711
3960
  "input": "zmjoSq_input",
3712
- "candidateId": "zmjoSq_candidateId",
3713
- "candidateList": "zmjoSq_candidateList",
3714
- "editorFooter": "zmjoSq_editorFooter",
3715
- "modelCatalogMeta": "zmjoSq_modelCatalogMeta",
3716
- "reset": "zmjoSq_reset",
3717
- "sectionTitle": "zmjoSq_sectionTitle",
3718
- "discard": "zmjoSq_discard",
3719
- "modelCatalogHead": "zmjoSq_modelCatalogHead",
3720
3961
  "channelSection": "zmjoSq_channelSection",
3721
- "headText": "zmjoSq_headText",
3722
- "chevron": "zmjoSq_chevron",
3723
- "channelAdd": "zmjoSq_channelAdd",
3724
- "modelCatalogTools": "zmjoSq_modelCatalogTools",
3725
- "candidatePanel": "zmjoSq_candidatePanel",
3726
- "channelBadge": "zmjoSq_channelBadge",
3727
- "candidateHead": "zmjoSq_candidateHead",
3728
- "readOnly": "zmjoSq_readOnly",
3729
- "label": "zmjoSq_label",
3730
- "channelDotWarn": "zmjoSq_channelDotWarn",
3731
- "body": "zmjoSq_body",
3732
- "channelEditor": "zmjoSq_channelEditor",
3733
- "modelEmpty": "zmjoSq_modelEmpty",
3734
3962
  "select": "zmjoSq_select",
3963
+ "modelCatalogMeta": "zmjoSq_modelCatalogMeta",
3964
+ "candidateId": "zmjoSq_candidateId",
3965
+ "modelCatalogTitle": "zmjoSq_modelCatalogTitle",
3735
3966
  "deleteConfirmText": "zmjoSq_deleteConfirmText",
3967
+ "readOnly": "zmjoSq_readOnly",
3968
+ "sectionHeader": "zmjoSq_sectionHeader",
3969
+ "failed": "zmjoSq_failed",
3970
+ "modelRowRemove": "zmjoSq_modelRowRemove",
3971
+ "editorTag": "zmjoSq_editorTag",
3972
+ "footer": "zmjoSq_footer",
3973
+ "header": "zmjoSq_header",
3974
+ "addModel": "zmjoSq_addModel",
3975
+ "editorWrap": "zmjoSq_editorWrap",
3976
+ "channelName": "zmjoSq_channelName",
3977
+ "candidate": "zmjoSq_candidate",
3978
+ "modelCatalogHead": "zmjoSq_modelCatalogHead",
3979
+ "modelInput": "zmjoSq_modelInput",
3980
+ "channelBadge": "zmjoSq_channelBadge",
3981
+ "modelArrow": "zmjoSq_modelArrow",
3982
+ "channelDanger": "zmjoSq_channelDanger",
3736
3983
  "channelDotReady": "zmjoSq_channelDotReady",
3737
- "channelHost": "zmjoSq_channelHost",
3738
- "modelCatalogTitle": "zmjoSq_modelCatalogTitle",
3739
- "chevronOpen": "zmjoSq_chevronOpen",
3984
+ "editorTitle": "zmjoSq_editorTitle",
3740
3985
  "modelRow": "zmjoSq_modelRow",
3741
- "modelBadge": "zmjoSq_modelBadge",
3986
+ "modelCategorySelect": "zmjoSq_modelCategorySelect",
3987
+ "discard": "zmjoSq_discard",
3988
+ "linkButton": "zmjoSq_linkButton",
3989
+ "chevron": "zmjoSq_chevron",
3990
+ "channelMain": "zmjoSq_channelMain",
3742
3991
  "detectOk": "zmjoSq_detectOk",
3743
- "candidateTitle": "zmjoSq_candidateTitle",
3744
- "description": "zmjoSq_description",
3745
- "editorWrap": "zmjoSq_editorWrap",
3746
- "customSettingsBody": "zmjoSq_customSettingsBody"
3992
+ "field": "zmjoSq_field",
3993
+ "editorHeader": "zmjoSq_editorHeader",
3994
+ "pending": "zmjoSq_pending",
3995
+ "save": "zmjoSq_save",
3996
+ "channelHost": "zmjoSq_channelHost",
3997
+ "editorFooter": "zmjoSq_editorFooter",
3998
+ "sectionTitle": "zmjoSq_sectionTitle",
3999
+ "candidateHead": "zmjoSq_candidateHead",
4000
+ "name": "zmjoSq_name",
4001
+ "channelAdd": "zmjoSq_channelAdd",
4002
+ "customSettingsSummary": "zmjoSq_customSettingsSummary",
4003
+ "customSettingsBody": "zmjoSq_customSettingsBody",
4004
+ "channelEmpty": "zmjoSq_channelEmpty"
3747
4005
  };
3748
4006
  //#endregion
3749
4007
  //#region src/client/SettingsCard.tsx
@@ -4667,16 +4925,16 @@ window.__ModuleLoader__.load({
4667
4925
  }
4668
4926
  var audio_toolview_module_css_default = {
4669
4927
  "header": "_7K1QKa_header",
4670
- "download": "_7K1QKa_download",
4928
+ "audios": "_7K1QKa_audios",
4929
+ "empty": "_7K1QKa_empty",
4671
4930
  "message": "_7K1QKa_message",
4672
- "audioRow": "_7K1QKa_audioRow",
4673
- "icon": "_7K1QKa_icon",
4674
4931
  "audio": "_7K1QKa_audio",
4675
- "error": "_7K1QKa_error",
4676
- "status": "_7K1QKa_status",
4677
- "empty": "_7K1QKa_empty",
4678
4932
  "root": "_7K1QKa_root",
4679
- "audios": "_7K1QKa_audios"
4933
+ "download": "_7K1QKa_download",
4934
+ "icon": "_7K1QKa_icon",
4935
+ "status": "_7K1QKa_status",
4936
+ "audioRow": "_7K1QKa_audioRow",
4937
+ "error": "_7K1QKa_error"
4680
4938
  };
4681
4939
  //#endregion
4682
4940
  //#region src/client/audio-toolview.tsx