/*! For license information please see summernote.min.js.LICENSE.txt */
!(function (t, e) {
  if ("object" == typeof exports && "object" == typeof module) module.exports = e(require_once("jquery"));
  else if ("function" == typeof define && define.amd) define(["jquery"], e);
  else {
    var n = "object" == typeof exports ? e(require_once("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 = 52))
    );
  })({
    0: function (e, n) {
      e.exports = t;
    },
    1: function (t, e, n) {
      "use strict";
      var o = n(0),
        i = n.n(o);
      function r(t) {
        return (r =
          "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
            ? function (t) {
                return typeof t;
              }
            : function (t) {
                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t;
              })(t);
      }
      function a(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var s = (function () {
        function t(e, n, o, i) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.markup = e),
            (this.children = n),
            (this.options = o),
            (this.callback = i);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "render",
              value: function (t) {
                var e = i()(this.markup);
                if (
                  (this.options && this.options.contents && e.html(this.options.contents),
                  this.options && this.options.className && e.addClass(this.options.className),
                  this.options &&
                    this.options.data &&
                    i.a.each(this.options.data, function (t, n) {
                      e.attr("data-" + t, n);
                    }),
                  this.options && this.options.click && e.on("click", this.options.click),
                  this.children)
                ) {
                  var n = e.find(".note-children-container");
                  this.children.forEach(function (t) {
                    t.render(n.length ? n : e);
                  });
                }
                return this.callback && this.callback(e, this.options), this.options && this.options.callback && this.options.callback(e), t && t.append(e), e;
              },
            },
          ]) && a(e.prototype, n),
          o && a(e, o),
          t
        );
      })();
      e.a = {
        create: function (t, e) {
          return function () {
            var n = "object" === r(arguments[1]) ? arguments[1] : arguments[0],
              o = Array.isArray(arguments[0]) ? arguments[0] : [];
            return n && n.children && (o = n.children), new s(t, o, n, e);
          };
        },
      };
    },
    2: function (t, e) {
      (function (e) {
        t.exports = e;
      }).call(this, {});
    },
    3: function (t, e, n) {
      "use strict";
      var o = n(0),
        i = n.n(o);
      (i.a.summernote = i.a.summernote || { lang: {} }),
        i.a.extend(i.a.summernote.lang, {
          "en-US": {
            font: { bold: "Bold", italic: "Italic", underline: "Underline", clear: "Remove Font Style", height: "Line Height", name: "Font Family", strikethrough: "Strikethrough", subscript: "Subscript", superscript: "Superscript", size: "Font Size", sizeunit: "Font Size Unit" },
            image: {
              image: "Picture",
              insert: "Insert Image",
              resizeFull: "Resize full",
              resizeHalf: "Resize half",
              resizeQuarter: "Resize quarter",
              resizeNone: "Original size",
              floatLeft: "Float Left",
              floatRight: "Float Right",
              floatNone: "Remove float",
              shapeRounded: "Shape: Rounded",
              shapeCircle: "Shape: Circle",
              shapeThumbnail: "Shape: Thumbnail",
              shapeNone: "Shape: None",
              dragImageHere: "Drag image or text here",
              dropImage: "Drop image or Text",
              selectFromFiles: "Select from files",
              maximumFileSize: "Maximum file size",
              maximumFileSizeError: "Maximum file size exceeded.",
              url: "Image URL",
              remove: "Remove Image",
              original: "Original",
            },
            video: { video: "Video", videoLink: "Video Link", insert: "Insert Video", url: "Video URL", providers: "(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)" },
            link: { link: "Link", insert: "Insert Link", unlink: "Unlink", edit: "Edit", textToDisplay: "Text to display", url: "To what URL should this link go?", openInNewWindow: "Open in new window", useProtocol: "Use default protocol" },
            table: { table: "Table", addRowAbove: "Add row above", addRowBelow: "Add row below", addColLeft: "Add column left", addColRight: "Add column right", delRow: "Delete row", delCol: "Delete column", delTable: "Delete table" },
            hr: { insert: "Insert Horizontal Rule" },
            style: { style: "Style", p: "Normal", blockquote: "Quote", pre: "Code", h1: "Header 1", h2: "Header 2", h3: "Header 3", h4: "Header 4", h5: "Header 5", h6: "Header 6" },
            lists: { unordered: "Unordered list", ordered: "Ordered list" },
            options: { help: "Help", fullscreen: "Full Screen", codeview: "Code View" },
            paragraph: { paragraph: "Paragraph", outdent: "Outdent", indent: "Indent", left: "Align left", center: "Align center", right: "Align right", justify: "Justify full" },
            color: { recent: "Recent Color", more: "More Color", background: "Background Color", foreground: "Text Color", transparent: "Transparent", setTransparent: "Set transparent", reset: "Reset", resetToDefault: "Reset to default", cpSelect: "Select" },
            shortcut: { shortcuts: "Keyboard shortcuts", close: "Close", textFormatting: "Text formatting", action: "Action", paragraphFormatting: "Paragraph formatting", documentStyle: "Document Style", extraKeys: "Extra keys" },
            help: {
              escape: "Escape",
              insertParagraph: "Insert Paragraph",
              undo: "Undo the last command",
              redo: "Redo the last command",
              tab: "Tab",
              untab: "Untab",
              bold: "Set a bold style",
              italic: "Set a italic style",
              underline: "Set a underline style",
              strikethrough: "Set a strikethrough style",
              removeFormat: "Clean a style",
              justifyLeft: "Set left align",
              justifyCenter: "Set center align",
              justifyRight: "Set right align",
              justifyFull: "Set full align",
              insertUnorderedList: "Toggle unordered list",
              insertOrderedList: "Toggle ordered list",
              outdent: "Outdent on current paragraph",
              indent: "Indent on current paragraph",
              formatPara: "Change current block's format as a paragraph(P tag)",
              formatH1: "Change current block's format as H1",
              formatH2: "Change current block's format as H2",
              formatH3: "Change current block's format as H3",
              formatH4: "Change current block's format as H4",
              formatH5: "Change current block's format as H5",
              formatH6: "Change current block's format as H6",
              insertHorizontalRule: "Insert horizontal rule",
              "linkDialog.show": "Show Link Dialog",
            },
            history: { undo: "Undo", redo: "Redo" },
            specialChar: { specialChar: "SPECIAL CHARACTERS", select: "Select Special characters" },
            output: { noSelection: "No Selection Made!" },
          },
        });
      var r = "function" == typeof define && n(2),
        a = ["sans-serif", "serif", "monospace", "cursive", "fantasy"];
      function s(t) {
        return -1 === i.a.inArray(t.toLowerCase(), a) ? "'".concat(t, "'") : t;
      }
      var l,
        c = navigator.userAgent,
        u = /MSIE|Trident/i.test(c);
      if (u) {
        var d = /MSIE (\d+[.]\d+)/.exec(c);
        d && (l = parseFloat(d[1])), (d = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c)) && (l = parseFloat(d[1]));
      }
      var h = /Edge\/\d+/.test(c),
        f = "ontouchstart" in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0,
        p = u ? "DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted" : "input",
        m = {
          isMac: navigator.appVersion.indexOf("Mac") > -1,
          isMSIE: u,
          isEdge: h,
          isFF: !h && /firefox/i.test(c),
          isPhantom: /PhantomJS/i.test(c),
          isWebkit: !h && /webkit/i.test(c),
          isChrome: !h && /chrome/i.test(c),
          isSafari: !h && /safari/i.test(c) && !/chrome/i.test(c),
          browserVersion: l,
          jqueryVersion: parseFloat(i.a.fn.jquery),
          isSupportAmd: r,
          isSupportTouch: f,
          isFontInstalled: function (t) {
            var e = "Comic Sans MS" === t ? "Courier New" : "Comic Sans MS",
              n = document.createElement("canvas").getContext("2d");
            n.font = "200px '" + e + "'";
            var o = n.measureText("mmmmmmmmmmwwwww").width;
            return (n.font = "200px " + s(t) + ', "' + e + '"'), o !== n.measureText("mmmmmmmmmmwwwww").width;
          },
          isW3CRangeSupport: !!document.createRange,
          inputEventName: p,
          genericFontFamilies: a,
          validFontName: s,
        };
      var v = 0;
      var g = {
        eq: function (t) {
          return function (e) {
            return t === e;
          };
        },
        eq2: function (t, e) {
          return t === e;
        },
        peq2: function (t) {
          return function (e, n) {
            return e[t] === n[t];
          };
        },
        ok: function () {
          return !0;
        },
        fail: function () {
          return !1;
        },
        self: function (t) {
          return t;
        },
        not: function (t) {
          return function () {
            return !t.apply(t, arguments);
          };
        },
        and: function (t, e) {
          return function (n) {
            return t(n) && e(n);
          };
        },
        invoke: function (t, e) {
          return function () {
            return t[e].apply(t, arguments);
          };
        },
        resetUniqueId: function () {
          v = 0;
        },
        uniqueId: function (t) {
          var e = ++v + "";
          return t ? t + e : e;
        },
        rect2bnd: function (t) {
          var e = i()(document);
          return { top: t.top + e.scrollTop(), left: t.left + e.scrollLeft(), width: t.right - t.left, height: t.bottom - t.top };
        },
        invertObject: function (t) {
          var e = {};
          for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[t[n]] = n);
          return e;
        },
        namespaceToCamel: function (t, e) {
          return (
            (e = e || "") +
            t
              .split(".")
              .map(function (t) {
                return t.substring(0, 1).toUpperCase() + t.substring(1);
              })
              .join("")
          );
        },
        debounce: function (t, e, n) {
          var o;
          return function () {
            var i = this,
              r = arguments,
              a = function () {
                (o = null), n || t.apply(i, r);
              },
              s = n && !o;
            clearTimeout(o), (o = setTimeout(a, e)), s && t.apply(i, r);
          };
        },
        isValidUrl: function (t) {
          return /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t);
        },
      };
      function b(t) {
        return t[0];
      }
      function y(t) {
        return t[t.length - 1];
      }
      function k(t) {
        return t.slice(1);
      }
      function w(t, e) {
        if (t && t.length && e) {
          if (t.indexOf) return -1 !== t.indexOf(e);
          if (t.contains) return t.contains(e);
        }
        return !1;
      }
      var C = {
          head: b,
          last: y,
          initial: function (t) {
            return t.slice(0, t.length - 1);
          },
          tail: k,
          prev: function (t, e) {
            if (t && t.length && e) {
              var n = t.indexOf(e);
              return -1 === n ? null : t[n - 1];
            }
            return null;
          },
          next: function (t, e) {
            if (t && t.length && e) {
              var n = t.indexOf(e);
              return -1 === n ? null : t[n + 1];
            }
            return null;
          },
          find: function (t, e) {
            for (var n = 0, o = t.length; n < o; n++) {
              var i = t[n];
              if (e(i)) return i;
            }
          },
          contains: w,
          all: function (t, e) {
            for (var n = 0, o = t.length; n < o; n++) if (!e(t[n])) return !1;
            return !0;
          },
          sum: function (t, e) {
            return (
              (e = e || g.self),
              t.reduce(function (t, n) {
                return t + e(n);
              }, 0)
            );
          },
          from: function (t) {
            for (var e = [], n = t.length, o = -1; ++o < n; ) e[o] = t[o];
            return e;
          },
          isEmpty: function (t) {
            return !t || !t.length;
          },
          clusterBy: function (t, e) {
            return t.length
              ? k(t).reduce(
                  function (t, n) {
                    var o = y(t);
                    return e(y(o), n) ? (o[o.length] = n) : (t[t.length] = [n]), t;
                  },
                  [[b(t)]]
                )
              : [];
          },
          compact: function (t) {
            for (var e = [], n = 0, o = t.length; n < o; n++) t[n] && e.push(t[n]);
            return e;
          },
          unique: function (t) {
            for (var e = [], n = 0, o = t.length; n < o; n++) w(e, t[n]) || e.push(t[n]);
            return e;
          },
        },
        x = String.fromCharCode(160);
      function S(t) {
        return t && i()(t).hasClass("note-editable");
      }
      function T(t) {
        return (
          (t = t.toUpperCase()),
          function (e) {
            return e && e.nodeName.toUpperCase() === t;
          }
        );
      }
      function E(t) {
        return t && 3 === t.nodeType;
      }
      function I(t) {
        return t && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase());
      }
      function $(t) {
        return !S(t) && t && /^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase());
      }
      var N = T("PRE"),
        P = T("LI");
      var R = T("TABLE"),
        L = T("DATA");
      function A(t) {
        return !(B(t) || F(t) || D(t) || $(t) || R(t) || z(t) || L(t));
      }
      function F(t) {
        return t && /^UL|^OL/.test(t.nodeName.toUpperCase());
      }
      var D = T("HR");
      function H(t) {
        return t && /^TD|^TH/.test(t.nodeName.toUpperCase());
      }
      var z = T("BLOCKQUOTE");
      function B(t) {
        return H(t) || z(t) || S(t);
      }
      var M = T("A");
      var O = T("BODY");
      var j = m.isMSIE && m.browserVersion < 11 ? "&nbsp;" : "<br>";
      function U(t) {
        return E(t) ? t.nodeValue.length : t ? t.childNodes.length : 0;
      }
      function W(t) {
        var e = U(t);
        return 0 === e || (!E(t) && 1 === e && t.innerHTML === j) || !(!C.all(t.childNodes, E) || "" !== t.innerHTML);
      }
      function K(t) {
        I(t) || U(t) || (t.innerHTML = j);
      }
      function V(t, e) {
        for (; t; ) {
          if (e(t)) return t;
          if (S(t)) break;
          t = t.parentNode;
        }
        return null;
      }
      function q(t, e) {
        e = e || g.fail;
        var n = [];
        return (
          V(t, function (t) {
            return S(t) || n.push(t), e(t);
          }),
          n
        );
      }
      function _(t, e) {
        e = e || g.fail;
        for (var n = []; t && !e(t); ) n.push(t), (t = t.nextSibling);
        return n;
      }
      function G(t, e) {
        var n = e.nextSibling,
          o = e.parentNode;
        return n ? o.insertBefore(t, n) : o.appendChild(t), t;
      }
      function Y(t, e) {
        return (
          i.a.each(e, function (e, n) {
            t.appendChild(n);
          }),
          t
        );
      }
      function Z(t) {
        return 0 === t.offset;
      }
      function X(t) {
        return t.offset === U(t.node);
      }
      function Q(t) {
        return Z(t) || X(t);
      }
      function J(t, e) {
        for (; t && t !== e; ) {
          if (0 !== et(t)) return !1;
          t = t.parentNode;
        }
        return !0;
      }
      function tt(t, e) {
        if (!e) return !1;
        for (; t && t !== e; ) {
          if (et(t) !== U(t.parentNode) - 1) return !1;
          t = t.parentNode;
        }
        return !0;
      }
      function et(t) {
        for (var e = 0; (t = t.previousSibling); ) e += 1;
        return e;
      }
      function nt(t) {
        return !!(t && t.childNodes && t.childNodes.length);
      }
      function ot(t, e) {
        var n, o;
        if (0 === t.offset) {
          if (S(t.node)) return null;
          (n = t.node.parentNode), (o = et(t.node));
        } else nt(t.node) ? (o = U((n = t.node.childNodes[t.offset - 1]))) : ((n = t.node), (o = e ? 0 : t.offset - 1));
        return { node: n, offset: o };
      }
      function it(t, e) {
        var n, o;
        if (U(t.node) === t.offset) {
          if (S(t.node)) return null;
          var i = at(t.node);
          i ? ((n = i), (o = 0)) : ((n = t.node.parentNode), (o = et(t.node) + 1));
        } else nt(t.node) ? ((n = t.node.childNodes[t.offset]), (o = 0)) : ((n = t.node), (o = e ? U(t.node) : t.offset + 1));
        return { node: n, offset: o };
      }
      function rt(t, e) {
        var n, o;
        if (W(t.node)) return { node: (n = t.node.nextSibling), offset: (o = 0) };
        if (U(t.node) === t.offset) {
          if (S(t.node)) return null;
          var i = at(t.node);
          i ? ((n = i), (o = 0)) : ((n = t.node.parentNode), (o = et(t.node) + 1)), S(n) && ((n = t.node.nextSibling), (o = 0));
        } else if (nt(t.node)) {
          if (((o = 0), W((n = t.node.childNodes[t.offset])))) return null;
        } else if (((n = t.node), (o = e ? U(t.node) : t.offset + 1), W(n))) return null;
        return { node: n, offset: o };
      }
      function at(t) {
        if (t.nextSibling && t.parent === t.nextSibling.parent) return E(t.nextSibling) ? t.nextSibling : at(t.nextSibling);
      }
      function st(t, e) {
        return t.node === e.node && t.offset === e.offset;
      }
      function lt(t, e) {
        var n = e && e.isSkipPaddingBlankHTML,
          o = e && e.isNotSplitEdgePoint,
          i = e && e.isDiscardEmptySplits;
        if ((i && (n = !0), Q(t) && (E(t.node) || o))) {
          if (Z(t)) return t.node;
          if (X(t)) return t.node.nextSibling;
        }
        if (E(t.node)) return t.node.splitText(t.offset);
        var r = t.node.childNodes[t.offset],
          a = G(t.node.cloneNode(!1), t.node);
        return Y(a, _(r)), n || (K(t.node), K(a)), i && (W(t.node) && dt(t.node), W(a)) ? (dt(a), t.node.nextSibling) : a;
      }
      function ct(t, e, n) {
        var o = q(e.node, g.eq(t));
        return o.length
          ? 1 === o.length
            ? lt(e, n)
            : o.reduce(function (t, o) {
                return t === e.node && (t = lt(e, n)), lt({ node: o, offset: t ? et(t) : U(o) }, n);
              })
          : null;
      }
      function ut(t) {
        return document.createElement(t);
      }
      function dt(t, e) {
        if (t && t.parentNode) {
          if (t.removeNode) return t.removeNode(e);
          var n = t.parentNode;
          if (!e) {
            for (var o = [], i = 0, r = t.childNodes.length; i < r; i++) o.push(t.childNodes[i]);
            for (var a = 0, s = o.length; a < s; a++) n.insertBefore(o[a], t);
          }
          n.removeChild(t);
        }
      }
      var ht = T("TEXTAREA");
      function ft(t, e) {
        var n = ht(t[0]) ? t.val() : t.html();
        return e ? n.replace(/[\n\r]/g, "") : n;
      }
      var pt = {
        NBSP_CHAR: x,
        ZERO_WIDTH_NBSP_CHAR: "\ufeff",
        blank: j,
        emptyPara: "<p>".concat(j, "</p>"),
        makePredByNodeName: T,
        isEditable: S,
        isControlSizing: function (t) {
          return t && i()(t).hasClass("note-control-sizing");
        },
        isText: E,
        isElement: function (t) {
          return t && 1 === t.nodeType;
        },
        isVoid: I,
        isPara: $,
        isPurePara: function (t) {
          return $(t) && !P(t);
        },
        isHeading: function (t) {
          return t && /^H[1-7]/.test(t.nodeName.toUpperCase());
        },
        isInline: A,
        isBlock: g.not(A),
        isBodyInline: function (t) {
          return A(t) && !V(t, $);
        },
        isBody: O,
        isParaInline: function (t) {
          return A(t) && !!V(t, $);
        },
        isPre: N,
        isList: F,
        isTable: R,
        isData: L,
        isCell: H,
        isBlockquote: z,
        isBodyContainer: B,
        isAnchor: M,
        isDiv: T("DIV"),
        isLi: P,
        isBR: T("BR"),
        isSpan: T("SPAN"),
        isB: T("B"),
        isU: T("U"),
        isS: T("S"),
        isI: T("I"),
        isImg: T("IMG"),
        isTextarea: ht,
        deepestChildIsEmpty: function (t) {
          do {
            if (null === t.firstElementChild || "" === t.firstElementChild.innerHTML) break;
          } while ((t = t.firstElementChild));
          return W(t);
        },
        isEmpty: W,
        isEmptyAnchor: g.and(M, W),
        isClosestSibling: function (t, e) {
          return t.nextSibling === e || t.previousSibling === e;
        },
        withClosestSiblings: function (t, e) {
          e = e || g.ok;
          var n = [];
          return t.previousSibling && e(t.previousSibling) && n.push(t.previousSibling), n.push(t), t.nextSibling && e(t.nextSibling) && n.push(t.nextSibling), n;
        },
        nodeLength: U,
        isLeftEdgePoint: Z,
        isRightEdgePoint: X,
        isEdgePoint: Q,
        isLeftEdgeOf: J,
        isRightEdgeOf: tt,
        isLeftEdgePointOf: function (t, e) {
          return Z(t) && J(t.node, e);
        },
        isRightEdgePointOf: function (t, e) {
          return X(t) && tt(t.node, e);
        },
        prevPoint: ot,
        nextPoint: it,
        nextPointWithEmptyNode: rt,
        isSamePoint: st,
        isVisiblePoint: function (t) {
          if (E(t.node) || !nt(t.node) || W(t.node)) return !0;
          var e = t.node.childNodes[t.offset - 1],
            n = t.node.childNodes[t.offset];
          return !((e && !I(e)) || (n && !I(n)));
        },
        prevPointUntil: function (t, e) {
          for (; t; ) {
            if (e(t)) return t;
            t = ot(t);
          }
          return null;
        },
        nextPointUntil: function (t, e) {
          for (; t; ) {
            if (e(t)) return t;
            t = it(t);
          }
          return null;
        },
        isCharPoint: function (t) {
          if (!E(t.node)) return !1;
          var e = t.node.nodeValue.charAt(t.offset - 1);
          return e && " " !== e && e !== x;
        },
        isSpacePoint: function (t) {
          if (!E(t.node)) return !1;
          var e = t.node.nodeValue.charAt(t.offset - 1);
          return " " === e || e === x;
        },
        walkPoint: function (t, e, n, o) {
          for (var i = t; i && (n(i), !st(i, e)); ) {
            i = rt(i, o && t.node !== i.node && e.node !== i.node);
          }
        },
        ancestor: V,
        singleChildAncestor: function (t, e) {
          for (t = t.parentNode; t && 1 === U(t); ) {
            if (e(t)) return t;
            if (S(t)) break;
            t = t.parentNode;
          }
          return null;
        },
        listAncestor: q,
        lastAncestor: function (t, e) {
          var n = q(t);
          return C.last(n.filter(e));
        },
        listNext: _,
        listPrev: function (t, e) {
          e = e || g.fail;
          for (var n = []; t && !e(t); ) n.push(t), (t = t.previousSibling);
          return n;
        },
        listDescendant: function (t, e) {
          var n = [];
          return (
            (e = e || g.ok),
            (function o(i) {
              t !== i && e(i) && n.push(i);
              for (var r = 0, a = i.childNodes.length; r < a; r++) o(i.childNodes[r]);
            })(t),
            n
          );
        },
        commonAncestor: function (t, e) {
          for (var n = q(t), o = e; o; o = o.parentNode) if (n.indexOf(o) > -1) return o;
          return null;
        },
        wrap: function (t, e) {
          var n = t.parentNode,
            o = i()("<" + e + ">")[0];
          return n.insertBefore(o, t), o.appendChild(t), o;
        },
        insertAfter: G,
        appendChildNodes: Y,
        position: et,
        hasChildren: nt,
        makeOffsetPath: function (t, e) {
          return q(e, g.eq(t)).map(et).reverse();
        },
        fromOffsetPath: function (t, e) {
          for (var n = t, o = 0, i = e.length; o < i; o++) n = n.childNodes.length <= e[o] ? n.childNodes[n.childNodes.length - 1] : n.childNodes[e[o]];
          return n;
        },
        splitTree: ct,
        splitPoint: function (t, e) {
          var n,
            o,
            i = e ? $ : B,
            r = q(t.node, i),
            a = C.last(r) || t.node;
          i(a) ? ((n = r[r.length - 2]), (o = a)) : (o = (n = a).parentNode);
          var s = n && ct(n, t, { isSkipPaddingBlankHTML: e, isNotSplitEdgePoint: e });
          return s || o !== t.node || (s = t.node.childNodes[t.offset]), { rightNode: s, container: o };
        },
        create: ut,
        createText: function (t) {
          return document.createTextNode(t);
        },
        remove: dt,
        removeWhile: function (t, e) {
          for (; t && !S(t) && e(t); ) {
            var n = t.parentNode;
            dt(t), (t = n);
          }
        },
        replace: function (t, e) {
          if (t.nodeName.toUpperCase() === e.toUpperCase()) return t;
          var n = ut(e);
          return t.style.cssText && (n.style.cssText = t.style.cssText), Y(n, C.from(t.childNodes)), G(n, t), dt(t), n;
        },
        html: function (t, e) {
          var n = ft(t);
          if (e) {
            n = (n = n.replace(/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g, function (t, e, n) {
              n = n.toUpperCase();
              var o = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n) && !!e,
                i = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n);
              return t + (o || i ? "\n" : "");
            })).trim();
          }
          return n;
        },
        value: ft,
        posFromPlaceholder: function (t) {
          var e = i()(t),
            n = e.offset(),
            o = e.outerHeight(!0);
          return { left: n.left, top: n.top + o };
        },
        attachEvents: function (t, e) {
          Object.keys(e).forEach(function (n) {
            t.on(n, e[n]);
          });
        },
        detachEvents: function (t, e) {
          Object.keys(e).forEach(function (n) {
            t.off(n, e[n]);
          });
        },
        isCustomStyleTag: function (t) {
          return t && !E(t) && C.contains(t.classList, "note-styletag");
        },
      };
      function mt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var vt = (function () {
        function t(e, n) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.$note = e),
            (this.memos = {}),
            (this.modules = {}),
            (this.layoutInfo = {}),
            (this.options = i.a.extend(!0, {}, n)),
            (i.a.summernote.ui = i.a.summernote.ui_template(this.options)),
            (this.ui = i.a.summernote.ui),
            this.initialize();
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                return (this.layoutInfo = this.ui.createLayout(this.$note)), this._initialize(), this.$note.hide(), this;
              },
            },
            {
              key: "destroy",
              value: function () {
                this._destroy(), this.$note.removeData("summernote"), this.ui.removeLayout(this.$note, this.layoutInfo);
              },
            },
            {
              key: "reset",
              value: function () {
                var t = this.isDisabled();
                this.code(pt.emptyPara), this._destroy(), this._initialize(), t && this.disable();
              },
            },
            {
              key: "_initialize",
              value: function () {
                var t = this;
                (this.options.id = g.uniqueId(i.a.now())), (this.options.container = this.options.container || this.layoutInfo.editor);
                var e = i.a.extend({}, this.options.buttons);
                Object.keys(e).forEach(function (n) {
                  t.memo("button." + n, e[n]);
                });
                var n = i.a.extend({}, this.options.modules, i.a.summernote.plugins || {});
                Object.keys(n).forEach(function (e) {
                  t.module(e, n[e], !0);
                }),
                  Object.keys(this.modules).forEach(function (e) {
                    t.initializeModule(e);
                  });
              },
            },
            {
              key: "_destroy",
              value: function () {
                var t = this;
                Object.keys(this.modules)
                  .reverse()
                  .forEach(function (e) {
                    t.removeModule(e);
                  }),
                  Object.keys(this.memos).forEach(function (e) {
                    t.removeMemo(e);
                  }),
                  this.triggerEvent("destroy", this);
              },
            },
            {
              key: "code",
              value: function (t) {
                var e = this.invoke("codeview.isActivated");
                if (void 0 === t) return this.invoke("codeview.sync"), e ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();
                e ? this.invoke("codeview.sync", t) : this.layoutInfo.editable.html(t), this.$note.val(t), this.triggerEvent("change", t, this.layoutInfo.editable);
              },
            },
            {
              key: "isDisabled",
              value: function () {
                return "false" === this.layoutInfo.editable.attr("contenteditable");
              },
            },
            {
              key: "enable",
              value: function () {
                this.layoutInfo.editable.attr("contenteditable", !0), this.invoke("toolbar.activate", !0), this.triggerEvent("disable", !1), (this.options.editing = !0);
              },
            },
            {
              key: "disable",
              value: function () {
                this.invoke("codeview.isActivated") && this.invoke("codeview.deactivate"), this.layoutInfo.editable.attr("contenteditable", !1), (this.options.editing = !1), this.invoke("toolbar.deactivate", !0), this.triggerEvent("disable", !0);
              },
            },
            {
              key: "triggerEvent",
              value: function () {
                var t = C.head(arguments),
                  e = C.tail(C.from(arguments)),
                  n = this.options.callbacks[g.namespaceToCamel(t, "on")];
                n && n.apply(this.$note[0], e), this.$note.trigger("summernote." + t, e);
              },
            },
            {
              key: "initializeModule",
              value: function (t) {
                var e = this.modules[t];
                (e.shouldInitialize = e.shouldInitialize || g.ok), e.shouldInitialize() && (e.initialize && e.initialize(), e.events && pt.attachEvents(this.$note, e.events));
              },
            },
            {
              key: "module",
              value: function (t, e, n) {
                if (1 === arguments.length) return this.modules[t];
                (this.modules[t] = new e(this)), n || this.initializeModule(t);
              },
            },
            {
              key: "removeModule",
              value: function (t) {
                var e = this.modules[t];
                e.shouldInitialize() && (e.events && pt.detachEvents(this.$note, e.events), e.destroy && e.destroy()), delete this.modules[t];
              },
            },
            {
              key: "memo",
              value: function (t, e) {
                if (1 === arguments.length) return this.memos[t];
                this.memos[t] = e;
              },
            },
            {
              key: "removeMemo",
              value: function (t) {
                this.memos[t] && this.memos[t].destroy && this.memos[t].destroy(), delete this.memos[t];
              },
            },
            {
              key: "createInvokeHandlerAndUpdateState",
              value: function (t, e) {
                var n = this;
                return function (o) {
                  n.createInvokeHandler(t, e)(o), n.invoke("buttons.updateCurrentStyle");
                };
              },
            },
            {
              key: "createInvokeHandler",
              value: function (t, e) {
                var n = this;
                return function (o) {
                  o.preventDefault();
                  var r = i()(o.target);
                  n.invoke(t, e || r.closest("[data-value]").data("value"), r);
                };
              },
            },
            {
              key: "invoke",
              value: function () {
                var t = C.head(arguments),
                  e = C.tail(C.from(arguments)),
                  n = t.split("."),
                  o = n.length > 1,
                  i = o && C.head(n),
                  r = o ? C.last(n) : C.head(n),
                  a = this.modules[i || "editor"];
                return !i && this[r] ? this[r].apply(this, e) : a && a[r] && a.shouldInitialize() ? a[r].apply(a, e) : void 0;
              },
            },
          ]) && mt(e.prototype, n),
          o && mt(e, o),
          t
        );
      })();
      function gt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      function bt(t, e) {
        var n,
          o,
          i = t.parentElement(),
          r = document.body.createTextRange(),
          a = C.from(i.childNodes);
        for (n = 0; n < a.length; n++)
          if (!pt.isText(a[n])) {
            if ((r.moveToElementText(a[n]), r.compareEndPoints("StartToStart", t) >= 0)) break;
            o = a[n];
          }
        if (0 !== n && pt.isText(a[n - 1])) {
          var s = document.body.createTextRange(),
            l = null;
          s.moveToElementText(o || i), s.collapse(!o), (l = o ? o.nextSibling : i.firstChild);
          var c = t.duplicate();
          c.setEndPoint("StartToStart", s);
          for (var u = c.text.replace(/[\r\n]/g, "").length; u > l.nodeValue.length && l.nextSibling; ) (u -= l.nodeValue.length), (l = l.nextSibling);
          l.nodeValue;
          e && l.nextSibling && pt.isText(l.nextSibling) && u === l.nodeValue.length && ((u -= l.nodeValue.length), (l = l.nextSibling)), (i = l), (n = u);
        }
        return { cont: i, offset: n };
      }
      function yt(t) {
        var e = document.body.createTextRange(),
          n = (function t(e, n) {
            var o, i;
            if (pt.isText(e)) {
              var r = pt.listPrev(e, g.not(pt.isText)),
                a = C.last(r).previousSibling;
              (o = a || e.parentNode), (n += C.sum(C.tail(r), pt.nodeLength)), (i = !a);
            } else {
              if (((o = e.childNodes[n] || e), pt.isText(o))) return t(o, 0);
              (n = 0), (i = !1);
            }
            return { node: o, collapseToStart: i, offset: n };
          })(t.node, t.offset);
        return e.moveToElementText(n.node), e.collapse(n.collapseToStart), e.moveStart("character", n.offset), e;
      }
      i.a.fn.extend({
        summernote: function () {
          var t = i.a.type(C.head(arguments)),
            e = "string" === t,
            n = "object" === t,
            o = i.a.extend({}, i.a.summernote.options, n ? C.head(arguments) : {});
          (o.langInfo = i.a.extend(!0, {}, i.a.summernote.lang["en-US"], i.a.summernote.lang[o.lang])),
            (o.icons = i.a.extend(!0, {}, i.a.summernote.options.icons, o.icons)),
            (o.tooltip = "auto" === o.tooltip ? !m.isSupportTouch : o.tooltip),
            this.each(function (t, e) {
              var n = i()(e);
              if (!n.data("summernote")) {
                var r = new vt(n, o);
                n.data("summernote", r), n.data("summernote").triggerEvent("init", r.layoutInfo);
              }
            });
          var r = this.first();
          if (r.length) {
            var a = r.data("summernote");
            if (e) return a.invoke.apply(a, C.from(arguments));
            o.focus && a.invoke("editor.focus");
          }
          return this;
        },
      });
      var kt = (function () {
          function t(e, n, o, i) {
            !(function (t, e) {
              if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
            })(this, t),
              (this.sc = e),
              (this.so = n),
              (this.ec = o),
              (this.eo = i),
              (this.isOnEditable = this.makeIsOn(pt.isEditable)),
              (this.isOnList = this.makeIsOn(pt.isList)),
              (this.isOnAnchor = this.makeIsOn(pt.isAnchor)),
              (this.isOnCell = this.makeIsOn(pt.isCell)),
              (this.isOnData = this.makeIsOn(pt.isData));
          }
          var e, n, o;
          return (
            (e = t),
            (n = [
              {
                key: "nativeRange",
                value: function () {
                  if (m.isW3CRangeSupport) {
                    var t = document.createRange();
                    return t.setStart(this.sc, this.so), t.setEnd(this.ec, this.eo), t;
                  }
                  var e = yt({ node: this.sc, offset: this.so });
                  return e.setEndPoint("EndToEnd", yt({ node: this.ec, offset: this.eo })), e;
                },
              },
              {
                key: "getPoints",
                value: function () {
                  return { sc: this.sc, so: this.so, ec: this.ec, eo: this.eo };
                },
              },
              {
                key: "getStartPoint",
                value: function () {
                  return { node: this.sc, offset: this.so };
                },
              },
              {
                key: "getEndPoint",
                value: function () {
                  return { node: this.ec, offset: this.eo };
                },
              },
              {
                key: "select",
                value: function () {
                  var t = this.nativeRange();
                  if (m.isW3CRangeSupport) {
                    var e = document.getSelection();
                    e.rangeCount > 0 && e.removeAllRanges(), e.addRange(t);
                  } else t.select();
                  return this;
                },
              },
              {
                key: "scrollIntoView",
                value: function (t) {
                  var e = i()(t).height();
                  return t.scrollTop + e < this.sc.offsetTop && (t.scrollTop += Math.abs(t.scrollTop + e - this.sc.offsetTop)), this;
                },
              },
              {
                key: "normalize",
                value: function () {
                  var e = function (t, e) {
                      if (!t) return t;
                      if (
                        pt.isVisiblePoint(t) &&
                        (!pt.isEdgePoint(t) || (pt.isRightEdgePoint(t) && !e) || (pt.isLeftEdgePoint(t) && e) || (pt.isRightEdgePoint(t) && e && pt.isVoid(t.node.nextSibling)) || (pt.isLeftEdgePoint(t) && !e && pt.isVoid(t.node.previousSibling)) || (pt.isBlock(t.node) && pt.isEmpty(t.node)))
                      )
                        return t;
                      var n = pt.ancestor(t.node, pt.isBlock),
                        o = !1;
                      if (!o) {
                        var i = pt.prevPoint(t) || { node: null };
                        o = (pt.isLeftEdgePointOf(t, n) || pt.isVoid(i.node)) && !e;
                      }
                      var r = !1;
                      if (!r) {
                        var a = pt.nextPoint(t) || { node: null };
                        r = (pt.isRightEdgePointOf(t, n) || pt.isVoid(a.node)) && e;
                      }
                      if (o || r) {
                        if (pt.isVisiblePoint(t)) return t;
                        e = !e;
                      }
                      return (e ? pt.nextPointUntil(pt.nextPoint(t), pt.isVisiblePoint) : pt.prevPointUntil(pt.prevPoint(t), pt.isVisiblePoint)) || t;
                    },
                    n = e(this.getEndPoint(), !1),
                    o = this.isCollapsed() ? n : e(this.getStartPoint(), !0);
                  return new t(o.node, o.offset, n.node, n.offset);
                },
              },
              {
                key: "nodes",
                value: function (t, e) {
                  t = t || g.ok;
                  var n = e && e.includeAncestor,
                    o = e && e.fullyContains,
                    i = this.getStartPoint(),
                    r = this.getEndPoint(),
                    a = [],
                    s = [];
                  return (
                    pt.walkPoint(
                      i,
                      r,
                      function (e) {
                        var i;
                        pt.isEditable(e.node) || (o ? (pt.isLeftEdgePoint(e) && s.push(e.node), pt.isRightEdgePoint(e) && C.contains(s, e.node) && (i = e.node)) : (i = n ? pt.ancestor(e.node, t) : e.node), i && t(i) && a.push(i));
                      },
                      !0
                    ),
                    C.unique(a)
                  );
                },
              },
              {
                key: "commonAncestor",
                value: function () {
                  return pt.commonAncestor(this.sc, this.ec);
                },
              },
              {
                key: "expand",
                value: function (e) {
                  var n = pt.ancestor(this.sc, e),
                    o = pt.ancestor(this.ec, e);
                  if (!n && !o) return new t(this.sc, this.so, this.ec, this.eo);
                  var i = this.getPoints();
                  return n && ((i.sc = n), (i.so = 0)), o && ((i.ec = o), (i.eo = pt.nodeLength(o))), new t(i.sc, i.so, i.ec, i.eo);
                },
              },
              {
                key: "collapse",
                value: function (e) {
                  return e ? new t(this.sc, this.so, this.sc, this.so) : new t(this.ec, this.eo, this.ec, this.eo);
                },
              },
              {
                key: "splitText",
                value: function () {
                  var e = this.sc === this.ec,
                    n = this.getPoints();
                  return (
                    pt.isText(this.ec) && !pt.isEdgePoint(this.getEndPoint()) && this.ec.splitText(this.eo),
                    pt.isText(this.sc) && !pt.isEdgePoint(this.getStartPoint()) && ((n.sc = this.sc.splitText(this.so)), (n.so = 0), e && ((n.ec = n.sc), (n.eo = this.eo - this.so))),
                    new t(n.sc, n.so, n.ec, n.eo)
                  );
                },
              },
              {
                key: "deleteContents",
                value: function () {
                  if (this.isCollapsed()) return this;
                  var e = this.splitText(),
                    n = e.nodes(null, { fullyContains: !0 }),
                    o = pt.prevPointUntil(e.getStartPoint(), function (t) {
                      return !C.contains(n, t.node);
                    }),
                    r = [];
                  return (
                    i.a.each(n, function (t, e) {
                      var n = e.parentNode;
                      o.node !== n && 1 === pt.nodeLength(n) && r.push(n), pt.remove(e, !1);
                    }),
                    i.a.each(r, function (t, e) {
                      pt.remove(e, !1);
                    }),
                    new t(o.node, o.offset, o.node, o.offset).normalize()
                  );
                },
              },
              {
                key: "makeIsOn",
                value: function (t) {
                  return function () {
                    var e = pt.ancestor(this.sc, t);
                    return !!e && e === pt.ancestor(this.ec, t);
                  };
                },
              },
              {
                key: "isLeftEdgeOf",
                value: function (t) {
                  if (!pt.isLeftEdgePoint(this.getStartPoint())) return !1;
                  var e = pt.ancestor(this.sc, t);
                  return e && pt.isLeftEdgeOf(this.sc, e);
                },
              },
              {
                key: "isCollapsed",
                value: function () {
                  return this.sc === this.ec && this.so === this.eo;
                },
              },
              {
                key: "wrapBodyInlineWithPara",
                value: function () {
                  if (pt.isBodyContainer(this.sc) && pt.isEmpty(this.sc)) return (this.sc.innerHTML = pt.emptyPara), new t(this.sc.firstChild, 0, this.sc.firstChild, 0);
                  var e,
                    n = this.normalize();
                  if (pt.isParaInline(this.sc) || pt.isPara(this.sc)) return n;
                  if (pt.isInline(n.sc)) {
                    var o = pt.listAncestor(n.sc, g.not(pt.isInline));
                    (e = C.last(o)), pt.isInline(e) || (e = o[o.length - 2] || n.sc.childNodes[n.so]);
                  } else e = n.sc.childNodes[n.so > 0 ? n.so - 1 : 0];
                  if (e) {
                    var i = pt.listPrev(e, pt.isParaInline).reverse();
                    if ((i = i.concat(pt.listNext(e.nextSibling, pt.isParaInline))).length) {
                      var r = pt.wrap(C.head(i), "p");
                      pt.appendChildNodes(r, C.tail(i));
                    }
                  }
                  return this.normalize();
                },
              },
              {
                key: "insertNode",
                value: function (t) {
                  var e = this;
                  (pt.isText(t) || pt.isInline(t)) && (e = this.wrapBodyInlineWithPara().deleteContents());
                  var n = pt.splitPoint(e.getStartPoint(), pt.isInline(t));
                  return n.rightNode ? (n.rightNode.parentNode.insertBefore(t, n.rightNode), pt.isEmpty(n.rightNode) && pt.isPara(t) && n.rightNode.parentNode.removeChild(n.rightNode)) : n.container.appendChild(t), t;
                },
              },
              {
                key: "pasteHTML",
                value: function (t) {
                  t = i.a.trim(t);
                  var e = i()("<div></div>").html(t)[0],
                    n = C.from(e.childNodes),
                    o = this,
                    r = !1;
                  return (
                    o.so >= 0 && ((n = n.reverse()), (r = !0)),
                    (n = n.map(function (t) {
                      return o.insertNode(t);
                    })),
                    r && (n = n.reverse()),
                    n
                  );
                },
              },
              {
                key: "toString",
                value: function () {
                  var t = this.nativeRange();
                  return m.isW3CRangeSupport ? t.toString() : t.text;
                },
              },
              {
                key: "getWordRange",
                value: function (e) {
                  var n = this.getEndPoint();
                  if (!pt.isCharPoint(n)) return this;
                  var o = pt.prevPointUntil(n, function (t) {
                    return !pt.isCharPoint(t);
                  });
                  return (
                    e &&
                      (n = pt.nextPointUntil(n, function (t) {
                        return !pt.isCharPoint(t);
                      })),
                    new t(o.node, o.offset, n.node, n.offset)
                  );
                },
              },
              {
                key: "getWordsRange",
                value: function (e) {
                  var n = this.getEndPoint(),
                    o = function (t) {
                      return !pt.isCharPoint(t) && !pt.isSpacePoint(t);
                    };
                  if (o(n)) return this;
                  var i = pt.prevPointUntil(n, o);
                  return e && (n = pt.nextPointUntil(n, o)), new t(i.node, i.offset, n.node, n.offset);
                },
              },
              {
                key: "getWordsMatchRange",
                value: function (e) {
                  var n = this.getEndPoint(),
                    o = pt.prevPointUntil(n, function (o) {
                      if (!pt.isCharPoint(o) && !pt.isSpacePoint(o)) return !0;
                      var i = new t(o.node, o.offset, n.node, n.offset),
                        r = e.exec(i.toString());
                      return r && 0 === r.index;
                    }),
                    i = new t(o.node, o.offset, n.node, n.offset),
                    r = i.toString(),
                    a = e.exec(r);
                  return a && a[0].length === r.length ? i : null;
                },
              },
              {
                key: "bookmark",
                value: function (t) {
                  return { s: { path: pt.makeOffsetPath(t, this.sc), offset: this.so }, e: { path: pt.makeOffsetPath(t, this.ec), offset: this.eo } };
                },
              },
              {
                key: "paraBookmark",
                value: function (t) {
                  return { s: { path: C.tail(pt.makeOffsetPath(C.head(t), this.sc)), offset: this.so }, e: { path: C.tail(pt.makeOffsetPath(C.last(t), this.ec)), offset: this.eo } };
                },
              },
              {
                key: "getClientRects",
                value: function () {
                  return this.nativeRange().getClientRects();
                },
              },
            ]) && gt(e.prototype, n),
            o && gt(e, o),
            t
          );
        })(),
        wt = {
          create: function (t, e, n, o) {
            if (4 === arguments.length) return new kt(t, e, n, o);
            if (2 === arguments.length) return new kt(t, e, (n = t), (o = e));
            var i = this.createFromSelection();
            if (!i && 1 === arguments.length) {
              var r = arguments[0];
              return pt.isEditable(r) && (r = r.lastChild), this.createFromBodyElement(r, pt.emptyPara === arguments[0].innerHTML);
            }
            return i;
          },
          createFromBodyElement: function (t) {
            var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
              n = this.createFromNode(t);
            return n.collapse(e);
          },
          createFromSelection: function () {
            var t, e, n, o;
            if (m.isW3CRangeSupport) {
              var i = document.getSelection();
              if (!i || 0 === i.rangeCount) return null;
              if (pt.isBody(i.anchorNode)) return null;
              var r = i.getRangeAt(0);
              (t = r.startContainer), (e = r.startOffset), (n = r.endContainer), (o = r.endOffset);
            } else {
              var a = document.selection.createRange(),
                s = a.duplicate();
              s.collapse(!1);
              var l = a;
              l.collapse(!0);
              var c = bt(l, !0),
                u = bt(s, !1);
              pt.isText(c.node) && pt.isLeftEdgePoint(c) && pt.isTextNode(u.node) && pt.isRightEdgePoint(u) && u.node.nextSibling === c.node && (c = u), (t = c.cont), (e = c.offset), (n = u.cont), (o = u.offset);
            }
            return new kt(t, e, n, o);
          },
          createFromNode: function (t) {
            var e = t,
              n = 0,
              o = t,
              i = pt.nodeLength(o);
            return pt.isVoid(e) && ((n = pt.listPrev(e).length - 1), (e = e.parentNode)), pt.isBR(o) ? ((i = pt.listPrev(o).length - 1), (o = o.parentNode)) : pt.isVoid(o) && ((i = pt.listPrev(o).length), (o = o.parentNode)), this.create(e, n, o, i);
          },
          createFromNodeBefore: function (t) {
            return this.createFromNode(t).collapse(!0);
          },
          createFromNodeAfter: function (t) {
            return this.createFromNode(t).collapse();
          },
          createFromBookmark: function (t, e) {
            var n = pt.fromOffsetPath(t, e.s.path),
              o = e.s.offset,
              i = pt.fromOffsetPath(t, e.e.path),
              r = e.e.offset;
            return new kt(n, o, i, r);
          },
          createFromParaBookmark: function (t, e) {
            var n = t.s.offset,
              o = t.e.offset,
              i = pt.fromOffsetPath(C.head(e), t.s.path),
              r = pt.fromOffsetPath(C.last(e), t.e.path);
            return new kt(i, n, r, o);
          },
        },
        Ct = {
          BACKSPACE: 8,
          TAB: 9,
          ENTER: 13,
          ESCAPE: 27,
          SPACE: 32,
          DELETE: 46,
          LEFT: 37,
          UP: 38,
          RIGHT: 39,
          DOWN: 40,
          NUM0: 48,
          NUM1: 49,
          NUM2: 50,
          NUM3: 51,
          NUM4: 52,
          NUM5: 53,
          NUM6: 54,
          NUM7: 55,
          NUM8: 56,
          B: 66,
          E: 69,
          I: 73,
          J: 74,
          K: 75,
          L: 76,
          R: 82,
          S: 83,
          U: 85,
          V: 86,
          Y: 89,
          Z: 90,
          SLASH: 191,
          LEFTBRACKET: 219,
          BACKSLASH: 220,
          RIGHTBRACKET: 221,
          HOME: 36,
          END: 35,
          PAGEUP: 33,
          PAGEDOWN: 34,
        },
        xt = {
          isEdit: function (t) {
            return C.contains([Ct.BACKSPACE, Ct.TAB, Ct.ENTER, Ct.SPACE, Ct.DELETE], t);
          },
          isMove: function (t) {
            return C.contains([Ct.LEFT, Ct.UP, Ct.RIGHT, Ct.DOWN], t);
          },
          isNavigation: function (t) {
            return C.contains([Ct.HOME, Ct.END, Ct.PAGEUP, Ct.PAGEDOWN], t);
          },
          nameFromCode: g.invertObject(Ct),
          code: Ct,
        };
      function St(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Tt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.stack = []),
            (this.stackOffset = -1),
            (this.context = e),
            (this.$editable = e.layoutInfo.editable),
            (this.editable = this.$editable[0]);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "makeSnapshot",
              value: function () {
                var t = wt.create(this.editable);
                return { contents: this.$editable.html(), bookmark: t && t.isOnEditable() ? t.bookmark(this.editable) : { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } } };
              },
            },
            {
              key: "applySnapshot",
              value: function (t) {
                null !== t.contents && this.$editable.html(t.contents), null !== t.bookmark && wt.createFromBookmark(this.editable, t.bookmark).select();
              },
            },
            {
              key: "rewind",
              value: function () {
                this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), (this.stackOffset = 0), this.applySnapshot(this.stack[this.stackOffset]);
              },
            },
            {
              key: "commit",
              value: function () {
                (this.stack = []), (this.stackOffset = -1), this.recordUndo();
              },
            },
            {
              key: "reset",
              value: function () {
                (this.stack = []), (this.stackOffset = -1), this.$editable.html(""), this.recordUndo();
              },
            },
            {
              key: "undo",
              value: function () {
                this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset > 0 && (this.stackOffset--, this.applySnapshot(this.stack[this.stackOffset]));
              },
            },
            {
              key: "redo",
              value: function () {
                this.stack.length - 1 > this.stackOffset && (this.stackOffset++, this.applySnapshot(this.stack[this.stackOffset]));
              },
            },
            {
              key: "recordUndo",
              value: function () {
                this.stackOffset++, this.stack.length > this.stackOffset && (this.stack = this.stack.slice(0, this.stackOffset)), this.stack.push(this.makeSnapshot()), this.stack.length > this.context.options.historyLimit && (this.stack.shift(), (this.stackOffset -= 1));
              },
            },
          ]) && St(e.prototype, n),
          o && St(e, o),
          t
        );
      })();
      function Et(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var It = (function () {
        function t() {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "jQueryCSS",
              value: function (t, e) {
                if (m.jqueryVersion < 1.9) {
                  var n = {};
                  return (
                    i.a.each(e, function (e, o) {
                      n[o] = t.css(o);
                    }),
                    n
                  );
                }
                return t.css(e);
              },
            },
            {
              key: "fromNode",
              value: function (t) {
                var e = this.jQueryCSS(t, ["font-family", "font-size", "text-align", "list-style-type", "line-height"]) || {},
                  n = t[0].style.fontSize || e["font-size"];
                return (e["font-size"] = parseInt(n, 10)), (e["font-size-unit"] = n.match(/[a-z%]+$/)), e;
              },
            },
            {
              key: "stylePara",
              value: function (t, e) {
                i.a.each(t.nodes(pt.isPara, { includeAncestor: !0 }), function (t, n) {
                  i()(n).css(e);
                });
              },
            },
            {
              key: "styleNodes",
              value: function (t, e) {
                t = t.splitText();
                var n = (e && e.nodeName) || "SPAN",
                  o = !(!e || !e.expandClosestSibling),
                  r = !(!e || !e.onlyPartialContains);
                if (t.isCollapsed()) return [t.insertNode(pt.create(n))];
                var a = pt.makePredByNodeName(n),
                  s = t.nodes(pt.isText, { fullyContains: !0 }).map(function (t) {
                    return pt.singleChildAncestor(t, a) || pt.wrap(t, n);
                  });
                if (o) {
                  if (r) {
                    var l = t.nodes();
                    a = g.and(a, function (t) {
                      return C.contains(l, t);
                    });
                  }
                  return s.map(function (t) {
                    var e = pt.withClosestSiblings(t, a),
                      n = C.head(e),
                      o = C.tail(e);
                    return (
                      i.a.each(o, function (t, e) {
                        pt.appendChildNodes(n, e.childNodes), pt.remove(e);
                      }),
                      C.head(e)
                    );
                  });
                }
                return s;
              },
            },
            {
              key: "current",
              value: function (t) {
                var e = i()(pt.isElement(t.sc) ? t.sc : t.sc.parentNode),
                  n = this.fromNode(e);
                try {
                  n = i.a.extend(n, {
                    "font-bold": document.queryCommandState("bold") ? "bold" : "normal",
                    "font-italic": document.queryCommandState("italic") ? "italic" : "normal",
                    "font-underline": document.queryCommandState("underline") ? "underline" : "normal",
                    "font-subscript": document.queryCommandState("subscript") ? "subscript" : "normal",
                    "font-superscript": document.queryCommandState("superscript") ? "superscript" : "normal",
                    "font-strikethrough": document.queryCommandState("strikethrough") ? "strikethrough" : "normal",
                    "font-family": document.queryCommandValue("fontname") || n["font-family"],
                  });
                } catch (t) {}
                if (t.isOnList()) {
                  var o = ["circle", "disc", "disc-leading-zero", "square"].indexOf(n["list-style-type"]) > -1;
                  n["list-style"] = o ? "unordered" : "ordered";
                } else n["list-style"] = "none";
                var r = pt.ancestor(t.sc, pt.isPara);
                if (r && r.style["line-height"]) n["line-height"] = r.style.lineHeight;
                else {
                  var a = parseInt(n["line-height"], 10) / parseInt(n["font-size"], 10);
                  n["line-height"] = a.toFixed(1);
                }
                return (n.anchor = t.isOnAnchor() && pt.ancestor(t.sc, pt.isAnchor)), (n.ancestors = pt.listAncestor(t.sc, pt.isEditable)), (n.range = t), n;
              },
            },
          ]) && Et(e.prototype, n),
          o && Et(e, o),
          t
        );
      })();
      function $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 Nt = (function () {
        function t() {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "insertOrderedList",
              value: function (t) {
                this.toggleList("OL", t);
              },
            },
            {
              key: "insertUnorderedList",
              value: function (t) {
                this.toggleList("UL", t);
              },
            },
            {
              key: "indent",
              value: function (t) {
                var e = this,
                  n = wt.create(t).wrapBodyInlineWithPara(),
                  o = n.nodes(pt.isPara, { includeAncestor: !0 }),
                  r = C.clusterBy(o, g.peq2("parentNode"));
                i.a.each(r, function (t, n) {
                  var o = C.head(n);
                  if (pt.isLi(o)) {
                    var r = e.findList(o.previousSibling);
                    r
                      ? n.map(function (t) {
                          return r.appendChild(t);
                        })
                      : (e.wrapList(n, o.parentNode.nodeName),
                        n
                          .map(function (t) {
                            return t.parentNode;
                          })
                          .map(function (t) {
                            return e.appendToPrevious(t);
                          }));
                  } else
                    i.a.each(n, function (t, e) {
                      i()(e).css("marginLeft", function (t, e) {
                        return (parseInt(e, 10) || 0) + 25;
                      });
                    });
                }),
                  n.select();
              },
            },
            {
              key: "outdent",
              value: function (t) {
                var e = this,
                  n = wt.create(t).wrapBodyInlineWithPara(),
                  o = n.nodes(pt.isPara, { includeAncestor: !0 }),
                  r = C.clusterBy(o, g.peq2("parentNode"));
                i.a.each(r, function (t, n) {
                  var o = C.head(n);
                  pt.isLi(o)
                    ? e.releaseList([n])
                    : i.a.each(n, function (t, e) {
                        i()(e).css("marginLeft", function (t, e) {
                          return (e = parseInt(e, 10) || 0) > 25 ? e - 25 : "";
                        });
                      });
                }),
                  n.select();
              },
            },
            {
              key: "toggleList",
              value: function (t, e) {
                var n = this,
                  o = wt.create(e).wrapBodyInlineWithPara(),
                  r = o.nodes(pt.isPara, { includeAncestor: !0 }),
                  a = o.paraBookmark(r),
                  s = C.clusterBy(r, g.peq2("parentNode"));
                if (C.find(r, pt.isPurePara)) {
                  var l = [];
                  i.a.each(s, function (e, o) {
                    l = l.concat(n.wrapList(o, t));
                  }),
                    (r = l);
                } else {
                  var c = o.nodes(pt.isList, { includeAncestor: !0 }).filter(function (e) {
                    return !i.a.nodeName(e, t);
                  });
                  c.length
                    ? i.a.each(c, function (e, n) {
                        pt.replace(n, t);
                      })
                    : (r = this.releaseList(s, !0));
                }
                wt.createFromParaBookmark(a, r).select();
              },
            },
            {
              key: "wrapList",
              value: function (t, e) {
                var n = C.head(t),
                  o = C.last(t),
                  i = pt.isList(n.previousSibling) && n.previousSibling,
                  r = pt.isList(o.nextSibling) && o.nextSibling,
                  a = i || pt.insertAfter(pt.create(e || "UL"), o);
                return (
                  (t = t.map(function (t) {
                    return pt.isPurePara(t) ? pt.replace(t, "LI") : t;
                  })),
                  pt.appendChildNodes(a, t),
                  r && (pt.appendChildNodes(a, C.from(r.childNodes)), pt.remove(r)),
                  t
                );
              },
            },
            {
              key: "releaseList",
              value: function (t, e) {
                var n = this,
                  o = [];
                return (
                  i.a.each(t, function (t, r) {
                    var a = C.head(r),
                      s = C.last(r),
                      l = e ? pt.lastAncestor(a, pt.isList) : a.parentNode,
                      c = l.parentNode;
                    if ("LI" === l.parentNode.nodeName)
                      r.map(function (t) {
                        var e = n.findNextSiblings(t);
                        c.nextSibling ? c.parentNode.insertBefore(t, c.nextSibling) : c.parentNode.appendChild(t), e.length && (n.wrapList(e, l.nodeName), t.appendChild(e[0].parentNode));
                      }),
                        0 === l.children.length && c.removeChild(l),
                        0 === c.childNodes.length && c.parentNode.removeChild(c);
                    else {
                      var u = l.childNodes.length > 1 ? pt.splitTree(l, { node: s.parentNode, offset: pt.position(s) + 1 }, { isSkipPaddingBlankHTML: !0 }) : null,
                        d = pt.splitTree(l, { node: a.parentNode, offset: pt.position(a) }, { isSkipPaddingBlankHTML: !0 });
                      (r = e ? pt.listDescendant(d, pt.isLi) : C.from(d.childNodes).filter(pt.isLi)),
                        (!e && pt.isList(l.parentNode)) ||
                          (r = r.map(function (t) {
                            return pt.replace(t, "P");
                          })),
                        i.a.each(C.from(r).reverse(), function (t, e) {
                          pt.insertAfter(e, l);
                        });
                      var h = C.compact([l, d, u]);
                      i.a.each(h, function (t, e) {
                        var n = [e].concat(pt.listDescendant(e, pt.isList));
                        i.a.each(n.reverse(), function (t, e) {
                          pt.nodeLength(e) || pt.remove(e, !0);
                        });
                      });
                    }
                    o = o.concat(r);
                  }),
                  o
                );
              },
            },
            {
              key: "appendToPrevious",
              value: function (t) {
                return t.previousSibling ? pt.appendChildNodes(t.previousSibling, [t]) : this.wrapList([t], "LI");
              },
            },
            {
              key: "findList",
              value: function (t) {
                return t
                  ? C.find(t.children, function (t) {
                      return ["OL", "UL"].indexOf(t.nodeName) > -1;
                    })
                  : null;
              },
            },
            {
              key: "findNextSiblings",
              value: function (t) {
                for (var e = []; t.nextSibling; ) e.push(t.nextSibling), (t = t.nextSibling);
                return e;
              },
            },
          ]) && $t(e.prototype, n),
          o && $t(e, o),
          t
        );
      })();
      function Pt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Rt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.bullet = new Nt()),
            (this.options = e.options);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "insertTab",
              value: function (t, e) {
                var n = pt.createText(new Array(e + 1).join(pt.NBSP_CHAR));
                (t = t.deleteContents()).insertNode(n, !0), (t = wt.create(n, e)).select();
              },
            },
            {
              key: "insertParagraph",
              value: function (t, e) {
                e = (e = (e = e || wt.create(t)).deleteContents()).wrapBodyInlineWithPara();
                var n,
                  o = pt.ancestor(e.sc, pt.isPara);
                if (o) {
                  if (pt.isLi(o) && (pt.isEmpty(o) || pt.deepestChildIsEmpty(o))) return void this.bullet.toggleList(o.parentNode.nodeName);
                  var r = null;
                  if ((1 === this.options.blockquoteBreakingLevel ? (r = pt.ancestor(o, pt.isBlockquote)) : 2 === this.options.blockquoteBreakingLevel && (r = pt.lastAncestor(o, pt.isBlockquote)), r)) {
                    (n = i()(pt.emptyPara)[0]), pt.isRightEdgePoint(e.getStartPoint()) && pt.isBR(e.sc.nextSibling) && i()(e.sc.nextSibling).remove();
                    var a = pt.splitTree(r, e.getStartPoint(), { isDiscardEmptySplits: !0 });
                    a ? a.parentNode.insertBefore(n, a) : pt.insertAfter(n, r);
                  } else {
                    n = pt.splitTree(o, e.getStartPoint());
                    var s = pt.listDescendant(o, pt.isEmptyAnchor);
                    (s = s.concat(pt.listDescendant(n, pt.isEmptyAnchor))),
                      i.a.each(s, function (t, e) {
                        pt.remove(e);
                      }),
                      (pt.isHeading(n) || pt.isPre(n) || pt.isCustomStyleTag(n)) && pt.isEmpty(n) && (n = pt.replace(n, "p"));
                  }
                } else {
                  var l = e.sc.childNodes[e.so];
                  (n = i()(pt.emptyPara)[0]), l ? e.sc.insertBefore(n, l) : e.sc.appendChild(n);
                }
                wt.create(n, 0).normalize().select().scrollIntoView(t);
              },
            },
          ]) && Pt(e.prototype, n),
          o && Pt(e, o),
          t
        );
      })();
      function Lt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var At = function t(e, n, o, i) {
        var r = { colPos: 0, rowPos: 0 },
          a = [],
          s = [];
        function l(t, e, n, o, i, r, s) {
          var l = { baseRow: n, baseCell: o, isRowSpan: i, isColSpan: r, isVirtual: s };
          a[t] || (a[t] = []), (a[t][e] = l);
        }
        function c(t, e, n, o) {
          return { baseCell: t.baseCell, action: e, virtualTable: { rowIndex: n, cellIndex: o } };
        }
        function u(t, e) {
          if (!a[t]) return e;
          if (!a[t][e]) return e;
          for (var n = e; a[t][n]; ) if ((n++, !a[t][n])) return n;
        }
        function d(t, e) {
          var n = u(t.rowIndex, e.cellIndex),
            o = e.colSpan > 1,
            i = e.rowSpan > 1,
            a = t.rowIndex === r.rowPos && e.cellIndex === r.colPos;
          l(t.rowIndex, n, t, e, i, o, !1);
          var s = e.attributes.rowSpan ? parseInt(e.attributes.rowSpan.value, 10) : 0;
          if (s > 1)
            for (var c = 1; c < s; c++) {
              var d = t.rowIndex + c;
              h(d, n, e, a), l(d, n, t, e, !0, o, !0);
            }
          var f = e.attributes.colSpan ? parseInt(e.attributes.colSpan.value, 10) : 0;
          if (f > 1)
            for (var p = 1; p < f; p++) {
              var m = u(t.rowIndex, n + p);
              h(t.rowIndex, m, e, a), l(t.rowIndex, m, t, e, i, !0, !0);
            }
        }
        function h(t, e, n, o) {
          t === r.rowPos && r.colPos >= n.cellIndex && n.cellIndex <= e && !o && r.colPos++;
        }
        function f(e) {
          switch (n) {
            case t.where.Column:
              if (e.isColSpan) return t.resultAction.SubtractSpanCount;
              break;
            case t.where.Row:
              if (!e.isVirtual && e.isRowSpan) return t.resultAction.AddCell;
              if (e.isRowSpan) return t.resultAction.SubtractSpanCount;
          }
          return t.resultAction.RemoveCell;
        }
        function p(e) {
          switch (n) {
            case t.where.Column:
              if (e.isColSpan) return t.resultAction.SumSpanCount;
              if (e.isRowSpan && e.isVirtual) return t.resultAction.Ignore;
              break;
            case t.where.Row:
              if (e.isRowSpan) return t.resultAction.SumSpanCount;
              if (e.isColSpan && e.isVirtual) return t.resultAction.Ignore;
          }
          return t.resultAction.AddCell;
        }
        (this.getActionList = function () {
          for (var e = n === t.where.Row ? r.rowPos : -1, i = n === t.where.Column ? r.colPos : -1, l = 0, u = !0; u; ) {
            var d = e >= 0 ? e : l,
              h = i >= 0 ? i : l,
              m = a[d];
            if (!m) return (u = !1), s;
            var v = m[h];
            if (!v) return (u = !1), s;
            var g = t.resultAction.Ignore;
            switch (o) {
              case t.requestAction.Add:
                g = p(v);
                break;
              case t.requestAction.Delete:
                g = f(v);
            }
            s.push(c(v, g, d, h)), l++;
          }
          return s;
        }),
          e && e.tagName && ("td" === e.tagName.toLowerCase() || "th" === e.tagName.toLowerCase()) && ((r.colPos = e.cellIndex), e.parentElement && e.parentElement.tagName && "tr" === e.parentElement.tagName.toLowerCase() && (r.rowPos = e.parentElement.rowIndex)),
          (function () {
            for (var t = i.rows, e = 0; e < t.length; e++) for (var n = t[e].cells, o = 0; o < n.length; o++) d(t[e], n[o]);
          })();
      };
      (At.where = { Row: 0, Column: 1 }), (At.requestAction = { Add: 0, Delete: 1 }), (At.resultAction = { Ignore: 0, SubtractSpanCount: 1, RemoveCell: 2, AddCell: 3, SumSpanCount: 4 });
      var Ft = (function () {
        function t() {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "tab",
              value: function (t, e) {
                var n = pt.ancestor(t.commonAncestor(), pt.isCell),
                  o = pt.ancestor(n, pt.isTable),
                  i = pt.listDescendant(o, pt.isCell),
                  r = C[e ? "prev" : "next"](i, n);
                r && wt.create(r, 0).select();
              },
            },
            {
              key: "addRow",
              value: function (t, e) {
                for (var n = pt.ancestor(t.commonAncestor(), pt.isCell), o = i()(n).closest("tr"), r = this.recoverAttributes(o), a = i()("<tr" + r + "></tr>"), s = new At(n, At.where.Row, At.requestAction.Add, i()(o).closest("table")[0]).getActionList(), l = 0; l < s.length; l++) {
                  var c = s[l],
                    u = this.recoverAttributes(c.baseCell);
                  switch (c.action) {
                    case At.resultAction.AddCell:
                      a.append("<td" + u + ">" + pt.blank + "</td>");
                      break;
                    case At.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 + ">" + pt.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 = pt.ancestor(t.commonAncestor(), pt.isCell),
                  o = i()(n).closest("tr");
                i()(o).siblings().push(o);
                for (var r = new At(n, At.where.Column, At.requestAction.Add, i()(o).closest("table")[0]).getActionList(), a = 0; a < r.length; a++) {
                  var s = r[a],
                    l = this.recoverAttributes(s.baseCell);
                  switch (s.action) {
                    case At.resultAction.AddCell:
                      "right" === e ? i()(s.baseCell).after("<td" + l + ">" + pt.blank + "</td>") : i()(s.baseCell).before("<td" + l + ">" + pt.blank + "</td>");
                      break;
                    case At.resultAction.SumSpanCount:
                      if ("right" === e) {
                        var c = parseInt(s.baseCell.colSpan, 10);
                        c++, s.baseCell.setAttribute("colSpan", c);
                      } else i()(s.baseCell).before("<td" + l + ">" + pt.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 = pt.ancestor(t.commonAncestor(), pt.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = n[0].rowIndex, a = new At(e, At.where.Row, At.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), s = 0; s < a.length; s++)
                  if (a[s]) {
                    var l = a[s].baseCell,
                      c = a[s].virtualTable,
                      u = l.rowSpan && l.rowSpan > 1,
                      d = u ? parseInt(l.rowSpan, 10) : 0;
                    switch (a[s].action) {
                      case At.resultAction.Ignore:
                        continue;
                      case At.resultAction.AddCell:
                        var h = n.next("tr")[0];
                        if (!h) continue;
                        var f = n[0].cells[o];
                        u && (d > 2 ? (d--, h.insertBefore(f, h.cells[o]), h.cells[o].setAttribute("rowSpan", d), (h.cells[o].innerHTML = "")) : 2 === d && (h.insertBefore(f, h.cells[o]), h.cells[o].removeAttribute("rowSpan"), (h.cells[o].innerHTML = "")));
                        continue;
                      case At.resultAction.SubtractSpanCount:
                        u && (d > 2 ? (d--, l.setAttribute("rowSpan", d), c.rowIndex !== r && l.cellIndex === o && (l.innerHTML = "")) : 2 === d && (l.removeAttribute("rowSpan"), c.rowIndex !== r && l.cellIndex === o && (l.innerHTML = "")));
                        continue;
                      case At.resultAction.RemoveCell:
                        continue;
                    }
                  }
                n.remove();
              },
            },
            {
              key: "deleteCol",
              value: function (t) {
                for (var e = pt.ancestor(t.commonAncestor(), pt.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = new At(e, At.where.Column, At.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), a = 0; a < r.length; a++)
                  if (r[a])
                    switch (r[a].action) {
                      case At.resultAction.Ignore:
                        continue;
                      case At.resultAction.SubtractSpanCount:
                        var s = r[a].baseCell;
                        if (s.colSpan && s.colSpan > 1) {
                          var l = s.colSpan ? parseInt(s.colSpan, 10) : 0;
                          l > 2 ? (l--, s.setAttribute("colSpan", l), s.cellIndex === o && (s.innerHTML = "")) : 2 === l && (s.removeAttribute("colSpan"), s.cellIndex === o && (s.innerHTML = ""));
                        }
                        continue;
                      case At.resultAction.RemoveCell:
                        pt.remove(r[a].baseCell, !0);
                        continue;
                    }
              },
            },
            {
              key: "createTable",
              value: function (t, e, n) {
                for (var o, r = [], a = 0; a < t; a++) r.push("<td>" + pt.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 = pt.ancestor(t.commonAncestor(), pt.isCell);
                i()(e).closest("table").remove();
              },
            },
          ]) && Lt(e.prototype, n),
          o && Lt(e, o),
          t
        );
      })();
      function Dt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Ht = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$note = e.layoutInfo.note),
            (this.$editor = e.layoutInfo.editor),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.editable = this.$editable[0]),
            (this.lastRange = null),
            (this.snapshot = null),
            (this.style = new It()),
            (this.table = new Ft()),
            (this.typing = new Rt(e)),
            (this.bullet = new Nt()),
            (this.history = new Tt(e)),
            this.context.memo("help.escape", this.lang.help.escape),
            this.context.memo("help.undo", this.lang.help.undo),
            this.context.memo("help.redo", this.lang.help.redo),
            this.context.memo("help.tab", this.lang.help.tab),
            this.context.memo("help.untab", this.lang.help.untab),
            this.context.memo("help.insertParagraph", this.lang.help.insertParagraph),
            this.context.memo("help.insertOrderedList", this.lang.help.insertOrderedList),
            this.context.memo("help.insertUnorderedList", this.lang.help.insertUnorderedList),
            this.context.memo("help.indent", this.lang.help.indent),
            this.context.memo("help.outdent", this.lang.help.outdent),
            this.context.memo("help.formatPara", this.lang.help.formatPara),
            this.context.memo("help.insertHorizontalRule", this.lang.help.insertHorizontalRule),
            this.context.memo("help.fontName", this.lang.help.fontName);
          for (var o = ["bold", "italic", "underline", "strikethrough", "superscript", "subscript", "justifyLeft", "justifyCenter", "justifyRight", "justifyFull", "formatBlock", "removeFormat", "backColor"], r = 0, a = o.length; r < a; r++)
            (this[o[r]] = (function (t) {
              return function (e) {
                n.beforeCommand(), document.execCommand(t, !1, e), n.afterCommand(!0);
              };
            })(o[r])),
              this.context.memo("help." + o[r], this.lang.help[o[r]]);
          (this.fontName = this.wrapCommand(function (t) {
            return n.fontStyling("font-family", m.validFontName(t));
          })),
            (this.fontSize = this.wrapCommand(function (t) {
              var e = n.currentStyle()["font-size-unit"];
              return n.fontStyling("font-size", t + e);
            })),
            (this.fontSizeUnit = this.wrapCommand(function (t) {
              var e = n.currentStyle()["font-size"];
              return n.fontStyling("font-size", e + t);
            }));
          for (var s = 1; s <= 6; s++)
            (this["formatH" + s] = (function (t) {
              return function () {
                n.formatBlock("H" + t);
              };
            })(s)),
              this.context.memo("help.formatH" + s, this.lang.help["formatH" + s]);
          (this.insertParagraph = this.wrapCommand(function () {
            n.typing.insertParagraph(n.editable);
          })),
            (this.insertOrderedList = this.wrapCommand(function () {
              n.bullet.insertOrderedList(n.editable);
            })),
            (this.insertUnorderedList = this.wrapCommand(function () {
              n.bullet.insertUnorderedList(n.editable);
            })),
            (this.indent = this.wrapCommand(function () {
              n.bullet.indent(n.editable);
            })),
            (this.outdent = this.wrapCommand(function () {
              n.bullet.outdent(n.editable);
            })),
            (this.insertNode = this.wrapCommand(function (t) {
              n.isLimited(i()(t).text().length) || (n.getLastRange().insertNode(t), n.setLastRange(wt.createFromNodeAfter(t).select()));
            })),
            (this.insertText = this.wrapCommand(function (t) {
              if (!n.isLimited(t.length)) {
                var e = n.getLastRange().insertNode(pt.createText(t));
                n.setLastRange(wt.create(e, pt.nodeLength(e)).select());
              }
            })),
            (this.pasteHTML = this.wrapCommand(function (t) {
              if (!n.isLimited(t.length)) {
                t = n.context.invoke("codeview.purify", t);
                var e = n.getLastRange().pasteHTML(t);
                n.setLastRange(wt.createFromNodeAfter(C.last(e)).select());
              }
            })),
            (this.formatBlock = this.wrapCommand(function (t, e) {
              var o = n.options.callbacks.onApplyCustomStyle;
              o ? o.call(n, e, n.context, n.onFormatBlock) : n.onFormatBlock(t, e);
            })),
            (this.insertHorizontalRule = this.wrapCommand(function () {
              var t = n.getLastRange().insertNode(pt.create("HR"));
              t.nextSibling && n.setLastRange(wt.create(t.nextSibling, 0).normalize().select());
            })),
            (this.lineHeight = this.wrapCommand(function (t) {
              n.style.stylePara(n.getLastRange(), { lineHeight: t });
            })),
            (this.createLink = this.wrapCommand(function (t) {
              var e = t.url,
                o = t.text,
                r = t.isNewWindow,
                a = t.checkProtocol,
                s = t.range || n.getLastRange(),
                l = o.length - s.toString().length;
              if (!(l > 0 && n.isLimited(l))) {
                var c = s.toString() !== o;
                "string" == typeof e && (e = e.trim()), n.options.onCreateLink ? (e = n.options.onCreateLink(e)) : a && (e = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e) ? e : n.options.defaultProtocol + e);
                var u = [];
                if (c) {
                  var d = (s = s.deleteContents()).insertNode(i()("<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");
                }),
                  n.setLastRange(n.createRangeFromList(u).select());
              }
            })),
            (this.color = this.wrapCommand(function (t) {
              var e = t.foreColor,
                n = t.backColor;
              e && document.execCommand("foreColor", !1, e), n && document.execCommand("backColor", !1, n);
            })),
            (this.foreColor = this.wrapCommand(function (t) {
              document.execCommand("foreColor", !1, t);
            })),
            (this.insertTable = this.wrapCommand(function (t) {
              var e = t.split("x");
              n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0], e[1], n.options));
            })),
            (this.removeMedia = this.wrapCommand(function () {
              var t = i()(n.restoreTarget()).parent();
              t.closest("figure").length ? t.closest("figure").remove() : (t = i()(n.restoreTarget()).detach()), n.context.triggerEvent("media.delete", t, n.$editable);
            })),
            (this.floatMe = this.wrapCommand(function (t) {
              var e = i()(n.restoreTarget());
              e.toggleClass("note-float-left", "left" === t), e.toggleClass("note-float-end", "right" === t), e.css("float", "none" === t ? "" : t);
            })),
            (this.resize = this.wrapCommand(function (t) {
              var e = i()(n.restoreTarget());
              0 === (t = parseFloat(t)) ? e.css("width", "") : e.css({ width: 100 * t + "%", height: "" });
            }));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.$editable
                  .on("keydown", function (e) {
                    if (
                      (e.keyCode === xt.code.ENTER && t.context.triggerEvent("enter", e),
                      t.context.triggerEvent("keydown", e),
                      (t.snapshot = t.history.makeSnapshot()),
                      (t.hasKeyShortCut = !1),
                      e.isDefaultPrevented() || (t.options.shortcuts ? (t.hasKeyShortCut = t.handleKeyMap(e)) : t.preventDefaultEditableShortCuts(e)),
                      t.isLimited(1, e))
                    ) {
                      var n = t.getLastRange();
                      if (n.eo - n.so == 0) return !1;
                    }
                    t.setLastRange(), t.options.recordEveryKeystroke && !1 === t.hasKeyShortCut && t.history.recordUndo();
                  })
                  .on("keyup", function (e) {
                    t.setLastRange(), t.context.triggerEvent("keyup", e);
                  })
                  .on("focus", function (e) {
                    t.setLastRange(), t.context.triggerEvent("focus", e);
                  })
                  .on("blur", function (e) {
                    t.context.triggerEvent("blur", e);
                  })
                  .on("mousedown", function (e) {
                    t.context.triggerEvent("mousedown", e);
                  })
                  .on("mouseup", function (e) {
                    t.setLastRange(), t.history.recordUndo(), t.context.triggerEvent("mouseup", e);
                  })
                  .on("scroll", function (e) {
                    t.context.triggerEvent("scroll", e);
                  })
                  .on("paste", function (e) {
                    t.setLastRange(), t.context.triggerEvent("paste", e);
                  })
                  .on("input", function () {
                    t.isLimited(0) && t.snapshot && t.history.applySnapshot(t.snapshot);
                  }),
                  this.$editable.attr("spellcheck", this.options.spellCheck),
                  this.$editable.attr("autocorrect", this.options.spellCheck),
                  this.options.disableGrammar && this.$editable.attr("data-gramm", !1),
                  this.$editable.html(pt.html(this.$note) || pt.emptyPara),
                  this.$editable.on(
                    m.inputEventName,
                    g.debounce(function () {
                      t.context.triggerEvent("change", t.$editable.html(), t.$editable);
                    }, 10)
                  ),
                  this.$editable
                    .on("focusin", function (e) {
                      t.context.triggerEvent("focusin", e);
                    })
                    .on("focusout", function (e) {
                      t.context.triggerEvent("focusout", e);
                    }),
                  this.options.airMode
                    ? this.options.overrideContextMenu &&
                      this.$editor.on("contextmenu", function (e) {
                        return t.context.triggerEvent("contextmenu", e), !1;
                      })
                    : (this.options.width && this.$editor.outerWidth(this.options.width),
                      this.options.height && this.$editable.outerHeight(this.options.height),
                      this.options.maxHeight && this.$editable.css("max-height", this.options.maxHeight),
                      this.options.minHeight && this.$editable.css("min-height", this.options.minHeight)),
                  this.history.recordUndo(),
                  this.setLastRange();
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$editable.off();
              },
            },
            {
              key: "handleKeyMap",
              value: function (t) {
                var e = this.options.keyMap[m.isMac ? "mac" : "pc"],
                  n = [];
                t.metaKey && n.push("CMD"), t.ctrlKey && !t.altKey && n.push("CTRL"), t.shiftKey && n.push("SHIFT");
                var o = xt.nameFromCode[t.keyCode];
                o && n.push(o);
                var i = e[n.join("+")];
                if ("TAB" !== o || this.options.tabDisable)
                  if (i) {
                    if (!1 !== this.context.invoke(i)) return t.preventDefault(), !0;
                  } else xt.isEdit(t.keyCode) && this.afterCommand();
                else this.afterCommand();
                return !1;
              },
            },
            {
              key: "preventDefaultEditableShortCuts",
              value: function (t) {
                (t.ctrlKey || t.metaKey) && C.contains([66, 73, 85], t.keyCode) && t.preventDefault();
              },
            },
            {
              key: "isLimited",
              value: function (t, e) {
                return (t = t || 0), (void 0 === e || !(xt.isMove(e.keyCode) || xt.isNavigation(e.keyCode) || e.ctrlKey || e.metaKey || C.contains([xt.code.BACKSPACE, xt.code.DELETE], e.keyCode))) && this.options.maxTextLength > 0 && this.$editable.text().length + t > this.options.maxTextLength;
              },
            },
            {
              key: "createRange",
              value: function () {
                return this.focus(), this.setLastRange(), this.getLastRange();
              },
            },
            {
              key: "createRangeFromList",
              value: function (t) {
                var e = wt.createFromNodeBefore(C.head(t)).getStartPoint(),
                  n = wt.createFromNodeAfter(C.last(t)).getEndPoint();
                return wt.create(e.node, e.offset, n.node, n.offset);
              },
            },
            {
              key: "setLastRange",
              value: function (t) {
                t ? (this.lastRange = t) : ((this.lastRange = wt.create(this.editable)), 0 === i()(this.lastRange.sc).closest(".note-editable").length && (this.lastRange = wt.createFromBodyElement(this.editable)));
              },
            },
            {
              key: "getLastRange",
              value: function () {
                return this.lastRange || this.setLastRange(), this.lastRange;
              },
            },
            {
              key: "saveRange",
              value: function (t) {
                t && this.getLastRange().collapse().select();
              },
            },
            {
              key: "restoreRange",
              value: function () {
                this.lastRange && (this.lastRange.select(), this.focus());
              },
            },
            {
              key: "saveTarget",
              value: function (t) {
                this.$editable.data("target", t);
              },
            },
            {
              key: "clearTarget",
              value: function () {
                this.$editable.removeData("target");
              },
            },
            {
              key: "restoreTarget",
              value: function () {
                return this.$editable.data("target");
              },
            },
            {
              key: "currentStyle",
              value: function () {
                var t = wt.create();
                return t && (t = t.normalize()), t ? this.style.current(t) : this.style.fromNode(this.$editable);
              },
            },
            {
              key: "styleFromNode",
              value: function (t) {
                return this.style.fromNode(t);
              },
            },
            {
              key: "undo",
              value: function () {
                this.context.triggerEvent("before.command", this.$editable.html()), this.history.undo(), this.context.triggerEvent("change", this.$editable.html(), this.$editable);
              },
            },
            {
              key: "commit",
              value: function () {
                this.context.triggerEvent("before.command", this.$editable.html()), this.history.commit(), this.context.triggerEvent("change", this.$editable.html(), this.$editable);
              },
            },
            {
              key: "redo",
              value: function () {
                this.context.triggerEvent("before.command", this.$editable.html()), this.history.redo(), this.context.triggerEvent("change", this.$editable.html(), this.$editable);
              },
            },
            {
              key: "beforeCommand",
              value: function () {
                this.context.triggerEvent("before.command", this.$editable.html()), document.execCommand("styleWithCSS", !1, this.options.styleWithCSS), this.focus();
              },
            },
            {
              key: "afterCommand",
              value: function (t) {
                this.normalizeContent(), this.history.recordUndo(), t || this.context.triggerEvent("change", this.$editable.html(), this.$editable);
              },
            },
            {
              key: "tab",
              value: function () {
                var t = this.getLastRange();
                if (t.isCollapsed() && t.isOnCell()) this.table.tab(t);
                else {
                  if (0 === this.options.tabSize) return !1;
                  this.isLimited(this.options.tabSize) || (this.beforeCommand(), this.typing.insertTab(t, this.options.tabSize), this.afterCommand());
                }
              },
            },
            {
              key: "untab",
              value: function () {
                var t = this.getLastRange();
                if (t.isCollapsed() && t.isOnCell()) this.table.tab(t, !0);
                else if (0 === this.options.tabSize) return !1;
              },
            },
            {
              key: "wrapCommand",
              value: function (t) {
                return function () {
                  this.beforeCommand(), t.apply(this, arguments), this.afterCommand();
                };
              },
            },
            {
              key: "insertImage",
              value: function (t, e) {
                var n,
                  o = this;
                return ((n = t),
                i.a
                  .Deferred(function (t) {
                    var e = i()("<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(wt.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 = wt.createFromNode(pt.ancestor(t.sc, pt.isAnchor))), t.toString();
              },
            },
            {
              key: "onFormatBlock",
              value: function (t, e) {
                if ((document.execCommand("FormatBlock", !1, m.isMSIE ? "<" + t + ">" : t), e && e.length && (e[0].tagName.toUpperCase() !== t.toUpperCase() && (e = e.find(t)), e && e.length))) {
                  var n = e[0].className || "";
                  if (n) {
                    var o = this.createRange();
                    i()([o.sc, o.ec]).closest(t).addClass(n);
                  }
                }
              },
            },
            {
              key: "formatPara",
              value: function () {
                this.formatBlock("P");
              },
            },
            {
              key: "fontStyling",
              value: function (t, e) {
                var n = this.getLastRange();
                if ("" !== n) {
                  var o = this.style.styleNodes(n);
                  if ((this.$editor.find(".note-status-output").html(""), i()(o).css(t, e), n.isCollapsed())) {
                    var r = C.head(o);
                    r && !pt.nodeLength(r) && ((r.innerHTML = pt.ZERO_WIDTH_NBSP_CHAR), wt.createFromNode(r.firstChild).select(), this.setLastRange(), this.$editable.data("bogus", r));
                  } else this.setLastRange(this.createRangeFromList(o).select());
                } else {
                  var a = i.a.now();
                  this.$editor.find(".note-status-output").html('<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 = pt.ancestor(t.sc, pt.isAnchor);
                  (t = wt.createFromNode(e)).select(), this.setLastRange(), this.beforeCommand(), document.execCommand("unlink"), this.afterCommand();
                }
              },
            },
            {
              key: "getLinkInfo",
              value: function () {
                var t = this.getLastRange().expand(pt.isAnchor),
                  e = i()(C.head(t.nodes(pt.isAnchor))),
                  n = { range: t, text: t.toString(), url: e.length ? e.attr("href") : "" };
                return e.length && (n.isNewWindow = "_blank" === e.attr("target")), n;
              },
            },
            {
              key: "addRow",
              value: function (t) {
                var e = this.getLastRange(this.$editable);
                e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addRow(e, t), this.afterCommand());
              },
            },
            {
              key: "addCol",
              value: function (t) {
                var e = this.getLastRange(this.$editable);
                e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addCol(e, t), this.afterCommand());
              },
            },
            {
              key: "deleteRow",
              value: function () {
                var t = this.getLastRange(this.$editable);
                t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteRow(t), this.afterCommand());
              },
            },
            {
              key: "deleteCol",
              value: function () {
                var t = this.getLastRange(this.$editable);
                t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteCol(t), this.afterCommand());
              },
            },
            {
              key: "deleteTable",
              value: function () {
                var t = this.getLastRange(this.$editable);
                t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteTable(t), this.afterCommand());
              },
            },
            {
              key: "resizeTo",
              value: function (t, e, n) {
                var o;
                if (n) {
                  var i = t.y / t.x,
                    r = e.data("ratio");
                  o = { width: r > i ? t.x : t.y / r, height: r > i ? t.x * r : t.y };
                } else o = { width: t.x, height: t.y };
                e.css(o);
              },
            },
            {
              key: "hasFocus",
              value: function () {
                return this.$editable.is(":focus");
              },
            },
            {
              key: "focus",
              value: function () {
                this.hasFocus() || this.$editable.focus();
              },
            },
            {
              key: "isEmpty",
              value: function () {
                return pt.isEmpty(this.$editable[0]) || pt.emptyPara === this.$editable.html();
              },
            },
            {
              key: "empty",
              value: function () {
                this.context.invoke("code", pt.emptyPara);
              },
            },
            {
              key: "normalizeContent",
              value: function () {
                this.$editable[0].normalize();
              },
            },
          ]) && Dt(e.prototype, n),
          o && Dt(e, o),
          t
        );
      })();
      function zt(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 Bt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editable = e.layoutInfo.editable);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                this.$editable.on("paste", this.pasteByEvent.bind(this));
              },
            },
            {
              key: "pasteByEvent",
              value: function (t) {
                var e = this,
                  n = t.originalEvent.clipboardData;
                if (n && n.items && n.items.length) {
                  var o = n.items.length > 1 ? n.items[1] : C.head(n.items);
                  "file" === o.kind && -1 !== o.type.indexOf("image/") ? (this.context.invoke("editor.insertImagesOrCallback", [o.getAsFile()]), t.preventDefault()) : "string" === o.kind && this.context.invoke("editor.isLimited", n.getData("Text").length) && t.preventDefault();
                } else if (window.clipboardData) {
                  var i = window.clipboardData.getData("text");
                  this.context.invoke("editor.isLimited", i.length) && t.preventDefault();
                }
                setTimeout(function () {
                  e.context.invoke("editor.afterCommand");
                }, 10);
              },
            },
          ]) && zt(e.prototype, n),
          o && zt(e, o),
          t
        );
      })();
      function Mt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Ot = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$eventListener = i()(document)),
            (this.$editor = e.layoutInfo.editor),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.documentEventHandlers = {}),
            (this.$dropzone = i()(['<div class="note-dropzone">', '<div class="note-dropzone-message"></div>', "</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 = {});
              },
            },
          ]) && Mt(e.prototype, n),
          o && Mt(e, o),
          t
        );
      })();
      function jt(t) {
        if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
          if (
            Array.isArray(t) ||
            (t = (function (t, e) {
              if (!t) return;
              if ("string" == typeof t) return Ut(t, e);
              var n = Object.prototype.toString.call(t).slice(8, -1);
              "Object" === n && t.constructor && (n = t.constructor.name);
              if ("Map" === n || "Set" === n) return Array.from(n);
              if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Ut(t, e);
            })(t))
          ) {
            var e = 0,
              n = function () {};
            return {
              s: n,
              n: function () {
                return e >= t.length ? { done: !0 } : { done: !1, value: t[e++] };
              },
              e: function (t) {
                throw t;
              },
              f: n,
            };
          }
          throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
        }
        var o,
          i,
          r = !0,
          a = !1;
        return {
          s: function () {
            o = t[Symbol.iterator]();
          },
          n: function () {
            var t = o.next();
            return (r = t.done), t;
          },
          e: function (t) {
            (a = !0), (i = t);
          },
          f: function () {
            try {
              r || null == o.return || o.return();
            } finally {
              if (a) throw i;
            }
          },
        };
      }
      function Ut(t, e) {
        (null == e || e > t.length) && (e = t.length);
        for (var n = 0, o = new Array(e); n < e; n++) o[n] = t[n];
        return o;
      }
      function Wt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Kt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editor = e.layoutInfo.editor),
            (this.$editable = e.layoutInfo.editable),
            (this.$codable = e.layoutInfo.codable),
            (this.options = e.options),
            (this.CodeMirrorConstructor = window.CodeMirror),
            this.options.codemirror.CodeMirrorConstructor && (this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "sync",
              value: function (t) {
                var e = this.isActivated(),
                  n = this.CodeMirrorConstructor;
                e && (t ? (n ? this.$codable.data("cmEditor").getDoc().setValue(t) : this.$codable.val(t)) : n && this.$codable.data("cmEditor").save());
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.$codable.on("keyup", function (e) {
                  e.keyCode === xt.code.ESCAPE && t.deactivate();
                });
              },
            },
            {
              key: "isActivated",
              value: function () {
                return this.$editor.hasClass("codeview");
              },
            },
            {
              key: "toggle",
              value: function () {
                this.isActivated() ? this.deactivate() : this.activate(), this.context.triggerEvent("codeview.toggled");
              },
            },
            {
              key: "purify",
              value: function (t) {
                if (this.options.codeviewFilter && ((t = t.replace(this.options.codeviewFilterRegex, "")), this.options.codeviewIframeFilter)) {
                  var e = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);
                  t = t.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi, function (t) {
                    if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t)) return "";
                    var n,
                      o = jt(e);
                    try {
                      for (o.s(); !(n = o.n()).done; ) {
                        var i = n.value;
                        if (new RegExp('src="(https?:)?//' + i.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") + '/(.+)"').test(t)) return t;
                      }
                    } catch (t) {
                      o.e(t);
                    } finally {
                      o.f();
                    }
                    return "";
                  });
                }
                return t;
              },
            },
            {
              key: "activate",
              value: function () {
                var t = this,
                  e = this.CodeMirrorConstructor;
                if (
                  (this.$codable.val(pt.html(this.$editable, this.options.prettifyHtml)),
                  this.$codable.height(this.$editable.height()),
                  this.context.invoke("toolbar.updateCodeview", !0),
                  this.context.invoke("airPopover.updateCodeview", !0),
                  this.$editor.addClass("codeview"),
                  this.$codable.focus(),
                  e)
                ) {
                  var n = e.fromTextArea(this.$codable[0], this.options.codemirror);
                  if (this.options.codemirror.tern) {
                    var o = new e.TernServer(this.options.codemirror.tern);
                    (n.ternServer = o),
                      n.on("cursorActivity", function (t) {
                        o.updateArgHints(t);
                      });
                  }
                  n.on("blur", function (e) {
                    t.context.triggerEvent("blur.codeview", n.getValue(), e);
                  }),
                    n.on("change", function () {
                      t.context.triggerEvent("change.codeview", n.getValue(), n);
                    }),
                    n.setSize(null, this.$editable.outerHeight()),
                    this.$codable.data("cmEditor", n);
                } else
                  this.$codable.on("blur", function (e) {
                    t.context.triggerEvent("blur.codeview", t.$codable.val(), e);
                  }),
                    this.$codable.on("input", function () {
                      t.context.triggerEvent("change.codeview", t.$codable.val(), t.$codable);
                    });
              },
            },
            {
              key: "deactivate",
              value: function () {
                if (this.CodeMirrorConstructor) {
                  var t = this.$codable.data("cmEditor");
                  this.$codable.val(t.getValue()), t.toTextArea();
                }
                var e = this.purify(pt.value(this.$codable, this.options.prettifyHtml) || pt.emptyPara),
                  n = this.$editable.html() !== e;
                this.$editable.html(e),
                  this.$editable.height(this.options.height ? this.$codable.height() : "auto"),
                  this.$editor.removeClass("codeview"),
                  n && this.context.triggerEvent("change", this.$editable.html(), this.$editable),
                  this.$editable.focus(),
                  this.context.invoke("toolbar.updateCodeview", !1),
                  this.context.invoke("airPopover.updateCodeview", !1);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.isActivated() && this.deactivate();
              },
            },
          ]) && Wt(e.prototype, n),
          o && Wt(e, o),
          t
        );
      })();
      function Vt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var qt = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.$document = i()(document)),
            (this.$statusbar = e.layoutInfo.statusbar),
            (this.$editable = e.layoutInfo.editable),
            (this.options = e.options);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this;
                this.options.airMode || this.options.disableResizeEditor
                  ? this.destroy()
                  : this.$statusbar.on("mousedown", function (e) {
                      e.preventDefault(), e.stopPropagation();
                      var n = t.$editable.offset().top - t.$document.scrollTop(),
                        o = function (e) {
                          var o = e.clientY - (n + 24);
                          (o = t.options.minheight > 0 ? Math.max(o, t.options.minheight) : o), (o = t.options.maxHeight > 0 ? Math.min(o, t.options.maxHeight) : o), t.$editable.height(o);
                        };
                      t.$document.on("mousemove", o).one("mouseup", function () {
                        t.$document.off("mousemove", o);
                      });
                    });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$statusbar.off(), this.$statusbar.addClass("locked");
              },
            },
          ]) && Vt(e.prototype, n),
          o && Vt(e, o),
          t
        );
      })();
      function _t(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Gt = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editor = e.layoutInfo.editor),
            (this.$toolbar = e.layoutInfo.toolbar),
            (this.$editable = e.layoutInfo.editable),
            (this.$codable = e.layoutInfo.codable),
            (this.$window = i()(window)),
            (this.$scrollbar = i()("html, body")),
            (this.onResize = function () {
              n.resizeTo({ h: n.$window.height() - n.$toolbar.outerHeight() });
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "resizeTo",
              value: function (t) {
                this.$editable.css("height", t.h), this.$codable.css("height", t.h), this.$codable.data("cmeditor") && this.$codable.data("cmeditor").setsize(null, t.h);
              },
            },
            {
              key: "toggle",
              value: function () {
                this.$editor.toggleClass("fullscreen"),
                  this.isFullscreen()
                    ? (this.$editable.data("orgHeight", this.$editable.css("height")), this.$editable.data("orgMaxHeight", this.$editable.css("maxHeight")), this.$editable.css("maxHeight", ""), this.$window.on("resize", this.onResize).trigger("resize"), this.$scrollbar.css("overflow", "hidden"))
                    : (this.$window.off("resize", this.onResize), this.resizeTo({ h: this.$editable.data("orgHeight") }), this.$editable.css("maxHeight", this.$editable.css("orgMaxHeight")), this.$scrollbar.css("overflow", "visible")),
                  this.context.invoke("toolbar.updateFullscreen", this.isFullscreen());
              },
            },
            {
              key: "isFullscreen",
              value: function () {
                return this.$editor.hasClass("fullscreen");
              },
            },
          ]) && _t(e.prototype, n),
          o && _t(e, o),
          t
        );
      })();
      function Yt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Zt = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$document = i()(document)),
            (this.$editingArea = e.layoutInfo.editingArea),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.events = {
              "summernote.mousedown": function (t, e) {
                n.update(e.target, e) && e.preventDefault();
              },
              "summernote.keyup summernote.scroll summernote.change summernote.dialog.shown": function () {
                n.update();
              },
              "summernote.disable summernote.blur": function () {
                n.hide();
              },
              "summernote.codeview.toggled": function () {
                n.update();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.$handle = i()(
                  [
                    '<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 (pt.isControlSizing(e.target)) {
                      e.preventDefault(), e.stopPropagation();
                      var n = t.$handle.find(".note-control-selection").data("target"),
                        o = n.offset(),
                        i = t.$document.scrollTop(),
                        r = function (e) {
                          t.context.invoke("editor.resizeTo", { x: e.clientX - o.left, y: e.clientY - (o.top - i) }, n, !e.shiftKey), t.update(n[0], e);
                        };
                      t.$document.on("mousemove", r).one("mouseup", function (e) {
                        e.preventDefault(), t.$document.off("mousemove", r), t.context.invoke("editor.afterCommand");
                      }),
                        n.data("ratio") || n.data("ratio", n.height() / n.width());
                    }
                  }),
                  this.$handle.on("wheel", function (e) {
                    e.preventDefault(), t.update();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$handle.remove();
              },
            },
            {
              key: "update",
              value: function (t, e) {
                if (this.context.isDisabled()) return !1;
                var n = pt.isImg(t),
                  o = this.$handle.find(".note-control-selection");
                if ((this.context.invoke("imagePopover.update", t, e), n)) {
                  var r = i()(t),
                    a = r.position(),
                    s = { left: a.left + parseInt(r.css("marginLeft"), 10), top: a.top + parseInt(r.css("marginTop"), 10) },
                    l = { w: r.outerWidth(!1), h: r.outerHeight(!1) };
                  o.css({ display: "block", left: s.left, top: s.top, width: l.w, height: l.h }).data("target", r);
                  var c = new Image();
                  c.src = r.attr("src");
                  var u = l.w + "x" + l.h + " (" + this.lang.image.original + ": " + c.width + "x" + c.height + ")";
                  o.find(".note-control-selection-info").text(u), this.context.invoke("editor.saveTarget", t);
                } else this.hide();
                return n;
              },
            },
            {
              key: "hide",
              value: function () {
                this.context.invoke("editor.clearTarget"), this.$handle.children().hide();
              },
            },
          ]) && Yt(e.prototype, n),
          o && Yt(e, o),
          t
        );
      })();
      function Xt(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var Qt = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i,
        Jt = (function () {
          function t(e) {
            var n = this;
            !(function (t, e) {
              if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
            })(this, t),
              (this.context = e),
              (this.options = e.options),
              (this.events = {
                "summernote.keyup": function (t, e) {
                  e.isDefaultPrevented() || n.handleKeyup(e);
                },
                "summernote.keydown": function (t, e) {
                  n.handleKeydown(e);
                },
              });
          }
          var e, n, o;
          return (
            (e = t),
            (n = [
              {
                key: "initialize",
                value: function () {
                  this.lastWordRange = null;
                },
              },
              {
                key: "destroy",
                value: function () {
                  this.lastWordRange = null;
                },
              },
              {
                key: "replace",
                value: function () {
                  if (this.lastWordRange) {
                    var t = this.lastWordRange.toString(),
                      e = t.match(Qt);
                    if (e && (e[1] || e[2])) {
                      var n = e[1] ? t : "http://" + t,
                        o = this.options.showDomainOnlyForAutolink ? t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, "").split("/")[0] : t,
                        r = i()("<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 (C.contains([xt.code.ENTER, xt.code.SPACE], t.keyCode)) {
                    var e = this.context.invoke("editor.createRange").getWordRange();
                    this.lastWordRange = e;
                  }
                },
              },
              {
                key: "handleKeyup",
                value: function (t) {
                  C.contains([xt.code.ENTER, xt.code.SPACE], t.keyCode) && this.replace();
                },
              },
            ]) && Xt(e.prototype, n),
            o && Xt(e, o),
            t
          );
        })();
      function te(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var ee = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.$note = e.layoutInfo.note),
            (this.events = {
              "summernote.change": function () {
                n.$note.val(e.invoke("code"));
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return pt.isTextarea(this.$note[0]);
              },
            },
          ]) && te(e.prototype, n),
          o && te(e, o),
          t
        );
      })();
      function ne(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var oe = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.options = e.options.replace || {}),
            (this.keys = [xt.code.ENTER, xt.code.SPACE, xt.code.PERIOD, xt.code.COMMA, xt.code.SEMICOLON, xt.code.SLASH]),
            (this.previousKeydownCode = null),
            (this.events = {
              "summernote.keyup": function (t, e) {
                e.isDefaultPrevented() || n.handleKeyup(e);
              },
              "summernote.keydown": function (t, e) {
                n.handleKeydown(e);
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !!this.options.match;
              },
            },
            {
              key: "initialize",
              value: function () {
                this.lastWord = null;
              },
            },
            {
              key: "destroy",
              value: function () {
                this.lastWord = null;
              },
            },
            {
              key: "replace",
              value: function () {
                if (this.lastWord) {
                  var t = this,
                    e = this.lastWord.toString();
                  this.options.match(e, function (e) {
                    if (e) {
                      var n = "";
                      if (("string" == typeof e ? (n = pt.createText(e)) : e instanceof jQuery ? (n = e[0]) : e instanceof Node && (n = e), !n)) return;
                      t.lastWord.insertNode(n), (t.lastWord = null), t.context.invoke("editor.focus");
                    }
                  });
                }
              },
            },
            {
              key: "handleKeydown",
              value: function (t) {
                if (this.previousKeydownCode && C.contains(this.keys, this.previousKeydownCode)) this.previousKeydownCode = t.keyCode;
                else {
                  if (C.contains(this.keys, t.keyCode)) {
                    var e = this.context.invoke("editor.createRange").getWordRange();
                    this.lastWord = e;
                  }
                  this.previousKeydownCode = t.keyCode;
                }
              },
            },
            {
              key: "handleKeyup",
              value: function (t) {
                C.contains(this.keys, t.keyCode) && this.replace();
              },
            },
          ]) && ne(e.prototype, n),
          o && ne(e, o),
          t
        );
      })();
      function ie(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var re = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$editingArea = e.layoutInfo.editingArea),
            (this.options = e.options),
            !0 === this.options.inheritPlaceholder && (this.options.placeholder = this.context.$note.attr("placeholder") || this.options.placeholder),
            (this.events = {
              "summernote.init summernote.change": function () {
                n.update();
              },
              "summernote.codeview.toggled": function () {
                n.update();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !!this.options.placeholder;
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.$placeholder = i()('<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);
              },
            },
          ]) && ie(e.prototype, n),
          o && ie(e, o),
          t
        );
      })();
      function ae(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var se = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.ui = i.a.summernote.ui),
            (this.context = e),
            (this.$toolbar = e.layoutInfo.toolbar),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            (this.invertedKeyMap = g.invertObject(this.options.keyMap[m.isMac ? "mac" : "pc"]));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "representShortcut",
              value: function (t) {
                var e = this.invertedKeyMap[t];
                return this.options.shortcuts && e ? (m.isMac && (e = e.replace("CMD", "⌘").replace("SHIFT", "⇧")), " (" + (e = e.replace("BACKSLASH", "\\").replace("SLASH", "/").replace("LEFTBRACKET", "[").replace("RIGHTBRACKET", "]")) + ")") : "";
              },
            },
            {
              key: "button",
              value: function (t) {
                return !this.options.tooltip && t.tooltip && delete t.tooltip, (t.container = this.options.container), this.ui.button(t);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.addToolbarButtons(), this.addImagePopoverButtons(), this.addLinkPopoverButtons(), this.addTablePopoverButtons(), (this.fontInstalledMap = {});
              },
            },
            {
              key: "destroy",
              value: function () {
                delete this.fontInstalledMap;
              },
            },
            {
              key: "isFontInstalled",
              value: function (t) {
                return Object.prototype.hasOwnProperty.call(this.fontInstalledMap, t) || (this.fontInstalledMap[t] = m.isFontInstalled(t) || C.contains(this.options.fontNamesIgnoreCheck, t)), this.fontInstalledMap[t];
              },
            },
            {
              key: "isFontDeservedToAdd",
              value: function (t) {
                return "" !== (t = t.toLowerCase()) && this.isFontInstalled(t) && -1 === m.genericFontFamilies.indexOf(t);
              },
            },
            {
              key: "colorPalette",
              value: function (t, e, n, o) {
                var r = this;
                return this.ui
                  .buttonGroup({
                    className: "note-color " + t,
                    children: [
                      this.button({
                        className: "note-current-color-button",
                        contents: this.ui.icon(this.options.icons.font + " note-recent-color"),
                        tooltip: e,
                        click: function (t) {
                          var e = i()(t.currentTarget);
                          n && o
                            ? r.context.invoke("editor.color", { backColor: e.attr("data-backColor"), foreColor: e.attr("data-foreColor") })
                            : n
                            ? r.context.invoke("editor.color", { backColor: e.attr("data-backColor") })
                            : o && r.context.invoke("editor.color", { foreColor: e.attr("data-foreColor") });
                        },
                        callback: function (t) {
                          var e = t.find(".note-recent-color");
                          n && (e.css("background-color", r.options.colorButton.backColor), t.attr("data-backColor", r.options.colorButton.backColor)), o ? (e.css("color", r.options.colorButton.foreColor), t.attr("data-foreColor", r.options.colorButton.foreColor)) : e.css("color", "transparent");
                        },
                      }),
                      this.button({ className: "dropdown-toggle", contents: this.ui.dropdownButtonContents("", this.options), tooltip: this.lang.color.more, data: { toggle: "dropdown" } }),
                      this.ui.dropdown({
                        items:
                          (n
                            ? [
                                '<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 btn-default" data-event="backColor" data-value="transparent">',
                                this.lang.color.transparent,
                                "</button>",
                                "</div>",
                                '<div class="note-holder" data-event="backColor">\x3c!-- back colors --\x3e</div>',
                                "<div>",
                                '<button type="button" class="note-color-select btn btn-light btn-default" 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>',
                                "</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 btn-default" data-event="removeFormat" data-value="foreColor">',
                                this.lang.color.resetToDefault,
                                "</button>",
                                "</div>",
                                '<div class="note-holder" data-event="foreColor">\x3c!-- fore colors --\x3e</div>',
                                "<div>",
                                '<button type="button" class="note-color-select btn btn-light btn-default" 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>',
                                "</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("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("title", d), c.prepend(u), l.click();
                          } else {
                            if (C.contains(["backColor", "foreColor"], a)) {
                              var h = "backColor" === a ? "background-color" : "color",
                                f = o.closest(".note-color").find(".note-recent-color"),
                                p = o.closest(".note-color").find(".note-current-color-button");
                              f.css(h, s), p.attr("data-" + a, s);
                            }
                            r.context.invoke("editor." + a, s);
                          }
                        },
                      }),
                    ],
                  })
                  .render();
              },
            },
            {
              key: "addToolbarButtons",
              value: function () {
                var t = this;
                this.context.memo("button.style", function () {
                  return t.ui
                    .buttonGroup([
                      t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic), t.options), tooltip: t.lang.style.style, data: { toggle: "dropdown" } }),
                      t.ui.dropdown({
                        className: "dropdown-style",
                        items: t.options.styleTags,
                        title: t.lang.style.style,
                        template: function (e) {
                          "string" == typeof e && (e = { tag: e, title: Object.prototype.hasOwnProperty.call(t.lang.style, e) ? t.lang.style[e] : e });
                          var n = e.tag,
                            o = e.title;
                          return "<" + n + (e.style ? ' style="' + e.style + '" ' : "") + (e.className ? ' class="' + e.className + '"' : "") + ">" + o + "</" + 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"></span>', 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: ' + m.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"></span>', 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"></span>', t.options), tooltip: t.lang.font.sizeunit, data: { toggle: "dropdown" } }),
                        t.ui.dropdownCheck({ className: "dropdown-fontsizeunit", checkClassName: t.options.icons.menuCheck, items: t.options.fontSizeUnits, title: t.lang.font.sizeunit, click: t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit") }),
                      ])
                      .render();
                  }),
                  this.context.memo("button.color", function () {
                    return t.colorPalette("note-color-all", t.lang.color.recent, !0, !0);
                  }),
                  this.context.memo("button.forecolor", function () {
                    return t.colorPalette("note-color-fore", t.lang.color.foreground, !1, !0);
                  }),
                  this.context.memo("button.backcolor", function () {
                    return t.colorPalette("note-color-back", t.lang.color.background, !0, !1);
                  }),
                  this.context.memo("button.ul", function () {
                    return t.button({ contents: t.ui.icon(t.options.icons.unorderedlist), tooltip: t.lang.lists.unordered + t.representShortcut("insertUnorderedList"), click: t.context.createInvokeHandler("editor.insertUnorderedList") }).render();
                  }),
                  this.context.memo("button.ol", function () {
                    return t.button({ contents: t.ui.icon(t.options.icons.orderedlist), tooltip: t.lang.lists.ordered + t.representShortcut("insertOrderedList"), click: t.context.createInvokeHandler("editor.insertOrderedList") }).render();
                  });
                var r = this.button({ contents: this.ui.icon(this.options.icons.alignLeft), tooltip: this.lang.paragraph.left + this.representShortcut("justifyLeft"), click: this.context.createInvokeHandler("editor.justifyLeft") }),
                  a = this.button({ contents: this.ui.icon(this.options.icons.alignCenter), tooltip: this.lang.paragraph.center + this.representShortcut("justifyCenter"), click: this.context.createInvokeHandler("editor.justifyCenter") }),
                  s = this.button({ contents: this.ui.icon(this.options.icons.alignRight), tooltip: this.lang.paragraph.right + this.representShortcut("justifyRight"), click: this.context.createInvokeHandler("editor.justifyRight") }),
                  l = this.button({ contents: this.ui.icon(this.options.icons.alignJustify), tooltip: this.lang.paragraph.justify + this.representShortcut("justifyFull"), click: this.context.createInvokeHandler("editor.justifyFull") }),
                  c = this.button({ contents: this.ui.icon(this.options.icons.outdent), tooltip: this.lang.paragraph.outdent + this.representShortcut("outdent"), click: this.context.createInvokeHandler("editor.outdent") }),
                  u = this.button({ contents: this.ui.icon(this.options.icons.indent), tooltip: this.lang.paragraph.indent + this.representShortcut("indent"), click: this.context.createInvokeHandler("editor.indent") });
                this.context.memo("button.justifyLeft", g.invoke(r, "render")),
                  this.context.memo("button.justifyCenter", g.invoke(a, "render")),
                  this.context.memo("button.justifyRight", g.invoke(s, "render")),
                  this.context.memo("button.justifyFull", g.invoke(l, "render")),
                  this.context.memo("button.outdent", g.invoke(c, "render")),
                  this.context.memo("button.indent", g.invoke(u, "render")),
                  this.context.memo("button.paragraph", function () {
                    return t.ui
                      .buttonGroup([
                        t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft), t.options), tooltip: t.lang.paragraph.paragraph, data: { toggle: "dropdown" } }),
                        t.ui.dropdown([t.ui.buttonGroup({ className: "note-align", children: [r, a, s, l] }), t.ui.buttonGroup({ className: "note-list", children: [c, u] })]),
                      ])
                      .render();
                  }),
                  this.context.memo("button.height", function () {
                    return t.ui
                      .buttonGroup([
                        t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight), t.options), tooltip: t.lang.font.height, data: { toggle: "dropdown" } }),
                        t.ui.dropdownCheck({ items: t.options.lineHeights, checkClassName: t.options.icons.menuCheck, className: "dropdown-line-height", title: t.lang.font.height, click: t.context.createInvokeHandler("editor.lineHeight") }),
                      ])
                      .render();
                  }),
                  this.context.memo("button.table", function () {
                    return t.ui
                      .buttonGroup(
                        [
                          t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table), t.options), tooltip: t.lang.table.table, data: { toggle: "dropdown" } }),
                          t.ui.dropdown({
                            title: t.lang.table.table,
                            className: "note-table",
                            items: [
                              '<div class="note-dimension-picker">',
                              '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>',
                              '<div class="note-dimension-picker-highlighted"></div>',
                              '<div class="note-dimension-picker-unhighlighted"></div>',
                              "</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 note-codeview-keep", contents: t.ui.icon(t.options.icons.arrowsAlt), tooltip: t.lang.options.fullscreen, click: t.context.createInvokeHandler("fullscreen.toggle") }).render();
                  }),
                  this.context.memo("button.codeview", function () {
                    return t.button({ className: "btn-codeview note-codeview-keep", contents: t.ui.icon(t.options.icons.code), tooltip: t.lang.options.codeview, click: t.context.createInvokeHandler("codeview.toggle") }).render();
                  }),
                  this.context.memo("button.redo", function () {
                    return t.button({ contents: t.ui.icon(t.options.icons.redo), tooltip: t.lang.history.redo + t.representShortcut("redo"), click: t.context.createInvokeHandler("editor.redo") }).render();
                  }),
                  this.context.memo("button.undo", function () {
                    return t.button({ contents: t.ui.icon(t.options.icons.undo), tooltip: t.lang.history.undo + t.representShortcut("undo"), click: t.context.createInvokeHandler("editor.undo") }).render();
                  }),
                  this.context.memo("button.help", function () {
                    return t.button({ contents: t.ui.icon(t.options.icons.question), tooltip: t.lang.options.help, click: t.context.createInvokeHandler("helpDialog.show") }).render();
                  });
              },
            },
            {
              key: "addImagePopoverButtons",
              value: function () {
                var t = this;
                this.context.memo("button.resizeFull", function () {
                  return t.button({ contents: '<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 = C.find(r, this.isFontInstalled.bind(this));
                  n.find(".dropdown-fontname a").each(function (t, e) {
                    var n = i()(e),
                      o = n.data("value") + "" == a + "";
                    n.toggleClass("checked", o);
                  }),
                    n.find(".note-current-fontname").text(a).css("font-family", a);
                }
                if (o["font-size"]) {
                  var s = o["font-size"];
                  n.find(".dropdown-fontsize a").each(function (t, e) {
                    var n = i()(e),
                      o = n.data("value") + "" == s + "";
                    n.toggleClass("checked", o);
                  }),
                    n.find(".note-current-fontsize").text(s);
                  var l = o["font-size-unit"];
                  n.find(".dropdown-fontsizeunit a").each(function (t, e) {
                    var n = i()(e),
                      o = n.data("value") + "" == l + "";
                    n.toggleClass("checked", o);
                  }),
                    n.find(".note-current-fontsizeunit").text(l);
                }
                if (o["line-height"]) {
                  var c = o["line-height"];
                  n.find(".dropdown-line-height li a").each(function (t, n) {
                    var o = i()(n).data("value") + "" == c + "";
                    e.className = o ? "checked" : "";
                  });
                }
              },
            },
            {
              key: "updateBtnStates",
              value: function (t, e) {
                var n = this;
                i.a.each(e, function (e, o) {
                  n.ui.toggleBtnActive(t.find(e), o());
                });
              },
            },
            {
              key: "tableMoveHandler",
              value: function (t) {
                var e,
                  n = i()(t.target.parentNode),
                  o = n.next(),
                  r = n.find(".note-dimension-picker-mousecatcher"),
                  a = n.find(".note-dimension-picker-highlighted"),
                  s = n.find(".note-dimension-picker-unhighlighted");
                if (void 0 === t.offsetX) {
                  var l = i()(t.target).offset();
                  e = { x: t.pageX - l.left, y: t.pageY - l.top };
                } else e = { x: t.offsetX, y: t.offsetY };
                var c = Math.ceil(e.x / 18) || 1,
                  u = Math.ceil(e.y / 18) || 1;
                a.css({ width: c + "em", height: u + "em" }), r.data("value", c + "x" + u), c > 3 && c < this.options.insertTableMaxSize.col && s.css({ width: c + 1 + "em" }), u > 3 && u < this.options.insertTableMaxSize.row && s.css({ height: u + 1 + "em" }), o.html(c + " x " + u);
              },
            },
          ]) && ae(e.prototype, n),
          o && ae(e, o),
          t
        );
      })();
      function le(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var ce = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.$window = i()(window)),
            (this.$document = i()(document)),
            (this.ui = i.a.summernote.ui),
            (this.$note = e.layoutInfo.note),
            (this.$editor = e.layoutInfo.editor),
            (this.$toolbar = e.layoutInfo.toolbar),
            (this.$editable = e.layoutInfo.editable),
            (this.$statusbar = e.layoutInfo.statusbar),
            (this.options = e.options),
            (this.isFollowing = !1),
            (this.followScroll = this.followScroll.bind(this));
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !this.options.airMode;
              },
            },
            {
              key: "initialize",
              value: function () {
                var t = this;
                (this.options.toolbar = this.options.toolbar || []),
                  this.options.toolbar.length ? this.context.invoke("buttons.build", this.$toolbar, this.options.toolbar) : this.$toolbar.hide(),
                  this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer),
                  this.changeContainer(!1),
                  this.$note.on("summernote.keyup summernote.mouseup summernote.change", function () {
                    t.context.invoke("buttons.updateCurrentStyle");
                  }),
                  this.context.invoke("buttons.updateCurrentStyle"),
                  this.options.followingToolbar && this.$window.on("scroll resize", this.followScroll);
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$toolbar.children().remove(), this.options.followingToolbar && this.$window.off("scroll resize", this.followScroll);
              },
            },
            {
              key: "followScroll",
              value: function () {
                if (this.$editor.hasClass("fullscreen")) return !1;
                var t = this.$editor.outerHeight(),
                  e = this.$editor.width(),
                  n = this.$toolbar.height(),
                  o = this.$statusbar.height(),
                  r = 0;
                this.options.otherStaticBar && (r = i()(this.options.otherStaticBar).outerHeight());
                var a = this.$document.scrollTop(),
                  s = this.$editor.offset().top,
                  l = s - r,
                  c = s + t - r - n - o;
                !this.isFollowing && a > l && a < c - n
                  ? ((this.isFollowing = !0), this.$editable.css({ marginTop: this.$toolbar.outerHeight() }), this.$toolbar.css({ position: "fixed", top: r, width: e, zIndex: 1e3 }))
                  : this.isFollowing && (a < l || a > c) && ((this.isFollowing = !1), this.$toolbar.css({ position: "relative", top: 0, width: "100%", zIndex: "auto" }), this.$editable.css({ marginTop: "" }));
              },
            },
            {
              key: "changeContainer",
              value: function (t) {
                t ? this.$toolbar.prependTo(this.$editor) : this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.options.followingToolbar && this.followScroll();
              },
            },
            {
              key: "updateFullscreen",
              value: function (t) {
                this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"), t), this.changeContainer(t);
              },
            },
            {
              key: "updateCodeview",
              value: function (t) {
                this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"), t), t ? this.deactivate() : this.activate();
              },
            },
            {
              key: "activate",
              value: function (t) {
                var e = this.$toolbar.find("button");
                t || (e = e.not(".note-codeview-keep")), this.ui.toggleBtn(e, !0);
              },
            },
            {
              key: "deactivate",
              value: function (t) {
                var e = this.$toolbar.find("button");
                t || (e = e.not(".note-codeview-keep")), this.ui.toggleBtn(e, !1);
              },
            },
          ]) && le(e.prototype, n),
          o && le(e, o),
          t
        );
      })();
      function ue(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var de = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$body = i()(document.body)),
            (this.$editor = e.layoutInfo.editor),
            (this.options = e.options),
            (this.lang = this.options.langInfo),
            e.memo("help.linkDialog.show", this.options.langInfo.help["linkDialog.show"]);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = this.options.dialogsInBody ? this.$body : this.options.container,
                  e = [
                    '<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 === xt.code.ENTER && (t.preventDefault(), e.trigger("click"));
                });
              },
            },
            {
              key: "toggleLinkBtn",
              value: function (t, e, n) {
                this.ui.toggleBtn(t, e.val() && n.val());
              },
            },
            {
              key: "showLinkDialog",
              value: function (t) {
                var e = this;
                return i.a
                  .Deferred(function (n) {
                    var o = e.$dialog.find(".note-link-text"),
                      i = e.$dialog.find(".note-link-url"),
                      r = e.$dialog.find(".note-link-btn"),
                      a = e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"),
                      s = e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]");
                    e.ui.onDialogShown(e.$dialog, function () {
                      e.context.triggerEvent("dialog.shown"),
                        !t.url && g.isValidUrl(t.text) && (t.url = t.text),
                        o
                          .on("input paste propertychange", function () {
                            (t.text = o.val()), e.toggleLinkBtn(r, o, i);
                          })
                          .val(t.text),
                        i
                          .on("input paste propertychange", function () {
                            t.text || o.val(i.val()), e.toggleLinkBtn(r, o, i);
                          })
                          .val(t.url),
                        m.isSupportTouch || i.trigger("focus"),
                        e.toggleLinkBtn(r, o, i),
                        e.bindEnterKey(i, r),
                        e.bindEnterKey(o, r);
                      var l = void 0 !== t.isNewWindow ? t.isNewWindow : e.context.options.linkTargetBlank;
                      a.prop("checked", l);
                      var c = !t.url && e.context.options.useProtocol;
                      s.prop("checked", c),
                        r.one("click", function (r) {
                          r.preventDefault(), n.resolve({ range: t.range, url: i.val(), text: o.val(), isNewWindow: a.is(":checked"), checkProtocol: s.is(":checked") }), e.ui.hideDialog(e.$dialog);
                        });
                    }),
                      e.ui.onDialogHidden(e.$dialog, function () {
                        o.off(), i.off(), r.off(), "pending" === n.state() && n.reject();
                      }),
                      e.ui.showDialog(e.$dialog);
                  })
                  .promise();
              },
            },
            {
              key: "show",
              value: function () {
                var t = this,
                  e = this.context.invoke("editor.getLinkInfo");
                this.context.invoke("editor.saveRange"),
                  this.showLinkDialog(e)
                    .then(function (e) {
                      t.context.invoke("editor.restoreRange"), t.context.invoke("editor.createLink", e);
                    })
                    .fail(function () {
                      t.context.invoke("editor.restoreRange");
                    });
              },
            },
          ]) && ue(e.prototype, n),
          o && ue(e, o),
          t
        );
      })();
      function he(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var fe = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.options = e.options),
            (this.events = {
              "summernote.keyup summernote.mouseup summernote.change summernote.scroll": function () {
                n.update();
              },
              "summernote.disable summernote.dialog.shown summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !C.isEmpty(this.options.popover.link);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.$popover = this.ui
                  .popover({
                    className: "note-link-popover",
                    callback: function (t) {
                      t.find(".popover-content,.note-popover-content").prepend('<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 = pt.ancestor(t.sc, pt.isAnchor),
                      n = i()(e).attr("href");
                    this.$popover.find("a").attr("href", n).text(n);
                    var o = pt.posFromPlaceholder(e),
                      r = i()(this.options.container).offset();
                    (o.top -= r.top), (o.left -= r.left), this.$popover.css({ display: "block", left: o.left, top: o.top });
                  } else this.hide();
                } else this.hide();
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && he(e.prototype, n),
          o && he(e, o),
          t
        );
      })();
      function pe(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var me = (function () {
        function t(e) {
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.$body = i()(document.body)),
            (this.$editor = e.layoutInfo.editor),
            (this.options = e.options),
            (this.lang = this.options.langInfo);
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "initialize",
              value: function () {
                var t = "";
                if (this.options.maximumImageFileSize) {
                  var e = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)),
                    n = 1 * (this.options.maximumImageFileSize / Math.pow(1024, e)).toFixed(2) + " " + " KMGTP"[e] + "B";
                  t = "<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 === xt.code.ENTER && (t.preventDefault(), e.trigger("click"));
                });
              },
            },
            {
              key: "show",
              value: function () {
                var t = this;
                this.context.invoke("editor.saveRange"),
                  this.showImageDialog()
                    .then(function (e) {
                      t.ui.hideDialog(t.$dialog),
                        t.context.invoke("editor.restoreRange"),
                        "string" == typeof e ? (t.options.callbacks.onImageLinkInsert ? t.context.triggerEvent("image.link.insert", e) : t.context.invoke("editor.insertImage", e)) : t.context.invoke("editor.insertImagesOrCallback", e);
                    })
                    .fail(function () {
                      t.context.invoke("editor.restoreRange");
                    });
              },
            },
            {
              key: "showImageDialog",
              value: function () {
                var t = this;
                return i.a.Deferred(function (e) {
                  var n = t.$dialog.find(".note-image-input"),
                    o = t.$dialog.find(".note-image-url"),
                    i = t.$dialog.find(".note-image-btn");
                  t.ui.onDialogShown(t.$dialog, function () {
                    t.context.triggerEvent("dialog.shown"),
                      n.replaceWith(
                        n
                          .clone()
                          .on("change", function (t) {
                            e.resolve(t.target.files || t.target.value);
                          })
                          .val("")
                      ),
                      o
                        .on("input paste propertychange", function () {
                          t.ui.toggleBtn(i, o.val());
                        })
                        .val(""),
                      m.isSupportTouch || o.trigger("focus"),
                      i.click(function (t) {
                        t.preventDefault(), e.resolve(o.val());
                      }),
                      t.bindEnterKey(o, i);
                  }),
                    t.ui.onDialogHidden(t.$dialog, function () {
                      n.off(), o.off(), i.off(), "pending" === e.state() && e.reject();
                    }),
                    t.ui.showDialog(t.$dialog);
                });
              },
            },
          ]) && pe(e.prototype, n),
          o && pe(e, o),
          t
        );
      })();
      function ve(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var ge = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.editable = e.layoutInfo.editable[0]),
            (this.options = e.options),
            (this.events = {
              "summernote.disable summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !C.isEmpty(this.options.popover.image);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.$popover = this.ui.popover({ className: "note-image-popover" }).render().appendTo(this.options.container);
                var t = this.$popover.find(".popover-content,.note-popover-content");
                this.context.invoke("buttons.build", t, this.options.popover.image),
                  this.$popover.on("mousedown", function (t) {
                    t.preventDefault();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "update",
              value: function (t, e) {
                if (pt.isImg(t)) {
                  var n = i()(t).offset(),
                    o = i()(this.options.container).offset(),
                    r = {};
                  this.options.popatmouse ? ((r.left = e.pageX - 20), (r.top = e.pageY)) : (r = n), (r.top -= o.top), (r.left -= o.left), this.$popover.css({ display: "block", left: r.left, top: r.top });
                } else this.hide();
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && ve(e.prototype, n),
          o && ve(e, o),
          t
        );
      })();
      function be(t, e) {
        for (var n = 0; n < e.length; n++) {
          var o = e[n];
          (o.enumerable = o.enumerable || !1), (o.configurable = !0), "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o);
        }
      }
      var ye = (function () {
        function t(e) {
          var n = this;
          !(function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
          })(this, t),
            (this.context = e),
            (this.ui = i.a.summernote.ui),
            (this.options = e.options),
            (this.events = {
              "summernote.mousedown": function (t, e) {
                n.update(e.target);
              },
              "summernote.keyup summernote.scroll summernote.change": function () {
                n.update();
              },
              "summernote.disable summernote.blur": function () {
                n.hide();
              },
            });
        }
        var e, n, o;
        return (
          (e = t),
          (n = [
            {
              key: "shouldInitialize",
              value: function () {
                return !C.isEmpty(this.options.popover.table);
              },
            },
            {
              key: "initialize",
              value: function () {
                this.$popover = this.ui.popover({ className: "note-table-popover" }).render().appendTo(this.options.container);
                var t = this.$popover.find(".popover-content,.note-popover-content");
                this.context.invoke("buttons.build", t, this.options.popover.table),
                  m.isFF && document.execCommand("enableInlineTableEditing", !1, !1),
                  this.$popover.on("mousedown", function (t) {
                    t.preventDefault();
                  });
              },
            },
            {
              key: "destroy",
              value: function () {
                this.$popover.remove();
              },
            },
            {
              key: "update",
              value: function (t) {
                if (this.context.isDisabled()) return !1;
                var e = pt.isCell(t);
                if (e) {
                  var n = pt.posFromPlaceholder(t),
                    o = i()(this.options.container).offset();
                  (n.top -= o.top), (n.left -= o.left), this.$popover.css({ display: "block", left: n.left, top: n.top });
                } else this.hide();
                return e;
              },
            },
            {
              key: "hide",
              value: function () {
                this.$popover.hide();
              },
            },
          ]) && be(e.prototype, n),
          o && be(e, o),
          t
        );
      })();
      function 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 = [
                    '<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 === xt.code.ENTER && (t.preventDefault(), e.trigger("click"));
                });
              },
            },
            {
              key: "createVideoNode",
              value: function (t) {
                var e,
                  n = t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/),
                  o = t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/),
                  r = t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),
                  a = t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/),
                  s = t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/),
                  l = t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),
                  c = t.match(/\/\/v\.qq\.com.*?vid=(.+)/),
                  u = t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/),
                  d = t.match(/^.+.(mp4|m4v)$/),
                  h = t.match(/^.+.(ogg|ogv)$/),
                  f = t.match(/^.+.(webm)$/),
                  p = t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);
                if (n && 11 === n[1].length) {
                  var m = n[1],
                    v = 0;
                  if (void 0 !== n[2]) {
                    var g = n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);
                    if (g) for (var b = [3600, 60, 1], 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/txp/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());
                      }),
                      m.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);
                });
              },
            },
          ]) && 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) {
          !(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.18</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[m.isMac ? "mac" : "pc"];
                return Object.keys(e)
                  .map(function (n) {
                    var o = e[n],
                      r = i()('<div><div class="help-list-item"></div></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");
                  });
              },
            },
          ]) && 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.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 && !C.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: "updateCodeview",
              value: function (t) {
                this.ui.toggleBtnActive(this.$popover.find(".btn-codeview"), t), t && this.hide();
              },
            },
            {
              key: "hide",
              value: function () {
                this.hidable && this.$popover.hide();
              },
            },
          ]) && Se(e.prototype, n),
          o && Se(e, o),
          t
        );
      })();
      function Ee(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 Ie = (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), wt.createFromNodeBefore(o).select();
                  } else wt.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 = pt.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 === xt.code.ENTER ? (t.preventDefault(), this.replace()) : t.keyCode === xt.code.UP ? (t.preventDefault(), this.moveUp()) : t.keyCode === xt.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 + '"></div>');
                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 (!C.contains([xt.code.ENTER, xt.code.UP, xt.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 = g.rect2bnd(C.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();
              },
            },
          ]) && Ee(e.prototype, n),
          o && Ee(e, o),
          t
        );
      })();
      i.a.summernote = i.a.extend(i.a.summernote, {
        version: "0.8.18",
        plugins: {},
        dom: pt,
        range: wt,
        lists: C,
        options: {
          langInfo: i.a.summernote.lang["en-US"],
          editing: !0,
          modules: {
            editor: Ht,
            clipboard: Bt,
            dropzone: Ot,
            codeview: Kt,
            statusbar: qt,
            fullscreen: Gt,
            handle: Zt,
            hintPopover: Ie,
            autoLink: Jt,
            autoSync: ee,
            autoReplace: oe,
            placeholder: re,
            buttons: se,
            toolbar: ce,
            linkDialog: de,
            linkPopover: fe,
            imageDialog: me,
            imagePopover: ge,
            tablePopover: ye,
            videoDialog: we,
            helpDialog: xe,
            airPopover: Te,
          },
          buttons: {},
          lang: "en-US",
          followingToolbar: !1,
          toolbarPosition: "top",
          otherStaticBar: "",
          codeviewKeepButton: !1,
          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,
          showDomainOnlyForAutolink: !1,
          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: {
              ESC: "escape",
              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: {
              ESC: "escape",
              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-end",
            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",
          },
        },
      });
    },
    4: function (t, e, n) {},
    52: 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 panel panel-default"/>'),
        l = r.a.create('<div class="panel-heading note-toolbar" role="toolbar"/>'),
        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" contentEditable="true" role="textbox" aria-multiline="true"/>'),
        h = r.a.create(
          [
            '<output class="note-status-output" role="status" aria-live="polite"></output>',
            '<div class="note-statusbar" role="status">',
            '<div class="note-resizebar" aria-label="Resize">',
            '<div class="note-icon-bar"></div>',
            '<div class="note-icon-bar"></div>',
            '<div class="note-icon-bar"></div>',
            "</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"></div>', '<output class="note-status-output" role="status" aria-live="polite"></output>'].join("")),
        m = r.a.create('<div class="note-btn-group btn-group">'),
        v = r.a.create('<ul class="note-dropdown-menu dropdown-menu">', 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 '<li aria-label="' + n + '"><a href="#" ' + ('data-value="' + n + '"' + (void 0 !== i ? ' data-option="' + i + '"' : "")) + ">" + o + "</a></li>";
                })
                .join("")
            : e.items;
          t.html(n).attr({ "aria-label": e.title }), e && e.codeviewKeepButton && t.addClass("note-codeview-keep");
        }),
        g = function (t, e) {
          return t + " " + C(e.icons.caret, "span");
        },
        b = r.a.create('<ul class="note-dropdown-menu dropdown-menu note-check">', 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 '<li aria-label="' + t + '"><a href="#" data-value="' + n + '">' + C(e.checkClassName) + " " + o + "</a></li>";
                })
                .join("")
            : e.items;
          t.html(n).attr({ "aria-label": e.title }), e && e.codeviewKeepButton && t.addClass("note-codeview-keep");
        }),
        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"><button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">&times;</button><h4 class="modal-title">' + e.title + "</h4></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>', '<div class="popover-content note-children-container"></div>', "</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="checkbox"></div>', function (t, e) {
          t.html(["<label" + (e.id ? ' for="note-' + e.id + '"' : "") + ">", '<input type="checkbox"' + (e.id ? ' id="note-' + e.id + '"' : ""), e.checked ? " checked" : "", ' aria-checked="' + (e.checked ? "true" : "false") + '"/>', e.text ? e.text : "", "</label>"].join(""));
        }),
        C = function (t, e) {
          return "<" + (e = e || "i") + ' class="' + t + '"></' + e + ">";
        },
        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,
            checkbox: w,
            icon: C,
            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-default 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");
                    }),
                  n && n.codeviewButton && e.addClass("note-codeview-keep");
              })(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(4);
      i.a.summernote = i.a.extend(i.a.summernote, { ui_template: x, interface: "bs3" });
    },
  });
});
//# sourceMappingURL=summernote.min.js.map

/* https://github.com/DiemenDesign/summernote-pagebreak */
(function (factory) {
  if (typeof define === "function" && define.amd) {
    define(["jquery"], factory);
  } else if (typeof module === "object" && module.exports) {
    module.exports = factory(require_once("jquery"));
  } else {
    factory(window.jQuery);
  }
})(function ($) {
  $.extend(true, $.summernote.lang, {
    "en-US": {
      pagebreak: {
        tooltip: "Page Break",
      },
    },
  });
  $.extend($.summernote.options, {
    pagebreak: {
      icon: '<i class="note-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14"><path d="M 4,5.5 4,1 l 9,0 0,4.5 -0.750612,0 0,-3.74939 -7.498776,0 0,3.75061 L 4,5.50122 Z M 13,7.75061 13,13 4,13 4,7.75061 l 0.750612,0 0,4.5 7.5,0 0,-4.5 0.749388,0 z m -6,-1.5 1.5,0 L 8.5,7 7,7 7,6.25061 Z m -2.249388,0 1.5,0 0,0.74939 -1.5,0 0,-0.74939 z m 4.5,0 1.5,0 0,0.74939 -1.5,0 0,-0.74939 z m 2.249388,0 1.5,0 L 13,7 11.5,7 11.5,6.25061 Z M 1,4.37469 3.250612,6.62531 1,8.87469 l 0,-4.5 z"/></svg></i>',
      css: '@media all{.note-editable .page-break{position:relative;display:block;width:100%;height:1px;background-color:#ddd;margin:15px 0;}.note-editable .page-break:after{content:"Page-Break";position:absolute;width:100%;height:20px;top:-10px;color:#ddd;-webkit-text-shadow:0 0 5px #fff,0 0 5px #fff,0 0 5px #fff,0 0 5px #fff;-moz-text-shadow:0 0 5px #fff,0 0 5px #fff,0 0 5px #fff,0 0 5px #fff;text-shadow:0 0 5px #fff,0 0 5px #fff,0 0 5px #fff,0 0 5px #fff;text-align:center;}}@media print{.note-editable .page-break{display:block;page-break-before:always;}}',
    },
  });
  $.extend($.summernote.plugins, {
    pagebreak: function (context) {
      var ui = $.summernote.ui;
      var options = context.options;
      var lang = options.langInfo;
      $("head").append("<style>" + options.pagebreak.css + "</style>");
      context.memo("button.pagebreak", function () {
        var button = ui.button({
          contents: options.pagebreak.icon,
          tooltip: lang.pagebreak.tooltip,
          container: "body",
          click: function (e) {
            e.preventDefault();
            if (getSelection().rangeCount > 0) {
              var el = getSelection().getRangeAt(0).commonAncestorContainer.parentNode;
              if ($(el).hasClass("note-editable")) {
                el = getSelection().getRangeAt(0).commonAncestorContainer;
              }
              if (!$(el).hasClass("page-break")) {
                if ($(el).next("div.page-break").length < 1) $('<div class="page-break" style="page-break-after: always;"></div><p><br></p>').insertAfter(el);
              }
            } else {
              if ($(".note-editable div").last().attr("class") !== "page-break") $(".note-editable").append('<div class="page-break" style="page-break-after: always;"></div><p><br></p>');
            }

            // Launching this method to force Summernote sync it's content with the bound textarea element
            context.invoke("editor.insertText", "");
          },
        });
        return button.render();
      });
    },
  });
});
