전략편집기 수정

This commit is contained in:
Macbook
2026-06-14 22:17:53 +09:00
parent dec812089d
commit 76ffa5ac52
6 changed files with 343 additions and 52 deletions
@@ -35,6 +35,10 @@ import {
import ConditionNodeSettings from './ConditionNodeSettings';
import StochPairNodeSettings from './StochPairNodeSettings';
import PriceExtremePairNodeSettings from './PriceExtremePairNodeSettings';
import {
isPaletteHtmlDrag,
readPaletteHtmlDragData,
} from '../../utils/paletteDragSession';
const LOGIC_COLORS: Record<string, string> = {
AND: '#00aaff',
@@ -126,7 +130,7 @@ function usePaletteDropHandlers(id: string, d: StrategyFlowNodeData) {
const { screenToFlowPosition } = useReactFlow();
const onDragOver = useCallback((e: React.DragEvent) => {
if (!e.dataTransfer.types.includes('application/json')) return;
if (!isPaletteHtmlDrag(e)) return;
e.preventDefault();
e.stopPropagation();
e.dataTransfer.dropEffect = 'copy';
@@ -144,11 +148,10 @@ function usePaletteDropHandlers(id: string, d: StrategyFlowNodeData) {
const onDrop = useCallback((e: React.DragEvent) => {
e.preventDefault();
e.stopPropagation();
try {
const payload = JSON.parse(e.dataTransfer.getData('application/json'));
const flowPos = screenToFlowPosition({ x: e.clientX, y: e.clientY });
d.onDropTarget?.(id, payload, flowPos);
} catch { /* ignore */ }
const payload = readPaletteHtmlDragData(e);
if (!payload) return;
const flowPos = screenToFlowPosition({ x: e.clientX, y: e.clientY });
d.onDropTarget?.(id, payload, flowPos);
}, [d, id, screenToFlowPosition]);
return { onDragOver, onDragLeave, onDrop };