Files
AFFiNE-Mirror/blocksuite/blocks/src/root-block/edgeless/middlewares/base.ts
2024-12-26 08:58:06 +00:00

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(),
};
}
};
}