feat(input): support artboard selection

This commit is contained in:
syntaxbullet
2026-07-03 16:04:43 +02:00
parent 46aa1b8595
commit 28fcbdceda
4 changed files with 122 additions and 5 deletions

View File

@@ -4,6 +4,7 @@ import { isPanInteractionMode } from "@editor/tools";
import type { GlobalKeybindConsumer, GlobalPointerConsumer, GlobalWheelConsumer } from "@input/index";
import {
createViewportPanInputController,
handleArtboardSelection,
handleViewportWheel,
keybindEventFromKeyboardEvent,
pointerInputEventFromPointerEvent,
@@ -50,12 +51,23 @@ export function useCanvasInput(
};
const handlePointerDown = (event: PointerEvent) => {
const consumed = panHandler.pointerDown(pointerInputEventFromPointerEvent(event));
if (!consumed) return;
const inputEvent = pointerInputEventFromPointerEvent(event);
const consumed = panHandler.pointerDown(inputEvent);
if (consumed) {
canvas.setPointerCapture(event.pointerId);
setIsPanning(true);
event.preventDefault();
return;
}
canvas.setPointerCapture(event.pointerId);
setIsPanning(true);
event.preventDefault();
const state = store.getState();
const selected = state.editor.tools.activeTool === "select" && handleArtboardSelection({
event: inputEvent,
document: state.document,
viewport: state.editor.viewport,
dispatch: store.dispatch,
});
if (selected) event.preventDefault();
};
const handlePointerMove = (event: PointerEvent) => {