맥 os 전략편집기 지표 드래그 문제해결

This commit is contained in:
Macbook
2026-06-15 09:39:19 +09:00
parent dbad00aa0f
commit a3aca639c1
13 changed files with 309 additions and 209 deletions
@@ -34,6 +34,7 @@ import {
isPaletteHtmlDrag,
isPaletteHtmlDragActive,
getLastHtmlPaletteDragClientXY,
isPaletteDragSessionActive,
markPaletteHtmlDragEnd,
needsPointerPaletteDrag,
readPaletteHtmlDragData,
@@ -898,6 +899,7 @@ function StrategyEditorCanvasInner({
// 트리 구조 변경 → 전체 재배치 / 조건 편집 → 라벨만 갱신(위치 유지)
useEffect(() => {
if (isPaletteDragSessionActive()) return;
const { nodes: layoutNodes, edges: layoutEdges } = rebuildFlow();
const mergedEdges = applyEdgeHandles(layoutEdges, positionsRef.current, edgeHandlesRef.current);
pruneEdgeHandles(edgeHandlesRef.current, mergedEdges);
@@ -1319,7 +1321,7 @@ function StrategyEditorCanvasInner({
return;
}
const xy = getLastHtmlPaletteDragClientXY();
if (xy) {
if (xy && (xy.x !== 0 || xy.y !== 0)) {
const { flowPos, anchorId } = resolveDropFromClientRef.current(xy.x, xy.y);
if (anchorId) {
updatePreviewRef.current(anchorId, flowPos);
@@ -1342,7 +1344,7 @@ function StrategyEditorCanvasInner({
}, []);
useEffect(() => {
if (needsPointerPaletteDrag()) return;
if (needsPointerPaletteDrag()) return undefined;
const onDocDragOver = (e: DragEvent) => {
if (!isPaletteHtmlDragActive()) return;
e.preventDefault();
@@ -1352,12 +1354,13 @@ function StrategyEditorCanvasInner({
lastPreviewAnchorRef.current = anchorId;
}
};
document.addEventListener('dragover', onDocDragOver, { passive: false });
return () => document.removeEventListener('dragover', onDocDragOver);
document.addEventListener('dragover', onDocDragOver, { passive: false, capture: true });
return () => document.removeEventListener('dragover', onDocDragOver, { capture: true });
}, []);
useEffect(() => {
const onDocDragEnd = () => {
if (!isPaletteHtmlDragActive()) return;
lastPreviewAnchorRef.current = null;
lastPreviewKeyRef.current = null;
clearPreviewRef.current();