ContextBasedNewLineHandlerExecutor.js 799 B

1234567891011121314151617181920212223242526272829
  1. import * as codemirror from 'codemirror';
  2. import markdownListHelper from './MarkdownListHelper';
  3. import markdownTableHelper from './MarkdownTableHelper';
  4. /**
  5. * Selector for one new line handler
  6. */
  7. class ContextBasedNewLineHandlerExecutor {
  8. /**
  9. * select one handler from helper
  10. * @param {any} editor An editor instance of CodeMirror
  11. */
  12. execNewLineHandler(editor) {
  13. let newLineHelpers = [markdownTableHelper, markdownListHelper];
  14. const helper = newLineHelpers.find( h => h.isMatchedContext(editor));
  15. if (helper != undefined) {
  16. helper.handleNewLine(editor);
  17. } else {
  18. codemirror.commands.newlineAndIndent(editor);
  19. }
  20. }
  21. }
  22. // singleton pattern
  23. const instance = new ContextBasedNewLineHandlerExecutor();
  24. Object.freeze(instance);
  25. export default instance;