diff --git a/lib/assets/summernote-lite-v2.min.js b/lib/assets/summernote-lite-v2.min.js new file mode 100644 index 00000000..4750dcaa --- /dev/null +++ b/lib/assets/summernote-lite-v2.min.js @@ -0,0 +1,5732 @@ +/*! For license information please see summernote-lite.min.js.LICENSE.txt */ ! function(t, e) { + if("object" == typeof exports && "object" == typeof module) module.exports = e(require("jquery")); + else if("function" == typeof define && define.amd) define(["jquery"], e); + else { + var n = "object" == typeof exports ? e(require("jquery")) : e(t.jQuery); + for(var o in n)("object" == typeof exports ? exports : t)[o] = n[o] + } +}(window, (function(t) { + return function(t) { + var e = {}; + + function n(o) { + if(e[o]) return e[o].exports; + var i = e[o] = { + i: o, + l: !1, + exports: {} + }; + return t[o].call(i.exports, i, i.exports, n), i.l = !0, i.exports + } + return n.m = t, n.c = e, n.d = function(t, e, o) { + n.o(t, e) || Object.defineProperty(t, e, { + enumerable: !0, + get: o + }) + }, n.r = function(t) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(t, "__esModule", { + value: !0 + }) + }, n.t = function(t, e) { + if(1 & e && (t = n(t)), 8 & e) return t; + if(4 & e && "object" == typeof t && t && t.__esModule) return t; + var o = Object.create(null); + if(n.r(o), Object.defineProperty(o, "default", { + enumerable: !0, + value: t + }), 2 & e && "string" != typeof t) + for(var i in t) n.d(o, i, function(e) { + return t[e] + }.bind(null, i)); + return o + }, n.n = function(t) { + var e = t && t.__esModule ? function() { + return t.default + } : function() { + return t + }; + return n.d(e, "a", e), e + }, n.o = function(t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + }, n.p = "", n(n.s = 51) + }({ + 0: function(e, n) { + e.exports = t + }, + 1: function(t, e, n) { + "use strict"; + var o = n(0), + i = n.n(o); + + function r(t) { + return(r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + })(t) + } + + function a(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var s = function() { + function t(e, n, o, i) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.markup = e, this.children = n, this.options = o, this.callback = i + } + var e, n, o; + return e = t, (n = [{ + key: "render", + value: function(t) { + var e = i()(this.markup); + if(this.options && this.options.contents && e.html(this.options.contents), this.options && this.options.className && e.addClass(this.options.className), this.options && this.options.data && i.a.each(this.options.data, (function(t, n) { + e.attr("data-" + t, n) + })), this.options && this.options.click && e.on("click", this.options.click), this.children) { + var n = e.find(".note-children-container"); + this.children.forEach((function(t) { + t.render(n.length ? n : e) + })) + } + return this.callback && this.callback(e, this.options), this.options && this.options.callback && this.options.callback(e), t && t.append(e), e + } + }]) && a(e.prototype, n), o && a(e, o), t + }(); + e.a = { + create: function(t, e) { + return function() { + var n = "object" === r(arguments[1]) ? arguments[1] : arguments[0], + o = Array.isArray(arguments[0]) ? arguments[0] : []; + return n && n.children && (o = n.children), new s(t, o, n, e) + } + } + } + }, + 2: function(t, e) { + (function(e) { + t.exports = e + }).call(this, {}) + }, + 3: function(t, e, n) { + "use strict"; + var o = n(0), + i = n.n(o); + i.a.summernote = i.a.summernote || { + lang: {} + }, i.a.extend(i.a.summernote.lang, { + "en-US": { + font: { + bold: "Bold", + italic: "Italic", + underline: "Underline", + clear: "Remove Font Style", + height: "Line Height", + name: "Font Family", + strikethrough: "Strikethrough", + subscript: "Subscript", + superscript: "Superscript", + size: "Font Size", + sizeunit: "Font Size Unit" + }, + image: { + image: "Picture", + insert: "Insert Image", + resizeFull: "Resize full", + resizeHalf: "Resize half", + resizeQuarter: "Resize quarter", + resizeNone: "Original size", + floatLeft: "Float Left", + floatRight: "Float Right", + floatNone: "Remove float", + shapeRounded: "Shape: Rounded", + shapeCircle: "Shape: Circle", + shapeThumbnail: "Shape: Thumbnail", + shapeNone: "Shape: None", + dragImageHere: "Drag image or text here", + dropImage: "Drop image or Text", + selectFromFiles: "Select from files", + maximumFileSize: "Maximum file size", + maximumFileSizeError: "Maximum file size exceeded.", + url: "Image URL", + remove: "Remove Image", + original: "Original" + }, + video: { + video: "Video", + videoLink: "Video Link", + insert: "Insert Video", + url: "Video URL", + providers: "(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)" + }, + 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", + useProtocol: "Use default protocol" + }, + table: { + table: "Table", + addRowAbove: "Add row above", + addRowBelow: "Add row below", + addColLeft: "Add column left", + addColRight: "Add column right", + delRow: "Delete row", + delCol: "Delete column", + delTable: "Delete table" + }, + hr: { + insert: "Insert Horizontal Rule" + }, + style: { + style: "Style", + p: "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: "Background Color", + foreground: "Text Color", + transparent: "Transparent", + setTransparent: "Set transparent", + reset: "Reset", + resetToDefault: "Reset to default", + cpSelect: "Select" + }, + shortcut: { + shortcuts: "Keyboard shortcuts", + close: "Close", + textFormatting: "Text formatting", + action: "Action", + paragraphFormatting: "Paragraph formatting", + documentStyle: "Document Style", + extraKeys: "Extra keys" + }, + help: { + escape: "Escape", + insertParagraph: "Insert Paragraph", + undo: "Undo the last command", + redo: "Redo the last command", + tab: "Tab", + untab: "Untab", + bold: "Set a bold style", + italic: "Set a italic style", + underline: "Set a underline style", + strikethrough: "Set a strikethrough style", + removeFormat: "Clean a style", + justifyLeft: "Set left align", + justifyCenter: "Set center align", + justifyRight: "Set right align", + justifyFull: "Set full align", + insertUnorderedList: "Toggle unordered list", + insertOrderedList: "Toggle ordered list", + outdent: "Outdent on current paragraph", + indent: "Indent on current paragraph", + formatPara: "Change current block's format as a paragraph(P tag)", + formatH1: "Change current block's format as H1", + formatH2: "Change current block's format as H2", + formatH3: "Change current block's format as H3", + formatH4: "Change current block's format as H4", + formatH5: "Change current block's format as H5", + formatH6: "Change current block's format as H6", + insertHorizontalRule: "Insert horizontal rule", + "linkDialog.show": "Show Link Dialog" + }, + history: { + undo: "Undo", + redo: "Redo" + }, + specialChar: { + specialChar: "SPECIAL CHARACTERS", + select: "Select Special characters" + }, + output: { + noSelection: "No Selection Made!" + } + } + }); + var r = "function" == typeof define && n(2), + a = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]; + + function s(t) { + return -1 === i.a.inArray(t.toLowerCase(), a) ? "'".concat(t, "'") : t + } + var l, c = navigator.userAgent, + u = /MSIE|Trident/i.test(c); + if(u) { + var d = /MSIE (\d+[.]\d+)/.exec(c); + d && (l = parseFloat(d[1])), (d = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c)) && (l = parseFloat(d[1])) + } + var h = /Edge\/\d+/.test(c), + f = "ontouchstart" in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0, + p = u ? "DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted" : "input", + m = { + isMac: navigator.appVersion.indexOf("Mac") > -1, + isMSIE: u, + isEdge: h, + isFF: !h && /firefox/i.test(c), + isPhantom: /PhantomJS/i.test(c), + isWebkit: !h && /webkit/i.test(c), + isChrome: !h && /chrome/i.test(c), + isSafari: !h && /safari/i.test(c) && !/chrome/i.test(c), + browserVersion: l, + jqueryVersion: parseFloat(i.a.fn.jquery), + isSupportAmd: r, + isSupportTouch: f, + isFontInstalled: function(t) { + var e = "Comic Sans MS" === t ? "Courier New" : "Comic Sans MS", + n = document.createElement("canvas").getContext("2d"); + n.font = "200px '" + e + "'"; + var o = n.measureText("mmmmmmmmmmwwwww").width; + return n.font = "200px " + s(t) + ', "' + e + '"', o !== n.measureText("mmmmmmmmmmwwwww").width + }, + isW3CRangeSupport: !!document.createRange, + inputEventName: p, + genericFontFamilies: a, + validFontName: s + }; + var v = 0; + var g = { + eq: function(t) { + return function(e) { + return t === e + } + }, + eq2: function(t, e) { + return t === e + }, + peq2: function(t) { + return function(e, n) { + return e[t] === n[t] + } + }, + ok: function() { + return !0 + }, + fail: function() { + return !1 + }, + self: function(t) { + return t + }, + not: function(t) { + return function() { + return !t.apply(t, arguments) + } + }, + and: function(t, e) { + return function(n) { + return t(n) && e(n) + } + }, + invoke: function(t, e) { + return function() { + return t[e].apply(t, arguments) + } + }, + resetUniqueId: function() { + v = 0 + }, + uniqueId: function(t) { + var e = ++v + ""; + return t ? t + e : e + }, + rect2bnd: function(t) { + var e = i()(document); + return { + top: t.top + e.scrollTop(), + left: t.left + e.scrollLeft(), + width: t.right - t.left, + height: t.bottom - t.top + } + }, + invertObject: function(t) { + var e = {}; + for(var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[t[n]] = n); + return e + }, + namespaceToCamel: function(t, e) { + return(e = e || "") + t.split(".").map((function(t) { + return t.substring(0, 1).toUpperCase() + t.substring(1) + })).join("") + }, + debounce: function(t, e, n) { + var o; + return function() { + var i = this, + r = arguments, + a = function() { + o = null, n || t.apply(i, r) + }, + s = n && !o; + clearTimeout(o), o = setTimeout(a, e), s && t.apply(i, r) + } + }, + isValidUrl: function(t) { + return /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t) + } + }; + + function b(t) { + return t[0] + } + + function k(t) { + return t[t.length - 1] + } + + function y(t) { + return t.slice(1) + } + + function w(t, e) { + if(t && t.length && e) { + if(t.indexOf) return -1 !== t.indexOf(e); + if(t.contains) return t.contains(e) + } + return !1 + } + var C = { + head: b, + last: k, + initial: function(t) { + return t.slice(0, t.length - 1) + }, + tail: y, + prev: function(t, e) { + if(t && t.length && e) { + var n = t.indexOf(e); + return -1 === n ? null : t[n - 1] + } + return null + }, + next: function(t, e) { + if(t && t.length && e) { + var n = t.indexOf(e); + return -1 === n ? null : t[n + 1] + } + return null + }, + find: function(t, e) { + for(var n = 0, o = t.length; n < o; n++) { + var i = t[n]; + if(e(i)) return i + } + }, + contains: w, + all: function(t, e) { + for(var n = 0, o = t.length; n < o; n++) + if(!e(t[n])) return !1; + return !0 + }, + sum: function(t, e) { + return e = e || g.self, t.reduce((function(t, n) { + return t + e(n) + }), 0) + }, + from: function(t) { + for(var e = [], n = t.length, o = -1; ++o < n;) e[o] = t[o]; + return e + }, + isEmpty: function(t) { + return !t || !t.length + }, + clusterBy: function(t, e) { + return t.length ? y(t).reduce((function(t, n) { + var o = k(t); + return e(k(o), n) ? o[o.length] = n : t[t.length] = [n], t + }), [ + [b(t)] + ]) : [] + }, + compact: function(t) { + for(var e = [], n = 0, o = t.length; n < o; n++) t[n] && e.push(t[n]); + return e + }, + unique: function(t) { + for(var e = [], n = 0, o = t.length; n < o; n++) w(e, t[n]) || e.push(t[n]); + return e + } + }, + x = String.fromCharCode(160); + + function S(t) { + return t && i()(t).hasClass("note-editable") + } + + function T(t) { + return t = t.toUpperCase(), + function(e) { + return e && e.nodeName.toUpperCase() === t + } + } + + function E(t) { + return t && 3 === t.nodeType + } + + function $(t) { + return t && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase()) + } + + function N(t) { + return !S(t) && (t && /^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase())) + } + var I = T("PRE"), + P = T("LI"); + var R = T("TABLE"), + L = T("DATA"); + + function A(t) { + return !(z(t) || F(t) || D(t) || N(t) || R(t) || B(t) || L(t)) + } + + function F(t) { + return t && /^UL|^OL/.test(t.nodeName.toUpperCase()) + } + var D = T("HR"); + + function H(t) { + return t && /^TD|^TH/.test(t.nodeName.toUpperCase()) + } + var B = T("BLOCKQUOTE"); + + function z(t) { + return H(t) || B(t) || S(t) + } + var M = T("A"); + var O = T("BODY"); + var j = m.isMSIE && m.browserVersion < 11 ? " " : "
"; + + function U(t) { + return E(t) ? t.nodeValue.length : t ? t.childNodes.length : 0 + } + + function W(t) { + var e = U(t); + return 0 === e || (!E(t) && 1 === e && t.innerHTML === j || !(!C.all(t.childNodes, E) || "" !== t.innerHTML)) + } + + function K(t) { + $(t) || U(t) || (t.innerHTML = j) + } + + function V(t, e) { + for(; t;) { + if(e(t)) return t; + if(S(t)) break; + t = t.parentNode + } + return null + } + + function q(t, e) { + e = e || g.fail; + var n = []; + return V(t, (function(t) { + return S(t) || n.push(t), e(t) + })), n + } + + function _(t, e) { + e = e || g.fail; + for(var n = []; t && !e(t);) n.push(t), t = t.nextSibling; + return n + } + + function G(t, e) { + var n = e.nextSibling, + o = e.parentNode; + return n ? o.insertBefore(t, n) : o.appendChild(t), t + } + + function Y(t, e) { + return i.a.each(e, (function(e, n) { + t.appendChild(n) + })), t + } + + function Z(t) { + return 0 === t.offset + } + + function X(t) { + return t.offset === U(t.node) + } + + function Q(t) { + return Z(t) || X(t) + } + + function J(t, e) { + for(; t && t !== e;) { + if(0 !== et(t)) return !1; + t = t.parentNode + } + return !0 + } + + function tt(t, e) { + if(!e) return !1; + for(; t && t !== e;) { + if(et(t) !== U(t.parentNode) - 1) return !1; + t = t.parentNode + } + return !0 + } + + function et(t) { + for(var e = 0; t = t.previousSibling;) e += 1; + return e + } + + function nt(t) { + return !!(t && t.childNodes && t.childNodes.length) + } + + function ot(t, e) { + var n, o; + if(0 === t.offset) { + if(S(t.node)) return null; + n = t.node.parentNode, o = et(t.node) + } else nt(t.node) ? o = U(n = t.node.childNodes[t.offset - 1]) : (n = t.node, o = e ? 0 : t.offset - 1); + return { + node: n, + offset: o + } + } + + function it(t, e) { + var n, o; + if(U(t.node) === t.offset) { + if(S(t.node)) return null; + var i = at(t.node); + i ? (n = i, o = 0) : (n = t.node.parentNode, o = et(t.node) + 1) + } else nt(t.node) ? (n = t.node.childNodes[t.offset], o = 0) : (n = t.node, o = e ? U(t.node) : t.offset + 1); + return { + node: n, + offset: o + } + } + + function rt(t, e) { + var n, o; + if(W(t.node)) return { + node: n = t.node.nextSibling, + offset: o = 0 + }; + if(U(t.node) === t.offset) { + if(S(t.node)) return null; + var i = at(t.node); + i ? (n = i, o = 0) : (n = t.node.parentNode, o = et(t.node) + 1), S(n) && (n = t.node.nextSibling, o = 0) + } else if(nt(t.node)) { + if(o = 0, W(n = t.node.childNodes[t.offset])) return null + } else if(n = t.node, o = e ? U(t.node) : t.offset + 1, W(n)) return null; + return { + node: n, + offset: o + } + } + + function at(t) { + if(t.nextSibling && t.parent === t.nextSibling.parent) return E(t.nextSibling) ? t.nextSibling : at(t.nextSibling) + } + + function st(t, e) { + return t.node === e.node && t.offset === e.offset + } + + function lt(t, e) { + var n = e && e.isSkipPaddingBlankHTML, + o = e && e.isNotSplitEdgePoint, + i = e && e.isDiscardEmptySplits; + if(i && (n = !0), Q(t) && (E(t.node) || o)) { + if(Z(t)) return t.node; + if(X(t)) return t.node.nextSibling + } + if(E(t.node)) return t.node.splitText(t.offset); + var r = t.node.childNodes[t.offset], + a = G(t.node.cloneNode(!1), t.node); + return Y(a, _(r)), n || (K(t.node), K(a)), i && (W(t.node) && dt(t.node), W(a)) ? (dt(a), t.node.nextSibling) : a + } + + function ct(t, e, n) { + var o = q(e.node, g.eq(t)); + return o.length ? 1 === o.length ? lt(e, n) : o.reduce((function(t, o) { + return t === e.node && (t = lt(e, n)), lt({ + node: o, + offset: t ? et(t) : U(o) + }, n) + })) : null + } + + function ut(t) { + return document.createElement(t) + } + + function dt(t, e) { + if(t && t.parentNode) { + if(t.removeNode) return t.removeNode(e); + var n = t.parentNode; + if(!e) { + for(var o = [], i = 0, r = t.childNodes.length; i < r; i++) o.push(t.childNodes[i]); + for(var a = 0, s = o.length; a < s; a++) n.insertBefore(o[a], t) + } + n.removeChild(t) + } + } + var ht = T("TEXTAREA"); + + function ft(t, e) { + var n = ht(t[0]) ? t.val() : t.html(); + return e ? n.replace(/[\n\r]/g, "") : n + } + var pt = { + NBSP_CHAR: x, + ZERO_WIDTH_NBSP_CHAR: "\ufeff", + blank: j, + emptyPara: "

".concat(j, "

"), + makePredByNodeName: T, + isEditable: S, + isControlSizing: function(t) { + return t && i()(t).hasClass("note-control-sizing") + }, + isText: E, + isElement: function(t) { + return t && 1 === t.nodeType + }, + isVoid: $, + isPara: N, + isPurePara: function(t) { + return N(t) && !P(t) + }, + isHeading: function(t) { + return t && /^H[1-7]/.test(t.nodeName.toUpperCase()) + }, + isInline: A, + isBlock: g.not(A), + isBodyInline: function(t) { + return A(t) && !V(t, N) + }, + isBody: O, + isParaInline: function(t) { + return A(t) && !!V(t, N) + }, + isPre: I, + isList: F, + isTable: R, + isData: L, + isCell: H, + isBlockquote: B, + isBodyContainer: z, + isAnchor: M, + isDiv: T("DIV"), + isLi: P, + isBR: T("BR"), + isSpan: T("SPAN"), + isB: T("B"), + isU: T("U"), + isS: T("S"), + isI: T("I"), + isImg: T("IMG"), + isTextarea: ht, + deepestChildIsEmpty: function(t) { + do { + if(null === t.firstElementChild || "" === t.firstElementChild.innerHTML) break + } while (t = t.firstElementChild); + return W(t) + }, + isEmpty: W, + isEmptyAnchor: g.and(M, W), + isClosestSibling: function(t, e) { + return t.nextSibling === e || t.previousSibling === e + }, + withClosestSiblings: function(t, e) { + e = e || g.ok; + var n = []; + return t.previousSibling && e(t.previousSibling) && n.push(t.previousSibling), n.push(t), t.nextSibling && e(t.nextSibling) && n.push(t.nextSibling), n + }, + nodeLength: U, + isLeftEdgePoint: Z, + isRightEdgePoint: X, + isEdgePoint: Q, + isLeftEdgeOf: J, + isRightEdgeOf: tt, + isLeftEdgePointOf: function(t, e) { + return Z(t) && J(t.node, e) + }, + isRightEdgePointOf: function(t, e) { + return X(t) && tt(t.node, e) + }, + prevPoint: ot, + nextPoint: it, + nextPointWithEmptyNode: rt, + isSamePoint: st, + isVisiblePoint: function(t) { + if(E(t.node) || !nt(t.node) || W(t.node)) return !0; + var e = t.node.childNodes[t.offset - 1], + n = t.node.childNodes[t.offset]; + return !(e && !$(e) || n && !$(n)) + }, + prevPointUntil: function(t, e) { + for(; t;) { + if(e(t)) return t; + t = ot(t) + } + return null + }, + nextPointUntil: function(t, e) { + for(; t;) { + if(e(t)) return t; + t = it(t) + } + return null + }, + isCharPoint: function(t) { + if(!E(t.node)) return !1; + var e = t.node.nodeValue.charAt(t.offset - 1); + return e && " " !== e && e !== x + }, + isSpacePoint: function(t) { + if(!E(t.node)) return !1; + var e = t.node.nodeValue.charAt(t.offset - 1); + return " " === e || e === x + }, + walkPoint: function(t, e, n, o) { + for(var i = t; i && (n(i), !st(i, e));) { + i = rt(i, o && t.node !== i.node && e.node !== i.node) + } + }, + ancestor: V, + singleChildAncestor: function(t, e) { + for(t = t.parentNode; t && 1 === U(t);) { + if(e(t)) return t; + if(S(t)) break; + t = t.parentNode + } + return null + }, + listAncestor: q, + lastAncestor: function(t, e) { + var n = q(t); + return C.last(n.filter(e)) + }, + listNext: _, + listPrev: function(t, e) { + e = e || g.fail; + for(var n = []; t && !e(t);) n.push(t), t = t.previousSibling; + return n + }, + listDescendant: function(t, e) { + var n = []; + return e = e || g.ok, + function o(i) { + t !== i && e(i) && n.push(i); + for(var r = 0, a = i.childNodes.length; r < a; r++) o(i.childNodes[r]) + }(t), n + }, + commonAncestor: function(t, e) { + for(var n = q(t), o = e; o; o = o.parentNode) + if(n.indexOf(o) > -1) return o; + return null + }, + wrap: function(t, e) { + var n = t.parentNode, + o = i()("<" + e + ">")[0]; + return n.insertBefore(o, t), o.appendChild(t), o + }, + insertAfter: G, + appendChildNodes: Y, + position: et, + hasChildren: nt, + makeOffsetPath: function(t, e) { + return q(e, g.eq(t)).map(et).reverse() + }, + fromOffsetPath: function(t, e) { + for(var n = t, o = 0, i = e.length; o < i; o++) n = n.childNodes.length <= e[o] ? n.childNodes[n.childNodes.length - 1] : n.childNodes[e[o]]; + return n + }, + splitTree: ct, + splitPoint: function(t, e) { + var n, o, i = e ? N : z, + r = q(t.node, i), + a = C.last(r) || t.node; + i(a) ? (n = r[r.length - 2], o = a) : o = (n = a).parentNode; + var s = n && ct(n, t, { + isSkipPaddingBlankHTML: e, + isNotSplitEdgePoint: e + }); + return s || o !== t.node || (s = t.node.childNodes[t.offset]), { + rightNode: s, + container: o + } + }, + create: ut, + createText: function(t) { + return document.createTextNode(t) + }, + remove: dt, + removeWhile: function(t, e) { + for(; t && !S(t) && e(t);) { + var n = t.parentNode; + dt(t), t = n + } + }, + replace: function(t, e) { + if(t.nodeName.toUpperCase() === e.toUpperCase()) return t; + var n = ut(e); + return t.style.cssText && (n.style.cssText = t.style.cssText), Y(n, C.from(t.childNodes)), G(n, t), dt(t), n + }, + html: function(t, e) { + var n = ft(t); + if(e) { + n = (n = n.replace(/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g, (function(t, e, n) { + n = n.toUpperCase(); + var o = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n) && !!e, + i = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n); + return t + (o || i ? "\n" : "") + }))).trim() + } + return n + }, + value: ft, + posFromPlaceholder: function(t) { + var e = i()(t), + n = e.offset(), + o = e.outerHeight(!0); + return { + left: n.left, + top: n.top + o + } + }, + attachEvents: function(t, e) { + Object.keys(e).forEach((function(n) { + t.on(n, e[n]) + })) + }, + detachEvents: function(t, e) { + Object.keys(e).forEach((function(n) { + t.off(n, e[n]) + })) + }, + isCustomStyleTag: function(t) { + return t && !E(t) && C.contains(t.classList, "note-styletag") + } + }; + + function mt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var vt = function() { + function t(e, n) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.$note = e, this.memos = {}, this.modules = {}, this.layoutInfo = {}, this.options = i.a.extend(!0, {}, n), i.a.summernote.ui = i.a.summernote.ui_template(this.options), this.ui = i.a.summernote.ui, this.initialize() + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + return this.layoutInfo = this.ui.createLayout(this.$note), this._initialize(), this.$note.hide(), this + } + }, { + key: "destroy", + value: function() { + this._destroy(), this.$note.removeData("summernote"), this.ui.removeLayout(this.$note, this.layoutInfo) + } + }, { + key: "reset", + value: function() { + var t = this.isDisabled(); + this.code(pt.emptyPara), this._destroy(), this._initialize(), t && this.disable() + } + }, { + key: "_initialize", + value: function() { + var t = this; + this.options.id = g.uniqueId(i.a.now()), this.options.container = this.options.container || this.layoutInfo.editor; + var e = i.a.extend({}, this.options.buttons); + Object.keys(e).forEach((function(n) { + t.memo("button." + n, e[n]) + })); + var n = i.a.extend({}, this.options.modules, i.a.summernote.plugins || {}); + Object.keys(n).forEach((function(e) { + t.module(e, n[e], !0) + })), Object.keys(this.modules).forEach((function(e) { + t.initializeModule(e) + })) + } + }, { + key: "_destroy", + value: function() { + var t = this; + Object.keys(this.modules).reverse().forEach((function(e) { + t.removeModule(e) + })), Object.keys(this.memos).forEach((function(e) { + t.removeMemo(e) + })), this.triggerEvent("destroy", this) + } + }, { + key: "code", + value: function(t) { + var e = this.invoke("codeview.isActivated"); + if(void 0 === t) return this.invoke("codeview.sync"), e ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); + e ? this.invoke("codeview.sync", t) : this.layoutInfo.editable.html(t), this.$note.val(t), this.triggerEvent("change", t, this.layoutInfo.editable) + } + }, { + key: "isDisabled", + value: function() { + return "false" === this.layoutInfo.editable.attr("contenteditable") + } + }, { + key: "enable", + value: function() { + this.layoutInfo.editable.attr("contenteditable", !0), this.invoke("toolbar.activate", !0), this.triggerEvent("disable", !1), this.options.editing = !0 + } + }, { + key: "disable", + value: function() { + this.invoke("codeview.isActivated") && this.invoke("codeview.deactivate"), this.layoutInfo.editable.attr("contenteditable", !1), this.options.editing = !1, this.invoke("toolbar.deactivate", !0), this.triggerEvent("disable", !0) + } + }, { + key: "triggerEvent", + value: function() { + var t = C.head(arguments), + e = C.tail(C.from(arguments)), + n = this.options.callbacks[g.namespaceToCamel(t, "on")]; + n && n.apply(this.$note[0], e), this.$note.trigger("summernote." + t, e) + } + }, { + key: "initializeModule", + value: function(t) { + var e = this.modules[t]; + e.shouldInitialize = e.shouldInitialize || g.ok, e.shouldInitialize() && (e.initialize && e.initialize(), e.events && pt.attachEvents(this.$note, e.events)) + } + }, { + key: "module", + value: function(t, e, n) { + if(1 === arguments.length) return this.modules[t]; + this.modules[t] = new e(this), n || this.initializeModule(t) + } + }, { + key: "removeModule", + value: function(t) { + var e = this.modules[t]; + e.shouldInitialize() && (e.events && pt.detachEvents(this.$note, e.events), e.destroy && e.destroy()), delete this.modules[t] + } + }, { + key: "memo", + value: function(t, e) { + if(1 === arguments.length) return this.memos[t]; + this.memos[t] = e + } + }, { + key: "removeMemo", + value: function(t) { + this.memos[t] && this.memos[t].destroy && this.memos[t].destroy(), delete this.memos[t] + } + }, { + key: "createInvokeHandlerAndUpdateState", + value: function(t, e) { + var n = this; + return function(o) { + n.createInvokeHandler(t, e)(o), n.invoke("buttons.updateCurrentStyle") + } + } + }, { + key: "createInvokeHandler", + value: function(t, e) { + var n = this; + return function(o) { + o.preventDefault(); + var r = i()(o.target); + n.invoke(t, e || r.closest("[data-value]").data("value"), r) + } + } + }, { + key: "invoke", + value: function() { + var t = C.head(arguments), + e = C.tail(C.from(arguments)), + n = t.split("."), + o = n.length > 1, + i = o && C.head(n), + r = o ? C.last(n) : C.head(n), + a = this.modules[i || "editor"]; + return !i && this[r] ? this[r].apply(this, e) : a && a[r] && a.shouldInitialize() ? a[r].apply(a, e) : void 0 + } + }]) && mt(e.prototype, n), o && mt(e, o), t + }(); + + function gt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + + function bt(t, e) { + var n, o, i = t.parentElement(), + r = document.body.createTextRange(), + a = C.from(i.childNodes); + for(n = 0; n < a.length; n++) + if(!pt.isText(a[n])) { + if(r.moveToElementText(a[n]), r.compareEndPoints("StartToStart", t) >= 0) break; + o = a[n] + } + if(0 !== n && pt.isText(a[n - 1])) { + var s = document.body.createTextRange(), + l = null; + s.moveToElementText(o || i), s.collapse(!o), l = o ? o.nextSibling : i.firstChild; + var c = t.duplicate(); + c.setEndPoint("StartToStart", s); + for(var u = c.text.replace(/[\r\n]/g, "").length; u > l.nodeValue.length && l.nextSibling;) u -= l.nodeValue.length, l = l.nextSibling; + l.nodeValue; + e && l.nextSibling && pt.isText(l.nextSibling) && u === l.nodeValue.length && (u -= l.nodeValue.length, l = l.nextSibling), i = l, n = u + } + return { + cont: i, + offset: n + } + } + + function kt(t) { + var e = document.body.createTextRange(), + n = function t(e, n) { + var o, i; + if(pt.isText(e)) { + var r = pt.listPrev(e, g.not(pt.isText)), + a = C.last(r).previousSibling; + o = a || e.parentNode, n += C.sum(C.tail(r), pt.nodeLength), i = !a + } else { + if(o = e.childNodes[n] || e, pt.isText(o)) return t(o, 0); + n = 0, i = !1 + } + return { + node: o, + collapseToStart: i, + offset: n + } + }(t.node, t.offset); + return e.moveToElementText(n.node), e.collapse(n.collapseToStart), e.moveStart("character", n.offset), e + } + i.a.fn.extend({ + summernote: function() { + var t = i.a.type(C.head(arguments)), + e = "string" === t, + n = "object" === t, + o = i.a.extend({}, i.a.summernote.options, n ? C.head(arguments) : {}); + o.langInfo = i.a.extend(!0, {}, i.a.summernote.lang["en-US"], i.a.summernote.lang[o.lang]), o.icons = i.a.extend(!0, {}, i.a.summernote.options.icons, o.icons), o.tooltip = "auto" === o.tooltip ? !m.isSupportTouch : o.tooltip, this.each((function(t, e) { + var n = i()(e); + if(!n.data("summernote")) { + var r = new vt(n, o); + n.data("summernote", r), n.data("summernote").triggerEvent("init", r.layoutInfo) + } + })); + var r = this.first(); + if(r.length) { + var a = r.data("summernote"); + if(e) return a.invoke.apply(a, C.from(arguments)); + o.focus && a.invoke("editor.focus") + } + return this + } + }); + var yt = function() { + function t(e, n, o, i) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.sc = e, this.so = n, this.ec = o, this.eo = i, this.isOnEditable = this.makeIsOn(pt.isEditable), this.isOnList = this.makeIsOn(pt.isList), this.isOnAnchor = this.makeIsOn(pt.isAnchor), this.isOnCell = this.makeIsOn(pt.isCell), this.isOnData = this.makeIsOn(pt.isData) + } + var e, n, o; + return e = t, (n = [{ + key: "nativeRange", + value: function() { + if(m.isW3CRangeSupport) { + var t = document.createRange(); + return t.setStart(this.sc, this.so), t.setEnd(this.ec, this.eo), t + } + var e = kt({ + node: this.sc, + offset: this.so + }); + return e.setEndPoint("EndToEnd", kt({ + node: this.ec, + offset: this.eo + })), e + } + }, { + key: "getPoints", + value: function() { + return { + sc: this.sc, + so: this.so, + ec: this.ec, + eo: this.eo + } + } + }, { + key: "getStartPoint", + value: function() { + return { + node: this.sc, + offset: this.so + } + } + }, { + key: "getEndPoint", + value: function() { + return { + node: this.ec, + offset: this.eo + } + } + }, { + key: "select", + value: function() { + var t = this.nativeRange(); + if(m.isW3CRangeSupport) { + var e = document.getSelection(); + e.rangeCount > 0 && e.removeAllRanges(), e.addRange(t) + } else t.select(); + return this + } + }, { + key: "scrollIntoView", + value: function(t) { + var e = i()(t).height(); + return t.scrollTop + e < this.sc.offsetTop && (t.scrollTop += Math.abs(t.scrollTop + e - this.sc.offsetTop)), this + } + }, { + key: "normalize", + value: function() { + var e = function(t, e) { + if(!t) return t; + if(pt.isVisiblePoint(t) && (!pt.isEdgePoint(t) || pt.isRightEdgePoint(t) && !e || pt.isLeftEdgePoint(t) && e || pt.isRightEdgePoint(t) && e && pt.isVoid(t.node.nextSibling) || pt.isLeftEdgePoint(t) && !e && pt.isVoid(t.node.previousSibling) || pt.isBlock(t.node) && pt.isEmpty(t.node))) return t; + var n = pt.ancestor(t.node, pt.isBlock), + o = !1; + if(!o) { + var i = pt.prevPoint(t) || { + node: null + }; + o = (pt.isLeftEdgePointOf(t, n) || pt.isVoid(i.node)) && !e + } + var r = !1; + if(!r) { + var a = pt.nextPoint(t) || { + node: null + }; + r = (pt.isRightEdgePointOf(t, n) || pt.isVoid(a.node)) && e + } + if(o || r) { + if(pt.isVisiblePoint(t)) return t; + e = !e + } + return(e ? pt.nextPointUntil(pt.nextPoint(t), pt.isVisiblePoint) : pt.prevPointUntil(pt.prevPoint(t), pt.isVisiblePoint)) || t + }, + n = e(this.getEndPoint(), !1), + o = this.isCollapsed() ? n : e(this.getStartPoint(), !0); + return new t(o.node, o.offset, n.node, n.offset) + } + }, { + key: "nodes", + value: function(t, e) { + t = t || g.ok; + var n = e && e.includeAncestor, + o = e && e.fullyContains, + i = this.getStartPoint(), + r = this.getEndPoint(), + a = [], + s = []; + return pt.walkPoint(i, r, (function(e) { + var i; + pt.isEditable(e.node) || (o ? (pt.isLeftEdgePoint(e) && s.push(e.node), pt.isRightEdgePoint(e) && C.contains(s, e.node) && (i = e.node)) : i = n ? pt.ancestor(e.node, t) : e.node, i && t(i) && a.push(i)) + }), !0), C.unique(a) + } + }, { + key: "commonAncestor", + value: function() { + return pt.commonAncestor(this.sc, this.ec) + } + }, { + key: "expand", + value: function(e) { + var n = pt.ancestor(this.sc, e), + o = pt.ancestor(this.ec, e); + if(!n && !o) return new t(this.sc, this.so, this.ec, this.eo); + var i = this.getPoints(); + return n && (i.sc = n, i.so = 0), o && (i.ec = o, i.eo = pt.nodeLength(o)), new t(i.sc, i.so, i.ec, i.eo) + } + }, { + key: "collapse", + value: function(e) { + return e ? new t(this.sc, this.so, this.sc, this.so) : new t(this.ec, this.eo, this.ec, this.eo) + } + }, { + key: "splitText", + value: function() { + var e = this.sc === this.ec, + n = this.getPoints(); + return pt.isText(this.ec) && !pt.isEdgePoint(this.getEndPoint()) && this.ec.splitText(this.eo), pt.isText(this.sc) && !pt.isEdgePoint(this.getStartPoint()) && (n.sc = this.sc.splitText(this.so), n.so = 0, e && (n.ec = n.sc, n.eo = this.eo - this.so)), new t(n.sc, n.so, n.ec, n.eo) + } + }, { + key: "deleteContents", + value: function() { + if(this.isCollapsed()) return this; + var e = this.splitText(), + n = e.nodes(null, { + fullyContains: !0 + }), + o = pt.prevPointUntil(e.getStartPoint(), (function(t) { + return !C.contains(n, t.node) + })), + r = []; + return i.a.each(n, (function(t, e) { + var n = e.parentNode; + o.node !== n && 1 === pt.nodeLength(n) && r.push(n), pt.remove(e, !1) + })), i.a.each(r, (function(t, e) { + pt.remove(e, !1) + })), new t(o.node, o.offset, o.node, o.offset).normalize() + } + }, { + key: "makeIsOn", + value: function(t) { + return function() { + var e = pt.ancestor(this.sc, t); + return !!e && e === pt.ancestor(this.ec, t) + } + } + }, { + key: "isLeftEdgeOf", + value: function(t) { + if(!pt.isLeftEdgePoint(this.getStartPoint())) return !1; + var e = pt.ancestor(this.sc, t); + return e && pt.isLeftEdgeOf(this.sc, e) + } + }, { + key: "isCollapsed", + value: function() { + return this.sc === this.ec && this.so === this.eo + } + }, { + key: "wrapBodyInlineWithPara", + value: function() { + if(pt.isBodyContainer(this.sc) && pt.isEmpty(this.sc)) return this.sc.innerHTML = pt.emptyPara, new t(this.sc.firstChild, 0, this.sc.firstChild, 0); + var e, n = this.normalize(); + if(pt.isParaInline(this.sc) || pt.isPara(this.sc)) return n; + if(pt.isInline(n.sc)) { + var o = pt.listAncestor(n.sc, g.not(pt.isInline)); + e = C.last(o), pt.isInline(e) || (e = o[o.length - 2] || n.sc.childNodes[n.so]) + } else e = n.sc.childNodes[n.so > 0 ? n.so - 1 : 0]; + if(e) { + var i = pt.listPrev(e, pt.isParaInline).reverse(); + if((i = i.concat(pt.listNext(e.nextSibling, pt.isParaInline))).length) { + var r = pt.wrap(C.head(i), "p"); + pt.appendChildNodes(r, C.tail(i)) + } + } + return this.normalize() + } + }, { + key: "insertNode", + value: function(t) { + var e = this; + (pt.isText(t) || pt.isInline(t)) && (e = this.wrapBodyInlineWithPara().deleteContents()); + var n = pt.splitPoint(e.getStartPoint(), pt.isInline(t)); + return n.rightNode ? (n.rightNode.parentNode.insertBefore(t, n.rightNode), pt.isEmpty(n.rightNode) && pt.isPara(t) && n.rightNode.parentNode.removeChild(n.rightNode)) : n.container.appendChild(t), t + } + }, { + key: "pasteHTML", + value: function(t) { + t = i.a.trim(t); + var e = i()("
").html(t)[0], + n = C.from(e.childNodes), + o = this, + r = !1; + return o.so >= 0 && (n = n.reverse(), r = !0), n = n.map((function(t) { + return o.insertNode(t) + })), r && (n = n.reverse()), n + } + }, { + key: "toString", + value: function() { + var t = this.nativeRange(); + return m.isW3CRangeSupport ? t.toString() : t.text + } + }, { + key: "getWordRange", + value: function(e) { + var n = this.getEndPoint(); + if(!pt.isCharPoint(n)) return this; + var o = pt.prevPointUntil(n, (function(t) { + return !pt.isCharPoint(t) + })); + return e && (n = pt.nextPointUntil(n, (function(t) { + return !pt.isCharPoint(t) + }))), new t(o.node, o.offset, n.node, n.offset) + } + }, { + key: "getWordsRange", + value: function(e) { + var n = this.getEndPoint(), + o = function(t) { + return !pt.isCharPoint(t) && !pt.isSpacePoint(t) + }; + if(o(n)) return this; + var i = pt.prevPointUntil(n, o); + return e && (n = pt.nextPointUntil(n, o)), new t(i.node, i.offset, n.node, n.offset) + } + }, { + key: "getWordsMatchRange", + value: function(e) { + var n = this.getEndPoint(), + o = pt.prevPointUntil(n, (function(o) { + if(!pt.isCharPoint(o) && !pt.isSpacePoint(o)) return !0; + var i = new t(o.node, o.offset, n.node, n.offset), + r = e.exec(i.toString()); + return r && 0 === r.index + })), + i = new t(o.node, o.offset, n.node, n.offset), + r = i.toString(), + a = e.exec(r); + return a && a[0].length === r.length ? i : null + } + }, { + key: "bookmark", + value: function(t) { + return { + s: { + path: pt.makeOffsetPath(t, this.sc), + offset: this.so + }, + e: { + path: pt.makeOffsetPath(t, this.ec), + offset: this.eo + } + } + } + }, { + key: "paraBookmark", + value: function(t) { + return { + s: { + path: C.tail(pt.makeOffsetPath(C.head(t), this.sc)), + offset: this.so + }, + e: { + path: C.tail(pt.makeOffsetPath(C.last(t), this.ec)), + offset: this.eo + } + } + } + }, { + key: "getClientRects", + value: function() { + return this.nativeRange().getClientRects() + } + }]) && gt(e.prototype, n), o && gt(e, o), t + }(), + wt = { + create: function(t, e, n, o) { + if(4 === arguments.length) return new yt(t, e, n, o); + if(2 === arguments.length) return new yt(t, e, n = t, o = e); + var i = this.createFromSelection(); + if(!i && 1 === arguments.length) { + var r = arguments[0]; + return pt.isEditable(r) && (r = r.lastChild), this.createFromBodyElement(r, pt.emptyPara === arguments[0].innerHTML) + } + return i + }, + createFromBodyElement: function(t) { + var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], + n = this.createFromNode(t); + return n.collapse(e) + }, + createFromSelection: function() { + var t, e, n, o; + if(m.isW3CRangeSupport) { + var i = document.getSelection(); + if(!i || 0 === i.rangeCount) return null; + if(pt.isBody(i.anchorNode)) return null; + var r = i.getRangeAt(0); + t = r.startContainer, e = r.startOffset, n = r.endContainer, o = r.endOffset + } else { + var a = document.selection.createRange(), + s = a.duplicate(); + s.collapse(!1); + var l = a; + l.collapse(!0); + var c = bt(l, !0), + u = bt(s, !1); + pt.isText(c.node) && pt.isLeftEdgePoint(c) && pt.isTextNode(u.node) && pt.isRightEdgePoint(u) && u.node.nextSibling === c.node && (c = u), t = c.cont, e = c.offset, n = u.cont, o = u.offset + } + return new yt(t, e, n, o) + }, + createFromNode: function(t) { + var e = t, + n = 0, + o = t, + i = pt.nodeLength(o); + return pt.isVoid(e) && (n = pt.listPrev(e).length - 1, e = e.parentNode), pt.isBR(o) ? (i = pt.listPrev(o).length - 1, o = o.parentNode) : pt.isVoid(o) && (i = pt.listPrev(o).length, o = o.parentNode), this.create(e, n, o, i) + }, + createFromNodeBefore: function(t) { + return this.createFromNode(t).collapse(!0) + }, + createFromNodeAfter: function(t) { + return this.createFromNode(t).collapse() + }, + createFromBookmark: function(t, e) { + var n = pt.fromOffsetPath(t, e.s.path), + o = e.s.offset, + i = pt.fromOffsetPath(t, e.e.path), + r = e.e.offset; + return new yt(n, o, i, r) + }, + createFromParaBookmark: function(t, e) { + var n = t.s.offset, + o = t.e.offset, + i = pt.fromOffsetPath(C.head(e), t.s.path), + r = pt.fromOffsetPath(C.last(e), t.e.path); + return new yt(i, n, r, o) + } + }, + Ct = { + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + ESCAPE: 27, + SPACE: 32, + DELETE: 46, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + NUM0: 48, + NUM1: 49, + NUM2: 50, + NUM3: 51, + NUM4: 52, + NUM5: 53, + NUM6: 54, + NUM7: 55, + NUM8: 56, + B: 66, + E: 69, + I: 73, + J: 74, + K: 75, + L: 76, + R: 82, + S: 83, + U: 85, + V: 86, + Y: 89, + Z: 90, + SLASH: 191, + LEFTBRACKET: 219, + BACKSLASH: 220, + RIGHTBRACKET: 221, + HOME: 36, + END: 35, + PAGEUP: 33, + PAGEDOWN: 34 + }, + xt = { + isEdit: function(t) { + return C.contains([Ct.BACKSPACE, Ct.TAB, Ct.ENTER, Ct.SPACE, Ct.DELETE], t) + }, + isMove: function(t) { + return C.contains([Ct.LEFT, Ct.UP, Ct.RIGHT, Ct.DOWN], t) + }, + isNavigation: function(t) { + return C.contains([Ct.HOME, Ct.END, Ct.PAGEUP, Ct.PAGEDOWN], t) + }, + nameFromCode: g.invertObject(Ct), + code: Ct + }; + + function St(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Tt = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.stack = [], this.stackOffset = -1, this.context = e, this.$editable = e.layoutInfo.editable, this.editable = this.$editable[0] + } + var e, n, o; + return e = t, (n = [{ + key: "makeSnapshot", + value: function() { + var t = wt.create(this.editable); + return { + contents: this.$editable.html(), + bookmark: t && t.isOnEditable() ? t.bookmark(this.editable) : { + s: { + path: [], + offset: 0 + }, + e: { + path: [], + offset: 0 + } + } + } + } + }, { + key: "applySnapshot", + value: function(t) { + null !== t.contents && this.$editable.html(t.contents), null !== t.bookmark && wt.createFromBookmark(this.editable, t.bookmark).select() + } + }, { + key: "rewind", + value: function() { + this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset = 0, this.applySnapshot(this.stack[this.stackOffset]) + } + }, { + key: "commit", + value: function() { + this.stack = [], this.stackOffset = -1, this.recordUndo() + } + }, { + key: "reset", + value: function() { + this.stack = [], this.stackOffset = -1, this.$editable.html(""), this.recordUndo() + } + }, { + key: "undo", + value: function() { + this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset > 0 && (this.stackOffset--, this.applySnapshot(this.stack[this.stackOffset])) + } + }, { + key: "redo", + value: function() { + this.stack.length - 1 > this.stackOffset && (this.stackOffset++, this.applySnapshot(this.stack[this.stackOffset])) + } + }, { + key: "recordUndo", + value: function() { + this.stackOffset++, this.stack.length > this.stackOffset && (this.stack = this.stack.slice(0, this.stackOffset)), this.stack.push(this.makeSnapshot()), this.stack.length > this.context.options.historyLimit && (this.stack.shift(), this.stackOffset -= 1) + } + }]) && St(e.prototype, n), o && St(e, o), t + }(); + + function Et(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var $t = function() { + function t() { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t) + } + var e, n, o; + return e = t, (n = [{ + key: "jQueryCSS", + value: function(t, e) { + if(m.jqueryVersion < 1.9) { + var n = {}; + return i.a.each(e, (function(e, o) { + n[o] = t.css(o) + })), n + } + return t.css(e) + } + }, { + key: "fromNode", + value: function(t) { + var e = this.jQueryCSS(t, ["font-family", "font-size", "text-align", "list-style-type", "line-height"]) || {}, + n = t[0].style.fontSize || e["font-size"]; + return e["font-size"] = parseInt(n, 10), e["font-size-unit"] = n.match(/[a-z%]+$/), e + } + }, { + key: "stylePara", + value: function(t, e) { + i.a.each(t.nodes(pt.isPara, { + includeAncestor: !0 + }), (function(t, n) { + i()(n).css(e) + })) + } + }, { + key: "styleNodes", + value: function(t, e) { + t = t.splitText(); + var n = e && e.nodeName || "SPAN", + o = !(!e || !e.expandClosestSibling), + r = !(!e || !e.onlyPartialContains); + if(t.isCollapsed()) return [t.insertNode(pt.create(n))]; + var a = pt.makePredByNodeName(n), + s = t.nodes(pt.isText, { + fullyContains: !0 + }).map((function(t) { + return pt.singleChildAncestor(t, a) || pt.wrap(t, n) + })); + if(o) { + if(r) { + var l = t.nodes(); + a = g.and(a, (function(t) { + return C.contains(l, t) + })) + } + return s.map((function(t) { + var e = pt.withClosestSiblings(t, a), + n = C.head(e), + o = C.tail(e); + return i.a.each(o, (function(t, e) { + pt.appendChildNodes(n, e.childNodes), pt.remove(e) + })), C.head(e) + })) + } + return s + } + }, { + key: "current", + value: function(t) { + var e = i()(pt.isElement(t.sc) ? t.sc : t.sc.parentNode), + n = this.fromNode(e); + try { + n = i.a.extend(n, { + "font-bold": document.queryCommandState("bold") ? "bold" : "normal", + "font-italic": document.queryCommandState("italic") ? "italic" : "normal", + "font-underline": document.queryCommandState("underline") ? "underline" : "normal", + "font-subscript": document.queryCommandState("subscript") ? "subscript" : "normal", + "font-superscript": document.queryCommandState("superscript") ? "superscript" : "normal", + "font-strikethrough": document.queryCommandState("strikethrough") ? "strikethrough" : "normal", + "font-family": document.queryCommandValue("fontname") || n["font-family"] + }) + } catch(t) {} + if(t.isOnList()) { + var o = ["circle", "disc", "disc-leading-zero", "square"].indexOf(n["list-style-type"]) > -1; + n["list-style"] = o ? "unordered" : "ordered" + } else n["list-style"] = "none"; + var r = pt.ancestor(t.sc, pt.isPara); + if(r && r.style["line-height"]) n["line-height"] = r.style.lineHeight; + else { + var a = parseInt(n["line-height"], 10) / parseInt(n["font-size"], 10); + n["line-height"] = a.toFixed(1) + } + return n.anchor = t.isOnAnchor() && pt.ancestor(t.sc, pt.isAnchor), n.ancestors = pt.listAncestor(t.sc, pt.isEditable), n.range = t, n + } + }]) && Et(e.prototype, n), o && Et(e, o), t + }(); + + function Nt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var It = function() { + function t() { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t) + } + var e, n, o; + return e = t, (n = [{ + key: "insertOrderedList", + value: function(t) { + this.toggleList("OL", t) + } + }, { + key: "insertUnorderedList", + value: function(t) { + this.toggleList("UL", t) + } + }, { + key: "indent", + value: function(t) { + var e = this, + n = wt.create(t).wrapBodyInlineWithPara(), + o = n.nodes(pt.isPara, { + includeAncestor: !0 + }), + r = C.clusterBy(o, g.peq2("parentNode")); + i.a.each(r, (function(t, n) { + var o = C.head(n); + if(pt.isLi(o)) { + var r = e.findList(o.previousSibling); + r ? n.map((function(t) { + return r.appendChild(t) + })) : (e.wrapList(n, o.parentNode.nodeName), n.map((function(t) { + return t.parentNode + })).map((function(t) { + return e.appendToPrevious(t) + }))) + } else i.a.each(n, (function(t, e) { + i()(e).css("marginLeft", (function(t, e) { + return(parseInt(e, 10) || 0) + 25 + })) + })) + })), n.select() + } + }, { + key: "outdent", + value: function(t) { + var e = this, + n = wt.create(t).wrapBodyInlineWithPara(), + o = n.nodes(pt.isPara, { + includeAncestor: !0 + }), + r = C.clusterBy(o, g.peq2("parentNode")); + i.a.each(r, (function(t, n) { + var o = C.head(n); + pt.isLi(o) ? e.releaseList([n]) : i.a.each(n, (function(t, e) { + i()(e).css("marginLeft", (function(t, e) { + return(e = parseInt(e, 10) || 0) > 25 ? e - 25 : "" + })) + })) + })), n.select() + } + }, { + key: "toggleList", + value: function(t, e) { + var n = this, + o = wt.create(e).wrapBodyInlineWithPara(), + r = o.nodes(pt.isPara, { + includeAncestor: !0 + }), + a = o.paraBookmark(r), + s = C.clusterBy(r, g.peq2("parentNode")); + if(C.find(r, pt.isPurePara)) { + var l = []; + i.a.each(s, (function(e, o) { + l = l.concat(n.wrapList(o, t)) + })), r = l + } else { + var c = o.nodes(pt.isList, { + includeAncestor: !0 + }).filter((function(e) { + return !i.a.nodeName(e, t) + })); + c.length ? i.a.each(c, (function(e, n) { + pt.replace(n, t) + })) : r = this.releaseList(s, !0) + } + wt.createFromParaBookmark(a, r).select() + } + }, { + key: "wrapList", + value: function(t, e) { + var n = C.head(t), + o = C.last(t), + i = pt.isList(n.previousSibling) && n.previousSibling, + r = pt.isList(o.nextSibling) && o.nextSibling, + a = i || pt.insertAfter(pt.create(e || "UL"), o); + return t = t.map((function(t) { + return pt.isPurePara(t) ? pt.replace(t, "LI") : t + })), pt.appendChildNodes(a, t), r && (pt.appendChildNodes(a, C.from(r.childNodes)), pt.remove(r)), t + } + }, { + key: "releaseList", + value: function(t, e) { + var n = this, + o = []; + return i.a.each(t, (function(t, r) { + var a = C.head(r), + s = C.last(r), + l = e ? pt.lastAncestor(a, pt.isList) : a.parentNode, + c = l.parentNode; + if("LI" === l.parentNode.nodeName) r.map((function(t) { + var e = n.findNextSiblings(t); + c.nextSibling ? c.parentNode.insertBefore(t, c.nextSibling) : c.parentNode.appendChild(t), e.length && (n.wrapList(e, l.nodeName), t.appendChild(e[0].parentNode)) + })), 0 === l.children.length && c.removeChild(l), 0 === c.childNodes.length && c.parentNode.removeChild(c); + else { + var u = l.childNodes.length > 1 ? pt.splitTree(l, { + node: s.parentNode, + offset: pt.position(s) + 1 + }, { + isSkipPaddingBlankHTML: !0 + }) : null, + d = pt.splitTree(l, { + node: a.parentNode, + offset: pt.position(a) + }, { + isSkipPaddingBlankHTML: !0 + }); + r = e ? pt.listDescendant(d, pt.isLi) : C.from(d.childNodes).filter(pt.isLi), !e && pt.isList(l.parentNode) || (r = r.map((function(t) { + return pt.replace(t, "P") + }))), i.a.each(C.from(r).reverse(), (function(t, e) { + pt.insertAfter(e, l) + })); + var h = C.compact([l, d, u]); + i.a.each(h, (function(t, e) { + var n = [e].concat(pt.listDescendant(e, pt.isList)); + i.a.each(n.reverse(), (function(t, e) { + pt.nodeLength(e) || pt.remove(e, !0) + })) + })) + } + o = o.concat(r) + })), o + } + }, { + key: "appendToPrevious", + value: function(t) { + return t.previousSibling ? pt.appendChildNodes(t.previousSibling, [t]) : this.wrapList([t], "LI") + } + }, { + key: "findList", + value: function(t) { + return t ? C.find(t.children, (function(t) { + return ["OL", "UL"].indexOf(t.nodeName) > -1 + })) : null + } + }, { + key: "findNextSiblings", + value: function(t) { + for(var e = []; t.nextSibling;) e.push(t.nextSibling), t = t.nextSibling; + return e + } + }]) && Nt(e.prototype, n), o && Nt(e, o), t + }(); + + function Pt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Rt = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.bullet = new It, this.options = e.options + } + var e, n, o; + return e = t, (n = [{ + key: "insertTab", + value: function(t, e) { + var n = pt.createText(new Array(e + 1).join(pt.NBSP_CHAR)); + (t = t.deleteContents()).insertNode(n, !0), (t = wt.create(n, e)).select() + } + }, { + key: "insertParagraph", + value: function(t, e) { + e = (e = (e = e || wt.create(t)).deleteContents()).wrapBodyInlineWithPara(); + var n, o = pt.ancestor(e.sc, pt.isPara); + if(o) { + if(pt.isLi(o) && (pt.isEmpty(o) || pt.deepestChildIsEmpty(o))) return void this.bullet.toggleList(o.parentNode.nodeName); + var r = null; + if(1 === this.options.blockquoteBreakingLevel ? r = pt.ancestor(o, pt.isBlockquote) : 2 === this.options.blockquoteBreakingLevel && (r = pt.lastAncestor(o, pt.isBlockquote)), r) { + n = i()(pt.emptyPara)[0], pt.isRightEdgePoint(e.getStartPoint()) && pt.isBR(e.sc.nextSibling) && i()(e.sc.nextSibling).remove(); + var a = pt.splitTree(r, e.getStartPoint(), { + isDiscardEmptySplits: !0 + }); + a ? a.parentNode.insertBefore(n, a) : pt.insertAfter(n, r) + } else { + n = pt.splitTree(o, e.getStartPoint()); + var s = pt.listDescendant(o, pt.isEmptyAnchor); + s = s.concat(pt.listDescendant(n, pt.isEmptyAnchor)), i.a.each(s, (function(t, e) { + pt.remove(e) + })), (pt.isHeading(n) || pt.isPre(n) || pt.isCustomStyleTag(n)) && pt.isEmpty(n) && (n = pt.replace(n, "p")) + } + } else { + var l = e.sc.childNodes[e.so]; + n = i()(pt.emptyPara)[0], l ? e.sc.insertBefore(n, l) : e.sc.appendChild(n) + } + wt.create(n, 0).normalize().select().scrollIntoView(t) + } + }]) && Pt(e.prototype, n), o && Pt(e, o), t + }(); + + function Lt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var At = function t(e, n, o, i) { + var r = { + colPos: 0, + rowPos: 0 + }, + a = [], + s = []; + + function l(t, e, n, o, i, r, s) { + var l = { + baseRow: n, + baseCell: o, + isRowSpan: i, + isColSpan: r, + isVirtual: s + }; + a[t] || (a[t] = []), a[t][e] = l + } + + function c(t, e, n, o) { + return { + baseCell: t.baseCell, + action: e, + virtualTable: { + rowIndex: n, + cellIndex: o + } + } + } + + function u(t, e) { + if(!a[t]) return e; + if(!a[t][e]) return e; + for(var n = e; a[t][n];) + if(n++, !a[t][n]) return n + } + + function d(t, e) { + var n = u(t.rowIndex, e.cellIndex), + o = e.colSpan > 1, + i = e.rowSpan > 1, + a = t.rowIndex === r.rowPos && e.cellIndex === r.colPos; + l(t.rowIndex, n, t, e, i, o, !1); + var s = e.attributes.rowSpan ? parseInt(e.attributes.rowSpan.value, 10) : 0; + if(s > 1) + for(var c = 1; c < s; c++) { + var d = t.rowIndex + c; + h(d, n, e, a), l(d, n, t, e, !0, o, !0) + } + var f = e.attributes.colSpan ? parseInt(e.attributes.colSpan.value, 10) : 0; + if(f > 1) + for(var p = 1; p < f; p++) { + var m = u(t.rowIndex, n + p); + h(t.rowIndex, m, e, a), l(t.rowIndex, m, t, e, i, !0, !0) + } + } + + function h(t, e, n, o) { + t === r.rowPos && r.colPos >= n.cellIndex && n.cellIndex <= e && !o && r.colPos++ + } + + function f(e) { + switch(n) { + case t.where.Column: + if(e.isColSpan) return t.resultAction.SubtractSpanCount; + break; + case t.where.Row: + if(!e.isVirtual && e.isRowSpan) return t.resultAction.AddCell; + if(e.isRowSpan) return t.resultAction.SubtractSpanCount + } + return t.resultAction.RemoveCell + } + + function p(e) { + switch(n) { + case t.where.Column: + if(e.isColSpan) return t.resultAction.SumSpanCount; + if(e.isRowSpan && e.isVirtual) return t.resultAction.Ignore; + break; + case t.where.Row: + if(e.isRowSpan) return t.resultAction.SumSpanCount; + if(e.isColSpan && e.isVirtual) return t.resultAction.Ignore + } + return t.resultAction.AddCell + } + this.getActionList = function() { + for(var e = n === t.where.Row ? r.rowPos : -1, i = n === t.where.Column ? r.colPos : -1, l = 0, u = !0; u;) { + var d = e >= 0 ? e : l, + h = i >= 0 ? i : l, + m = a[d]; + if(!m) return u = !1, s; + var v = m[h]; + if(!v) return u = !1, s; + var g = t.resultAction.Ignore; + switch(o) { + case t.requestAction.Add: + g = p(v); + break; + case t.requestAction.Delete: + g = f(v) + } + s.push(c(v, g, d, h)), l++ + } + return s + }, e && e.tagName && ("td" === e.tagName.toLowerCase() || "th" === e.tagName.toLowerCase()) && (r.colPos = e.cellIndex, e.parentElement && e.parentElement.tagName && "tr" === e.parentElement.tagName.toLowerCase() && (r.rowPos = e.parentElement.rowIndex)), + function() { + for(var t = i.rows, e = 0; e < t.length; e++) + for(var n = t[e].cells, o = 0; o < n.length; o++) d(t[e], n[o]) + }() + }; + At.where = { + Row: 0, + Column: 1 + }, At.requestAction = { + Add: 0, + Delete: 1 + }, At.resultAction = { + Ignore: 0, + SubtractSpanCount: 1, + RemoveCell: 2, + AddCell: 3, + SumSpanCount: 4 + }; + var Ft = function() { + function t() { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t) + } + var e, n, o; + return e = t, (n = [{ + key: "tab", + value: function(t, e) { + var n = pt.ancestor(t.commonAncestor(), pt.isCell), + o = pt.ancestor(n, pt.isTable), + i = pt.listDescendant(o, pt.isCell), + r = C[e ? "prev" : "next"](i, n); + r && wt.create(r, 0).select() + } + }, { + key: "addRow", + value: function(t, e) { + for(var n = pt.ancestor(t.commonAncestor(), pt.isCell), o = i()(n).closest("tr"), r = this.recoverAttributes(o), a = i()(""), s = new At(n, At.where.Row, At.requestAction.Add, i()(o).closest("table")[0]).getActionList(), l = 0; l < s.length; l++) { + var c = s[l], + u = this.recoverAttributes(c.baseCell); + switch(c.action) { + case At.resultAction.AddCell: + a.append("" + pt.blank + ""); + break; + case At.resultAction.SumSpanCount: + if("top" === e && (c.baseCell.parent ? c.baseCell.closest("tr").rowIndex : 0) <= o[0].rowIndex) { + var d = i()("
").append(i()("" + pt.blank + "").removeAttr("rowspan")).html(); + a.append(d); + break + } + var h = parseInt(c.baseCell.rowSpan, 10); + h++, c.baseCell.setAttribute("rowSpan", h) + } + } + if("top" === e) o.before(a); + else { + if(n.rowSpan > 1) { + var f = o[0].rowIndex + (n.rowSpan - 2); + return void i()(i()(o).parent().find("tr")[f]).after(i()(a)) + } + o.after(a) + } + } + }, { + key: "addCol", + value: function(t, e) { + var n = pt.ancestor(t.commonAncestor(), pt.isCell), + o = i()(n).closest("tr"); + i()(o).siblings().push(o); + for(var r = new At(n, At.where.Column, At.requestAction.Add, i()(o).closest("table")[0]).getActionList(), a = 0; a < r.length; a++) { + var s = r[a], + l = this.recoverAttributes(s.baseCell); + switch(s.action) { + case At.resultAction.AddCell: + "right" === e ? i()(s.baseCell).after("" + pt.blank + "") : i()(s.baseCell).before("" + pt.blank + ""); + break; + case At.resultAction.SumSpanCount: + if("right" === e) { + var c = parseInt(s.baseCell.colSpan, 10); + c++, s.baseCell.setAttribute("colSpan", c) + } else i()(s.baseCell).before("" + pt.blank + "") + } + } + } + }, { + key: "recoverAttributes", + value: function(t) { + var e = ""; + if(!t) return e; + for(var n = t.attributes || [], o = 0; o < n.length; o++) "id" !== n[o].name.toLowerCase() && n[o].specified && (e += " " + n[o].name + "='" + n[o].value + "'"); + return e + } + }, { + key: "deleteRow", + value: function(t) { + for(var e = pt.ancestor(t.commonAncestor(), pt.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = n[0].rowIndex, a = new At(e, At.where.Row, At.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), s = 0; s < a.length; s++) + if(a[s]) { + var l = a[s].baseCell, + c = a[s].virtualTable, + u = l.rowSpan && l.rowSpan > 1, + d = u ? parseInt(l.rowSpan, 10) : 0; + switch(a[s].action) { + case At.resultAction.Ignore: + continue; + case At.resultAction.AddCell: + var h = n.next("tr")[0]; + if(!h) continue; + var f = n[0].cells[o]; + u && (d > 2 ? (d--, h.insertBefore(f, h.cells[o]), h.cells[o].setAttribute("rowSpan", d), h.cells[o].innerHTML = "") : 2 === d && (h.insertBefore(f, h.cells[o]), h.cells[o].removeAttribute("rowSpan"), h.cells[o].innerHTML = "")); + continue; + case At.resultAction.SubtractSpanCount: + u && (d > 2 ? (d--, l.setAttribute("rowSpan", d), c.rowIndex !== r && l.cellIndex === o && (l.innerHTML = "")) : 2 === d && (l.removeAttribute("rowSpan"), c.rowIndex !== r && l.cellIndex === o && (l.innerHTML = ""))); + continue; + case At.resultAction.RemoveCell: + continue + } + } + n.remove() + } + }, { + key: "deleteCol", + value: function(t) { + for(var e = pt.ancestor(t.commonAncestor(), pt.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = new At(e, At.where.Column, At.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), a = 0; a < r.length; a++) + if(r[a]) switch(r[a].action) { + case At.resultAction.Ignore: + continue; + case At.resultAction.SubtractSpanCount: + var s = r[a].baseCell; + if(s.colSpan && s.colSpan > 1) { + var l = s.colSpan ? parseInt(s.colSpan, 10) : 0; + l > 2 ? (l--, s.setAttribute("colSpan", l), s.cellIndex === o && (s.innerHTML = "")) : 2 === l && (s.removeAttribute("colSpan"), s.cellIndex === o && (s.innerHTML = "")) + } + continue; + case At.resultAction.RemoveCell: + pt.remove(r[a].baseCell, !0); + continue + } + } + }, { + key: "createTable", + value: function(t, e, n) { + for(var o, r = [], a = 0; a < t; a++) r.push("" + pt.blank + ""); + o = r.join(""); + for(var s, l = [], c = 0; c < e; c++) l.push("" + o + ""); + s = l.join(""); + var u = i()("" + s + "
"); + return n && n.tableClassName && u.addClass(n.tableClassName), u[0] + } + }, { + key: "deleteTable", + value: function(t) { + var e = pt.ancestor(t.commonAncestor(), pt.isCell); + i()(e).closest("table").remove() + } + }]) && Lt(e.prototype, n), o && Lt(e, o), t + }(); + + function Dt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Ht = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$note = e.layoutInfo.note, this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.options = e.options, this.lang = this.options.langInfo, this.editable = this.$editable[0], this.lastRange = null, this.snapshot = null, this.style = new $t, this.table = new Ft, this.typing = new Rt(e), this.bullet = new It, this.history = new Tt(e), this.context.memo("help.escape", this.lang.help.escape), this.context.memo("help.undo", this.lang.help.undo), this.context.memo("help.redo", this.lang.help.redo), this.context.memo("help.tab", this.lang.help.tab), this.context.memo("help.untab", this.lang.help.untab), this.context.memo("help.insertParagraph", this.lang.help.insertParagraph), this.context.memo("help.insertOrderedList", this.lang.help.insertOrderedList), this.context.memo("help.insertUnorderedList", this.lang.help.insertUnorderedList), this.context.memo("help.indent", this.lang.help.indent), this.context.memo("help.outdent", this.lang.help.outdent), this.context.memo("help.formatPara", this.lang.help.formatPara), this.context.memo("help.insertHorizontalRule", this.lang.help.insertHorizontalRule), this.context.memo("help.fontName", this.lang.help.fontName); + for(var o = ["bold", "italic", "underline", "strikethrough", "superscript", "subscript", "justifyLeft", "justifyCenter", "justifyRight", "justifyFull", "formatBlock", "removeFormat", "backColor"], r = 0, a = o.length; r < a; r++) this[o[r]] = function(t) { + return function(e) { + n.beforeCommand(), document.execCommand(t, !1, e), n.afterCommand(!0) + } + }(o[r]), this.context.memo("help." + o[r], this.lang.help[o[r]]); + this.fontName = this.wrapCommand((function(t) { + return n.fontStyling("font-family", m.validFontName(t)) + })), this.fontSize = this.wrapCommand((function(t) { + var e = n.currentStyle()["font-size-unit"]; + return n.fontStyling("font-size", t + e) + })), this.fontSizeUnit = this.wrapCommand((function(t) { + var e = n.currentStyle()["font-size"]; + return n.fontStyling("font-size", e + t) + })); + for(var s = 1; s <= 6; s++) this["formatH" + s] = function(t) { + return function() { + n.formatBlock("H" + t) + } + }(s), this.context.memo("help.formatH" + s, this.lang.help["formatH" + s]); + this.insertParagraph = this.wrapCommand((function() { + n.typing.insertParagraph(n.editable) + })), this.insertOrderedList = this.wrapCommand((function() { + n.bullet.insertOrderedList(n.editable) + })), this.insertUnorderedList = this.wrapCommand((function() { + n.bullet.insertUnorderedList(n.editable) + })), this.indent = this.wrapCommand((function() { + n.bullet.indent(n.editable) + })), this.outdent = this.wrapCommand((function() { + n.bullet.outdent(n.editable) + })), this.insertNode = this.wrapCommand((function(t) { + n.isLimited(i()(t).text().length) || (n.getLastRange().insertNode(t), n.setLastRange(wt.createFromNodeAfter(t).select())) + })), this.insertText = this.wrapCommand((function(t) { + if(!n.isLimited(t.length)) { + var e = n.getLastRange().insertNode(pt.createText(t)); + n.setLastRange(wt.create(e, pt.nodeLength(e)).select()) + } + })), this.pasteHTML = this.wrapCommand((function(t) { + if(!n.isLimited(t.length)) { + t = n.context.invoke("codeview.purify", t); + var e = n.getLastRange().pasteHTML(t); + n.setLastRange(wt.createFromNodeAfter(C.last(e)).select()) + } + })), this.formatBlock = this.wrapCommand((function(t, e) { + var o = n.options.callbacks.onApplyCustomStyle; + o ? o.call(n, e, n.context, n.onFormatBlock) : n.onFormatBlock(t, e) + })), this.insertHorizontalRule = this.wrapCommand((function() { + var t = n.getLastRange().insertNode(pt.create("HR")); + t.nextSibling && n.setLastRange(wt.create(t.nextSibling, 0).normalize().select()) + })), this.lineHeight = this.wrapCommand((function(t) { + n.style.stylePara(n.getLastRange(), { + lineHeight: t + }) + })), this.createLink = this.wrapCommand((function(t) { + var e = t.url, + o = t.text, + r = t.isNewWindow, + a = t.checkProtocol, + s = t.range || n.getLastRange(), + l = o.length - s.toString().length; + if(!(l > 0 && n.isLimited(l))) { + var c = s.toString() !== o; + "string" == typeof e && (e = e.trim()), n.options.onCreateLink ? e = n.options.onCreateLink(e) : a && (e = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e) ? e : n.options.defaultProtocol + e); + var u = []; + if(c) { + var d = (s = s.deleteContents()).insertNode(i()("" + o + "")[0]); + u.push(d) + } else u = n.style.styleNodes(s, { + nodeName: "A", + expandClosestSibling: !0, + onlyPartialContains: !0 + }); + i.a.each(u, (function(t, n) { + i()(n).attr("href", e), r ? i()(n).attr("target", "_blank") : i()(n).removeAttr("target") + })), n.setLastRange(n.createRangeFromList(u).select()) + } + })), this.color = this.wrapCommand((function(t) { + var e = t.foreColor, + n = t.backColor; + e && document.execCommand("foreColor", !1, e), n && document.execCommand("backColor", !1, n) + })), this.foreColor = this.wrapCommand((function(t) { + document.execCommand("foreColor", !1, t) + })), this.insertTable = this.wrapCommand((function(t) { + var e = t.split("x"); + n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0], e[1], n.options)) + })), this.removeMedia = this.wrapCommand((function() { + var t = i()(n.restoreTarget()).parent(); + t.closest("figure").length ? t.closest("figure").remove() : t = i()(n.restoreTarget()).detach(), n.context.triggerEvent("media.delete", t, n.$editable) + })), this.floatMe = this.wrapCommand((function(t) { + var e = i()(n.restoreTarget()); + e.toggleClass("note-float-left", "left" === t), e.toggleClass("note-float-right", "right" === t), e.css("float", "none" === t ? "" : t) + })), this.resize = this.wrapCommand((function(t) { + var e = i()(n.restoreTarget()); + 0 === (t = parseFloat(t)) ? e.css("width", "") : e.css({ + width: 100 * t + "%", + height: "" + }) + })) + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + var t = this; + this.$editable.on("keydown", (function(e) { + if(e.keyCode === xt.code.ENTER && t.context.triggerEvent("enter", e), t.context.triggerEvent("keydown", e), t.snapshot = t.history.makeSnapshot(), t.hasKeyShortCut = !1, e.isDefaultPrevented() || (t.options.shortcuts ? t.hasKeyShortCut = t.handleKeyMap(e) : t.preventDefaultEditableShortCuts(e)), t.isLimited(1, e)) { + var n = t.getLastRange(); + if(n.eo - n.so == 0) return !1 + } + t.setLastRange(), t.options.recordEveryKeystroke && !1 === t.hasKeyShortCut && t.history.recordUndo() + })).on("keyup", (function(e) { + t.setLastRange(), t.context.triggerEvent("keyup", e) + })).on("focus", (function(e) { + t.setLastRange(), t.context.triggerEvent("focus", e) + })).on("blur", (function(e) { + t.context.triggerEvent("blur", e) + })).on("mousedown", (function(e) { + t.context.triggerEvent("mousedown", e) + })).on("mouseup", (function(e) { + t.setLastRange(), t.history.recordUndo(), t.context.triggerEvent("mouseup", e) + })).on("scroll", (function(e) { + t.context.triggerEvent("scroll", e) + })).on("paste", (function(e) { + t.setLastRange(), t.context.triggerEvent("paste", e) + })).on("input", (function() { + t.isLimited(0) && t.snapshot && t.history.applySnapshot(t.snapshot) + })), this.$editable.attr("spellcheck", this.options.spellCheck), this.$editable.attr("autocorrect", this.options.spellCheck), this.options.disableGrammar && this.$editable.attr("data-gramm", !1), this.$editable.html(pt.html(this.$note) || pt.emptyPara), this.$editable.on(m.inputEventName, g.debounce((function() { + t.context.triggerEvent("change", t.$editable.html(), t.$editable) + }), 10)), this.$editable.on("focusin", (function(e) { + t.context.triggerEvent("focusin", e) + })).on("focusout", (function(e) { + t.context.triggerEvent("focusout", e) + })), this.options.airMode ? this.options.overrideContextMenu && this.$editor.on("contextmenu", (function(e) { + return t.context.triggerEvent("contextmenu", e), !1 + })) : (this.options.width && this.$editor.outerWidth(this.options.width), this.options.height && this.$editable.outerHeight(this.options.height), this.options.maxHeight && this.$editable.css("max-height", this.options.maxHeight), this.options.minHeight && this.$editable.css("min-height", this.options.minHeight)), this.history.recordUndo(), this.setLastRange() + } + }, { + key: "destroy", + value: function() { + this.$editable.off() + } + }, { + key: "handleKeyMap", + value: function(t) { + var e = this.options.keyMap[m.isMac ? "mac" : "pc"], + n = []; + t.metaKey && n.push("CMD"), t.ctrlKey && !t.altKey && n.push("CTRL"), t.shiftKey && n.push("SHIFT"); + var o = xt.nameFromCode[t.keyCode]; + o && n.push(o); + var i = e[n.join("+")]; + if("TAB" !== o || this.options.tabDisable) + if(i) { + if(!1 !== this.context.invoke(i)) return t.preventDefault(), !0 + } else xt.isEdit(t.keyCode) && this.afterCommand(); + else this.afterCommand(); + return !1 + } + }, { + key: "preventDefaultEditableShortCuts", + value: function(t) { + (t.ctrlKey || t.metaKey) && C.contains([66, 73, 85], t.keyCode) && t.preventDefault() + } + }, { + key: "isLimited", + value: function(t, e) { + return t = t || 0, (void 0 === e || !(xt.isMove(e.keyCode) || xt.isNavigation(e.keyCode) || e.ctrlKey || e.metaKey || C.contains([xt.code.BACKSPACE, xt.code.DELETE], e.keyCode))) && this.options.maxTextLength > 0 && this.$editable.text().length + t > this.options.maxTextLength + } + }, { + key: "createRange", + value: function() { + return this.focus(), this.setLastRange(), this.getLastRange() + } + }, { + key: "createRangeFromList", + value: function(t) { + var e = wt.createFromNodeBefore(C.head(t)).getStartPoint(), + n = wt.createFromNodeAfter(C.last(t)).getEndPoint(); + return wt.create(e.node, e.offset, n.node, n.offset) + } + }, { + key: "setLastRange", + value: function(t) { + t ? this.lastRange = t : (this.lastRange = wt.create(this.editable), 0 === i()(this.lastRange.sc).closest(".note-editable").length && (this.lastRange = wt.createFromBodyElement(this.editable))) + } + }, { + key: "getLastRange", + value: function() { + return this.lastRange || this.setLastRange(), this.lastRange + } + }, { + key: "saveRange", + value: function(t) { + t && this.getLastRange().collapse().select() + } + }, { + key: "restoreRange", + value: function() { + this.lastRange && (this.lastRange.select(), this.focus()) + } + }, { + key: "saveTarget", + value: function(t) { + this.$editable.data("target", t) + } + }, { + key: "clearTarget", + value: function() { + this.$editable.removeData("target") + } + }, { + key: "restoreTarget", + value: function() { + return this.$editable.data("target") + } + }, { + key: "currentStyle", + value: function() { + var t = wt.create(); + return t && (t = t.normalize()), t ? this.style.current(t) : this.style.fromNode(this.$editable) + } + }, { + key: "styleFromNode", + value: function(t) { + return this.style.fromNode(t) + } + }, { + key: "undo", + value: function() { + this.context.triggerEvent("before.command", this.$editable.html()), this.history.undo(), this.context.triggerEvent("change", this.$editable.html(), this.$editable) + } + }, { + key: "commit", + value: function() { + this.context.triggerEvent("before.command", this.$editable.html()), this.history.commit(), this.context.triggerEvent("change", this.$editable.html(), this.$editable) + } + }, { + key: "redo", + value: function() { + this.context.triggerEvent("before.command", this.$editable.html()), this.history.redo(), this.context.triggerEvent("change", this.$editable.html(), this.$editable) + } + }, { + key: "beforeCommand", + value: function() { + this.context.triggerEvent("before.command", this.$editable.html()), document.execCommand("styleWithCSS", !1, this.options.styleWithCSS), this.focus() + } + }, { + key: "afterCommand", + value: function(t) { + this.normalizeContent(), this.history.recordUndo(), t || this.context.triggerEvent("change", this.$editable.html(), this.$editable) + } + }, { + key: "tab", + value: function() { + var t = this.getLastRange(); + if(t.isCollapsed() && t.isOnCell()) this.table.tab(t); + else { + if(0 === this.options.tabSize) return !1; + this.isLimited(this.options.tabSize) || (this.beforeCommand(), this.typing.insertTab(t, this.options.tabSize), this.afterCommand()) + } + } + }, { + key: "untab", + value: function() { + var t = this.getLastRange(); + if(t.isCollapsed() && t.isOnCell()) this.table.tab(t, !0); + else if(0 === this.options.tabSize) return !1 + } + }, { + key: "wrapCommand", + value: function(t) { + return function() { + this.beforeCommand(), t.apply(this, arguments), this.afterCommand() + } + } + }, { + key: "insertImage", + value: function(t, e) { + var n, o = this; + return(n = t, i.a.Deferred((function(t) { + var e = i()(""); + e.one("load", (function() { + e.off("error abort"), t.resolve(e) + })).one("error abort", (function() { + e.off("load").detach(), t.reject(e) + })).css({ + display: "none" + }).appendTo(document.body).attr("src", n) + })).promise()).then((function(t) { + o.beforeCommand(), "function" == typeof e ? e(t) : ("string" == typeof e && t.attr("data-filename", e), t.css("width", Math.min(o.$editable.width(), t.width()))), t.show(), o.getLastRange().insertNode(t[0]), o.setLastRange(wt.createFromNodeAfter(t[0]).select()), o.afterCommand() + })).fail((function(t) { + o.context.triggerEvent("image.upload.error", src, t) + })) + } + }, { + key: "insertImagesAsDataURL", + value: function(t) { + var e = this; + i.a.each(t, (function(t, n) { + var o = n.name; + e.options.maximumImageFileSize && e.options.maximumImageFileSize < n.size ? e.context.triggerEvent("image.upload.error", file, e.lang.image.maximumFileSizeError) : function(t) { + return i.a.Deferred((function(e) { + i.a.extend(new FileReader, { + onload: function(t) { + var n = t.target.result; + e.resolve(n) + }, + onerror: function(t) { + e.reject(t) + } + }).readAsDataURL(t) + })).promise() + }(n).then((function(t) { + return e.insertImage(t, o) + })).fail((function() { + e.context.triggerEvent("image.upload.error", file, "base64 failed") + })) + })) + } + }, { + key: "insertImagesOrCallback", + value: function(t) { + this.options.callbacks.onImageUpload ? this.context.triggerEvent("image.upload", t) : this.insertImagesAsDataURL(t) + } + }, { + key: "getSelectedText", + value: function() { + var t = this.getLastRange(); + return t.isOnAnchor() && (t = wt.createFromNode(pt.ancestor(t.sc, pt.isAnchor))), t.toString() + } + }, { + key: "onFormatBlock", + value: function(t, e) { + if(document.execCommand("FormatBlock", !1, m.isMSIE ? "<" + t + ">" : t), e && e.length && (e[0].tagName.toUpperCase() !== t.toUpperCase() && (e = e.find(t)), e && e.length)) { + var n = e[0].className || ""; + if(n) { + var o = this.createRange(); + i()([o.sc, o.ec]).closest(t).addClass(n) + } + } + } + }, { + key: "formatPara", + value: function() { + this.formatBlock("P") + } + }, { + key: "fontStyling", + value: function(t, e) { + var n = this.getLastRange(); + if("" !== n) { + var o = this.style.styleNodes(n); + if(this.$editor.find(".note-status-output").html(""), i()(o).css(t, e), n.isCollapsed()) { + var r = C.head(o); + r && !pt.nodeLength(r) && (r.innerHTML = pt.ZERO_WIDTH_NBSP_CHAR, wt.createFromNode(r.firstChild).select(), this.setLastRange(), this.$editable.data("bogus", r)) + } else this.setLastRange(this.createRangeFromList(o).select()) + } else { + var a = i.a.now(); + this.$editor.find(".note-status-output").html('
' + this.lang.output.noSelection + "
"), setTimeout((function() { + i()("#note-status-output-" + a).remove() + }), 5e3) + } + } + }, { + key: "unlink", + value: function() { + var t = this.getLastRange(); + if(t.isOnAnchor()) { + var e = pt.ancestor(t.sc, pt.isAnchor); + (t = wt.createFromNode(e)).select(), this.setLastRange(), this.beforeCommand(), document.execCommand("unlink"), this.afterCommand() + } + } + }, { + key: "getLinkInfo", + value: function() { + var t = this.getLastRange().expand(pt.isAnchor), + e = i()(C.head(t.nodes(pt.isAnchor))), + n = { + range: t, + text: t.toString(), + url: e.length ? e.attr("href") : "" + }; + return e.length && (n.isNewWindow = "_blank" === e.attr("target")), n + } + }, { + key: "addRow", + value: function(t) { + var e = this.getLastRange(this.$editable); + e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addRow(e, t), this.afterCommand()) + } + }, { + key: "addCol", + value: function(t) { + var e = this.getLastRange(this.$editable); + e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addCol(e, t), this.afterCommand()) + } + }, { + key: "deleteRow", + value: function() { + var t = this.getLastRange(this.$editable); + t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteRow(t), this.afterCommand()) + } + }, { + key: "deleteCol", + value: function() { + var t = this.getLastRange(this.$editable); + t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteCol(t), this.afterCommand()) + } + }, { + key: "deleteTable", + value: function() { + var t = this.getLastRange(this.$editable); + t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteTable(t), this.afterCommand()) + } + }, { + key: "resizeTo", + value: function(t, e, n) { + var o; + if(n) { + var i = t.y / t.x, + r = e.data("ratio"); + o = { + width: r > i ? t.x : t.y / r, + height: r > i ? t.x * r : t.y + } + } else o = { + width: t.x, + height: t.y + }; + e.css(o) + } + }, { + key: "hasFocus", + value: function() { + return this.$editable.is(":focus") + } + }, { + key: "focus", + value: function() { + this.hasFocus() || this.$editable.focus() + } + }, { + key: "isEmpty", + value: function() { + return pt.isEmpty(this.$editable[0]) || pt.emptyPara === this.$editable.html() + } + }, { + key: "empty", + value: function() { + this.context.invoke("code", pt.emptyPara) + } + }, { + key: "normalizeContent", + value: function() { + this.$editable[0].normalize() + } + }]) && Dt(e.prototype, n), o && Dt(e, o), t + }(); + + function Bt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var zt = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$editable = e.layoutInfo.editable + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + this.$editable.on("paste", this.pasteByEvent.bind(this)) + } + }, { + key: "pasteByEvent", + value: function(t) { + var e = this, + n = t.originalEvent.clipboardData; + if(n && n.items && n.items.length) { + var o = n.items.length > 1 ? n.items[1] : C.head(n.items); + "file" === o.kind && -1 !== o.type.indexOf("image/") ? (this.context.invoke("editor.insertImagesOrCallback", [o.getAsFile()]), t.preventDefault()) : "string" === o.kind && this.context.invoke("editor.isLimited", n.getData("Text").length) && t.preventDefault() + } else if(window.clipboardData) { + var i = window.clipboardData.getData("text"); + this.context.invoke("editor.isLimited", i.length) && t.preventDefault() + } + setTimeout((function() { + e.context.invoke("editor.afterCommand") + }), 10) + } + }]) && Bt(e.prototype, n), o && Bt(e, o), t + }(); + + function Mt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Ot = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$eventListener = i()(document), this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.options = e.options, this.lang = this.options.langInfo, this.documentEventHandlers = {}, this.$dropzone = i()(['
', '
', "
"].join("")).prependTo(this.$editor) + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + this.options.disableDragAndDrop ? (this.documentEventHandlers.onDrop = function(t) { + t.preventDefault() + }, this.$eventListener = this.$dropzone, this.$eventListener.on("drop", this.documentEventHandlers.onDrop)) : this.attachDragAndDropEvent() + } + }, { + key: "attachDragAndDropEvent", + value: function() { + var t = this, + e = i()(), + n = this.$dropzone.find(".note-dropzone-message"); + this.documentEventHandlers.onDragenter = function(o) { + var i = t.context.invoke("codeview.isActivated"), + r = t.$editor.width() > 0 && t.$editor.height() > 0; + i || e.length || !r || (t.$editor.addClass("dragover"), t.$dropzone.width(t.$editor.width()), t.$dropzone.height(t.$editor.height()), n.text(t.lang.image.dragImageHere)), e = e.add(o.target) + }, this.documentEventHandlers.onDragleave = function(n) { + (e = e.not(n.target)).length && "BODY" !== n.target.nodeName || (e = i()(), t.$editor.removeClass("dragover")) + }, this.documentEventHandlers.onDrop = function() { + e = i()(), t.$editor.removeClass("dragover") + }, this.$eventListener.on("dragenter", this.documentEventHandlers.onDragenter).on("dragleave", this.documentEventHandlers.onDragleave).on("drop", this.documentEventHandlers.onDrop), this.$dropzone.on("dragenter", (function() { + t.$dropzone.addClass("hover"), n.text(t.lang.image.dropImage) + })).on("dragleave", (function() { + t.$dropzone.removeClass("hover"), n.text(t.lang.image.dragImageHere) + })), this.$dropzone.on("drop", (function(e) { + var n = e.originalEvent.dataTransfer; + e.preventDefault(), n && n.files && n.files.length ? (t.$editable.focus(), t.context.invoke("editor.insertImagesOrCallback", n.files)) : i.a.each(n.types, (function(e, o) { + if(!(o.toLowerCase().indexOf("_moz_") > -1)) { + var r = n.getData(o); + if(o.toLowerCase().indexOf("text") > -1) { + let modifiedText = r.replace(/(?:\r\n|\r|\n)/g, '
'); + t.context.invoke("editor.pasteHTML", modifiedText); + } else { + i()(r).each((function(e, n) { + t.context.invoke("editor.insertNode", n) + })); + } + } + })) + })).on("dragover", !1) + } + }, { + key: "destroy", + value: function() { + var t = this; + Object.keys(this.documentEventHandlers).forEach((function(e) { + t.$eventListener.off(e.substr(2).toLowerCase(), t.documentEventHandlers[e]) + })), this.documentEventHandlers = {} + } + }]) && Mt(e.prototype, n), o && Mt(e, o), t + }(); + + function jt(t) { + if("undefined" == typeof Symbol || null == t[Symbol.iterator]) { + if(Array.isArray(t) || (t = function(t, e) { + if(!t) return; + if("string" == typeof t) return Ut(t, e); + var n = Object.prototype.toString.call(t).slice(8, -1); + "Object" === n && t.constructor && (n = t.constructor.name); + if("Map" === n || "Set" === n) return Array.from(n); + if("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Ut(t, e) + }(t))) { + var e = 0, + n = function() {}; + return { + s: n, + n: function() { + return e >= t.length ? { + done: !0 + } : { + done: !1, + value: t[e++] + } + }, + e: function(t) { + throw t + }, + f: n + } + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") + } + var o, i, r = !0, + a = !1; + return { + s: function() { + o = t[Symbol.iterator]() + }, + n: function() { + var t = o.next(); + return r = t.done, t + }, + e: function(t) { + a = !0, i = t + }, + f: function() { + try { + r || null == o.return || o.return() + } finally { + if(a) throw i + } + } + } + } + + function Ut(t, e) { + (null == e || e > t.length) && (e = t.length); + for(var n = 0, o = new Array(e); n < e; n++) o[n] = t[n]; + return o + } + + function Wt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Kt = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.$codable = e.layoutInfo.codable, this.options = e.options, this.CodeMirrorConstructor = window.CodeMirror, this.options.codemirror.CodeMirrorConstructor && (this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor) + } + var e, n, o; + return e = t, (n = [{ + key: "sync", + value: function(t) { + var e = this.isActivated(), + n = this.CodeMirrorConstructor; + e && (t ? n ? this.$codable.data("cmEditor").getDoc().setValue(t) : this.$codable.val(t) : n && this.$codable.data("cmEditor").save()) + } + }, { + key: "initialize", + value: function() { + var t = this; + this.$codable.on("keyup", (function(e) { + e.keyCode === xt.code.ESCAPE && t.deactivate() + })) + } + }, { + key: "isActivated", + value: function() { + return this.$editor.hasClass("codeview") + } + }, { + key: "toggle", + value: function() { + this.isActivated() ? this.deactivate() : this.activate(), this.context.triggerEvent("codeview.toggled") + } + }, { + key: "purify", + value: function(t) { + if(this.options.codeviewFilter && (t = t.replace(this.options.codeviewFilterRegex, ""), this.options.codeviewIframeFilter)) { + var e = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase); + t = t.replace(/(.*?(?:<\/iframe>)?)/gi, (function(t) { + if(/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t)) return ""; + var n, o = jt(e); + try { + for(o.s(); !(n = o.n()).done;) { + var i = n.value; + if(new RegExp('src="(https?:)?//' + i.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") + '/(.+)"').test(t)) return t + } + } catch(t) { + o.e(t) + } finally { + o.f() + } + return "" + })) + } + return t + } + }, { + key: "activate", + value: function() { + var t = this, + e = this.CodeMirrorConstructor; + if(this.$codable.val(pt.html(this.$editable, this.options.prettifyHtml)), this.$codable.height(this.$editable.height()), this.context.invoke("toolbar.updateCodeview", !0), this.context.invoke("airPopover.updateCodeview", !0), this.$editor.addClass("codeview"), this.$codable.focus(), e) { + var n = e.fromTextArea(this.$codable[0], this.options.codemirror); + if(this.options.codemirror.tern) { + var o = new e.TernServer(this.options.codemirror.tern); + n.ternServer = o, n.on("cursorActivity", (function(t) { + o.updateArgHints(t) + })) + } + n.on("blur", (function(e) { + t.context.triggerEvent("blur.codeview", n.getValue(), e) + })), n.on("change", (function() { + t.context.triggerEvent("change.codeview", n.getValue(), n) + })), n.setSize(null, this.$editable.outerHeight()), this.$codable.data("cmEditor", n) + } else this.$codable.on("blur", (function(e) { + t.context.triggerEvent("blur.codeview", t.$codable.val(), e) + })), this.$codable.on("input", (function() { + t.context.triggerEvent("change.codeview", t.$codable.val(), t.$codable) + })) + } + }, { + key: "deactivate", + value: function() { + if(this.CodeMirrorConstructor) { + var t = this.$codable.data("cmEditor"); + this.$codable.val(t.getValue()), t.toTextArea() + } + var e = this.purify(pt.value(this.$codable, this.options.prettifyHtml) || pt.emptyPara), + n = this.$editable.html() !== e; + this.$editable.html(e), this.$editable.height(this.options.height ? this.$codable.height() : "auto"), this.$editor.removeClass("codeview"), n && this.context.triggerEvent("change", this.$editable.html(), this.$editable), this.$editable.focus(), this.context.invoke("toolbar.updateCodeview", !1), this.context.invoke("airPopover.updateCodeview", !1) + } + }, { + key: "destroy", + value: function() { + this.isActivated() && this.deactivate() + } + }]) && Wt(e.prototype, n), o && Wt(e, o), t + }(); + + function Vt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var qt = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.$document = i()(document), this.$statusbar = e.layoutInfo.statusbar, this.$editable = e.layoutInfo.editable, this.options = e.options + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + var t = this; + this.options.airMode || this.options.disableResizeEditor ? this.destroy() : this.$statusbar.on("mousedown", (function(e) { + e.preventDefault(), e.stopPropagation(); + var n = t.$editable.offset().top - t.$document.scrollTop(), + o = function(e) { + var o = e.clientY - (n + 24); + o = t.options.minheight > 0 ? Math.max(o, t.options.minheight) : o, o = t.options.maxHeight > 0 ? Math.min(o, t.options.maxHeight) : o, t.$editable.height(o) + }; + t.$document.on("mousemove", o).one("mouseup", (function() { + t.$document.off("mousemove", o) + })) + })) + } + }, { + key: "destroy", + value: function() { + this.$statusbar.off(), this.$statusbar.addClass("locked") + } + }]) && Vt(e.prototype, n), o && Vt(e, o), t + }(); + + function _t(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Gt = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$editor = e.layoutInfo.editor, this.$toolbar = e.layoutInfo.toolbar, this.$editable = e.layoutInfo.editable, this.$codable = e.layoutInfo.codable, this.$window = i()(window), this.$scrollbar = i()("html, body"), this.onResize = function() { + n.resizeTo({ + h: n.$window.height() - n.$toolbar.outerHeight() + }) + } + } + var e, n, o; + return e = t, (n = [{ + key: "resizeTo", + value: function(t) { + this.$editable.css("height", t.h), this.$codable.css("height", t.h), this.$codable.data("cmeditor") && this.$codable.data("cmeditor").setsize(null, t.h) + } + }, { + key: "toggle", + value: function() { + this.$editor.toggleClass("fullscreen"), this.isFullscreen() ? (this.$editable.data("orgHeight", this.$editable.css("height")), this.$editable.data("orgMaxHeight", this.$editable.css("maxHeight")), this.$editable.css("maxHeight", ""), this.$window.on("resize", this.onResize).trigger("resize"), this.$scrollbar.css("overflow", "hidden")) : (this.$window.off("resize", this.onResize), this.resizeTo({ + h: this.$editable.data("orgHeight") + }), this.$editable.css("maxHeight", this.$editable.css("orgMaxHeight")), this.$scrollbar.css("overflow", "visible")), this.context.invoke("toolbar.updateFullscreen", this.isFullscreen()) + } + }, { + key: "isFullscreen", + value: function() { + return this.$editor.hasClass("fullscreen") + } + }]) && _t(e.prototype, n), o && _t(e, o), t + }(); + + function Yt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Zt = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$document = i()(document), this.$editingArea = e.layoutInfo.editingArea, this.options = e.options, this.lang = this.options.langInfo, this.events = { + "summernote.mousedown": function(t, e) { + n.update(e.target, e) && e.preventDefault() + }, + "summernote.keyup summernote.scroll summernote.change summernote.dialog.shown": function() { + n.update() + }, + "summernote.disable summernote.blur": function() { + n.hide() + }, + "summernote.codeview.toggled": function() { + n.update() + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + var t = this; + this.$handle = i()(['
', '
', '
', '
', '
', '
', '
', this.options.disableResizeImage ? "" : '
', "
", "
"].join("")).prependTo(this.$editingArea), this.$handle.on("mousedown", (function(e) { + if(pt.isControlSizing(e.target)) { + e.preventDefault(), e.stopPropagation(); + var n = t.$handle.find(".note-control-selection").data("target"), + o = n.offset(), + i = t.$document.scrollTop(), + r = function(e) { + t.context.invoke("editor.resizeTo", { + x: e.clientX - o.left, + y: e.clientY - (o.top - i) + }, n, !e.shiftKey), t.update(n[0], e) + }; + t.$document.on("mousemove", r).one("mouseup", (function(e) { + e.preventDefault(), t.$document.off("mousemove", r), t.context.invoke("editor.afterCommand") + })), n.data("ratio") || n.data("ratio", n.height() / n.width()) + } + })), this.$handle.on("wheel", (function(e) { + e.preventDefault(), t.update() + })) + } + }, { + key: "destroy", + value: function() { + this.$handle.remove() + } + }, { + key: "update", + value: function(t, e) { + if(this.context.isDisabled()) return !1; + var n = pt.isImg(t), + o = this.$handle.find(".note-control-selection"); + if(this.context.invoke("imagePopover.update", t, e), n) { + var r = i()(t), + a = r.position(), + s = { + left: a.left + parseInt(r.css("marginLeft"), 10), + top: a.top + parseInt(r.css("marginTop"), 10) + }, + l = { + w: r.outerWidth(!1), + h: r.outerHeight(!1) + }; + o.css({ + display: "block", + left: s.left, + top: s.top, + width: l.w, + height: l.h + }).data("target", r); + var c = new Image; + c.src = r.attr("src"); + var u = l.w + "x" + l.h + " (" + this.lang.image.original + ": " + c.width + "x" + c.height + ")"; + o.find(".note-control-selection-info").text(u), this.context.invoke("editor.saveTarget", t) + } else this.hide(); + return n + } + }, { + key: "hide", + value: function() { + this.context.invoke("editor.clearTarget"), this.$handle.children().hide() + } + }]) && Yt(e.prototype, n), o && Yt(e, o), t + }(); + + function Xt(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var Qt = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i, + Jt = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.options = e.options, this.events = { + "summernote.keyup": function(t, e) { + e.isDefaultPrevented() || n.handleKeyup(e) + }, + "summernote.keydown": function(t, e) { + n.handleKeydown(e) + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + this.lastWordRange = null + } + }, { + key: "destroy", + value: function() { + this.lastWordRange = null + } + }, { + key: "replace", + value: function() { + if(this.lastWordRange) { + var t = this.lastWordRange.toString(), + e = t.match(Qt); + if(e && (e[1] || e[2])) { + var n = e[1] ? t : "http://" + t, + o = this.options.showDomainOnlyForAutolink ? t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, "").split("/")[0] : t, + r = i()("").html(o).attr("href", n)[0]; + this.context.options.linkTargetBlank && i()(r).attr("target", "_blank"), this.lastWordRange.insertNode(r), this.lastWordRange = null, this.context.invoke("editor.focus") + } + } + } + }, { + key: "handleKeydown", + value: function(t) { + if(C.contains([xt.code.ENTER, xt.code.SPACE], t.keyCode)) { + var e = this.context.invoke("editor.createRange").getWordRange(); + this.lastWordRange = e + } + } + }, { + key: "handleKeyup", + value: function(t) { + C.contains([xt.code.ENTER, xt.code.SPACE], t.keyCode) && this.replace() + } + }]) && Xt(e.prototype, n), o && Xt(e, o), t + }(); + + function te(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var ee = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.$note = e.layoutInfo.note, this.events = { + "summernote.change": function() { + n.$note.val(e.invoke("code")) + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return pt.isTextarea(this.$note[0]) + } + }]) && te(e.prototype, n), o && te(e, o), t + }(); + + function ne(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var oe = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.options = e.options.replace || {}, this.keys = [xt.code.ENTER, xt.code.SPACE, xt.code.PERIOD, xt.code.COMMA, xt.code.SEMICOLON, xt.code.SLASH], this.previousKeydownCode = null, this.events = { + "summernote.keyup": function(t, e) { + e.isDefaultPrevented() || n.handleKeyup(e) + }, + "summernote.keydown": function(t, e) { + n.handleKeydown(e) + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return !!this.options.match + } + }, { + key: "initialize", + value: function() { + this.lastWord = null + } + }, { + key: "destroy", + value: function() { + this.lastWord = null + } + }, { + key: "replace", + value: function() { + if(this.lastWord) { + var t = this, + e = this.lastWord.toString(); + this.options.match(e, (function(e) { + if(e) { + var n = ""; + if("string" == typeof e ? n = pt.createText(e) : e instanceof jQuery ? n = e[0] : e instanceof Node && (n = e), !n) return; + t.lastWord.insertNode(n), t.lastWord = null, t.context.invoke("editor.focus") + } + })) + } + } + }, { + key: "handleKeydown", + value: function(t) { + if(this.previousKeydownCode && C.contains(this.keys, this.previousKeydownCode)) this.previousKeydownCode = t.keyCode; + else { + if(C.contains(this.keys, t.keyCode)) { + var e = this.context.invoke("editor.createRange").getWordRange(); + this.lastWord = e + } + this.previousKeydownCode = t.keyCode + } + } + }, { + key: "handleKeyup", + value: function(t) { + C.contains(this.keys, t.keyCode) && this.replace() + } + }]) && ne(e.prototype, n), o && ne(e, o), t + }(); + + function ie(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var re = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$editingArea = e.layoutInfo.editingArea, this.options = e.options, !0 === this.options.inheritPlaceholder && (this.options.placeholder = this.context.$note.attr("placeholder") || this.options.placeholder), this.events = { + "summernote.init summernote.change": function() { + n.update() + }, + "summernote.codeview.toggled": function() { + n.update() + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return !!this.options.placeholder + } + }, { + key: "initialize", + value: function() { + var t = this; + this.$placeholder = i()('
'), this.$placeholder.on("click", (function() { + t.context.invoke("focus") + })).html(this.options.placeholder).prependTo(this.$editingArea), this.update() + } + }, { + key: "destroy", + value: function() { + this.$placeholder.remove() + } + }, { + key: "update", + value: function() { + var t = !this.context.invoke("codeview.isActivated") && this.context.invoke("editor.isEmpty"); + this.$placeholder.toggle(t) + } + }]) && ie(e.prototype, n), o && ie(e, o), t + }(); + + function ae(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var se = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.ui = i.a.summernote.ui, this.context = e, this.$toolbar = e.layoutInfo.toolbar, this.options = e.options, this.lang = this.options.langInfo, this.invertedKeyMap = g.invertObject(this.options.keyMap[m.isMac ? "mac" : "pc"]) + } + var e, n, o; + return e = t, (n = [{ + key: "representShortcut", + value: function(t) { + var e = this.invertedKeyMap[t]; + return this.options.shortcuts && e ? (m.isMac && (e = e.replace("CMD", "⌘").replace("SHIFT", "⇧")), " (" + (e = e.replace("BACKSLASH", "\\").replace("SLASH", "/").replace("LEFTBRACKET", "[").replace("RIGHTBRACKET", "]")) + ")") : "" + } + }, { + key: "button", + value: function(t) { + return !this.options.tooltip && t.tooltip && delete t.tooltip, t.container = this.options.container, this.ui.button(t) + } + }, { + key: "initialize", + value: function() { + this.addToolbarButtons(), this.addImagePopoverButtons(), this.addLinkPopoverButtons(), this.addTablePopoverButtons(), this.fontInstalledMap = {} + } + }, { + key: "destroy", + value: function() { + delete this.fontInstalledMap + } + }, { + key: "isFontInstalled", + value: function(t) { + return Object.prototype.hasOwnProperty.call(this.fontInstalledMap, t) || (this.fontInstalledMap[t] = m.isFontInstalled(t) || C.contains(this.options.fontNamesIgnoreCheck, t)), this.fontInstalledMap[t] + } + }, { + key: "isFontDeservedToAdd", + value: function(t) { + return "" !== (t = t.toLowerCase()) && this.isFontInstalled(t) && -1 === m.genericFontFamilies.indexOf(t) + } + }, { + key: "colorPalette", + value: function(t, e, n, o) { + var r = this; + return this.ui.buttonGroup({ + className: "note-color " + t, + children: [this.button({ + className: "note-current-color-button", + contents: this.ui.icon(this.options.icons.font + " note-recent-color"), + tooltip: e, + click: function(t) { + var e = i()(t.currentTarget); + n && o ? r.context.invoke("editor.color", { + backColor: e.attr("data-backColor"), + foreColor: e.attr("data-foreColor") + }) : n ? r.context.invoke("editor.color", { + backColor: e.attr("data-backColor") + }) : o && r.context.invoke("editor.color", { + foreColor: e.attr("data-foreColor") + }) + }, + callback: function(t) { + var e = t.find(".note-recent-color"); + n && (e.css("background-color", r.options.colorButton.backColor), t.attr("data-backColor", r.options.colorButton.backColor)), o ? (e.css("color", r.options.colorButton.foreColor), t.attr("data-foreColor", r.options.colorButton.foreColor)) : e.css("color", "transparent") + } + }), this.button({ + className: "dropdown-toggle", + contents: this.ui.dropdownButtonContents("", this.options), + tooltip: this.lang.color.more, + data: { + toggle: "dropdown" + } + }), this.ui.dropdown({ + items: (n ? ['
', '
' + this.lang.color.background + "
", "
", '", "
", '
\x3c!-- back colors --\x3e
', "
", '", '', "
", '
', "
"].join("") : "") + (o ? ['
', '
' + this.lang.color.foreground + "
", "
", '", "
", '
\x3c!-- fore colors --\x3e
', "
", '", '', "
", '
', "
"].join("") : ""), + callback: function(t) { + t.find(".note-holder").each((function(t, e) { + var n = i()(e); + n.append(r.ui.palette({ + colors: r.options.colors, + colorsName: r.options.colorsName, + eventName: n.data("event"), + container: r.options.container, + tooltip: r.options.tooltip + }).render()) + })); + var e = [ + ["#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF"] + ]; + t.find(".note-holder-custom").each((function(t, n) { + var o = i()(n); + o.append(r.ui.palette({ + colors: e, + colorsName: e, + eventName: o.data("event"), + container: r.options.container, + tooltip: r.options.tooltip + }).render()) + })), t.find("input[type=color]").each((function(e, n) { + i()(n).change((function() { + var e = t.find("#" + i()(this).data("event")).find(".note-color-btn").first(), + n = this.value.toUpperCase(); + e.css("background-color", n).attr("aria-label", n).attr("data-value", n).attr("data-original-title", n), e.click() + })) + })) + }, + click: function(e) { + e.stopPropagation(); + var n = i()("." + t).find(".note-dropdown-menu"), + o = i()(e.target), + a = o.data("event"), + s = o.attr("data-value"); + if("openPalette" === a) { + var l = n.find("#" + s), + c = i()(n.find("#" + l.data("event")).find(".note-color-row")[0]), + u = c.find(".note-color-btn").last().detach(), + d = l.val(); + u.css("background-color", d).attr("aria-label", d).attr("data-value", d).attr("data-original-title", d), c.prepend(u), l.click() + } else { + if(C.contains(["backColor", "foreColor"], a)) { + var h = "backColor" === a ? "background-color" : "color", + f = o.closest(".note-color").find(".note-recent-color"), + p = o.closest(".note-color").find(".note-current-color-button"); + f.css(h, s), p.attr("data-" + a, s) + } + r.context.invoke("editor." + a, s) + } + } + })] + }).render() + } + }, { + key: "addToolbarButtons", + value: function() { + var t = this; + this.context.memo("button.style", (function() { + return t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic), t.options), + tooltip: t.lang.style.style, + data: { + toggle: "dropdown" + } + }), t.ui.dropdown({ + className: "dropdown-style", + items: t.options.styleTags, + title: t.lang.style.style, + template: function(e) { + "string" == typeof e && (e = { + tag: e, + title: Object.prototype.hasOwnProperty.call(t.lang.style, e) ? t.lang.style[e] : e + }); + var n = e.tag, + o = e.title; + return "<" + n + (e.style ? ' style="' + e.style + '" ' : "") + (e.className ? ' class="' + e.className + '"' : "") + ">" + o + "" + }, + click: t.context.createInvokeHandler("editor.formatBlock") + })]).render() + })); + for(var e = function(e, n) { + var o = t.options.styleTags[e]; + t.context.memo("button.style." + o, (function() { + return t.button({ + className: "note-btn-style-" + o, + contents: '
' + o.toUpperCase() + "
", + tooltip: t.lang.style[o], + click: t.context.createInvokeHandler("editor.formatBlock") + }).render() + })) + }, n = 0, o = this.options.styleTags.length; n < o; n++) e(n); + this.context.memo("button.bold", (function() { + return t.button({ + className: "note-btn-bold", + contents: t.ui.icon(t.options.icons.bold), + tooltip: t.lang.font.bold + t.representShortcut("bold"), + click: t.context.createInvokeHandlerAndUpdateState("editor.bold") + }).render() + })), this.context.memo("button.italic", (function() { + return t.button({ + className: "note-btn-italic", + contents: t.ui.icon(t.options.icons.italic), + tooltip: t.lang.font.italic + t.representShortcut("italic"), + click: t.context.createInvokeHandlerAndUpdateState("editor.italic") + }).render() + })), this.context.memo("button.underline", (function() { + return t.button({ + className: "note-btn-underline", + contents: t.ui.icon(t.options.icons.underline), + tooltip: t.lang.font.underline + t.representShortcut("underline"), + click: t.context.createInvokeHandlerAndUpdateState("editor.underline") + }).render() + })), this.context.memo("button.clear", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.eraser), + tooltip: t.lang.font.clear + t.representShortcut("removeFormat"), + click: t.context.createInvokeHandler("editor.removeFormat") + }).render() + })), this.context.memo("button.strikethrough", (function() { + return t.button({ + className: "note-btn-strikethrough", + contents: t.ui.icon(t.options.icons.strikethrough), + tooltip: t.lang.font.strikethrough + t.representShortcut("strikethrough"), + click: t.context.createInvokeHandlerAndUpdateState("editor.strikethrough") + }).render() + })), this.context.memo("button.superscript", (function() { + return t.button({ + className: "note-btn-superscript", + contents: t.ui.icon(t.options.icons.superscript), + tooltip: t.lang.font.superscript, + click: t.context.createInvokeHandlerAndUpdateState("editor.superscript") + }).render() + })), this.context.memo("button.subscript", (function() { + return t.button({ + className: "note-btn-subscript", + contents: t.ui.icon(t.options.icons.subscript), + tooltip: t.lang.font.subscript, + click: t.context.createInvokeHandlerAndUpdateState("editor.subscript") + }).render() + })), this.context.memo("button.fontname", (function() { + var e = t.context.invoke("editor.currentStyle"); + return t.options.addDefaultFonts && i.a.each(e["font-family"].split(","), (function(e, n) { + n = n.trim().replace(/['"]+/g, ""), t.isFontDeservedToAdd(n) && -1 === t.options.fontNames.indexOf(n) && t.options.fontNames.push(n) + })), t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents('', t.options), + tooltip: t.lang.font.name, + data: { + toggle: "dropdown" + } + }), t.ui.dropdownCheck({ + className: "dropdown-fontname", + checkClassName: t.options.icons.menuCheck, + items: t.options.fontNames.filter(t.isFontInstalled.bind(t)), + title: t.lang.font.name, + template: function(t) { + return '' + t + "" + }, + click: t.context.createInvokeHandlerAndUpdateState("editor.fontName") + })]).render() + })), this.context.memo("button.fontsize", (function() { + return t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents('', t.options), + tooltip: t.lang.font.size, + data: { + toggle: "dropdown" + } + }), t.ui.dropdownCheck({ + className: "dropdown-fontsize", + checkClassName: t.options.icons.menuCheck, + items: t.options.fontSizes, + title: t.lang.font.size, + click: t.context.createInvokeHandlerAndUpdateState("editor.fontSize") + })]).render() + })), this.context.memo("button.fontsizeunit", (function() { + return t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents('', t.options), + tooltip: t.lang.font.sizeunit, + data: { + toggle: "dropdown" + } + }), t.ui.dropdownCheck({ + className: "dropdown-fontsizeunit", + checkClassName: t.options.icons.menuCheck, + items: t.options.fontSizeUnits, + title: t.lang.font.sizeunit, + click: t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit") + })]).render() + })), this.context.memo("button.color", (function() { + return t.colorPalette("note-color-all", t.lang.color.recent, !0, !0) + })), this.context.memo("button.forecolor", (function() { + return t.colorPalette("note-color-fore", t.lang.color.foreground, !1, !0) + })), this.context.memo("button.backcolor", (function() { + return t.colorPalette("note-color-back", t.lang.color.background, !0, !1) + })), this.context.memo("button.ul", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.unorderedlist), + tooltip: t.lang.lists.unordered + t.representShortcut("insertUnorderedList"), + click: t.context.createInvokeHandler("editor.insertUnorderedList") + }).render() + })), this.context.memo("button.ol", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.orderedlist), + tooltip: t.lang.lists.ordered + t.representShortcut("insertOrderedList"), + click: t.context.createInvokeHandler("editor.insertOrderedList") + }).render() + })); + var r = this.button({ + contents: this.ui.icon(this.options.icons.alignLeft), + tooltip: this.lang.paragraph.left + this.representShortcut("justifyLeft"), + click: this.context.createInvokeHandler("editor.justifyLeft") + }), + a = this.button({ + contents: this.ui.icon(this.options.icons.alignCenter), + tooltip: this.lang.paragraph.center + this.representShortcut("justifyCenter"), + click: this.context.createInvokeHandler("editor.justifyCenter") + }), + s = this.button({ + contents: this.ui.icon(this.options.icons.alignRight), + tooltip: this.lang.paragraph.right + this.representShortcut("justifyRight"), + click: this.context.createInvokeHandler("editor.justifyRight") + }), + l = this.button({ + contents: this.ui.icon(this.options.icons.alignJustify), + tooltip: this.lang.paragraph.justify + this.representShortcut("justifyFull"), + click: this.context.createInvokeHandler("editor.justifyFull") + }), + c = this.button({ + contents: this.ui.icon(this.options.icons.outdent), + tooltip: this.lang.paragraph.outdent + this.representShortcut("outdent"), + click: this.context.createInvokeHandler("editor.outdent") + }), + u = this.button({ + contents: this.ui.icon(this.options.icons.indent), + tooltip: this.lang.paragraph.indent + this.representShortcut("indent"), + click: this.context.createInvokeHandler("editor.indent") + }); + this.context.memo("button.justifyLeft", g.invoke(r, "render")), this.context.memo("button.justifyCenter", g.invoke(a, "render")), this.context.memo("button.justifyRight", g.invoke(s, "render")), this.context.memo("button.justifyFull", g.invoke(l, "render")), this.context.memo("button.outdent", g.invoke(c, "render")), this.context.memo("button.indent", g.invoke(u, "render")), this.context.memo("button.paragraph", (function() { + return t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft), t.options), + tooltip: t.lang.paragraph.paragraph, + data: { + toggle: "dropdown" + } + }), t.ui.dropdown([t.ui.buttonGroup({ + className: "note-align", + children: [r, a, s, l] + }), t.ui.buttonGroup({ + className: "note-list", + children: [c, u] + })])]).render() + })), this.context.memo("button.height", (function() { + return t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight), t.options), + tooltip: t.lang.font.height, + data: { + toggle: "dropdown" + } + }), t.ui.dropdownCheck({ + items: t.options.lineHeights, + checkClassName: t.options.icons.menuCheck, + className: "dropdown-line-height", + title: t.lang.font.height, + click: t.context.createInvokeHandler("editor.lineHeight") + })]).render() + })), this.context.memo("button.table", (function() { + return t.ui.buttonGroup([t.button({ + className: "dropdown-toggle", + contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table), t.options), + tooltip: t.lang.table.table, + data: { + toggle: "dropdown" + } + }), t.ui.dropdown({ + title: t.lang.table.table, + className: "note-table", + items: ['
', '
', '
', '
', "
", '
1 x 1
'].join("") + })], { + callback: function(e) { + e.find(".note-dimension-picker-mousecatcher").css({ + width: t.options.insertTableMaxSize.col + "em", + height: t.options.insertTableMaxSize.row + "em" + }).mousedown(t.context.createInvokeHandler("editor.insertTable")).on("mousemove", t.tableMoveHandler.bind(t)) + } + }).render() + })), this.context.memo("button.link", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.link), + tooltip: t.lang.link.link + t.representShortcut("linkDialog.show"), + click: t.context.createInvokeHandler("linkDialog.show") + }).render() + })), this.context.memo("button.picture", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.picture), + tooltip: t.lang.image.image, + click: t.context.createInvokeHandler("imageDialog.show") + }).render() + })), this.context.memo("button.video", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.video), + tooltip: t.lang.video.video, + click: t.context.createInvokeHandler("videoDialog.show") + }).render() + })), this.context.memo("button.hr", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.minus), + tooltip: t.lang.hr.insert + t.representShortcut("insertHorizontalRule"), + click: t.context.createInvokeHandler("editor.insertHorizontalRule") + }).render() + })), this.context.memo("button.fullscreen", (function() { + return t.button({ + className: "btn-fullscreen note-codeview-keep", + contents: t.ui.icon(t.options.icons.arrowsAlt), + tooltip: t.lang.options.fullscreen, + click: t.context.createInvokeHandler("fullscreen.toggle") + }).render() + })), this.context.memo("button.codeview", (function() { + return t.button({ + className: "btn-codeview note-codeview-keep", + contents: t.ui.icon(t.options.icons.code), + tooltip: t.lang.options.codeview, + click: t.context.createInvokeHandler("codeview.toggle") + }).render() + })), this.context.memo("button.redo", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.redo), + tooltip: t.lang.history.redo + t.representShortcut("redo"), + click: t.context.createInvokeHandler("editor.redo") + }).render() + })), this.context.memo("button.undo", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.undo), + tooltip: t.lang.history.undo + t.representShortcut("undo"), + click: t.context.createInvokeHandler("editor.undo") + }).render() + })), this.context.memo("button.help", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.question), + tooltip: t.lang.options.help, + click: t.context.createInvokeHandler("helpDialog.show") + }).render() + })) + } + }, { + key: "addImagePopoverButtons", + value: function() { + var t = this; + this.context.memo("button.resizeFull", (function() { + return t.button({ + contents: '100%', + tooltip: t.lang.image.resizeFull, + click: t.context.createInvokeHandler("editor.resize", "1") + }).render() + })), this.context.memo("button.resizeHalf", (function() { + return t.button({ + contents: '50%', + tooltip: t.lang.image.resizeHalf, + click: t.context.createInvokeHandler("editor.resize", "0.5") + }).render() + })), this.context.memo("button.resizeQuarter", (function() { + return t.button({ + contents: '25%', + tooltip: t.lang.image.resizeQuarter, + click: t.context.createInvokeHandler("editor.resize", "0.25") + }).render() + })), this.context.memo("button.resizeNone", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.rollback), + tooltip: t.lang.image.resizeNone, + click: t.context.createInvokeHandler("editor.resize", "0") + }).render() + })), this.context.memo("button.floatLeft", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.floatLeft), + tooltip: t.lang.image.floatLeft, + click: t.context.createInvokeHandler("editor.floatMe", "left") + }).render() + })), this.context.memo("button.floatRight", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.floatRight), + tooltip: t.lang.image.floatRight, + click: t.context.createInvokeHandler("editor.floatMe", "right") + }).render() + })), this.context.memo("button.floatNone", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.rollback), + tooltip: t.lang.image.floatNone, + click: t.context.createInvokeHandler("editor.floatMe", "none") + }).render() + })), this.context.memo("button.removeMedia", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.trash), + tooltip: t.lang.image.remove, + click: t.context.createInvokeHandler("editor.removeMedia") + }).render() + })) + } + }, { + key: "addLinkPopoverButtons", + value: function() { + var t = this; + this.context.memo("button.linkDialogShow", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.link), + tooltip: t.lang.link.edit, + click: t.context.createInvokeHandler("linkDialog.show") + }).render() + })), this.context.memo("button.unlink", (function() { + return t.button({ + contents: t.ui.icon(t.options.icons.unlink), + tooltip: t.lang.link.unlink, + click: t.context.createInvokeHandler("editor.unlink") + }).render() + })) + } + }, { + key: "addTablePopoverButtons", + value: function() { + var t = this; + this.context.memo("button.addRowUp", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.rowAbove), + tooltip: t.lang.table.addRowAbove, + click: t.context.createInvokeHandler("editor.addRow", "top") + }).render() + })), this.context.memo("button.addRowDown", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.rowBelow), + tooltip: t.lang.table.addRowBelow, + click: t.context.createInvokeHandler("editor.addRow", "bottom") + }).render() + })), this.context.memo("button.addColLeft", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.colBefore), + tooltip: t.lang.table.addColLeft, + click: t.context.createInvokeHandler("editor.addCol", "left") + }).render() + })), this.context.memo("button.addColRight", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.colAfter), + tooltip: t.lang.table.addColRight, + click: t.context.createInvokeHandler("editor.addCol", "right") + }).render() + })), this.context.memo("button.deleteRow", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.rowRemove), + tooltip: t.lang.table.delRow, + click: t.context.createInvokeHandler("editor.deleteRow") + }).render() + })), this.context.memo("button.deleteCol", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.colRemove), + tooltip: t.lang.table.delCol, + click: t.context.createInvokeHandler("editor.deleteCol") + }).render() + })), this.context.memo("button.deleteTable", (function() { + return t.button({ + className: "btn-md", + contents: t.ui.icon(t.options.icons.trash), + tooltip: t.lang.table.delTable, + click: t.context.createInvokeHandler("editor.deleteTable") + }).render() + })) + } + }, { + key: "build", + value: function(t, e) { + for(var n = 0, o = e.length; n < o; n++) { + for(var i = e[n], r = Array.isArray(i) ? i[0] : i, a = Array.isArray(i) ? 1 === i.length ? [i[0]] : i[1] : [i], s = this.ui.buttonGroup({ + className: "note-" + r + }).render(), l = 0, c = a.length; l < c; l++) { + var u = this.context.memo("button." + a[l]); + u && s.append("function" == typeof u ? u(this.context) : u) + } + s.appendTo(t) + } + } + }, { + key: "updateCurrentStyle", + value: function(t) { + var e = this, + n = t || this.$toolbar, + o = this.context.invoke("editor.currentStyle"); + if(this.updateBtnStates(n, { + ".note-btn-bold": function() { + return "bold" === o["font-bold"] + }, + ".note-btn-italic": function() { + return "italic" === o["font-italic"] + }, + ".note-btn-underline": function() { + return "underline" === o["font-underline"] + }, + ".note-btn-subscript": function() { + return "subscript" === o["font-subscript"] + }, + ".note-btn-superscript": function() { + return "superscript" === o["font-superscript"] + }, + ".note-btn-strikethrough": function() { + return "strikethrough" === o["font-strikethrough"] + } + }), o["font-family"]) { + var r = o["font-family"].split(",").map((function(t) { + return t.replace(/[\'\"]/g, "").replace(/\s+$/, "").replace(/^\s+/, "") + })), + a = C.find(r, this.isFontInstalled.bind(this)); + n.find(".dropdown-fontname a").each((function(t, e) { + var n = i()(e), + o = n.data("value") + "" == a + ""; + n.toggleClass("checked", o) + })), n.find(".note-current-fontname").text(a).css("font-family", a) + } + if(o["font-size"]) { + var s = o["font-size"]; + n.find(".dropdown-fontsize a").each((function(t, e) { + var n = i()(e), + o = n.data("value") + "" == s + ""; + n.toggleClass("checked", o) + })), n.find(".note-current-fontsize").text(s); + var l = o["font-size-unit"]; + n.find(".dropdown-fontsizeunit a").each((function(t, e) { + var n = i()(e), + o = n.data("value") + "" == l + ""; + n.toggleClass("checked", o) + })), n.find(".note-current-fontsizeunit").text(l) + } + if(o["line-height"]) { + var c = o["line-height"]; + n.find(".dropdown-line-height li a").each((function(t, n) { + var o = i()(n).data("value") + "" == c + ""; + e.className = o ? "checked" : "" + })) + } + } + }, { + key: "updateBtnStates", + value: function(t, e) { + var n = this; + i.a.each(e, (function(e, o) { + n.ui.toggleBtnActive(t.find(e), o()) + })) + } + }, { + key: "tableMoveHandler", + value: function(t) { + var e, n = i()(t.target.parentNode), + o = n.next(), + r = n.find(".note-dimension-picker-mousecatcher"), + a = n.find(".note-dimension-picker-highlighted"), + s = n.find(".note-dimension-picker-unhighlighted"); + if(void 0 === t.offsetX) { + var l = i()(t.target).offset(); + e = { + x: t.pageX - l.left, + y: t.pageY - l.top + } + } else e = { + x: t.offsetX, + y: t.offsetY + }; + var c = Math.ceil(e.x / 18) || 1, + u = Math.ceil(e.y / 18) || 1; + a.css({ + width: c + "em", + height: u + "em" + }), r.data("value", c + "x" + u), c > 3 && c < this.options.insertTableMaxSize.col && s.css({ + width: c + 1 + "em" + }), u > 3 && u < this.options.insertTableMaxSize.row && s.css({ + height: u + 1 + "em" + }), o.html(c + " x " + u) + } + }]) && ae(e.prototype, n), o && ae(e, o), t + }(); + + function le(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var ce = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.$window = i()(window), this.$document = i()(document), this.ui = i.a.summernote.ui, this.$note = e.layoutInfo.note, this.$editor = e.layoutInfo.editor, this.$toolbar = e.layoutInfo.toolbar, this.$editable = e.layoutInfo.editable, this.$statusbar = e.layoutInfo.statusbar, this.options = e.options, this.isFollowing = !1, this.followScroll = this.followScroll.bind(this) + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return !this.options.airMode + } + }, { + key: "initialize", + value: function() { + var t = this; + this.options.toolbar = this.options.toolbar || [], this.options.toolbar.length ? this.context.invoke("buttons.build", this.$toolbar, this.options.toolbar) : this.$toolbar.hide(), this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.changeContainer(!1), this.$note.on("summernote.keyup summernote.mouseup summernote.change", (function() { + t.context.invoke("buttons.updateCurrentStyle") + })), this.context.invoke("buttons.updateCurrentStyle"), this.options.followingToolbar && this.$window.on("scroll resize", this.followScroll) + } + }, { + key: "destroy", + value: function() { + this.$toolbar.children().remove(), this.options.followingToolbar && this.$window.off("scroll resize", this.followScroll) + } + }, { + key: "followScroll", + value: function() { + if(this.$editor.hasClass("fullscreen")) return !1; + var t = this.$editor.outerHeight(), + e = this.$editor.width(), + n = this.$toolbar.height(), + o = this.$statusbar.height(), + r = 0; + this.options.otherStaticBar && (r = i()(this.options.otherStaticBar).outerHeight()); + var a = this.$document.scrollTop(), + s = this.$editor.offset().top, + l = s - r, + c = s + t - r - n - o; + !this.isFollowing && a > l && a < c - n ? (this.isFollowing = !0, this.$editable.css({ + marginTop: this.$toolbar.outerHeight() + }), this.$toolbar.css({ + position: "fixed", + top: r, + width: e, + zIndex: 1e3 + })) : this.isFollowing && (a < l || a > c) && (this.isFollowing = !1, this.$toolbar.css({ + position: "relative", + top: 0, + width: "100%", + zIndex: "auto" + }), this.$editable.css({ + marginTop: "" + })) + } + }, { + key: "changeContainer", + value: function(t) { + t ? this.$toolbar.prependTo(this.$editor) : this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.options.followingToolbar && this.followScroll() + } + }, { + key: "updateFullscreen", + value: function(t) { + this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"), t), this.changeContainer(t) + } + }, { + key: "updateCodeview", + value: function(t) { + this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"), t), t ? this.deactivate() : this.activate() + } + }, { + key: "activate", + value: function(t) { + var e = this.$toolbar.find("button"); + t || (e = e.not(".note-codeview-keep")), this.ui.toggleBtn(e, !0) + } + }, { + key: "deactivate", + value: function(t) { + var e = this.$toolbar.find("button"); + t || (e = e.not(".note-codeview-keep")), this.ui.toggleBtn(e, !1) + } + }]) && le(e.prototype, n), o && le(e, o), t + }(); + + function ue(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var de = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo, e.memo("help.linkDialog.show", this.options.langInfo.help["linkDialog.show"]) + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + var t = this.options.dialogsInBody ? this.$body : this.options.container, + e = ['
', '"), ''), "
", '
', '"), ''), "
", this.options.disableLinkTarget ? "" : i()("
").append(this.ui.checkbox({ + className: "sn-checkbox-open-in-new-window", + text: this.lang.link.openInNewWindow, + checked: !0 + }).render()).html(), i()("
").append(this.ui.checkbox({ + className: "sn-checkbox-use-protocol", + text: this.lang.link.useProtocol, + checked: !0 + }).render()).html()].join(""), + n = ''); + this.$dialog = this.ui.dialog({ + className: "link-dialog", + title: this.lang.link.insert, + fade: this.options.dialogsFade, + body: e, + footer: n + }).render().appendTo(t) + } + }, { + key: "destroy", + value: function() { + this.ui.hideDialog(this.$dialog), this.$dialog.remove() + } + }, { + key: "bindEnterKey", + value: function(t, e) { + t.on("keypress", (function(t) { + t.keyCode === xt.code.ENTER && (t.preventDefault(), e.trigger("click")) + })) + } + }, { + key: "toggleLinkBtn", + value: function(t, e, n) { + this.ui.toggleBtn(t, e.val() && n.val()) + } + }, { + key: "showLinkDialog", + value: function(t) { + var e = this; + return i.a.Deferred((function(n) { + var o = e.$dialog.find(".note-link-text"), + i = e.$dialog.find(".note-link-url"), + r = e.$dialog.find(".note-link-btn"), + a = e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"), + s = e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]"); + e.ui.onDialogShown(e.$dialog, (function() { + e.context.triggerEvent("dialog.shown"), !t.url && g.isValidUrl(t.text) && (t.url = t.text), o.on("input paste propertychange", (function() { + t.text = o.val(), e.toggleLinkBtn(r, o, i) + })).val(t.text), i.on("input paste propertychange", (function() { + t.text || o.val(i.val()), e.toggleLinkBtn(r, o, i) + })).val(t.url), m.isSupportTouch || i.trigger("focus"), e.toggleLinkBtn(r, o, i), e.bindEnterKey(i, r), e.bindEnterKey(o, r); + var l = void 0 !== t.isNewWindow ? t.isNewWindow : e.context.options.linkTargetBlank; + a.prop("checked", l); + var c = !t.url && e.context.options.useProtocol; + s.prop("checked", c), r.one("click", (function(r) { + r.preventDefault(), n.resolve({ + range: t.range, + url: i.val(), + text: o.val(), + isNewWindow: a.is(":checked"), + checkProtocol: s.is(":checked") + }), e.ui.hideDialog(e.$dialog) + })) + })), e.ui.onDialogHidden(e.$dialog, (function() { + o.off(), i.off(), r.off(), "pending" === n.state() && n.reject() + })), e.ui.showDialog(e.$dialog) + })).promise() + } + }, { + key: "show", + value: function() { + var t = this, + e = this.context.invoke("editor.getLinkInfo"); + this.context.invoke("editor.saveRange"), this.showLinkDialog(e).then((function(e) { + t.context.invoke("editor.restoreRange"), t.context.invoke("editor.createLink", e) + })).fail((function() { + t.context.invoke("editor.restoreRange") + })) + } + }]) && ue(e.prototype, n), o && ue(e, o), t + }(); + + function he(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var fe = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.options = e.options, this.events = { + "summernote.keyup summernote.mouseup summernote.change summernote.scroll": function() { + n.update() + }, + "summernote.disable summernote.dialog.shown summernote.blur": function() { + n.hide() + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return !C.isEmpty(this.options.popover.link) + } + }, { + key: "initialize", + value: function() { + this.$popover = this.ui.popover({ + className: "note-link-popover", + callback: function(t) { + t.find(".popover-content,.note-popover-content").prepend(' ') + } + }).render().appendTo(this.options.container); + var t = this.$popover.find(".popover-content,.note-popover-content"); + this.context.invoke("buttons.build", t, this.options.popover.link), this.$popover.on("mousedown", (function(t) { + t.preventDefault() + })) + } + }, { + key: "destroy", + value: function() { + this.$popover.remove() + } + }, { + key: "update", + value: function() { + if(this.context.invoke("editor.hasFocus")) { + var t = this.context.invoke("editor.getLastRange"); + if(t.isCollapsed() && t.isOnAnchor()) { + var e = pt.ancestor(t.sc, pt.isAnchor), + n = i()(e).attr("href"); + this.$popover.find("a").attr("href", n).text(n); + var o = pt.posFromPlaceholder(e), + r = i()(this.options.container).offset(); + o.top -= r.top, o.left -= r.left, this.$popover.css({ + display: "block", + left: o.left, + top: o.top + }) + } else this.hide() + } else this.hide() + } + }, { + key: "hide", + value: function() { + this.$popover.hide() + } + }]) && he(e.prototype, n), o && he(e, o), t + }(); + + function pe(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var me = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + var t = ""; + if(this.options.maximumImageFileSize) { + var e = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)), + n = 1 * (this.options.maximumImageFileSize / Math.pow(1024, e)).toFixed(2) + " " + " KMGTP" [e] + "B"; + t = "".concat(this.lang.image.maximumFileSize + " : " + n, "") + } + var o = this.options.dialogsInBody ? this.$body : this.options.container, + i = ['
', '", '', t, "
", '
', '", '', "
"].join(""), + r = ''); + this.$dialog = this.ui.dialog({ + title: this.lang.image.insert, + fade: this.options.dialogsFade, + body: i, + footer: r + }).render().appendTo(o) + } + }, { + key: "destroy", + value: function() { + this.ui.hideDialog(this.$dialog), this.$dialog.remove() + } + }, { + key: "bindEnterKey", + value: function(t, e) { + t.on("keypress", (function(t) { + t.keyCode === xt.code.ENTER && (t.preventDefault(), e.trigger("click")) + })) + } + }, { + key: "show", + value: function() { + var t = this; + this.context.invoke("editor.saveRange"), this.showImageDialog().then((function(e) { + t.ui.hideDialog(t.$dialog), t.context.invoke("editor.restoreRange"), "string" == typeof e ? t.options.callbacks.onImageLinkInsert ? t.context.triggerEvent("image.link.insert", e) : t.context.invoke("editor.insertImage", e) : t.context.invoke("editor.insertImagesOrCallback", e) + })).fail((function() { + t.context.invoke("editor.restoreRange") + })) + } + }, { + key: "showImageDialog", + value: function() { + var t = this; + return i.a.Deferred((function(e) { + var n = t.$dialog.find(".note-image-input"), + o = t.$dialog.find(".note-image-url"), + i = t.$dialog.find(".note-image-btn"); + t.ui.onDialogShown(t.$dialog, (function() { + t.context.triggerEvent("dialog.shown"), n.replaceWith(n.clone().on("change", (function(t) { + e.resolve(t.target.files || t.target.value) + })).val("")), o.on("input paste propertychange", (function() { + t.ui.toggleBtn(i, o.val()) + })).val(""), m.isSupportTouch || o.trigger("focus"), i.click((function(t) { + t.preventDefault(), e.resolve(o.val()) + })), t.bindEnterKey(o, i) + })), t.ui.onDialogHidden(t.$dialog, (function() { + n.off(), o.off(), i.off(), "pending" === e.state() && e.reject() + })), t.ui.showDialog(t.$dialog) + })) + } + }]) && pe(e.prototype, n), o && pe(e, o), t + }(); + + function ve(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var ge = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.editable = e.layoutInfo.editable[0], this.options = e.options, this.events = { + "summernote.disable summernote.blur": function() { + n.hide() + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return !C.isEmpty(this.options.popover.image) + } + }, { + key: "initialize", + value: function() { + this.$popover = this.ui.popover({ + className: "note-image-popover" + }).render().appendTo(this.options.container); + var t = this.$popover.find(".popover-content,.note-popover-content"); + this.context.invoke("buttons.build", t, this.options.popover.image), this.$popover.on("mousedown", (function(t) { + t.preventDefault() + })) + } + }, { + key: "destroy", + value: function() { + this.$popover.remove() + } + }, { + key: "update", + value: function(t, e) { + if(pt.isImg(t)) { + var n = i()(t).offset(), + o = i()(this.options.container).offset(), + r = {}; + this.options.popatmouse ? (r.left = e.pageX - 20, r.top = e.pageY) : r = n, r.top -= o.top, r.left -= o.left, this.$popover.css({ + display: "block", + left: r.left, + top: r.top + }) + } else this.hide() + } + }, { + key: "hide", + value: function() { + this.$popover.hide() + } + }]) && ve(e.prototype, n), o && ve(e, o), t + }(); + + function be(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var ke = function() { + function t(e) { + var n = this; + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.options = e.options, this.events = { + "summernote.mousedown": function(t, e) { + n.update(e.target) + }, + "summernote.keyup summernote.scroll summernote.change": function() { + n.update() + }, + "summernote.disable summernote.blur": function() { + n.hide() + } + } + } + var e, n, o; + return e = t, (n = [{ + key: "shouldInitialize", + value: function() { + return !C.isEmpty(this.options.popover.table) + } + }, { + key: "initialize", + value: function() { + this.$popover = this.ui.popover({ + className: "note-table-popover" + }).render().appendTo(this.options.container); + var t = this.$popover.find(".popover-content,.note-popover-content"); + this.context.invoke("buttons.build", t, this.options.popover.table), m.isFF && document.execCommand("enableInlineTableEditing", !1, !1), this.$popover.on("mousedown", (function(t) { + t.preventDefault() + })) + } + }, { + key: "destroy", + value: function() { + this.$popover.remove() + } + }, { + key: "update", + value: function(t) { + if(this.context.isDisabled()) return !1; + var e = pt.isCell(t); + if(e) { + var n = pt.posFromPlaceholder(t), + o = i()(this.options.container).offset(); + n.top -= o.top, n.left -= o.left, this.$popover.css({ + display: "block", + left: n.left, + top: n.top + }) + } else this.hide(); + return e + } + }, { + key: "hide", + value: function() { + this.$popover.hide() + } + }]) && be(e.prototype, n), o && be(e, o), t + }(); + + function ye(t, e) { + for(var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) + } + } + var we = function() { + function t(e) { + ! function(t, e) { + if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo + } + var e, n, o; + return e = t, (n = [{ + key: "initialize", + value: function() { + var t = this.options.dialogsInBody ? this.$body : this.options.container, + e = ['
', '"), ''), "
"].join(""), + n = ''); + this.$dialog = this.ui.dialog({ + title: this.lang.video.insert, + fade: this.options.dialogsFade, + body: e, + footer: n + }).render().appendTo(t) + } + }, { + key: "destroy", + value: function() { + this.ui.hideDialog(this.$dialog), this.$dialog.remove() + } + }, { + key: "bindEnterKey", + value: function(t, e) { + t.on("keypress", (function(t) { + t.keyCode === xt.code.ENTER && (t.preventDefault(), e.trigger("click")) + })) + } + }, { + key: "createVideoNode", + value: function(t) { + var e, n = t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/), + o = t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/), + r = t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/), + a = t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/), + s = t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/), + l = t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/), + c = t.match(/\/\/v\.qq\.com.*?vid=(.+)/), + u = t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/), + d = t.match(/^.+.(mp4|m4v)$/), + h = t.match(/^.+.(ogg|ogv)$/), + f = t.match(/^.+.(webm)$/), + p = t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/); + if(n && 11 === n[1].length) { + var m = n[1], + v = 0; + if(void 0 !== n[2]) { + var g = n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/); + if(g) + for(var b = [3600, 60, 1], k = 0, y = b.length; k < y; k++) v += void 0 !== g[k + 1] ? b[k] * parseInt(g[k + 1], 10) : 0 + } + e = i()("