(doc, sel, bias, mayClear)
| 1155 | // Return a selection that does not partially select any atomic |
| 1156 | // ranges. |
| 1157 | function skipAtomicInSelection(doc, sel, bias, mayClear) { |
| 1158 | var out; |
| 1159 | for (var i = 0; i < sel.ranges.length; i++) { |
| 1160 | var range = sel.ranges[i]; |
| 1161 | var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear); |
| 1162 | var newHead = skipAtomic(doc, range.head, bias, mayClear); |
| 1163 | if (out || newAnchor != range.anchor || newHead != range.head) { |
| 1164 | if (!out) out = sel.ranges.slice(0, i); |
| 1165 | out[i] = new Range(newAnchor, newHead); |
| 1166 | } |
| 1167 | } |
| 1168 | return out ? normalizeSelection(out, sel.primIndex) : sel; |
| 1169 | } |
| 1170 | |
| 1171 | // Ensure a given position is not inside an atomic range. |
| 1172 | function skipAtomic(doc, pos, bias, mayClear) { |
no test coverage detected