Test Plan: Pressed `?` on homepage. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5761
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @requires javelin-install
 | 
						|
 * @provides phabricator-textareautils
 | 
						|
 * @javelin
 | 
						|
 */
 | 
						|
 | 
						|
JX.install('TextAreaUtils', {
 | 
						|
  statics : {
 | 
						|
    getSelectionRange : function(area) {
 | 
						|
      var v = area.value;
 | 
						|
 | 
						|
      // NOTE: This works well in Safari, Firefox and Chrome. We'll probably get
 | 
						|
      // less-good behavior on IE.
 | 
						|
 | 
						|
      var s = v.length;
 | 
						|
      var e = v.length;
 | 
						|
 | 
						|
      if ('selectionStart' in area) {
 | 
						|
        s = area.selectionStart;
 | 
						|
        e = area.selectionEnd;
 | 
						|
      }
 | 
						|
 | 
						|
      return {start: s, end: e};
 | 
						|
    },
 | 
						|
 | 
						|
    getSelectionText : function(area) {
 | 
						|
      var v = area.value;
 | 
						|
      var r = JX.TextAreaUtils.getSelectionRange(area);
 | 
						|
      return v.substring(r.start, r.end);
 | 
						|
    },
 | 
						|
 | 
						|
    setSelectionRange : function(area, start, end) {
 | 
						|
      if ('setSelectionRange' in area) {
 | 
						|
        area.focus();
 | 
						|
        area.setSelectionRange(start, end);
 | 
						|
      }
 | 
						|
    },
 | 
						|
 | 
						|
    setSelectionText : function(area, text) {
 | 
						|
      var v = area.value;
 | 
						|
      var r = JX.TextAreaUtils.getSelectionRange(area);
 | 
						|
 | 
						|
      v = v.substring(0, r.start) + text + v.substring(r.end, v.length);
 | 
						|
      area.value = v;
 | 
						|
 | 
						|
      JX.TextAreaUtils.setSelectionRange(area, r.start, r.start + text.length);
 | 
						|
    }
 | 
						|
  }
 | 
						|
});
 |