(cm, ranges, primIndex)
| 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) |
no test coverage detected