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:
Saul-Mirone
2025-03-16 05:48:34 +00:00
parent 8f9e5bf0aa
commit 26285f7dcb
193 changed files with 1019 additions and 891 deletions

View File

@@ -121,14 +121,14 @@ function autoResizeElements(
}
if (ele instanceof NoteBlockModel) {
const curScale = ele.edgeless.scale ?? 1;
const curScale = ele.props.edgeless.scale ?? 1;
const nextScale = curScale * (ALIGN_HEIGHT / ele.elementBound.h);
const bound = Bound.deserialize(ele.xywh);
bound.h = bound.h * (nextScale / curScale);
bound.w = bound.w * (nextScale / curScale);
updateElement(ele.id, {
edgeless: {
...ele.edgeless,
...ele.props.edgeless,
scale: nextScale,
},
xywh: bound.serialize(),
@@ -137,7 +137,7 @@ function autoResizeElements(
ele instanceof EdgelessTextBlockModel ||
ele instanceof EmbedSyncedDocModel
) {
const curScale = ele.scale ?? 1;
const curScale = ele.props.scale ?? 1;
const nextScale = curScale * (ALIGN_HEIGHT / ele.elementBound.h);
const bound = Bound.deserialize(ele.xywh);
bound.h = bound.h * (nextScale / curScale);

View File

@@ -459,9 +459,9 @@ export class ExportManager {
nodes ?? gfx.getElementsByBound(bound, { type: 'block' }) ?? [];
for (const block of blocks) {
if (matchModels(block, [ImageBlockModel])) {
if (!block.sourceId) return;
if (!block.props.sourceId) return;
const blob = await block.doc.blobSync.get(block.sourceId);
const blob = await block.doc.blobSync.get(block.props.sourceId);
if (!blob) return;
const blobToImage = (blob: Blob) =>
@@ -564,7 +564,7 @@ export class ExportManager {
const pdfBase64 = await pdfDoc.saveAsBase64({ dataUri: true });
FileExporter.exportFile(
(rootModel as RootBlockModel).title.toString() + '.pdf',
(rootModel as RootBlockModel).props.title.toString() + '.pdf',
pdfBase64
);
}
@@ -578,7 +578,7 @@ export class ExportManager {
}
FileExporter.exportPng(
(this.doc.root as RootBlockModel).title.toString(),
(this.doc.root as RootBlockModel).props.title.toString(),
canvasImage.toDataURL('image/png')
);
}

View File

@@ -90,7 +90,7 @@ export class SurfaceBlockTransformer extends BaseBlockTransformer<SurfaceBlockPr
override toSnapshot(payload: ToSnapshotPayload<SurfaceBlockProps>) {
const snapshot = super.toSnapshot(payload);
const elementsValue = payload.model.elements.getValue();
const elementsValue = payload.model.props.elements.getValue();
const value: Record<string, unknown> = {};
/**
* When the selectedElements is defined, only the selected elements will be serialized.

View File

@@ -102,8 +102,8 @@ export function addNote(
if (options.collapse && height > NOTE_MIN_HEIGHT) {
const note = doc.getBlockById(noteId) as NoteBlockModel;
doc.updateBlock(note, () => {
note.edgeless.collapse = true;
note.edgeless.collapsedHeight = height;
note.props.edgeless.collapse = true;
note.props.edgeless.collapsedHeight = height;
});
}
gfx.tool.setTool(

View File

@@ -47,13 +47,13 @@ export function updateXYWH(
if (ele instanceof ConnectorElementModel) {
ele.moveTo(bound);
} else if (ele instanceof NoteBlockModel) {
const scale = ele.edgeless.scale ?? 1;
const scale = ele.props.edgeless.scale ?? 1;
bound.w = clamp(bound.w, NOTE_MIN_WIDTH * scale, Infinity);
bound.h = clamp(bound.h, NOTE_MIN_HEIGHT * scale, Infinity);
if (bound.h >= NOTE_MIN_HEIGHT * scale) {
updateBlock(ele, () => {
ele.edgeless.collapse = true;
ele.edgeless.collapsedHeight = bound.h / scale;
ele.props.edgeless.collapse = true;
ele.props.edgeless.collapsedHeight = bound.h / scale;
});
}
updateElement(ele.id, {