fix: stabilize local edit prompt input
This commit is contained in:
parent
a5b3e35df9
commit
7792d1a740
@ -3361,6 +3361,19 @@ export function ImageNode({
|
||||
);
|
||||
|
||||
const updateLocalEditRegionPrompt = useCallback(
|
||||
(regionId: string, prompt: string) => {
|
||||
setLocalEditRegions((prevRegions) =>
|
||||
reindexLocalEditRegions(
|
||||
prevRegions.map((region) =>
|
||||
region.id === regionId ? { ...region, prompt } : region
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
const persistLocalEditRegionPrompt = useCallback(
|
||||
(regionId: string, prompt: string) => {
|
||||
commitLocalEditRegions(
|
||||
localEditRegions.map((region) =>
|
||||
@ -7526,25 +7539,38 @@ export function ImageNode({
|
||||
{isEditing ? (
|
||||
<input
|
||||
autoFocus={editingLocalEditRegionId === region.id}
|
||||
className="h-9 min-w-0 flex-1 rounded-full border border-slate-200 bg-white/95 px-3 text-[12px] font-medium text-slate-900 shadow-[0_10px_24px_rgba(15,23,42,0.14)] outline-none ring-2 ring-transparent transition placeholder:text-slate-400 focus:border-emerald-400 focus:ring-emerald-300/35 dark:border-white/20 dark:bg-slate-950/88 dark:text-white dark:placeholder:text-white/42 dark:focus:border-white/40 dark:focus:ring-white/18"
|
||||
onBlur={() => {
|
||||
if (region.prompt.trim()) {
|
||||
className="h-9 min-w-0 flex-1 rounded-full border border-slate-300 bg-white/95 px-3 text-[12px] font-medium text-slate-950 shadow-[0_10px_24px_rgba(15,23,42,0.14)] outline-none ring-2 ring-transparent transition placeholder:text-slate-400 focus:border-slate-950 focus:ring-slate-950/15 dark:border-white/20 dark:bg-slate-950/88 dark:text-white dark:placeholder:text-white/42 dark:focus:border-white/40 dark:focus:ring-white/18"
|
||||
onBlur={(event) => {
|
||||
const nextPrompt = event.currentTarget.value;
|
||||
persistLocalEditRegionPrompt(region.id, nextPrompt);
|
||||
if (nextPrompt.trim()) {
|
||||
setEditingLocalEditRegionId(null);
|
||||
}
|
||||
}}
|
||||
onChange={(event) =>
|
||||
updateLocalEditRegionPrompt(region.id, event.target.value)
|
||||
}
|
||||
onFocus={() => setEditingLocalEditRegionId(region.id)}
|
||||
onKeyDown={(event) => {
|
||||
event.stopPropagation();
|
||||
if (event.key === "Enter") {
|
||||
event.preventDefault();
|
||||
persistLocalEditRegionPrompt(
|
||||
region.id,
|
||||
event.currentTarget.value
|
||||
);
|
||||
setEditingLocalEditRegionId(null);
|
||||
}
|
||||
if (event.key === "Escape") {
|
||||
event.preventDefault();
|
||||
persistLocalEditRegionPrompt(
|
||||
region.id,
|
||||
event.currentTarget.value
|
||||
);
|
||||
setEditingLocalEditRegionId(null);
|
||||
}
|
||||
}}
|
||||
onKeyUp={(event) => event.stopPropagation()}
|
||||
placeholder={`区域 ${region.index} 提示词`}
|
||||
value={region.prompt}
|
||||
/>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user