refactor(editor): extract surface ref block (#9433)
This commit is contained in:
48
blocksuite/affine/block-surface-ref/package.json
Normal file
48
blocksuite/affine/block-surface-ref/package.json
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"name": "@blocksuite/affine-block-surface-ref",
|
||||||
|
"description": "Surface ref block for BlockSuite.",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc",
|
||||||
|
"test:unit": "nx vite:test --run --passWithNoTests",
|
||||||
|
"test:unit:coverage": "nx vite:test --run --coverage",
|
||||||
|
"test:e2e": "playwright test"
|
||||||
|
},
|
||||||
|
"sideEffects": false,
|
||||||
|
"keywords": [],
|
||||||
|
"author": "toeverything",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@blocksuite/affine-block-surface": "workspace:*",
|
||||||
|
"@blocksuite/affine-components": "workspace:*",
|
||||||
|
"@blocksuite/affine-model": "workspace:*",
|
||||||
|
"@blocksuite/affine-shared": "workspace:*",
|
||||||
|
"@blocksuite/block-std": "workspace:*",
|
||||||
|
"@blocksuite/global": "workspace:*",
|
||||||
|
"@blocksuite/inline": "workspace:*",
|
||||||
|
"@blocksuite/store": "workspace:*",
|
||||||
|
"@lit/context": "^1.1.2",
|
||||||
|
"@preact/signals-core": "^1.8.0",
|
||||||
|
"@toeverything/theme": "^1.1.3",
|
||||||
|
"fractional-indexing": "^3.2.0",
|
||||||
|
"lit": "^3.2.0",
|
||||||
|
"lodash.chunk": "^4.2.0",
|
||||||
|
"nanoid": "^5.0.7",
|
||||||
|
"zod": "^3.23.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/dompurify": "^3.0.5",
|
||||||
|
"@types/lodash.chunk": "^4.2.9"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
".": "./src/index.ts",
|
||||||
|
"./effects": "./src/effects.ts"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src",
|
||||||
|
"dist",
|
||||||
|
"!src/__tests__",
|
||||||
|
"!dist/__tests__"
|
||||||
|
],
|
||||||
|
"version": "0.19.0"
|
||||||
|
}
|
||||||
@@ -1,7 +1,20 @@
|
|||||||
import type { insertSurfaceRefBlockCommand } from './commands.js';
|
import type { insertSurfaceRefBlockCommand } from './commands.js';
|
||||||
|
import { SurfaceRefGenericBlockPortal } from './portal/generic-block.js';
|
||||||
|
import { SurfaceRefNotePortal } from './portal/note.js';
|
||||||
|
import { SurfaceRefBlockComponent } from './surface-ref-block.js';
|
||||||
|
import { EdgelessSurfaceRefBlockComponent } from './surface-ref-block-edgeless.js';
|
||||||
|
|
||||||
export function effects() {
|
export function effects() {
|
||||||
// TODO(@L-Sun): move other effects to this file
|
customElements.define(
|
||||||
|
'surface-ref-generic-block-portal',
|
||||||
|
SurfaceRefGenericBlockPortal
|
||||||
|
);
|
||||||
|
customElements.define('affine-surface-ref', SurfaceRefBlockComponent);
|
||||||
|
customElements.define(
|
||||||
|
'affine-edgeless-surface-ref',
|
||||||
|
EdgelessSurfaceRefBlockComponent
|
||||||
|
);
|
||||||
|
customElements.define('surface-ref-note-portal', SurfaceRefNotePortal);
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
|
import '@blocksuite/affine-shared/commands';
|
||||||
|
|
||||||
export * from './surface-ref-block.js';
|
export * from './surface-ref-block.js';
|
||||||
export * from './surface-ref-block-edgeless.js';
|
export * from './surface-ref-block-edgeless.js';
|
||||||
export {
|
export {
|
||||||
EdgelessSurfaceRefBlockSpec,
|
EdgelessSurfaceRefBlockSpec,
|
||||||
PageSurfaceRefBlockSpec,
|
PageSurfaceRefBlockSpec,
|
||||||
} from './surface-ref-spec.js';
|
} from './surface-ref-spec.js';
|
||||||
|
export * from './types.js';
|
||||||
export * from './utils.js';
|
export * from './utils.js';
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
EdgelessCRUDExtension,
|
||||||
getSurfaceBlock,
|
getSurfaceBlock,
|
||||||
type SurfaceBlockModel,
|
type SurfaceBlockModel,
|
||||||
SurfaceElementModel,
|
SurfaceElementModel,
|
||||||
@@ -20,7 +21,10 @@ import {
|
|||||||
EditPropsStore,
|
EditPropsStore,
|
||||||
ThemeProvider,
|
ThemeProvider,
|
||||||
} from '@blocksuite/affine-shared/services';
|
} from '@blocksuite/affine-shared/services';
|
||||||
import { requestConnectedFrame } from '@blocksuite/affine-shared/utils';
|
import {
|
||||||
|
requestConnectedFrame,
|
||||||
|
SpecProvider,
|
||||||
|
} from '@blocksuite/affine-shared/utils';
|
||||||
import {
|
import {
|
||||||
type BaseSelection,
|
type BaseSelection,
|
||||||
BlockComponent,
|
BlockComponent,
|
||||||
@@ -29,7 +33,10 @@ import {
|
|||||||
type EditorHost,
|
type EditorHost,
|
||||||
LifeCycleWatcher,
|
LifeCycleWatcher,
|
||||||
} from '@blocksuite/block-std';
|
} from '@blocksuite/block-std';
|
||||||
import { GfxBlockElementModel } from '@blocksuite/block-std/gfx';
|
import {
|
||||||
|
GfxBlockElementModel,
|
||||||
|
GfxControllerIdentifier,
|
||||||
|
} from '@blocksuite/block-std/gfx';
|
||||||
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
|
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
|
||||||
import {
|
import {
|
||||||
assertExists,
|
assertExists,
|
||||||
@@ -43,9 +50,7 @@ import { css, html, nothing, type TemplateResult } from 'lit';
|
|||||||
import { query, state } from 'lit/decorators.js';
|
import { query, state } from 'lit/decorators.js';
|
||||||
import { styleMap } from 'lit/directives/style-map.js';
|
import { styleMap } from 'lit/directives/style-map.js';
|
||||||
|
|
||||||
import { SpecProvider } from '../_specs/index.js';
|
import type { EdgelessPreviewer } from './types.js';
|
||||||
import type { EdgelessRootPreviewBlockComponent } from '../root-block/edgeless/edgeless-root-preview-block.js';
|
|
||||||
import { EdgelessRootService } from '../root-block/index.js';
|
|
||||||
import { noContentPlaceholder } from './utils.js';
|
import { noContentPlaceholder } from './utils.js';
|
||||||
|
|
||||||
const REF_LABEL_ICON = {
|
const REF_LABEL_ICON = {
|
||||||
@@ -418,18 +423,20 @@ export class SurfaceRefBlockComponent extends BlockComponent<SurfaceRefBlockMode
|
|||||||
|
|
||||||
private _initSpec() {
|
private _initSpec() {
|
||||||
const refreshViewport = this._refreshViewport.bind(this);
|
const refreshViewport = this._refreshViewport.bind(this);
|
||||||
|
|
||||||
class PageViewWatcher extends BlockServiceWatcher {
|
class PageViewWatcher extends BlockServiceWatcher {
|
||||||
static override readonly flavour = 'affine:page';
|
static override readonly flavour = 'affine:page';
|
||||||
|
|
||||||
override mounted() {
|
override mounted() {
|
||||||
this.blockService.disposables.add(
|
this.blockService.disposables.add(
|
||||||
this.blockService.specSlots.viewConnected.once(({ component }) => {
|
this.blockService.specSlots.viewConnected.once(({ component }) => {
|
||||||
const edgelessBlock =
|
const edgelessBlock = component as BlockComponent &
|
||||||
component as EdgelessRootPreviewBlockComponent;
|
EdgelessPreviewer;
|
||||||
|
|
||||||
edgelessBlock.editorViewportSelector = 'ref-viewport';
|
edgelessBlock.editorViewportSelector = 'ref-viewport';
|
||||||
refreshViewport();
|
refreshViewport();
|
||||||
edgelessBlock.service.viewport.sizeUpdated.once(() => {
|
const gfx = edgelessBlock.std.get(GfxControllerIdentifier);
|
||||||
|
gfx.viewport.sizeUpdated.once(() => {
|
||||||
refreshViewport();
|
refreshViewport();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -449,11 +456,12 @@ export class SurfaceRefBlockComponent extends BlockComponent<SurfaceRefBlockMode
|
|||||||
private readonly _disposable = new DisposableGroup();
|
private readonly _disposable = new DisposableGroup();
|
||||||
|
|
||||||
override mounted() {
|
override mounted() {
|
||||||
const edgelessService = this.std.get(EdgelessRootService);
|
const crud = this.std.get(EdgelessCRUDExtension);
|
||||||
const { _disposable } = this;
|
const { _disposable } = this;
|
||||||
|
const surfaceModel = getSurfaceBlock(this.std.doc);
|
||||||
|
if (!surfaceModel) return;
|
||||||
|
|
||||||
const referenceElement =
|
const referenceElement = crud.getElementById(referenceId);
|
||||||
edgelessService.crud.getElementById(referenceId);
|
|
||||||
if (!referenceElement) {
|
if (!referenceElement) {
|
||||||
throw new BlockSuiteError(
|
throw new BlockSuiteError(
|
||||||
ErrorCode.MissingViewModelError,
|
ErrorCode.MissingViewModelError,
|
||||||
@@ -470,7 +478,7 @@ export class SurfaceRefBlockComponent extends BlockComponent<SurfaceRefBlockMode
|
|||||||
);
|
);
|
||||||
} else if (referenceElement instanceof GroupElementModel) {
|
} else if (referenceElement instanceof GroupElementModel) {
|
||||||
_disposable.add(
|
_disposable.add(
|
||||||
edgelessService.surface.elementUpdated.on(({ id, oldValues }) => {
|
surfaceModel.elementUpdated.on(({ id, oldValues }) => {
|
||||||
if (
|
if (
|
||||||
id === referenceId &&
|
id === referenceId &&
|
||||||
oldValues.xywh !== referenceElement.xywh
|
oldValues.xywh !== referenceElement.xywh
|
||||||
@@ -500,13 +508,10 @@ export class SurfaceRefBlockComponent extends BlockComponent<SurfaceRefBlockMode
|
|||||||
|
|
||||||
if (!previewEditorHost) return;
|
if (!previewEditorHost) return;
|
||||||
|
|
||||||
const edgelessService = previewEditorHost.std.getService(
|
const gfx = previewEditorHost.std.get(GfxControllerIdentifier);
|
||||||
'affine:page'
|
const viewport = gfx.viewport;
|
||||||
) as EdgelessRootService;
|
|
||||||
|
|
||||||
edgelessService.viewport.setViewportByBound(
|
viewport.setViewportByBound(Bound.deserialize(this._referenceXYWH));
|
||||||
Bound.deserialize(this._referenceXYWH)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private _renderMask(
|
private _renderMask(
|
||||||
3
blocksuite/affine/block-surface-ref/src/types.ts
Normal file
3
blocksuite/affine/block-surface-ref/src/types.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export interface EdgelessPreviewer {
|
||||||
|
editorViewportSelector: string;
|
||||||
|
}
|
||||||
32
blocksuite/affine/block-surface-ref/tsconfig.json
Normal file
32
blocksuite/affine/block-surface-ref/tsconfig.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": "./src/",
|
||||||
|
"outDir": "./dist/",
|
||||||
|
"noEmit": false
|
||||||
|
},
|
||||||
|
"include": ["./src"],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "../../framework/global"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../../framework/store"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../../framework/block-std"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../../framework/inline"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../model"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../components"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../shared"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
"@blocksuite/affine-block-note": "workspace:*",
|
"@blocksuite/affine-block-note": "workspace:*",
|
||||||
"@blocksuite/affine-block-paragraph": "workspace:*",
|
"@blocksuite/affine-block-paragraph": "workspace:*",
|
||||||
"@blocksuite/affine-block-surface": "workspace:*",
|
"@blocksuite/affine-block-surface": "workspace:*",
|
||||||
|
"@blocksuite/affine-block-surface-ref": "workspace:*",
|
||||||
"@blocksuite/affine-components": "workspace:*",
|
"@blocksuite/affine-components": "workspace:*",
|
||||||
"@blocksuite/affine-model": "workspace:*",
|
"@blocksuite/affine-model": "workspace:*",
|
||||||
"@blocksuite/affine-shared": "workspace:*",
|
"@blocksuite/affine-shared": "workspace:*",
|
||||||
|
|||||||
@@ -17,6 +17,10 @@ import {
|
|||||||
EdgelessSurfaceBlockSpec,
|
EdgelessSurfaceBlockSpec,
|
||||||
PageSurfaceBlockSpec,
|
PageSurfaceBlockSpec,
|
||||||
} from '@blocksuite/affine-block-surface';
|
} from '@blocksuite/affine-block-surface';
|
||||||
|
import {
|
||||||
|
EdgelessSurfaceRefBlockSpec,
|
||||||
|
PageSurfaceRefBlockSpec,
|
||||||
|
} from '@blocksuite/affine-block-surface-ref';
|
||||||
import {
|
import {
|
||||||
RefNodeSlotsExtension,
|
RefNodeSlotsExtension,
|
||||||
RichTextExtensions,
|
RichTextExtensions,
|
||||||
@@ -31,10 +35,6 @@ import type { ExtensionType } from '@blocksuite/block-std';
|
|||||||
import { AdapterFactoryExtensions } from '../_common/adapters/extension.js';
|
import { AdapterFactoryExtensions } from '../_common/adapters/extension.js';
|
||||||
import { DataViewBlockSpec } from '../data-view-block/data-view-spec.js';
|
import { DataViewBlockSpec } from '../data-view-block/data-view-spec.js';
|
||||||
import { DatabaseBlockSpec } from '../database-block/database-spec.js';
|
import { DatabaseBlockSpec } from '../database-block/database-spec.js';
|
||||||
import {
|
|
||||||
EdgelessSurfaceRefBlockSpec,
|
|
||||||
PageSurfaceRefBlockSpec,
|
|
||||||
} from '../surface-ref-block/surface-ref-spec.js';
|
|
||||||
|
|
||||||
export const CommonBlockSpecs: ExtensionType[] = [
|
export const CommonBlockSpecs: ExtensionType[] = [
|
||||||
DocDisplayMetaService,
|
DocDisplayMetaService,
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import type { NoteBlockComponent } from '@blocksuite/affine-block-note';
|
|
||||||
import { CaptionedBlockComponent } from '@blocksuite/affine-components/caption';
|
import { CaptionedBlockComponent } from '@blocksuite/affine-components/caption';
|
||||||
import {
|
import {
|
||||||
menu,
|
menu,
|
||||||
@@ -17,7 +16,10 @@ import {
|
|||||||
TelemetryProvider,
|
TelemetryProvider,
|
||||||
} from '@blocksuite/affine-shared/services';
|
} from '@blocksuite/affine-shared/services';
|
||||||
import { getDropResult } from '@blocksuite/affine-widget-drag-handle';
|
import { getDropResult } from '@blocksuite/affine-widget-drag-handle';
|
||||||
import { RANGE_SYNC_EXCLUDE_ATTR } from '@blocksuite/block-std';
|
import {
|
||||||
|
type BlockComponent,
|
||||||
|
RANGE_SYNC_EXCLUDE_ATTR,
|
||||||
|
} from '@blocksuite/block-std';
|
||||||
import {
|
import {
|
||||||
createRecordDetail,
|
createRecordDetail,
|
||||||
createUniComponentFromWebComponent,
|
createUniComponentFromWebComponent,
|
||||||
@@ -46,7 +48,6 @@ import { autoUpdate } from '@floating-ui/dom';
|
|||||||
import { computed, signal } from '@preact/signals-core';
|
import { computed, signal } from '@preact/signals-core';
|
||||||
import { css, html, nothing, unsafeCSS } from 'lit';
|
import { css, html, nothing, unsafeCSS } from 'lit';
|
||||||
|
|
||||||
import { EdgelessRootBlockComponent } from '../root-block/index.js';
|
|
||||||
import { popSideDetail } from './components/layout.js';
|
import { popSideDetail } from './components/layout.js';
|
||||||
import type { DatabaseOptionsConfig } from './config.js';
|
import type { DatabaseOptionsConfig } from './config.js';
|
||||||
import { HostContextKey } from './context/host-context.js';
|
import { HostContextKey } from './context/host-context.js';
|
||||||
@@ -351,9 +352,8 @@ export class DatabaseBlockComponent extends CaptionedBlockComponent<
|
|||||||
}
|
}
|
||||||
|
|
||||||
override get topContenteditableElement() {
|
override get topContenteditableElement() {
|
||||||
if (this.rootComponent instanceof EdgelessRootBlockComponent) {
|
if (this.std.get(DocModeProvider).getEditorMode() === 'edgeless') {
|
||||||
const note = this.closest<NoteBlockComponent>(NOTE_SELECTOR);
|
return this.closest<BlockComponent>(NOTE_SELECTOR);
|
||||||
return note;
|
|
||||||
}
|
}
|
||||||
return this.rootComponent;
|
return this.rootComponent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { effects as blockListEffects } from '@blocksuite/affine-block-list/effec
|
|||||||
import { effects as blockNoteEffects } from '@blocksuite/affine-block-note/effects';
|
import { effects as blockNoteEffects } from '@blocksuite/affine-block-note/effects';
|
||||||
import { effects as blockParagraphEffects } from '@blocksuite/affine-block-paragraph/effects';
|
import { effects as blockParagraphEffects } from '@blocksuite/affine-block-paragraph/effects';
|
||||||
import { effects as blockSurfaceEffects } from '@blocksuite/affine-block-surface/effects';
|
import { effects as blockSurfaceEffects } from '@blocksuite/affine-block-surface/effects';
|
||||||
|
import { effects as blockSurfaceRefEffects } from '@blocksuite/affine-block-surface-ref/effects';
|
||||||
import { effects as componentAiItemEffects } from '@blocksuite/affine-components/ai-item';
|
import { effects as componentAiItemEffects } from '@blocksuite/affine-components/ai-item';
|
||||||
import { BlockSelection } from '@blocksuite/affine-components/block-selection';
|
import { BlockSelection } from '@blocksuite/affine-components/block-selection';
|
||||||
import { BlockZeroWidth } from '@blocksuite/affine-components/block-zero-width';
|
import { BlockZeroWidth } from '@blocksuite/affine-components/block-zero-width';
|
||||||
@@ -209,13 +210,6 @@ import {
|
|||||||
MindmapSurfaceBlock,
|
MindmapSurfaceBlock,
|
||||||
MiniMindmapPreview,
|
MiniMindmapPreview,
|
||||||
} from './surface-block/mini-mindmap/index.js';
|
} from './surface-block/mini-mindmap/index.js';
|
||||||
import { effects as blockSurfaceRefEffects } from './surface-ref-block/effects.js';
|
|
||||||
import {
|
|
||||||
EdgelessSurfaceRefBlockComponent,
|
|
||||||
SurfaceRefBlockComponent,
|
|
||||||
} from './surface-ref-block/index.js';
|
|
||||||
import { SurfaceRefGenericBlockPortal } from './surface-ref-block/portal/generic-block.js';
|
|
||||||
import { SurfaceRefNotePortal } from './surface-ref-block/portal/note.js';
|
|
||||||
|
|
||||||
export function effects() {
|
export function effects() {
|
||||||
registerSpecs();
|
registerSpecs();
|
||||||
@@ -286,10 +280,6 @@ export function effects() {
|
|||||||
'edgeless-copilot-toolbar-entry',
|
'edgeless-copilot-toolbar-entry',
|
||||||
EdgelessCopilotToolbarEntry
|
EdgelessCopilotToolbarEntry
|
||||||
);
|
);
|
||||||
customElements.define(
|
|
||||||
'affine-edgeless-surface-ref',
|
|
||||||
EdgelessSurfaceRefBlockComponent
|
|
||||||
);
|
|
||||||
customElements.define(
|
customElements.define(
|
||||||
'edgeless-color-custom-button',
|
'edgeless-color-custom-button',
|
||||||
EdgelessColorCustomButton
|
EdgelessColorCustomButton
|
||||||
@@ -302,7 +292,6 @@ export function effects() {
|
|||||||
);
|
);
|
||||||
customElements.define('affine-custom-modal', AffineCustomModal);
|
customElements.define('affine-custom-modal', AffineCustomModal);
|
||||||
customElements.define('affine-database', DatabaseBlockComponent);
|
customElements.define('affine-database', DatabaseBlockComponent);
|
||||||
customElements.define('affine-surface-ref', SurfaceRefBlockComponent);
|
|
||||||
customElements.define('affine-slash-menu', SlashMenu);
|
customElements.define('affine-slash-menu', SlashMenu);
|
||||||
customElements.define('inner-slash-menu', InnerSlashMenu);
|
customElements.define('inner-slash-menu', InnerSlashMenu);
|
||||||
customElements.define('generating-placeholder', GeneratingPlaceholder);
|
customElements.define('generating-placeholder', GeneratingPlaceholder);
|
||||||
@@ -321,10 +310,6 @@ export function effects() {
|
|||||||
customElements.define('icon-button', IconButton);
|
customElements.define('icon-button', IconButton);
|
||||||
customElements.define('loader-element', Loader);
|
customElements.define('loader-element', Loader);
|
||||||
customElements.define('edgeless-brush-menu', EdgelessBrushMenu);
|
customElements.define('edgeless-brush-menu', EdgelessBrushMenu);
|
||||||
customElements.define(
|
|
||||||
'surface-ref-generic-block-portal',
|
|
||||||
SurfaceRefGenericBlockPortal
|
|
||||||
);
|
|
||||||
customElements.define('edgeless-brush-tool-button', EdgelessBrushToolButton);
|
customElements.define('edgeless-brush-tool-button', EdgelessBrushToolButton);
|
||||||
customElements.define(
|
customElements.define(
|
||||||
'edgeless-connector-tool-button',
|
'edgeless-connector-tool-button',
|
||||||
@@ -334,7 +319,6 @@ export function effects() {
|
|||||||
'edgeless-default-tool-button',
|
'edgeless-default-tool-button',
|
||||||
EdgelessDefaultToolButton
|
EdgelessDefaultToolButton
|
||||||
);
|
);
|
||||||
customElements.define('surface-ref-note-portal', SurfaceRefNotePortal);
|
|
||||||
customElements.define('edgeless-connector-menu', EdgelessConnectorMenu);
|
customElements.define('edgeless-connector-menu', EdgelessConnectorMenu);
|
||||||
customElements.define('smooth-corner', SmoothCorner);
|
customElements.define('smooth-corner', SmoothCorner);
|
||||||
customElements.define('toggle-switch', ToggleSwitch);
|
customElements.define('toggle-switch', ToggleSwitch);
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ export {
|
|||||||
MindmapSurfaceBlock,
|
MindmapSurfaceBlock,
|
||||||
MiniMindmapPreview,
|
MiniMindmapPreview,
|
||||||
} from './surface-block/mini-mindmap/index.js';
|
} from './surface-block/mini-mindmap/index.js';
|
||||||
export * from './surface-ref-block/index.js';
|
|
||||||
export * from '@blocksuite/affine-block-attachment';
|
export * from '@blocksuite/affine-block-attachment';
|
||||||
export * from '@blocksuite/affine-block-bookmark';
|
export * from '@blocksuite/affine-block-bookmark';
|
||||||
export * from '@blocksuite/affine-block-code';
|
export * from '@blocksuite/affine-block-code';
|
||||||
@@ -53,6 +52,7 @@ export * from '@blocksuite/affine-block-list';
|
|||||||
export * from '@blocksuite/affine-block-note';
|
export * from '@blocksuite/affine-block-note';
|
||||||
export * from '@blocksuite/affine-block-paragraph';
|
export * from '@blocksuite/affine-block-paragraph';
|
||||||
export * from '@blocksuite/affine-block-surface';
|
export * from '@blocksuite/affine-block-surface';
|
||||||
|
export * from '@blocksuite/affine-block-surface-ref';
|
||||||
export {
|
export {
|
||||||
type AIError,
|
type AIError,
|
||||||
type AIItemConfig,
|
type AIItemConfig,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type {
|
|||||||
SurfaceBlockComponent,
|
SurfaceBlockComponent,
|
||||||
SurfaceBlockModel,
|
SurfaceBlockModel,
|
||||||
} from '@blocksuite/affine-block-surface';
|
} from '@blocksuite/affine-block-surface';
|
||||||
|
import type { EdgelessPreviewer } from '@blocksuite/affine-block-surface-ref';
|
||||||
import type { RootBlockModel } from '@blocksuite/affine-model';
|
import type { RootBlockModel } from '@blocksuite/affine-model';
|
||||||
import {
|
import {
|
||||||
FontLoaderService,
|
FontLoaderService,
|
||||||
@@ -22,11 +23,14 @@ import type { EdgelessRootBlockWidgetName } from '../types.js';
|
|||||||
import type { EdgelessRootService } from './edgeless-root-service.js';
|
import type { EdgelessRootService } from './edgeless-root-service.js';
|
||||||
import { getBackgroundGrid, isCanvasElement } from './utils/query.js';
|
import { getBackgroundGrid, isCanvasElement } from './utils/query.js';
|
||||||
|
|
||||||
export class EdgelessRootPreviewBlockComponent extends BlockComponent<
|
export class EdgelessRootPreviewBlockComponent
|
||||||
|
extends BlockComponent<
|
||||||
RootBlockModel,
|
RootBlockModel,
|
||||||
EdgelessRootService,
|
EdgelessRootService,
|
||||||
EdgelessRootBlockWidgetName
|
EdgelessRootBlockWidgetName
|
||||||
> {
|
>
|
||||||
|
implements EdgelessPreviewer
|
||||||
|
{
|
||||||
static override styles = css`
|
static override styles = css`
|
||||||
affine-edgeless-root-preview {
|
affine-edgeless-root-preview {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
|
import type { SurfaceRefBlockComponent } from '@blocksuite/affine-block-surface-ref';
|
||||||
import { MenuContext } from '@blocksuite/affine-components/toolbar';
|
import { MenuContext } from '@blocksuite/affine-components/toolbar';
|
||||||
|
|
||||||
import type { SurfaceRefBlockComponent } from '../../../surface-ref-block/surface-ref-block.js';
|
|
||||||
|
|
||||||
export class SurfaceRefToolbarContext extends MenuContext {
|
export class SurfaceRefToolbarContext extends MenuContext {
|
||||||
override close = () => {
|
override close = () => {
|
||||||
this.abortController.abort();
|
this.abortController.abort();
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { SurfaceRefBlockComponent } from '@blocksuite/affine-block-surface-ref';
|
||||||
import { HoverController } from '@blocksuite/affine-components/hover';
|
import { HoverController } from '@blocksuite/affine-components/hover';
|
||||||
import {
|
import {
|
||||||
CaptionIcon,
|
CaptionIcon,
|
||||||
@@ -25,7 +26,6 @@ import { ifDefined } from 'lit/directives/if-defined.js';
|
|||||||
import { join } from 'lit/directives/join.js';
|
import { join } from 'lit/directives/join.js';
|
||||||
import { repeat } from 'lit/directives/repeat.js';
|
import { repeat } from 'lit/directives/repeat.js';
|
||||||
|
|
||||||
import type { SurfaceRefBlockComponent } from '../../../surface-ref-block/index.js';
|
|
||||||
import { BUILT_IN_GROUPS } from './config.js';
|
import { BUILT_IN_GROUPS } from './config.js';
|
||||||
import { SurfaceRefToolbarContext } from './context.js';
|
import { SurfaceRefToolbarContext } from './context.js';
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import type { CanvasRenderer } from '@blocksuite/affine-block-surface';
|
import type { CanvasRenderer } from '@blocksuite/affine-block-surface';
|
||||||
|
import type { SurfaceRefBlockComponent } from '@blocksuite/affine-block-surface-ref';
|
||||||
import { isTopLevelBlock } from '@blocksuite/affine-shared/utils';
|
import { isTopLevelBlock } from '@blocksuite/affine-shared/utils';
|
||||||
import type { EditorHost } from '@blocksuite/block-std';
|
import type { EditorHost } from '@blocksuite/block-std';
|
||||||
import { assertExists, Bound } from '@blocksuite/global/utils';
|
import { assertExists, Bound } from '@blocksuite/global/utils';
|
||||||
|
|
||||||
import { ExportManager } from '../../../_common/export-manager/export-manager.js';
|
import { ExportManager } from '../../../_common/export-manager/export-manager.js';
|
||||||
import type { SurfaceRefBlockComponent } from '../../../surface-ref-block/surface-ref-block.js';
|
|
||||||
|
|
||||||
export const edgelessToBlob = async (
|
export const edgelessToBlob = async (
|
||||||
host: EditorHost,
|
host: EditorHost,
|
||||||
|
|||||||
@@ -65,10 +65,13 @@
|
|||||||
"path": "../affine/block-divider"
|
"path": "../affine/block-divider"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../affine/data-view"
|
"path": "../affine/block-surface"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../affine/block-surface"
|
"path": "../affine/block-surface-ref"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../affine/data-view"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../affine/widget-scroll-anchoring"
|
"path": "../affine/widget-scroll-anchoring"
|
||||||
|
|||||||
@@ -190,6 +190,20 @@ export const PackageList = [
|
|||||||
'blocksuite/framework/store',
|
'blocksuite/framework/store',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
location: 'blocksuite/affine/block-surface-ref',
|
||||||
|
name: '@blocksuite/affine-block-surface-ref',
|
||||||
|
workspaceDependencies: [
|
||||||
|
'blocksuite/affine/block-surface',
|
||||||
|
'blocksuite/affine/components',
|
||||||
|
'blocksuite/affine/model',
|
||||||
|
'blocksuite/affine/shared',
|
||||||
|
'blocksuite/framework/block-std',
|
||||||
|
'blocksuite/framework/global',
|
||||||
|
'blocksuite/framework/inline',
|
||||||
|
'blocksuite/framework/store',
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
location: 'blocksuite/affine/components',
|
location: 'blocksuite/affine/components',
|
||||||
name: '@blocksuite/affine-components',
|
name: '@blocksuite/affine-components',
|
||||||
@@ -288,6 +302,7 @@ export const PackageList = [
|
|||||||
'blocksuite/affine/block-note',
|
'blocksuite/affine/block-note',
|
||||||
'blocksuite/affine/block-paragraph',
|
'blocksuite/affine/block-paragraph',
|
||||||
'blocksuite/affine/block-surface',
|
'blocksuite/affine/block-surface',
|
||||||
|
'blocksuite/affine/block-surface-ref',
|
||||||
'blocksuite/affine/components',
|
'blocksuite/affine/components',
|
||||||
'blocksuite/affine/model',
|
'blocksuite/affine/model',
|
||||||
'blocksuite/affine/shared',
|
'blocksuite/affine/shared',
|
||||||
@@ -638,6 +653,7 @@ export type PackageName =
|
|||||||
| '@blocksuite/affine-block-note'
|
| '@blocksuite/affine-block-note'
|
||||||
| '@blocksuite/affine-block-paragraph'
|
| '@blocksuite/affine-block-paragraph'
|
||||||
| '@blocksuite/affine-block-surface'
|
| '@blocksuite/affine-block-surface'
|
||||||
|
| '@blocksuite/affine-block-surface-ref'
|
||||||
| '@blocksuite/affine-components'
|
| '@blocksuite/affine-components'
|
||||||
| '@blocksuite/data-view'
|
| '@blocksuite/data-view'
|
||||||
| '@blocksuite/affine-model'
|
| '@blocksuite/affine-model'
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
{ "path": "./blocksuite/affine/block-note" },
|
{ "path": "./blocksuite/affine/block-note" },
|
||||||
{ "path": "./blocksuite/affine/block-paragraph" },
|
{ "path": "./blocksuite/affine/block-paragraph" },
|
||||||
{ "path": "./blocksuite/affine/block-surface" },
|
{ "path": "./blocksuite/affine/block-surface" },
|
||||||
|
{ "path": "./blocksuite/affine/block-surface-ref" },
|
||||||
{ "path": "./blocksuite/affine/components" },
|
{ "path": "./blocksuite/affine/components" },
|
||||||
{ "path": "./blocksuite/affine/data-view" },
|
{ "path": "./blocksuite/affine/data-view" },
|
||||||
{ "path": "./blocksuite/affine/model" },
|
{ "path": "./blocksuite/affine/model" },
|
||||||
|
|||||||
26
yarn.lock
26
yarn.lock
@@ -3538,6 +3538,31 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@blocksuite/affine-block-surface-ref@workspace:*, @blocksuite/affine-block-surface-ref@workspace:blocksuite/affine/block-surface-ref":
|
||||||
|
version: 0.0.0-use.local
|
||||||
|
resolution: "@blocksuite/affine-block-surface-ref@workspace:blocksuite/affine/block-surface-ref"
|
||||||
|
dependencies:
|
||||||
|
"@blocksuite/affine-block-surface": "workspace:*"
|
||||||
|
"@blocksuite/affine-components": "workspace:*"
|
||||||
|
"@blocksuite/affine-model": "workspace:*"
|
||||||
|
"@blocksuite/affine-shared": "workspace:*"
|
||||||
|
"@blocksuite/block-std": "workspace:*"
|
||||||
|
"@blocksuite/global": "workspace:*"
|
||||||
|
"@blocksuite/inline": "workspace:*"
|
||||||
|
"@blocksuite/store": "workspace:*"
|
||||||
|
"@lit/context": "npm:^1.1.2"
|
||||||
|
"@preact/signals-core": "npm:^1.8.0"
|
||||||
|
"@toeverything/theme": "npm:^1.1.3"
|
||||||
|
"@types/dompurify": "npm:^3.0.5"
|
||||||
|
"@types/lodash.chunk": "npm:^4.2.9"
|
||||||
|
fractional-indexing: "npm:^3.2.0"
|
||||||
|
lit: "npm:^3.2.0"
|
||||||
|
lodash.chunk: "npm:^4.2.0"
|
||||||
|
nanoid: "npm:^5.0.7"
|
||||||
|
zod: "npm:^3.23.8"
|
||||||
|
languageName: unknown
|
||||||
|
linkType: soft
|
||||||
|
|
||||||
"@blocksuite/affine-block-surface@workspace:*, @blocksuite/affine-block-surface@workspace:blocksuite/affine/block-surface":
|
"@blocksuite/affine-block-surface@workspace:*, @blocksuite/affine-block-surface@workspace:blocksuite/affine/block-surface":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@blocksuite/affine-block-surface@workspace:blocksuite/affine/block-surface"
|
resolution: "@blocksuite/affine-block-surface@workspace:blocksuite/affine/block-surface"
|
||||||
@@ -3738,6 +3763,7 @@ __metadata:
|
|||||||
"@blocksuite/affine-block-note": "workspace:*"
|
"@blocksuite/affine-block-note": "workspace:*"
|
||||||
"@blocksuite/affine-block-paragraph": "workspace:*"
|
"@blocksuite/affine-block-paragraph": "workspace:*"
|
||||||
"@blocksuite/affine-block-surface": "workspace:*"
|
"@blocksuite/affine-block-surface": "workspace:*"
|
||||||
|
"@blocksuite/affine-block-surface-ref": "workspace:*"
|
||||||
"@blocksuite/affine-components": "workspace:*"
|
"@blocksuite/affine-components": "workspace:*"
|
||||||
"@blocksuite/affine-model": "workspace:*"
|
"@blocksuite/affine-model": "workspace:*"
|
||||||
"@blocksuite/affine-shared": "workspace:*"
|
"@blocksuite/affine-shared": "workspace:*"
|
||||||
|
|||||||
Reference in New Issue
Block a user