mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-19 19:11:35 +08:00
652d42ba1e
Closes: BS-3254
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import {
|
|
type ViewExtensionContext,
|
|
ViewExtensionProvider,
|
|
} from '@blocksuite/affine-ext-loader';
|
|
import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu';
|
|
import {
|
|
BlockViewExtension,
|
|
FlavourExtension,
|
|
WidgetViewExtension,
|
|
} from '@blocksuite/std';
|
|
import { literal, unsafeStatic } from 'lit/static-html.js';
|
|
|
|
import { getCodeClipboardExtensions } from './clipboard/index.js';
|
|
import {
|
|
CodeBlockInlineManagerExtension,
|
|
CodeBlockUnitSpecExtension,
|
|
} from './code-block-inline.js';
|
|
import { CodeBlockHighlighter } from './code-block-service.js';
|
|
import { CodeKeymapExtension } from './code-keymap.js';
|
|
import { AFFINE_CODE_TOOLBAR_WIDGET } from './code-toolbar/index.js';
|
|
import { codeSlashMenuConfig } from './configs/slash-menu.js';
|
|
import { effects } from './effects.js';
|
|
|
|
export const codeToolbarWidget = WidgetViewExtension(
|
|
'affine:code',
|
|
AFFINE_CODE_TOOLBAR_WIDGET,
|
|
literal`${unsafeStatic(AFFINE_CODE_TOOLBAR_WIDGET)}`
|
|
);
|
|
|
|
export class CodeBlockViewExtension extends ViewExtensionProvider {
|
|
override name = 'affine-code-block';
|
|
|
|
override effect() {
|
|
super.effect();
|
|
effects();
|
|
}
|
|
|
|
override setup(context: ViewExtensionContext) {
|
|
super.setup(context);
|
|
context.register([
|
|
FlavourExtension('affine:code'),
|
|
CodeBlockHighlighter,
|
|
BlockViewExtension('affine:code', literal`affine-code`),
|
|
codeToolbarWidget,
|
|
SlashMenuConfigExtension('affine:code', codeSlashMenuConfig),
|
|
CodeKeymapExtension,
|
|
...getCodeClipboardExtensions(),
|
|
]);
|
|
context.register([
|
|
CodeBlockInlineManagerExtension,
|
|
CodeBlockUnitSpecExtension,
|
|
]);
|
|
}
|
|
}
|