{"version":3,"file":"process-frame.mjs","sources":["../../../src/frameloop/process-frame.ts"],"sourcesContent":["import { MotionGlobalConfig } from \"motion-utils\"\nimport { frameSteps } from \"./frame\"\nimport { frameData } from \"./frame-data\"\nimport { time } from \"./sync-time\"\n\n/**\n * Process a frame now, for driving Motion from a loop other than\n * window.requestAnimationFrame, like an XRSession's during an immersive\n * WebXR session. Wherever window.requestAnimationFrame does fire, Motion\n * keeps processing frames from it too.\n *\n * `timestamp` defaults to now. For a timeline you control, set\n * `MotionGlobalConfig.useManualTiming = true` and pass each frame's time in\n * milliseconds.\n *\n * Animations Motion hands to the browser (WAAPI), like `opacity` or\n * `transform` on an HTML or SVG element, follow the browser's clock. With\n * `useManualTiming` on, Motion runs those in JS instead, except for\n * `motion/mini`, view transitions and optimized appear animations, and\n * colours only the browser can mix, like `oklch()`, which jump to their end.\n *\n * Ignored when called inside a frame.\n */\nexport const processFrame = (timestamp = time.now()) => {\n    if (frameData.isProcessing) return\n\n    const delta = timestamp - frameData.timestamp\n    // Clamp like the requestAnimationFrame loop, unless the timeline is ours\n    frameData.delta = MotionGlobalConfig.useManualTiming\n        ? delta\n        : Math.max(Math.min(delta, 40), 1)\n    time.set((frameData.timestamp = timestamp))\n    frameData.isProcessing = true\n    // frameSteps' keys are in stepsOrder\n    for (const step in frameSteps) {\n        frameSteps[step as keyof typeof frameSteps].process(frameData)\n    }\n    frameData.isProcessing = false\n}\n"],"names":[],"mappings":";;;;;AAKA;;;;;;;;;;;;;;;;;AAiBG;AACI,MAAM,YAAY,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAI;IACnD,IAAI,SAAS,CAAC,YAAY;QAAE;AAE5B,IAAA,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC,SAAS;;AAE7C,IAAA,SAAS,CAAC,KAAK,GAAG,kBAAkB,CAAC;AACjC,UAAE;AACF,UAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,EAAE;AAC3C,IAAA,SAAS,CAAC,YAAY,GAAG,IAAI;;AAE7B,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC3B,UAAU,CAAC,IAA+B,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAClE;AACA,IAAA,SAAS,CAAC,YAAY,GAAG,KAAK;AAClC;;;;"}