diff --git a/blocksuite/blocks/src/_common/export-manager/export-manager.ts b/blocksuite/blocks/src/_common/export-manager/export-manager.ts index a22f4f522..e63db5515 100644 --- a/blocksuite/blocks/src/_common/export-manager/export-manager.ts +++ b/blocksuite/blocks/src/_common/export-manager/export-manager.ts @@ -21,6 +21,7 @@ import { type ExtensionType, StdIdentifier, } from '@blocksuite/block-std'; +import type { GfxBlockElementModel } from '@blocksuite/block-std/gfx'; import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions'; import type { IBound } from '@blocksuite/global/utils'; import { Bound } from '@blocksuite/global/utils'; @@ -30,14 +31,13 @@ import { getBlockComponentByModel, getRootByEditorHost, } from '../../_common/utils/index.js'; -import type { GfxBlockModel } from '../../root-block/edgeless/block-model.js'; import type { EdgelessRootBlockComponent } from '../../root-block/edgeless/edgeless-root-block.js'; import { getBlocksInFrameBound } from '../../root-block/edgeless/frame-manager.js'; import { xywhArrayToObject } from '../../root-block/edgeless/utils/convert.js'; import { getBackgroundGrid } from '../../root-block/edgeless/utils/query.js'; import { FileExporter } from './file-exporter.js'; -// eslint-disable-next-line +// oxlint-disable-next-line typescript/consistent-type-imports type Html2CanvasFunction = typeof import('html2canvas').default; export type ExportOptions = { @@ -408,7 +408,7 @@ export class ExportManager { surfaceRenderer: CanvasRenderer, bound: IBound, edgeless?: EdgelessRootBlockComponent, - nodes?: GfxBlockModel[], + nodes?: GfxBlockElementModel[], surfaces?: BlockSuite.SurfaceElementModel[], edgelessBackground?: { zoom: number; diff --git a/blocksuite/blocks/src/_common/types.ts b/blocksuite/blocks/src/_common/types.ts index b79cc6ab6..34eca41b3 100644 --- a/blocksuite/blocks/src/_common/types.ts +++ b/blocksuite/blocks/src/_common/types.ts @@ -23,6 +23,3 @@ export type Connectable = Exclude< BlockSuite.EdgelessModel, ConnectorElementModel | BrushElementModel | GroupElementModel >; - -export type { EmbedCardStyle } from '@blocksuite/affine-model'; -export * from '@blocksuite/affine-shared/types'; diff --git a/blocksuite/blocks/src/_common/utils/index.ts b/blocksuite/blocks/src/_common/utils/index.ts index 5ebcc2aff..8e95d3152 100644 --- a/blocksuite/blocks/src/_common/utils/index.ts +++ b/blocksuite/blocks/src/_common/utils/index.ts @@ -1,16 +1,2 @@ -// Compat with SSR export * from '../types.js'; export * from './query.js'; -export { - createButtonPopper, - getBlockProps, - getImageFilesFromLocal, - isMiddleButtonPressed, - isRightButtonPressed, - isValidUrl, - matchFlavours, - on, - once, - openFileOrFiles, - requestThrottledConnectedFrame, -} from '@blocksuite/affine-shared/utils'; diff --git a/blocksuite/blocks/src/index.ts b/blocksuite/blocks/src/index.ts index 8ec27a368..9c9e992b1 100644 --- a/blocksuite/blocks/src/index.ts +++ b/blocksuite/blocks/src/index.ts @@ -1,8 +1,8 @@ /* oxlint-disable @typescript-eslint/triple-slash-reference */ /// +import { matchFlavours } from '@blocksuite/affine-shared/utils'; import { deserializeXYWH, Point } from '@blocksuite/global/utils'; -import { matchFlavours } from './_common/utils/index.js'; import { splitElements } from './root-block/edgeless/utils/clipboard-utils.js'; import { isCanvasElement } from './root-block/edgeless/utils/query.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/block-model.ts b/blocksuite/blocks/src/root-block/edgeless/block-model.ts deleted file mode 100644 index b2ac0bddd..000000000 --- a/blocksuite/blocks/src/root-block/edgeless/block-model.ts +++ /dev/null @@ -1 +0,0 @@ -export { GfxBlockElementModel as GfxBlockModel } from '@blocksuite/block-std/gfx'; diff --git a/blocksuite/blocks/src/root-block/edgeless/components/panel/card-style-panel.ts b/blocksuite/blocks/src/root-block/edgeless/components/panel/card-style-panel.ts index 2a803b542..8c9226814 100644 --- a/blocksuite/blocks/src/root-block/edgeless/components/panel/card-style-panel.ts +++ b/blocksuite/blocks/src/root-block/edgeless/components/panel/card-style-panel.ts @@ -1,11 +1,10 @@ +import type { EmbedCardStyle } from '@blocksuite/affine-model'; import { WithDisposable } from '@blocksuite/global/utils'; import { css, html, LitElement, nothing, type TemplateResult } from 'lit'; import { property } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { repeat } from 'lit/directives/repeat.js'; -import type { EmbedCardStyle } from '../../../../_common/types.js'; - export class CardStylePanel extends WithDisposable(LitElement) { static override styles = css` :host { diff --git a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-dense-menu.ts b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-dense-menu.ts index 5d07ab53f..0942226ba 100644 --- a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-dense-menu.ts +++ b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-dense-menu.ts @@ -3,8 +3,8 @@ import { LassoFreeHandIcon, LassoPolygonalIcon, } from '@blocksuite/affine-components/icons'; +import { LassoMode } from '@blocksuite/affine-shared/types'; -import { LassoMode } from '../../../../../_common/types.js'; import type { DenseMenuBuilder } from '../common/type.js'; export const buildLassoDenseMenu: DenseMenuBuilder = edgeless => { diff --git a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-tool-button.ts b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-tool-button.ts index 9c266ede2..e6d788f62 100644 --- a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-tool-button.ts +++ b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/lasso/lasso-tool-button.ts @@ -3,13 +3,13 @@ import { LassoFreeHandIcon, LassoPolygonalIcon, } from '@blocksuite/affine-components/icons'; +import { LassoMode } from '@blocksuite/affine-shared/types'; import { WithDisposable } from '@blocksuite/global/utils'; import { effect } from '@preact/signals-core'; import { css, html, LitElement } from 'lit'; import { query, state } from 'lit/decorators.js'; import { styleMap } from 'lit/directives/style-map.js'; -import { LassoMode } from '../../../../../_common/types.js'; import { getTooltipWithShortcut } from '../../utils.js'; import { QuickToolMixin } from '../mixins/quick-tool.mixin.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu-config.ts b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu-config.ts index 2e8104f2e..c0212dbb1 100644 --- a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu-config.ts +++ b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu-config.ts @@ -13,10 +13,9 @@ import { QuoteIcon, TextIcon, } from '@blocksuite/affine-components/icons'; +import type { NoteChildrenFlavour } from '@blocksuite/affine-shared/types'; import type { TemplateResult } from 'lit'; -import type { NoteChildrenFlavour } from '../../../../../_common/utils/index.js'; - export const BUTTON_GROUP_LENGTH = 10; export type NoteMenuItem = { diff --git a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu.ts b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu.ts index a7a26a2b2..7b426cd6d 100644 --- a/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu.ts +++ b/blocksuite/blocks/src/root-block/edgeless/components/toolbar/note/note-menu.ts @@ -3,17 +3,17 @@ import { addImages, LoadedImageIcon } from '@blocksuite/affine-block-image'; import { AttachmentIcon, LinkIcon } from '@blocksuite/affine-components/icons'; import { MAX_IMAGE_WIDTH } from '@blocksuite/affine-model'; import { TelemetryProvider } from '@blocksuite/affine-shared/services'; +import type { NoteChildrenFlavour } from '@blocksuite/affine-shared/types'; +import { + getImageFilesFromLocal, + openFileOrFiles, +} from '@blocksuite/affine-shared/utils'; import type { GfxToolsFullOptionValue } from '@blocksuite/block-std/gfx'; import { effect } from '@preact/signals-core'; import { css, html, LitElement } from 'lit'; import { property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { - getImageFilesFromLocal, - type NoteChildrenFlavour, - openFileOrFiles, -} from '../../../../../_common/utils/index.js'; import type { NoteToolOption } from '../../../gfx-tool/note-tool.js'; import { getTooltipWithShortcut } from '../../utils.js'; import { EdgelessToolbarToolMixin } from '../mixins/tool.mixin.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/edgeless-keyboard.ts b/blocksuite/blocks/src/root-block/edgeless/edgeless-keyboard.ts index e54af0ca7..4d1585380 100644 --- a/blocksuite/blocks/src/root-block/edgeless/edgeless-keyboard.ts +++ b/blocksuite/blocks/src/root-block/edgeless/edgeless-keyboard.ts @@ -13,8 +13,10 @@ import { EditPropsStore, TelemetryProvider, } from '@blocksuite/affine-shared/services'; +import { LassoMode } from '@blocksuite/affine-shared/types'; import { matchFlavours } from '@blocksuite/affine-shared/utils'; import { + GfxBlockElementModel, type GfxToolsMap, type GfxToolsOption, isGfxGroupCompatibleModel, @@ -27,9 +29,7 @@ import { isElementOutsideViewport, isSingleMindMapNode, } from '../../_common/edgeless/mindmap/index.js'; -import { LassoMode } from '../../_common/types.js'; import { PageKeyboardManager } from '../keyboard/keyboard-manager.js'; -import { GfxBlockModel } from './block-model.js'; import type { EdgelessRootBlockComponent } from './edgeless-root-block.js'; import { CopilotTool } from './gfx-tool/copilot-tool.js'; import { LassoTool } from './gfx-tool/lasso-tool.js'; @@ -115,8 +115,8 @@ export class EdgelessPageKeyboardManager extends PageKeyboardManager { if ( selection.selectedElements.length === 1 && - selection.firstElement instanceof GfxBlockModel && - matchFlavours(selection.firstElement as GfxBlockModel, [ + selection.firstElement instanceof GfxBlockElementModel && + matchFlavours(selection.firstElement as GfxBlockElementModel, [ 'affine:note', ]) ) { diff --git a/blocksuite/blocks/src/root-block/edgeless/edgeless-root-block.ts b/blocksuite/blocks/src/root-block/edgeless/edgeless-root-block.ts index 083868dce..8f42f52ab 100644 --- a/blocksuite/blocks/src/root-block/edgeless/edgeless-root-block.ts +++ b/blocksuite/blocks/src/root-block/edgeless/edgeless-root-block.ts @@ -15,6 +15,7 @@ import { FontLoaderService, ThemeProvider, } from '@blocksuite/affine-shared/services'; +import type { Viewport } from '@blocksuite/affine-shared/types'; import { isTouchPadPinchEvent, requestConnectedFrame, @@ -38,7 +39,6 @@ import { query } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { isSingleMindMapNode } from '../../_common/edgeless/mindmap/index.js'; -import type { Viewport } from '../../_common/utils/index.js'; import type { EdgelessRootBlockWidgetName } from '../types.js'; import { EdgelessClipboardController } from './clipboard/clipboard.js'; import type { EdgelessSelectedRectWidget } from './components/rects/edgeless-selected-rect.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/edgeless-root-preview-block.ts b/blocksuite/blocks/src/root-block/edgeless/edgeless-root-preview-block.ts index 475429c4f..899139404 100644 --- a/blocksuite/blocks/src/root-block/edgeless/edgeless-root-preview-block.ts +++ b/blocksuite/blocks/src/root-block/edgeless/edgeless-root-preview-block.ts @@ -7,6 +7,7 @@ import { FontLoaderService, ThemeProvider, } from '@blocksuite/affine-shared/services'; +import { requestThrottledConnectedFrame } from '@blocksuite/affine-shared/utils'; import type { GfxBlockComponent, SurfaceSelection, @@ -17,7 +18,6 @@ import { assertExists } from '@blocksuite/global/utils'; import { css, html } from 'lit'; import { query, state } from 'lit/decorators.js'; -import { requestThrottledConnectedFrame } from '../../_common/utils/index.js'; import type { EdgelessRootBlockWidgetName } from '../types.js'; import type { EdgelessRootService } from './edgeless-root-service.js'; import { getBackgroundGrid, isCanvasElement } from './utils/query.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/edgeless-root-service.ts b/blocksuite/blocks/src/root-block/edgeless/edgeless-root-service.ts index 5da8b12fe..68e2655c7 100644 --- a/blocksuite/blocks/src/root-block/edgeless/edgeless-root-service.ts +++ b/blocksuite/blocks/src/root-block/edgeless/edgeless-root-service.ts @@ -23,6 +23,7 @@ import type { ReorderingDirection, } from '@blocksuite/block-std/gfx'; import { + GfxBlockElementModel, GfxControllerIdentifier, GfxExtensionIdentifier, isGfxGroupCompatibleModel, @@ -32,7 +33,6 @@ import { Bound, getCommonBound } from '@blocksuite/global/utils'; import { effect } from '@preact/signals-core'; import { RootService } from '../root-service.js'; -import { GfxBlockModel } from './block-model.js'; import type { EdgelessFrameManager } from './frame-manager.js'; import { TemplateJob } from './services/template.js'; import { @@ -60,7 +60,7 @@ export class EdgelessRootService extends RootService implements SurfaceContext { TemplateJob = TemplateJob; - get blocks(): GfxBlockModel[] { + get blocks(): GfxBlockElementModel[] { return this.layer.blocks; } @@ -358,7 +358,7 @@ export class EdgelessRootService extends RootService implements SurfaceContext { }); } - if (el instanceof GfxBlockModel) { + if (el instanceof GfxBlockElementModel) { this.doc.deleteBlock(el); return; } @@ -376,7 +376,7 @@ export class EdgelessRootService extends RootService implements SurfaceContext { const index = this.layer.getReorderedIndex(element, direction); // block should be updated in transaction - if (element instanceof GfxBlockModel) { + if (element instanceof GfxBlockElementModel) { this.doc.transact(() => { element.index = index; }); diff --git a/blocksuite/blocks/src/root-block/edgeless/frame-manager.ts b/blocksuite/blocks/src/root-block/edgeless/frame-manager.ts index 1c671fd54..e95b14a5d 100644 --- a/blocksuite/blocks/src/root-block/edgeless/frame-manager.ts +++ b/blocksuite/blocks/src/root-block/edgeless/frame-manager.ts @@ -3,6 +3,7 @@ import { Overlay } from '@blocksuite/affine-block-surface'; import { generateKeyBetweenV2, getTopElements, + GfxBlockElementModel, type GfxController, GfxExtension, GfxExtensionIdentifier, @@ -22,7 +23,6 @@ import type { Doc } from '@blocksuite/store'; import { DocCollection, Text } from '@blocksuite/store'; import type { FrameBlockModel, NoteBlockModel } from '../../index.js'; -import { GfxBlockModel } from './block-model.js'; import { areSetsEqual } from './utils/misc.js'; import { isFrameBlock } from './utils/query.js'; @@ -254,7 +254,7 @@ export class EdgelessFrameManager extends GfxExtension { doc.slots.blockUpdated.on(payload => { if ( payload.type === 'add' && - payload.model instanceof GfxBlockModel && + payload.model instanceof GfxBlockElementModel && renderableInEdgeless(doc, surfaceModel, payload.model) ) { const frame = this.getFrameFromPoint( @@ -454,7 +454,7 @@ export class EdgelessFrameManager extends GfxExtension { removeFromParentFrame(element: GfxModel) { const parentFrame = this.getParentFrame(element); - // eslint-disable-next-line unicorn/prefer-dom-node-remove + // oxlint-disable-next-line unicorn/prefer-dom-node-remove parentFrame?.removeChild(element); } @@ -499,7 +499,7 @@ export function getBlocksInFrameBound( ).concat( surface.children.filter(ele => { if (ele.id === model.id) return false; - if (ele instanceof GfxBlockModel) { + if (ele instanceof GfxBlockElementModel) { const blockBound = Bound.deserialize(ele.xywh); return fullyContained ? bound.contains(blockBound) diff --git a/blocksuite/blocks/src/root-block/edgeless/gfx-tool/default-tool.ts b/blocksuite/blocks/src/root-block/edgeless/gfx-tool/default-tool.ts index 9e14cd128..c871aa4a4 100644 --- a/blocksuite/blocks/src/root-block/edgeless/gfx-tool/default-tool.ts +++ b/blocksuite/blocks/src/root-block/edgeless/gfx-tool/default-tool.ts @@ -25,6 +25,7 @@ import type { PointerEventState } from '@blocksuite/block-std'; import { BaseTool, getTopElements, + type GfxBlockElementModel, GfxExtensionIdentifier, type GfxModel, type GfxPrimitiveElementModel, @@ -43,7 +44,6 @@ import { import { effect } from '@preact/signals-core'; import { isSingleMindMapNode } from '../../../_common/edgeless/mindmap/index.js'; -import type { GfxBlockModel } from '../block-model.js'; import type { EdgelessRootBlockComponent } from '../edgeless-root-block.js'; import type { EdgelessFrameManager, FrameOverlay } from '../frame-manager.js'; import { prepareCloneData } from '../utils/clone-utils.js'; @@ -116,8 +116,8 @@ export class DefaultTool extends BaseTool { }; private readonly _pendingUpdates = new Map< - GfxBlockModel | GfxPrimitiveElementModel, - Partial + GfxBlockElementModel | GfxPrimitiveElementModel, + Partial >(); private _rafId: number | null = null; @@ -544,8 +544,8 @@ export class DefaultTool extends BaseTool { } private _scheduleUpdate( - element: GfxBlockModel | GfxPrimitiveElementModel, - updates: Partial + element: GfxBlockElementModel | GfxPrimitiveElementModel, + updates: Partial ) { this._pendingUpdates.set(element, updates); diff --git a/blocksuite/blocks/src/root-block/edgeless/gfx-tool/lasso-tool.ts b/blocksuite/blocks/src/root-block/edgeless/gfx-tool/lasso-tool.ts index 99ff427a0..e81e92476 100644 --- a/blocksuite/blocks/src/root-block/edgeless/gfx-tool/lasso-tool.ts +++ b/blocksuite/blocks/src/root-block/edgeless/gfx-tool/lasso-tool.ts @@ -4,6 +4,7 @@ import { type SurfaceBlockComponent, } from '@blocksuite/affine-block-surface'; import { ThemeProvider } from '@blocksuite/affine-shared/services'; +import { LassoMode } from '@blocksuite/affine-shared/types'; import type { PointerEventState } from '@blocksuite/block-std'; import { BaseTool } from '@blocksuite/block-std/gfx'; import type { IPoint, IVec } from '@blocksuite/global/utils'; @@ -17,8 +18,6 @@ import { Vec, } from '@blocksuite/global/utils'; -import { LassoMode } from '../../../_common/types.js'; - class LassoOverlay extends Overlay { d = ''; diff --git a/blocksuite/blocks/src/root-block/edgeless/gfx-tool/note-tool.ts b/blocksuite/blocks/src/root-block/edgeless/gfx-tool/note-tool.ts index 96f462a3c..79017ba99 100644 --- a/blocksuite/blocks/src/root-block/edgeless/gfx-tool/note-tool.ts +++ b/blocksuite/blocks/src/root-block/edgeless/gfx-tool/note-tool.ts @@ -4,15 +4,13 @@ import { DEFAULT_NOTE_WIDTH, } from '@blocksuite/affine-model'; import { EditPropsStore } from '@blocksuite/affine-shared/services'; +import type { NoteChildrenFlavour } from '@blocksuite/affine-shared/types'; import type { PointerEventState } from '@blocksuite/block-std'; import { BaseTool } from '@blocksuite/block-std/gfx'; import { Point } from '@blocksuite/global/utils'; import { effect } from '@preact/signals-core'; -import { - hasClassNameInList, - type NoteChildrenFlavour, -} from '../../../_common/utils/index.js'; +import { hasClassNameInList } from '../../../_common/utils/index.js'; import { addNote } from '../utils/common.js'; import { EXCLUDING_MOUSE_OUT_CLASS_LIST } from '../utils/consts.js'; import { DraggingNoteOverlay, NoteOverlay } from '../utils/tool-overlay.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/index.ts b/blocksuite/blocks/src/root-block/edgeless/index.ts index 2317b93b3..4575aca50 100644 --- a/blocksuite/blocks/src/root-block/edgeless/index.ts +++ b/blocksuite/blocks/src/root-block/edgeless/index.ts @@ -1,4 +1,3 @@ -export { GfxBlockModel as EdgelessBlockModel } from './block-model.js'; export { FramePreview } from './components/frame/frame-preview.js'; export * from './edgeless-root-block.js'; export { EdgelessRootService } from './edgeless-root-service.js'; diff --git a/blocksuite/blocks/src/root-block/edgeless/utils/clone-utils.ts b/blocksuite/blocks/src/root-block/edgeless/utils/clone-utils.ts index 13e5c9b4d..f508016e5 100644 --- a/blocksuite/blocks/src/root-block/edgeless/utils/clone-utils.ts +++ b/blocksuite/blocks/src/root-block/edgeless/utils/clone-utils.ts @@ -13,14 +13,13 @@ import { import type { BlockStdScope } from '@blocksuite/block-std'; import { getTopElements, + GfxBlockElementModel, type GfxModel, isGfxGroupCompatibleModel, type SerializedElement, } from '@blocksuite/block-std/gfx'; import { type BlockSnapshot, Job } from '@blocksuite/store'; -import { GfxBlockModel } from '../block-model.js'; - /** * return all elements in the tree of the elements */ @@ -55,7 +54,7 @@ export function serializeElement( elements: GfxModel[], job: Job ) { - if (element instanceof GfxBlockModel) { + if (element instanceof GfxBlockElementModel) { const snapshot = job.blockToSnapshot(element); if (!snapshot) { return; diff --git a/blocksuite/blocks/src/root-block/edgeless/utils/convert.ts b/blocksuite/blocks/src/root-block/edgeless/utils/convert.ts index fbceda3ce..91d2affac 100644 --- a/blocksuite/blocks/src/root-block/edgeless/utils/convert.ts +++ b/blocksuite/blocks/src/root-block/edgeless/utils/convert.ts @@ -1,8 +1,7 @@ +import type { GfxBlockElementModel } from '@blocksuite/block-std/gfx'; import { deserializeXYWH } from '@blocksuite/global/utils'; -import type { GfxBlockModel } from '../block-model.js'; - -export function xywhArrayToObject(element: GfxBlockModel) { +export function xywhArrayToObject(element: GfxBlockElementModel) { const [x, y, w, h] = deserializeXYWH(element.xywh); return { x, y, w, h }; } diff --git a/blocksuite/blocks/src/root-block/edgeless/utils/query.ts b/blocksuite/blocks/src/root-block/edgeless/utils/query.ts index f3bdd7266..7ed78c267 100644 --- a/blocksuite/blocks/src/root-block/edgeless/utils/query.ts +++ b/blocksuite/blocks/src/root-block/edgeless/utils/query.ts @@ -25,6 +25,7 @@ import { TextElementModel, } from '@blocksuite/affine-model'; import type { + GfxBlockElementModel, GfxModel, GfxPrimitiveElementModel, GfxToolsFullOptionValue, @@ -39,20 +40,19 @@ import { import type { BlockModel } from '@blocksuite/store'; import type { Connectable } from '../../../_common/utils/index.js'; -import type { GfxBlockModel } from '../block-model.js'; import { getElementsWithoutGroup } from './group.js'; const { clamp } = CommonUtils; export function isMindmapNode( - element: GfxBlockModel | BlockSuite.EdgelessModel | null + element: GfxBlockElementModel | BlockSuite.EdgelessModel | null ) { return element?.group instanceof MindmapElementModel; } export function isTopLevelBlock( selectable: BlockModel | BlockSuite.EdgelessModel | null -): selectable is GfxBlockModel { +): selectable is GfxBlockElementModel { return !!selectable && 'flavour' in selectable; } diff --git a/blocksuite/blocks/src/root-block/page/page-root-service.ts b/blocksuite/blocks/src/root-block/page/page-root-service.ts index 6b70c343d..571e47d53 100644 --- a/blocksuite/blocks/src/root-block/page/page-root-service.ts +++ b/blocksuite/blocks/src/root-block/page/page-root-service.ts @@ -1,7 +1,7 @@ import { RootBlockSchema } from '@blocksuite/affine-model'; +import type { Viewport } from '@blocksuite/affine-shared/types'; import { Slot } from '@blocksuite/store'; -import type { Viewport } from '../../_common/utils/index.js'; import { RootService } from '../root-service.js'; export class PageRootService extends RootService { diff --git a/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-attachment-button.ts b/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-attachment-button.ts index 88da0234d..7f95ed668 100644 --- a/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-attachment-button.ts +++ b/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-attachment-button.ts @@ -9,7 +9,10 @@ import { PaletteIcon, } from '@blocksuite/affine-components/icons'; import { renderToolbarSeparator } from '@blocksuite/affine-components/toolbar'; -import type { AttachmentBlockModel } from '@blocksuite/affine-model'; +import type { + AttachmentBlockModel, + EmbedCardStyle, +} from '@blocksuite/affine-model'; import { EMBED_CARD_HEIGHT, EMBED_CARD_WIDTH, @@ -21,7 +24,6 @@ import { html, LitElement, nothing } from 'lit'; import { property } from 'lit/decorators.js'; import { join } from 'lit/directives/join.js'; -import type { EmbedCardStyle } from '../../../_common/types.js'; import type { EdgelessRootBlockComponent } from '../../edgeless/edgeless-root-block.js'; export class EdgelessChangeAttachmentButton extends WithDisposable(LitElement) { diff --git a/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-embed-card-button.ts b/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-embed-card-button.ts index 018e4250d..9fe18a748 100644 --- a/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-embed-card-button.ts +++ b/blocksuite/blocks/src/root-block/widgets/element-toolbar/change-embed-card-button.ts @@ -28,7 +28,11 @@ import { type MenuItem, renderToolbarSeparator, } from '@blocksuite/affine-components/toolbar'; -import { type AliasInfo, BookmarkStyles } from '@blocksuite/affine-model'; +import { + type AliasInfo, + BookmarkStyles, + type EmbedCardStyle, +} from '@blocksuite/affine-model'; import { EMBED_CARD_HEIGHT, EMBED_CARD_WIDTH, @@ -52,7 +56,6 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { join } from 'lit/directives/join.js'; import { repeat } from 'lit/directives/repeat.js'; -import type { EmbedCardStyle } from '../../../_common/types.js'; import type { EdgelessRootBlockComponent } from '../../edgeless/edgeless-root-block.js'; import { isBookmarkBlock, diff --git a/blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/config.ts b/blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/config.ts index d88796814..065994e31 100644 --- a/blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/config.ts +++ b/blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/config.ts @@ -30,15 +30,15 @@ import { ResetIcon, } from '@blocksuite/icons/lit'; -import { - createLinkedDocFromEdgelessElements, - createLinkedDocFromNote, -} from '../../../../_common/utils/render-linked-doc.js'; import { duplicate } from '../../../edgeless/utils/clipboard-utils.js'; import { getSortedCloneElements } from '../../../edgeless/utils/clone-utils.js'; import { moveConnectors } from '../../../edgeless/utils/connector.js'; import { deleteElements } from '../../../edgeless/utils/crud.js'; import type { ElementToolbarMoreMenuContext } from './context.js'; +import { + createLinkedDocFromEdgelessElements, + createLinkedDocFromNote, +} from './render-linked-doc.js'; type EmbedLinkBlockComponent = | EmbedGithubBlockComponent diff --git a/blocksuite/blocks/src/_common/utils/render-linked-doc.ts b/blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/render-linked-doc.ts similarity index 90% rename from blocksuite/blocks/src/_common/utils/render-linked-doc.ts rename to blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/render-linked-doc.ts index 5c9c1be34..d66558580 100644 --- a/blocksuite/blocks/src/_common/utils/render-linked-doc.ts +++ b/blocksuite/blocks/src/root-block/widgets/element-toolbar/more-menu/render-linked-doc.ts @@ -4,24 +4,17 @@ import { NoteDisplayMode } from '@blocksuite/affine-model'; import { DocModeProvider } from '@blocksuite/affine-shared/services'; import { getBlockProps } from '@blocksuite/affine-shared/utils'; import type { EditorHost } from '@blocksuite/block-std'; +import { GfxBlockElementModel } from '@blocksuite/block-std/gfx'; import { type BlockModel, type Doc } from '@blocksuite/store'; -import { GfxBlockModel } from '../../root-block/edgeless/block-model.js'; import { getElementProps, mapFrameIds, sortEdgelessElements, -} from '../../root-block/edgeless/utils/clone-utils.js'; -import { - isFrameBlock, - isNoteBlock, -} from '../../root-block/edgeless/utils/query.js'; +} from '../../../edgeless/utils/clone-utils.js'; +import { isFrameBlock, isNoteBlock } from '../../../edgeless/utils/query.js'; -export function addBlocksToDoc( - targetDoc: Doc, - model: BlockModel, - parentId: string -) { +function addBlocksToDoc(targetDoc: Doc, model: BlockModel, parentId: string) { // Add current block to linked doc const blockProps = getBlockProps(model); const newModelId = targetDoc.addBlock( @@ -87,7 +80,7 @@ export function createLinkedDocFromEdgelessElements( const ids = new Map(); sortedElements.forEach(model => { let newId = model.id; - if (model instanceof GfxBlockModel) { + if (model instanceof GfxBlockElementModel) { const blockProps = getBlockProps(model); if (isNoteBlock(model)) { newId = linkedDoc.addBlock('affine:note', blockProps, rootId); diff --git a/blocksuite/blocks/src/root-block/widgets/linked-doc/import-doc/import-doc.ts b/blocksuite/blocks/src/root-block/widgets/linked-doc/import-doc/import-doc.ts index accd158c0..1825e3105 100644 --- a/blocksuite/blocks/src/root-block/widgets/linked-doc/import-doc/import-doc.ts +++ b/blocksuite/blocks/src/root-block/widgets/linked-doc/import-doc/import-doc.ts @@ -6,6 +6,7 @@ import { NewIcon, NotionIcon, } from '@blocksuite/affine-components/icons'; +import { openFileOrFiles } from '@blocksuite/affine-shared/utils'; import { WithDisposable } from '@blocksuite/global/utils'; import type { DocCollection } from '@blocksuite/store'; import { html, LitElement, type PropertyValues } from 'lit'; @@ -14,7 +15,6 @@ import { query, state } from 'lit/decorators.js'; import { HtmlTransformer } from '../../../../_common/transformers/html.js'; import { MarkdownTransformer } from '../../../../_common/transformers/markdown.js'; import { NotionHtmlTransformer } from '../../../../_common/transformers/notion-html.js'; -import { openFileOrFiles } from '../../../../_common/utils/index.js'; import { styles } from './styles.js'; export type OnSuccessHandler = (