drawio-fold.ext.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /* eslint-disable */
  2. import mdu from '../../../components/PageEditor/MarkdownDrawioUtil.js';
  3. (function(mod) {
  4. mod(require("codemirror"));
  5. })(function(CodeMirror) {
  6. "use strict"
  7. CodeMirror.registerGlobalHelper('fold', 'drawio', function (mode, cm) {
  8. return true;
  9. }, function(cm, start) {
  10. function isBeginningOfDrawio(lineNo) {
  11. let line = cm.getLine(lineNo);
  12. let match = mdu.lineBeginPartOfDrawioRE.exec(line);
  13. if (match) {
  14. return true;
  15. }
  16. return false;
  17. }
  18. function isEndOfDrawio(lineNo) {
  19. let line = cm.getLine(lineNo);
  20. let match = mdu.lineEndPartOfDrawioRE.exec(line);
  21. if (match) {
  22. return true;
  23. }
  24. return false;
  25. }
  26. let drawio = isBeginningOfDrawio(start.line);
  27. if (drawio === false) { return; }
  28. let lastLine = cm.lastLine();
  29. let end = start.line;
  30. while(end < lastLine) {
  31. end += 1;
  32. if (isEndOfDrawio(end)) {
  33. break;
  34. }
  35. }
  36. return {
  37. from: CodeMirror.Pos(start.line, cm.getLine(start.line).length),
  38. to: CodeMirror.Pos(end, cm.getLine(end).length)
  39. };
  40. });
  41. });