fix: rotation

This commit is contained in:
2026-03-31 22:32:53 +08:00
parent ceb2da8b1a
commit 49fca8c18f
3 changed files with 28 additions and 116 deletions
@@ -45,16 +45,6 @@ export function useLayerInteraction(store: DeckStore): LayerInteractionHandlers
};
const isPointInLayer = (gridX: number, gridY: number, layer: LayerConfig): boolean => {
const orientation = layer.orientation || 'n';
if (orientation === 'e' || orientation === 'w') {
const visualX1 = layer.y1;
const visualX2 = layer.y2;
const visualY1 = layer.x1;
const visualY2 = layer.x2;
return gridX >= visualX1 && gridX <= visualX2 && gridY >= visualY1 && gridY <= visualY2;
}
return gridX >= layer.x1 && gridX <= layer.x2 && gridY >= layer.y1 && gridY <= layer.y2;
};
@@ -157,22 +147,14 @@ export function useLayerInteraction(store: DeckStore): LayerInteractionHandlers
const deltaGridX = deltaMmX / dims.cellWidth;
const deltaGridY = deltaMmY / dims.cellHeight;
const layer = currentLayerConfigs().find(l => l.prop === dragging.layer);
if (!layer) return;
const orientation = layer.orientation || 'n';
const startGrid = dragging.startGrid;
if (dragging.action === 'drag') {
const moveDx = Math.round(deltaGridX);
const moveDy = Math.round(deltaGridY);
store.actions.moveLayer(dragging.layer, moveDx, moveDy, startGrid);
store.actions.moveLayer(dragging.layer, Math.round(deltaGridX), Math.round(deltaGridY), startGrid);
} else if (dragging.action === 'resize-corner' && dragging.anchor) {
store.actions.resizeLayerCorner(dragging.layer, dragging.anchor, Math.round(deltaGridX), Math.round(deltaGridY), startGrid);
} else if (dragging.action === 'resize-edge' && dragging.edge) {
const delta = orientation === 'e' || orientation === 'w'
? (dragging.edge === 'n' || dragging.edge === 's' ? Math.round(deltaGridX) : Math.round(deltaGridY))
: (dragging.edge === 'n' || dragging.edge === 's' ? Math.round(deltaGridY) : Math.round(deltaGridX));
const delta = dragging.edge === 'n' || dragging.edge === 's' ? Math.round(deltaGridY) : Math.round(deltaGridX);
store.actions.resizeLayerEdge(dragging.layer, dragging.edge, delta, startGrid);
}
};