task(A2): tool dispatcher behind flag
This commit is contained in:
@@ -12,6 +12,8 @@ import { SpatialIndex } from '../canvas/SpatialIndex';
|
||||
import { LayerManager } from '../canvas/LayerManager';
|
||||
import { GroupManager } from '../tools/modification/GroupTool';
|
||||
import { formatCoordinate } from '../utils/format';
|
||||
import { InteractionDispatcher } from '../interaction/dispatcher';
|
||||
import { logger } from '../utils/logger';
|
||||
|
||||
const CanvasArea: React.FC<CanvasAreaProps> = ({
|
||||
cursorPos, viewMode, onViewChange, gridEnabled, orthoEnabled, snapEnabled,
|
||||
@@ -26,6 +28,7 @@ const CanvasArea: React.FC<CanvasAreaProps> = ({
|
||||
const zoomPanRef = useRef<ZoomPanController | null>(null);
|
||||
const renderEngineRef = useRef<RenderEngine | null>(null);
|
||||
const interactionRef = useRef<InteractionEngine | null>(null);
|
||||
const dispatcherRef = useRef<InteractionDispatcher | null>(null);
|
||||
const spatialIndexRef = useRef<SpatialIndex | null>(null);
|
||||
const layerManagerRef = useRef<LayerManager | null>(null);
|
||||
const selectionEngineRef = useRef<SelectionEngine | null>(null);
|
||||
@@ -44,6 +47,21 @@ const CanvasArea: React.FC<CanvasAreaProps> = ({
|
||||
canvas, zoomPan, renderEngine, snapEngine, selectionEngine, spatialIndex, layerManager,
|
||||
);
|
||||
|
||||
// ── Task A2: V2-Tool-Dispatcher hinter Feature-Flag ──
|
||||
// Flag VITE_TOOL_DISPATCHER=v2 (in .env / Shell): aktiviert den neuen
|
||||
// InteractionDispatcher parallel zur Legacy InteractionEngine.
|
||||
// Tools mit handlers werden dann über die Plugin-API v2 geroutet.
|
||||
if (import.meta.env.VITE_TOOL_DISPATCHER === 'v2') {
|
||||
dispatcherRef.current = new InteractionDispatcher(canvas, {
|
||||
zoomPan,
|
||||
setStatus: (msg) => {
|
||||
/* StatusBar-Bridge folgt in A3 */
|
||||
},
|
||||
setPreview: (el) => renderEngine.setPreviewElement(el as CADElement | null),
|
||||
});
|
||||
logger.info('InteractionDispatcher v2 aktiviert (VITE_TOOL_DISPATCHER=v2)');
|
||||
}
|
||||
|
||||
zoomPanRef.current = zoomPan;
|
||||
renderEngineRef.current = renderEngine;
|
||||
interactionRef.current = interaction;
|
||||
@@ -66,6 +84,8 @@ const CanvasArea: React.FC<CanvasAreaProps> = ({
|
||||
|
||||
return () => {
|
||||
interaction.detach();
|
||||
dispatcherRef.current?.destroy();
|
||||
dispatcherRef.current = null;
|
||||
zoomPanRef.current = null;
|
||||
renderEngineRef.current = null;
|
||||
interactionRef.current = null;
|
||||
|
||||
Reference in New Issue
Block a user