11 KiB
BlockSuite API Documentation / @blocksuite/store / Store
Class: Store
Core store class that manages blocks and their lifecycle in BlockSuite
Remarks
The Store class is responsible for managing the lifecycle of blocks, handling transactions, and maintaining the block tree structure. A store is a piece of data created from one or a part of a Y.Doc.
Block CRUD
updateBlock()
updateBlock: <
T>(model,props) =>void(model,callback) =>void
Updates a block's properties or executes a callback in a transaction
Type Parameters
T
T extends Partial<BlockProps>
Parameters
model
string | BlockModel<object>
props
T
Returns
void
Parameters
model
string | BlockModel<object>
callback
() => void
Returns
void
Param
The block model or block ID to update
Param
Either a callback function to execute or properties to update
Throws
When the block is not found or schema validation fails
blockSize
Get Signature
get blockSize():
number
Get the number of blocks in the store
Returns
number
addBlock()
addBlock(
flavour,blockProps,parent?,parentIndex?):string
Creates and adds a new block to the store
Parameters
flavour
string
The block's flavour (type)
blockProps
Partial<BlockSysProps & Record<string, unknown> & Omit<BlockProps, "flavour">> = {}
Optional properties for the new block
parent?
Optional parent block or parent block ID
null | string | BlockModel<object>
parentIndex?
number
Optional index position in parent's children
Returns
string
The ID of the newly created block
Throws
When store is in readonly mode
addBlocks()
addBlocks(
blocks,parent?,parentIndex?):string[]
Add multiple blocks to the store
Parameters
blocks
object[]
Array of blocks to add
parent?
Optional parent block or parent block ID
null | string | BlockModel<object>
parentIndex?
number
Optional index position in parent's children
Returns
string[]
Array of IDs of the newly created blocks
addSiblingBlocks()
addSiblingBlocks(
targetModel,props,place):string[]
Add sibling blocks to the store
Parameters
targetModel
BlockModel
The target block model
props
Partial<BlockProps>[]
Array of block properties
place
Optional position to place the new blocks ('after' or 'before')
"after" | "before"
Returns
string[]
Array of IDs of the newly created blocks
deleteBlock()
deleteBlock(
model,options):void
Delete a block from the store
Parameters
model
The block model or block ID to delete
string | BlockModel<object>
options
Optional options for the deletion
bringChildrenTo?
BlockModel<object>
Optional block model to bring children to
deleteChildren?
boolean
Optional flag to delete children
Returns
void
getAllModels()
getAllModels():
BlockModel<object>[]
Get all models in the store
Returns
BlockModel<object>[]
Array of all models
getBlock()
getBlock(
id):undefined|Block
Gets a block by its ID
Parameters
id
string
The block's ID
Returns
undefined | Block
The block instance if found, undefined otherwise
getBlock$()
getBlock$(
id):undefined|Block
Gets a block by its ID
Parameters
id
string
The block's ID
Returns
undefined | Block
The block instance in signal if found, undefined otherwise
getBlocksByFlavour()
getBlocksByFlavour(
blockFlavour):Block[]
Gets all blocks of specified flavour(s)
Parameters
blockFlavour
Single flavour or array of flavours to filter by
string | string[]
Returns
Block[]
Array of matching blocks
getModelById()
getModelById<
Model>(id):null|Model
Get a model by its ID
Type Parameters
Model
Model extends BlockModel<object> = BlockModel<object>
Parameters
id
string
The model's ID
Returns
null | Model
The model instance if found, null otherwise
getModelsByFlavour()
getModelsByFlavour(
blockFlavour):BlockModel<object>[]
Get all models of specified flavour(s)
Parameters
blockFlavour
Single flavour or array of flavours to filter by
string | string[]
Returns
BlockModel<object>[]
Array of matching models
getNext()
getNext(
block):null|BlockModel<object>
Get the next sibling block of a given block
Parameters
block
Block model or block ID to find next sibling for
string | BlockModel<object>
Returns
null | BlockModel<object>
The next sibling block model if found, null otherwise
getNexts()
getNexts(
block):BlockModel<object>[]
Get all next sibling blocks of a given block
Parameters
block
Block model or block ID to find next siblings for
string | BlockModel<object>
Returns
BlockModel<object>[]
Array of next sibling blocks if found, empty array otherwise
getParent()
getParent(
target):null|BlockModel<object>
Gets the parent block of a given block
Parameters
target
Block model or block ID to find parent for
string | BlockModel<object>
Returns
null | BlockModel<object>
The parent block model if found, null otherwise
getPrev()
getPrev(
block):null|BlockModel<object>
Get the previous sibling block of a given block
Parameters
block
Block model or block ID to find previous sibling for
string | BlockModel<object>
Returns
null | BlockModel<object>
The previous sibling block model if found, null otherwise
getPrevs()
getPrevs(
block):BlockModel<object>[]
Get all previous sibling blocks of a given block
Parameters
block
Block model or block ID to find previous siblings for
string | BlockModel<object>
Returns
BlockModel<object>[]
Array of previous sibling blocks if found, empty array otherwise
hasBlock()
hasBlock(
id):boolean
Check if a block exists by its ID
Parameters
id
string
The block's ID
Returns
boolean
True if the block exists, false otherwise
moveBlocks()
moveBlocks(
blocksToMove,newParent,targetSibling,shouldInsertBeforeSibling):void
Move blocks to a new parent block
Parameters
blocksToMove
BlockModel<object>[]
Array of block models to move
newParent
BlockModel
The new parent block model
targetSibling
Optional target sibling block model
null | BlockModel<object>
shouldInsertBeforeSibling
boolean = true
Optional flag to insert before sibling
Returns
void
Store Lifecycle
disposableGroup
disposableGroup:
DisposableGroup
Group of disposable resources managed by the store
slots
readonlyslots:object&object
Slots for receiving events from the store.
Type declaration
historyUpdated
historyUpdated:
Subject<void>
This fires when the doc history is updated.
yBlockUpdated
yBlockUpdated:
Subject<{id:string;isLocal:boolean;type:"add"; } | {id:string;isLocal:boolean;type:"delete"; }>
This fires when the doc yBlock is updated.
Type declaration
blockUpdated
blockUpdated:
Subject<BlockUpdatedPayload>
This fires when a block is updated via API call or has just been updated from existing ydoc.
ready
ready:
Subject<void>
This is always triggered after doc.load is called.
rootAdded
rootAdded:
Subject<string>
This fires when the root block is added via API call or has just been initialized from existing ydoc. useful for internal block UI components to start subscribing following up events. Note that at this moment, the whole block tree may not be fully initialized yet.
rootDeleted
rootDeleted:
Subject<string>
This fires when the root block is deleted via API call or has just been removed from existing ydoc.
dispose()
dispose():
void
Disposes the store and releases all resources
Returns
void
load()
load(
initFn?):Store
Initializes and loads the store
Parameters
initFn?
() => void
Optional initialization function
Returns
Store
The store instance
Transformer
getTransformer()
getTransformer(
middlewares):Transformer
Creates a new transformer instance for the store
Parameters
middlewares
TransformerMiddleware[] = []
Optional array of transformer middlewares
Returns
Transformer
A new Transformer instance
Other
awarenessStore
Get Signature
get awarenessStore():
AwarenessStore
Get the AwarenessStore instance for current store
Returns
AwarenessStore
blobSync
Get Signature
get blobSync():
BlobEngine
Get the BlobEngine instance for current store.
Returns
BlobEngine
doc
Get Signature
get doc():
Doc
Get the Doc instance for current store.
Returns
Doc
get
Get Signature
get get(): <
T>(identifier,options?) =>T
Get an extension instance from the store
Example
const extension = store.get(SomeExtension);
Returns
Function
The extension instance
Type Parameters
T
T
Parameters
identifier
GeneralServiceIdentifier<T>
options?
ResolveOptions
Returns
T
getOptional
Get Signature
get getOptional(): <
T>(identifier,options?) =>null|T
Optional get an extension instance from the store.
The major difference between get and getOptional is that getOptional will not throw an error if the extension is not found.
Example
const extension = store.getOptional(SomeExtension);
Returns
Function
The extension instance
Type Parameters
T
T
Parameters
identifier
GeneralServiceIdentifier<T>
options?
ResolveOptions
Returns
null | T
provider
Get Signature
get provider():
ServiceProvider
Get the di provider for current store.
Returns
ServiceProvider