File modules/editor/codemirror/src/display/update_lines.min.js

Last commit: Tue May 22 22:39:52 2018 +0200	Jan Dankert	Fix für PHP 7.2: 'Object' darf nun nicht mehr als Klassennamen verwendet werden. AUCH NICHT IN EINEM NAMESPACE! WTF, wozu habe ich das in einen verfickten Namespace gepackt? Wozu soll der sonst da sein??? Amateure. Daher nun notgedrungen unbenannt in 'BaseObject'.
1 import { heightAtLine } from "../line/spans.js" 2 import { getLine, lineAtHeight, updateLineHeight } from "../line/utils_line.js" 3 import { paddingTop, textHeight } from "../measurement/position_measurement.js" 4 import { ie, ie_version } from "../util/browser.js" 5 6 // Read the actual heights of the rendered lines, and update their 7 // stored heights to match. 8 export function updateHeightsInViewport(cm) { 9 let display = cm.display 10 let prevBottom = display.lineDiv.offsetTop 11 for (let i = 0; i < display.view.length; i++) { 12 let cur = display.view[i], height 13 if (cur.hidden) continue 14 if (ie && ie_version < 8) { 15 let bot = cur.node.offsetTop + cur.node.offsetHeight 16 height = bot - prevBottom 17 prevBottom = bot 18 } else { 19 let box = cur.node.getBoundingClientRect() 20 height = box.bottom - box.top 21 } 22 let diff = cur.line.height - height 23 if (height < 2) height = textHeight(display) 24 if (diff > .005 || diff < -.005) { 25 updateLineHeight(cur.line, height) 26 updateWidgetHeight(cur.line) 27 if (cur.rest) for (let j = 0; j < cur.rest.length; j++) 28 updateWidgetHeight(cur.rest[j]) 29 } 30 } 31 } 32 33 // Read and store the height of line widgets associated with the 34 // given line. 35 function updateWidgetHeight(line) { 36 if (line.widgets) for (let i = 0; i < line.widgets.length; ++i) { 37 let w = line.widgets[i], parent = w.node.parentNode 38 if (parent) w.height = parent.offsetHeight 39 } 40 } 41 42 // Compute the lines that are visible in a given viewport (defaults 43 // the the current scroll position). viewport may contain top, 44 // height, and ensure (see op.scrollToPos) properties. 45 export function visibleLines(display, doc, viewport) { 46 let top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop 47 top = Math.floor(top - paddingTop(display)) 48 let bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight 49 50 let from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom) 51 // Ensure is a {from: {line, ch}, to: {line, ch}} object, and 52 // forces those lines into the viewport (if possible). 53 if (viewport && viewport.ensure) { 54 let ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line 55 if (ensureFrom < from) { 56 from = ensureFrom 57 to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight) 58 } else if (Math.min(ensureTo, doc.lastLine()) >= to) { 59 from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight) 60 to = ensureTo 61 } 62 } 63 return {from: from, to: Math.max(to, from + 1)} 64 }
Download modules/editor/codemirror/src/display/update_lines.min.js
History Tue, 22 May 2018 22:39:52 +0200 Jan Dankert Fix für PHP 7.2: 'Object' darf nun nicht mehr als Klassennamen verwendet werden. AUCH NICHT IN EINEM NAMESPACE! WTF, wozu habe ich das in einen verfickten Namespace gepackt? Wozu soll der sonst da sein??? Amateure. Daher nun notgedrungen unbenannt in 'BaseObject'.