Skip to content
Snippets Groups Projects
markdown.ts 954 B
Newer Older
  • Learn to ignore specific revisions
  • import { newlineToBreak } from 'mdast-util-newline-to-break';
    
    export function sequentialNewlinesPlugin() {
      // Adapted from https://codesandbox.io/s/create-react-app-forked-h3rmcy?file=/src/sequentialNewlinePlugin.js:0-774
      const data = this.data();
    
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      function add(field: string, value: any) {
        const list = data[field] ? data[field] : (data[field] = []);
    
        list.push(value);
      }
    
      add('fromMarkdownExtensions', {
        enter: {
          lineEndingBlank: function enterLineEndingBlank(token: unknown) {
            this.enter(
              {
                type: 'break',
                value: '',
                data: {},
                children: [],
              },
              token,
            );
          },
        },
        exit: {
          lineEndingBlank: function exitLineEndingBlank(token: unknown) {
            this.exit(token);
          },
        },
      });
    }
    
    export function remarkBreaks() {
      return newlineToBreak;
    }