97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
/*jslint newcap: true */
 | 
						|
/*global inlineAttachment: false */
 | 
						|
/**
 | 
						|
 * CodeMirror version for inlineAttachment
 | 
						|
 *
 | 
						|
 * Call inlineAttachment.attach(editor) to attach to a codemirror instance
 | 
						|
 */
 | 
						|
(function() {
 | 
						|
  'use strict';
 | 
						|
 | 
						|
  var codeMirrorEditor = function(instance) {
 | 
						|
 | 
						|
    if (!instance.getWrapperElement) {
 | 
						|
      throw "Invalid CodeMirror object given";
 | 
						|
    }
 | 
						|
 | 
						|
    this.codeMirror = instance;
 | 
						|
  };
 | 
						|
 | 
						|
  codeMirrorEditor.prototype.getValue = function() {
 | 
						|
    return this.codeMirror.getValue();
 | 
						|
  };
 | 
						|
 | 
						|
  codeMirrorEditor.prototype.insertValue = function(val) {
 | 
						|
    this.codeMirror.replaceSelection(val);
 | 
						|
  };
 | 
						|
 | 
						|
  codeMirrorEditor.prototype.setValue = function(val) {
 | 
						|
    var cursor = this.codeMirror.getCursor();
 | 
						|
    this.codeMirror.setValue(val);
 | 
						|
    this.codeMirror.setCursor(cursor);
 | 
						|
  };
 | 
						|
    
 | 
						|
  codeMirrorEditor.prototype.replaceRange = function(val) {
 | 
						|
    this.codeMirror.replaceRange(val.replacement, val.from, val.to, "+input");
 | 
						|
  };
 | 
						|
 | 
						|
  /**
 | 
						|
   * Attach InlineAttachment to CodeMirror
 | 
						|
   *
 | 
						|
   * @param {CodeMirror} codeMirror
 | 
						|
   */
 | 
						|
  codeMirrorEditor.attach = function(codeMirror, options) {
 | 
						|
 | 
						|
    options = options || {};
 | 
						|
 | 
						|
    var editor = new codeMirrorEditor(codeMirror),
 | 
						|
      inlineattach = new inlineAttachment(options, editor),
 | 
						|
      el = codeMirror.getWrapperElement();
 | 
						|
 | 
						|
    el.addEventListener('paste', function(e) {
 | 
						|
      inlineattach.onPaste(e);
 | 
						|
    }, false);
 | 
						|
 | 
						|
    codeMirror.setOption('onDragEvent', function(data, e) {
 | 
						|
      if (e.type === "drop") {
 | 
						|
        e.stopPropagation();
 | 
						|
        e.preventDefault();
 | 
						|
        return inlineattach.onDrop(e);
 | 
						|
      }
 | 
						|
    });
 | 
						|
  };
 | 
						|
 | 
						|
  inlineAttachment.editors.codemirror3 = codeMirrorEditor;
 | 
						|
 | 
						|
  var codeMirrorEditor4 = function(instance) {
 | 
						|
    codeMirrorEditor.call(this, instance);
 | 
						|
  };
 | 
						|
 | 
						|
  codeMirrorEditor4.attach = function(codeMirror, options) {
 | 
						|
 | 
						|
    options = options || {};
 | 
						|
 | 
						|
    var editor = new codeMirrorEditor(codeMirror),
 | 
						|
      inlineattach = new inlineAttachment(options, editor),
 | 
						|
      el = codeMirror.getWrapperElement();
 | 
						|
 | 
						|
    el.addEventListener('paste', function(e) {
 | 
						|
      inlineattach.onPaste(e);
 | 
						|
    }, false);
 | 
						|
 | 
						|
    codeMirror.on('drop', function(data, e) {
 | 
						|
      if (inlineattach.onDrop(e)) {
 | 
						|
        e.stopPropagation();
 | 
						|
        e.preventDefault();
 | 
						|
        return true;
 | 
						|
      } else {
 | 
						|
        return false;
 | 
						|
      }
 | 
						|
    });
 | 
						|
      
 | 
						|
    return inlineattach;
 | 
						|
  };
 | 
						|
 | 
						|
  inlineAttachment.editors.codemirror4 = codeMirrorEditor4;
 | 
						|
 | 
						|
})(); |