97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*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;
 | |
| 
 | |
| })(); |