mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
26 lines
814 B
TypeScript
26 lines
814 B
TypeScript
import { getLastPropsKey } from '@blocksuite/affine-block-surface';
|
|
import { EditPropsStore } from '@blocksuite/affine-shared/services';
|
|
import {
|
|
type SurfaceMiddleware,
|
|
SurfaceMiddlewareBuilder,
|
|
} from '@blocksuite/block-std/gfx';
|
|
|
|
export class EditPropsMiddlewareBuilder extends SurfaceMiddlewareBuilder {
|
|
static override key = 'editProps';
|
|
|
|
middleware: SurfaceMiddleware = ctx => {
|
|
if (ctx.type === 'beforeAdd') {
|
|
const { type, props } = ctx.payload;
|
|
const key = getLastPropsKey(type as BlockSuite.EdgelessModelKeys, props);
|
|
const nProps = key
|
|
? this.std.get(EditPropsStore).applyLastProps(key, ctx.payload.props)
|
|
: null;
|
|
|
|
ctx.payload.props = {
|
|
...(nProps ?? props),
|
|
index: props.index ?? this.gfx.layer.generateIndex(),
|
|
};
|
|
}
|
|
};
|
|
}
|