refactor(editor): unify selection key + clean node view

This commit is contained in:
clawdbot 2026-01-28 22:27:09 +08:00
parent e296fc0979
commit 5ff0c22724
2 changed files with 14 additions and 16 deletions

View File

@ -14,6 +14,7 @@ import { bindEditorHotkeys } from './hotkeys';
import { Canvas } from './Canvas'; import { Canvas } from './Canvas';
import { ContextMenu, type ContextMenuState } from './ContextMenu'; import { ContextMenu, type ContextMenuState } from './ContextMenu';
import { Inspector } from './Inspector'; import { Inspector } from './Inspector';
import { selectionKeyOf } from './selection';
import { createInitialState, editorReducer, exportScreenJSON } from './store'; import { createInitialState, editorReducer, exportScreenJSON } from './store';
const { Header, Sider, Content } = Layout; const { Header, Sider, Content } = Layout;
@ -86,10 +87,7 @@ export function EditorApp() {
const closeContextMenu = useCallback(() => setCtxMenu(null), []); const closeContextMenu = useCallback(() => setCtxMenu(null), []);
const selectionKeyOf = useCallback((ids: string[]) => { // selectionKeyOf imported from ./selection
// Keep stable regardless of ordering.
return [...ids].sort().join('|');
}, []);
const ctxMenuSyncedRef = useRef(false); const ctxMenuSyncedRef = useRef(false);
@ -103,7 +101,7 @@ export function EditorApp() {
} }
dispatch(action); dispatch(action);
}, },
[ctxMenu, dispatch, selectionKeyOf, state.selection.ids], [ctxMenu, dispatch, state.selection.ids],
); );
useEffect(() => { useEffect(() => {