fix(editor): missing doc mode extension in frame preview (#11348)
Close [BS-2777](https://linear.app/affine-design/issue/BS-2777/frame-preview里的embed-card展示的doc-mode不对)
This commit is contained in:
@@ -265,6 +265,7 @@ export class FramePanelBody extends SignalWatcher(
|
|||||||
html`<affine-frame-card
|
html`<affine-frame-card
|
||||||
data-frame-id=${frame.id}
|
data-frame-id=${frame.id}
|
||||||
.frame=${frame}
|
.frame=${frame}
|
||||||
|
.std=${this.editorHost.std}
|
||||||
.cardIndex=${cardIndex}
|
.cardIndex=${cardIndex}
|
||||||
.frameIndex=${frameIndex}
|
.frameIndex=${frameIndex}
|
||||||
.status=${selectedFrames.has(frame.id)
|
.status=${selectedFrames.has(frame.id)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { FrameBlockModel } from '@blocksuite/affine-model';
|
import type { FrameBlockModel } from '@blocksuite/affine-model';
|
||||||
import { on, once } from '@blocksuite/affine-shared/utils';
|
import { on, once } from '@blocksuite/affine-shared/utils';
|
||||||
import { WithDisposable } from '@blocksuite/global/lit';
|
import { WithDisposable } from '@blocksuite/global/lit';
|
||||||
import { ShadowlessElement } from '@blocksuite/std';
|
import { type BlockStdScope, ShadowlessElement } from '@blocksuite/std';
|
||||||
import { css, html, nothing } from 'lit';
|
import { css, html, nothing } from 'lit';
|
||||||
import { property, query } from 'lit/decorators.js';
|
import { property, query } from 'lit/decorators.js';
|
||||||
import { styleMap } from 'lit/directives/style-map.js';
|
import { styleMap } from 'lit/directives/style-map.js';
|
||||||
@@ -177,18 +177,18 @@ export class FrameCard extends WithDisposable(ShadowlessElement) {
|
|||||||
|
|
||||||
override render() {
|
override render() {
|
||||||
const { pos, stackOrder, width } = this;
|
const { pos, stackOrder, width } = this;
|
||||||
const containerStyle =
|
const containerStyle = styleMap(
|
||||||
this.status === 'dragging'
|
this.status === 'dragging'
|
||||||
? styleMap({
|
? {
|
||||||
transform: `${
|
transform: `${
|
||||||
stackOrder === 0
|
stackOrder === 0
|
||||||
? `translate(${pos.x - 16}px, ${pos.y - 8}px)`
|
? `translate(${pos.x - 16}px, ${pos.y - 8}px)`
|
||||||
: `translate(${pos.x - 10}px, ${pos.y - 16}px) scale(0.96)`
|
: `translate(${pos.x - 10}px, ${pos.y - 16}px) scale(0.96)`
|
||||||
}`,
|
}`,
|
||||||
width: width ? `${width}px` : undefined,
|
width: width ? `${width}px` : undefined,
|
||||||
})
|
}
|
||||||
: {};
|
: {}
|
||||||
|
);
|
||||||
return html`<div
|
return html`<div
|
||||||
class="frame-card-container ${this.status ?? ''}"
|
class="frame-card-container ${this.status ?? ''}"
|
||||||
style=${containerStyle}
|
style=${containerStyle}
|
||||||
@@ -207,12 +207,18 @@ export class FrameCard extends WithDisposable(ShadowlessElement) {
|
|||||||
>
|
>
|
||||||
${this.status === 'dragging' && stackOrder !== 0
|
${this.status === 'dragging' && stackOrder !== 0
|
||||||
? nothing
|
? nothing
|
||||||
: html`<frame-preview .frame=${this.frame}></frame-preview>`}
|
: html`<frame-preview
|
||||||
|
.frame=${this.frame}
|
||||||
|
.std=${this.std}
|
||||||
|
></frame-preview>`}
|
||||||
${this._DraggingCardNumber()}
|
${this._DraggingCardNumber()}
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@property({ attribute: false })
|
||||||
|
accessor std!: BlockStdScope;
|
||||||
|
|
||||||
@property({ attribute: false })
|
@property({ attribute: false })
|
||||||
accessor cardIndex!: number;
|
accessor cardIndex!: number;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
import type { FrameBlockModel } from '@blocksuite/affine-model';
|
import type { FrameBlockModel } from '@blocksuite/affine-model';
|
||||||
import { ViewportElementExtension } from '@blocksuite/affine-shared/services';
|
import {
|
||||||
|
DocModeExtension,
|
||||||
|
DocModeProvider,
|
||||||
|
ViewportElementExtension,
|
||||||
|
} from '@blocksuite/affine-shared/services';
|
||||||
import { SpecProvider } from '@blocksuite/affine-shared/utils';
|
import { SpecProvider } from '@blocksuite/affine-shared/utils';
|
||||||
import { DisposableGroup } from '@blocksuite/global/disposable';
|
import { DisposableGroup } from '@blocksuite/global/disposable';
|
||||||
import { Bound, deserializeXYWH } from '@blocksuite/global/gfx';
|
import { Bound, deserializeXYWH } from '@blocksuite/global/gfx';
|
||||||
@@ -47,11 +51,14 @@ const styles = css`
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
.edgeless-background {
|
.frame-preview-viewport
|
||||||
background-color: transparent;
|
> editor-host
|
||||||
background-image: none;
|
> affine-edgeless-root-preview
|
||||||
}
|
> .edgeless-background {
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: none;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@@ -134,9 +141,12 @@ export class FramePreview extends WithDisposable(ShadowlessElement) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const docModeService = this.std.get(DocModeProvider);
|
||||||
this._previewSpec.extend([
|
this._previewSpec.extend([
|
||||||
ViewportElementExtension('.frame-preview-viewport'),
|
ViewportElementExtension('.frame-preview-viewport'),
|
||||||
FramePreviewWatcher,
|
FramePreviewWatcher,
|
||||||
|
DocModeExtension(docModeService),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,6 +230,9 @@ export class FramePreview extends WithDisposable(ShadowlessElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@property({ attribute: false })
|
||||||
|
accessor std!: BlockStdScope;
|
||||||
|
|
||||||
@state()
|
@state()
|
||||||
accessor fillScreen = false;
|
accessor fillScreen = false;
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ export function startDragging(
|
|||||||
el.stackOrder = arr.length - 1 - idx;
|
el.stackOrder = arr.length - 1 - idx;
|
||||||
el.pos = start;
|
el.pos = start;
|
||||||
el.width = options.width;
|
el.width = options.width;
|
||||||
|
el.std = container.editorHost.std;
|
||||||
if (frames.length > 1 && el.stackOrder === 0)
|
if (frames.length > 1 && el.stackOrder === 0)
|
||||||
el.draggingCardNumber = frames.length;
|
el.draggingCardNumber = frames.length;
|
||||||
|
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ test.describe('presentation', () => {
|
|||||||
}) => {
|
}) => {
|
||||||
await edgelessCommonSetup(page);
|
await edgelessCommonSetup(page);
|
||||||
|
|
||||||
await createFrame(page, [100, 100], [100, 200]);
|
await createFrame(page, [100, 100], [200, 200]);
|
||||||
await createFrame(page, [200, 100], [300, 200]);
|
await createFrame(page, [200, 100], [300, 200]);
|
||||||
await createFrame(page, [300, 100], [400, 200]);
|
await createFrame(page, [300, 100], [400, 200]);
|
||||||
await createFrame(page, [400, 100], [500, 200]);
|
await createFrame(page, [400, 100], [500, 200]);
|
||||||
|
|||||||
Reference in New Issue
Block a user