import type {
VueRenderMatchParams,
VueRenderParams,
} from '@fluxdown/vue-base-plugins/base';
import {
BaseVueRenderPlugin,
isElementWithTag,
} from '@fluxdown/vue-base-plugins/base';
import { createTypeOfSlot } from '@fluxdown/vue-lynx-plugins/base';
import { h } from 'vue';
const Blockquote = /*#__PURE__*/ createTypeOfSlot('Blockquote');
export class NoteRenderPlugin extends BaseVueRenderPlugin {
static readonly key = 'render-note';
match({ node }: VueRenderMatchParams) {
if (!isElementWithTag(node, 'p')) {
return false;
}
const first = node.children[0];
return first?.type === 'text' && first.value.startsWith('提示:');
}
render({ node, parents, render, renderChildren }: VueRenderParams) {
if (!isElementWithTag(node, 'p')) {
return null;
}
return h(
Blockquote,
{ current: node, parents, render },
{ default: () => renderChildren(node) },
);
}
}