summaryrefslogtreecommitdiff
path: root/public/vendor/inlineAttachment/codemirror.inline-attachment.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/vendor/inlineAttachment/codemirror.inline-attachment.js')
-rwxr-xr-xpublic/vendor/inlineAttachment/codemirror.inline-attachment.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/public/vendor/inlineAttachment/codemirror.inline-attachment.js b/public/vendor/inlineAttachment/codemirror.inline-attachment.js
new file mode 100755
index 00000000..7816d1c8
--- /dev/null
+++ b/public/vendor/inlineAttachment/codemirror.inline-attachment.js
@@ -0,0 +1,95 @@
+/*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;
+ }
+ });
+ };
+
+ inlineAttachment.editors.codemirror4 = codeMirrorEditor4;
+
+})(); \ No newline at end of file