@mocanvas/store · class
declare class StoreSideEffects<R extends UnknownRecord>Hooks that run around record writes. before* handlers may replace the
record being written (or veto a delete); after* handlers observe.
operationComplete handlers run when the outermost operation ends, and
again for anything they themselves write — the pattern they are written
against is "set a guard on my own write, clear it in the completion that
closes that write", and swallowing the second completion leaves the guard
set so it eats the *next* real gesture. Bounded by
MAX_OPERATION_COMPLETE_ROUNDS, since a handler that writes every
time it runs would otherwise never settle.
Originally they ran once when the outermost operation ended, before history listeners are notified.
On this page
Methods · 17
handleAfterChange(prev: R, next: R, source: ChangeSource): void@internal
handleAfterCreate(record: R, source: ChangeSource): void@internal
handleAfterDelete(record: R, source: ChangeSource): void@internal
handleBeforeChange(prev: R, next: R, source: ChangeSource): R@internal
handleBeforeCreate(record: R, source: ChangeSource): R@internal
handleBeforeDelete(record: R, source: ChangeSource): boolean@internal Returns false when a handler vetoed the delete.
handleOperationComplete(source: ChangeSource): void@internal
isEnabled(): booleanregister(handlers: {Register several handlers for several types at once. Returns a disposer for all of them.
registerAfterChangeHandler<T extends R["typeName"]>(typeName: T, handler: StoreAfterChangeHandler<RecordFromTypeName<R, T>>): () => voidregisterAfterCreateHandler<T extends R["typeName"]>(typeName: T, handler: StoreAfterCreateHandler<RecordFromTypeName<R, T>>): () => voidregisterAfterDeleteHandler<T extends R["typeName"]>(typeName: T, handler: StoreAfterDeleteHandler<RecordFromTypeName<R, T>>): () => voidregisterBeforeChangeHandler<T extends R["typeName"]>(typeName: T, handler: StoreBeforeChangeHandler<RecordFromTypeName<R, T>>): () => voidregisterBeforeCreateHandler<T extends R["typeName"]>(typeName: T, handler: StoreBeforeCreateHandler<RecordFromTypeName<R, T>>): () => voidregisterBeforeDeleteHandler<T extends R["typeName"]>(typeName: T, handler: StoreBeforeDeleteHandler<RecordFromTypeName<R, T>>): () => voidregisterOperationCompleteHandler(handler: StoreOperationCompleteHandler): () => voidsetIsEnabled(enabled: boolean): voidmocanvas is built by Symbio. Free for non-commercial, non-profit and development use; commercial use needs an agreement. Not affiliated with or endorsed by tldraw.