! function(a) { "function" == typeof define && define.amd ? define(["jquery", "codemirror"], a) : a(window.jQuery, window.CodeMirror) }(function(a, b) {
"function" != typeof Array.prototype.reduce && (Array.prototype.reduce = function(a, b) { var c, d, e = this.length >>> 0,
f = !1; for (1 < arguments.length && (d = b, f = !0), c = 0; e > c; ++c) this.hasOwnProperty(c) && (f ? d = a(d, this[c], c, this) : (d = this[c], f = !0)); if (!f) throw new TypeError("Reduce of empty array with no initial value"); return d });
var c = { bMac: navigator.appVersion.indexOf("Mac") > -1, bMSIE: navigator.userAgent.indexOf("MSIE") > -1 || navigator.userAgent.indexOf("Trident") > -1, bFF: navigator.userAgent.indexOf("Firefox") > -1, jqueryVersion: parseFloat(a.fn.jquery), bCodeMirror: !!b },
d = function() { var a = function(a) { return function(b) { return a === b } },
b = function(a, b) { return a === b },
c = function() { return !0 },
d = function() { return !1 },
e = function(a) { return function() { return !a.apply(a, arguments) } },
f = function(a) { return a }; return { eq: a, eq2: b, ok: c, fail: d, not: e, self: f } }(),
e = function() { var a = function(a) { return a[0] },
b = function(a) { return a[a.length - 1] },
c = function(a) { return a.slice(0, a.length - 1) },
e = function(a) { return a.slice(1) },
f = function(a, b) { var c = a.indexOf(b); return -1 === c ? null : a[c + 1] },
g = function(a, b) { var c = a.indexOf(b); return -1 === c ? null : a[c - 1] },
h = function(a, b) { return b = b || d.self, a.reduce(function(a, c) { return a + b(c) }, 0) },
i = function(a) { for (var b = [], c = -1, d = a.length; ++c < d;) b[c] = a[c]; return b },
j = function(c, d) { if (0 === c.length) return []; var f = e(c); return f.reduce(function(a, c) { var e = b(a); return d(b(e), c) ? e[e.length] = c : a[a.length] = [c], a }, [
[a(c)]
]) },
k = function(a) { for (var b = [], c = 0, d = a.length; d > c; c++) a[c] && b.push(a[c]); return b }; return { head: a, last: b, initial: c, tail: e, prev: g, next: f, sum: h, from: i, compact: k, clusterBy: j } }(),
f = function() { var b = function(b) { return b && a(b).hasClass("note-editable") },
g = function(b) { return b && a(b).hasClass("note-control-sizing") },
h = function(a) { var b = function(b) { return function() { return a.find(b) } }; return { editor: function() { return a }, dropzone: b(".note-dropzone"), toolbar: b(".note-toolbar"), editable: b(".note-editable"), codable: b(".note-codable"), statusbar: b(".note-statusbar"), popover: b(".note-popover"), handle: b(".note-handle"), dialog: b(".note-dialog") } },
i = function(a) { return function(b) { return b && b.nodeName === a } },
j = function(a) { return a && /^DIV|^P|^LI|^H[1-7]/.test(a.nodeName) },
k = function(a) { return a && /^UL|^OL/.test(a.nodeName) },
l = function(a) { return a && /^TD|^TH/.test(a.nodeName) },
m = function(a, c) { for (; a;) { if (c(a)) return a; if (b(a)) break;
a = a.parentNode } return null },
n = function(a, b) { b = b || d.fail; var c = []; return m(a, function(a) { return c.push(a), b(a) }), c },
o = function(b, c) { for (var d = n(b), e = c; e; e = e.parentNode)
if (a.inArray(e, d) > -1) return e; return null },
p = function(a, b) { var c = [],
d = !1,
e = !1; return function f(g) { if (g) { if (g === a && (d = !0), d && !e && c.push(g), g === b) return void(e = !0); for (var h = 0, i = g.childNodes.length; i > h; h++) f(g.childNodes[h]) } }(o(a, b)), c },
q = function(a, b) { b = b || d.fail; for (var c = []; a && (c.push(a), !b(a));) a = a.previousSibling; return c },
r = function(a, b) { b = b || d.fail; for (var c = []; a && (c.push(a), !b(a));) a = a.nextSibling; return c },
s = function(a, b) { var c = []; return b = b || d.ok,
function e(d) { a !== d && b(d) && c.push(d); for (var f = 0, g = d.childNodes.length; g > f; f++) e(d.childNodes[f]) }(a), c },
t = function(a, b) { var c = b.nextSibling,
d = b.parentNode; return c ? d.insertBefore(a, c) : d.appendChild(a), a },
u = function(b, c) { return a.each(c, function(a, c) { b.appendChild(c) }), b },
v = i("#text"),
w = function(a) { return v(a) ? a.nodeValue.length : a.childNodes.length },
x = function(a) { for (var b = 0; a = a.previousSibling;) b += 1; return b },
y = function(b, c) { var f = e.initial(n(c, d.eq(b))); return a.map(f, x).reverse() },
z = function(a, b) { for (var c = a, d = 0, e = b.length; e > d; d++) c = c.childNodes[b[d]]; return c },
A = function(a, b) { if (0 === b) return a; if (b >= w(a)) return a.nextSibling; if (v(a)) return a.splitText(b); var c = a.childNodes[b]; return a = t(a.cloneNode(!1), a), u(a, r(c)) },
B = function(a, b, c) { var e = n(b, d.eq(a)); return 1 === e.length ? A(b, c) : e.reduce(function(a, d) { var e = d.cloneNode(!1); return t(e, d), a === b && (a = A(a, c)), u(e, r(a)), e }) },
C = function(a, b) { if (a && a.parentNode) { if (a.removeNode) return a.removeNode(b); var c = a.parentNode; if (!b) { var d, e, f = []; for (d = 0, e = a.childNodes.length; e > d; d++) f.push(a.childNodes[d]); for (d = 0, e = f.length; e > d; d++) c.insertBefore(f[d], a) } c.removeChild(a) } },
D = function(a) { return f.isTextarea(a[0]) ? a.val() : a.html() }; return { blank: c.bMSIE ? " " : "
", emptyPara: "
", isEditable: b, isControlSizing: g, buildLayoutInfo: h, isText: v, isPara: j, isList: k, isTable: i("TABLE"), isCell: l, isAnchor: i("A"), isDiv: i("DIV"), isLi: i("LI"), isSpan: i("SPAN"), isB: i("B"), isU: i("U"), isS: i("S"), isI: i("I"), isImg: i("IMG"), isTextarea: i("TEXTAREA"), ancestor: m, listAncestor: n, listNext: r, listPrev: q, listDescendant: s, commonAncestor: o, listBetween: p, insertAfter: t, position: x, makeOffsetPath: y, fromOffsetPath: z, split: B, remove: C, html: D } }(),
g = { version: "0.5.2", options: { width: null, height: null, focus: !1, tabsize: 4, styleWithSpan: !0, disableLinkTarget: !1, disableDragAndDrop: !1, codemirror: null, lang: "en-US", direction: null, toolbar: [
["style", ["style"]],
["font", ["bold", "italic", "underline", "clear"]],
["fontname", ["fontname"]],
["color", ["color"]],
["para", ["ul", "ol", "paragraph"]],
["height", ["height"]],
["table", ["table"]],
["insert", ["link", "picture", "video"]],
["view", ["fullscreen", "codeview"]],
["help", ["help"]]
], oninit: null, onfocus: null, onblur: null, onenter: null, onkeyup: null, onkeydown: null, onImageUpload: null, onImageUploadError: null, onToolbarClick: null, keyMap: { pc: { "CTRL+Z": "undo", "CTRL+Y": "redo", TAB: "tab", "SHIFT+TAB": "untab", "CTRL+B": "bold", "CTRL+I": "italic", "CTRL+U": "underline", "CTRL+SHIFT+S": "strikethrough", "CTRL+BACKSLASH": "removeFormat", "CTRL+SHIFT+L": "justifyLeft", "CTRL+SHIFT+E": "justifyCenter", "CTRL+SHIFT+R": "justifyRight", "CTRL+SHIFT+J": "justifyFull", "CTRL+SHIFT+NUM7": "insertUnorderedList", "CTRL+SHIFT+NUM8": "insertOrderedList", "CTRL+LEFTBRACKET": "outdent", "CTRL+RIGHTBRACKET": "indent", "CTRL+NUM0": "formatPara", "CTRL+NUM1": "formatH1", "CTRL+NUM2": "formatH2", "CTRL+NUM3": "formatH3", "CTRL+NUM4": "formatH4", "CTRL+NUM5": "formatH5", "CTRL+NUM6": "formatH6", "CTRL+ENTER": "insertHorizontalRule" }, mac: { "CMD+Z": "undo", "CMD+SHIFT+Z": "redo", TAB: "tab", "SHIFT+TAB": "untab", "CMD+B": "bold", "CMD+I": "italic", "CMD+U": "underline", "CMD+SHIFT+S": "strikethrough", "CMD+BACKSLASH": "removeFormat", "CMD+SHIFT+L": "justifyLeft", "CMD+SHIFT+E": "justifyCenter", "CMD+SHIFT+R": "justifyRight", "CMD+SHIFT+J": "justifyFull", "CMD+SHIFT+NUM7": "insertUnorderedList", "CMD+SHIFT+NUM8": "insertOrderedList", "CMD+LEFTBRACKET": "outdent", "CMD+RIGHTBRACKET": "indent", "CMD+NUM0": "formatPara", "CMD+NUM1": "formatH1", "CMD+NUM2": "formatH2", "CMD+NUM3": "formatH3", "CMD+NUM4": "formatH4", "CMD+NUM5": "formatH5", "CMD+NUM6": "formatH6", "CMD+ENTER": "insertHorizontalRule" } } }, lang: { "en-US": { font: { bold: "Bold", italic: "Italic", underline: "Underline", strike: "Strike", clear: "Remove Font Style", height: "Line Height", name: "Font Family", size: "Font Size" }, image: { image: "Picture", insert: "Insert Image", resizeFull: "Resize Full", resizeHalf: "Resize Half", resizeQuarter: "Resize Quarter", floatLeft: "Float Left", floatRight: "Float Right", floatNone: "Float None", dragImageHere: "Drag an image here", selectFromFiles: "Select from files", url: "Image URL", remove: "Remove Image" }, link: { link: "Link", insert: "Insert Link", unlink: "Unlink", edit: "Edit", textToDisplay: "Text to display", url: "To what URL should this link go?", openInNewWindow: "Open in new window" }, video: { video: "Video", videoLink: "Video Link", insert: "Insert Video", url: "Video URL?", providers: "(YouTube, Vimeo, Vine, Instagram, or DailyMotion)" }, table: { table: "Table" }, hr: { insert: "Insert Horizontal Rule" }, style: { style: "Style", normal: "Normal", blockquote: "Quote", pre: "Code", h1: "Header 1", h2: "Header 2", h3: "Header 3", h4: "Header 4", h5: "Header 5", h6: "Header 6" }, lists: { unordered: "Unordered list", ordered: "Ordered list" }, options: { help: "Help", fullscreen: "Full Screen", codeview: "Code View" }, paragraph: { paragraph: "Paragraph", outdent: "Outdent", indent: "Indent", left: "Align left", center: "Align center", right: "Align right", justify: "Justify full" }, color: { recent: "Recent Color", more: "More Color", background: "BackColor", foreground: "FontColor", transparent: "Transparent", setTransparent: "Set transparent", reset: "Reset", resetToDefault: "Reset to default" }, shortcut: { shortcuts: "Keyboard shortcuts", close: "Close", textFormatting: "Text formatting", action: "Action", paragraphFormatting: "Paragraph formatting", documentStyle: "Document Style" }, history: { undo: "Undo", redo: "Redo" } } } },
h = function() { var b = function(b) { return a.Deferred(function(c) { a.extend(new FileReader, { onload: function(a) { var b = a.target.result;
c.resolve(b) }, onerror: function() { c.reject(this) } }).readAsDataURL(b) }).promise() },
c = function(b) { return a.Deferred(function(c) { a("
").one("load", function() { c.resolve(a(this)) }).one("error abort", function() { c.reject(a(this)) }).css({ display: "none" }).appendTo(document.body).attr("src", b) }).promise() }; return { readFileAsDataURL: b, createImage: c } }(),
i = { isEdit: function(a) { return -1 !== [8, 9, 13, 32].indexOf(a) }, nameFromCode: { 8: "BACKSPACE", 9: "TAB", 13: "ENTER", 32: "SPACE", 48: "NUM0", 49: "NUM1", 50: "NUM2", 51: "NUM3", 52: "NUM4", 53: "NUM5", 54: "NUM6", 55: "NUM7", 56: "NUM8", 66: "B", 69: "E", 73: "I", 74: "J", 75: "K", 76: "L", 82: "R", 83: "S", 85: "U", 89: "Y", 90: "Z", 191: "SLASH", 219: "LEFTBRACKET", 220: "BACKSLASH", 221: "RIGHTBRACKET" } },
j = function() { var b = function(b, d) { if (c.jqueryVersion < 1.9) { var e = {}; return a.each(d, function(a, c) { e[c] = b.css(c) }), e } return b.css.call(b, d) };
this.stylePara = function(b, c) { a.each(b.nodes(f.isPara), function(b, d) { a(d).css(c) }) }, this.current = function(c, d) { var e = a(f.isText(c.sc) ? c.sc.parentNode : c.sc),
g = ["font-family", "font-size", "text-align", "list-style-type", "line-height"],
h = b(e, g) || {}; if (h["font-size"] = parseInt(h["font-size"], 10), h["font-bold"] = document.queryCommandState("bold") ? "bold" : "normal", h["font-italic"] = document.queryCommandState("italic") ? "italic" : "normal", h["font-underline"] = document.queryCommandState("underline") ? "underline" : "normal", h["font-strikethrough"] = document.queryCommandState("strikeThrough") ? "strikethrough" : "normal", c.isOnList()) { var i = ["circle", "disc", "disc-leading-zero", "square"],
j = a.inArray(h["list-style-type"], i) > -1;
h["list-style"] = j ? "unordered" : "ordered" } else h["list-style"] = "none"; var k = f.ancestor(c.sc, f.isPara); if (k && k.style["line-height"]) h["line-height"] = k.style.lineHeight;
else { var l = parseInt(h["line-height"], 10) / parseInt(h["font-size"], 10);
h["line-height"] = l.toFixed(1) } return h.image = f.isImg(d) && d, h.anchor = c.isOnAnchor() && f.ancestor(c.sc, f.isAnchor), h.aAncestor = f.listAncestor(c.sc, f.isEditable), h } },
k = function() { var b = !!document.createRange,
c = function(a, b) { var c, d, g = a.parentElement(),
h = document.body.createTextRange(),
i = e.from(g.childNodes); for (c = 0; c < i.length; c++)
if (!f.isText(i[c])) { if (h.moveToElementText(i[c]), h.compareEndPoints("StartToStart", a) >= 0) break;
d = i[c] } if (0 !== c && f.isText(i[c - 1])) { var j = document.body.createTextRange(),
k = null;
j.moveToElementText(d || g), j.collapse(!d), k = d ? d.nextSibling : g.firstChild; var l = a.duplicate();
l.setEndPoint("StartToStart", j); for (var m = l.text.replace(/[\r\n]/g, "").length; m > k.nodeValue.length && k.nextSibling;) m -= k.nodeValue.length, k = k.nextSibling; { k.nodeValue } b && k.nextSibling && f.isText(k.nextSibling) && m === k.nodeValue.length && (m -= k.nodeValue.length, k = k.nextSibling), g = k, c = m } return { cont: g, offset: c } },
g = function(a) { var b = function(a, c) { var g, h; if (f.isText(a)) { var i = f.listPrev(a, d.not(f.isText)),
j = e.last(i).previousSibling;
g = j || a.parentNode, c += e.sum(e.tail(i), f.length), h = !j } else { if (g = a.childNodes[c] || a, f.isText(g)) return b(g, c);
c = 0, h = !1 } return { cont: g, collapseToStart: h, offset: c } },
c = document.body.createTextRange(),
g = b(a.cont, a.offset); return c.moveToElementText(g.cont), c.collapse(g.collapseToStart), c.moveStart("character", g.offset), c },
h = function(c, h, i, j) { this.sc = c, this.so = h, this.ec = i, this.eo = j; var k = function() { if (b) { var a = document.createRange(); return a.setStart(c, h), a.setEnd(i, j), a } var d = g({ cont: c, offset: h }); return d.setEndPoint("EndToEnd", g({ cont: i, offset: j })), d };
this.select = function() { var a = k(); if (b) { var c = document.getSelection();
c.rangeCount > 0 && c.removeAllRanges(), c.addRange(a) } else a.select() }, this.nodes = function(b) { var g = f.listBetween(c, i),
h = e.compact(a.map(g, function(a) { return f.ancestor(a, b) })); return a.map(e.clusterBy(h, d.eq2), e.head) }, this.commonAncestor = function() { return f.commonAncestor(c, i) }; var l = function(a) { return function() { var b = f.ancestor(c, a); return !!b && b === f.ancestor(i, a) } };
this.isOnEditable = l(f.isEditable), this.isOnList = l(f.isList), this.isOnAnchor = l(f.isAnchor), this.isOnCell = l(f.isCell), this.isCollapsed = function() { return c === i && h === j }, this.insertNode = function(a) { var c = k();
b ? c.insertNode(a) : c.pasteHTML(a.outerHTML) }, this.toString = function() { var a = k(); return b ? a.toString() : a.text }, this.bookmark = function(a) { return { s: { path: f.makeOffsetPath(a, c), offset: h }, e: { path: f.makeOffsetPath(a, i), offset: j } } } }; return { create: function(a, d, e, f) { if (0 === arguments.length)
if (b) { var g = document.getSelection(); if (0 === g.rangeCount) return null; var i = g.getRangeAt(0);
a = i.startContainer, d = i.startOffset, e = i.endContainer, f = i.endOffset } else { var j = document.selection.createRange(),
k = j.duplicate();
k.collapse(!1); var l = j;
l.collapse(!0); var m = c(l, !0),
n = c(k, !1);
a = m.cont, d = m.offset, e = n.cont, f = n.offset } else 2 === arguments.length && (e = a, f = d); return new h(a, d, e, f) }, createFromNode: function(a) { return this.create(a, 0, a, 1) }, createFromBookmark: function(a, b) { var c = f.fromOffsetPath(a, b.s.path),
d = b.s.offset,
e = f.fromOffsetPath(a, b.e.path),
g = b.e.offset; return new h(c, d, e, g) } } }(),
l = function() { this.tab = function(a, b) { var c = f.ancestor(a.commonAncestor(), f.isCell),
d = f.ancestor(c, f.isTable),
g = f.listDescendant(d, f.isCell),
h = e[b ? "prev" : "next"](g, c);
h && k.create(h, 0).select() }, this.createTable = function(b, c) { for (var d, e = [], g = 0; b > g; g++) e.push("" + f.blank + " | ");
d = e.join(""); for (var h, i = [], j = 0; c > j; j++) i.push("" + d + "
");
h = i.join(""); var k = '"; return a(k)[0] } },
m = function() { var b = new j,
d = new l;
this.saveRange = function(a) { a.data("range", k.create()) }, this.restoreRange = function(a) { var b = a.data("range");
b && b.select() }, this.currentStyle = function(a) { var c = k.create(); return c.isOnEditable() && b.current(c, a) }, this.undo = function(a) { a.data("NoteHistory").undo(a) }, this.redo = function(a) { a.data("NoteHistory").redo(a) }; for (var e = this.recordUndo = function(a) { a.data("NoteHistory").recordUndo(a) }, g = ["bold", "italic", "underline", "strikethrough", "justifyLeft", "justifyCenter", "justifyRight", "justifyFull", "insertOrderedList", "insertUnorderedList", "indent", "outdent", "formatBlock", "removeFormat", "backColor", "foreColor", "insertHorizontalRule", "fontName"], i = 0, m = g.length; m > i; i++) this[g[i]] = function(a) { return function(b, c) { e(b), document.execCommand(a, !1, c) } }(g[i]); var n = function(b, c, d) { e(b); var g = new Array(d + 1).join(" ");
c.insertNode(a('' + g + "")[0]); var h = a("#noteTab").removeAttr("id");
c = k.create(h[0], 1), c.select(), f.remove(h[0]) };
this.tab = function(a, b) { var c = k.create();
c.isCollapsed() && c.isOnCell() ? d.tab(c) : n(a, c, b.tabsize) }, this.untab = function() { var a = k.create();
a.isCollapsed() && a.isOnCell() && d.tab(a, !0) }, this.insertImage = function(a, b) { h.createImage(b).then(function(b) { e(a), b.css({ display: "", width: Math.min(a.width(), b.width()) }), k.create().insertNode(b[0]) }).fail(function() { var b = a.data("callbacks");
b.onImageUploadError && b.onImageUploadError() }) }, this.insertVideo = function(b, c) { e(b); var d, f = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/,
g = c.match(f),
h = /\/\/instagram.com\/p\/(.[a-zA-Z0-9]*)/,
i = c.match(h),
j = /\/\/vine.co\/v\/(.[a-zA-Z0-9]*)/,
l = c.match(j),
m = /\/\/(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/,
n = c.match(m),
o = /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/,
p = c.match(o); if (g && 11 === g[2].length) { var q = g[2];
d = a("