This adds a store-level "operation end" event which fires at the end of atomic operations. It includes some other changes too:
The SideEffectManager now lives in & is a property of the store as StoreSideEffects. One benefit to this is that instead of overriding methods on the store to register side effects (meaning the store can only ever be used in one place) the store now calls directly into the side effect manager, which is responsible for dealing with any other callbacks
The history manager's "batch complete" event is gone, in favour of this new event. We were using the batch complete event for only one thing, calling onChildrenChange - which meant it wasn't getting called for undo/redo events, which aren't part of a batch. onChildrenChange is now called after each atomic store operation affecting children.
I've also added a rough pin example which shows (kinda messily) how you might use the operation complete handler to traverse a graph of bindings and resolve constraints between them.
Change Type
[x] sdk — Changes the tldraw SDK
[x] feature — New feature
Release Notes
Breaking changes
editor.registerBatchCompleteHandler has been replaced with editor.registerOperationCompleteHandler
This adds a store-level "operation end" event which fires at the end of atomic operations. It includes some other changes too:
SideEffectManager
now lives in & is a property of the store asStoreSideEffects
. One benefit to this is that instead of overriding methods on the store to register side effects (meaning the store can only ever be used in one place) the store now calls directly into the side effect manager, which is responsible for dealing with any other callbacksonChildrenChange
- which meant it wasn't getting called for undo/redo events, which aren't part of a batch.onChildrenChange
is now called after each atomic store operation affecting children.I've also added a rough pin example which shows (kinda messily) how you might use the operation complete handler to traverse a graph of bindings and resolve constraints between them.
Change Type
sdk
— Changes the tldraw SDKfeature
— New featureRelease Notes
Breaking changes
editor.registerBatchCompleteHandler
has been replaced witheditor.registerOperationCompleteHandler