(cm,event,start,behavior)
| 1584 | if(unit=="line"){return new Range(Pos(pos.line,0),clipPos(cm.doc,Pos(pos.line+1,0)))} |
| 1585 | var result=unit(cm,pos);return new Range(result.from,result.to)} |
| 1586 | function leftButtonSelect(cm,event,start,behavior){if(ie){delayBlurEvent(cm);} |
| 1587 | var display=cm.display,doc=cm.doc;e_preventDefault(event);var ourRange,ourIndex,startSel=doc.sel,ranges=startSel.ranges;if(behavior.addNew&&!behavior.extend){ourIndex=doc.sel.contains(start);if(ourIndex>-1) |
| 1588 | {ourRange=ranges[ourIndex];} |
| 1589 | else |
| 1590 | {ourRange=new Range(start,start);}}else{ourRange=doc.sel.primary();ourIndex=doc.sel.primIndex;} |
| 1591 | if(behavior.unit=="rectangle"){if(!behavior.addNew){ourRange=new Range(start,start);} |
| 1592 | start=posFromMouse(cm,event,true,true);ourIndex=-1;}else{var range=rangeForUnit(cm,start,behavior.unit);if(behavior.extend) |
| 1593 | {ourRange=extendRange(ourRange,range.anchor,range.head,behavior.extend);} |
| 1594 | else |
| 1595 | {ourRange=range;}} |
| 1596 | if(!behavior.addNew){ourIndex=0;setSelection(doc,new Selection([ourRange],0),sel_mouse);startSel=doc.sel;}else if(ourIndex==-1){ourIndex=ranges.length;setSelection(doc,normalizeSelection(cm,ranges.concat([ourRange]),ourIndex),{scroll:false,origin:"*mouse"});}else if(ranges.length>1&&ranges[ourIndex].empty()&&behavior.unit=="char"&&!behavior.extend){setSelection(doc,normalizeSelection(cm,ranges.slice(0,ourIndex).concat(ranges.slice(ourIndex+1)),0),{scroll:false,origin:"*mouse"});startSel=doc.sel;}else{replaceOneSelection(doc,ourIndex,ourRange,sel_mouse);} |
| 1597 | var lastPos=start;function extendTo(pos){if(cmp(lastPos,pos)==0){return} |
| 1598 | lastPos=pos;if(behavior.unit=="rectangle"){var ranges=[],tabSize=cm.options.tabSize;var startCol=countColumn(getLine(doc,start.line).text,start.ch,tabSize);var posCol=countColumn(getLine(doc,pos.line).text,pos.ch,tabSize);var left=Math.min(startCol,posCol),right=Math.max(startCol,posCol);for(var line=Math.min(start.line,pos.line),end=Math.min(cm.lastLine(),Math.max(start.line,pos.line));line<=end;line++){var text=getLine(doc,line).text,leftPos=findColumn(text,left,tabSize);if(left==right) |
| 1599 | {ranges.push(new Range(Pos(line,leftPos),Pos(line,leftPos)));} |
| 1600 | else if(text.length>leftPos) |
| 1601 | {ranges.push(new Range(Pos(line,leftPos),Pos(line,findColumn(text,right,tabSize))));}} |
| 1602 | if(!ranges.length){ranges.push(new Range(start,start));} |
| 1603 | setSelection(doc,normalizeSelection(cm,startSel.ranges.slice(0,ourIndex).concat(ranges),ourIndex),{origin:"*mouse",scroll:false});cm.scrollIntoView(pos);}else{var oldRange=ourRange;var range=rangeForUnit(cm,pos,behavior.unit);var anchor=oldRange.anchor,head;if(cmp(range.anchor,anchor)>0){head=range.head;anchor=minPos(oldRange.from(),range.anchor);}else{head=range.anchor;anchor=maxPos(oldRange.to(),range.head);} |
| 1604 | var ranges$1=startSel.ranges.slice(0);ranges$1[ourIndex]=bidiSimplify(cm,new Range(clipPos(doc,anchor),head));setSelection(doc,normalizeSelection(cm,ranges$1,ourIndex),sel_mouse);}} |
| 1605 | var editorSize=display.wrapper.getBoundingClientRect();var counter=0;function extend(e){var curCount=++counter;var cur=posFromMouse(cm,e,true,behavior.unit=="rectangle");if(!cur){return} |
| 1606 | if(cmp(cur,lastPos)!=0){cm.curOp.focus=activeElt(root(cm));extendTo(cur);var visible=visibleLines(display,doc);if(cur.line>=visible.to||cur.line<visible.from) |
| 1607 | {setTimeout(operation(cm,function(){if(counter==curCount){extend(e);}}),150);}}else{var outside=e.clientY<editorSize.top?-20:e.clientY>editorSize.bottom?20:0;if(outside){setTimeout(operation(cm,function(){if(counter!=curCount){return} |
| 1608 | display.scroller.scrollTop+=outside;extend(e);}),50);}}} |
| 1609 | function done(e){cm.state.selectingText=false;counter=Infinity;if(e){e_preventDefault(e);display.input.focus();} |
| 1610 | off(display.wrapper.ownerDocument,"mousemove",move);off(display.wrapper.ownerDocument,"mouseup",up);doc.history.lastSelOrigin=null;} |
| 1611 | var move=operation(cm,function(e){if(e.buttons===0||!e_button(e)){done(e);} |
| 1612 | else{extend(e);}});var up=operation(cm,done);cm.state.selectingText=up;on(display.wrapper.ownerDocument,"mousemove",move);on(display.wrapper.ownerDocument,"mouseup",up);} |
| 1613 | function bidiSimplify(cm,range){var anchor=range.anchor;var head=range.head;var anchorLine=getLine(cm.doc,anchor.line);if(cmp(anchor,head)==0&&anchor.sticky==head.sticky){return range} |
| 1614 | var order=getOrder(anchorLine);if(!order){return range} |
| 1615 | var index=getBidiPartAt(order,anchor.ch,anchor.sticky),part=order[index];if(part.from!=anchor.ch&&part.to!=anchor.ch){return range} |
no test coverage detected