mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-17 01:56:27 +08:00
feat(editor): reference, mention and latex inline extension (#11914)
Closes: BS-3215 Closes: BS-3218 Closes: BS-3217
This commit is contained in:
@@ -146,13 +146,18 @@
|
||||
"./inlines/link": "./src/inlines/link/index.ts",
|
||||
"./inlines/link/store": "./src/inlines/link/store.ts",
|
||||
"./inlines/link/view": "./src/inlines/link/view.ts",
|
||||
"./inlines/reference": "./src/inlines/reference.ts",
|
||||
"./inlines/reference": "./src/inlines/reference/index.ts",
|
||||
"./inlines/reference/store": "./src/inlines/reference/store.ts",
|
||||
"./inlines/reference/view": "./src/inlines/reference/view.ts",
|
||||
"./inlines/preset": "./src/inlines/preset.ts",
|
||||
"./inlines/footnote": "./src/inlines/footnote/index.ts",
|
||||
"./inlines/footnote/view": "./src/inlines/footnote/view.ts",
|
||||
"./inlines/footnote/store": "./src/inlines/footnote/store.ts",
|
||||
"./inlines/latex": "./src/inlines/latex.ts",
|
||||
"./inlines/mention": "./src/inlines/mention.ts",
|
||||
"./inlines/latex": "./src/inlines/latex/index.ts",
|
||||
"./inlines/latex/store": "./src/inlines/latex/store.ts",
|
||||
"./inlines/latex/view": "./src/inlines/latex/view.ts",
|
||||
"./inlines/mention": "./src/inlines/mention/index.ts",
|
||||
"./inlines/mention/view": "./src/inlines/mention/view.ts",
|
||||
"./widgets/drag-handle": "./src/widgets/drag-handle.ts",
|
||||
"./widgets/edgeless-auto-connect": "./src/widgets/edgeless-auto-connect.ts",
|
||||
"./widgets/edgeless-toolbar": "./src/widgets/edgeless-toolbar.ts",
|
||||
@@ -215,7 +220,6 @@
|
||||
"./schemas": "./src/schemas.ts",
|
||||
"./model": "./src/model/index.ts",
|
||||
"./sync": "./src/sync/index.ts",
|
||||
"./adapters": "./src/adapters/index.ts",
|
||||
"./extensions/store": "./src/extensions/store.ts",
|
||||
"./extensions/view": "./src/extensions/view.ts"
|
||||
},
|
||||
|
||||
@@ -125,7 +125,7 @@ describe('snapshot to html', () => {
|
||||
};
|
||||
|
||||
const html = template(
|
||||
`<pre class="shiki light-plus" style="background-color:#FFFFFF;color:#000000" tabindex="0"><code><span class="line"><span style="color:#AF00DB">import</span><span style="color:#000000"> this</span></span></code></pre>`
|
||||
`<pre><code class="code-python">import this</code></pre>`
|
||||
);
|
||||
|
||||
const htmlAdapter = new HtmlAdapter(createJob(), provider);
|
||||
@@ -191,7 +191,7 @@ describe('snapshot to html', () => {
|
||||
};
|
||||
|
||||
const html = template(
|
||||
`<pre class="shiki light-plus" style="background-color:#FFFFFF;color:#000000" tabindex="0"><code><span class="line"><span>import this</span></span></code></pre>`
|
||||
`<pre><code class="code-PYTHON">import this</code></pre>`
|
||||
);
|
||||
|
||||
const htmlAdapter = new HtmlAdapter(createJob(), provider);
|
||||
@@ -257,7 +257,7 @@ describe('snapshot to html', () => {
|
||||
};
|
||||
|
||||
const html = template(
|
||||
`<pre class="shiki light-plus" style="background-color:#FFFFFF;color:#000000" tabindex="0"><code><span class="line"><span>import this</span></span></code></pre>`
|
||||
`<pre><code class="code-unknown">import this</code></pre>`
|
||||
);
|
||||
|
||||
const htmlAdapter = new HtmlAdapter(createJob(), provider);
|
||||
|
||||
@@ -1,49 +1,7 @@
|
||||
import { AttachmentStoreExtension } from '@blocksuite/affine-block-attachment/store';
|
||||
import { BookmarkStoreExtension } from '@blocksuite/affine-block-bookmark/store';
|
||||
import { CalloutStoreExtension } from '@blocksuite/affine-block-callout/store';
|
||||
import { CodeStoreExtension } from '@blocksuite/affine-block-code/store';
|
||||
import { DataViewStoreExtension } from '@blocksuite/affine-block-data-view/store';
|
||||
import { DatabaseStoreExtension } from '@blocksuite/affine-block-database/store';
|
||||
import { DividerStoreExtension } from '@blocksuite/affine-block-divider/store';
|
||||
import { EdgelessTextStoreExtension } from '@blocksuite/affine-block-edgeless-text/store';
|
||||
import { EmbedStoreExtension } from '@blocksuite/affine-block-embed/store';
|
||||
import { FrameStoreExtension } from '@blocksuite/affine-block-frame/store';
|
||||
import { ImageStoreExtension } from '@blocksuite/affine-block-image/store';
|
||||
import { LatexStoreExtension } from '@blocksuite/affine-block-latex/store';
|
||||
import { ListStoreExtension } from '@blocksuite/affine-block-list/store';
|
||||
import { NoteStoreExtension } from '@blocksuite/affine-block-note/store';
|
||||
import { ParagraphStoreExtension } from '@blocksuite/affine-block-paragraph/store';
|
||||
import { SurfaceRefStoreExtension } from '@blocksuite/affine-block-surface-ref/store';
|
||||
import { TableStoreExtension } from '@blocksuite/affine-block-table/store';
|
||||
import { StoreExtensionManager } from '@blocksuite/affine-ext-loader';
|
||||
import { FootnoteStoreExtension } from '@blocksuite/affine-inline-footnote/store';
|
||||
import { LinkStoreExtension } from '@blocksuite/affine-inline-link/store';
|
||||
|
||||
import { MigratingStoreExtension } from '../../extensions/store';
|
||||
import { getInternalStoreExtensions } from '../../extensions/store';
|
||||
|
||||
const manager = new StoreExtensionManager([
|
||||
AttachmentStoreExtension,
|
||||
BookmarkStoreExtension,
|
||||
CalloutStoreExtension,
|
||||
CodeStoreExtension,
|
||||
DataViewStoreExtension,
|
||||
DatabaseStoreExtension,
|
||||
DividerStoreExtension,
|
||||
EdgelessTextStoreExtension,
|
||||
EmbedStoreExtension,
|
||||
FrameStoreExtension,
|
||||
ImageStoreExtension,
|
||||
LatexStoreExtension,
|
||||
ListStoreExtension,
|
||||
NoteStoreExtension,
|
||||
ParagraphStoreExtension,
|
||||
SurfaceRefStoreExtension,
|
||||
TableStoreExtension,
|
||||
|
||||
FootnoteStoreExtension,
|
||||
LinkStoreExtension,
|
||||
|
||||
MigratingStoreExtension,
|
||||
]);
|
||||
const manager = new StoreExtensionManager(getInternalStoreExtensions());
|
||||
|
||||
export const testStoreExtensions = manager.get('store');
|
||||
|
||||
@@ -2,7 +2,6 @@ import {
|
||||
HtmlInlineToDeltaAdapterExtensions,
|
||||
InlineDeltaToHtmlAdapterExtensions,
|
||||
InlineDeltaToMarkdownAdapterExtensions,
|
||||
InlineDeltaToPlainTextAdapterExtensions,
|
||||
MarkdownInlineToDeltaAdapterExtensions,
|
||||
NotionHtmlInlineToDeltaAdapterExtensions,
|
||||
} from '@blocksuite/affine-inline-preset';
|
||||
@@ -62,8 +61,5 @@ export function getNotionHtmlAdapterExtensions(): ExtensionType[] {
|
||||
}
|
||||
|
||||
export function getPlainTextAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...defaultBlockPlainTextAdapterMatchers,
|
||||
...InlineDeltaToPlainTextAdapterExtensions,
|
||||
];
|
||||
return [...defaultBlockPlainTextAdapterMatchers];
|
||||
}
|
||||
|
||||
@@ -29,10 +29,7 @@ import { effects as componentViewDropdownMenuEffects } from '@blocksuite/affine-
|
||||
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 inlineLatexEffects } from '@blocksuite/affine-inline-latex/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';
|
||||
@@ -50,10 +47,7 @@ export function effects() {
|
||||
dataViewEffects();
|
||||
richTextEffects();
|
||||
|
||||
inlineReferenceEffects();
|
||||
inlinePresetEffects();
|
||||
inlineLatexEffects();
|
||||
inlineMentionEffects();
|
||||
|
||||
blockSurfaceEffects();
|
||||
blockRootEffects();
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
import { DatabaseSelectionExtension } from '@blocksuite/affine-block-database';
|
||||
import {
|
||||
RootBlockHtmlAdapterExtension,
|
||||
RootBlockMarkdownAdapterExtension,
|
||||
RootBlockNotionHtmlAdapterExtension,
|
||||
} from '@blocksuite/affine-block-root';
|
||||
import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface';
|
||||
import {
|
||||
type StoreExtensionContext,
|
||||
StoreExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
import {
|
||||
HtmlInlineToDeltaAdapterExtensions,
|
||||
InlineDeltaToHtmlAdapterExtensions,
|
||||
InlineDeltaToMarkdownAdapterExtensions,
|
||||
MarkdownInlineToDeltaAdapterExtensions,
|
||||
NotionHtmlInlineToDeltaAdapterExtensions,
|
||||
} from '@blocksuite/affine-inline-preset';
|
||||
import {
|
||||
RootBlockSchemaExtension,
|
||||
TranscriptionBlockSchemaExtension,
|
||||
} from '@blocksuite/affine-model';
|
||||
import {
|
||||
HtmlAdapterFactoryExtension,
|
||||
MarkdownAdapterFactoryExtension,
|
||||
MixTextAdapterFactoryExtension,
|
||||
NotionHtmlAdapterFactoryExtension,
|
||||
NotionTextAdapterFactoryExtension,
|
||||
PlainTextAdapterFactoryExtension,
|
||||
} from '@blocksuite/affine-shared/adapters';
|
||||
import { HighlightSelectionExtension } from '@blocksuite/affine-shared/selection';
|
||||
import {
|
||||
BlockMetaService,
|
||||
FeatureFlagService,
|
||||
FileSizeLimitService,
|
||||
LinkPreviewerService,
|
||||
} from '@blocksuite/affine-shared/services';
|
||||
import {
|
||||
BlockSelectionExtension,
|
||||
CursorSelectionExtension,
|
||||
SurfaceSelectionExtension,
|
||||
TextSelectionExtension,
|
||||
} from '@blocksuite/std';
|
||||
import type { ExtensionType } from '@blocksuite/store';
|
||||
|
||||
function getAdapterFactoryExtensions(): ExtensionType[] {
|
||||
return [
|
||||
MarkdownAdapterFactoryExtension,
|
||||
PlainTextAdapterFactoryExtension,
|
||||
HtmlAdapterFactoryExtension,
|
||||
NotionTextAdapterFactoryExtension,
|
||||
NotionHtmlAdapterFactoryExtension,
|
||||
MixTextAdapterFactoryExtension,
|
||||
];
|
||||
}
|
||||
|
||||
const defaultBlockHtmlAdapterMatchers = [RootBlockHtmlAdapterExtension];
|
||||
|
||||
const defaultBlockMarkdownAdapterMatchers = [RootBlockMarkdownAdapterExtension];
|
||||
|
||||
const defaultBlockNotionHtmlAdapterMatchers: ExtensionType[] = [
|
||||
RootBlockNotionHtmlAdapterExtension,
|
||||
];
|
||||
|
||||
function getHtmlAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...HtmlInlineToDeltaAdapterExtensions,
|
||||
...defaultBlockHtmlAdapterMatchers,
|
||||
...InlineDeltaToHtmlAdapterExtensions,
|
||||
];
|
||||
}
|
||||
|
||||
function getMarkdownAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...MarkdownInlineToDeltaAdapterExtensions,
|
||||
...defaultBlockMarkdownAdapterMatchers,
|
||||
...InlineDeltaToMarkdownAdapterExtensions,
|
||||
];
|
||||
}
|
||||
|
||||
function getNotionHtmlAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...NotionHtmlInlineToDeltaAdapterExtensions,
|
||||
...defaultBlockNotionHtmlAdapterMatchers,
|
||||
];
|
||||
}
|
||||
|
||||
const MigratingStoreExtensions: ExtensionType[] = [
|
||||
RootBlockSchemaExtension,
|
||||
SurfaceBlockSchemaExtension,
|
||||
TranscriptionBlockSchemaExtension,
|
||||
|
||||
BlockSelectionExtension,
|
||||
TextSelectionExtension,
|
||||
SurfaceSelectionExtension,
|
||||
CursorSelectionExtension,
|
||||
HighlightSelectionExtension,
|
||||
DatabaseSelectionExtension,
|
||||
|
||||
getHtmlAdapterExtensions(),
|
||||
getMarkdownAdapterExtensions(),
|
||||
getNotionHtmlAdapterExtensions(),
|
||||
getAdapterFactoryExtensions(),
|
||||
|
||||
FeatureFlagService,
|
||||
LinkPreviewerService,
|
||||
FileSizeLimitService,
|
||||
BlockMetaService,
|
||||
].flat();
|
||||
|
||||
export class MigratingStoreExtension extends StoreExtensionProvider {
|
||||
override name = 'migrating';
|
||||
|
||||
override setup(context: StoreExtensionContext) {
|
||||
super.setup(context);
|
||||
context.register(MigratingStoreExtensions);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
ViewExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
|
||||
import { effects } from './effects';
|
||||
import {
|
||||
MigratingEdgelessEditorBlockSpecs,
|
||||
MigratingPageEditorBlockSpecs,
|
||||
MigratingPreviewEdgelessEditorBlockSpecs,
|
||||
MigratingPreviewPageEditorBlockSpecs,
|
||||
} from './migrating';
|
||||
|
||||
export class MigratingViewExtension extends ViewExtensionProvider {
|
||||
override name = 'migrating';
|
||||
|
||||
override effect() {
|
||||
super.effect();
|
||||
effects();
|
||||
}
|
||||
|
||||
override setup(context: ViewExtensionContext) {
|
||||
super.setup(context);
|
||||
const scope = context.scope;
|
||||
if (scope === 'preview-page') {
|
||||
context.register(MigratingPreviewPageEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
if (scope === 'preview-edgeless') {
|
||||
context.register(MigratingPreviewEdgelessEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
if (scope === 'page' || scope === 'mobile-page') {
|
||||
context.register(MigratingPageEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
if (scope === 'edgeless' || scope === 'mobile-edgeless') {
|
||||
context.register(MigratingEdgelessEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,124 +1,52 @@
|
||||
import { DatabaseSelectionExtension } from '@blocksuite/affine-block-database';
|
||||
import {
|
||||
RootBlockHtmlAdapterExtension,
|
||||
RootBlockMarkdownAdapterExtension,
|
||||
RootBlockNotionHtmlAdapterExtension,
|
||||
} from '@blocksuite/affine-block-root';
|
||||
import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface';
|
||||
import {
|
||||
type StoreExtensionContext,
|
||||
StoreExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
import {
|
||||
HtmlInlineToDeltaAdapterExtensions,
|
||||
InlineDeltaToHtmlAdapterExtensions,
|
||||
InlineDeltaToMarkdownAdapterExtensions,
|
||||
InlineDeltaToPlainTextAdapterExtensions,
|
||||
MarkdownInlineToDeltaAdapterExtensions,
|
||||
NotionHtmlInlineToDeltaAdapterExtensions,
|
||||
} from '@blocksuite/affine-inline-preset';
|
||||
import {
|
||||
RootBlockSchemaExtension,
|
||||
TranscriptionBlockSchemaExtension,
|
||||
} from '@blocksuite/affine-model';
|
||||
import {
|
||||
HtmlAdapterFactoryExtension,
|
||||
MarkdownAdapterFactoryExtension,
|
||||
MixTextAdapterFactoryExtension,
|
||||
NotionHtmlAdapterFactoryExtension,
|
||||
NotionTextAdapterFactoryExtension,
|
||||
PlainTextAdapterFactoryExtension,
|
||||
} from '@blocksuite/affine-shared/adapters';
|
||||
import { HighlightSelectionExtension } from '@blocksuite/affine-shared/selection';
|
||||
import {
|
||||
BlockMetaService,
|
||||
FeatureFlagService,
|
||||
FileSizeLimitService,
|
||||
LinkPreviewerService,
|
||||
} from '@blocksuite/affine-shared/services';
|
||||
import {
|
||||
BlockSelectionExtension,
|
||||
CursorSelectionExtension,
|
||||
SurfaceSelectionExtension,
|
||||
TextSelectionExtension,
|
||||
} from '@blocksuite/std';
|
||||
import type { ExtensionType } from '@blocksuite/store';
|
||||
import { AttachmentStoreExtension } from '@blocksuite/affine-block-attachment/store';
|
||||
import { BookmarkStoreExtension } from '@blocksuite/affine-block-bookmark/store';
|
||||
import { CalloutStoreExtension } from '@blocksuite/affine-block-callout/store';
|
||||
import { CodeStoreExtension } from '@blocksuite/affine-block-code/store';
|
||||
import { DataViewStoreExtension } from '@blocksuite/affine-block-data-view/store';
|
||||
import { DatabaseStoreExtension } from '@blocksuite/affine-block-database/store';
|
||||
import { DividerStoreExtension } from '@blocksuite/affine-block-divider/store';
|
||||
import { EdgelessTextStoreExtension } from '@blocksuite/affine-block-edgeless-text/store';
|
||||
import { EmbedStoreExtension } from '@blocksuite/affine-block-embed/store';
|
||||
import { FrameStoreExtension } from '@blocksuite/affine-block-frame/store';
|
||||
import { ImageStoreExtension } from '@blocksuite/affine-block-image/store';
|
||||
import { LatexStoreExtension } from '@blocksuite/affine-block-latex/store';
|
||||
import { ListStoreExtension } from '@blocksuite/affine-block-list/store';
|
||||
import { NoteStoreExtension } from '@blocksuite/affine-block-note/store';
|
||||
import { ParagraphStoreExtension } from '@blocksuite/affine-block-paragraph/store';
|
||||
import { SurfaceRefStoreExtension } from '@blocksuite/affine-block-surface-ref/store';
|
||||
import { TableStoreExtension } from '@blocksuite/affine-block-table/store';
|
||||
import { FootnoteStoreExtension } from '@blocksuite/affine-inline-footnote/store';
|
||||
import { LatexStoreExtension as InlineLatexStoreExtension } from '@blocksuite/affine-inline-latex/store';
|
||||
import { LinkStoreExtension } from '@blocksuite/affine-inline-link/store';
|
||||
import { ReferenceStoreExtension } from '@blocksuite/affine-inline-reference/store';
|
||||
|
||||
function getAdapterFactoryExtensions(): ExtensionType[] {
|
||||
import { MigratingStoreExtension } from './migrating-store';
|
||||
|
||||
export function getInternalStoreExtensions() {
|
||||
return [
|
||||
MarkdownAdapterFactoryExtension,
|
||||
PlainTextAdapterFactoryExtension,
|
||||
HtmlAdapterFactoryExtension,
|
||||
NotionTextAdapterFactoryExtension,
|
||||
NotionHtmlAdapterFactoryExtension,
|
||||
MixTextAdapterFactoryExtension,
|
||||
AttachmentStoreExtension,
|
||||
BookmarkStoreExtension,
|
||||
CalloutStoreExtension,
|
||||
CodeStoreExtension,
|
||||
DataViewStoreExtension,
|
||||
DatabaseStoreExtension,
|
||||
DividerStoreExtension,
|
||||
EdgelessTextStoreExtension,
|
||||
EmbedStoreExtension,
|
||||
FrameStoreExtension,
|
||||
ImageStoreExtension,
|
||||
LatexStoreExtension,
|
||||
ListStoreExtension,
|
||||
NoteStoreExtension,
|
||||
ParagraphStoreExtension,
|
||||
SurfaceRefStoreExtension,
|
||||
TableStoreExtension,
|
||||
|
||||
FootnoteStoreExtension,
|
||||
LinkStoreExtension,
|
||||
ReferenceStoreExtension,
|
||||
InlineLatexStoreExtension,
|
||||
|
||||
MigratingStoreExtension,
|
||||
];
|
||||
}
|
||||
|
||||
const defaultBlockHtmlAdapterMatchers = [RootBlockHtmlAdapterExtension];
|
||||
|
||||
const defaultBlockMarkdownAdapterMatchers = [RootBlockMarkdownAdapterExtension];
|
||||
|
||||
const defaultBlockNotionHtmlAdapterMatchers: ExtensionType[] = [
|
||||
RootBlockNotionHtmlAdapterExtension,
|
||||
];
|
||||
|
||||
function getHtmlAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...HtmlInlineToDeltaAdapterExtensions,
|
||||
...defaultBlockHtmlAdapterMatchers,
|
||||
...InlineDeltaToHtmlAdapterExtensions,
|
||||
];
|
||||
}
|
||||
|
||||
function getMarkdownAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...MarkdownInlineToDeltaAdapterExtensions,
|
||||
...defaultBlockMarkdownAdapterMatchers,
|
||||
...InlineDeltaToMarkdownAdapterExtensions,
|
||||
];
|
||||
}
|
||||
|
||||
function getNotionHtmlAdapterExtensions(): ExtensionType[] {
|
||||
return [
|
||||
...NotionHtmlInlineToDeltaAdapterExtensions,
|
||||
...defaultBlockNotionHtmlAdapterMatchers,
|
||||
];
|
||||
}
|
||||
|
||||
function getPlainTextAdapterExtensions(): ExtensionType[] {
|
||||
return [...InlineDeltaToPlainTextAdapterExtensions];
|
||||
}
|
||||
|
||||
const MigratingStoreExtensions: ExtensionType[] = [
|
||||
RootBlockSchemaExtension,
|
||||
SurfaceBlockSchemaExtension,
|
||||
TranscriptionBlockSchemaExtension,
|
||||
|
||||
BlockSelectionExtension,
|
||||
TextSelectionExtension,
|
||||
SurfaceSelectionExtension,
|
||||
CursorSelectionExtension,
|
||||
HighlightSelectionExtension,
|
||||
DatabaseSelectionExtension,
|
||||
|
||||
getHtmlAdapterExtensions(),
|
||||
getMarkdownAdapterExtensions(),
|
||||
getNotionHtmlAdapterExtensions(),
|
||||
getPlainTextAdapterExtensions(),
|
||||
getAdapterFactoryExtensions(),
|
||||
|
||||
FeatureFlagService,
|
||||
LinkPreviewerService,
|
||||
FileSizeLimitService,
|
||||
BlockMetaService,
|
||||
].flat();
|
||||
|
||||
export class MigratingStoreExtension extends StoreExtensionProvider {
|
||||
override name = 'migrating';
|
||||
|
||||
override setup(context: StoreExtensionContext) {
|
||||
super.setup(context);
|
||||
context.register(MigratingStoreExtensions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,42 +1,56 @@
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
ViewExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
import { AttachmentViewExtension } from '@blocksuite/affine-block-attachment/view';
|
||||
import { BookmarkViewExtension } from '@blocksuite/affine-block-bookmark/view';
|
||||
import { CalloutViewExtension } from '@blocksuite/affine-block-callout/view';
|
||||
import { CodeBlockViewExtension } from '@blocksuite/affine-block-code/view';
|
||||
import { DataViewViewExtension } from '@blocksuite/affine-block-data-view/view';
|
||||
import { DatabaseViewExtension } from '@blocksuite/affine-block-database/view';
|
||||
import { DividerViewExtension } from '@blocksuite/affine-block-divider/view';
|
||||
import { EdgelessTextViewExtension } from '@blocksuite/affine-block-edgeless-text/view';
|
||||
import { EmbedViewExtension } from '@blocksuite/affine-block-embed/view';
|
||||
import { FrameViewExtension } from '@blocksuite/affine-block-frame/view';
|
||||
import { ImageViewExtension } from '@blocksuite/affine-block-image/view';
|
||||
import { LatexViewExtension } from '@blocksuite/affine-block-latex/view';
|
||||
import { ListViewExtension } from '@blocksuite/affine-block-list/view';
|
||||
import { NoteViewExtension } from '@blocksuite/affine-block-note/view';
|
||||
import { ParagraphViewExtension } from '@blocksuite/affine-block-paragraph/view';
|
||||
import { SurfaceRefViewExtension } from '@blocksuite/affine-block-surface-ref/view';
|
||||
import { TableViewExtension } from '@blocksuite/affine-block-table/view';
|
||||
import { FootnoteViewExtension } from '@blocksuite/affine-inline-footnote/view';
|
||||
import { LatexViewExtension as InlineLatexViewExtension } from '@blocksuite/affine-inline-latex/view';
|
||||
import { LinkViewExtension } from '@blocksuite/affine-inline-link/view';
|
||||
import { MentionViewExtension } from '@blocksuite/affine-inline-mention/view';
|
||||
import { ReferenceViewExtension } from '@blocksuite/affine-inline-reference/view';
|
||||
|
||||
import { effects } from './effects';
|
||||
import {
|
||||
MigratingEdgelessEditorBlockSpecs,
|
||||
MigratingPageEditorBlockSpecs,
|
||||
MigratingPreviewEdgelessEditorBlockSpecs,
|
||||
MigratingPreviewPageEditorBlockSpecs,
|
||||
} from './migrating';
|
||||
import { MigratingViewExtension } from './migrating-view';
|
||||
|
||||
export class MigratingViewExtension extends ViewExtensionProvider {
|
||||
override name = 'migrating';
|
||||
export function getInternalViewExtensions() {
|
||||
return [
|
||||
MigratingViewExtension,
|
||||
|
||||
override effect() {
|
||||
super.effect();
|
||||
effects();
|
||||
}
|
||||
// Block
|
||||
AttachmentViewExtension,
|
||||
BookmarkViewExtension,
|
||||
CalloutViewExtension,
|
||||
CodeBlockViewExtension,
|
||||
DataViewViewExtension,
|
||||
DatabaseViewExtension,
|
||||
DividerViewExtension,
|
||||
EdgelessTextViewExtension,
|
||||
EmbedViewExtension,
|
||||
FrameViewExtension,
|
||||
ImageViewExtension,
|
||||
LatexViewExtension,
|
||||
ListViewExtension,
|
||||
NoteViewExtension,
|
||||
ParagraphViewExtension,
|
||||
SurfaceRefViewExtension,
|
||||
TableViewExtension,
|
||||
|
||||
override setup(context: ViewExtensionContext) {
|
||||
super.setup(context);
|
||||
const scope = context.scope;
|
||||
if (scope === 'preview-page') {
|
||||
context.register(MigratingPreviewPageEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
if (scope === 'preview-edgeless') {
|
||||
context.register(MigratingPreviewEdgelessEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
if (scope === 'page' || scope === 'mobile-page') {
|
||||
context.register(MigratingPageEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
if (scope === 'edgeless' || scope === 'mobile-edgeless') {
|
||||
context.register(MigratingEdgelessEditorBlockSpecs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Inline
|
||||
FootnoteViewExtension,
|
||||
LinkViewExtension,
|
||||
ReferenceViewExtension,
|
||||
InlineLatexViewExtension,
|
||||
MentionViewExtension,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export * from '@blocksuite/affine-inline-latex/store';
|
||||
@@ -0,0 +1 @@
|
||||
export * from '@blocksuite/affine-inline-latex/view';
|
||||
@@ -0,0 +1 @@
|
||||
export * from '@blocksuite/affine-inline-mention/view';
|
||||
@@ -0,0 +1 @@
|
||||
export * from '@blocksuite/affine-inline-reference/store';
|
||||
@@ -0,0 +1 @@
|
||||
export * from '@blocksuite/affine-inline-reference/view';
|
||||
@@ -7,7 +7,6 @@ import {
|
||||
} from '@blocksuite/affine-shared/adapters';
|
||||
import type { DeltaInsert } from '@blocksuite/store';
|
||||
import { nanoid } from '@blocksuite/store';
|
||||
import { bundledLanguagesInfo, codeToHast } from 'shiki';
|
||||
|
||||
export const codeBlockHtmlAdapterMatcher: BlockHtmlAdapterMatcher = {
|
||||
flavour: CodeBlockSchema.model.flavour,
|
||||
@@ -69,24 +68,38 @@ export const codeBlockHtmlAdapterMatcher: BlockHtmlAdapterMatcher = {
|
||||
enter: async (o, context) => {
|
||||
const { walkerContext } = context;
|
||||
const rawLang = o.node.props.language as string | null;
|
||||
const matchedLang = rawLang
|
||||
? (bundledLanguagesInfo.find(
|
||||
info =>
|
||||
info.id === rawLang ||
|
||||
info.name === rawLang ||
|
||||
info.aliases?.includes(rawLang)
|
||||
)?.id ?? 'text')
|
||||
: 'text';
|
||||
|
||||
const text = (o.node.props.text as Record<string, unknown>)
|
||||
.delta as DeltaInsert[];
|
||||
const code = text.map(delta => delta.insert).join('');
|
||||
const hast = await codeToHast(code, {
|
||||
lang: matchedLang,
|
||||
theme: 'light-plus',
|
||||
});
|
||||
|
||||
walkerContext.openNode(hast as never, 'children').closeNode();
|
||||
walkerContext
|
||||
.openNode(
|
||||
{
|
||||
type: 'element',
|
||||
tagName: 'pre',
|
||||
properties: {},
|
||||
children: [],
|
||||
},
|
||||
'children'
|
||||
)
|
||||
.openNode(
|
||||
{
|
||||
type: 'element',
|
||||
tagName: 'code',
|
||||
properties: {
|
||||
className: [`code-${rawLang ?? 'text'}`],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
type: 'text',
|
||||
value: code,
|
||||
},
|
||||
],
|
||||
},
|
||||
'children'
|
||||
)
|
||||
.closeNode()
|
||||
.closeNode();
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@blocksuite/affine-components": "workspace:*",
|
||||
"@blocksuite/affine-ext-loader": "workspace:*",
|
||||
"@blocksuite/affine-inline-reference": "workspace:*",
|
||||
"@blocksuite/affine-model": "workspace:*",
|
||||
"@blocksuite/affine-rich-text": "workspace:*",
|
||||
@@ -40,7 +41,9 @@
|
||||
},
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./effects": "./src/effects.ts"
|
||||
"./effects": "./src/effects.ts",
|
||||
"./view": "./src/view.ts",
|
||||
"./store": "./src/store.ts"
|
||||
},
|
||||
"files": [
|
||||
"src",
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
type StoreExtensionContext,
|
||||
StoreExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
|
||||
import {
|
||||
latexDeltaMarkdownAdapterMatch,
|
||||
latexDeltaToMarkdownAdapterMatcher,
|
||||
markdownInlineMathToDeltaMatcher,
|
||||
} from './adapters';
|
||||
|
||||
export class LatexStoreExtension extends StoreExtensionProvider {
|
||||
override name = 'affine-latex-inline';
|
||||
|
||||
override setup(context: StoreExtensionContext) {
|
||||
super.setup(context);
|
||||
context.register(latexDeltaMarkdownAdapterMatch);
|
||||
context.register(latexDeltaToMarkdownAdapterMatcher);
|
||||
context.register(markdownInlineMathToDeltaMatcher);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
ViewExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
|
||||
import { effects } from './effects';
|
||||
import {
|
||||
LatexEditorUnitSpecExtension,
|
||||
LatexInlineSpecExtension,
|
||||
} from './inline-spec';
|
||||
import { LatexEditorInlineManagerExtension } from './latex-node/latex-editor-menu';
|
||||
|
||||
export class LatexViewExtension extends ViewExtensionProvider {
|
||||
override name = 'affine-latex-inline';
|
||||
|
||||
override effect(): void {
|
||||
super.effect();
|
||||
effects();
|
||||
}
|
||||
|
||||
override setup(context: ViewExtensionContext) {
|
||||
super.setup(context);
|
||||
context.register([
|
||||
LatexInlineSpecExtension,
|
||||
LatexEditorUnitSpecExtension,
|
||||
LatexEditorInlineManagerExtension,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
"include": ["./src"],
|
||||
"references": [
|
||||
{ "path": "../../components" },
|
||||
{ "path": "../../ext-loader" },
|
||||
{ "path": "../reference" },
|
||||
{ "path": "../../model" },
|
||||
{ "path": "../../rich-text" },
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@blocksuite/affine-components": "workspace:*",
|
||||
"@blocksuite/affine-ext-loader": "workspace:*",
|
||||
"@blocksuite/affine-model": "workspace:*",
|
||||
"@blocksuite/affine-shared": "workspace:*",
|
||||
"@blocksuite/global": "workspace:*",
|
||||
@@ -33,7 +34,8 @@
|
||||
},
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./effects": "./src/effects.ts"
|
||||
"./effects": "./src/effects.ts",
|
||||
"./view": "./src/view.ts"
|
||||
},
|
||||
"files": [
|
||||
"src",
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
ViewExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
|
||||
import { effects } from './effects';
|
||||
import { MentionInlineSpecExtension } from './inline-spec';
|
||||
|
||||
export class MentionViewExtension extends ViewExtensionProvider {
|
||||
override name = 'affine-mention-inline';
|
||||
|
||||
override effect(): void {
|
||||
super.effect();
|
||||
effects();
|
||||
}
|
||||
|
||||
override setup(context: ViewExtensionContext): void {
|
||||
super.setup(context);
|
||||
context.register(MentionInlineSpecExtension);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
"include": ["./src"],
|
||||
"references": [
|
||||
{ "path": "../../components" },
|
||||
{ "path": "../../ext-loader" },
|
||||
{ "path": "../../model" },
|
||||
{ "path": "../../shared" },
|
||||
{ "path": "../../../framework/global" },
|
||||
|
||||
@@ -5,12 +5,10 @@ import { InlineDeltaToHtmlAdapterExtensions } from './html/inline-delta';
|
||||
import { InlineDeltaToMarkdownAdapterExtensions } from './markdown/inline-delta';
|
||||
import { MarkdownInlineToDeltaAdapterExtensions } from './markdown/markdown-inline';
|
||||
import { NotionHtmlInlineToDeltaAdapterExtensions } from './notion-html/html-inline';
|
||||
import { InlineDeltaToPlainTextAdapterExtensions } from './plain-text/inline-delta';
|
||||
|
||||
export const InlineAdapterExtensions: ExtensionType[] = [
|
||||
HtmlInlineToDeltaAdapterExtensions,
|
||||
InlineDeltaToHtmlAdapterExtensions,
|
||||
InlineDeltaToPlainTextAdapterExtensions,
|
||||
NotionHtmlInlineToDeltaAdapterExtensions,
|
||||
InlineDeltaToMarkdownAdapterExtensions,
|
||||
MarkdownInlineToDeltaAdapterExtensions,
|
||||
@@ -21,4 +19,3 @@ export * from './html/inline-delta';
|
||||
export * from './markdown/inline-delta';
|
||||
export * from './markdown/markdown-inline';
|
||||
export * from './notion-html/html-inline';
|
||||
export * from './plain-text/inline-delta';
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { referenceDeltaToHtmlAdapterMatcher } from '@blocksuite/affine-inline-reference';
|
||||
import type { InlineHtmlAST } from '@blocksuite/affine-shared/adapters';
|
||||
import { InlineDeltaToHtmlAdapterExtension } from '@blocksuite/affine-shared/adapters';
|
||||
import { ThemeProvider } from '@blocksuite/affine-shared/services';
|
||||
@@ -152,5 +151,4 @@ export const InlineDeltaToHtmlAdapterExtensions = [
|
||||
highlightBackgroundDeltaToHtmlAdapterMatcher,
|
||||
highlightColorDeltaToHtmlAdapterMatcher,
|
||||
inlineCodeDeltaToHtmlAdapterMatcher,
|
||||
referenceDeltaToHtmlAdapterMatcher,
|
||||
];
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { latexDeltaToMarkdownAdapterMatcher } from '@blocksuite/affine-inline-latex';
|
||||
import { referenceDeltaToMarkdownAdapterMatcher } from '@blocksuite/affine-inline-reference';
|
||||
import { InlineDeltaToMarkdownAdapterExtension } from '@blocksuite/affine-shared/adapters';
|
||||
|
||||
export const boldDeltaToMarkdownAdapterMatcher =
|
||||
@@ -52,10 +50,8 @@ export const inlineCodeDeltaToMarkdownAdapterMatcher =
|
||||
});
|
||||
|
||||
export const InlineDeltaToMarkdownAdapterExtensions = [
|
||||
referenceDeltaToMarkdownAdapterMatcher,
|
||||
inlineCodeDeltaToMarkdownAdapterMatcher,
|
||||
boldDeltaToMarkdownAdapterMatcher,
|
||||
italicDeltaToMarkdownAdapterMatcher,
|
||||
strikeDeltaToMarkdownAdapterMatcher,
|
||||
latexDeltaToMarkdownAdapterMatcher,
|
||||
];
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { markdownInlineMathToDeltaMatcher } from '@blocksuite/affine-inline-latex';
|
||||
import { MarkdownASTToDeltaExtension } from '@blocksuite/affine-shared/adapters';
|
||||
|
||||
export const markdownTextToDeltaMatcher = MarkdownASTToDeltaExtension({
|
||||
@@ -94,7 +93,6 @@ export const MarkdownInlineToDeltaAdapterExtensions = [
|
||||
markdownStrongToDeltaMatcher,
|
||||
markdownEmphasisToDeltaMatcher,
|
||||
markdownDeleteToDeltaMatcher,
|
||||
markdownInlineMathToDeltaMatcher,
|
||||
markdownListToDeltaMatcher,
|
||||
markdownHtmlToDeltaMatcher,
|
||||
];
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
import { latexDeltaMarkdownAdapterMatch } from '@blocksuite/affine-inline-latex';
|
||||
import { referenceDeltaMarkdownAdapterMatch } from '@blocksuite/affine-inline-reference';
|
||||
import type { ExtensionType } from '@blocksuite/store';
|
||||
|
||||
export const InlineDeltaToPlainTextAdapterExtensions: ExtensionType[] = [
|
||||
referenceDeltaMarkdownAdapterMatch,
|
||||
latexDeltaMarkdownAdapterMatch,
|
||||
];
|
||||
@@ -1,6 +1,3 @@
|
||||
import { inlineLatexExtensions } from '@blocksuite/affine-inline-latex';
|
||||
import { inlineMentionExtensions } from '@blocksuite/affine-inline-mention';
|
||||
import { inlineReferenceExtensions } from '@blocksuite/affine-inline-reference';
|
||||
import type { AffineTextAttributes } from '@blocksuite/affine-shared/types';
|
||||
import {
|
||||
type InlineRootElement,
|
||||
@@ -104,7 +101,4 @@ export const InlineSpecExtensions: ExtensionType[] = [
|
||||
CodeInlineSpecExtension,
|
||||
BackgroundInlineSpecExtension,
|
||||
ColorInlineSpecExtension,
|
||||
...inlineReferenceExtensions,
|
||||
...inlineLatexExtensions,
|
||||
...inlineMentionExtensions,
|
||||
];
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@blocksuite/affine-components": "workspace:*",
|
||||
"@blocksuite/affine-ext-loader": "workspace:*",
|
||||
"@blocksuite/affine-model": "workspace:*",
|
||||
"@blocksuite/affine-shared": "workspace:*",
|
||||
"@blocksuite/global": "workspace:*",
|
||||
@@ -33,7 +34,9 @@
|
||||
},
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./effects": "./src/effects.ts"
|
||||
"./effects": "./src/effects.ts",
|
||||
"./store": "./src/store.ts",
|
||||
"./view": "./src/view.ts"
|
||||
},
|
||||
"files": [
|
||||
"src",
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
type StoreExtensionContext,
|
||||
StoreExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
|
||||
import {
|
||||
referenceDeltaMarkdownAdapterMatch,
|
||||
referenceDeltaToHtmlAdapterMatcher,
|
||||
referenceDeltaToMarkdownAdapterMatcher,
|
||||
} from './adapters';
|
||||
|
||||
export class ReferenceStoreExtension extends StoreExtensionProvider {
|
||||
override name = 'affine-reference-inline';
|
||||
|
||||
override setup(context: StoreExtensionContext) {
|
||||
super.setup(context);
|
||||
context.register(referenceDeltaToHtmlAdapterMatcher);
|
||||
context.register(referenceDeltaToMarkdownAdapterMatcher);
|
||||
context.register(referenceDeltaMarkdownAdapterMatch);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
ViewExtensionProvider,
|
||||
} from '@blocksuite/affine-ext-loader';
|
||||
|
||||
import { effects } from './effects';
|
||||
import { ReferenceInlineSpecExtension } from './inline-spec';
|
||||
import { RefNodeSlotsExtension } from './reference-node';
|
||||
import { referenceNodeToolbar } from './toolbar';
|
||||
|
||||
export class ReferenceViewExtension extends ViewExtensionProvider {
|
||||
override name = 'affine-reference-inline';
|
||||
|
||||
override effect(): void {
|
||||
super.effect();
|
||||
effects();
|
||||
}
|
||||
|
||||
override setup(context: ViewExtensionContext) {
|
||||
super.setup(context);
|
||||
context.register(referenceNodeToolbar);
|
||||
context.register(ReferenceInlineSpecExtension);
|
||||
context.register(RefNodeSlotsExtension);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
"include": ["./src"],
|
||||
"references": [
|
||||
{ "path": "../../components" },
|
||||
{ "path": "../../ext-loader" },
|
||||
{ "path": "../../model" },
|
||||
{ "path": "../../shared" },
|
||||
{ "path": "../../../framework/global" },
|
||||
|
||||
@@ -1,49 +1,7 @@
|
||||
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 { SurfaceRefStoreExtension } from '@blocksuite/affine/blocks/surface-ref/store';
|
||||
import { TableStoreExtension } from '@blocksuite/affine/blocks/table/store';
|
||||
import { StoreExtensionManager } from '@blocksuite/affine/ext-loader';
|
||||
import { MigratingStoreExtension } from '@blocksuite/affine/extensions/store';
|
||||
import { FootnoteStoreExtension } from '@blocksuite/affine/inlines/footnote/store';
|
||||
import { LinkStoreExtension } from '@blocksuite/affine/inlines/link/store';
|
||||
import { getInternalStoreExtensions } from '@blocksuite/affine/extensions/store';
|
||||
|
||||
const manager = new StoreExtensionManager([
|
||||
AttachmentStoreExtension,
|
||||
BookmarkStoreExtension,
|
||||
CalloutStoreExtension,
|
||||
CodeStoreExtension,
|
||||
DataViewStoreExtension,
|
||||
DatabaseStoreExtension,
|
||||
DividerStoreExtension,
|
||||
EdgelessTextStoreExtension,
|
||||
EmbedStoreExtension,
|
||||
FrameStoreExtension,
|
||||
ImageStoreExtension,
|
||||
LatexStoreExtension,
|
||||
ListStoreExtension,
|
||||
NoteStoreExtension,
|
||||
ParagraphStoreExtension,
|
||||
SurfaceRefStoreExtension,
|
||||
TableStoreExtension,
|
||||
|
||||
FootnoteStoreExtension,
|
||||
LinkStoreExtension,
|
||||
|
||||
MigratingStoreExtension,
|
||||
]);
|
||||
const manager = new StoreExtensionManager(getInternalStoreExtensions());
|
||||
|
||||
export function getTestStoreManager() {
|
||||
return manager;
|
||||
|
||||
@@ -1,51 +1,8 @@
|
||||
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 { SurfaceRefViewExtension } from '@blocksuite/affine/blocks/surface-ref/view';
|
||||
import { TableViewExtension } from '@blocksuite/affine/blocks/table/view';
|
||||
import { ViewExtensionManager } from '@blocksuite/affine/ext-loader';
|
||||
import { MigratingViewExtension } from '@blocksuite/affine/extensions/view';
|
||||
import { FootnoteViewExtension } from '@blocksuite/affine/inlines/footnote/view';
|
||||
import { LinkViewExtension } from '@blocksuite/affine/inlines/link/view';
|
||||
import { getInternalViewExtensions } from '@blocksuite/affine/extensions/view';
|
||||
|
||||
const manager = new ViewExtensionManager(getInternalViewExtensions());
|
||||
|
||||
export function getTestViewManager() {
|
||||
const manager = new ViewExtensionManager([
|
||||
MigratingViewExtension,
|
||||
|
||||
// Block
|
||||
AttachmentViewExtension,
|
||||
BookmarkViewExtension,
|
||||
CalloutViewExtension,
|
||||
CodeBlockViewExtension,
|
||||
DataViewViewExtension,
|
||||
DatabaseViewExtension,
|
||||
DividerViewExtension,
|
||||
EdgelessTextViewExtension,
|
||||
EmbedViewExtension,
|
||||
FrameViewExtension,
|
||||
ImageViewExtension,
|
||||
LatexViewExtension,
|
||||
ListViewExtension,
|
||||
NoteViewExtension,
|
||||
ParagraphViewExtension,
|
||||
SurfaceRefViewExtension,
|
||||
TableViewExtension,
|
||||
|
||||
// Inline
|
||||
FootnoteViewExtension,
|
||||
LinkViewExtension,
|
||||
]);
|
||||
return manager;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { StoreExtensionManager } from '@blocksuite/affine/ext-loader';
|
||||
import { getInternalStoreExtensions } from '@blocksuite/affine/extensions/store';
|
||||
|
||||
const manager = new StoreExtensionManager(getInternalStoreExtensions());
|
||||
|
||||
export function getStoreManager() {
|
||||
return manager;
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
import { getMarkdownAdapterExtensions } from '@blocksuite/affine/adapters';
|
||||
import { Container } from '@blocksuite/affine/global/di';
|
||||
import type {
|
||||
AttachmentBlockModel,
|
||||
@@ -28,6 +27,7 @@ import {
|
||||
} from 'yjs';
|
||||
|
||||
import { IndexerDocument } from '../../storage';
|
||||
import { getStoreManager } from './bs-store';
|
||||
|
||||
const blocksuiteSchema = new Schema();
|
||||
blocksuiteSchema.register([...AffineSchemas]);
|
||||
@@ -119,9 +119,11 @@ function generateMarkdownPreviewBuilder(
|
||||
};
|
||||
|
||||
const container = new Container();
|
||||
getMarkdownAdapterExtensions().forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
getStoreManager()
|
||||
.get('store')
|
||||
.forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
|
||||
const provider = container.provider();
|
||||
const markdownAdapter = new MarkdownAdapter(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { getStoreManager } from '@affine/core/blocksuite/manager/migrating-store';
|
||||
import { AffineContext } from '@affine/core/components/context';
|
||||
import { AppFallback } from '@affine/core/mobile/components/app-fallback';
|
||||
import { configureMobileModules } from '@affine/core/mobile/modules';
|
||||
@@ -30,7 +31,6 @@ import { configureBrowserWorkspaceFlavours } from '@affine/core/modules/workspac
|
||||
import { getWorkerUrl } from '@affine/env/worker';
|
||||
import { I18n } from '@affine/i18n';
|
||||
import { StoreManagerClient } from '@affine/nbstore/worker/client';
|
||||
import { getMarkdownAdapterExtensions } from '@blocksuite/affine/adapters';
|
||||
import { Container } from '@blocksuite/affine/global/di';
|
||||
import {
|
||||
docLinkBaseURLMiddleware,
|
||||
@@ -251,9 +251,11 @@ framework.scope(ServerScope).override(AuthProvider, resolver => {
|
||||
const snapshot = transformer.docToSnapshot(blockSuiteDoc);
|
||||
|
||||
const container = new Container();
|
||||
getMarkdownAdapterExtensions().forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
getStoreManager()
|
||||
.get('store')
|
||||
.forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
const provider = container.provider();
|
||||
|
||||
const adapter = new MarkdownAdapter(transformer, provider);
|
||||
|
||||
@@ -39,7 +39,6 @@ import { configureBrowserWorkspaceFlavours } from '@affine/core/modules/workspac
|
||||
import { getWorkerUrl } from '@affine/env/worker';
|
||||
import { I18n } from '@affine/i18n';
|
||||
import { StoreManagerClient } from '@affine/nbstore/worker/client';
|
||||
import { getMarkdownAdapterExtensions } from '@blocksuite/affine/adapters';
|
||||
import { Container } from '@blocksuite/affine/global/di';
|
||||
import {
|
||||
docLinkBaseURLMiddleware,
|
||||
@@ -263,9 +262,11 @@ const frameworkProvider = framework.provider();
|
||||
const snapshot = transformer.docToSnapshot(blockSuiteDoc);
|
||||
|
||||
const container = new Container();
|
||||
getMarkdownAdapterExtensions().forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
getStoreManager()
|
||||
.get('store')
|
||||
.forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
const provider = container.provider();
|
||||
|
||||
const adapter = new MarkdownAdapter(transformer, provider);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { createReactComponentFromLit } from '@affine/component';
|
||||
import { getMarkdownAdapterExtensions } from '@blocksuite/affine/adapters';
|
||||
import {
|
||||
defaultImageProxyMiddleware,
|
||||
ImageProxyService,
|
||||
@@ -36,6 +35,7 @@ import { keyed } from 'lit/directives/keyed.js';
|
||||
import { literal } from 'lit/static-html.js';
|
||||
import React from 'react';
|
||||
|
||||
import { getStoreManager } from '../../manager/migrating-store';
|
||||
import { getViewManager } from '../../manager/migrating-view';
|
||||
import { markDownToDoc } from '../../utils';
|
||||
import type {
|
||||
@@ -231,9 +231,11 @@ export class TextRenderer extends WithDisposable(ShadowlessElement) {
|
||||
provider = this.host.std.store.provider;
|
||||
} else {
|
||||
const container = new Container();
|
||||
getMarkdownAdapterExtensions().forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
getStoreManager()
|
||||
.get('store')
|
||||
.forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
|
||||
provider = container.provider();
|
||||
}
|
||||
|
||||
+6
-4
@@ -1,4 +1,4 @@
|
||||
import { getMarkdownAdapterExtensions } from '@blocksuite/affine/adapters';
|
||||
import { getStoreManager } from '@affine/core/blocksuite/manager/migrating-store.js';
|
||||
import { Container } from '@blocksuite/affine/global/di';
|
||||
import { TestWorkspace } from '@blocksuite/affine/store/test';
|
||||
import { describe, expect, test } from 'vitest';
|
||||
@@ -6,9 +6,11 @@ import { describe, expect, test } from 'vitest';
|
||||
import { markdownToMindmap } from '../mindmap-preview.js';
|
||||
|
||||
const container = new Container();
|
||||
getMarkdownAdapterExtensions().forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
getStoreManager()
|
||||
.get('store')
|
||||
.forEach(ext => {
|
||||
ext.setup(container);
|
||||
});
|
||||
const provider = container.provider();
|
||||
|
||||
describe('markdownToMindmap: convert markdown list to a mind map tree', () => {
|
||||
|
||||
@@ -1,28 +1,9 @@
|
||||
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 { SurfaceRefStoreExtension } from '@blocksuite/affine/blocks/surface-ref/store';
|
||||
import { TableStoreExtension } from '@blocksuite/affine/blocks/table/store';
|
||||
import {
|
||||
type StoreExtensionContext,
|
||||
StoreExtensionManager,
|
||||
StoreExtensionProvider,
|
||||
} from '@blocksuite/affine/ext-loader';
|
||||
import { MigratingStoreExtension } from '@blocksuite/affine/extensions/store';
|
||||
import { FootnoteStoreExtension } from '@blocksuite/affine/inlines/footnote/store';
|
||||
import { LinkStoreExtension } from '@blocksuite/affine/inlines/link/store';
|
||||
import { getInternalStoreExtensions } from '@blocksuite/affine/extensions/store';
|
||||
|
||||
import { AIChatBlockSchemaExtension } from '../ai/blocks/ai-chat-block/model';
|
||||
|
||||
@@ -36,29 +17,7 @@ class MigratingAffineStoreExtension extends StoreExtensionProvider {
|
||||
}
|
||||
|
||||
const manager = new StoreExtensionManager([
|
||||
// Block
|
||||
AttachmentStoreExtension,
|
||||
BookmarkStoreExtension,
|
||||
CalloutStoreExtension,
|
||||
CodeStoreExtension,
|
||||
DataViewStoreExtension,
|
||||
DatabaseStoreExtension,
|
||||
DividerStoreExtension,
|
||||
EdgelessTextStoreExtension,
|
||||
EmbedStoreExtension,
|
||||
FrameStoreExtension,
|
||||
ImageStoreExtension,
|
||||
LatexStoreExtension,
|
||||
ListStoreExtension,
|
||||
NoteStoreExtension,
|
||||
ParagraphStoreExtension,
|
||||
SurfaceRefStoreExtension,
|
||||
TableStoreExtension,
|
||||
// Inline
|
||||
FootnoteStoreExtension,
|
||||
LinkStoreExtension,
|
||||
|
||||
MigratingStoreExtension,
|
||||
...getInternalStoreExtensions(),
|
||||
MigratingAffineStoreExtension,
|
||||
]);
|
||||
|
||||
|
||||
@@ -1,30 +1,11 @@
|
||||
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 { ParagraphViewExtension } from '@blocksuite/affine/blocks/paragraph/view';
|
||||
import { SurfaceRefViewExtension } from '@blocksuite/affine/blocks/surface-ref/view';
|
||||
import { TableViewExtension } from '@blocksuite/affine/blocks/table/view';
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
ViewExtensionManager,
|
||||
ViewExtensionProvider,
|
||||
} from '@blocksuite/affine/ext-loader';
|
||||
import { MigratingViewExtension } from '@blocksuite/affine/extensions/view';
|
||||
import { FootnoteViewExtension } from '@blocksuite/affine/inlines/footnote/view';
|
||||
import { LinkViewExtension } from '@blocksuite/affine/inlines/link/view';
|
||||
import { getInternalViewExtensions } from '@blocksuite/affine/extensions/view';
|
||||
import { ToolbarModuleExtension } from '@blocksuite/affine/shared/services';
|
||||
import { BlockFlavourIdentifier } from '@blocksuite/affine/std';
|
||||
import { FrameworkProvider } from '@toeverything/infra';
|
||||
@@ -147,29 +128,7 @@ class MigratingAffineViewExtension extends ViewExtensionProvider<
|
||||
}
|
||||
|
||||
const manager = new ViewExtensionManager([
|
||||
MigratingViewExtension,
|
||||
|
||||
// Block
|
||||
AttachmentViewExtension,
|
||||
BookmarkViewExtension,
|
||||
CalloutViewExtension,
|
||||
CodeBlockViewExtension,
|
||||
DataViewViewExtension,
|
||||
DatabaseViewExtension,
|
||||
DividerViewExtension,
|
||||
EdgelessTextViewExtension,
|
||||
EmbedViewExtension,
|
||||
FrameViewExtension,
|
||||
ImageViewExtension,
|
||||
LatexViewExtension,
|
||||
ListViewExtension,
|
||||
NoteViewExtension,
|
||||
ParagraphViewExtension,
|
||||
SurfaceRefViewExtension,
|
||||
TableViewExtension,
|
||||
// Inline
|
||||
FootnoteViewExtension,
|
||||
LinkViewExtension,
|
||||
...getInternalViewExtensions(),
|
||||
|
||||
MigratingAffineViewExtension,
|
||||
]);
|
||||
|
||||
@@ -652,6 +652,7 @@ export const PackageList = [
|
||||
name: '@blocksuite/affine-inline-latex',
|
||||
workspaceDependencies: [
|
||||
'blocksuite/affine/components',
|
||||
'blocksuite/affine/ext-loader',
|
||||
'blocksuite/affine/inlines/reference',
|
||||
'blocksuite/affine/model',
|
||||
'blocksuite/affine/rich-text',
|
||||
@@ -680,6 +681,7 @@ export const PackageList = [
|
||||
name: '@blocksuite/affine-inline-mention',
|
||||
workspaceDependencies: [
|
||||
'blocksuite/affine/components',
|
||||
'blocksuite/affine/ext-loader',
|
||||
'blocksuite/affine/model',
|
||||
'blocksuite/affine/shared',
|
||||
'blocksuite/framework/global',
|
||||
@@ -710,6 +712,7 @@ export const PackageList = [
|
||||
name: '@blocksuite/affine-inline-reference',
|
||||
workspaceDependencies: [
|
||||
'blocksuite/affine/components',
|
||||
'blocksuite/affine/ext-loader',
|
||||
'blocksuite/affine/model',
|
||||
'blocksuite/affine/shared',
|
||||
'blocksuite/framework/global',
|
||||
|
||||
@@ -3355,6 +3355,7 @@ __metadata:
|
||||
resolution: "@blocksuite/affine-inline-latex@workspace:blocksuite/affine/inlines/latex"
|
||||
dependencies:
|
||||
"@blocksuite/affine-components": "workspace:*"
|
||||
"@blocksuite/affine-ext-loader": "workspace:*"
|
||||
"@blocksuite/affine-inline-reference": "workspace:*"
|
||||
"@blocksuite/affine-model": "workspace:*"
|
||||
"@blocksuite/affine-rich-text": "workspace:*"
|
||||
@@ -3418,6 +3419,7 @@ __metadata:
|
||||
resolution: "@blocksuite/affine-inline-mention@workspace:blocksuite/affine/inlines/mention"
|
||||
dependencies:
|
||||
"@blocksuite/affine-components": "workspace:*"
|
||||
"@blocksuite/affine-ext-loader": "workspace:*"
|
||||
"@blocksuite/affine-model": "workspace:*"
|
||||
"@blocksuite/affine-shared": "workspace:*"
|
||||
"@blocksuite/global": "workspace:*"
|
||||
@@ -3484,6 +3486,7 @@ __metadata:
|
||||
resolution: "@blocksuite/affine-inline-reference@workspace:blocksuite/affine/inlines/reference"
|
||||
dependencies:
|
||||
"@blocksuite/affine-components": "workspace:*"
|
||||
"@blocksuite/affine-ext-loader": "workspace:*"
|
||||
"@blocksuite/affine-model": "workspace:*"
|
||||
"@blocksuite/affine-shared": "workspace:*"
|
||||
"@blocksuite/global": "workspace:*"
|
||||
|
||||
Reference in New Issue
Block a user