)]}'
{
  "commit": "2e513d2dd0a785299f1aae1cf65fc85cae7dc6b1",
  "tree": "a48b97a22888d0d873e2104471df7f5d63f8a1a8",
  "parents": [
    "7b2347c9df351c17c0f8e4e29f9bb26f0d7112c5"
  ],
  "author": {
    "name": "philter",
    "email": "hello@rive.app",
    "time": "Mon Jul 29 17:11:54 2024 +0000"
  },
  "committer": {
    "name": "philter",
    "email": "hello@rive.app",
    "time": "Mon Jul 29 17:11:54 2024 +0000"
  },
  "message": "Improve layout animation\n\nThis adds an improvement to layout animation. When updating layout bounds (for example when a parent layout resizes), we were initially setting elapsedSeconds to 0. This restarts the animation, however in cases when the layout bounds is constantly updating (see attached videos), the animation would never progress until the layout bounds stopped updating. An alternative was to not reset elapsedSeconds which was also tested, but in that case the result was odd visual issues like snapping to the new layout bounds (in cases where elapsedSeconds was close to the animation duration).\n\nAn interim solution (until we find a better one) is to only reset elapsedSeconds to 0 if it is greater than some arbitrary time, thus the animation will continue to progress relatively smoothly.\n\nHere are the scenarios. This PR implements the 3rd option.\n\n**Always set elapsedSeconds to 0 when updating layout bounds**\n\nhttps://github.com/user-attachments/assets/d430edba-37f4-408d-843f-9f67abfb101d\n\n**Never set elapsedSeconds to 0 when updating layout bounds**\n\nhttps://github.com/user-attachments/assets/a8abae5b-647a-437e-9c0f-09d681d6716e\n\n**Set elapsedSeconds to 0 after some time has elapsed**\n\nhttps://github.com/user-attachments/assets/3d63cb14-2977-4ea5-b38d-3fcca1f1a666\n\nDiffs\u003d\n4732c37b5 Improve layout animation (#7712)\n\nCo-authored-by: Philip Chung \u003cphilterdesign@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fdd6112f4c98d5b37b80338577e201f7f13e2089",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "4329462296c673da8940a8045f89e22434d4a828",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "a032d8a302354e4b2f1f86e27bdacc0caf70778c",
      "old_mode": 33188,
      "old_path": "src/layout_component.cpp",
      "new_id": "c361048bdb5d7b8ec646dac9b51d93438579519b",
      "new_mode": 33188,
      "new_path": "src/layout_component.cpp"
    }
  ]
}
