feat: Refactor document drag initiation and state management with new session handling and geometry utilities. (slightly broken)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
export interface CardBounds {
|
||||
minX: number;
|
||||
maxX: number;
|
||||
minY: number;
|
||||
maxY: number;
|
||||
}
|
||||
|
||||
export interface ComputeBoundsOptions {
|
||||
width: number;
|
||||
height: number;
|
||||
canvasWidth: number;
|
||||
canvasHeight: number;
|
||||
padding: number;
|
||||
shelfWidth?: number;
|
||||
}
|
||||
|
||||
export const computeCardBounds = ({
|
||||
width,
|
||||
height,
|
||||
canvasWidth,
|
||||
canvasHeight,
|
||||
padding,
|
||||
shelfWidth = 0,
|
||||
}: ComputeBoundsOptions): CardBounds => {
|
||||
const halfW = width / 2;
|
||||
const halfH = height / 2;
|
||||
const shelfOffset = Math.max(shelfWidth, 0);
|
||||
|
||||
return {
|
||||
minX: padding + halfW,
|
||||
maxX: Math.max(padding + halfW, canvasWidth - shelfOffset - padding - halfW),
|
||||
minY: padding + halfH,
|
||||
maxY: Math.max(padding + halfH, canvasHeight - padding - halfH),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user