mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-08 04:36:13 +08:00
feat(editor): unify block props api (#10888)
Closes: [BS-2707](https://linear.app/affine-design/issue/BS-2707/统一使用props获取和更新block-prop)
This commit is contained in:
@@ -24,7 +24,7 @@ export class AttachmentBlockTransformer extends BaseBlockTransformer<AttachmentB
|
||||
snapshot: ToSnapshotPayload<AttachmentBlockProps>
|
||||
): BlockSnapshotLeaf {
|
||||
const snapshotRet = super.toSnapshot(snapshot);
|
||||
const sourceId = snapshot.model.sourceId;
|
||||
const sourceId = snapshot.model.props.sourceId;
|
||||
if (sourceId) {
|
||||
const pathBlobIdMap = snapshot.assets.getPathBlobIdMap();
|
||||
pathBlobIdMap.set(snapshot.model.id, sourceId);
|
||||
|
||||
@@ -31,9 +31,7 @@ export type CalloutProps = {
|
||||
text: Text;
|
||||
};
|
||||
|
||||
export class CalloutBlockModel extends BlockModel<CalloutProps> {
|
||||
override text!: Text;
|
||||
}
|
||||
export class CalloutBlockModel extends BlockModel<CalloutProps> {}
|
||||
|
||||
export const CalloutBlockSchemaExtension =
|
||||
BlockSchemaExtension(CalloutBlockSchema);
|
||||
|
||||
@@ -37,6 +37,4 @@ export const CodeBlockSchema = defineBlockSchema({
|
||||
|
||||
export const CodeBlockSchemaExtension = BlockSchemaExtension(CodeBlockSchema);
|
||||
|
||||
export class CodeBlockModel extends BlockModel<CodeBlockProps> {
|
||||
override text!: Text;
|
||||
}
|
||||
export class CodeBlockModel extends BlockModel<CodeBlockProps> {}
|
||||
|
||||
@@ -86,4 +86,13 @@ export const EdgelessTextBlockSchemaExtension = BlockSchemaExtension(
|
||||
|
||||
export class EdgelessTextBlockModel
|
||||
extends GfxCompatible<EdgelessTextProps>(BlockModel)
|
||||
implements GfxElementGeometry {}
|
||||
implements GfxElementGeometry
|
||||
{
|
||||
get color() {
|
||||
return this.props.color;
|
||||
}
|
||||
|
||||
set color(color: EdgelessTextProps['color']) {
|
||||
this.props.color = color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,9 @@ export class FrameBlockModel
|
||||
}
|
||||
|
||||
get childIds() {
|
||||
return this.childElementIds ? Object.keys(this.childElementIds) : [];
|
||||
return this.props.childElementIds
|
||||
? Object.keys(this.props.childElementIds)
|
||||
: [];
|
||||
}
|
||||
|
||||
get descendantElements(): GfxModel[] {
|
||||
@@ -98,7 +100,10 @@ export class FrameBlockModel
|
||||
if (!canSafeAddToContainer(this, element)) return;
|
||||
|
||||
this.doc.transact(() => {
|
||||
this.childElementIds = { ...this.childElementIds, [element.id]: true };
|
||||
this.props.childElementIds = {
|
||||
...this.props.childElementIds,
|
||||
[element.id]: true,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -114,8 +119,8 @@ export class FrameBlockModel
|
||||
}
|
||||
|
||||
this.doc.transact(() => {
|
||||
this.childElementIds = {
|
||||
...this.childElementIds,
|
||||
this.props.childElementIds = {
|
||||
...this.props.childElementIds,
|
||||
...newChildren,
|
||||
};
|
||||
});
|
||||
@@ -126,7 +131,9 @@ export class FrameBlockModel
|
||||
}
|
||||
|
||||
hasChild(element: GfxModel): boolean {
|
||||
return this.childElementIds ? element.id in this.childElementIds : false;
|
||||
return this.props.childElementIds
|
||||
? element.id in this.props.childElementIds
|
||||
: false;
|
||||
}
|
||||
|
||||
hasDescendant(element: GfxModel): boolean {
|
||||
@@ -147,7 +154,8 @@ export class FrameBlockModel
|
||||
|
||||
removeChild(element: GfxModel): void {
|
||||
this.doc.transact(() => {
|
||||
this.childElementIds && delete this.childElementIds[element.id];
|
||||
this.props.childElementIds &&
|
||||
delete this.props.childElementIds[element.id];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ export class ImageBlockTransformer extends BaseBlockTransformer<ImageBlockProps>
|
||||
snapshot: ToSnapshotPayload<ImageBlockProps>
|
||||
): BlockSnapshotLeaf {
|
||||
const snapshotRet = super.toSnapshot(snapshot);
|
||||
const sourceId = snapshot.model.sourceId;
|
||||
const sourceId = snapshot.model.props.sourceId;
|
||||
if (sourceId) {
|
||||
const pathBlobIdMap = snapshot.assets.getPathBlobIdMap();
|
||||
pathBlobIdMap.set(snapshot.model.id, sourceId);
|
||||
|
||||
@@ -44,6 +44,4 @@ export const ListBlockSchema = defineBlockSchema({
|
||||
|
||||
export const ListBlockSchemaExtension = BlockSchemaExtension(ListBlockSchema);
|
||||
|
||||
export class ListBlockModel extends BlockModel<ListProps> {
|
||||
override text!: Text;
|
||||
}
|
||||
export class ListBlockModel extends BlockModel<ListProps> {}
|
||||
|
||||
@@ -130,7 +130,7 @@ export class NoteBlockModel
|
||||
implements GfxElementGeometry
|
||||
{
|
||||
private _isSelectable(): boolean {
|
||||
return this.displayMode !== NoteDisplayMode.DocOnly;
|
||||
return this.props.displayMode !== NoteDisplayMode.DocOnly;
|
||||
}
|
||||
|
||||
override containsBound(bounds: Bound): boolean {
|
||||
@@ -169,7 +169,7 @@ export class NoteBlockModel
|
||||
this.parent?.children.find(
|
||||
child =>
|
||||
child instanceof NoteBlockModel &&
|
||||
child.displayMode !== NoteDisplayMode.EdgelessOnly
|
||||
child.props.displayMode !== NoteDisplayMode.EdgelessOnly
|
||||
) === this
|
||||
);
|
||||
}
|
||||
|
||||
@@ -53,9 +53,7 @@ export const ParagraphBlockSchemaExtension =
|
||||
BlockSchemaExtension(ParagraphBlockSchema);
|
||||
|
||||
export class ParagraphBlockModel extends BlockModel<ParagraphProps> {
|
||||
override text!: Text;
|
||||
|
||||
override isEmpty(): boolean {
|
||||
return this.text$.value.length === 0 && this.children.length === 0;
|
||||
return this.props.text$.value.length === 0 && this.children.length === 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,9 +18,12 @@ export class RootBlockModel extends BlockModel<RootBlockProps> {
|
||||
const model = this.doc.getBlockById(id);
|
||||
if (model instanceof RootBlockModel) {
|
||||
const newDocMeta = this.doc.workspace.meta.getDocMeta(model.doc.id);
|
||||
if (!newDocMeta || newDocMeta.title !== model.title.toString()) {
|
||||
if (
|
||||
!newDocMeta ||
|
||||
newDocMeta.title !== model.props.title.toString()
|
||||
) {
|
||||
this.doc.workspace.meta.setDocMeta(model.doc.id, {
|
||||
title: model.title.toString(),
|
||||
title: model.props.title.toString(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user