tldraw/packages
David Sheldrick 48512995b4
Prevent wobble during viewport following (#3695)
This revives the old 'derived camera' idea to prevent cursor wobbling
during viewport following.

Before this PR we updated the camera on a tick during viewport
following, but the shapes and cursors were not moving on the same tick
(we tried that during the perf work and it was all kinds of
problematic). Frankly I've forgotten how we ever managed to eliminate
wobble here in the first place?

Anyway after this PR we derive the camera based on whether or not we are
following a user. When you follow a user it makes it so that your
viewport contains their viewport. If your viewport is not already very
close to their viewport it will animate the initial position, after
which it will 'lock' in place and the derived value will be used from
then on.

This exposed a minor issue in our sync engine: the fact that we send
presence updates in separate websocket messages from document updates.
We get into situations like this

1. user A follows user B
2. user B deletes the current page they are on
3. user B's page deletion diff gets sent
4. user B's presence update gets sent with a new currentPageId
5. user A receives the page deletion
6. user A still thinks that user B is on the old page and doesn't know
how to update the follow state.

So to fix this I made it so that we can (and do) send presence updates
in the same websocket messages as document updates so the server can
handle them atomically.

### Change Type

<!--  Please select a 'Scope' label ️ -->

- [x] `sdk` — Changes the tldraw SDK
- [x] `bugfix` — Bug fix



### Test Plan

1. Add a step-by-step description of how to test your PR here.
8.

- [ ] Unit Tests
- [ ] End to end tests

### Release Notes

- Fixes a bug that caused the cursor & shapes to wiggle around when
following someone else's viewport
2024-05-19 01:22:01 +00:00
..
assets Update READMEs, add form link (#3741) 2024-05-12 20:48:07 +00:00
dotcom-shared Move storing of snapshots to R2 (#3693) 2024-05-08 09:06:02 +00:00
editor Prevent wobble during viewport following (#3695) 2024-05-19 01:22:01 +00:00
namespaced-tldraw Don't check api.json files into git (#3565) 2024-04-24 15:58:26 +00:00
state [signia] perf thing again (#3645) 2024-04-30 13:44:52 +00:00
store focus: rework and untangle existing focus management logic in the sdk (#3718) 2024-05-17 08:53:57 +00:00
tldraw export DefaultNavigationPanel (#3772) 2024-05-17 14:41:39 +00:00
tlschema Update READMEs, add form link (#3741) 2024-05-12 20:48:07 +00:00
tlsync Prevent wobble during viewport following (#3695) 2024-05-19 01:22:01 +00:00
utils assets: rework mime-type detection to be consistent/centralized; add support for webp/webm, apng, avif (#3730) 2024-05-13 08:29:43 +00:00
validate Update READMEs, add form link (#3741) 2024-05-12 20:48:07 +00:00