@curvenote/schema
Version:
Schema and markdown parser for @curvenote/editor
41 lines • 1.15 kB
JavaScript
import { NodeGroups } from './types';
const mention = {
group: NodeGroups.inline,
attrs: { label: { default: '' }, user: { default: '' } },
inline: true,
draggable: true,
selectable: true,
marks: '',
toDOM(node) {
const { label, user } = node.attrs;
return ['span', { title: label, 'data-user': user, class: 'mention' }];
},
parseDOM: [
{
tag: 'span.mention',
getAttrs(dom) {
const label = dom.getAttribute('title') || '';
const user = dom.getAttribute('data-user') || '';
return { label, user };
},
},
],
attrsFromMyst: (token) => ({
user: token.identifier,
label: token.value || '',
}),
toMyst: (props) => ({
type: 'mention',
identifier: props['data-user'],
label: props['data-user'],
value: props.title,
}),
};
export const toMarkdown = (state, node) => {
state.write(node.attrs.label);
};
export const toTex = (state, node) => {
state.write(node.attrs.label);
};
export default mention;
//# sourceMappingURL=mention.js.map