mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-21 03:51:45 +08:00
refactor(editor): extract markdown adapter (#9443)
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
import type { SurfaceBlockModel } from '@blocksuite/affine-block-surface';
|
||||
import {
|
||||
MindmapStyleFour,
|
||||
@@ -10,7 +9,9 @@ import {
|
||||
type MindmapElementModel,
|
||||
MindmapStyle,
|
||||
} from '@blocksuite/affine-model';
|
||||
import { MarkdownAdapter } from '@blocksuite/affine-shared/adapters';
|
||||
import { BlockStdScope, type EditorHost } from '@blocksuite/block-std';
|
||||
import type { ServiceProvider } from '@blocksuite/global/di';
|
||||
import { WithDisposable } from '@blocksuite/global/utils';
|
||||
import {
|
||||
type Doc,
|
||||
@@ -24,8 +25,8 @@ import { css, html, LitElement, nothing } from 'lit';
|
||||
import { property, query } from 'lit/decorators.js';
|
||||
import { repeat } from 'lit/directives/repeat.js';
|
||||
import { styleMap } from 'lit/directives/style-map.js';
|
||||
import type { Root } from 'mdast';
|
||||
|
||||
import { MarkdownAdapter } from '../../_common/adapters/markdown/index.js';
|
||||
import { MiniMindmapSchema, MiniMindmapSpecs } from './spec.js';
|
||||
|
||||
const mindmapStyles = [
|
||||
@@ -140,7 +141,7 @@ export class MiniMindmapPreview extends WithDisposable(LitElement) {
|
||||
}
|
||||
|
||||
private _toMindmapNode(answer: string, doc: Doc) {
|
||||
return markdownToMindmap(answer, doc);
|
||||
return markdownToMindmap(answer, doc, this.host.std.provider);
|
||||
}
|
||||
|
||||
override connectedCallback(): void {
|
||||
@@ -240,11 +241,15 @@ type Node = {
|
||||
children: Node[];
|
||||
};
|
||||
|
||||
export const markdownToMindmap = (answer: string, doc: Doc) => {
|
||||
export const markdownToMindmap = (
|
||||
answer: string,
|
||||
doc: Doc,
|
||||
provider: ServiceProvider
|
||||
) => {
|
||||
let result: Node | null = null;
|
||||
const job = new Job({ collection: doc.collection });
|
||||
const markdown = new MarkdownAdapter(job);
|
||||
const ast = markdown['_markdownToAst'](answer);
|
||||
const markdown = new MarkdownAdapter(job, provider);
|
||||
const ast: Root = markdown['_markdownToAst'](answer);
|
||||
const traverse = (
|
||||
markdownNode: Unpacked<(typeof ast)['children']>,
|
||||
firstLevel = false
|
||||
|
||||
Reference in New Issue
Block a user