import Underline from './Underline'; import Dot from './Dot'; export const CursorComponent = function (props) { const type = props['data-type']; if (type === 'dot') { return } if (type === 'underline') { return } return null; } export function cursorExtension() { const options = { cursors: { dot: 'dot', underline: 'underline', }, }; const cursorNames = Object.keys(options.cursors).map(e => e.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'); const cursorRegex = new RegExp(`:(${cursorNames}):`); const tokenizerRule = new RegExp(`^${cursorRegex.source}`); return { name: 'cursor', level: 'inline', start(src) { return src.match(cursorRegex)?.index; }, tokenizer(src, tokens) { const match = tokenizerRule.exec(src); if (!match) { return; } const name = match[1]; const cursor = options.cursors[name]; if (!cursor) { return; } return { type: 'cursor', raw: match[0], name, cursor, }; }, renderer(token) { const content = ``; return content; }, }; }