import { BlockService } from '@blockeditor/block-std'; import { InlineManager } from '../_common/inline/inline-manager.js'; import { type AffineTextAttributes, getAffineInlineSpecsWithReference, } from '../_common/inline/presets/affine-inline-specs.js'; import { affineInlineMarkdownMatches } from '../_common/inline/presets/markdown.js'; import { ReferenceNodeConfig } from '../_common/inline/presets/nodes/reference-node/reference-config.js'; import type { ListBlockModel } from './list-model.js'; import { listPrefix, toggleStyles } from './styles.js'; import { ListIcon } from './utils/get-list-icon.js'; export class ListService< TextAttributes extends AffineTextAttributes = AffineTextAttributes, > extends BlockService { readonly inlineManager = new InlineManager(); readonly referenceNodeConfig = new ReferenceNodeConfig(); readonly styles = { icon: ListIcon, prefix: listPrefix, toggle: toggleStyles, }; override mounted(): void { super.mounted(); this.referenceNodeConfig.setPage(this.page); const inlineSpecs = getAffineInlineSpecsWithReference( this.referenceNodeConfig ); this.inlineManager.registerSpecs(inlineSpecs); this.inlineManager.registerMarkdownMatches(affineInlineMarkdownMatches); } }