[
  {
    "id": "codrops-1e0aea724c1d-article-0",
    "source": "design-engineering/state-management/patterns/derived-state.md",
    "anchor": "state-model-and-ownership",
    "sourceSha256": "22192b2fbab970a71ec0237221dc2d35c578e59723bc0032c2347f8ef595cd6c",
    "title": "02 / Keyframes & independent tracks · evaluateBounce",
    "principle": "Height, deformation and the graph are projections of one playhead plus explicit track parameters.",
    "application": "A deterministic bounce evaluator maps the playhead to separate height, squash and color tracks. The impact keyframe is editable; the graph and sphere use the same evaluated values. This binding describes the authored study and does not verify the original project.",
    "code": [
      {
        "file": "vendor/codrops-article-studies/records/codrops-1e0aea724c1d/script.js",
        "symbol": "evaluateBounce",
        "explanation": "The named local function implements this mechanism in the downloadable standalone page; its source hash is listed in codeFiles."
      }
    ],
    "checks": [
      {
        "id": "codrops-1e0aea724c1d-evaluateBounce",
        "action": "Visit playhead 0, 52, 100, 52, 0 with impact set to 52.",
        "expected": "The same playhead produces the same pose on both visits; at impact the base of the sphere meets the ground."
      }
    ],
    "runtime_verified": false
  },
  {
    "id": "codrops-1e0aea724c1d-article-1",
    "source": "motion/rendering-and-performance.md",
    "anchor": "match-the-mechanism-to-the-responsibility",
    "sourceSha256": "1523fdeaa290fa064c4db17d36040de3f35ad39bb18a37517ceb5995f97d1dfd",
    "title": "02 / Keyframes & independent tracks · renderBounce",
    "principle": "This bounded timeline uses direct state evaluation and a static endpoint instead of treating animation completion as a semantic event.",
    "application": "A deterministic bounce evaluator maps the playhead to separate height, squash and color tracks. The impact keyframe is editable; the graph and sphere use the same evaluated values. This binding describes the authored study and does not verify the original project.",
    "code": [
      {
        "file": "vendor/codrops-article-studies/records/codrops-1e0aea724c1d/script.js",
        "symbol": "renderBounce",
        "explanation": "The named local function implements this mechanism in the downloadable standalone page; its source hash is listed in codeFiles."
      }
    ],
    "checks": [
      {
        "id": "codrops-1e0aea724c1d-renderBounce",
        "action": "Pause, change impact to 35, and select At impact.",
        "expected": "The playhead moves to 35 and both graph and sphere display the updated impact pose immediately."
      }
    ],
    "runtime_verified": false
  },
  {
    "id": "codrops-1e0aea724c1d-article-2",
    "source": "motion/accessible-motion.md",
    "anchor": "preference-changes-during-work",
    "sourceSha256": "db0ad692d5bb3103a3cbe13ec08dbe5cf12552aed7ecf2c93b1d7cc0b8a34b8b",
    "title": "02 / Keyframes & independent tracks · applyMotionPreference",
    "principle": "One effective preference owns CSS and script playback. The initial view is stationary, and manual controls retain the study values.",
    "application": "A deterministic bounce evaluator maps the playhead to separate height, squash and color tracks. The impact keyframe is editable; the graph and sphere use the same evaluated values. This binding describes the authored study and does not verify the original project.",
    "code": [
      {
        "file": "vendor/codrops-article-studies/records/codrops-1e0aea724c1d/script.js",
        "symbol": "applyMotionPreference",
        "explanation": "The named local function implements this mechanism in the downloadable standalone page; its source hash is listed in codeFiles."
      }
    ],
    "checks": [
      {
        "id": "codrops-1e0aea724c1d-applyMotionPreference",
        "action": "Enable Static view during playback, then adjust the visible native controls.",
        "expected": "Playback stops, its button is disabled while the preference applies, and the current values remain inspectable without continuous motion."
      }
    ],
    "runtime_verified": false
  }
]
