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