@mocanvas/store · class

StoreSideEffects

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.


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(): boolean
register(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>>): () => void
registerAfterCreateHandler<T extends R["typeName"]>(typeName: T, handler: StoreAfterCreateHandler<RecordFromTypeName<R, T>>): () => void
registerAfterDeleteHandler<T extends R["typeName"]>(typeName: T, handler: StoreAfterDeleteHandler<RecordFromTypeName<R, T>>): () => void
registerBeforeChangeHandler<T extends R["typeName"]>(typeName: T, handler: StoreBeforeChangeHandler<RecordFromTypeName<R, T>>): () => void
registerBeforeCreateHandler<T extends R["typeName"]>(typeName: T, handler: StoreBeforeCreateHandler<RecordFromTypeName<R, T>>): () => void
registerBeforeDeleteHandler<T extends R["typeName"]>(typeName: T, handler: StoreBeforeDeleteHandler<RecordFromTypeName<R, T>>): () => void
registerOperationCompleteHandler(handler: StoreOperationCompleteHandler): () => void
setIsEnabled(enabled: boolean): void

mocanvas 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.