MCPcopy Create free account
hub / github.com/breck7/scroll / normalizeSelection

Function normalizeSelection

external/.scrollLibs.js:6362–6384  ·  view source on GitHub ↗
(cm, ranges, primIndex)

Source from the content-addressed store, hash-verified

6360 // build a selection out of it. 'Consumes' ranges array (modifying
6361 // it).
6362 function normalizeSelection(cm, ranges, primIndex) {
6363 var mayTouch = cm && cm.options.selectionsMayTouch
6364 var prim = ranges[primIndex]
6365 ranges.sort(function (a, b) {
6366 return cmp(a.from(), b.from())
6367 })
6368 primIndex = indexOf(ranges, prim)
6369 for (var i = 1; i < ranges.length; i++) {
6370 var cur = ranges[i],
6371 prev = ranges[i - 1]
6372 var diff = cmp(prev.to(), cur.from())
6373 if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {
6374 var from = minPos(prev.from(), cur.from()),
6375 to = maxPos(prev.to(), cur.to())
6376 var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head
6377 if (i <= primIndex) {
6378 --primIndex
6379 }
6380 ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to))
6381 }
6382 }
6383 return new Selection(ranges, primIndex)
6384 }
6385
6386 function simpleSelection(anchor, head) {
6387 return new Selection([new Range(anchor, head || anchor)], 0)

Callers 8

computeSelAfterChangeFunction · 0.85
extendSelectionsFunction · 0.85
replaceOneSelectionFunction · 0.85
filterSelectionChangeFunction · 0.85
skipAtomicInSelectionFunction · 0.85
.scrollLibs.jsFile · 0.85
leftButtonSelectFunction · 0.85
extendToFunction · 0.85

Calls 6

cmpFunction · 0.85
indexOfFunction · 0.85
minPosFunction · 0.85
maxPosFunction · 0.85
sortMethod · 0.80
fromMethod · 0.45

Tested by

no test coverage detected