fix: support Chinese input in local edit prompts
This commit is contained in:
parent
1fc37c4a8f
commit
a66c3107b9
@ -2046,6 +2046,7 @@ export function ImageNode({
|
||||
Record<string, HTMLInputElement | null>
|
||||
>({});
|
||||
const localEditPromptDraftRefs = useRef<Record<string, string>>({});
|
||||
const localEditPromptComposingRefs = useRef<Record<string, boolean>>({});
|
||||
const localEditRegionsRef = useRef<LocalEditRegion[]>(localEditRegions);
|
||||
|
||||
const updateNode = useCanvasStore((state) => state.updateNode);
|
||||
@ -3653,6 +3654,7 @@ export function ImageNode({
|
||||
const deleteLocalEditRegion = useCallback(
|
||||
(regionId: string) => {
|
||||
delete localEditPromptDraftRefs.current[regionId];
|
||||
delete localEditPromptComposingRefs.current[regionId];
|
||||
commitLocalEditRegions(
|
||||
localEditRegionsRef.current.filter((region) => region.id !== regionId)
|
||||
);
|
||||
@ -7990,6 +7992,8 @@ export function ImageNode({
|
||||
localEditPromptDraftRefs.current[region.id] ??
|
||||
region.prompt
|
||||
}
|
||||
autoComplete="off"
|
||||
inputMode="text"
|
||||
onBlur={(event) => {
|
||||
const nextPrompt = event.currentTarget.value;
|
||||
localEditPromptDraftRefs.current[region.id] =
|
||||
@ -8017,6 +8021,28 @@ export function ImageNode({
|
||||
event.stopPropagation();
|
||||
event.currentTarget.focus({ preventScroll: true });
|
||||
}}
|
||||
onBeforeInput={(event) => {
|
||||
event.nativeEvent.stopImmediatePropagation?.();
|
||||
event.stopPropagation();
|
||||
}}
|
||||
onCompositionEnd={(event) => {
|
||||
event.nativeEvent.stopImmediatePropagation?.();
|
||||
event.stopPropagation();
|
||||
localEditPromptComposingRefs.current[region.id] =
|
||||
false;
|
||||
localEditPromptDraftRefs.current[region.id] =
|
||||
event.currentTarget.value;
|
||||
}}
|
||||
onCompositionStart={(event) => {
|
||||
event.nativeEvent.stopImmediatePropagation?.();
|
||||
event.stopPropagation();
|
||||
localEditPromptComposingRefs.current[region.id] =
|
||||
true;
|
||||
}}
|
||||
onCompositionUpdate={(event) => {
|
||||
event.nativeEvent.stopImmediatePropagation?.();
|
||||
event.stopPropagation();
|
||||
}}
|
||||
onFocus={(event) => {
|
||||
event.stopPropagation();
|
||||
setEditingLocalEditRegionId((current) =>
|
||||
@ -8034,6 +8060,13 @@ export function ImageNode({
|
||||
onKeyDown={(event) => {
|
||||
event.nativeEvent.stopImmediatePropagation?.();
|
||||
event.stopPropagation();
|
||||
const isComposing =
|
||||
event.nativeEvent.isComposing ||
|
||||
event.key === "Process" ||
|
||||
localEditPromptComposingRefs.current[region.id];
|
||||
if (isComposing) {
|
||||
return;
|
||||
}
|
||||
if (event.key === "Enter") {
|
||||
event.preventDefault();
|
||||
persistLocalEditRegionPrompt(
|
||||
@ -8077,6 +8110,7 @@ export function ImageNode({
|
||||
ref={(input) => {
|
||||
localEditPromptInputRefs.current[region.id] = input;
|
||||
}}
|
||||
type="text"
|
||||
/>
|
||||
) : (
|
||||
<button
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user