fix(editor): missing refFlavour in creation of surface-ref (#11445)
This commit is contained in:
@@ -12,11 +12,11 @@ export type SurfaceRefProps = {
|
|||||||
|
|
||||||
export const SurfaceRefBlockSchema = defineBlockSchema({
|
export const SurfaceRefBlockSchema = defineBlockSchema({
|
||||||
flavour: 'affine:surface-ref',
|
flavour: 'affine:surface-ref',
|
||||||
props: () =>
|
props: () => ({
|
||||||
({
|
reference: '',
|
||||||
reference: '',
|
caption: '',
|
||||||
caption: '',
|
refFlavour: '',
|
||||||
}) as SurfaceRefProps,
|
}),
|
||||||
metadata: {
|
metadata: {
|
||||||
version: 1,
|
version: 1,
|
||||||
role: 'content',
|
role: 'content',
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ import {
|
|||||||
type GfxModel,
|
type GfxModel,
|
||||||
GfxPrimitiveElementModel,
|
GfxPrimitiveElementModel,
|
||||||
isGfxGroupCompatibleModel,
|
isGfxGroupCompatibleModel,
|
||||||
|
isPrimitiveModel,
|
||||||
SURFACE_YMAP_UNIQ_IDENTIFIER,
|
SURFACE_YMAP_UNIQ_IDENTIFIER,
|
||||||
SurfaceBlockModel,
|
SurfaceBlockModel,
|
||||||
} from '@blocksuite/std/gfx';
|
} from '@blocksuite/std/gfx';
|
||||||
@@ -567,6 +568,7 @@ export class DragEventWatcher {
|
|||||||
let largestElem!: {
|
let largestElem!: {
|
||||||
size: number;
|
size: number;
|
||||||
id: string;
|
id: string;
|
||||||
|
flavour: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
idRemap.forEach(val => {
|
idRemap.forEach(val => {
|
||||||
@@ -574,9 +576,13 @@ export class DragEventWatcher {
|
|||||||
|
|
||||||
if (gfxElement?.elementBound) {
|
if (gfxElement?.elementBound) {
|
||||||
const elemBound = gfxElement.elementBound;
|
const elemBound = gfxElement.elementBound;
|
||||||
|
const flavour = isPrimitiveModel(gfxElement)
|
||||||
|
? gfxElement.type
|
||||||
|
: gfxElement.flavour;
|
||||||
|
|
||||||
largestElem =
|
largestElem =
|
||||||
(largestElem?.size ?? 0) < elemBound.w * elemBound.h
|
(largestElem?.size ?? 0) < elemBound.w * elemBound.h
|
||||||
? { size: elemBound.w * elemBound.h, id: val }
|
? { size: elemBound.w * elemBound.h, id: val, flavour }
|
||||||
: largestElem;
|
: largestElem;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -595,6 +601,7 @@ export class DragEventWatcher {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: largestElem.id,
|
reference: largestElem.id,
|
||||||
|
refFlavour: largestElem.flavour,
|
||||||
},
|
},
|
||||||
parent.id,
|
parent.id,
|
||||||
index
|
index
|
||||||
@@ -608,6 +615,7 @@ export class DragEventWatcher {
|
|||||||
let largestElem!: {
|
let largestElem!: {
|
||||||
size: number;
|
size: number;
|
||||||
id: string;
|
id: string;
|
||||||
|
flavour: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const walk = (block: BlockSnapshot) => {
|
const walk = (block: BlockSnapshot) => {
|
||||||
@@ -615,14 +623,14 @@ export class DragEventWatcher {
|
|||||||
Object.values(
|
Object.values(
|
||||||
block.props.elements as Record<
|
block.props.elements as Record<
|
||||||
string,
|
string,
|
||||||
{ id: string; xywh: SerializedXYWH }
|
{ id: string; xywh: SerializedXYWH; type: string }
|
||||||
>
|
>
|
||||||
).forEach(elem => {
|
).forEach(elem => {
|
||||||
if (elem.xywh) {
|
if (elem.xywh) {
|
||||||
const bound = Bound.deserialize(elem.xywh);
|
const bound = Bound.deserialize(elem.xywh);
|
||||||
const size = bound.w * bound.h;
|
const size = bound.w * bound.h;
|
||||||
if ((largestElem?.size ?? 0) < size) {
|
if ((largestElem?.size ?? 0) < size) {
|
||||||
largestElem = { size, id: elem.id };
|
largestElem = { size, id: elem.id, flavour: elem.type };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -634,7 +642,7 @@ export class DragEventWatcher {
|
|||||||
);
|
);
|
||||||
const size = bound.w * bound.h;
|
const size = bound.w * bound.h;
|
||||||
if ((largestElem?.size ?? 0) < size) {
|
if ((largestElem?.size ?? 0) < size) {
|
||||||
largestElem = { size, id: block.id };
|
largestElem = { size, id: block.id, flavour: block.flavour };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -647,6 +655,7 @@ export class DragEventWatcher {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: largestElem.id,
|
reference: largestElem.id,
|
||||||
|
refFlavour: largestElem.flavour,
|
||||||
},
|
},
|
||||||
parent.id,
|
parent.id,
|
||||||
index
|
index
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: frameId,
|
reference: frameId,
|
||||||
|
refFlavour: 'affine:frame',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
@@ -76,6 +77,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: frameId,
|
reference: frameId,
|
||||||
|
refFlavour: 'affine:frame',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
@@ -113,6 +115,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: groupId,
|
reference: groupId,
|
||||||
|
refFlavour: 'group',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
@@ -142,6 +145,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: frameId,
|
reference: frameId,
|
||||||
|
refFlavour: 'affine:frame',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
@@ -177,6 +181,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: groupId,
|
reference: groupId,
|
||||||
|
refFlavour: 'group',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
@@ -200,6 +205,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: frameId,
|
reference: frameId,
|
||||||
|
refFlavour: 'affine:frame',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
@@ -238,6 +244,7 @@ describe('basic', () => {
|
|||||||
'affine:surface-ref',
|
'affine:surface-ref',
|
||||||
{
|
{
|
||||||
reference: groupId,
|
reference: groupId,
|
||||||
|
refFlavour: 'group',
|
||||||
},
|
},
|
||||||
noteAId
|
noteAId
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user