fix: make local edit prompt typing immediate
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-05-23 15:21:54 +08:00
parent d9dea4eb75
commit f42554e82a

View File

@ -2681,6 +2681,12 @@ export function ImageNode({
},
[]
);
const updateLocalEditPromptDraftRef = useCallback(
(regionId: string, prompt: string) => {
localEditPromptDraftRefs.current[regionId] = prompt;
},
[]
);
const restoreLocalEditPromptSelection = useCallback(
(regionId: string, position: number) => {
@ -2744,11 +2750,12 @@ export function ImageNode({
}
event.preventDefault();
updateLocalEditPromptDraft(regionId, nextValue);
input.value = nextValue;
updateLocalEditPromptDraftRef(regionId, nextValue);
restoreLocalEditPromptSelection(regionId, nextCursor);
return true;
},
[restoreLocalEditPromptSelection, updateLocalEditPromptDraft]
[restoreLocalEditPromptSelection, updateLocalEditPromptDraftRef]
);
const finishLocalEditPromptComposition = useCallback(
@ -2756,12 +2763,12 @@ export function ImageNode({
const snapshot = localEditPromptCompositionStartRefs.current[regionId];
delete localEditPromptCompositionStartRefs.current[regionId];
if (!snapshot) {
updateLocalEditPromptDraft(regionId, input.value);
updateLocalEditPromptDraftRef(regionId, input.value);
return;
}
if (input.value !== snapshot.value) {
updateLocalEditPromptDraft(regionId, input.value);
updateLocalEditPromptDraftRef(regionId, input.value);
return;
}
@ -2770,13 +2777,14 @@ export function ImageNode({
}
const nextValue = `${snapshot.value.slice(0, snapshot.start)}${compositionText}${snapshot.value.slice(snapshot.end)}`;
updateLocalEditPromptDraft(regionId, nextValue);
input.value = nextValue;
updateLocalEditPromptDraftRef(regionId, nextValue);
restoreLocalEditPromptSelection(
regionId,
snapshot.start + compositionText.length
);
},
[restoreLocalEditPromptSelection, updateLocalEditPromptDraft]
[restoreLocalEditPromptSelection, updateLocalEditPromptDraftRef]
);
const refreshBoxCutoutMetrics = useCallback(() => {
@ -8230,14 +8238,16 @@ export function ImageNode({
enterKeyHint="done"
inputMode="text"
lang="zh-CN"
value={
defaultValue={
localEditPromptDrafts[region.id] ??
localEditPromptDraftRefs.current[region.id] ??
region.prompt
}
onBlur={(event) => {
const nextPrompt = event.currentTarget.value;
updateLocalEditPromptDraft(region.id, nextPrompt);
const nextPrompt =
localEditPromptDraftRefs.current[region.id] ??
event.currentTarget.value;
event.currentTarget.value = nextPrompt;
persistLocalEditRegionPrompt(region.id, nextPrompt);
}}
onClick={(event) => {
@ -8272,7 +8282,7 @@ export function ImageNode({
);
}}
onChange={(event) => {
updateLocalEditPromptDraft(
updateLocalEditPromptDraftRef(
region.id,
event.currentTarget.value
);