/** * Motion policy. * * `prefers-reduced-motion` is honoured globally and by default, degrading to * instant state changes rather than to broken layouts. The sibling Apex products * already behave this way, so ApexMaps inherits the rule rather than inventing a * different one. * * @module utils/motion */ /** * True when the user has asked for reduced motion, or when there is no window to * ask (SSR), where animation is meaningless anyway. */ export declare function prefersReducedMotion(): boolean; /** * A `chart.animations.speed` value in milliseconds. * * The keywords exist because "350 or 700?" is a design decision most callers * should not have to make: `'normal'` is the felt-as-instant range for a data * update, `'slow'` is presentation pace, `'fast'` acknowledges the change * without asking the reader to watch it. */ export declare function resolveSpeed(speed: 'slow' | 'normal' | 'fast' | 'instant' | number | undefined): number; /** * Routes past which a flow layer is painted but not animated. * * A flow cannot ride the mark budget below, because it is not a transition that * ends: it is a repaint of every dashed geodesic on the map, every frame, for as * long as the page is open. So it gets a ceiling of its own, an order of * magnitude lower, and above it the beads stay where they are. A dotted route * still reads as a route, which is a better failure than a map that drops frames * forever. */ export declare const FLOW_BUDGET = 600; export interface MotionBudget { animate: boolean; properties: 'all' | 'cheap'; reason?: string; } /** * A motion budget: above a mark threshold, animate only cheap properties * (opacity, fill) and skip per-vertex work. Degrading *which* properties animate * is preferable to dropping frames, because dropped frames read as a bug while a * simpler transition just reads as restraint. */ export declare function motionBudget(markCount: number, { fullBudget, reducedBudget, }?: { fullBudget?: number; reducedBudget?: number; }): MotionBudget; //# sourceMappingURL=motion.d.ts.map