saltfish
Version:
An interactive video-guided tour system for web applications
90 lines • 2.76 kB
TypeScript
/**
* Represents a calculated position with coordinates and transforms
*/
export interface CalculatedPosition {
x: number;
y: number;
transformX: string;
transformY: string;
}
/**
* Input parameters for position calculation
*/
export interface PositionParams {
position: string;
viewportWidth?: number;
viewportHeight?: number;
playerWidth?: number;
isMinimized?: boolean;
}
/**
* Utility class for calculating player positions based on position strings
* Centralizes all position calculation logic to eliminate duplication
*/
export declare class PositionCalculator {
/**
* Calculates the initial position based on a position string
* @param params Position calculation parameters
* @returns Calculated position with coordinates and transforms
*/
static calculatePosition(params: PositionParams): CalculatedPosition;
/**
* Applies viewport constraints to keep the player within bounds
* @param params Constraint parameters
* @returns Constrained coordinates
*/
static applyConstraints(params: {
x: number;
y: number;
position: string;
viewportWidth: number;
viewportHeight: number;
playerWidth: number;
}): {
x: number;
y: number;
};
/**
* Calculates position for drag operations with constraints
* @param params Drag calculation parameters
* @returns Constrained drag position
*/
static calculateDragPosition(params: {
x: number;
y: number;
position?: string;
viewportWidth?: number;
viewportHeight?: number;
playerWidth?: number;
}): {
x: number;
y: number;
};
/**
* Determines transform values based on position string
* @param position Position string (e.g., 'bottom-right', 'center')
* @returns Transform values for CSS
*/
static getTransforms(position: string): {
transformX: string;
transformY: string;
};
/**
* Checks if a position change should force repositioning (e.g., bottom-left should force left alignment)
* @param currentPosition Current position string
* @param currentY Current Y coordinate
* @param isDragging Whether the player is currently being dragged
* @returns Whether to force repositioning
*/
static shouldForceReposition(currentPosition: string, currentY: number, isDragging: boolean): boolean;
/**
* Gets player dimensions for constraint calculations
* @returns Player dimension information
*/
static getPlayerDimensions(): {
width: number;
minX: number;
maxX: number;
};
}
//# sourceMappingURL=PositionCalculator.d.ts.map