export namespace DEFAULT_KEYBOARD_ZOOM_MOTION_CONFIG { namespace pan { let baseSpeed: number; let maxExtraSpeed: number; let pressHalfLifeMs: number; let releaseHalfLifeMs: number; let holdGrowthHalfLifeMs: number; let stopVelocity: number; } namespace zoom { let baseSpeed_1: number; export { baseSpeed_1 as baseSpeed }; let maxExtraSpeed_1: number; export { maxExtraSpeed_1 as maxExtraSpeed }; let pressHalfLifeMs_1: number; export { pressHalfLifeMs_1 as pressHalfLifeMs }; let releaseHalfLifeMs_1: number; export { releaseHalfLifeMs_1 as releaseHalfLifeMs }; let holdGrowthHalfLifeMs_1: number; export { holdGrowthHalfLifeMs_1 as holdGrowthHalfLifeMs }; let stopVelocity_1: number; export { stopVelocity_1 as stopVelocity }; } } /** * Handles smooth WASD navigation motion with acceleration and braking. */ export default class KeyboardZoomMotion { /** * @param {typeof DEFAULT_KEYBOARD_ZOOM_MOTION_CONFIG} [config] */ constructor(config?: typeof DEFAULT_KEYBOARD_ZOOM_MOTION_CONFIG); /** * @param {string} code */ isNavigationKey(code: string): code is "KeyW" | "KeyA" | "KeyS" | "KeyD"; /** * @param {string} code * @returns {boolean} true if the key state changed */ handleKeyDown(code: string): boolean; /** * @param {string} code * @returns {boolean} true if the key state changed */ handleKeyUp(code: string): boolean; reset(): void; /** * @param {number} dtMs * @returns {MotionStep} */ step(dtMs: number): MotionStep; isActive(): boolean; #private; } export type NavigationKeyCode = "KeyW" | "KeyA" | "KeyS" | "KeyD"; export type AxisProfile = { /** * Target speed reached rapidly after key press. */ baseSpeed: number; /** * Additional speed gained during sustained hold. */ maxExtraSpeed: number; /** * Half-life for accelerating toward target speed. */ pressHalfLifeMs: number; /** * Half-life for braking velocity after release. */ releaseHalfLifeMs: number; /** * Half-life for hold-time extra acceleration. */ holdGrowthHalfLifeMs: number; /** * Velocity threshold below which motion snaps to zero. */ stopVelocity: number; }; export type AxisState = { velocity: number; holdMs: number; direction: -1 | 0 | 1; }; export type MotionStep = { panDelta: number; zoomDelta: number; active: boolean; }; //# sourceMappingURL=keyboardZoomMotion.d.ts.map