a27555ad904a15d2ab3c37cdcb781e1dede2edd437cbecdd3dbcb7cbb86103953e3309546b7a2a4b9b96eb72c42c4d5f96b803542bfecac508caee5467331d 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // EDITOR CONSTRUCTOR
  2. import { CodeMirror } from "./CodeMirror.js"
  3. export { CodeMirror } from "./CodeMirror.js"
  4. import { eventMixin } from "../util/event.js"
  5. import { indexOf } from "../util/misc.js"
  6. import { defineOptions } from "./options.js"
  7. defineOptions(CodeMirror)
  8. import addEditorMethods from "./methods.js"
  9. addEditorMethods(CodeMirror)
  10. import Doc from "../model/Doc.js"
  11. // Set up methods on CodeMirror's prototype to redirect to the editor's document.
  12. let dontDelegate = "iter insert remove copy getEditor constructor".split(" ")
  13. for (let prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)
  14. CodeMirror.prototype[prop] = (function(method) {
  15. return function() {return method.apply(this.doc, arguments)}
  16. })(Doc.prototype[prop])
  17. eventMixin(Doc)
  18. // INPUT HANDLING
  19. import ContentEditableInput from "../input/ContentEditableInput.js"
  20. import TextareaInput from "../input/TextareaInput.js"
  21. CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}
  22. // MODE DEFINITION AND QUERYING
  23. import { defineMIME, defineMode } from "../modes.js"
  24. // Extra arguments are stored as the mode's dependencies, which is
  25. // used by (legacy) mechanisms like loadmode.js to automatically
  26. // load a mode. (Preferred mechanism is the require/define calls.)
  27. CodeMirror.defineMode = function(name/*, mode, …*/) {
  28. if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name
  29. defineMode.apply(this, arguments)
  30. }
  31. CodeMirror.defineMIME = defineMIME
  32. // Minimal default mode.
  33. CodeMirror.defineMode("null", () => ({token: stream => stream.skipToEnd()}))
  34. CodeMirror.defineMIME("text/plain", "null")
  35. // EXTENSIONS
  36. CodeMirror.defineExtension = (name, func) => {
  37. CodeMirror.prototype[name] = func
  38. }
  39. CodeMirror.defineDocExtension = (name, func) => {
  40. Doc.prototype[name] = func
  41. }
  42. import { fromTextArea } from "./fromTextArea.js"
  43. CodeMirror.fromTextArea = fromTextArea
  44. import { addLegacyProps } from "./legacy.js"
  45. addLegacyProps(CodeMirror)
  46. CodeMirror.version = "5.65.20"