mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-02 02:00:49 +08:00
docs(editor): scaffolding docs generator (#10925)
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# BlockSuite Docs
|
||||
|
||||
API docs for BlockSuite.
|
||||
|
||||
Generated by [typedoc](https://typedoc.org/).
|
||||
|
||||
## Build Docs
|
||||
|
||||
```bash
|
||||
yarn typecheck
|
||||
yarn af bs-docs build
|
||||
```
|
||||
@@ -0,0 +1,12 @@
|
||||
**@blocksuite/block-std**
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../README.md) / @blocksuite/block-std
|
||||
|
||||
# @blocksuite/block-std
|
||||
|
||||
## Modules
|
||||
|
||||
- [gfx](gfx/README.md)
|
||||
- [index](index/README.md)
|
||||
@@ -0,0 +1,46 @@
|
||||
[**@blocksuite/block-std**](../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../README.md) / [@blocksuite/block-std](../README.md) / gfx
|
||||
|
||||
# gfx
|
||||
|
||||
## Classes
|
||||
|
||||
- [GfxBlockElementModel](classes/GfxBlockElementModel.md)
|
||||
- [GfxSelectionManager](classes/GfxSelectionManager.md)
|
||||
|
||||
## Interfaces
|
||||
|
||||
- [GfxCompatibleInterface](interfaces/GfxCompatibleInterface.md)
|
||||
- [GfxElementGeometry](interfaces/GfxElementGeometry.md)
|
||||
- [GfxGroupCompatibleInterface](interfaces/GfxGroupCompatibleInterface.md)
|
||||
- [PointTestOptions](interfaces/PointTestOptions.md)
|
||||
|
||||
## Type Aliases
|
||||
|
||||
- [GfxCommonBlockProps](type-aliases/GfxCommonBlockProps.md)
|
||||
- [GfxCompatibleProps](type-aliases/GfxCompatibleProps.md)
|
||||
|
||||
## Variables
|
||||
|
||||
- [gfxGroupCompatibleSymbol](variables/gfxGroupCompatibleSymbol.md)
|
||||
- [SURFACE\_TEXT\_UNIQ\_IDENTIFIER](variables/SURFACE_TEXT_UNIQ_IDENTIFIER.md)
|
||||
- [SURFACE\_YMAP\_UNIQ\_IDENTIFIER](variables/SURFACE_YMAP_UNIQ_IDENTIFIER.md)
|
||||
|
||||
## Functions
|
||||
|
||||
- [canSafeAddToContainer](functions/canSafeAddToContainer.md)
|
||||
- [compareLayer](functions/compareLayer.md)
|
||||
- [convert](functions/convert.md)
|
||||
- [derive](functions/derive.md)
|
||||
- [generateKeyBetween](functions/generateKeyBetween.md)
|
||||
- [generateKeyBetweenV2](functions/generateKeyBetweenV2.md)
|
||||
- [generateNKeysBetween](functions/generateNKeysBetween.md)
|
||||
- [getTopElements](functions/getTopElements.md)
|
||||
- [GfxCompatible](functions/GfxCompatible.md)
|
||||
- [isGfxGroupCompatibleModel](functions/isGfxGroupCompatibleModel.md)
|
||||
- [local](functions/local.md)
|
||||
- [observe](functions/observe.md)
|
||||
- [watch](functions/watch.md)
|
||||
@@ -0,0 +1,147 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxBlockElementModel
|
||||
|
||||
# Class: GfxBlockElementModel\<Props\>
|
||||
|
||||
The graphic block model that can be rendered in the graphics mode.
|
||||
All the graphic block model should extend this class.
|
||||
You can use `GfxCompatibleBlockModel` to convert a BlockModel to a subclass that extends it.
|
||||
|
||||
## Extends
|
||||
|
||||
- `BlockModel`\<`Props`\>
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### Props
|
||||
|
||||
`Props` *extends* [`GfxCompatibleProps`](../type-aliases/GfxCompatibleProps.md) = [`GfxCompatibleProps`](../type-aliases/GfxCompatibleProps.md)
|
||||
|
||||
## Implements
|
||||
|
||||
- [`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md)
|
||||
|
||||
## Properties
|
||||
|
||||
### responseExtension
|
||||
|
||||
> **responseExtension**: \[`number`, `number`\]
|
||||
|
||||
Defines the extension of the response area beyond the element's bounding box.
|
||||
This tuple specifies the horizontal and vertical margins to be added to the element's [x, y, width, height].
|
||||
|
||||
The first value represents the horizontal extension (added to both left and right sides),
|
||||
and the second value represents the vertical extension (added to both top and bottom sides).
|
||||
|
||||
The response area is computed as:
|
||||
`[x - horizontal, y - vertical, width + 2 * horizontal, height + 2 * vertical]`.
|
||||
|
||||
Example:
|
||||
- Bounding box: `[0, 0, 100, 100]`, `responseExtension: [10, 20]`
|
||||
Resulting response area: `[-10, -20, 120, 140]`.
|
||||
- `responseExtension: [0, 0]` keeps the response area equal to the bounding box.
|
||||
|
||||
#### Implementation of
|
||||
|
||||
[`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md).[`responseExtension`](../interfaces/GfxCompatibleInterface.md#responseextension)
|
||||
|
||||
## Accessors
|
||||
|
||||
### elementBound
|
||||
|
||||
#### Get Signature
|
||||
|
||||
> **get** **elementBound**(): `Bound`
|
||||
|
||||
The bound of the element without considering the response extension.
|
||||
|
||||
##### Returns
|
||||
|
||||
`Bound`
|
||||
|
||||
The bound of the element without considering the response extension.
|
||||
|
||||
#### Implementation of
|
||||
|
||||
[`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md).[`elementBound`](../interfaces/GfxCompatibleInterface.md#elementbound)
|
||||
|
||||
***
|
||||
|
||||
### lockedBySelf
|
||||
|
||||
#### Get Signature
|
||||
|
||||
> **get** **lockedBySelf**(): `undefined` \| `boolean`
|
||||
|
||||
Indicates whether the current block is explicitly locked by self.
|
||||
For checking the lock status of the element, use `isLocked` instead.
|
||||
For (un)locking the element, use `(un)lock` instead.
|
||||
|
||||
##### Returns
|
||||
|
||||
`undefined` \| `boolean`
|
||||
|
||||
#### Set Signature
|
||||
|
||||
> **set** **lockedBySelf**(`lockedBySelf`): `void`
|
||||
|
||||
Indicates whether the current block is explicitly locked by self.
|
||||
For checking the lock status of the element, use `isLocked` instead.
|
||||
For (un)locking the element, use `(un)lock` instead.
|
||||
|
||||
##### Parameters
|
||||
|
||||
###### lockedBySelf
|
||||
|
||||
`undefined` | `boolean`
|
||||
|
||||
##### Returns
|
||||
|
||||
`void`
|
||||
|
||||
Indicates whether the current block is explicitly locked by self.
|
||||
For checking the lock status of the element, use `isLocked` instead.
|
||||
For (un)locking the element, use `(un)lock` instead.
|
||||
|
||||
#### Implementation of
|
||||
|
||||
[`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md).[`lockedBySelf`](../interfaces/GfxCompatibleInterface.md#lockedbyself)
|
||||
|
||||
***
|
||||
|
||||
### responseBound
|
||||
|
||||
#### Get Signature
|
||||
|
||||
> **get** **responseBound**(): `Bound`
|
||||
|
||||
The bound of the element considering the response extension.
|
||||
|
||||
##### Returns
|
||||
|
||||
`Bound`
|
||||
|
||||
The bound of the element considering the response extension.
|
||||
|
||||
#### Implementation of
|
||||
|
||||
[`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md).[`responseBound`](../interfaces/GfxCompatibleInterface.md#responsebound)
|
||||
|
||||
## Methods
|
||||
|
||||
### isLocked()
|
||||
|
||||
> **isLocked**(): `boolean`
|
||||
|
||||
Check if the element is locked. It will check the lock status of the element and its ancestors.
|
||||
|
||||
#### Returns
|
||||
|
||||
`boolean`
|
||||
|
||||
#### Implementation of
|
||||
|
||||
[`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md).[`isLocked`](../interfaces/GfxCompatibleInterface.md#islocked)
|
||||
@@ -0,0 +1,50 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxSelectionManager
|
||||
|
||||
# Class: GfxSelectionManager
|
||||
|
||||
GfxSelectionManager is just a wrapper of std selection providing
|
||||
convenient method and states in gfx
|
||||
|
||||
## Extends
|
||||
|
||||
- `GfxExtension`
|
||||
|
||||
## Methods
|
||||
|
||||
### has()
|
||||
|
||||
> **has**(`element`): `boolean`
|
||||
|
||||
check if the element is selected in local
|
||||
|
||||
#### Parameters
|
||||
|
||||
##### element
|
||||
|
||||
`string`
|
||||
|
||||
#### Returns
|
||||
|
||||
`boolean`
|
||||
|
||||
***
|
||||
|
||||
### hasRemote()
|
||||
|
||||
> **hasRemote**(`element`): `boolean`
|
||||
|
||||
check if element is selected by remote peers
|
||||
|
||||
#### Parameters
|
||||
|
||||
##### element
|
||||
|
||||
`string`
|
||||
|
||||
#### Returns
|
||||
|
||||
`boolean`
|
||||
@@ -0,0 +1,35 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxCompatible
|
||||
|
||||
# Function: GfxCompatible()
|
||||
|
||||
> **GfxCompatible**\<`Props`, `T`\>(`BlockModelSuperClass`): *typeof* [`GfxBlockElementModel`](../classes/GfxBlockElementModel.md)
|
||||
|
||||
Convert a BlockModel to a GfxBlockElementModel.
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### Props
|
||||
|
||||
`Props` *extends* [`GfxCompatibleProps`](../type-aliases/GfxCompatibleProps.md)
|
||||
|
||||
### T
|
||||
|
||||
`T` *extends* `Constructor`\<`BlockModel`\<`Props`\>\> = `Constructor`\<`BlockModel`\<`Props`\>\>
|
||||
|
||||
## Parameters
|
||||
|
||||
### BlockModelSuperClass
|
||||
|
||||
`T`
|
||||
|
||||
The BlockModel class to be converted.
|
||||
|
||||
## Returns
|
||||
|
||||
*typeof* [`GfxBlockElementModel`](../classes/GfxBlockElementModel.md)
|
||||
|
||||
The returned class is a subclass of the GfxBlockElementModel class and the given BlockModelSuperClass.
|
||||
@@ -0,0 +1,25 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / canSafeAddToContainer
|
||||
|
||||
# Function: canSafeAddToContainer()
|
||||
|
||||
> **canSafeAddToContainer**(`container`, `element`): `boolean`
|
||||
|
||||
This checker is used to prevent circular reference, when adding a child element to a container.
|
||||
|
||||
## Parameters
|
||||
|
||||
### container
|
||||
|
||||
`GfxGroupModel`
|
||||
|
||||
### element
|
||||
|
||||
[`GfxCompatibleInterface`](../interfaces/GfxCompatibleInterface.md)
|
||||
|
||||
## Returns
|
||||
|
||||
`boolean`
|
||||
@@ -0,0 +1,26 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / compareLayer
|
||||
|
||||
# Function: compareLayer()
|
||||
|
||||
> **compareLayer**(`a`, `b`): `SortOrder`
|
||||
|
||||
A comparator function for sorting elements in the surface.
|
||||
SortOrder.AFTER means a should be rendered after b and so on.
|
||||
|
||||
## Parameters
|
||||
|
||||
### a
|
||||
|
||||
`GfxModel` | `GfxLocalElementModel`
|
||||
|
||||
### b
|
||||
|
||||
`GfxModel` | `GfxLocalElementModel`
|
||||
|
||||
## Returns
|
||||
|
||||
`SortOrder`
|
||||
@@ -0,0 +1,49 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / convert
|
||||
|
||||
# Function: convert()
|
||||
|
||||
> **convert**\<`V`, `T`\>(`fn`): (`_`, `context`) => `ClassAccessorDecoratorResult`\<`T`, `V`\>
|
||||
|
||||
The convert decorator is used to convert the property value before it's
|
||||
set to the Y map.
|
||||
|
||||
Note:
|
||||
1. This decorator function will not execute in model initialization.
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### V
|
||||
|
||||
`V`
|
||||
|
||||
### T
|
||||
|
||||
`T` *extends* `GfxPrimitiveElementModel`\<`BaseElementProps`\>
|
||||
|
||||
## Parameters
|
||||
|
||||
### fn
|
||||
|
||||
(`propValue`, `instance`) => `unknown`
|
||||
|
||||
## Returns
|
||||
|
||||
`Function`
|
||||
|
||||
### Parameters
|
||||
|
||||
#### \_
|
||||
|
||||
`unknown`
|
||||
|
||||
#### context
|
||||
|
||||
`ClassAccessorDecoratorContext`
|
||||
|
||||
### Returns
|
||||
|
||||
`ClassAccessorDecoratorResult`\<`T`, `V`\>
|
||||
@@ -0,0 +1,54 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / derive
|
||||
|
||||
# Function: derive()
|
||||
|
||||
> **derive**\<`V`, `T`\>(`fn`): (`_`, `context`) => `ClassAccessorDecoratorResult`\<`GfxPrimitiveElementModel`\<`BaseElementProps`\>, `V`\>
|
||||
|
||||
The derive decorator is used to derive other properties' update when the
|
||||
decorated property is updated through assignment in the local.
|
||||
|
||||
Note:
|
||||
1. The first argument of the function is the new value of the decorated property
|
||||
before the `convert` decorator is called.
|
||||
2. The decorator function will execute after the decorated property has been updated.
|
||||
3. The decorator function will not execute during model creation.
|
||||
4. The decorator function will not execute if the decorated property is updated through
|
||||
the Y map. That is to say, if other peers update the property will not trigger this decorator
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### V
|
||||
|
||||
`V`
|
||||
|
||||
### T
|
||||
|
||||
`T` *extends* `GfxPrimitiveElementModel`\<`BaseElementProps`\>
|
||||
|
||||
## Parameters
|
||||
|
||||
### fn
|
||||
|
||||
(`propValue`, `instance`) => `Record`\<`string`, `unknown`\>
|
||||
|
||||
## Returns
|
||||
|
||||
`Function`
|
||||
|
||||
### Parameters
|
||||
|
||||
#### \_
|
||||
|
||||
`unknown`
|
||||
|
||||
#### context
|
||||
|
||||
`ClassAccessorDecoratorContext`
|
||||
|
||||
### Returns
|
||||
|
||||
`ClassAccessorDecoratorResult`\<`GfxPrimitiveElementModel`\<`BaseElementProps`\>, `V`\>
|
||||
@@ -0,0 +1,27 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / generateKeyBetween
|
||||
|
||||
# Function: generateKeyBetween()
|
||||
|
||||
> **generateKeyBetween**(`a`, `b`, `digits`?): `string`
|
||||
|
||||
## Parameters
|
||||
|
||||
### a
|
||||
|
||||
`undefined` | `null` | `string`
|
||||
|
||||
### b
|
||||
|
||||
`undefined` | `null` | `string`
|
||||
|
||||
### digits?
|
||||
|
||||
`string`
|
||||
|
||||
## Returns
|
||||
|
||||
`string`
|
||||
@@ -0,0 +1,28 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / generateKeyBetweenV2
|
||||
|
||||
# Function: generateKeyBetweenV2()
|
||||
|
||||
> **generateKeyBetweenV2**(`a`, `b`): `string`
|
||||
|
||||
generate a key between a and b, the result key is always satisfied with a < result < b.
|
||||
the key always has a random suffix, so there is no need to worry about collision.
|
||||
|
||||
make sure a and b are generated by this function.
|
||||
|
||||
## Parameters
|
||||
|
||||
### a
|
||||
|
||||
`null` | `string`
|
||||
|
||||
### b
|
||||
|
||||
`null` | `string`
|
||||
|
||||
## Returns
|
||||
|
||||
`string`
|
||||
@@ -0,0 +1,39 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / generateNKeysBetween
|
||||
|
||||
# Function: generateNKeysBetween()
|
||||
|
||||
> **generateNKeysBetween**(`a`, `b`, `n`, `digits`?): `string`[]
|
||||
|
||||
same preconditions as generateKeysBetween.
|
||||
n >= 0.
|
||||
Returns an array of n distinct keys in sorted order.
|
||||
If a and b are both null, returns [a0, a1, ...]
|
||||
If one or the other is null, returns consecutive "integer"
|
||||
keys. Otherwise, returns relatively short keys between
|
||||
a and b.
|
||||
|
||||
## Parameters
|
||||
|
||||
### a
|
||||
|
||||
`undefined` | `null` | `string`
|
||||
|
||||
### b
|
||||
|
||||
`undefined` | `null` | `string`
|
||||
|
||||
### n
|
||||
|
||||
`number`
|
||||
|
||||
### digits?
|
||||
|
||||
`string`
|
||||
|
||||
## Returns
|
||||
|
||||
`string`[]
|
||||
@@ -0,0 +1,36 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / getTopElements
|
||||
|
||||
# Function: getTopElements()
|
||||
|
||||
> **getTopElements**(`elements`): `GfxModel`[]
|
||||
|
||||
Get the top elements from the list of elements, which are in some tree structures.
|
||||
|
||||
For example: a list `[G1, E1, G2, E2, E3, E4, G4, E5, E6]`,
|
||||
and they are in the elements tree like:
|
||||
```
|
||||
G1 G4 E6
|
||||
/ \ |
|
||||
E1 G2 E5
|
||||
/ \
|
||||
E2 G3*
|
||||
/ \
|
||||
E3 E4
|
||||
```
|
||||
where the star symbol `*` denote it is not in the list.
|
||||
|
||||
The result should be `[G1, G4, E6]`
|
||||
|
||||
## Parameters
|
||||
|
||||
### elements
|
||||
|
||||
`GfxModel`[]
|
||||
|
||||
## Returns
|
||||
|
||||
`GfxModel`[]
|
||||
@@ -0,0 +1,21 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / isGfxGroupCompatibleModel
|
||||
|
||||
# Function: isGfxGroupCompatibleModel()
|
||||
|
||||
> **isGfxGroupCompatibleModel**(`elm`): `elm is GfxGroupModel`
|
||||
|
||||
Check if the element is a container element.
|
||||
|
||||
## Parameters
|
||||
|
||||
### elm
|
||||
|
||||
`unknown`
|
||||
|
||||
## Returns
|
||||
|
||||
`elm is GfxGroupModel`
|
||||
@@ -0,0 +1,42 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / local
|
||||
|
||||
# Function: local()
|
||||
|
||||
> **local**\<`V`, `T`\>(): (`_target`, `context`) => `ClassAccessorDecoratorResult`\<`T`, `V`\>
|
||||
|
||||
A decorator to mark the property as a local property.
|
||||
|
||||
The local property act like it is a field property, but it's not synced to the Y map.
|
||||
Updating local property will also trigger the `elementUpdated` slot of the surface model
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### V
|
||||
|
||||
`V`
|
||||
|
||||
### T
|
||||
|
||||
`T` *extends* `GfxPrimitiveElementModel`\<`BaseElementProps`\>
|
||||
|
||||
## Returns
|
||||
|
||||
`Function`
|
||||
|
||||
### Parameters
|
||||
|
||||
#### \_target
|
||||
|
||||
`ClassAccessorDecoratorTarget`\<`T`, `V`\>
|
||||
|
||||
#### context
|
||||
|
||||
`ClassAccessorDecoratorContext`
|
||||
|
||||
### Returns
|
||||
|
||||
`ClassAccessorDecoratorResult`\<`T`, `V`\>
|
||||
@@ -0,0 +1,53 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / observe
|
||||
|
||||
# Function: observe()
|
||||
|
||||
> **observe**\<`V`, `E`, `T`\>(`fn`): (`_`, `context`) => `ClassAccessorDecoratorResult`\<`GfxPrimitiveElementModel`\<`BaseElementProps`\>, `V`\>
|
||||
|
||||
A decorator to observe the y type property.
|
||||
You can think of it is just a decorator version of 'observe' method of Y.Array and Y.Map.
|
||||
|
||||
The observer function start to observe the property when the model is mounted. And it will
|
||||
re-observe the property automatically when the value is altered.
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### V
|
||||
|
||||
`V`
|
||||
|
||||
### E
|
||||
|
||||
`E` *extends* `YEvent`\<`any`\>
|
||||
|
||||
### T
|
||||
|
||||
`T` *extends* `GfxPrimitiveElementModel`\<`BaseElementProps`\>
|
||||
|
||||
## Parameters
|
||||
|
||||
### fn
|
||||
|
||||
`ObserveFn`\<`E`, `T`\>
|
||||
|
||||
## Returns
|
||||
|
||||
`Function`
|
||||
|
||||
### Parameters
|
||||
|
||||
#### \_
|
||||
|
||||
`unknown`
|
||||
|
||||
#### context
|
||||
|
||||
`ClassAccessorDecoratorContext`
|
||||
|
||||
### Returns
|
||||
|
||||
`ClassAccessorDecoratorResult`\<`GfxPrimitiveElementModel`\<`BaseElementProps`\>, `V`\>
|
||||
@@ -0,0 +1,46 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / watch
|
||||
|
||||
# Function: watch()
|
||||
|
||||
> **watch**\<`V`, `T`\>(`fn`): (`_`, `context`) => `ClassAccessorDecoratorResult`\<`GfxPrimitiveElementModel`\<`BaseElementProps`\>, `V`\>
|
||||
|
||||
The watch decorator is used to watch the property change of the element.
|
||||
You can thinks of it as a decorator version of `elementUpdated` slot of the surface model.
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### V
|
||||
|
||||
`V`
|
||||
|
||||
### T
|
||||
|
||||
`T` *extends* `GfxPrimitiveElementModel`\<`BaseElementProps`\>
|
||||
|
||||
## Parameters
|
||||
|
||||
### fn
|
||||
|
||||
`WatchFn`\<`T`\>
|
||||
|
||||
## Returns
|
||||
|
||||
`Function`
|
||||
|
||||
### Parameters
|
||||
|
||||
#### \_
|
||||
|
||||
`unknown`
|
||||
|
||||
#### context
|
||||
|
||||
`ClassAccessorDecoratorContext`
|
||||
|
||||
### Returns
|
||||
|
||||
`ClassAccessorDecoratorResult`\<`GfxPrimitiveElementModel`\<`BaseElementProps`\>, `V`\>
|
||||
@@ -0,0 +1,75 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxCompatibleInterface
|
||||
|
||||
# Interface: GfxCompatibleInterface
|
||||
|
||||
All the model that can be rendered in graphics mode should implement this interface.
|
||||
|
||||
## Extends
|
||||
|
||||
- `IBound`.[`GfxElementGeometry`](GfxElementGeometry.md)
|
||||
|
||||
## Extended by
|
||||
|
||||
- [`GfxGroupCompatibleInterface`](GfxGroupCompatibleInterface.md)
|
||||
|
||||
## Properties
|
||||
|
||||
### elementBound
|
||||
|
||||
> `readonly` **elementBound**: `Bound`
|
||||
|
||||
The bound of the element without considering the response extension.
|
||||
|
||||
***
|
||||
|
||||
### lockedBySelf?
|
||||
|
||||
> `optional` **lockedBySelf**: `boolean`
|
||||
|
||||
Indicates whether the current block is explicitly locked by self.
|
||||
For checking the lock status of the element, use `isLocked` instead.
|
||||
For (un)locking the element, use `(un)lock` instead.
|
||||
|
||||
***
|
||||
|
||||
### responseBound
|
||||
|
||||
> `readonly` **responseBound**: `Bound`
|
||||
|
||||
The bound of the element considering the response extension.
|
||||
|
||||
***
|
||||
|
||||
### responseExtension
|
||||
|
||||
> **responseExtension**: \[`number`, `number`\]
|
||||
|
||||
Defines the extension of the response area beyond the element's bounding box.
|
||||
This tuple specifies the horizontal and vertical margins to be added to the element's bound.
|
||||
|
||||
The first value represents the horizontal extension (added to both left and right sides),
|
||||
and the second value represents the vertical extension (added to both top and bottom sides).
|
||||
|
||||
The response area is computed as:
|
||||
`[x - horizontal, y - vertical, w + 2 * horizontal, h + 2 * vertical]`.
|
||||
|
||||
Example:
|
||||
- xywh: `[0, 0, 100, 100]`, `responseExtension: [10, 20]`
|
||||
Resulting response area: `[-10, -20, 120, 140]`.
|
||||
- `responseExtension: [0, 0]` keeps the response area equal to the bounding box.
|
||||
|
||||
## Methods
|
||||
|
||||
### isLocked()
|
||||
|
||||
> **isLocked**(): `boolean`
|
||||
|
||||
Check if the element is locked. It will check the lock status of the element and its ancestors.
|
||||
|
||||
#### Returns
|
||||
|
||||
`boolean`
|
||||
@@ -0,0 +1,14 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxElementGeometry
|
||||
|
||||
# Interface: GfxElementGeometry
|
||||
|
||||
The methods that a graphic element should implement.
|
||||
It is already included in the `GfxCompatibleInterface` interface.
|
||||
|
||||
## Extended by
|
||||
|
||||
- [`GfxCompatibleInterface`](GfxCompatibleInterface.md)
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxGroupCompatibleInterface
|
||||
|
||||
# Interface: GfxGroupCompatibleInterface
|
||||
|
||||
GfxGroupCompatibleElement is a model that can contain other models.
|
||||
It just like a group that in common graphic software.
|
||||
|
||||
## Extends
|
||||
|
||||
- [`GfxCompatibleInterface`](GfxCompatibleInterface.md)
|
||||
|
||||
## Properties
|
||||
|
||||
### childElements
|
||||
|
||||
> **childElements**: `GfxModel`[]
|
||||
|
||||
All child element models of this container.
|
||||
Note that the `childElements` may not contains all the children in `childIds`,
|
||||
because some children may not be loaded.
|
||||
|
||||
***
|
||||
|
||||
### childIds
|
||||
|
||||
> **childIds**: `string`[]
|
||||
|
||||
All child ids of this container.
|
||||
|
||||
***
|
||||
|
||||
### elementBound
|
||||
|
||||
> `readonly` **elementBound**: `Bound`
|
||||
|
||||
The bound of the element without considering the response extension.
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`GfxCompatibleInterface`](GfxCompatibleInterface.md).[`elementBound`](GfxCompatibleInterface.md#elementbound)
|
||||
|
||||
***
|
||||
|
||||
### lockedBySelf?
|
||||
|
||||
> `optional` **lockedBySelf**: `boolean`
|
||||
|
||||
Indicates whether the current block is explicitly locked by self.
|
||||
For checking the lock status of the element, use `isLocked` instead.
|
||||
For (un)locking the element, use `(un)lock` instead.
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`GfxCompatibleInterface`](GfxCompatibleInterface.md).[`lockedBySelf`](GfxCompatibleInterface.md#lockedbyself)
|
||||
|
||||
***
|
||||
|
||||
### responseBound
|
||||
|
||||
> `readonly` **responseBound**: `Bound`
|
||||
|
||||
The bound of the element considering the response extension.
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`GfxCompatibleInterface`](GfxCompatibleInterface.md).[`responseBound`](GfxCompatibleInterface.md#responsebound)
|
||||
|
||||
***
|
||||
|
||||
### responseExtension
|
||||
|
||||
> **responseExtension**: \[`number`, `number`\]
|
||||
|
||||
Defines the extension of the response area beyond the element's bounding box.
|
||||
This tuple specifies the horizontal and vertical margins to be added to the element's bound.
|
||||
|
||||
The first value represents the horizontal extension (added to both left and right sides),
|
||||
and the second value represents the vertical extension (added to both top and bottom sides).
|
||||
|
||||
The response area is computed as:
|
||||
`[x - horizontal, y - vertical, w + 2 * horizontal, h + 2 * vertical]`.
|
||||
|
||||
Example:
|
||||
- xywh: `[0, 0, 100, 100]`, `responseExtension: [10, 20]`
|
||||
Resulting response area: `[-10, -20, 120, 140]`.
|
||||
- `responseExtension: [0, 0]` keeps the response area equal to the bounding box.
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`GfxCompatibleInterface`](GfxCompatibleInterface.md).[`responseExtension`](GfxCompatibleInterface.md#responseextension)
|
||||
|
||||
## Methods
|
||||
|
||||
### isLocked()
|
||||
|
||||
> **isLocked**(): `boolean`
|
||||
|
||||
Check if the element is locked. It will check the lock status of the element and its ancestors.
|
||||
|
||||
#### Returns
|
||||
|
||||
`boolean`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`GfxCompatibleInterface`](GfxCompatibleInterface.md).[`isLocked`](GfxCompatibleInterface.md#islocked)
|
||||
@@ -0,0 +1,54 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / PointTestOptions
|
||||
|
||||
# Interface: PointTestOptions
|
||||
|
||||
The options for the hit testing of a point.
|
||||
|
||||
## Properties
|
||||
|
||||
### hitThreshold?
|
||||
|
||||
> `optional` **hitThreshold**: `number`
|
||||
|
||||
The threshold of the hit test. The unit is pixel.
|
||||
|
||||
***
|
||||
|
||||
### ignoreTransparent?
|
||||
|
||||
> `optional` **ignoreTransparent**: `boolean`
|
||||
|
||||
If true, the transparent area of the element will be ignored during the point inclusion test.
|
||||
Otherwise, the transparent area will be considered as filled area.
|
||||
|
||||
Default is true.
|
||||
|
||||
***
|
||||
|
||||
### responsePadding?
|
||||
|
||||
> `optional` **responsePadding**: \[`number`, `number`\]
|
||||
|
||||
The padding of the response area for each element when do the hit testing. The unit is pixel.
|
||||
The first value is the padding for the x-axis, and the second value is the padding for the y-axis.
|
||||
|
||||
***
|
||||
|
||||
### useElementBound?
|
||||
|
||||
> `optional` **useElementBound**: `boolean`
|
||||
|
||||
If true, the element bound will be used for the hit testing.
|
||||
By default, the response bound will be used.
|
||||
|
||||
***
|
||||
|
||||
### zoom?
|
||||
|
||||
> `optional` **zoom**: `number`
|
||||
|
||||
The zoom level of current view when do the hit testing.
|
||||
@@ -0,0 +1,22 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxCommonBlockProps
|
||||
|
||||
# Type Alias: GfxCommonBlockProps
|
||||
|
||||
> **GfxCommonBlockProps** = [`GfxCompatibleProps`](GfxCompatibleProps.md) & `object`
|
||||
|
||||
This type include the common props for the graphic block model.
|
||||
You can use this type with Omit to define the props of a graphic block model.
|
||||
|
||||
## Type declaration
|
||||
|
||||
### rotate
|
||||
|
||||
> **rotate**: `number`
|
||||
|
||||
### scale
|
||||
|
||||
> **scale**: `number`
|
||||
@@ -0,0 +1,11 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / GfxCompatibleProps
|
||||
|
||||
# Type Alias: GfxCompatibleProps
|
||||
|
||||
> **GfxCompatibleProps** = `object`
|
||||
|
||||
The props that a graphics block model should have.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / SURFACE\_TEXT\_UNIQ\_IDENTIFIER
|
||||
|
||||
# Variable: SURFACE\_TEXT\_UNIQ\_IDENTIFIER
|
||||
|
||||
> `const` **SURFACE\_TEXT\_UNIQ\_IDENTIFIER**: `"affine:surface:text"` = `'affine:surface:text'`
|
||||
|
||||
Used for text field
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / SURFACE\_YMAP\_UNIQ\_IDENTIFIER
|
||||
|
||||
# Variable: SURFACE\_YMAP\_UNIQ\_IDENTIFIER
|
||||
|
||||
> `const` **SURFACE\_YMAP\_UNIQ\_IDENTIFIER**: `"affine:surface:ymap"` = `'affine:surface:ymap'`
|
||||
|
||||
Used for field that use Y.Map. E.g. group children field
|
||||
@@ -0,0 +1,11 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [gfx](../README.md) / gfxGroupCompatibleSymbol
|
||||
|
||||
# Variable: gfxGroupCompatibleSymbol
|
||||
|
||||
> `const` **gfxGroupCompatibleSymbol**: *typeof* `gfxGroupCompatibleSymbol`
|
||||
|
||||
The symbol to mark a model as a container.
|
||||
@@ -0,0 +1,28 @@
|
||||
[**@blocksuite/block-std**](../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../README.md) / [@blocksuite/block-std](../README.md) / index
|
||||
|
||||
# index
|
||||
|
||||
## Classes
|
||||
|
||||
- [~~BlockService~~](classes/BlockService.md)
|
||||
- [CommandManager](classes/CommandManager.md)
|
||||
- [LifeCycleWatcher](classes/LifeCycleWatcher.md)
|
||||
- [RangeBinding](classes/RangeBinding.md)
|
||||
- [RangeManager](classes/RangeManager.md)
|
||||
|
||||
## Variables
|
||||
|
||||
- [RANGE\_QUERY\_EXCLUDE\_ATTR](variables/RANGE_QUERY_EXCLUDE_ATTR.md)
|
||||
- [RANGE\_SYNC\_EXCLUDE\_ATTR](variables/RANGE_SYNC_EXCLUDE_ATTR.md)
|
||||
|
||||
## Functions
|
||||
|
||||
- [BlockViewExtension](functions/BlockViewExtension.md)
|
||||
- [ConfigExtensionFactory](functions/ConfigExtensionFactory.md)
|
||||
- [FlavourExtension](functions/FlavourExtension.md)
|
||||
- [KeymapExtension](functions/KeymapExtension.md)
|
||||
- [WidgetViewExtension](functions/WidgetViewExtension.md)
|
||||
@@ -0,0 +1,19 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / BlockService
|
||||
|
||||
# Class: ~~`abstract` BlockService~~
|
||||
|
||||
## Deprecated
|
||||
|
||||
BlockService is deprecated. You should reconsider where to put your feature.
|
||||
|
||||
BlockService is a legacy extension that is used to provide services to the block.
|
||||
In the previous version of BlockSuite, block service provides a way to extend the block.
|
||||
However, in the new version, we recommend using the new extension system.
|
||||
|
||||
## Extends
|
||||
|
||||
- [`Extension`](../../../store/classes/Extension.md)
|
||||
@@ -0,0 +1,186 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / CommandManager
|
||||
|
||||
# Class: CommandManager
|
||||
|
||||
Command manager to manage all commands
|
||||
|
||||
Commands are functions that take a context and a next function as arguments
|
||||
|
||||
```ts
|
||||
const myCommand: Command<input, output> = (ctx, next) => {
|
||||
const count = ctx.count || 0;
|
||||
|
||||
const success = someOperation();
|
||||
if (success) {
|
||||
return next({ count: count + 1 });
|
||||
}
|
||||
// if the command is not successful, you can return without calling next
|
||||
return;
|
||||
```
|
||||
|
||||
Command input and output data can be defined in the `Command` type
|
||||
|
||||
```ts
|
||||
// input: ctx.firstName, ctx.lastName
|
||||
// output: ctx.fullName
|
||||
const myCommand: Command<{ firstName: string; lastName: string }, { fullName: string }> = (ctx, next) => {
|
||||
const { firstName, lastName } = ctx;
|
||||
const fullName = `${firstName} ${lastName}`;
|
||||
return next({ fullName });
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Commands can be run in two ways:
|
||||
|
||||
1. Using `exec` method
|
||||
`exec` is used to run a single command
|
||||
```ts
|
||||
const [result, data] = commandManager.exec(myCommand, payload);
|
||||
```
|
||||
|
||||
2. Using `chain` method
|
||||
`chain` is used to run a series of commands
|
||||
```ts
|
||||
const chain = commandManager.chain();
|
||||
const [result, data] = chain
|
||||
.pipe(myCommand1)
|
||||
.pipe(myCommand2, payload)
|
||||
.run();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Command chains will stop running if a command is not successful
|
||||
|
||||
```ts
|
||||
const chain = commandManager.chain();
|
||||
const [result, data] = chain
|
||||
.chain(myCommand1) <-- if this fail
|
||||
.chain(myCommand2, payload) <- this won't run
|
||||
.run();
|
||||
|
||||
result <- result will be `false`
|
||||
```
|
||||
|
||||
You can use `try` to run a series of commands and if one of them is successful, it will continue to the next command
|
||||
```ts
|
||||
const chain = commandManager.chain();
|
||||
const [result, data] = chain
|
||||
.try(chain => [
|
||||
chain.pipe(myCommand1), <- if this fail
|
||||
chain.pipe(myCommand2, payload), <- this will run, if this success
|
||||
chain.pipe(myCommand3), <- this won't run
|
||||
])
|
||||
.run();
|
||||
```
|
||||
|
||||
The `tryAll` method is similar to `try`, but it will run all commands even if one of them is successful
|
||||
```ts
|
||||
const chain = commandManager.chain();
|
||||
const [result, data] = chain
|
||||
.try(chain => [
|
||||
chain.pipe(myCommand1), <- if this success
|
||||
chain.pipe(myCommand2), <- this will also run
|
||||
chain.pipe(myCommand3), <- so will this
|
||||
])
|
||||
.run();
|
||||
```
|
||||
|
||||
## Extends
|
||||
|
||||
- [`LifeCycleWatcher`](LifeCycleWatcher.md)
|
||||
|
||||
## Methods
|
||||
|
||||
### chain()
|
||||
|
||||
> **chain**(): `Chain`\<`InitCommandCtx`\>
|
||||
|
||||
Create a chain to run a series of commands
|
||||
```ts
|
||||
const chain = commandManager.chain();
|
||||
const [result, data] = chain
|
||||
.myCommand1()
|
||||
.myCommand2(payload)
|
||||
.run();
|
||||
```
|
||||
|
||||
#### Returns
|
||||
|
||||
`Chain`\<`InitCommandCtx`\>
|
||||
|
||||
[success, data] - success is a boolean to indicate if the chain is successful,
|
||||
data is the final context after running the chain
|
||||
|
||||
***
|
||||
|
||||
### created()
|
||||
|
||||
> **created**(): `void`
|
||||
|
||||
Called when std is created.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`created`](LifeCycleWatcher.md#created)
|
||||
|
||||
***
|
||||
|
||||
### mounted()
|
||||
|
||||
> **mounted**(): `void`
|
||||
|
||||
Called when editor host is mounted.
|
||||
Which means the editor host emit the `connectedCallback` lifecycle event.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`mounted`](LifeCycleWatcher.md#mounted)
|
||||
|
||||
***
|
||||
|
||||
### rendered()
|
||||
|
||||
> **rendered**(): `void`
|
||||
|
||||
Called when `std.render` is called.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`rendered`](LifeCycleWatcher.md#rendered)
|
||||
|
||||
***
|
||||
|
||||
### unmounted()
|
||||
|
||||
> **unmounted**(): `void`
|
||||
|
||||
Called when editor host is unmounted.
|
||||
Which means the editor host emit the `disconnectedCallback` lifecycle event.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`unmounted`](LifeCycleWatcher.md#unmounted)
|
||||
@@ -0,0 +1,82 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / LifeCycleWatcher
|
||||
|
||||
# Class: `abstract` LifeCycleWatcher
|
||||
|
||||
A life cycle watcher is an extension that watches the life cycle of the editor.
|
||||
It is used to perform actions when the editor is created, mounted, rendered, or unmounted.
|
||||
|
||||
When creating a life cycle watcher, you must define a key that is unique to the watcher.
|
||||
The key is used to identify the watcher in the dependency injection container.
|
||||
```ts
|
||||
class MyLifeCycleWatcher extends LifeCycleWatcher {
|
||||
static override readonly key = 'my-life-cycle-watcher';
|
||||
```
|
||||
|
||||
In the life cycle watcher, the methods will be called in the following order:
|
||||
1. `created`: Called when the std is created.
|
||||
2. `rendered`: Called when `std.render` is called.
|
||||
3. `mounted`: Called when the editor host is mounted.
|
||||
4. `unmounted`: Called when the editor host is unmounted.
|
||||
|
||||
## Extends
|
||||
|
||||
- [`Extension`](../../../store/classes/Extension.md)
|
||||
|
||||
## Extended by
|
||||
|
||||
- [`CommandManager`](CommandManager.md)
|
||||
- [`RangeManager`](RangeManager.md)
|
||||
|
||||
## Methods
|
||||
|
||||
### created()
|
||||
|
||||
> **created**(): `void`
|
||||
|
||||
Called when std is created.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
***
|
||||
|
||||
### mounted()
|
||||
|
||||
> **mounted**(): `void`
|
||||
|
||||
Called when editor host is mounted.
|
||||
Which means the editor host emit the `connectedCallback` lifecycle event.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
***
|
||||
|
||||
### rendered()
|
||||
|
||||
> **rendered**(): `void`
|
||||
|
||||
Called when `std.render` is called.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
***
|
||||
|
||||
### unmounted()
|
||||
|
||||
> **unmounted**(): `void`
|
||||
|
||||
Called when editor host is unmounted.
|
||||
Which means the editor host emit the `disconnectedCallback` lifecycle event.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
@@ -0,0 +1,9 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / RangeBinding
|
||||
|
||||
# Class: RangeBinding
|
||||
|
||||
Two-way binding between native range and text selection
|
||||
@@ -0,0 +1,121 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / RangeManager
|
||||
|
||||
# Class: RangeManager
|
||||
|
||||
CRUD for Range and TextSelection
|
||||
|
||||
## Extends
|
||||
|
||||
- [`LifeCycleWatcher`](LifeCycleWatcher.md)
|
||||
|
||||
## Methods
|
||||
|
||||
### created()
|
||||
|
||||
> **created**(): `void`
|
||||
|
||||
Called when std is created.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`created`](LifeCycleWatcher.md#created)
|
||||
|
||||
***
|
||||
|
||||
### getSelectedBlockComponentsByRange()
|
||||
|
||||
> **getSelectedBlockComponentsByRange**(`range`, `options`): `BlockComponent`\<`BlockModel`\<`object`\>, [`BlockService`](BlockService.md), `string`\>[]
|
||||
|
||||
#### Parameters
|
||||
|
||||
##### range
|
||||
|
||||
`Range`
|
||||
|
||||
##### options
|
||||
|
||||
###### match?
|
||||
|
||||
(`el`) => `boolean`
|
||||
|
||||
###### mode?
|
||||
|
||||
`"flat"` \| `"all"` \| `"highest"`
|
||||
|
||||
#### Returns
|
||||
|
||||
`BlockComponent`\<`BlockModel`\<`object`\>, [`BlockService`](BlockService.md), `string`\>[]
|
||||
|
||||
#### Example
|
||||
|
||||
```ts
|
||||
aaa
|
||||
b[bb
|
||||
ccc
|
||||
ddd
|
||||
ee]e
|
||||
|
||||
all mode: [aaa, bbb, ccc, ddd, eee]
|
||||
flat mode: [bbb, ccc, ddd, eee]
|
||||
highest mode: [bbb, ddd]
|
||||
|
||||
match function will be evaluated before filtering using mode
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
### mounted()
|
||||
|
||||
> **mounted**(): `void`
|
||||
|
||||
Called when editor host is mounted.
|
||||
Which means the editor host emit the `connectedCallback` lifecycle event.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Overrides
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`mounted`](LifeCycleWatcher.md#mounted)
|
||||
|
||||
***
|
||||
|
||||
### rendered()
|
||||
|
||||
> **rendered**(): `void`
|
||||
|
||||
Called when `std.render` is called.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`rendered`](LifeCycleWatcher.md#rendered)
|
||||
|
||||
***
|
||||
|
||||
### unmounted()
|
||||
|
||||
> **unmounted**(): `void`
|
||||
|
||||
Called when editor host is unmounted.
|
||||
Which means the editor host emit the `disconnectedCallback` lifecycle event.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
#### Inherited from
|
||||
|
||||
[`LifeCycleWatcher`](LifeCycleWatcher.md).[`unmounted`](LifeCycleWatcher.md#unmounted)
|
||||
@@ -0,0 +1,42 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / BlockViewExtension
|
||||
|
||||
# Function: BlockViewExtension()
|
||||
|
||||
> **BlockViewExtension**(`flavour`, `view`): `ExtensionType`
|
||||
|
||||
Create a block view extension.
|
||||
|
||||
## Parameters
|
||||
|
||||
### flavour
|
||||
|
||||
`string`
|
||||
|
||||
The flavour of the block that the view is for.
|
||||
|
||||
### view
|
||||
|
||||
`BlockViewType`
|
||||
|
||||
Lit literal template for the view. Example: `my-list-block`
|
||||
|
||||
The view is a lit template that is used to render the block.
|
||||
|
||||
## Returns
|
||||
|
||||
`ExtensionType`
|
||||
|
||||
## Example
|
||||
|
||||
```ts
|
||||
import { BlockViewExtension } from '@blocksuite/block-std';
|
||||
|
||||
const MyListBlockViewExtension = BlockViewExtension(
|
||||
'affine:list',
|
||||
literal`my-list-block`
|
||||
);
|
||||
```
|
||||
@@ -0,0 +1,45 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / ConfigExtensionFactory
|
||||
|
||||
# Function: ConfigExtensionFactory()
|
||||
|
||||
> **ConfigExtensionFactory**\<`Config`\>(`flavor`): (`config`) => `ExtensionType` & `object`
|
||||
|
||||
Create a config extension.
|
||||
A config extension provides a configuration object for a block flavour.
|
||||
The configuration object can be used like:
|
||||
```ts
|
||||
const config = std.provider.get(ConfigIdentifier('my-flavour'));
|
||||
```
|
||||
|
||||
## Type Parameters
|
||||
|
||||
### Config
|
||||
|
||||
`Config` *extends* `Record`\<`string`, `any`\>
|
||||
|
||||
## Parameters
|
||||
|
||||
### flavor
|
||||
|
||||
`string`
|
||||
|
||||
The flavour of the block that the config is for.
|
||||
|
||||
## Returns
|
||||
|
||||
(`config`) => `ExtensionType` & `object`
|
||||
|
||||
## Example
|
||||
|
||||
```ts
|
||||
import { ConfigExtensionFactory } from '@blocksuite/block-std';
|
||||
const MyConfigExtensionFactory = ConfigExtensionFactory<ConfigType>('my-flavour');
|
||||
const MyConfigExtension = MyConfigExtensionFactory({
|
||||
option1: 'value1',
|
||||
option2: 'value2',
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,31 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / FlavourExtension
|
||||
|
||||
# Function: FlavourExtension()
|
||||
|
||||
> **FlavourExtension**(`flavour`): `ExtensionType`
|
||||
|
||||
Create a flavour extension.
|
||||
|
||||
## Parameters
|
||||
|
||||
### flavour
|
||||
|
||||
`string`
|
||||
|
||||
The flavour of the block that the extension is for.
|
||||
|
||||
## Returns
|
||||
|
||||
`ExtensionType`
|
||||
|
||||
## Example
|
||||
|
||||
```ts
|
||||
import { FlavourExtension } from '@blocksuite/block-std';
|
||||
|
||||
const MyFlavourExtension = FlavourExtension('my-flavour');
|
||||
```
|
||||
@@ -0,0 +1,49 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / KeymapExtension
|
||||
|
||||
# Function: KeymapExtension()
|
||||
|
||||
> **KeymapExtension**(`keymapFactory`, `options`?): `ExtensionType`
|
||||
|
||||
Create a keymap extension.
|
||||
|
||||
## Parameters
|
||||
|
||||
### keymapFactory
|
||||
|
||||
(`std`) => `Record`\<`string`, `UIEventHandler`\>
|
||||
|
||||
Create keymap of the extension.
|
||||
It should return an object with `keymap` and `options`.
|
||||
|
||||
`keymap` is a record of keymap.
|
||||
|
||||
### options?
|
||||
|
||||
`EventOptions`
|
||||
|
||||
`options` is an optional object that restricts the event to be handled.
|
||||
|
||||
## Returns
|
||||
|
||||
`ExtensionType`
|
||||
|
||||
## Example
|
||||
|
||||
```ts
|
||||
import { KeymapExtension } from '@blocksuite/block-std';
|
||||
|
||||
const MyKeymapExtension = KeymapExtension(std => {
|
||||
return {
|
||||
keymap: {
|
||||
'mod-a': SelectAll
|
||||
}
|
||||
options: {
|
||||
flavour: 'affine:paragraph'
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,45 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / WidgetViewExtension
|
||||
|
||||
# Function: WidgetViewExtension()
|
||||
|
||||
> **WidgetViewExtension**(`flavour`, `id`, `view`): `ExtensionType`
|
||||
|
||||
Create a widget view extension.
|
||||
|
||||
## Parameters
|
||||
|
||||
### flavour
|
||||
|
||||
`string`
|
||||
|
||||
The flavour of the block that the widget view is for.
|
||||
|
||||
### id
|
||||
|
||||
`string`
|
||||
|
||||
The id of the widget view.
|
||||
|
||||
### view
|
||||
|
||||
`StaticValue`
|
||||
|
||||
The widget view lit literal.
|
||||
|
||||
A widget view is to provide a widget view for a block.
|
||||
For every target block, it's view will be rendered with the widget view.
|
||||
|
||||
## Returns
|
||||
|
||||
`ExtensionType`
|
||||
|
||||
## Example
|
||||
|
||||
```ts
|
||||
import { WidgetViewExtension } from '@blocksuite/block-std';
|
||||
|
||||
const MyWidgetViewExtension = WidgetViewExtension('my-flavour', 'my-widget', literal`my-widget-view`);
|
||||
@@ -0,0 +1,11 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / RANGE\_QUERY\_EXCLUDE\_ATTR
|
||||
|
||||
# Variable: RANGE\_QUERY\_EXCLUDE\_ATTR
|
||||
|
||||
> `const` **RANGE\_QUERY\_EXCLUDE\_ATTR**: `"data-range-query-exclude"` = `'data-range-query-exclude'`
|
||||
|
||||
Used to exclude certain elements when using `getSelectedBlockComponentsByRange`.
|
||||
@@ -0,0 +1,11 @@
|
||||
[**@blocksuite/block-std**](../../../../@blocksuite/block-std/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../../README.md) / [@blocksuite/block-std](../../README.md) / [index](../README.md) / RANGE\_SYNC\_EXCLUDE\_ATTR
|
||||
|
||||
# Variable: RANGE\_SYNC\_EXCLUDE\_ATTR
|
||||
|
||||
> `const` **RANGE\_SYNC\_EXCLUDE\_ATTR**: `"data-range-sync-exclude"` = `'data-range-sync-exclude'`
|
||||
|
||||
Used to mark certain elements so that they are excluded when synchronizing the native range and text selection (such as database block).
|
||||
@@ -0,0 +1,12 @@
|
||||
**@blocksuite/store**
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../README.md) / @blocksuite/store
|
||||
|
||||
# @blocksuite/store
|
||||
|
||||
## Extension
|
||||
|
||||
- [Extension](classes/Extension.md)
|
||||
- [StoreExtension](classes/StoreExtension.md)
|
||||
@@ -0,0 +1,133 @@
|
||||
[**@blocksuite/store**](../../../@blocksuite/store/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../README.md) / [@blocksuite/store](../README.md) / Extension
|
||||
|
||||
# Class: `abstract` Extension
|
||||
|
||||
# Understanding Extensions
|
||||
|
||||
Extensions provide a way to extend the functionality of a system using dependency injection.
|
||||
They allow you to register services, implementations, and factories in the DI container,
|
||||
which can then be retrieved and used by different parts of the application.
|
||||
|
||||
Extensions are particularly useful for:
|
||||
- Registering different implementations for different types
|
||||
- Creating pluggable architecture where components can be added or removed
|
||||
- Managing dependencies between different parts of the application
|
||||
|
||||
# Usage Example: Fruit Processing System
|
||||
|
||||
Let's consider a fruit processing system where different types of fruits need
|
||||
different processing methods. We'll show how to implement this using extensions.
|
||||
|
||||
## Step 1: Define the interfaces
|
||||
|
||||
```ts
|
||||
interface FruitProcessor {
|
||||
process(fruit: Fruit): void;
|
||||
}
|
||||
|
||||
interface Fruit {
|
||||
type: string;
|
||||
// other properties
|
||||
}
|
||||
```
|
||||
|
||||
## Step 2: Create a service identifier
|
||||
|
||||
```ts
|
||||
import { createIdentifier } from '@blocksuite/global/di';
|
||||
|
||||
const FruitProcessorProvider = createIdentifier<FruitProcessor>('fruit-processor-provider');
|
||||
```
|
||||
|
||||
## Step 3: Create implementations
|
||||
|
||||
```ts
|
||||
class AppleProcessor implements FruitProcessor {
|
||||
process(fruit: Fruit): void {
|
||||
console.log('Slicing apple');
|
||||
// Apple-specific processing
|
||||
}
|
||||
}
|
||||
|
||||
class BananaProcessor implements FruitProcessor {
|
||||
process(fruit: Fruit): void {
|
||||
console.log('Peeling banana');
|
||||
// Banana-specific processing
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Step 4: Create an extension factory
|
||||
|
||||
```ts
|
||||
const FruitProcessorExtension = (
|
||||
fruitType: string,
|
||||
implementation: new () => FruitProcessor
|
||||
): ExtensionType => {
|
||||
return {
|
||||
setup: di => {
|
||||
di.addImpl(FruitProcessorProvider(fruitType), implementation);
|
||||
}
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
## Step 5: Create concrete extensions
|
||||
|
||||
```ts
|
||||
export const AppleProcessorExtension = FruitProcessorExtension('apple', AppleProcessor);
|
||||
export const BananaProcessorExtension = FruitProcessorExtension('banana', BananaProcessor);
|
||||
```
|
||||
|
||||
## Step 6: Use the extensions
|
||||
|
||||
```ts
|
||||
import { Container } from '@blocksuite/global/di';
|
||||
|
||||
class FruitProcessingSystem {
|
||||
provider: ServiceProvider;
|
||||
|
||||
constructor(extensions: ExtensionType[]) {
|
||||
const container = new Container();
|
||||
|
||||
// Set up all extensions
|
||||
extensions.forEach(ext => ext.setup(container));
|
||||
|
||||
// Create a provider from the container
|
||||
this.provider = container.provider();
|
||||
}
|
||||
|
||||
processFruit(fruit: Fruit) {
|
||||
// Get the appropriate processor based on fruit type
|
||||
const processor = this.provider.get(FruitProcessorProvider(fruit.type));
|
||||
|
||||
// Process the fruit
|
||||
processor.process(fruit);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize the system with extensions
|
||||
const system = new FruitProcessingSystem([
|
||||
AppleProcessorExtension,
|
||||
BananaProcessorExtension
|
||||
]);
|
||||
|
||||
// Use the system
|
||||
system.processFruit({ type: 'apple' }); // Output: Slicing apple
|
||||
system.processFruit({ type: 'banana' }); // Output: Peeling banana
|
||||
```
|
||||
|
||||
Note: We deliberately used a non-block specific example here. In BlockSuite, the extension
|
||||
pattern can be applied to any entity that can be configured by third parties, not just blocks.
|
||||
This includes different tools in the whiteboard, different column types in database blocks,
|
||||
and many other extensible components. The pattern remains the same regardless of what you're extending.
|
||||
|
||||
## Extended by
|
||||
|
||||
- [`StoreExtension`](StoreExtension.md)
|
||||
- [`BlockService`](../../block-std/index/classes/BlockService.md)
|
||||
- [`LifeCycleWatcher`](../../block-std/index/classes/LifeCycleWatcher.md)
|
||||
@@ -0,0 +1,47 @@
|
||||
[**@blocksuite/store**](../../../@blocksuite/store/README.md)
|
||||
|
||||
***
|
||||
|
||||
[BlockSuite API Documentation](../../../README.md) / [@blocksuite/store](../README.md) / StoreExtension
|
||||
|
||||
# Class: StoreExtension
|
||||
|
||||
Store extensions are used to extend the store.
|
||||
They should be registered to the store. And they should be able to run in a none-dom environment.
|
||||
|
||||
## Extends
|
||||
|
||||
- [`Extension`](Extension.md)
|
||||
|
||||
## Properties
|
||||
|
||||
### key
|
||||
|
||||
> `readonly` `static` **key**: `string`
|
||||
|
||||
The key of the store extension.
|
||||
**You must override this property with a unique string.**
|
||||
|
||||
## Methods
|
||||
|
||||
### disposed()
|
||||
|
||||
> **disposed**(): `void`
|
||||
|
||||
Lifecycle hook when the yjs document is disposed.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
|
||||
***
|
||||
|
||||
### loaded()
|
||||
|
||||
> **loaded**(): `void`
|
||||
|
||||
Lifecycle hook when the yjs document is loaded.
|
||||
|
||||
#### Returns
|
||||
|
||||
`void`
|
||||
@@ -0,0 +1,10 @@
|
||||
**BlockSuite API Documentation**
|
||||
|
||||
***
|
||||
|
||||
# BlockSuite API Documentation
|
||||
|
||||
## Packages
|
||||
|
||||
- [@blocksuite/store](@blocksuite/store/README.md)
|
||||
- [@blocksuite/block-std](@blocksuite/block-std/README.md)
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "@blocksuite/bs-docs",
|
||||
"description": "BlockSuite documentation",
|
||||
"private": true,
|
||||
"keywords": [],
|
||||
"author": "toeverything",
|
||||
"repository": "toeverything/blocksuite",
|
||||
"license": "MPL-2.0",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"typedoc": "^0.28.0",
|
||||
"typedoc-plugin-markdown": "^4.5.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "typedoc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blocksuite/affine": "workspace:*"
|
||||
},
|
||||
"version": "0.20.0"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"target": "ES2024",
|
||||
"rootDir": ".",
|
||||
"outDir": "./dist",
|
||||
"tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo"
|
||||
},
|
||||
"include": ["./.vitepress"],
|
||||
"references": [{ "path": "../affine/all" }]
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"entryPoints": ["../framework/store", "../framework/block-std"],
|
||||
"packageOptions": {
|
||||
"readme": "none",
|
||||
"categorizeByGroup": false,
|
||||
"includeVersion": false,
|
||||
"excludeNotDocumented": true,
|
||||
"excludeInternal": true,
|
||||
"excludePrivate": true,
|
||||
"excludeProtected": true,
|
||||
"excludeExternals": true,
|
||||
"externalPattern": ["node_modules/**/*"],
|
||||
"disableSources": true
|
||||
},
|
||||
"readme": "none",
|
||||
"plugin": ["typedoc-plugin-markdown"],
|
||||
"out": "./api",
|
||||
"entryPointStrategy": "packages",
|
||||
"includeVersion": false,
|
||||
"logLevel": "Error",
|
||||
"name": "BlockSuite API Documentation",
|
||||
"navigation": {
|
||||
"includeCategories": true
|
||||
},
|
||||
"sort": ["source-order"]
|
||||
}
|
||||
Reference in New Issue
Block a user