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

@@ -54,7 +54,7 @@ describe('editor host', () => {
expect(headingElm!.tagName).toBe('TEST-H1-BLOCK');
(headingBlock.model as HeadingBlockModel).type = 'h2';
(headingBlock.model as HeadingBlockModel).props.type = 'h2';
await wait(50);
headingElm = editorContainer.std.view.getBlock(headingId);

View File

@@ -12,7 +12,7 @@ export const testSpecs: ExtensionType[] = [
BlockViewExtension('test:note', literal`test-note-block`),
BlockViewExtension('test:heading', model => {
const h = (model as HeadingBlockModel).type$.value;
const h = (model as HeadingBlockModel).props.type$.value;
if (h === 'h1') {
return literal`test-h1-block`;

View File

@@ -63,6 +63,42 @@ export class GfxBlockElementModel<
connectable = true;
get xywh() {
return this.props.xywh;
}
get xywh$() {
return this.props.xywh$;
}
set xywh(xywh: SerializedXYWH) {
this.props.xywh = xywh;
}
get index() {
return this.props.index;
}
get index$() {
return this.props.index$;
}
set index(index: string) {
this.props.index = index;
}
get lockedBySelf(): boolean | undefined {
return this.props.lockedBySelf;
}
get lockedBySelf$() {
return this.props.lockedBySelf$;
}
set lockedBySelf(lockedBySelf: boolean | undefined) {
this.props.lockedBySelf = lockedBySelf;
}
/**
* 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].

View File

@@ -109,6 +109,10 @@ export class SurfaceBlockModel extends BlockModel<SurfaceBlockProps> {
return models;
}
get elements() {
return this.props.elements;
}
get localElementModels() {
return this.localElements;
}