feat(editor): use migrated extensions (#11886)

Closes: BS-3283
This commit is contained in:
Saul-Mirone
2025-04-22 15:51:22 +00:00
parent de8c65f4e6
commit 99ad4e871e
26 changed files with 483 additions and 125 deletions
@@ -0,0 +1,108 @@
import { effects as blockRootEffects } from '@blocksuite/affine-block-root/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 blockTableEffects } from '@blocksuite/affine-block-table/effects';
import { BlockSelection } from '@blocksuite/affine-components/block-selection';
import { BlockZeroWidth } from '@blocksuite/affine-components/block-zero-width';
import { effects as componentCaptionEffects } from '@blocksuite/affine-components/caption';
import { effects as componentCardStyleDropdownMenuEffects } from '@blocksuite/affine-components/card-style-dropdown-menu';
import { effects as componentColorPickerEffects } from '@blocksuite/affine-components/color-picker';
import { effects as componentContextMenuEffects } from '@blocksuite/affine-components/context-menu';
import { effects as componentDatePickerEffects } from '@blocksuite/affine-components/date-picker';
import { effects as componentDropIndicatorEffects } from '@blocksuite/affine-components/drop-indicator';
import { effects as componentEdgelessLineStylesEffects } from '@blocksuite/affine-components/edgeless-line-styles-panel';
import { effects as componentEdgelessLineWidthEffects } from '@blocksuite/affine-components/edgeless-line-width-panel';
import { effects as componentEdgelessShapeColorPickerEffects } from '@blocksuite/affine-components/edgeless-shape-color-picker';
import { effects as componentEmbedCardModalEffects } from '@blocksuite/affine-components/embed-card-modal';
import { FilterableListComponent } from '@blocksuite/affine-components/filterable-list';
import { effects as componentHighlightDropdownMenuEffects } from '@blocksuite/affine-components/highlight-dropdown-menu';
import { IconButton } from '@blocksuite/affine-components/icon-button';
import { effects as componentLinkPreviewEffects } from '@blocksuite/affine-components/link-preview';
import { effects as componentLinkedDocTitleEffects } from '@blocksuite/affine-components/linked-doc-title';
import { effects as componentOpenDocDropdownMenuEffects } from '@blocksuite/affine-components/open-doc-dropdown-menu';
import { effects as componentPortalEffects } from '@blocksuite/affine-components/portal';
import { effects as componentSizeDropdownMenuEffects } from '@blocksuite/affine-components/size-dropdown-menu';
import { SmoothCorner } from '@blocksuite/affine-components/smooth-corner';
import { effects as componentToggleButtonEffects } from '@blocksuite/affine-components/toggle-button';
import { ToggleSwitch } from '@blocksuite/affine-components/toggle-switch';
import { effects as componentToolbarEffects } from '@blocksuite/affine-components/toolbar';
import { effects as componentTooltipContentWithShortcutEffects } from '@blocksuite/affine-components/tooltip-content-with-shortcut';
import { effects as componentViewDropdownMenuEffects } from '@blocksuite/affine-components/view-dropdown-menu';
import { effects as fragmentDocTitleEffects } from '@blocksuite/affine-fragment-doc-title/effects';
import { effects as fragmentFramePanelEffects } from '@blocksuite/affine-fragment-frame-panel/effects';
import { effects as fragmentOutlineEffects } from '@blocksuite/affine-fragment-outline/effects';
import { effects as inlineFootnoteEffects } from '@blocksuite/affine-inline-footnote/effects';
import { effects as inlineLatexEffects } from '@blocksuite/affine-inline-latex/effects';
import { effects as inlineLinkEffects } from '@blocksuite/affine-inline-link/effects';
import { effects as inlineMentionEffects } from '@blocksuite/affine-inline-mention';
import { effects as inlinePresetEffects } from '@blocksuite/affine-inline-preset/effects';
import { effects as inlineReferenceEffects } from '@blocksuite/affine-inline-reference/effects';
import { effects as richTextEffects } from '@blocksuite/affine-rich-text/effects';
import { effects as widgetDragHandleEffects } from '@blocksuite/affine-widget-drag-handle/effects';
import { effects as widgetEdgelessAutoConnectEffects } from '@blocksuite/affine-widget-edgeless-auto-connect/effects';
import { effects as widgetFrameTitleEffects } from '@blocksuite/affine-widget-frame-title/effects';
import { effects as widgetRemoteSelectionEffects } from '@blocksuite/affine-widget-remote-selection/effects';
import { effects as widgetScrollAnchoringEffects } from '@blocksuite/affine-widget-scroll-anchoring/effects';
import { effects as widgetSlashMenuEffects } from '@blocksuite/affine-widget-slash-menu/effects';
import { effects as widgetToolbarEffects } from '@blocksuite/affine-widget-toolbar/effects';
import { effects as dataViewEffects } from '@blocksuite/data-view/effects';
import { effects as stdEffects } from '@blocksuite/std/effects';
export function effects() {
stdEffects();
dataViewEffects();
richTextEffects();
inlineReferenceEffects();
inlinePresetEffects();
inlineLinkEffects();
inlineFootnoteEffects();
inlineLatexEffects();
inlineMentionEffects();
blockSurfaceEffects();
blockSurfaceRefEffects();
blockTableEffects();
blockRootEffects();
componentCaptionEffects();
componentContextMenuEffects();
componentDatePickerEffects();
componentPortalEffects();
componentToolbarEffects();
componentDropIndicatorEffects();
componentToggleButtonEffects();
componentColorPickerEffects();
componentEmbedCardModalEffects();
componentLinkPreviewEffects();
componentLinkedDocTitleEffects();
componentCardStyleDropdownMenuEffects();
componentHighlightDropdownMenuEffects();
componentViewDropdownMenuEffects();
componentTooltipContentWithShortcutEffects();
componentSizeDropdownMenuEffects();
componentEdgelessLineWidthEffects();
componentEdgelessLineStylesEffects();
componentEdgelessShapeColorPickerEffects();
componentOpenDocDropdownMenuEffects();
widgetScrollAnchoringEffects();
widgetFrameTitleEffects();
widgetRemoteSelectionEffects();
widgetDragHandleEffects();
widgetEdgelessAutoConnectEffects();
widgetSlashMenuEffects();
widgetToolbarEffects();
fragmentDocTitleEffects();
fragmentFramePanelEffects();
fragmentOutlineEffects();
customElements.define('icon-button', IconButton);
customElements.define('smooth-corner', SmoothCorner);
customElements.define('toggle-switch', ToggleSwitch);
customElements.define('affine-filterable-list', FilterableListComponent);
customElements.define('block-zero-width', BlockZeroWidth);
customElements.define('affine-block-selection', BlockSelection);
}
@@ -1,5 +1,5 @@
export * from './common'; export * from './common';
export * from './editor-specs'; export * from './editor-specs';
export * from './legacy-store';
export * from './preview-specs'; export * from './preview-specs';
export * from './register'; export * from './register';
export * from './store';
@@ -0,0 +1,112 @@
import { DataViewBlockSchemaExtension } from '@blocksuite/affine-block-data-view';
import { DatabaseSelectionExtension } from '@blocksuite/affine-block-database';
import { EmbedIframeConfigExtensions } from '@blocksuite/affine-block-embed';
import { ImageStoreSpec } from '@blocksuite/affine-block-image';
import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface';
import { TableSelectionExtension } from '@blocksuite/affine-block-table';
import {
AttachmentBlockSchemaExtension,
BookmarkBlockSchemaExtension,
CalloutBlockSchemaExtension,
CodeBlockSchemaExtension,
DatabaseBlockSchemaExtension,
DividerBlockSchemaExtension,
EdgelessTextBlockSchemaExtension,
EmbedFigmaBlockSchemaExtension,
EmbedGithubBlockSchemaExtension,
EmbedHtmlBlockSchemaExtension,
EmbedIframeBlockSchemaExtension,
EmbedLinkedDocBlockSchemaExtension,
EmbedLoomBlockSchemaExtension,
EmbedSyncedDocBlockSchemaExtension,
EmbedYoutubeBlockSchemaExtension,
FrameBlockSchemaExtension,
ImageBlockSchemaExtension,
LatexBlockSchemaExtension,
ListBlockSchemaExtension,
NoteBlockSchemaExtension,
ParagraphBlockSchemaExtension,
RootBlockSchemaExtension,
SurfaceRefBlockSchemaExtension,
TableBlockSchemaExtension,
TranscriptionBlockSchemaExtension,
} from '@blocksuite/affine-model';
import {
HighlightSelectionExtension,
ImageSelectionExtension,
} from '@blocksuite/affine-shared/selection';
import {
BlockMetaService,
EmbedIframeService,
FeatureFlagService,
FileSizeLimitService,
LinkPreviewerService,
} from '@blocksuite/affine-shared/services';
import {
BlockSelectionExtension,
CursorSelectionExtension,
SurfaceSelectionExtension,
TextSelectionExtension,
} from '@blocksuite/std';
import type { ExtensionType } from '@blocksuite/store';
import {
getAdapterFactoryExtensions,
getHtmlAdapterExtensions,
getMarkdownAdapterExtensions,
getNotionHtmlAdapterExtensions,
getPlainTextAdapterExtensions,
} from '../adapters/extension.js';
export const StoreExtensions: ExtensionType[] = [
CodeBlockSchemaExtension,
ParagraphBlockSchemaExtension,
RootBlockSchemaExtension,
ListBlockSchemaExtension,
NoteBlockSchemaExtension,
DividerBlockSchemaExtension,
ImageBlockSchemaExtension,
SurfaceBlockSchemaExtension,
BookmarkBlockSchemaExtension,
FrameBlockSchemaExtension,
DatabaseBlockSchemaExtension,
SurfaceRefBlockSchemaExtension,
DataViewBlockSchemaExtension,
AttachmentBlockSchemaExtension,
EmbedSyncedDocBlockSchemaExtension,
EmbedLinkedDocBlockSchemaExtension,
EmbedHtmlBlockSchemaExtension,
EmbedIframeBlockSchemaExtension,
EmbedGithubBlockSchemaExtension,
EmbedFigmaBlockSchemaExtension,
EmbedLoomBlockSchemaExtension,
EmbedYoutubeBlockSchemaExtension,
EdgelessTextBlockSchemaExtension,
LatexBlockSchemaExtension,
TableBlockSchemaExtension,
CalloutBlockSchemaExtension,
TranscriptionBlockSchemaExtension,
BlockSelectionExtension,
TextSelectionExtension,
SurfaceSelectionExtension,
CursorSelectionExtension,
HighlightSelectionExtension,
ImageSelectionExtension,
DatabaseSelectionExtension,
TableSelectionExtension,
getHtmlAdapterExtensions(),
getMarkdownAdapterExtensions(),
getNotionHtmlAdapterExtensions(),
getPlainTextAdapterExtensions(),
getAdapterFactoryExtensions(),
FeatureFlagService,
LinkPreviewerService,
FileSizeLimitService,
ImageStoreSpec,
BlockMetaService,
EmbedIframeConfigExtensions,
EmbedIframeService,
].flat();
@@ -1,21 +1,3 @@
import { AttachmentBlockSpec } from '@blocksuite/affine-block-attachment';
import { BookmarkBlockSpec } from '@blocksuite/affine-block-bookmark';
import { CalloutBlockSpec } from '@blocksuite/affine-block-callout';
import { CodeBlockSpec } from '@blocksuite/affine-block-code';
import { DataViewBlockSpec } from '@blocksuite/affine-block-data-view';
import { DatabaseBlockSpec } from '@blocksuite/affine-block-database';
import { DividerBlockSpec } from '@blocksuite/affine-block-divider';
import { EdgelessTextBlockSpec } from '@blocksuite/affine-block-edgeless-text';
import { EmbedExtensions } from '@blocksuite/affine-block-embed';
import { FrameBlockSpec } from '@blocksuite/affine-block-frame';
import { ImageBlockSpec } from '@blocksuite/affine-block-image';
import { LatexBlockSpec } from '@blocksuite/affine-block-latex';
import { ListBlockSpec } from '@blocksuite/affine-block-list';
import {
EdgelessNoteBlockSpec,
NoteBlockSpec,
} from '@blocksuite/affine-block-note';
import { ParagraphBlockSpec } from '@blocksuite/affine-block-paragraph';
import { import {
EdgelessBuiltInSpecs, EdgelessBuiltInSpecs,
PageRootBlockSpec, PageRootBlockSpec,
@@ -89,22 +71,9 @@ const CommonBlockSpecs: ExtensionType[] = [
inlinePresetExtensions, inlinePresetExtensions,
DocDisplayMetaService, DocDisplayMetaService,
EditPropsStore, EditPropsStore,
LatexBlockSpec,
ListBlockSpec,
DatabaseBlockSpec,
TableBlockSpec, TableBlockSpec,
DataViewBlockSpec,
DividerBlockSpec,
BookmarkBlockSpec,
EmbedExtensions,
AttachmentBlockSpec,
CodeBlockSpec,
ImageBlockSpec,
ParagraphBlockSpec,
DefaultOpenDocExtension, DefaultOpenDocExtension,
FontLoaderService, FontLoaderService,
CalloutBlockSpec,
FrameBlockSpec,
elementToPlainTextAdapterMatchers, elementToPlainTextAdapterMatchers,
elementToMarkdownAdapterMatchers, elementToMarkdownAdapterMatchers,
@@ -112,7 +81,6 @@ const CommonBlockSpecs: ExtensionType[] = [
const PageFirstPartyBlockSpecs: ExtensionType[] = [ const PageFirstPartyBlockSpecs: ExtensionType[] = [
CommonBlockSpecs, CommonBlockSpecs,
NoteBlockSpec,
PageSurfaceBlockSpec, PageSurfaceBlockSpec,
PageSurfaceRefBlockSpec, PageSurfaceRefBlockSpec,
@@ -121,11 +89,8 @@ const PageFirstPartyBlockSpecs: ExtensionType[] = [
const EdgelessFirstPartyBlockSpecs: ExtensionType[] = [ const EdgelessFirstPartyBlockSpecs: ExtensionType[] = [
CommonBlockSpecs, CommonBlockSpecs,
EdgelessNoteBlockSpec,
EdgelessSurfaceBlockSpec, EdgelessSurfaceBlockSpec,
EdgelessSurfaceRefBlockSpec, EdgelessSurfaceRefBlockSpec,
EdgelessTextBlockSpec,
...EdgelessSurfaceBlockAdapterExtensions, ...EdgelessSurfaceBlockAdapterExtensions,
].flat(); ].flat();
@@ -4,11 +4,11 @@ import {
EdgelessEditorBlockSpecs, EdgelessEditorBlockSpecs,
PageEditorBlockSpecs, PageEditorBlockSpecs,
} from './editor-specs.js'; } from './editor-specs.js';
import { StoreExtensions } from './legacy-store.js';
import { import {
PreviewEdgelessEditorBlockSpecs, PreviewEdgelessEditorBlockSpecs,
PreviewPageEditorBlockSpecs, PreviewPageEditorBlockSpecs,
} from './preview-specs.js'; } from './preview-specs.js';
import { StoreExtensions } from './store.js';
export function registerStoreSpecs() { export function registerStoreSpecs() {
SpecProvider._.addSpec('store', StoreExtensions); SpecProvider._.addSpec('store', StoreExtensions);
+88 -58
View File
@@ -1,44 +1,45 @@
import { DataViewBlockSchemaExtension } from '@blocksuite/affine-block-data-view'; import { CodeMarkdownPreprocessorExtension } from '@blocksuite/affine-block-code';
import { DatabaseSelectionExtension } from '@blocksuite/affine-block-database'; import { DatabaseSelectionExtension } from '@blocksuite/affine-block-database';
import { EmbedIframeConfigExtensions } from '@blocksuite/affine-block-embed'; import { EmbedIframeConfigExtensions } from '@blocksuite/affine-block-embed';
import { ImageStoreSpec } from '@blocksuite/affine-block-image'; import { ImageStoreSpec } from '@blocksuite/affine-block-image';
import { LatexMarkdownPreprocessorExtension } from '@blocksuite/affine-block-latex';
import {
RootBlockHtmlAdapterExtension,
RootBlockMarkdownAdapterExtension,
RootBlockNotionHtmlAdapterExtension,
} from '@blocksuite/affine-block-root';
import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface'; import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface';
import { TableSelectionExtension } from '@blocksuite/affine-block-table'; import {
TableBlockHtmlAdapterExtension,
TableSelectionExtension,
} from '@blocksuite/affine-block-table';
import { import {
type StoreExtensionContext, type StoreExtensionContext,
StoreExtensionProvider, StoreExtensionProvider,
} from '@blocksuite/affine-ext-loader'; } from '@blocksuite/affine-ext-loader';
import { import {
AttachmentBlockSchemaExtension, HtmlInlineToDeltaAdapterExtensions,
BookmarkBlockSchemaExtension, InlineDeltaToHtmlAdapterExtensions,
CalloutBlockSchemaExtension, InlineDeltaToMarkdownAdapterExtensions,
CodeBlockSchemaExtension, InlineDeltaToPlainTextAdapterExtensions,
DatabaseBlockSchemaExtension, MarkdownInlineToDeltaAdapterExtensions,
DividerBlockSchemaExtension, NotionHtmlInlineToDeltaAdapterExtensions,
EdgelessTextBlockSchemaExtension, } from '@blocksuite/affine-inline-preset';
EmbedFigmaBlockSchemaExtension, import {
EmbedGithubBlockSchemaExtension,
EmbedHtmlBlockSchemaExtension,
EmbedIframeBlockSchemaExtension,
EmbedLinkedDocBlockSchemaExtension,
EmbedLoomBlockSchemaExtension,
EmbedSyncedDocBlockSchemaExtension,
EmbedYoutubeBlockSchemaExtension,
FrameBlockSchemaExtension,
ImageBlockSchemaExtension,
LatexBlockSchemaExtension,
ListBlockSchemaExtension,
NoteBlockSchemaExtension,
ParagraphBlockSchemaExtension,
RootBlockSchemaExtension, RootBlockSchemaExtension,
SurfaceRefBlockSchemaExtension, SurfaceRefBlockSchemaExtension,
TableBlockSchemaExtension, TableBlockSchemaExtension,
TranscriptionBlockSchemaExtension, TranscriptionBlockSchemaExtension,
} from '@blocksuite/affine-model'; } from '@blocksuite/affine-model';
import { import {
HighlightSelectionExtension, HtmlAdapterFactoryExtension,
ImageSelectionExtension, MarkdownAdapterFactoryExtension,
} from '@blocksuite/affine-shared/selection'; MixTextAdapterFactoryExtension,
NotionHtmlAdapterFactoryExtension,
NotionTextAdapterFactoryExtension,
PlainTextAdapterFactoryExtension,
} from '@blocksuite/affine-shared/adapters';
import { HighlightSelectionExtension } from '@blocksuite/affine-shared/selection';
import { import {
BlockMetaService, BlockMetaService,
EmbedIframeService, EmbedIframeService,
@@ -54,41 +55,71 @@ import {
} from '@blocksuite/std'; } from '@blocksuite/std';
import type { ExtensionType } from '@blocksuite/store'; import type { ExtensionType } from '@blocksuite/store';
import { function getAdapterFactoryExtensions(): ExtensionType[] {
getAdapterFactoryExtensions, return [
getHtmlAdapterExtensions, MarkdownAdapterFactoryExtension,
getMarkdownAdapterExtensions, PlainTextAdapterFactoryExtension,
getNotionHtmlAdapterExtensions, HtmlAdapterFactoryExtension,
getPlainTextAdapterExtensions, NotionTextAdapterFactoryExtension,
} from '../adapters/extension.js'; NotionHtmlAdapterFactoryExtension,
MixTextAdapterFactoryExtension,
];
}
export const StoreExtensions: ExtensionType[] = [ const defaultBlockHtmlAdapterMatchers = [
CodeBlockSchemaExtension, RootBlockHtmlAdapterExtension,
ParagraphBlockSchemaExtension, TableBlockHtmlAdapterExtension,
];
const defaultBlockMarkdownAdapterMatchers = [RootBlockMarkdownAdapterExtension];
const defaultMarkdownPreprocessors = [
LatexMarkdownPreprocessorExtension,
CodeMarkdownPreprocessorExtension,
];
const defaultBlockNotionHtmlAdapterMatchers: ExtensionType[] = [
RootBlockNotionHtmlAdapterExtension,
];
const defaultBlockPlainTextAdapterMatchers: ExtensionType[] = [];
function getHtmlAdapterExtensions(): ExtensionType[] {
return [
...HtmlInlineToDeltaAdapterExtensions,
...defaultBlockHtmlAdapterMatchers,
...InlineDeltaToHtmlAdapterExtensions,
];
}
function getMarkdownAdapterExtensions(): ExtensionType[] {
return [
...MarkdownInlineToDeltaAdapterExtensions,
...defaultBlockMarkdownAdapterMatchers,
...InlineDeltaToMarkdownAdapterExtensions,
...defaultMarkdownPreprocessors,
];
}
function getNotionHtmlAdapterExtensions(): ExtensionType[] {
return [
...NotionHtmlInlineToDeltaAdapterExtensions,
...defaultBlockNotionHtmlAdapterMatchers,
];
}
function getPlainTextAdapterExtensions(): ExtensionType[] {
return [
...defaultBlockPlainTextAdapterMatchers,
...InlineDeltaToPlainTextAdapterExtensions,
];
}
const MigratingStoreExtensions: ExtensionType[] = [
RootBlockSchemaExtension, RootBlockSchemaExtension,
ListBlockSchemaExtension,
NoteBlockSchemaExtension,
DividerBlockSchemaExtension,
ImageBlockSchemaExtension,
SurfaceBlockSchemaExtension, SurfaceBlockSchemaExtension,
BookmarkBlockSchemaExtension,
FrameBlockSchemaExtension,
DatabaseBlockSchemaExtension,
SurfaceRefBlockSchemaExtension, SurfaceRefBlockSchemaExtension,
DataViewBlockSchemaExtension,
AttachmentBlockSchemaExtension,
EmbedSyncedDocBlockSchemaExtension,
EmbedLinkedDocBlockSchemaExtension,
EmbedHtmlBlockSchemaExtension,
EmbedIframeBlockSchemaExtension,
EmbedGithubBlockSchemaExtension,
EmbedFigmaBlockSchemaExtension,
EmbedLoomBlockSchemaExtension,
EmbedYoutubeBlockSchemaExtension,
EdgelessTextBlockSchemaExtension,
LatexBlockSchemaExtension,
TableBlockSchemaExtension, TableBlockSchemaExtension,
CalloutBlockSchemaExtension,
TranscriptionBlockSchemaExtension, TranscriptionBlockSchemaExtension,
BlockSelectionExtension, BlockSelectionExtension,
@@ -96,7 +127,6 @@ export const StoreExtensions: ExtensionType[] = [
SurfaceSelectionExtension, SurfaceSelectionExtension,
CursorSelectionExtension, CursorSelectionExtension,
HighlightSelectionExtension, HighlightSelectionExtension,
ImageSelectionExtension,
DatabaseSelectionExtension, DatabaseSelectionExtension,
TableSelectionExtension, TableSelectionExtension,
@@ -120,6 +150,6 @@ export class MigratingStoreExtension extends StoreExtensionProvider {
override setup(context: StoreExtensionContext) { override setup(context: StoreExtensionContext) {
super.setup(context); super.setup(context);
context.register(StoreExtensions); context.register(MigratingStoreExtensions);
} }
} }
+1 -1
View File
@@ -3,7 +3,7 @@ import {
ViewExtensionProvider, ViewExtensionProvider,
} from '@blocksuite/affine-ext-loader'; } from '@blocksuite/affine-ext-loader';
import { effects } from '../effects'; import { effects } from './effects';
import { import {
MigratingEdgelessEditorBlockSpecs, MigratingEdgelessEditorBlockSpecs,
MigratingPageEditorBlockSpecs, MigratingPageEditorBlockSpecs,
@@ -17,8 +17,18 @@ export class EdgelessTextViewExtension extends ViewExtensionProvider {
override setup(context: ViewExtensionContext) { override setup(context: ViewExtensionContext) {
super.setup(context); super.setup(context);
context.register([ const isEdgeless =
BlockViewExtension('affine:edgeless-text', literal`affine-edgeless-text`), context.scope === 'edgeless' ||
]); context.scope === 'preview-edgeless' ||
context.scope === 'mobile-edgeless';
if (isEdgeless) {
context.register([
BlockViewExtension(
'affine:edgeless-text',
literal`affine-edgeless-text`
),
]);
}
} }
} }
+1 -7
View File
@@ -16,12 +16,6 @@ export class FrameViewExtension extends ViewExtensionProvider {
override setup(context: ViewExtensionContext): void { override setup(context: ViewExtensionContext): void {
super.setup(context); super.setup(context);
if ( context.register(FrameBlockSpec);
context.scope === 'edgeless' ||
context.scope === 'preview-edgeless' ||
context.scope === 'mobile-edgeless'
) {
context.register(FrameBlockSpec);
}
} }
} }
@@ -4,7 +4,6 @@ import { BlockViewExtension, FlavourExtension } from '@blocksuite/std';
import type { ExtensionType } from '@blocksuite/store'; import type { ExtensionType } from '@blocksuite/store';
import { literal } from 'lit/static-html.js'; import { literal } from 'lit/static-html.js';
import { ImageBlockAdapterExtensions } from './adapters/extension';
import { imageSlashMenuConfig } from './configs/slash-menu'; import { imageSlashMenuConfig } from './configs/slash-menu';
import { createBuiltinToolbarConfigExtension } from './configs/toolbar'; import { createBuiltinToolbarConfigExtension } from './configs/toolbar';
import { ImageProxyService } from './image-proxy-service'; import { ImageProxyService } from './image-proxy-service';
@@ -24,7 +23,6 @@ export const ImageBlockSpec: ExtensionType[] = [
return literal`affine-image`; return literal`affine-image`;
}), }),
ImageDropOption, ImageDropOption,
ImageBlockAdapterExtensions,
createBuiltinToolbarConfigExtension(flavour), createBuiltinToolbarConfigExtension(flavour),
SlashMenuConfigExtension(flavour, imageSlashMenuConfig), SlashMenuConfigExtension(flavour, imageSlashMenuConfig),
].flat(); ].flat();
@@ -7,10 +7,16 @@ import { BlockViewExtension } from '@blocksuite/std';
import { literal } from 'lit/static-html.js'; import { literal } from 'lit/static-html.js';
import { latexSlashMenuConfig } from './configs/slash-menu'; import { latexSlashMenuConfig } from './configs/slash-menu';
import { effects } from './effects';
export class LatexViewExtension extends ViewExtensionProvider { export class LatexViewExtension extends ViewExtensionProvider {
override name = 'affine-latex-block'; override name = 'affine-latex-block';
override effect() {
super.effect();
effects();
}
override setup(context: ViewExtensionContext) { override setup(context: ViewExtensionContext) {
super.setup(context); super.setup(context);
context.register([ context.register([
@@ -5,11 +5,17 @@ import {
import { BlockViewExtension, FlavourExtension } from '@blocksuite/std'; import { BlockViewExtension, FlavourExtension } from '@blocksuite/std';
import { literal } from 'lit/static-html.js'; import { literal } from 'lit/static-html.js';
import { effects } from './effects.js';
import { ListKeymapExtension, ListTextKeymapExtension } from './list-keymap.js'; import { ListKeymapExtension, ListTextKeymapExtension } from './list-keymap.js';
export class ListViewExtension extends ViewExtensionProvider { export class ListViewExtension extends ViewExtensionProvider {
override name = 'affine-list-block'; override name = 'affine-list-block';
override effect(): void {
super.effect();
effects();
}
override setup(context: ViewExtensionContext) { override setup(context: ViewExtensionContext) {
super.setup(context); super.setup(context);
context.register([ context.register([
@@ -85,8 +85,8 @@ export class ViewExtensionProvider<
super.setup(context, options); super.setup(context, options);
const constructer = this.constructor as typeof ViewExtensionProvider; const constructer = this.constructor as typeof ViewExtensionProvider;
if (!constructer.effectRunned) { if (!constructer.effectRunned) {
this.effect();
constructer.effectRunned = true; constructer.effectRunned = true;
this.effect();
} }
} }
} }
@@ -93,7 +93,7 @@ export class Clipboard extends LifeCycleWatcher {
} }
if (item) { if (item) {
const job = this._getJob(); const job = this._getJob();
const adapterInstance = new adapter(job, this.std.provider); const adapterInstance = new adapter(job, this.std.store.provider);
const payload = { const payload = {
file: item, file: item,
assets: job.assetsManager, assets: job.assetsManager,
@@ -225,7 +225,7 @@ export class Clipboard extends LifeCycleWatcher {
return; return;
} }
const { adapter } = adapterItem; const { adapter } = adapterItem;
const adapterInstance = new adapter(job, this.std.provider); const adapterInstance = new adapter(job, this.std.store.provider);
const result = await adapterInstance.fromSlice(slice); const result = await adapterInstance.fromSlice(slice);
if (!result) { if (!result) {
return; return;
+34 -1
View File
@@ -1,7 +1,40 @@
import { AttachmentStoreExtension } from '@blocksuite/affine/blocks/attachment/store';
import { BookmarkStoreExtension } from '@blocksuite/affine/blocks/bookmark/store';
import { CalloutStoreExtension } from '@blocksuite/affine/blocks/callout/store';
import { CodeStoreExtension } from '@blocksuite/affine/blocks/code/store';
import { DataViewStoreExtension } from '@blocksuite/affine/blocks/data-view/store';
import { DatabaseStoreExtension } from '@blocksuite/affine/blocks/database/store';
import { DividerStoreExtension } from '@blocksuite/affine/blocks/divider/store';
import { EdgelessTextStoreExtension } from '@blocksuite/affine/blocks/edgeless-text/store';
import { EmbedStoreExtension } from '@blocksuite/affine/blocks/embed/store';
import { FrameStoreExtension } from '@blocksuite/affine/blocks/frame/store';
import { ImageStoreExtension } from '@blocksuite/affine/blocks/image/store';
import { LatexStoreExtension } from '@blocksuite/affine/blocks/latex/store';
import { ListStoreExtension } from '@blocksuite/affine/blocks/list/store';
import { NoteStoreExtension } from '@blocksuite/affine/blocks/note/store';
import { ParagraphStoreExtension } from '@blocksuite/affine/blocks/paragraph/store';
import { StoreExtensionManager } from '@blocksuite/affine/ext-loader'; import { StoreExtensionManager } from '@blocksuite/affine/ext-loader';
import { MigratingStoreExtension } from '@blocksuite/affine/extensions/store'; import { MigratingStoreExtension } from '@blocksuite/affine/extensions/store';
export function getTestStoreManager() { export function getTestStoreManager() {
const manager = new StoreExtensionManager([MigratingStoreExtension]); const manager = new StoreExtensionManager([
AttachmentStoreExtension,
BookmarkStoreExtension,
CalloutStoreExtension,
CodeStoreExtension,
DataViewStoreExtension,
DatabaseStoreExtension,
DividerStoreExtension,
EdgelessTextStoreExtension,
EmbedStoreExtension,
FrameStoreExtension,
ImageStoreExtension,
LatexStoreExtension,
ListStoreExtension,
NoteStoreExtension,
ParagraphStoreExtension,
MigratingStoreExtension,
]);
return manager; return manager;
} }
+33 -1
View File
@@ -1,7 +1,39 @@
import { AttachmentViewExtension } from '@blocksuite/affine/blocks/attachment/view';
import { BookmarkViewExtension } from '@blocksuite/affine/blocks/bookmark/view';
import { CalloutViewExtension } from '@blocksuite/affine/blocks/callout/view';
import { CodeBlockViewExtension } from '@blocksuite/affine/blocks/code/view';
import { DataViewViewExtension } from '@blocksuite/affine/blocks/data-view/view';
import { DatabaseViewExtension } from '@blocksuite/affine/blocks/database/view';
import { DividerViewExtension } from '@blocksuite/affine/blocks/divider/view';
import { EdgelessTextViewExtension } from '@blocksuite/affine/blocks/edgeless-text/view';
import { EmbedViewExtension } from '@blocksuite/affine/blocks/embed/view';
import { FrameViewExtension } from '@blocksuite/affine/blocks/frame/view';
import { ImageViewExtension } from '@blocksuite/affine/blocks/image/view';
import { LatexViewExtension } from '@blocksuite/affine/blocks/latex/view';
import { ListViewExtension } from '@blocksuite/affine/blocks/list/view';
import { NoteViewExtension } from '@blocksuite/affine/blocks/note/view';
import { ParagraphViewExtension } from '@blocksuite/affine/blocks/paragraph/view';
import { ViewExtensionManager } from '@blocksuite/affine/ext-loader'; import { ViewExtensionManager } from '@blocksuite/affine/ext-loader';
import { MigratingViewExtension } from '@blocksuite/affine/extensions/view'; import { MigratingViewExtension } from '@blocksuite/affine/extensions/view';
export function getTestViewManager() { export function getTestViewManager() {
const manager = new ViewExtensionManager([MigratingViewExtension]); const manager = new ViewExtensionManager([
MigratingViewExtension,
AttachmentViewExtension,
BookmarkViewExtension,
CalloutViewExtension,
CodeBlockViewExtension,
DataViewViewExtension,
DatabaseViewExtension,
DividerViewExtension,
EdgelessTextViewExtension,
EmbedViewExtension,
FrameViewExtension,
ImageViewExtension,
LatexViewExtension,
ListViewExtension,
NoteViewExtension,
ParagraphViewExtension,
]);
return manager; return manager;
} }
@@ -111,7 +111,10 @@ export class ChatPanelDocChip extends SignalWatcher(
if (!doc.ready) { if (!doc.ready) {
doc.load(); doc.load();
} }
const value = await extractMarkdownFromDoc(doc, this.host.std.provider); const value = await extractMarkdownFromDoc(
doc,
this.host.std.store.provider
);
const tokenCount = estimateTokenCount(value); const tokenCount = estimateTokenCount(value);
if (this.checkTokenLimit(this.chip, tokenCount)) { if (this.checkTokenLimit(this.chip, tokenCount)) {
const markdown = this.chip.markdown ?? new Signal<string>(''); const markdown = this.chip.markdown ?? new Signal<string>('');
@@ -228,7 +228,7 @@ export class TextRenderer extends WithDisposable(ShadowlessElement) {
const schema = this.schema ?? this.host?.std.store.schema; const schema = this.schema ?? this.host?.std.store.schema;
let provider: ServiceProvider; let provider: ServiceProvider;
if (this.host) { if (this.host) {
provider = this.host.std.provider; provider = this.host.std.store.provider;
} else { } else {
const container = new Container(); const container = new Container();
getMarkdownAdapterExtensions().forEach(ext => { getMarkdownAdapterExtensions().forEach(ext => {
@@ -21,9 +21,7 @@ export function enableAIExtension(
framework: FrameworkProvider, framework: FrameworkProvider,
enableAI: boolean enableAI: boolean
) { ) {
if (!enableAI) { if (!enableAI) return;
return;
}
specBuilder.replace(CodeBlockSpec, AICodeBlockSpec); specBuilder.replace(CodeBlockSpec, AICodeBlockSpec);
specBuilder.replace(ImageBlockSpec, AIImageBlockSpec); specBuilder.replace(ImageBlockSpec, AIImageBlockSpec);
@@ -56,7 +56,7 @@ export const createMindmapExecuteRenderer: (
} }
ctx.set({ ctx.set({
node: markdownToMindmap(answer, host.doc, host.std.provider), node: markdownToMindmap(answer, host.doc, host.std.store.provider),
}); });
handler(host, ctx); handler(host, ctx);
@@ -132,7 +132,7 @@ export class MiniMindmapPreview extends WithDisposable(LitElement) {
} }
private _toMindmapNode(answer: string, doc: Store) { private _toMindmapNode(answer: string, doc: Store) {
return markdownToMindmap(answer, doc, this.host.std.provider); return markdownToMindmap(answer, doc, this.host.std.store.provider);
} }
override connectedCallback(): void { override connectedCallback(): void {
@@ -154,7 +154,7 @@ export const copyTextAnswer = async (panel: AffineAIPanelWidget) => {
export const copyText = async (host: EditorHost, text: string) => { export const copyText = async (host: EditorHost, text: string) => {
const previewDoc = await markDownToDoc( const previewDoc = await markDownToDoc(
host.std.provider, host.std.store.provider,
host.std.store.schema, host.std.store.schema,
text, text,
[defaultImageProxyMiddleware] [defaultImageProxyMiddleware]
@@ -1,3 +1,18 @@
import { AttachmentStoreExtension } from '@blocksuite/affine/blocks/attachment/store';
import { BookmarkStoreExtension } from '@blocksuite/affine/blocks/bookmark/store';
import { CalloutStoreExtension } from '@blocksuite/affine/blocks/callout/store';
import { CodeStoreExtension } from '@blocksuite/affine/blocks/code/store';
import { DataViewStoreExtension } from '@blocksuite/affine/blocks/data-view/store';
import { DatabaseStoreExtension } from '@blocksuite/affine/blocks/database/store';
import { DividerStoreExtension } from '@blocksuite/affine/blocks/divider/store';
import { EdgelessTextStoreExtension } from '@blocksuite/affine/blocks/edgeless-text/store';
import { EmbedStoreExtension } from '@blocksuite/affine/blocks/embed/store';
import { FrameStoreExtension } from '@blocksuite/affine/blocks/frame/store';
import { ImageStoreExtension } from '@blocksuite/affine/blocks/image/store';
import { LatexStoreExtension } from '@blocksuite/affine/blocks/latex/store';
import { ListStoreExtension } from '@blocksuite/affine/blocks/list/store';
import { NoteStoreExtension } from '@blocksuite/affine/blocks/note/store';
import { ParagraphStoreExtension } from '@blocksuite/affine/blocks/paragraph/store';
import { import {
type StoreExtensionContext, type StoreExtensionContext,
StoreExtensionManager, StoreExtensionManager,
@@ -17,8 +32,24 @@ class MigratingAffineStoreExtension extends StoreExtensionProvider {
} }
const manager = new StoreExtensionManager([ const manager = new StoreExtensionManager([
MigratingAffineStoreExtension, AttachmentStoreExtension,
BookmarkStoreExtension,
CalloutStoreExtension,
CodeStoreExtension,
DataViewStoreExtension,
DatabaseStoreExtension,
DividerStoreExtension,
EdgelessTextStoreExtension,
EmbedStoreExtension,
FrameStoreExtension,
ImageStoreExtension,
LatexStoreExtension,
ListStoreExtension,
NoteStoreExtension,
ParagraphStoreExtension,
MigratingStoreExtension, MigratingStoreExtension,
MigratingAffineStoreExtension,
]); ]);
export function getStoreManager() { export function getStoreManager() {
@@ -1,5 +1,20 @@
import { PeekViewService } from '@affine/core/modules/peek-view'; import { PeekViewService } from '@affine/core/modules/peek-view';
import { AttachmentViewExtension } from '@blocksuite/affine/blocks/attachment/view';
import { BookmarkViewExtension } from '@blocksuite/affine/blocks/bookmark/view';
import { CalloutViewExtension } from '@blocksuite/affine/blocks/callout/view';
import { CodeBlockViewExtension } from '@blocksuite/affine/blocks/code/view';
import { DataViewViewExtension } from '@blocksuite/affine/blocks/data-view/view';
import { DatabaseViewExtension } from '@blocksuite/affine/blocks/database/view';
import { DividerViewExtension } from '@blocksuite/affine/blocks/divider/view';
import { EdgelessTextViewExtension } from '@blocksuite/affine/blocks/edgeless-text/view';
import { EmbedViewExtension } from '@blocksuite/affine/blocks/embed/view';
import { FrameViewExtension } from '@blocksuite/affine/blocks/frame/view';
import { ImageViewExtension } from '@blocksuite/affine/blocks/image/view';
import { LatexViewExtension } from '@blocksuite/affine/blocks/latex/view';
import { ListViewExtension } from '@blocksuite/affine/blocks/list/view';
import { NoteViewExtension } from '@blocksuite/affine/blocks/note/view';
import { ParagraphBlockConfigExtension } from '@blocksuite/affine/blocks/paragraph'; import { ParagraphBlockConfigExtension } from '@blocksuite/affine/blocks/paragraph';
import { ParagraphViewExtension } from '@blocksuite/affine/blocks/paragraph/view';
import { import {
type ViewExtensionContext, type ViewExtensionContext,
ViewExtensionManager, ViewExtensionManager,
@@ -129,6 +144,23 @@ class MigratingAffineViewExtension extends ViewExtensionProvider<
const manager = new ViewExtensionManager([ const manager = new ViewExtensionManager([
MigratingViewExtension, MigratingViewExtension,
AttachmentViewExtension,
BookmarkViewExtension,
CalloutViewExtension,
CodeBlockViewExtension,
DataViewViewExtension,
DatabaseViewExtension,
DividerViewExtension,
EdgelessTextViewExtension,
EmbedViewExtension,
FrameViewExtension,
ImageViewExtension,
LatexViewExtension,
ListViewExtension,
NoteViewExtension,
ParagraphViewExtension,
MigratingAffineViewExtension, MigratingAffineViewExtension,
]); ]);
@@ -91,8 +91,8 @@ export async function getContentFromSlice(
processTextInSnapshot(snapshot, host); processTextInSnapshot(snapshot, host);
const adapter = const adapter =
type === 'markdown' type === 'markdown'
? new MarkdownAdapter(transformer, host.std.provider) ? new MarkdownAdapter(transformer, host.std.store.provider)
: new PlainTextAdapter(transformer, host.std.provider); : new PlainTextAdapter(transformer, host.std.store.provider);
const content = await adapter.fromSliceSnapshot({ const content = await adapter.fromSliceSnapshot({
snapshot, snapshot,
assets: transformer.assetsManager, assets: transformer.assetsManager,
@@ -76,7 +76,7 @@ async function exportDoc(
], ],
}); });
const adapterFactory = std.provider.get(config.identifier); const adapterFactory = std.store.provider.get(config.identifier);
const adapter = adapterFactory.get(transformer); const adapter = adapterFactory.get(transformer);
const result = (await adapter.fromDoc(doc)) as AdapterResult; const result = (await adapter.fromDoc(doc)) as AdapterResult;