export { b as TIMING_PRESETS, T as TimingConfig, a as TimingPreset, g as getRecommendedTiming } from '../timing-hpJyGenE.js'; /** * UI constants for picker components * * Consolidates constants from: * - src/quick/constants.ts */ declare const UI: { /** Default item height in pixels */ readonly ITEM_HEIGHT: 40; /** Movement threshold for highlight tap detection (px) */ readonly HIGHLIGHT_TAP_MOVEMENT_THRESHOLD: 4; /** Delay before processing click outside (ms) */ readonly CLICK_OUTSIDE_DELAY: 100; /** Boundary settle delay for overscroll bounce (ms) */ readonly BOUNDARY_SETTLE_DELAY: 150; /** Wheel/scroll close delay (ms) */ readonly WHEEL_CLOSE_DELAY: 800; }; declare const ITEM_HEIGHT: 40; declare const HIGHLIGHT_TAP_MOVEMENT_THRESHOLD: 4; declare const CLICK_OUTSIDE_DELAY: 100; declare const BOUNDARY_SETTLE_DELAY: 150; declare const WHEEL_CLOSE_DELAY: 800; /** * Physics and interaction constants for number picker components * * Consolidates constants from: * - usePickerPhysics.ts * - useSnapPhysics.ts * - src/constants.ts (legacy) */ /** * Maximum overscroll distance in pixels when dragging beyond bounds */ declare const MAX_OVERSCROLL_PIXELS = 80; /** * Minimum drag distance in pixels before picker opens (prevents accidental opens) */ declare const OPENING_DRAG_THRESHOLD_PIXELS = 6; /** * Threshold for detecting click vs drag (as ratio of item height) * Used for mouse/pen interactions */ declare const CLICK_STEP_THRESHOLD_RATIO = 0.3; /** * Threshold for detecting tap vs drag (as ratio of item height) * Used for touch interactions - more sensitive than mouse */ declare const TOUCH_TAP_THRESHOLD_RATIO = 0.1; /** * Minimum movement in pixels to consider a gesture as "moved" */ declare const MINIMUM_MOVEMENT_PIXELS = 2; /** * DOM WheelEvent deltaMode constants */ declare const DOM_DELTA_MODE: { readonly PIXEL: 0; readonly LINE: 1; readonly PAGE: 2; }; /** * Exponent for overscroll damping calculation * Lower = more resistance, Higher = less resistance */ declare const OVERSCROLL_DAMPING_EXPONENT = 0.8; /** * Exponent for snap zone intensity calculation * Affects how aggressively items snap to center */ declare const SNAP_ZONE_POWER_BASE = 1; /** * Maximum additional power added by centerLock to snap intensity * Final exponent = SNAP_ZONE_POWER_BASE + (centerLock * SNAP_ZONE_POWER_SCALE) */ declare const SNAP_ZONE_POWER_SCALE = 1.5; /** * Proportion of snap zone where aggressive snapping kicks in * Values above this threshold get stronger pull toward center */ declare const SNAP_AGGRESSIVE_ZONE_THRESHOLD = 0.6; /** * Threshold for considering centerLock as "maximum" (prevents floating point errors) */ declare const CENTER_LOCK_MAX_THRESHOLD = 0.999; declare const SNAP_PHYSICS: { readonly DEFAULT: { readonly enabled: true; readonly snapRange: 1.4; readonly enterThreshold: 0.8; readonly exitThreshold: 0.68; readonly velocityThreshold: 500; readonly velocityScaling: true; readonly pullStrength: 1.4; readonly velocityReducer: 0.3; readonly centerLock: 1; readonly rangeScaleIntensity: 0.25; readonly rangeScaleVelocityCap: 5000; readonly rangeScaleVelocityBoost: 2; }; }; declare const DEFAULT_SNAP_PHYSICS: { readonly enabled: true; readonly snapRange: 1.4; readonly enterThreshold: 0.8; readonly exitThreshold: 0.68; readonly velocityThreshold: 500; readonly velocityScaling: true; readonly pullStrength: 1.4; readonly velocityReducer: 0.3; readonly centerLock: 1; readonly rangeScaleIntensity: 0.25; readonly rangeScaleVelocityCap: 5000; readonly rangeScaleVelocityBoost: 2; }; /** * Friction-based momentum physics for natural deceleration (iOS-like) * * Based on iOS UIScrollView physics and industry standards: * - iOS normal deceleration: 0.998 per millisecond * - Apple PastryKit time constant: 325ms * - Creates "prize wheel spinning down" feel */ declare const MOMENTUM_PHYSICS: { /** * Deceleration rate applied per millisecond (exponential decay) * iOS standard values: * - normal: 0.998 (less friction, more native feel) * - fast: 0.99 (more friction, less native feel) * - current: 0.998 (smooth with slightly more friction for precision) * * At 60fps (16.67ms/frame): velocity *= 0.998^16.67 = velocity *= 0.967 per frame */ readonly decelerationRate: 0.998; /** * Velocity threshold in px/s below which we stop friction and snap to nearest item * Lower = snaps earlier (more precise), Higher = longer momentum phase (more fluid) */ readonly snapVelocityThreshold: 50; /** * Maximum time in milliseconds to run friction animation before forcing snap * Prevents infinite animation from floating point precision issues */ readonly maxDuration: 3000; }; type MomentumPhysicsConfig = typeof MOMENTUM_PHYSICS; export { BOUNDARY_SETTLE_DELAY, CENTER_LOCK_MAX_THRESHOLD, CLICK_OUTSIDE_DELAY, CLICK_STEP_THRESHOLD_RATIO, DEFAULT_SNAP_PHYSICS, DOM_DELTA_MODE, HIGHLIGHT_TAP_MOVEMENT_THRESHOLD, ITEM_HEIGHT, MAX_OVERSCROLL_PIXELS, MINIMUM_MOVEMENT_PIXELS, MOMENTUM_PHYSICS, type MomentumPhysicsConfig, OPENING_DRAG_THRESHOLD_PIXELS, OVERSCROLL_DAMPING_EXPONENT, SNAP_AGGRESSIVE_ZONE_THRESHOLD, SNAP_PHYSICS, SNAP_ZONE_POWER_BASE, SNAP_ZONE_POWER_SCALE, TOUCH_TAP_THRESHOLD_RATIO, UI, WHEEL_CLOSE_DELAY };