annotate .cms/lib/codemirror/src/edit/main.js @ 0:78edf6b517a0 draft

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