视频复刻优化替换商品和替换角色

This commit is contained in:
Azmat@qq.com
2026-08-31 16:40:16 +08:00
parent db71b29009
commit e24ca1b0de
9 changed files with 253 additions and 71 deletions
+19 -5
View File
@@ -962,8 +962,11 @@ export function VideoReplacePage({
<div className="product-replace-options">
<button
type="button"
className={`replace-product-method${source === "library" ? " active" : ""}${librarySelected ? " has-product-preview" : ""}`}
className={`replace-product-method${source === "library" ? " active" : ""}${librarySelected ? " has-product-preview" : ""}${generating ? " is-disabled" : ""}`}
disabled={generating}
aria-disabled={generating}
onClick={() => {
if (generating) return;
if (replaceMode === "character") setPendingModelId(selectedModel?.id || "");
else setPendingProductId(selectedProduct?.id || "");
setLibraryOpen(true);
@@ -986,12 +989,17 @@ export function VideoReplacePage({
</button>
<div
className={`replace-product-method replace-temporary-method${source === "temporary" ? " active" : ""}${tempDisplay.length ? " has-images" : ""}${tempDrop.dragging ? " is-dragover" : ""}`}
className={`replace-product-method replace-temporary-method${source === "temporary" ? " active" : ""}${tempDisplay.length ? " has-images" : ""}${tempDrop.dragging ? " is-dragover" : ""}${generating ? " is-disabled" : ""}`}
role="button"
tabIndex={0}
{...tempDrop.dropProps}
onClick={() => tempInputRef.current?.click()}
tabIndex={generating ? -1 : 0}
aria-disabled={generating}
{...(!generating ? tempDrop.dropProps : {})}
onClick={() => {
if (generating) return;
tempInputRef.current?.click();
}}
onKeyDown={(event) => {
if (generating) return;
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
tempInputRef.current?.click();
@@ -1023,9 +1031,11 @@ export function VideoReplacePage({
type="button"
className="replace-temporary-remove"
aria-label={`删除第${index + 1}张临时${copy.temporaryNoun}`}
disabled={generating}
onClick={(event) => {
event.preventDefault();
event.stopPropagation();
if (generating) return;
if (tempFiles.length) {
setTempFiles((current) => current.filter((_, itemIndex) => itemIndex !== index));
} else {
@@ -1049,9 +1059,11 @@ export function VideoReplacePage({
<button
type="button"
className="replace-temporary-clear"
disabled={generating}
onClick={(event) => {
event.preventDefault();
event.stopPropagation();
if (generating) return;
if (!tempFiles.length && !tempAssetRefs.length) return;
setTempFiles([]);
setTempAssetRefs([]);
@@ -1072,8 +1084,10 @@ export function VideoReplacePage({
accept="image/jpeg,image/png,image/webp"
multiple
hidden
disabled={generating}
onClick={(event) => event.stopPropagation()}
onChange={(event) => {
if (generating) return;
addTempImages(event.target.files);
event.target.value = "";
}}