70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
|
// EDITOR CONSTRUCTOR
|
||
|
|
||
|
import { CodeMirror } from "./CodeMirror.js"
|
||
|
export { CodeMirror } from "./CodeMirror.js"
|
||
|
|
||
|
import { eventMixin } from "../util/event.js"
|
||
|
import { indexOf } from "../util/misc.js"
|
||
|
|
||
|
import { defineOptions } from "./options.js"
|
||
|
|
||
|
defineOptions(CodeMirror)
|
||
|
|
||
|
import addEditorMethods from "./methods.js"
|
||
|
|
||
|
addEditorMethods(CodeMirror)
|
||
|
|
||
|
import Doc from "../model/Doc.js"
|
||
|
|
||
|
// Set up methods on CodeMirror's prototype to redirect to the editor's document.
|
||
|
let dontDelegate = "iter insert remove copy getEditor constructor".split(" ")
|
||
|
for (let prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)
|
||
|
CodeMirror.prototype[prop] = (function(method) {
|
||
|
return function() {return method.apply(this.doc, arguments)}
|
||
|
})(Doc.prototype[prop])
|
||
|
|
||
|
eventMixin(Doc)
|
||
|
|
||
|
// INPUT HANDLING
|
||
|
|
||
|
import ContentEditableInput from "../input/ContentEditableInput.js"
|
||
|
import TextareaInput from "../input/TextareaInput.js"
|
||
|
CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}
|
||
|
|
||
|
// MODE DEFINITION AND QUERYING
|
||
|
|
||
|
import { defineMIME, defineMode } from "../modes.js"
|
||
|
|
||
|
// Extra arguments are stored as the mode's dependencies, which is
|
||
|
// used by (legacy) mechanisms like loadmode.js to automatically
|
||
|
// load a mode. (Preferred mechanism is the require/define calls.)
|
||
|
CodeMirror.defineMode = function(name/*, mode, …*/) {
|
||
|
if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name
|
||
|
defineMode.apply(this, arguments)
|
||
|
}
|
||
|
|
||
|
CodeMirror.defineMIME = defineMIME
|
||
|
|
||
|
// Minimal default mode.
|
||
|
CodeMirror.defineMode("null", () => ({token: stream => stream.skipToEnd()}))
|
||
|
CodeMirror.defineMIME("text/plain", "null")
|
||
|
|
||
|
// EXTENSIONS
|
||
|
|
||
|
CodeMirror.defineExtension = (name, func) => {
|
||
|
CodeMirror.prototype[name] = func
|
||
|
}
|
||
|
CodeMirror.defineDocExtension = (name, func) => {
|
||
|
Doc.prototype[name] = func
|
||
|
}
|
||
|
|
||
|
import { fromTextArea } from "./fromTextArea.js"
|
||
|
|
||
|
CodeMirror.fromTextArea = fromTextArea
|
||
|
|
||
|
import { addLegacyProps } from "./legacy.js"
|
||
|
|
||
|
addLegacyProps(CodeMirror)
|
||
|
|
||
|
CodeMirror.version = "5.46.1"
|