PHP Classes

File: dist/summernote-bs4.min.js

Recommend this page to a friend!
  Classes of Adeleye Ayodeji   WYSIWYG Rich Text Editor with Ajax Gallery PHP MySQL   dist/summernote-bs4.min.js   Download  
File: dist/summernote-bs4.min.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: WYSIWYG Rich Text Editor with Ajax Gallery PHP MySQL
Edit HTML on a Web page, including images
Author: By
Last change:
Date: 1 year ago
Size: 185,464 bytes
 

Contents

Class file image Download
/*! For license information please see summernote-bs4.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 = 53) }({ 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: { insertParagraph: "Insert Paragraph", undo: "Undoes the last command", redo: "Redoes 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 = !!window.CodeMirror, p = "ontouchstart" in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0, m = u ? "DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted" : "input", v = { 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: p, hasCodeMirror: 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: m, genericFontFamilies: a, validFontName: s }; var g = 0; var b = { 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() { g = 0 }, uniqueId: function(t) { var e = ++g + ""; 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 y(t) { return t[0] } function k(t) { return t[t.length - 1] } function w(t) { return t.slice(1) } function C(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 x = { head: y, last: k, initial: function(t) { return t.slice(0, t.length - 1) }, tail: w, 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: C, 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 || b.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 ? w(t).reduce((function(t, n) { var o = k(t); return e(k(o), n) ? o[o.length] = n : t[t.length] = [n], t }), [ [y(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++) C(e, t[n]) || e.push(t[n]); return e } }, S = String.fromCharCode(160); function T(t) { return t && i()(t).hasClass("note-editable") } function E(t) { return t = t.toUpperCase(), function(e) { return e && e.nodeName.toUpperCase() === t } } function I(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 !T(t) && (t && /^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase())) } var P = E("PRE"), R = E("LI"); var L = E("TABLE"), A = E("DATA"); function F(t) { return !(M(t) || D(t) || H(t) || N(t) || L(t) || B(t) || A(t)) } function D(t) { return t && /^UL|^OL/.test(t.nodeName.toUpperCase()) } var H = E("HR"); function z(t) { return t && /^TD|^TH/.test(t.nodeName.toUpperCase()) } var B = E("BLOCKQUOTE"); function M(t) { return z(t) || B(t) || T(t) } var O = E("A"); var U = E("BODY"); var j = v.isMSIE && v.browserVersion < 11 ? "&nbsp;" : "<br>"; function W(t) { return I(t) ? t.nodeValue.length : t ? t.childNodes.length : 0 } function K(t) { var e = W(t); return 0 === e || (!I(t) && 1 === e && t.innerHTML === j || !(!x.all(t.childNodes, I) || "" !== t.innerHTML)) } function q(t) { $(t) || W(t) || (t.innerHTML = j) } function V(t, e) { for (; t;) { if (e(t)) return t; if (T(t)) break; t = t.parentNode } return null } function _(t, e) { e = e || b.fail; var n = []; return V(t, (function(t) { return T(t) || n.push(t), e(t) })), n } function G(t, e) { e = e || b.fail; for (var n = []; t && !e(t);) n.push(t), t = t.nextSibling; return n } function Y(t, e) { var n = e.nextSibling, o = e.parentNode; return n ? o.insertBefore(t, n) : o.appendChild(t), t } function Z(t, e) { return i.a.each(e, (function(e, n) { t.appendChild(n) })), t } function X(t) { return 0 === t.offset } function Q(t) { return t.offset === W(t.node) } function J(t) { return X(t) || Q(t) } function tt(t, e) { for (; t && t !== e;) { if (0 !== nt(t)) return !1; t = t.parentNode } return !0 } function et(t, e) { if (!e) return !1; for (; t && t !== e;) { if (nt(t) !== W(t.parentNode) - 1) return !1; t = t.parentNode } return !0 } function nt(t) { for (var e = 0; t = t.previousSibling;) e += 1; return e } function ot(t) { return !!(t && t.childNodes && t.childNodes.length) } function it(t, e) { var n, o; if (0 === t.offset) { if (T(t.node)) return null; n = t.node.parentNode, o = nt(t.node) } else ot(t.node) ? o = W(n = t.node.childNodes[t.offset - 1]) : (n = t.node, o = e ? 0 : t.offset - 1); return { node: n, offset: o } } function rt(t, e) { var n, o; if (K(t.node)) return null; if (W(t.node) === t.offset) { if (T(t.node)) return null; n = t.node.parentNode, o = nt(t.node) + 1 } else if (ot(t.node)) { if (o = 0, K(n = t.node.childNodes[t.offset])) return null } else if (n = t.node, o = e ? W(t.node) : t.offset + 1, K(n)) return null; return { node: n, offset: o } } function at(t, e) { return t.node === e.node && t.offset === e.offset } function st(t, e) { var n = e && e.isSkipPaddingBlankHTML, o = e && e.isNotSplitEdgePoint, i = e && e.isDiscardEmptySplits; if (i && (n = !0), J(t) && (I(t.node) || o)) { if (X(t)) return t.node; if (Q(t)) return t.node.nextSibling } if (I(t.node)) return t.node.splitText(t.offset); var r = t.node.childNodes[t.offset], a = Y(t.node.cloneNode(!1), t.node); return Z(a, G(r)), n || (q(t.node), q(a)), i && (K(t.node) && ut(t.node), K(a)) ? (ut(a), t.node.nextSibling) : a } function lt(t, e, n) { var o = _(e.node, b.eq(t)); return o.length ? 1 === o.length ? st(e, n) : o.reduce((function(t, o) { return t === e.node && (t = st(e, n)), st({ node: o, offset: t ? nt(t) : W(o) }, n) })) : null } function ct(t) { return document.createElement(t) } function ut(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 dt = E("TEXTAREA"); function ht(t, e) { var n = dt(t[0]) ? t.val() : t.html(); return e ? n.replace(/[\n\r]/g, "") : n } var ft = { NBSP_CHAR: S, ZERO_WIDTH_NBSP_CHAR: "\ufeff", blank: j, emptyPara: "<p>".concat(j, "</p>"), makePredByNodeName: E, isEditable: T, isControlSizing: function(t) { return t && i()(t).hasClass("note-control-sizing") }, isText: I, isElement: function(t) { return t && 1 === t.nodeType }, isVoid: $, isPara: N, isPurePara: function(t) { return N(t) && !R(t) }, isHeading: function(t) { return t && /^H[1-7]/.test(t.nodeName.toUpperCase()) }, isInline: F, isBlock: b.not(F), isBodyInline: function(t) { return F(t) && !V(t, N) }, isBody: U, isParaInline: function(t) { return F(t) && !!V(t, N) }, isPre: P, isList: D, isTable: L, isData: A, isCell: z, isBlockquote: B, isBodyContainer: M, isAnchor: O, isDiv: E("DIV"), isLi: R, isBR: E("BR"), isSpan: E("SPAN"), isB: E("B"), isU: E("U"), isS: E("S"), isI: E("I"), isImg: E("IMG"), isTextarea: dt, deepestChildIsEmpty: function(t) { do { if (null === t.firstElementChild || "" === t.firstElementChild.innerHTML) break } while (t = t.firstElementChild); return K(t) }, isEmpty: K, isEmptyAnchor: b.and(O, K), isClosestSibling: function(t, e) { return t.nextSibling === e || t.previousSibling === e }, withClosestSiblings: function(t, e) { e = e || b.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: W, isLeftEdgePoint: X, isRightEdgePoint: Q, isEdgePoint: J, isLeftEdgeOf: tt, isRightEdgeOf: et, isLeftEdgePointOf: function(t, e) { return X(t) && tt(t.node, e) }, isRightEdgePointOf: function(t, e) { return Q(t) && et(t.node, e) }, prevPoint: it, nextPoint: rt, isSamePoint: at, isVisiblePoint: function(t) { if (I(t.node) || !ot(t.node) || K(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 = it(t) } return null }, nextPointUntil: function(t, e) { for (; t;) { if (e(t)) return t; t = rt(t) } return null }, isCharPoint: function(t) { if (!I(t.node)) return !1; var e = t.node.nodeValue.charAt(t.offset - 1); return e && " " !== e && e !== S }, isSpacePoint: function(t) { if (!I(t.node)) return !1; var e = t.node.nodeValue.charAt(t.offset - 1); return " " === e || e === S }, walkPoint: function(t, e, n, o) { for (var i = t; i && (n(i), !at(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 === W(t);) { if (e(t)) return t; if (T(t)) break; t = t.parentNode } return null }, listAncestor: _, lastAncestor: function(t, e) { var n = _(t); return x.last(n.filter(e)) }, listNext: G, listPrev: function(t, e) { e = e || b.fail; for (var n = []; t && !e(t);) n.push(t), t = t.previousSibling; return n }, listDescendant: function(t, e) { var n = []; return e = e || b.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 = _(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: Y, appendChildNodes: Z, position: nt, hasChildren: ot, makeOffsetPath: function(t, e) { return _(e, b.eq(t)).map(nt).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: lt, splitPoint: function(t, e) { var n, o, i = e ? N : M, r = _(t.node, i), a = x.last(r) || t.node; i(a) ? (n = r[r.length - 2], o = a) : o = (n = a).parentNode; var s = n && lt(n, t, { isSkipPaddingBlankHTML: e, isNotSplitEdgePoint: e }); return s || o !== t.node || (s = t.node.childNodes[t.offset]), { rightNode: s, container: o } }, create: ct, createText: function(t) { return document.createTextNode(t) }, remove: ut, removeWhile: function(t, e) { for (; t && !T(t) && e(t);) { var n = t.parentNode; ut(t), t = n } }, replace: function(t, e) { if (t.nodeName.toUpperCase() === e.toUpperCase()) return t; var n = ct(e); return t.style.cssText && (n.style.cssText = t.style.cssText), Z(n, x.from(t.childNodes)), Y(n, t), ut(t), n }, html: function(t, e) { var n = ht(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: ht, 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 && !I(t) && x.contains(t.classList, "note-styletag") } }; 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 mt = 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(ft.emptyPara), this._destroy(), this._initialize(), t && this.disable() } }, { key: "_initialize", value: function() { var t = this; this.options.id = b.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.layoutInfo.codable.val(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 = x.head(arguments), e = x.tail(x.from(arguments)), n = this.options.callbacks[b.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 || b.ok, e.shouldInitialize() && (e.initialize && e.initialize(), e.events && ft.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 && ft.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 = x.head(arguments), e = x.tail(x.from(arguments)), n = t.split("."), o = n.length > 1, i = o && x.head(n), r = o ? x.last(n) : x.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 } }]) && pt(e.prototype, n), o && pt(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) } } function gt(t, e) { var n, o, i = t.parentElement(), r = document.body.createTextRange(), a = x.from(i.childNodes); for (n = 0; n < a.length; n++) if (!ft.isText(a[n])) { if (r.moveToElementText(a[n]), r.compareEndPoints("StartToStart", t) >= 0) break; o = a[n] } if (0 !== n && ft.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 && ft.isText(l.nextSibling) && u === l.nodeValue.length && (u -= l.nodeValue.length, l = l.nextSibling), i = l, n = u } return { cont: i, offset: n } } function bt(t) { var e = document.body.createTextRange(), n = function t(e, n) { var o, i; if (ft.isText(e)) { var r = ft.listPrev(e, b.not(ft.isText)), a = x.last(r).previousSibling; o = a || e.parentNode, n += x.sum(x.tail(r), ft.nodeLength), i = !a } else { if (o = e.childNodes[n] || e, ft.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(x.head(arguments)), e = "string" === t, n = "object" === t, o = i.a.extend({}, i.a.summernote.options, n ? x.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 ? !v.isSupportTouch : o.tooltip, this.each((function(t, e) { var n = i()(e); if (!n.data("summernote")) { var r = new mt(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, x.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(ft.isEditable), this.isOnList = this.makeIsOn(ft.isList), this.isOnAnchor = this.makeIsOn(ft.isAnchor), this.isOnCell = this.makeIsOn(ft.isCell), this.isOnData = this.makeIsOn(ft.isData) } var e, n, o; return e = t, (n = [{ key: "nativeRange", value: function() { if (v.isW3CRangeSupport) { var t = document.createRange(); return t.setStart(this.sc, this.sc.data && this.so > this.sc.data.length ? 0 : this.so), t.setEnd(this.ec, this.sc.data ? Math.min(this.eo, this.sc.data.length) : this.eo), t } var e = bt({ node: this.sc, offset: this.so }); return e.setEndPoint("EndToEnd", bt({ 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 (v.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 (ft.isVisiblePoint(t) && (!ft.isEdgePoint(t) || ft.isRightEdgePoint(t) && !e || ft.isLeftEdgePoint(t) && e || ft.isRightEdgePoint(t) && e && ft.isVoid(t.node.nextSibling) || ft.isLeftEdgePoint(t) && !e && ft.isVoid(t.node.previousSibling) || ft.isBlock(t.node) && ft.isEmpty(t.node))) return t; var n = ft.ancestor(t.node, ft.isBlock), o = !1; if (!o) { var i = ft.prevPoint(t) || { node: null }; o = (ft.isLeftEdgePointOf(t, n) || ft.isVoid(i.node)) && !e } var r = !1; if (!r) { var a = ft.nextPoint(t) || { node: null }; r = (ft.isRightEdgePointOf(t, n) || ft.isVoid(a.node)) && e } if (o || r) { if (ft.isVisiblePoint(t)) return t; e = !e } return (e ? ft.nextPointUntil(ft.nextPoint(t), ft.isVisiblePoint) : ft.prevPointUntil(ft.prevPoint(t), ft.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 || b.ok; var n = e && e.includeAncestor, o = e && e.fullyContains, i = this.getStartPoint(), r = this.getEndPoint(), a = [], s = []; return ft.walkPoint(i, r, (function(e) { var i; ft.isEditable(e.node) || (o ? (ft.isLeftEdgePoint(e) && s.push(e.node), ft.isRightEdgePoint(e) && x.contains(s, e.node) && (i = e.node)) : i = n ? ft.ancestor(e.node, t) : e.node, i && t(i) && a.push(i)) }), !0), x.unique(a) } }, { key: "commonAncestor", value: function() { return ft.commonAncestor(this.sc, this.ec) } }, { key: "expand", value: function(e) { var n = ft.ancestor(this.sc, e), o = ft.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 = ft.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 ft.isText(this.ec) && !ft.isEdgePoint(this.getEndPoint()) && this.ec.splitText(this.eo), ft.isText(this.sc) && !ft.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 = ft.prevPointUntil(e.getStartPoint(), (function(t) { return !x.contains(n, t.node) })), r = []; return i.a.each(n, (function(t, e) { var n = e.parentNode; o.node !== n && 1 === ft.nodeLength(n) && r.push(n), ft.remove(e, !1) })), i.a.each(r, (function(t, e) { ft.remove(e, !1) })), new t(o.node, o.offset, o.node, o.offset).normalize() } }, { key: "makeIsOn", value: function(t) { return function() { var e = ft.ancestor(this.sc, t); return !!e && e === ft.ancestor(this.ec, t) } } }, { key: "isLeftEdgeOf", value: function(t) { if (!ft.isLeftEdgePoint(this.getStartPoint())) return !1; var e = ft.ancestor(this.sc, t); return e && ft.isLeftEdgeOf(this.sc, e) } }, { key: "isCollapsed", value: function() { return this.sc === this.ec && this.so === this.eo } }, { key: "wrapBodyInlineWithPara", value: function() { if (ft.isBodyContainer(this.sc) && ft.isEmpty(this.sc)) return this.sc.innerHTML = ft.emptyPara, new t(this.sc.firstChild, 0, this.sc.firstChild, 0); var e, n = this.normalize(); if (ft.isParaInline(this.sc) || ft.isPara(this.sc)) return n; if (ft.isInline(n.sc)) { var o = ft.listAncestor(n.sc, b.not(ft.isInline)); e = x.last(o), ft.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 = ft.listPrev(e, ft.isParaInline).reverse(); if ((i = i.concat(ft.listNext(e.nextSibling, ft.isParaInline))).length) { var r = ft.wrap(x.head(i), "p"); ft.appendChildNodes(r, x.tail(i)) } } return this.normalize() } }, { key: "insertNode", value: function(t) { var e = this; (ft.isText(t) || ft.isInline(t)) && (e = this.wrapBodyInlineWithPara().deleteContents()); var n = ft.splitPoint(e.getStartPoint(), ft.isInline(t)); return n.rightNode ? n.rightNode.parentNode.insertBefore(t, n.rightNode) : n.container.appendChild(t), t } }, { key: "pasteHTML", value: function(t) { t = i.a.trim(t); var e = i()("<div></div>").html(t)[0], n = x.from(e.childNodes), o = this; return o.so >= 0 && (n = n.reverse()), n = n.map((function(t) { return o.insertNode(t) })), o.so > 0 && (n = n.reverse()), n } }, { key: "toString", value: function() { var t = this.nativeRange(); return v.isW3CRangeSupport ? t.toString() : t.text } }, { key: "getWordRange", value: function(e) { var n = this.getEndPoint(); if (!ft.isCharPoint(n)) return this; var o = ft.prevPointUntil(n, (function(t) { return !ft.isCharPoint(t) })); return e && (n = ft.nextPointUntil(n, (function(t) { return !ft.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 !ft.isCharPoint(t) && !ft.isSpacePoint(t) }; if (o(n)) return this; var i = ft.prevPointUntil(n, o); return e && (n = ft.nextPointUntil(n, o)), new t(i.node, i.offset, n.node, n.offset) } }, { key: "getWordsMatchRange", value: function(e) { var n = this.getEndPoint(), o = ft.prevPointUntil(n, (function(o) { if (!ft.isCharPoint(o) && !ft.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: ft.makeOffsetPath(t, this.sc), offset: this.so }, e: { path: ft.makeOffsetPath(t, this.ec), offset: this.eo } } } }, { key: "paraBookmark", value: function(t) { return { s: { path: x.tail(ft.makeOffsetPath(x.head(t), this.sc)), offset: this.so }, e: { path: x.tail(ft.makeOffsetPath(x.last(t), this.ec)), offset: this.eo } } } }, { key: "getClientRects", value: function() { return this.nativeRange().getClientRects() } }]) && vt(e.prototype, n), o && vt(e, o), t }(), kt = { 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 ft.isEditable(r) && (r = r.lastChild), this.createFromBodyElement(r, ft.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 (v.isW3CRangeSupport) { var i = document.getSelection(); if (!i || 0 === i.rangeCount) return null; if (ft.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 = gt(l, !0), u = gt(s, !1); ft.isText(c.node) && ft.isLeftEdgePoint(c) && ft.isTextNode(u.node) && ft.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 = ft.nodeLength(o); return ft.isVoid(e) && (n = ft.listPrev(e).length - 1, e = e.parentNode), ft.isBR(o) ? (i = ft.listPrev(o).length - 1, o = o.parentNode) : ft.isVoid(o) && (i = ft.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 = ft.fromOffsetPath(t, e.s.path), o = e.s.offset, i = ft.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 = ft.fromOffsetPath(x.head(e), t.s.path), r = ft.fromOffsetPath(x.last(e), t.e.path); return new yt(i, n, r, o) } }, wt = { BACKSPACE: 8, TAB: 9, ENTER: 13, 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 }, Ct = { isEdit: function(t) { return x.contains([wt.BACKSPACE, wt.TAB, wt.ENTER, wt.SPACE, wt.DELETE], t) }, isMove: function(t) { return x.contains([wt.LEFT, wt.UP, wt.RIGHT, wt.DOWN], t) }, isNavigation: function(t) { return x.contains([wt.HOME, wt.END, wt.PAGEUP, wt.PAGEDOWN], t) }, nameFromCode: b.invertObject(wt), code: wt }; 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 St = 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 = kt.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 && kt.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) } }]) && xt(e.prototype, n), o && xt(e, o), t }(); function Tt(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 Et = 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 (v.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(ft.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(ft.create(n))]; var a = ft.makePredByNodeName(n), s = t.nodes(ft.isText, { fullyContains: !0 }).map((function(t) { return ft.singleChildAncestor(t, a) || ft.wrap(t, n) })); if (o) { if (r) { var l = t.nodes(); a = b.and(a, (function(t) { return x.contains(l, t) })) } return s.map((function(t) { var e = ft.withClosestSiblings(t, a), n = x.head(e), o = x.tail(e); return i.a.each(o, (function(t, e) { ft.appendChildNodes(n, e.childNodes), ft.remove(e) })), x.head(e) })) } return s } }, { key: "current", value: function(t) { var e = i()(ft.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 = ft.ancestor(t.sc, ft.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() && ft.ancestor(t.sc, ft.isAnchor), n.ancestors = ft.listAncestor(t.sc, ft.isEditable), n.range = t, n } }]) && Tt(e.prototype, n), o && Tt(e, o), t }(); function It(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: "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 = kt.create(t).wrapBodyInlineWithPara(), o = n.nodes(ft.isPara, { includeAncestor: !0 }), r = x.clusterBy(o, b.peq2("parentNode")); i.a.each(r, (function(t, n) { var o = x.head(n); if (ft.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 = kt.create(t).wrapBodyInlineWithPara(), o = n.nodes(ft.isPara, { includeAncestor: !0 }), r = x.clusterBy(o, b.peq2("parentNode")); i.a.each(r, (function(t, n) { var o = x.head(n); ft.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 = kt.create(e).wrapBodyInlineWithPara(), r = o.nodes(ft.isPara, { includeAncestor: !0 }), a = o.paraBookmark(r), s = x.clusterBy(r, b.peq2("parentNode")); if (x.find(r, ft.isPurePara)) { var l = []; i.a.each(s, (function(e, o) { l = l.concat(n.wrapList(o, t)) })), r = l } else { var c = o.nodes(ft.isList, { includeAncestor: !0 }).filter((function(e) { return !i.a.nodeName(e, t) })); c.length ? i.a.each(c, (function(e, n) { ft.replace(n, t) })) : r = this.releaseList(s, !0) } kt.createFromParaBookmark(a, r).select() } }, { key: "wrapList", value: function(t, e) { var n = x.head(t), o = x.last(t), i = ft.isList(n.previousSibling) && n.previousSibling, r = ft.isList(o.nextSibling) && o.nextSibling, a = i || ft.insertAfter(ft.create(e || "UL"), o); return t = t.map((function(t) { return ft.isPurePara(t) ? ft.replace(t, "LI") : t })), ft.appendChildNodes(a, t), r && (ft.appendChildNodes(a, x.from(r.childNodes)), ft.remove(r)), t } }, { key: "releaseList", value: function(t, e) { var n = this, o = []; return i.a.each(t, (function(t, r) { var a = x.head(r), s = x.last(r), l = e ? ft.lastAncestor(a, ft.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 ? ft.splitTree(l, { node: s.parentNode, offset: ft.position(s) + 1 }, { isSkipPaddingBlankHTML: !0 }) : null, d = ft.splitTree(l, { node: a.parentNode, offset: ft.position(a) }, { isSkipPaddingBlankHTML: !0 }); r = e ? ft.listDescendant(d, ft.isLi) : x.from(d.childNodes).filter(ft.isLi), !e && ft.isList(l.parentNode) || (r = r.map((function(t) { return ft.replace(t, "P") }))), i.a.each(x.from(r).reverse(), (function(t, e) { ft.insertAfter(e, l) })); var h = x.compact([l, d, u]); i.a.each(h, (function(t, e) { var n = [e].concat(ft.listDescendant(e, ft.isList)); i.a.each(n.reverse(), (function(t, e) { ft.nodeLength(e) || ft.remove(e, !0) })) })) } o = o.concat(r) })), o } }, { key: "appendToPrevious", value: function(t) { return t.previousSibling ? ft.appendChildNodes(t.previousSibling, [t]) : this.wrapList([t], "LI") } }, { key: "findList", value: function(t) { return t ? x.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 } }]) && It(e.prototype, n), o && It(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 Pt = 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 $t, this.options = e.options } var e, n, o; return e = t, (n = [{ key: "insertTab", value: function(t, e) { var n = ft.createText(new Array(e + 1).join(ft.NBSP_CHAR)); (t = t.deleteContents()).insertNode(n, !0), (t = kt.create(n, e)).select() } }, { key: "insertParagraph", value: function(t, e) { e = (e = (e = e || kt.create(t)).deleteContents()).wrapBodyInlineWithPara(); var n, o = ft.ancestor(e.sc, ft.isPara); if (o) { if (ft.isLi(o) && (ft.isEmpty(o) || ft.deepestChildIsEmpty(o))) return void this.bullet.toggleList(o.parentNode.nodeName); var r = null; if (1 === this.options.blockquoteBreakingLevel ? r = ft.ancestor(o, ft.isBlockquote) : 2 === this.options.blockquoteBreakingLevel && (r = ft.lastAncestor(o, ft.isBlockquote)), r) { n = i()(ft.emptyPara)[0], ft.isRightEdgePoint(e.getStartPoint()) && ft.isBR(e.sc.nextSibling) && i()(e.sc.nextSibling).remove(); var a = ft.splitTree(r, e.getStartPoint(), { isDiscardEmptySplits: !0 }); a ? a.parentNode.insertBefore(n, a) : ft.insertAfter(n, r) } else { n = ft.splitTree(o, e.getStartPoint()); var s = ft.listDescendant(o, ft.isEmptyAnchor); s = s.concat(ft.listDescendant(n, ft.isEmptyAnchor)), i.a.each(s, (function(t, e) { ft.remove(e) })), (ft.isHeading(n) || ft.isPre(n) || ft.isCustomStyleTag(n)) && ft.isEmpty(n) && (n = ft.replace(n, "p")) } } else { var l = e.sc.childNodes[e.so]; n = i()(ft.emptyPara)[0], l ? e.sc.insertBefore(n, l) : e.sc.appendChild(n) } kt.create(n, 0).normalize().select().scrollIntoView(t) } }]) && Nt(e.prototype, n), o && Nt(e, o), t }(); function Rt(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 Lt = 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]) }() }; Lt.where = { Row: 0, Column: 1 }, Lt.requestAction = { Add: 0, Delete: 1 }, Lt.resultAction = { Ignore: 0, SubtractSpanCount: 1, RemoveCell: 2, AddCell: 3, SumSpanCount: 4 }; var At = 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 = ft.ancestor(t.commonAncestor(), ft.isCell), o = ft.ancestor(n, ft.isTable), i = ft.listDescendant(o, ft.isCell), r = x[e ? "prev" : "next"](i, n); r && kt.create(r, 0).select() } }, { key: "addRow", value: function(t, e) { for (var n = ft.ancestor(t.commonAncestor(), ft.isCell), o = i()(n).closest("tr"), r = this.recoverAttributes(o), a = i()("<tr" + r + "></tr>"), s = new Lt(n, Lt.where.Row, Lt.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 Lt.resultAction.AddCell: a.append("<td" + u + ">" + ft.blank + "</td>"); break; case Lt.resultAction.SumSpanCount: if ("top" === e && (c.baseCell.parent ? c.baseCell.closest("tr").rowIndex : 0) <= o[0].rowIndex) { var d = i()("<div></div>").append(i()("<td" + u + ">" + ft.blank + "</td>").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 = ft.ancestor(t.commonAncestor(), ft.isCell), o = i()(n).closest("tr"); i()(o).siblings().push(o); for (var r = new Lt(n, Lt.where.Column, Lt.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 Lt.resultAction.AddCell: "right" === e ? i()(s.baseCell).after("<td" + l + ">" + ft.blank + "</td>") : i()(s.baseCell).before("<td" + l + ">" + ft.blank + "</td>"); break; case Lt.resultAction.SumSpanCount: if ("right" === e) { var c = parseInt(s.baseCell.colSpan, 10); c++, s.baseCell.setAttribute("colSpan", c) } else i()(s.baseCell).before("<td" + l + ">" + ft.blank + "</td>") } } } }, { 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 = ft.ancestor(t.commonAncestor(), ft.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = n[0].rowIndex, a = new Lt(e, Lt.where.Row, Lt.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 Lt.resultAction.Ignore: continue; case Lt.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 Lt.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 Lt.resultAction.RemoveCell: continue } } n.remove() } }, { key: "deleteCol", value: function(t) { for (var e = ft.ancestor(t.commonAncestor(), ft.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = new Lt(e, Lt.where.Column, Lt.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), a = 0; a < r.length; a++) if (r[a]) switch (r[a].action) { case Lt.resultAction.Ignore: continue; case Lt.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 Lt.resultAction.RemoveCell: ft.remove(r[a].baseCell, !0); continue } } }, { key: "createTable", value: function(t, e, n) { for (var o, r = [], a = 0; a < t; a++) r.push("<td>" + ft.blank + "</td>"); o = r.join(""); for (var s, l = [], c = 0; c < e; c++) l.push("<tr>" + o + "</tr>"); s = l.join(""); var u = i()("<table>" + s + "</table>"); return n && n.tableClassName && u.addClass(n.tableClassName), u[0] } }, { key: "deleteTable", value: function(t) { var e = ft.ancestor(t.commonAncestor(), ft.isCell); i()(e).closest("table").remove() } }]) && Rt(e.prototype, n), o && Rt(e, o), t }(); function Ft(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 Dt = 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 Et, this.table = new At, this.typing = new Pt(e), this.bullet = new $t, this.history = new St(e), 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", v.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(kt.createFromNodeAfter(t).select())) })), this.insertText = this.wrapCommand((function(t) { if (!n.isLimited(t.length)) { var e = n.getLastRange().insertNode(ft.createText(t)); n.setLastRange(kt.create(e, ft.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(kt.createFromNodeAfter(x.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(ft.create("HR")); t.nextSibling && n.setLastRange(kt.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()("<A>" + o + "</A>")[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") })); var h = kt.createFromNodeBefore(x.head(u)).getStartPoint(), f = kt.createFromNodeAfter(x.last(u)).getEndPoint(); n.setLastRange(kt.create(h.node, h.offset, f.node, f.offset).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 === Ct.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(ft.html(this.$note) || ft.emptyPara), this.$editable.on(v.inputEventName, b.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[v.isMac ? "mac" : "pc"], n = []; t.metaKey && n.push("CMD"), t.ctrlKey && !t.altKey && n.push("CTRL"), t.shiftKey && n.push("SHIFT"); var o = Ct.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 Ct.isEdit(t.keyCode) && this.afterCommand(); else this.afterCommand(); return !1 } }, { key: "preventDefaultEditableShortCuts", value: function(t) { (t.ctrlKey || t.metaKey) && x.contains([66, 73, 85], t.keyCode) && t.preventDefault() } }, { key: "isLimited", value: function(t, e) { return t = t || 0, (void 0 === e || !(Ct.isMove(e.keyCode) || Ct.isNavigation(e.keyCode) || e.ctrlKey || e.metaKey || x.contains([Ct.code.BACKSPACE, Ct.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: "setLastRange", value: function(t) { t ? this.lastRange = t : (this.lastRange = kt.create(this.editable), 0 === i()(this.lastRange.sc).closest(".note-editable").length && (this.lastRange = kt.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 = kt.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()("<img>"); 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(kt.createFromNodeAfter(t[0]).select()), o.afterCommand() })).fail((function(t) { o.context.triggerEvent("image.upload.error", 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", 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") })) })) } }, { 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 = kt.createFromNode(ft.ancestor(t.sc, ft.isAnchor))), t.toString() } }, { key: "onFormatBlock", value: function(t, e) { if (document.execCommand("FormatBlock", !1, v.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 = x.head(o); r && !ft.nodeLength(r) && (r.innerHTML = ft.ZERO_WIDTH_NBSP_CHAR, kt.createFromNodeAfter(r.firstChild).select(), this.setLastRange(), this.$editable.data("bogus", r)) } } else { var a = i.a.now(); this.$editor.find(".note-status-output").html('<div id="note-status-output-' + a + '" class="alert alert-info">' + this.lang.output.noSelection + "</div>"), setTimeout((function() { i()("#note-status-output-" + a).remove() }), 5e3) } } }, { key: "unlink", value: function() { var t = this.getLastRange(); if (t.isOnAnchor()) { var e = ft.ancestor(t.sc, ft.isAnchor); (t = kt.createFromNode(e)).select(), this.setLastRange(), this.beforeCommand(), document.execCommand("unlink"), this.afterCommand() } } }, { key: "getLinkInfo", value: function() { var t = this.getLastRange().expand(ft.isAnchor), e = i()(x.head(t.nodes(ft.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 ft.isEmpty(this.$editable[0]) || ft.emptyPara === this.$editable.html() } }, { key: "empty", value: function() { this.context.invoke("code", ft.emptyPara) } }, { key: "normalizeContent", value: function() { this.$editable[0].normalize() } }]) && Ft(e.prototype, n), o && Ft(e, o), t }(); function Ht(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] : x.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) } }]) && Ht(e.prototype, n), o && Ht(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 Mt, 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()(['<div class="note-dropzone">', '<div class="note-dropzone-message"/>', "</div>"].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); o.toLowerCase().indexOf("text") > -1 ? t.context.invoke("editor.pasteHTML", r) : 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 = {} } }]) && Bt(e.prototype, n), o && Bt(e, o), t }(); function Ut(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) } } v.hasCodeMirror && (Mt = window.CodeMirror); var jt = 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 } var e, n, o; return e = t, (n = [{ key: "sync", value: function() { this.isActivated() && v.hasCodeMirror && this.$codable.data("cmEditor").save() } }, { 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.*?>.*?(?:<\/iframe>)?)/gi, (function(t) { if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t)) return ""; var n = !0, o = !1, i = void 0; try { for (var r, a = e[Symbol.iterator](); !(n = (r = a.next()).done); n = !0) { var s = r.value; if (new RegExp('src="(https?:)?//' + s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") + '/(.+)"').test(t)) return t } } catch (t) { o = !0, i = t } finally { try { n || null == a.return || a.return() } finally { if (o) throw i } } return "" })) } return t } }, { key: "activate", value: function() { var t = this; if (this.$codable.val(ft.html(this.$editable, this.options.prettifyHtml)), this.$codable.height(this.$editable.height()), this.context.invoke("toolbar.updateCodeview", !0), this.$editor.addClass("codeview"), this.$codable.focus(), v.hasCodeMirror) { var e = Mt.fromTextArea(this.$codable[0], this.options.codemirror); if (this.options.codemirror.tern) { var n = new Mt.TernServer(this.options.codemirror.tern); e.ternServer = n, e.on("cursorActivity", (function(t) { n.updateArgHints(t) })) } e.on("blur", (function(n) { t.context.triggerEvent("blur.codeview", e.getValue(), n) })), e.on("change", (function() { t.context.triggerEvent("change.codeview", e.getValue(), e) })), e.setSize(null, this.$editable.outerHeight()), this.$codable.data("cmEditor", e) } 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 (v.hasCodeMirror) { var t = this.$codable.data("cmEditor"); this.$codable.val(t.getValue()), t.toTextArea() } var e = this.purify(ft.value(this.$codable, this.options.prettifyHtml) || ft.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) } }, { key: "destroy", value: function() { this.isActivated() && this.deactivate() } }]) && Ut(e.prototype, n), o && Ut(e, o), t }(); 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.$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") } }]) && Wt(e.prototype, n), o && Wt(e, o), t }(); function qt(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) { 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") } }]) && qt(e.prototype, n), o && qt(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.$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()(['<div class="note-handle">', '<div class="note-control-selection">', '<div class="note-control-selection-bg"></div>', '<div class="note-control-holder note-control-nw"></div>', '<div class="note-control-holder note-control-ne"></div>', '<div class="note-control-holder note-control-sw"></div>', '<div class="', this.options.disableResizeImage ? "note-control-holder" : "note-control-sizing", ' note-control-se"></div>', this.options.disableResizeImage ? "" : '<div class="note-control-selection-info"></div>', "</div>", "</div>"].join("")).prependTo(this.$editingArea), this.$handle.on("mousedown", (function(e) { if (ft.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 = ft.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() } }]) && _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 = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i, Xt = 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.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(Zt); if (e && (e[1] || e[2])) { var n = e[1] ? t : "http://" + t, o = t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, "").split("/")[0], r = i()("<a />").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 (x.contains([Ct.code.ENTER, Ct.code.SPACE], t.keyCode)) { var e = this.context.invoke("editor.createRange").getWordRange(); this.lastWordRange = e } } }, { key: "handleKeyup", value: function(t) { x.contains([Ct.code.ENTER, Ct.code.SPACE], t.keyCode) && this.replace() } }]) && Yt(e.prototype, n), o && Yt(e, o), t }(); function Qt(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 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.$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 ft.isTextarea(this.$note[0]) } }]) && Qt(e.prototype, n), o && Qt(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.context = e, this.options = e.options.replace || {}, this.keys = [Ct.code.ENTER, Ct.code.SPACE, Ct.code.PERIOD, Ct.code.COMMA, Ct.code.SEMICOLON, Ct.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 = ft.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 && x.contains(this.keys, this.previousKeydownCode)) this.previousKeydownCode = t.keyCode; else { if (x.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) { x.contains(this.keys, t.keyCode) && this.replace() } }]) && 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.$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()('<div class="note-placeholder">'), 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) } }]) && 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) {! 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 = b.invertObject(this.options.keyMap[v.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 ? (v.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] = v.isFontInstalled(t) || x.contains(this.options.fontNamesIgnoreCheck, t)), this.fontInstalledMap[t] } }, { key: "isFontDeservedToAdd", value: function(t) { return "" !== (t = t.toLowerCase()) && this.isFontInstalled(t) && -1 === v.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 ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.background + "</div>", "<div>", '<button type="button" class="note-color-reset btn btn-light" data-event="backColor" data-value="inherit">', this.lang.color.transparent, "</button>", "</div>", '<div class="note-holder" data-event="backColor"/>', "<div>", '<button type="button" class="note-color-select btn btn-light" data-event="openPalette" data-value="backColorPicker">', this.lang.color.cpSelect, "</button>", '<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.backColor + '" data-event="backColorPalette">', "</div>", '<div class="note-holder-custom" id="backColorPalette" data-event="backColor"/>', "</div>"].join("") : "") + (o ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.foreground + "</div>", "<div>", '<button type="button" class="note-color-reset btn btn-light" data-event="removeFormat" data-value="foreColor">', this.lang.color.resetToDefault, "</button>", "</div>", '<div class="note-holder" data-event="foreColor"/>', "<div>", '<button type="button" class="note-color-select btn btn-light" data-event="openPalette" data-value="foreColorPicker">', this.lang.color.cpSelect, "</button>", '<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.foreColor + '" data-event="foreColorPalette">', "</div>", '<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"/>', "</div>"].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 (x.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 + "</" + n + ">" }, 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: '<div data-value="' + o + '">' + o.toUpperCase() + "</div>", 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('<span class="note-current-fontname"/>', 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 '<span style="font-family: ' + v.validFontName(t) + '">' + t + "</span>" }, 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('<span class="note-current-fontsize"/>', 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('<span class="note-current-fontsizeunit"/>', 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", b.invoke(r, "render")), this.context.memo("button.justifyCenter", b.invoke(a, "render")), this.context.memo("button.justifyRight", b.invoke(s, "render")), this.context.memo("button.justifyFull", b.invoke(l, "render")), this.context.memo("button.outdent", b.invoke(c, "render")), this.context.memo("button.indent", b.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: ['<div class="note-dimension-picker">', '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"/>', '<div class="note-dimension-picker-highlighted"/>', '<div class="note-dimension-picker-unhighlighted"/>', "</div>", '<div class="note-dimension-display">1 x 1</div>'].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", 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", 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: '<span class="note-fontsize-10">100%</span>', tooltip: t.lang.image.resizeFull, click: t.context.createInvokeHandler("editor.resize", "1") }).render() })), this.context.memo("button.resizeHalf", (function() { return t.button({ contents: '<span class="note-fontsize-10">50%</span>', tooltip: t.lang.image.resizeHalf, click: t.context.createInvokeHandler("editor.resize", "0.5") }).render() })), this.context.memo("button.resizeQuarter", (function() { return t.button({ contents: '<span class="note-fontsize-10">25%</span>', 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 = x.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) } }]) && 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.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(".btn-codeview").not(".btn-fullscreen")), this.ui.toggleBtn(e, !0) } }, { key: "deactivate", value: function(t) { var e = this.$toolbar.find("button"); t || (e = e.not(".btn-codeview").not(".btn-fullscreen")), this.ui.toggleBtn(e, !1) } }]) && 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.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 = ['<div class="form-group note-form-group">', '<label for="note-dialog-link-txt-'.concat(this.options.id, '" class="note-form-label">').concat(this.lang.link.textToDisplay, "</label>"), '<input id="note-dialog-link-txt-'.concat(this.options.id, '" class="note-link-text form-control note-form-control note-input" type="text"/>'), "</div>", '<div class="form-group note-form-group">', '<label for="note-dialog-link-url-'.concat(this.options.id, '" class="note-form-label">').concat(this.lang.link.url, "</label>"), '<input id="note-dialog-link-url-'.concat(this.options.id, '" class="note-link-url form-control note-form-control note-input" type="text" value="http://"/>'), "</div>", this.options.disableLinkTarget ? "" : i()("<div/>").append(this.ui.checkbox({ className: "sn-checkbox-open-in-new-window", text: this.lang.link.openInNewWindow, checked: !0 }).render()).html(), i()("<div/>").append(this.ui.checkbox({ className: "sn-checkbox-use-protocol", text: this.lang.link.useProtocol, checked: !0 }).render()).html()].join(""), n = '<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-link-btn", '" value="').concat(this.lang.link.insert, '" disabled>'); 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 === Ct.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 && b.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), v.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") })) } }]) && 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) { 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 !x.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('<span><a target="_blank"></a>&nbsp;</span>') } }).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 = ft.ancestor(t.sc, ft.isAnchor), n = i()(e).attr("href"); this.$popover.find("a").attr("href", n).text(n); var o = ft.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() } }]) && 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) {! 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 = "<small>".concat(this.lang.image.maximumFileSize + " : " + n, "</small>") } var o = this.options.dialogsInBody ? this.$body : this.options.container, i = ['<div class="form-group note-form-group note-group-select-from-files">', '<label for="note-dialog-image-file-' + this.options.id + '" class="note-form-label">' + this.lang.image.selectFromFiles + "</label>", '<input id="note-dialog-image-file-' + this.options.id + '" class="note-image-input form-control-file note-form-control note-input" ', ' type="file" name="files" accept="image/*" multiple="multiple"/>', t, "</div>", '<div class="form-group note-group-image-url">', '<label for="note-dialog-image-url-' + this.options.id + '" class="note-form-label">' + this.lang.image.url + "</label>", '<input id="note-dialog-image-url-' + this.options.id + '" class="note-image-url form-control note-form-control note-input" type="text"/>', "</div>"].join(""), r = '<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-image-btn", '" value="').concat(this.lang.image.insert, '" disabled>'); 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 === Ct.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(""), v.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) })) } }]) && 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) { 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 !x.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 (ft.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() } }]) && 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.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 !x.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), v.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 = ft.isCell(t); if (e) { var n = ft.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() } }]) && 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 ye = 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 = ['<div class="form-group note-form-group row-fluid">', '<label for="note-dialog-video-url-'.concat(this.options.id, '" class="note-form-label">').concat(this.lang.video.url, ' <small class="text-muted">').concat(this.lang.video.providers, "</small></label>"), '<input id="note-dialog-video-url-'.concat(this.options.id, '" class="note-video-url form-control note-form-control note-input" type="text"/>'), "</div>"].join(""), n = '<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-video-btn", '" value="').concat(this.lang.video.insert, '" disabled>'); 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 === Ct.code.ENTER && (t.preventDefault(), e.trigger("click")) })) } }, { key: "createVideoNode", value: function(t) { var e, n = t.match(/\/\/(?:www\.)?(?: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], y = 0, k = b.length; y < k; y++) v += void 0 !== g[y + 1] ? b[y] * parseInt(g[y + 1], 10) : 0 } e = i()("<iframe>").attr("frameborder", 0).attr("src", "//www.youtube.com/embed/" + m + (v > 0 ? "?start=" + v : "")).attr("width", "640").attr("height", "360") } else if (o && o[0].length) e = i()("<iframe>").attr("frameborder", 0).attr("src", "https://instagram.com/p/" + o[1] + "/embed/").attr("width", "612").attr("height", "710").attr("scrolling", "no").attr("allowtransparency", "true"); else if (r && r[0].length) e = i()("<iframe>").attr("frameborder", 0).attr("src", r[0] + "/embed/simple").attr("width", "600").attr("height", "600").attr("class", "vine-embed"); else if (a && a[3].length) e = i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder", 0).attr("src", "//player.vimeo.com/video/" + a[3]).attr("width", "640").attr("height", "360"); else if (s && s[2].length) e = i()("<iframe>").attr("frameborder", 0).attr("src", "//www.dailymotion.com/embed/video/" + s[2]).attr("width", "640").attr("height", "360"); else if (l && l[1].length) e = i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder", 0).attr("height", "498").attr("width", "510").attr("src", "//player.youku.com/embed/" + l[1]); else if (c && c[1].length || u && u[2].length) { var w = c && c[1].length ? c[1] : u[2]; e = i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder", 0).attr("height", "310").attr("width", "500").attr("src", "https://v.qq.com/iframe/player.html?vid=" + w + "&amp;auto=0") } else if (d || h || f) e = i()("<video controls>").attr("src", t).attr("width", "640").attr("height", "360"); else { if (!p || !p[0].length) return !1; e = i()("<iframe>").attr("frameborder", 0).attr("src", "https://www.facebook.com/plugins/video.php?href=" + encodeURIComponent(p[0]) + "&show_text=0&width=560").attr("width", "560").attr("height", "301").attr("scrolling", "no").attr("allowtransparency", "true") } return e.addClass("note-video-clip"), e[0] } }, { key: "show", value: function() { var t = this, e = this.context.invoke("editor.getSelectedText"); this.context.invoke("editor.saveRange"), this.showVideoDialog(e).then((function(e) { t.ui.hideDialog(t.$dialog), t.context.invoke("editor.restoreRange"); var n = t.createVideoNode(e); n && t.context.invoke("editor.insertNode", n) })).fail((function() { t.context.invoke("editor.restoreRange") })) } }, { key: "showVideoDialog", value: function() { var t = this; return i.a.Deferred((function(e) { var n = t.$dialog.find(".note-video-url"), o = t.$dialog.find(".note-video-btn"); t.ui.onDialogShown(t.$dialog, (function() { t.context.triggerEvent("dialog.shown"), n.on("input paste propertychange", (function() { t.ui.toggleBtn(o, n.val()) })), v.isSupportTouch || n.trigger("focus"), o.click((function(t) { t.preventDefault(), e.resolve(n.val()) })), t.bindEnterKey(n, o) })), t.ui.onDialogHidden(t.$dialog, (function() { n.off(), o.off(), "pending" === e.state() && e.reject() })), t.ui.showDialog(t.$dialog) })) } }]) && be(e.prototype, n), o && be(e, o), t }(); function ke(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 = ['<p class="text-center">', '<a href="http://summernote.org/" target="_blank">Summernote 0.8.16</a> · ', '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ', '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>', "</p>"].join(""); this.$dialog = this.ui.dialog({ title: this.lang.options.help, fade: this.options.dialogsFade, body: this.createShortcutList(), footer: e, callback: function(t) { t.find(".modal-body,.note-modal-body").css({ "max-height": 300, overflow: "scroll" }) } }).render().appendTo(t) } }, { key: "destroy", value: function() { this.ui.hideDialog(this.$dialog), this.$dialog.remove() } }, { key: "createShortcutList", value: function() { var t = this, e = this.options.keyMap[v.isMac ? "mac" : "pc"]; return Object.keys(e).map((function(n) { var o = e[n], r = i()('<div><div class="help-list-item"/></div>'); return r.append(i()("<label><kbd>" + n + "</kdb></label>").css({ width: 180, "margin-right": 10 })).append(i()("<span/>").html(t.context.memo("help." + o) || o)), r.html() })).join("") } }, { key: "showHelpDialog", value: function() { var t = this; return i.a.Deferred((function(e) { t.ui.onDialogShown(t.$dialog, (function() { t.context.triggerEvent("dialog.shown"), e.resolve() })), t.ui.showDialog(t.$dialog) })).promise() } }, { key: "show", value: function() { var t = this; this.context.invoke("editor.saveRange"), this.showHelpDialog().then((function() { t.context.invoke("editor.restoreRange") })) } }]) && ke(e.prototype, n), o && ke(e, o), t }(); function Ce(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 xe = 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.hidable = !0, this.onContextmenu = !1, this.pageX = null, this.pageY = null, this.events = { "summernote.contextmenu": function(t) { n.options.editing && (t.preventDefault(), t.stopPropagation(), n.onContextmenu = !0, n.update(!0)) }, "summernote.mousedown": function(t, e) { n.pageX = e.pageX, n.pageY = e.pageY }, "summernote.keyup summernote.mouseup summernote.scroll": function(t, e) { n.options.editing && !n.onContextmenu && (n.pageX = e.pageX, n.pageY = e.pageY, n.update()), n.onContextmenu = !1 }, "summernote.disable summernote.change summernote.dialog.shown summernote.blur": function() { n.hide() }, "summernote.focusout": function() { n.$popover.is(":active,:focus") || n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function() { return this.options.airMode && !x.isEmpty(this.options.popover.air) } }, { key: "initialize", value: function() { var t = this; this.$popover = this.ui.popover({ className: "note-air-popover" }).render().appendTo(this.options.container); var e = this.$popover.find(".popover-content"); this.context.invoke("buttons.build", e, this.options.popover.air), this.$popover.on("mousedown", (function() { t.hidable = !1 })), this.$popover.on("mouseup", (function() { t.hidable = !0 })) } }, { key: "destroy", value: function() { this.$popover.remove() } }, { key: "update", value: function(t) { var e = this.context.invoke("editor.currentStyle"); if (!e.range || e.range.isCollapsed() && !t) this.hide(); else { var n = { left: this.pageX, top: this.pageY }, o = i()(this.options.container).offset(); n.top -= o.top, n.left -= o.left, this.$popover.css({ display: "block", left: Math.max(n.left, 0) + -5, top: n.top + 5 }), this.context.invoke("buttons.updateCurrentStyle", this.$popover) } } }, { key: "hide", value: function() { this.hidable && this.$popover.hide() } }]) && Ce(e.prototype, n), o && Ce(e, o), t }(); function Se(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 Te = 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, this.options = e.options, this.hint = this.options.hint || [], this.direction = this.options.hintDirection || "bottom", this.hints = Array.isArray(this.hint) ? this.hint : [this.hint], this.events = { "summernote.keyup": function(t, e) { e.isDefaultPrevented() || n.handleKeyup(e) }, "summernote.keydown": function(t, e) { n.handleKeydown(e) }, "summernote.disable summernote.dialog.shown summernote.blur": function() { n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function() { return this.hints.length > 0 } }, { key: "initialize", value: function() { var t = this; this.lastWordRange = null, this.matchingWord = null, this.$popover = this.ui.popover({ className: "note-hint-popover", hideArrow: !0, direction: "" }).render().appendTo(this.options.container), this.$popover.hide(), this.$content = this.$popover.find(".popover-content,.note-popover-content"), this.$content.on("click", ".note-hint-item", (function(e) { t.$content.find(".active").removeClass("active"), i()(e.currentTarget).addClass("active"), t.replace() })), this.$popover.on("mousedown", (function(t) { t.preventDefault() })) } }, { key: "destroy", value: function() { this.$popover.remove() } }, { key: "selectItem", value: function(t) { this.$content.find(".active").removeClass("active"), t.addClass("active"), this.$content[0].scrollTop = t[0].offsetTop - this.$content.innerHeight() / 2 } }, { key: "moveDown", value: function() { var t = this.$content.find(".note-hint-item.active"), e = t.next(); if (e.length) this.selectItem(e); else { var n = t.parent().next(); n.length || (n = this.$content.find(".note-hint-group").first()), this.selectItem(n.find(".note-hint-item").first()) } } }, { key: "moveUp", value: function() { var t = this.$content.find(".note-hint-item.active"), e = t.prev(); if (e.length) this.selectItem(e); else { var n = t.parent().prev(); n.length || (n = this.$content.find(".note-hint-group").last()), this.selectItem(n.find(".note-hint-item").last()) } } }, { key: "replace", value: function() { var t = this.$content.find(".note-hint-item.active"); if (t.length) { var e = this.nodeFromItem(t); if (null !== this.matchingWord && 0 === this.matchingWord.length) this.lastWordRange.so = this.lastWordRange.eo; else if (null !== this.matchingWord && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) { var n = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length; n > 0 && (this.lastWordRange.so += n) } if (this.lastWordRange.insertNode(e), "next" === this.options.hintSelect) { var o = document.createTextNode(""); i()(e).after(o), kt.createFromNodeBefore(o).select() } else kt.createFromNodeAfter(e).select(); this.lastWordRange = null, this.hide(), this.context.invoke("editor.focus") } } }, { key: "nodeFromItem", value: function(t) { var e = this.hints[t.data("index")], n = t.data("item"), o = e.content ? e.content(n) : n; return "string" == typeof o && (o = ft.createText(o)), o } }, { key: "createItemTemplates", value: function(t, e) { var n = this.hints[t]; return e.map((function(e) { var o = i()('<div class="note-hint-item"/>'); return o.append(n.template ? n.template(e) : e + ""), o.data({ index: t, item: e }), o })) } }, { key: "handleKeydown", value: function(t) { this.$popover.is(":visible") && (t.keyCode === Ct.code.ENTER ? (t.preventDefault(), this.replace()) : t.keyCode === Ct.code.UP ? (t.preventDefault(), this.moveUp()) : t.keyCode === Ct.code.DOWN && (t.preventDefault(), this.moveDown())) } }, { key: "searchKeyword", value: function(t, e, n) { var o = this.hints[t]; if (o && o.match.test(e) && o.search) { var i = o.match.exec(e); this.matchingWord = i[0], o.search(i[1], n) } else n() } }, { key: "createGroup", value: function(t, e) { var n = this, o = i()('<div class="note-hint-group note-hint-group-' + t + '"/>'); return this.searchKeyword(t, e, (function(e) { (e = e || []).length && (o.html(n.createItemTemplates(t, e)), n.show()) })), o } }, { key: "handleKeyup", value: function(t) { var e = this; if (!x.contains([Ct.code.ENTER, Ct.code.UP, Ct.code.DOWN], t.keyCode)) { var n, o, r = this.context.invoke("editor.getLastRange"); if ("words" === this.options.hintMode) { if (n = r.getWordsRange(r), o = n.toString(), this.hints.forEach((function(t) { if (t.match.test(o)) return n = r.getWordsMatchRange(t.match), !1 })), !n) return void this.hide(); o = n.toString() } else n = r.getWordRange(), o = n.toString(); if (this.hints.length && o) { this.$content.empty(); var a = b.rect2bnd(x.last(n.getClientRects())), s = i()(this.options.container).offset(); a && (a.top -= s.top, a.left -= s.left, this.$popover.hide(), this.lastWordRange = n, this.hints.forEach((function(t, n) { t.match.test(o) && e.createGroup(n, o).appendTo(e.$content) })), this.$content.find(".note-hint-item:first").addClass("active"), "top" === this.direction ? this.$popover.css({ left: a.left, top: a.top - this.$popover.outerHeight() - 5 }) : this.$popover.css({ left: a.left, top: a.top + a.height + 5 })) } else this.hide() } } }, { key: "show", value: function() { this.$popover.show() } }, { key: "hide", value: function() { this.$popover.hide() } }]) && Se(e.prototype, n), o && Se(e, o), t }(); i.a.summernote = i.a.extend(i.a.summernote, { version: "0.8.16", plugins: {}, dom: ft, range: kt, lists: x, options: { langInfo: i.a.summernote.lang["en-US"], editing: !0, modules: { editor: Dt, clipboard: zt, dropzone: Ot, codeview: jt, statusbar: Kt, fullscreen: Vt, handle: Gt, hintPopover: Te, autoLink: Xt, autoSync: Jt, autoReplace: ee, placeholder: oe, buttons: re, toolbar: se, linkDialog: ce, linkPopover: de, imageDialog: fe, imagePopover: me, tablePopover: ge, videoDialog: ye, helpDialog: we, airPopover: xe }, buttons: {}, lang: "en-US", followingToolbar: !1, toolbarPosition: "top", otherStaticBar: "", toolbar: [ ["style", ["style"]], ["font", ["bold", "underline", "clear"]], ["fontname", ["fontname"]], ["color", ["color"]], ["para", ["ul", "ol", "paragraph"]], ["table", ["table"]], ["insert", ["link", "picture", "video"]], ["view", ["fullscreen", "codeview", "help"]] ], popatmouse: !0, popover: { image: [ ["resize", ["resizeFull", "resizeHalf", "resizeQuarter", "resizeNone"]], ["float", ["floatLeft", "floatRight", "floatNone"]], ["remove", ["removeMedia"]] ], link: [ ["link", ["linkDialogShow", "unlink"]] ], table: [ ["add", ["addRowDown", "addRowUp", "addColLeft", "addColRight"]], ["delete", ["deleteRow", "deleteCol", "deleteTable"]] ], air: [ ["color", ["color"]], ["font", ["bold", "underline", "clear"]], ["para", ["ul", "paragraph"]], ["table", ["table"]], ["insert", ["link", "picture"]], ["view", ["fullscreen", "codeview"]] ] }, airMode: !1, overrideContextMenu: !1, width: null, height: null, linkTargetBlank: !0, useProtocol: !0, defaultProtocol: "http://", focus: !1, tabDisabled: !1, tabSize: 4, styleWithCSS: !1, shortcuts: !0, textareaAutoSync: !0, tooltip: "auto", container: null, maxTextLength: 0, blockquoteBreakingLevel: 2, spellCheck: !0, disableGrammar: !1, placeholder: null, inheritPlaceholder: !1, recordEveryKeystroke: !1, historyLimit: 200, hintMode: "word", hintSelect: "after", hintDirection: "bottom", styleTags: ["p", "blockquote", "pre", "h1", "h2", "h3", "h4", "h5", "h6"], fontNames: ["Arial", "Arial Black", "Comic Sans MS", "Courier New", "Helvetica Neue", "Helvetica", "Impact", "Lucida Grande", "Tahoma", "Times New Roman", "Verdana"], fontNamesIgnoreCheck: [], addDefaultFonts: !0, fontSizes: ["8", "9", "10", "11", "12", "14", "18", "24", "36"], fontSizeUnits: ["px", "pt"], colors: [ ["#000000", "#424242", "#636363", "#9C9C94", "#CEC6CE", "#EFEFEF", "#F7F7F7", "#FFFFFF"], ["#FF0000", "#FF9C00", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF", "#9C00FF", "#FF00FF"], ["#F7C6CE", "#FFE7CE", "#FFEFC6", "#D6EFD6", "#CEDEE7", "#CEE7F7", "#D6D6E7", "#E7D6DE"], ["#E79C9C", "#FFC69C", "#FFE79C", "#B5D6A5", "#A5C6CE", "#9CC6EF", "#B5A5D6", "#D6A5BD"], ["#E76363", "#F7AD6B", "#FFD663", "#94BD7B", "#73A5AD", "#6BADDE", "#8C7BC6", "#C67BA5"], ["#CE0000", "#E79439", "#EFC631", "#6BA54A", "#4A7B8C", "#3984C6", "#634AA5", "#A54A7B"], ["#9C0000", "#B56308", "#BD9400", "#397B21", "#104A5A", "#085294", "#311873", "#731842"], ["#630000", "#7B3900", "#846300", "#295218", "#083139", "#003163", "#21104A", "#4A1031"] ], colorsName: [ ["Black", "Tundora", "Dove Gray", "Star Dust", "Pale Slate", "Gallery", "Alabaster", "White"], ["Red", "Orange Peel", "Yellow", "Green", "Cyan", "Blue", "Electric Violet", "Magenta"], ["Azalea", "Karry", "Egg White", "Zanah", "Botticelli", "Tropical Blue", "Mischka", "Twilight"], ["Tonys Pink", "Peach Orange", "Cream Brulee", "Sprout", "Casper", "Perano", "Cold Purple", "Careys Pink"], ["Mandy", "Rajah", "Dandelion", "Olivine", "Gulf Stream", "Viking", "Blue Marguerite", "Puce"], ["Guardsman Red", "Fire Bush", "Golden Dream", "Chelsea Cucumber", "Smalt Blue", "Boston Blue", "Butterfly Bush", "Cadillac"], ["Sangria", "Mai Tai", "Buddha Gold", "Forest Green", "Eden", "Venice Blue", "Meteorite", "Claret"], ["Rosewood", "Cinnamon", "Olive", "Parsley", "Tiber", "Midnight Blue", "Valentino", "Loulou"] ], colorButton: { foreColor: "#000000", backColor: "#FFFF00" }, lineHeights: ["1.0", "1.2", "1.4", "1.5", "1.6", "1.8", "2.0", "3.0"], tableClassName: "table table-bordered", insertTableMaxSize: { col: 10, row: 10 }, dialogsInBody: !1, dialogsFade: !1, maximumImageFileSize: null, callbacks: { onBeforeCommand: null, onBlur: null, onBlurCodeview: null, onChange: null, onChangeCodeview: null, onDialogShown: null, onEnter: null, onFocus: null, onImageLinkInsert: null, onImageUpload: null, onImageUploadError: null, onInit: null, onKeydown: null, onKeyup: null, onMousedown: null, onMouseup: null, onPaste: null, onScroll: null }, codemirror: { mode: "text/html", htmlMode: !0, lineNumbers: !0 }, codeviewFilter: !1, codeviewFilterRegex: /<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi, codeviewIframeFilter: !0, codeviewIframeWhitelistSrc: [], codeviewIframeWhitelistSrcBase: ["www.youtube.com", "www.youtube-nocookie.com", "www.facebook.com", "vine.co", "instagram.com", "player.vimeo.com", "www.dailymotion.com", "player.youku.com", "v.qq.com"], keyMap: { pc: { ENTER: "insertParagraph", "CTRL+Z": "undo", "CTRL+Y": "redo", TAB: "tab", "SHIFT+TAB": "untab", "CTRL+B": "bold", "CTRL+I": "italic", "CTRL+U": "underline", "CTRL+SHIFT+S": "strikethrough", "CTRL+BACKSLASH": "removeFormat", "CTRL+SHIFT+L": "justifyLeft", "CTRL+SHIFT+E": "justifyCenter", "CTRL+SHIFT+R": "justifyRight", "CTRL+SHIFT+J": "justifyFull", "CTRL+SHIFT+NUM7": "insertUnorderedList", "CTRL+SHIFT+NUM8": "insertOrderedList", "CTRL+LEFTBRACKET": "outdent", "CTRL+RIGHTBRACKET": "indent", "CTRL+NUM0": "formatPara", "CTRL+NUM1": "formatH1", "CTRL+NUM2": "formatH2", "CTRL+NUM3": "formatH3", "CTRL+NUM4": "formatH4", "CTRL+NUM5": "formatH5", "CTRL+NUM6": "formatH6", "CTRL+ENTER": "insertHorizontalRule", "CTRL+K": "linkDialog.show" }, mac: { ENTER: "insertParagraph", "CMD+Z": "undo", "CMD+SHIFT+Z": "redo", TAB: "tab", "SHIFT+TAB": "untab", "CMD+B": "bold", "CMD+I": "italic", "CMD+U": "underline", "CMD+SHIFT+S": "strikethrough", "CMD+BACKSLASH": "removeFormat", "CMD+SHIFT+L": "justifyLeft", "CMD+SHIFT+E": "justifyCenter", "CMD+SHIFT+R": "justifyRight", "CMD+SHIFT+J": "justifyFull", "CMD+SHIFT+NUM7": "insertUnorderedList", "CMD+SHIFT+NUM8": "insertOrderedList", "CMD+LEFTBRACKET": "outdent", "CMD+RIGHTBRACKET": "indent", "CMD+NUM0": "formatPara", "CMD+NUM1": "formatH1", "CMD+NUM2": "formatH2", "CMD+NUM3": "formatH3", "CMD+NUM4": "formatH4", "CMD+NUM5": "formatH5", "CMD+NUM6": "formatH6", "CMD+ENTER": "insertHorizontalRule", "CMD+K": "linkDialog.show" } }, icons: { align: "note-icon-align", alignCenter: "note-icon-align-center", alignJustify: "note-icon-align-justify", alignLeft: "note-icon-align-left", alignRight: "note-icon-align-right", rowBelow: "note-icon-row-below", colBefore: "note-icon-col-before", colAfter: "note-icon-col-after", rowAbove: "note-icon-row-above", rowRemove: "note-icon-row-remove", colRemove: "note-icon-col-remove", indent: "note-icon-align-indent", outdent: "note-icon-align-outdent", arrowsAlt: "note-icon-arrows-alt", bold: "note-icon-bold", caret: "note-icon-caret", circle: "note-icon-circle", close: "note-icon-close", code: "note-icon-code", eraser: "note-icon-eraser", floatLeft: "note-icon-float-left", floatRight: "note-icon-float-right", font: "note-icon-font", frame: "note-icon-frame", italic: "note-icon-italic", link: "note-icon-link", unlink: "note-icon-chain-broken", magic: "note-icon-magic", menuCheck: "note-icon-menu-check", minus: "note-icon-minus", orderedlist: "note-icon-orderedlist", pencil: "note-icon-pencil", picture: "note-icon-picture", question: "note-icon-question", redo: "note-icon-redo", rollback: "note-icon-rollback", square: "note-icon-square", strikethrough: "note-icon-strikethrough", subscript: "note-icon-subscript", superscript: "note-icon-superscript", table: "note-icon-table", textHeight: "note-icon-text-height", trash: "note-icon-trash", underline: "note-icon-underline", undo: "note-icon-undo", unorderedlist: "note-icon-unorderedlist", video: "note-icon-video" } } }) }, 5: function(t, e, n) {}, 53: function(t, e, n) { "use strict"; n.r(e); var o = n(0), i = n.n(o), r = n(1); function a(t) { return (a = "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) } var s = r.a.create('<div class="note-editor note-frame card"/>'), l = r.a.create('<div class="note-toolbar card-header" role="toolbar"></div>'), c = r.a.create('<div class="note-editing-area"/>'), u = r.a.create('<textarea class="note-codable" aria-multiline="true"/>'), d = r.a.create('<div class="note-editable card-block" contentEditable="true" role="textbox" aria-multiline="true"/>'), h = r.a.create(['<output class="note-status-output" role="status" aria-live="polite"/>', '<div class="note-statusbar" role="status">', '<output class="note-status-output" aria-live="polite"></output>', '<div class="note-resizebar" aria-label="Resize">', '<div class="note-icon-bar"/>', '<div class="note-icon-bar"/>', '<div class="note-icon-bar"/>', "</div>", "</div>"].join("")), f = r.a.create('<div class="note-editor note-airframe"/>'), p = r.a.create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>', '<output class="note-status-output" role="status" aria-live="polite"/>'].join("")), m = r.a.create('<div class="note-btn-group btn-group">'), v = r.a.create('<div class="note-dropdown-menu dropdown-menu" role="list">', (function(t, e) { var n = Array.isArray(e.items) ? e.items.map((function(t) { var n = "string" == typeof t ? t : t.value || "", o = e.template ? e.template(t) : t, i = "object" === a(t) ? t.option : void 0; return '<a class="dropdown-item" href="#" ' + ('data-value="' + n + '"' + (void 0 !== i ? ' data-option="' + i + '"' : "")) + ' role="listitem" aria-label="' + n + '">' + o + "</a>" })).join("") : e.items; t.html(n).attr({ "aria-label": e.title }) })), g = function(t) { return t }, b = r.a.create('<div class="note-dropdown-menu dropdown-menu note-check" role="list">', (function(t, e) { var n = Array.isArray(e.items) ? e.items.map((function(t) { var n = "string" == typeof t ? t : t.value || "", o = e.template ? e.template(t) : t; return '<a class="dropdown-item" href="#" data-value="' + n + '" role="listitem" aria-label="' + t + '">' + C(e.checkClassName) + " " + o + "</a>" })).join("") : e.items; t.html(n).attr({ "aria-label": e.title }) })), y = r.a.create('<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>', (function(t, e) { e.fade && t.addClass("fade"), t.attr({ "aria-label": e.title }), t.html(['<div class="modal-dialog">', '<div class="modal-content">', e.title ? '<div class="modal-header"><h4 class="modal-title">' + e.title + '</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">&times;</button></div>' : "", '<div class="modal-body">' + e.body + "</div>", e.footer ? '<div class="modal-footer">' + e.footer + "</div>" : "", "</div>", "</div>"].join("")) })), k = r.a.create(['<div class="note-popover popover in">', '<div class="arrow"/>', '<div class="popover-content note-children-container"/>', "</div>"].join(""), (function(t, e) { var n = void 0 !== e.direction ? e.direction : "bottom"; t.addClass(n), e.hideArrow && t.find(".arrow").hide() })), w = r.a.create('<div class="form-check"></div>', (function(t, e) { t.html(['<label class="form-check-label"' + (e.id ? ' for="note-' + e.id + '"' : "") + ">", '<input type="checkbox" class="form-check-input"' + (e.id ? ' id="note-' + e.id + '"' : ""), e.checked ? " checked" : "", ' aria-label="' + (e.text ? e.text : "") + '"', ' aria-checked="' + (e.checked ? "true" : "false") + '"/>', " " + (e.text ? e.text : "") + "</label>"].join("")) })), C = function(t, e) { return "<" + (e = e || "i") + ' class="' + t + '"/>' }, x = function(t) { return { editor: s, toolbar: l, editingArea: c, codable: u, editable: d, statusbar: h, airEditor: f, airEditable: p, buttonGroup: m, dropdown: v, dropdownButtonContents: g, dropdownCheck: b, dialog: y, popover: k, icon: C, checkbox: w, options: t, palette: function(e, n) { return r.a.create('<div class="note-color-palette"/>', (function(e, n) { for (var o = [], i = 0, r = n.colors.length; i < r; i++) { for (var a = n.eventName, s = n.colors[i], l = n.colorsName[i], c = [], u = 0, d = s.length; u < d; u++) { var h = s[u], f = l[u]; c.push(['<button type="button" class="note-color-btn"', 'style="background-color:', h, '" ', 'data-event="', a, '" ', 'data-value="', h, '" ', 'title="', f, '" ', 'aria-label="', f, '" ', 'data-toggle="button" tabindex="-1"></button>'].join("")) } o.push('<div class="note-color-row">' + c.join("") + "</div>") } e.html(o.join("")), n.tooltip && e.find(".note-color-btn").tooltip({ container: n.container || t.container, trigger: "hover", placement: "bottom" }) }))(e, n) }, button: function(e, n) { return r.a.create('<button type="button" class="note-btn btn btn-light btn-sm" tabindex="-1">', (function(e, n) { n && n.tooltip && e.attr({ title: n.tooltip, "aria-label": n.tooltip }).tooltip({ container: n.container || t.container, trigger: "hover", placement: "bottom" }).on("click", (function(t) { i()(t.currentTarget).tooltip("hide") })) }))(e, n) }, toggleBtn: function(t, e) { t.toggleClass("disabled", !e), t.attr("disabled", !e) }, toggleBtnActive: function(t, e) { t.toggleClass("active", e) }, onDialogShown: function(t, e) { t.one("shown.bs.modal", e) }, onDialogHidden: function(t, e) { t.one("hidden.bs.modal", e) }, showDialog: function(t) { t.modal("show") }, hideDialog: function(t) { t.modal("hide") }, createLayout: function(e) { var n = (t.airMode ? f([c([u(), p()])]) : "bottom" === t.toolbarPosition ? s([c([u(), d()]), l(), h()]) : s([l(), c([u(), d()]), h()])).render(); return n.insertAfter(e), { note: e, editor: n, toolbar: n.find(".note-toolbar"), editingArea: n.find(".note-editing-area"), editable: n.find(".note-editable"), codable: n.find(".note-codable"), statusbar: n.find(".note-statusbar") } }, removeLayout: function(t, e) { t.html(e.editable.html()), e.editor.remove(), t.show() } } }; n(3), n(5); i.a.summernote = i.a.extend(i.a.summernote, { ui_template: x, interface: "bs4" }), i.a.summernote.options.styleTags = ["p", { title: "Blockquote", tag: "blockquote", className: "blockquote", value: "blockquote" }, "pre", "h1", "h2", "h3", "h4", "h5", "h6"] } }) })); //# sourceMappingURL=summernote-bs4.min.js.map