Mercurial
comparison .cms/lib/codemirror/src/display/gutters.js @ 0:78edf6b517a0 draft
24.10
author | Coffee CMS <info@coffee-cms.ru> |
---|---|
date | Fri, 11 Oct 2024 22:40:23 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78edf6b517a0 |
---|---|
1 import { elt, removeChildren } from "../util/dom.js" | |
2 import { regChange } from "./view_tracking.js" | |
3 import { alignHorizontally } from "./line_numbers.js" | |
4 import { updateGutterSpace } from "./update_display.js" | |
5 | |
6 export function getGutters(gutters, lineNumbers) { | |
7 let result = [], sawLineNumbers = false | |
8 for (let i = 0; i < gutters.length; i++) { | |
9 let name = gutters[i], style = null | |
10 if (typeof name != "string") { style = name.style; name = name.className } | |
11 if (name == "CodeMirror-linenumbers") { | |
12 if (!lineNumbers) continue | |
13 else sawLineNumbers = true | |
14 } | |
15 result.push({className: name, style}) | |
16 } | |
17 if (lineNumbers && !sawLineNumbers) result.push({className: "CodeMirror-linenumbers", style: null}) | |
18 return result | |
19 } | |
20 | |
21 // Rebuild the gutter elements, ensure the margin to the left of the | |
22 // code matches their width. | |
23 export function renderGutters(display) { | |
24 let gutters = display.gutters, specs = display.gutterSpecs | |
25 removeChildren(gutters) | |
26 display.lineGutter = null | |
27 for (let i = 0; i < specs.length; ++i) { | |
28 let {className, style} = specs[i] | |
29 let gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + className)) | |
30 if (style) gElt.style.cssText = style | |
31 if (className == "CodeMirror-linenumbers") { | |
32 display.lineGutter = gElt | |
33 gElt.style.width = (display.lineNumWidth || 1) + "px" | |
34 } | |
35 } | |
36 gutters.style.display = specs.length ? "" : "none" | |
37 updateGutterSpace(display) | |
38 } | |
39 | |
40 export function updateGutters(cm) { | |
41 renderGutters(cm.display) | |
42 regChange(cm) | |
43 alignHorizontally(cm) | |
44 } |