Files
newwalls.pl/modules/ets_cfultimate/views/js/tinymce/themes/modern/theme.min.js
2024-12-17 13:43:22 +01:00

5528 lines
241 KiB
JavaScript

/**
* 2007-2021 ETS-Soft
*
* NOTICE OF LICENSE
*
* This file is not open source! Each license that you purchased is only available for 1 wesite only.
* If you want to use this file on more websites (or projects), you need to purchase additional licenses.
* You are not allowed to redistribute, resell, lease, license, sub-license or offer our resources to any third party.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please contact us for extra customization service at an affordable price
*
* @author ETS-Soft <etssoft.jsc@gmail.com>
* @copyright 2007-2021 ETS-Soft
* @license Valid for 1 website (or project) for each purchase of license
* International Registered Trademark & Property of ETS-Soft
*/
! function() {
"use strict";
var e, t, n, i, r, o = tinymce.util.Tools.resolve("tinymce.ThemeManager"),
l = tinymce.util.Tools.resolve("tinymce.EditorManager"),
w = tinymce.util.Tools.resolve("tinymce.util.Tools"),
d = function(e) {
return !1 !== c(e)
},
c = function(e) {
return e.getParam("menubar")
},
f = function(e) {
return e.getParam("toolbar_items_size")
},
h = function(e) {
return e.getParam("menu")
},
m = function(e) {
return !1 === e.settings.skin
},
g = function(e) {
var t = e.getParam("resize", "vertical");
return !1 === t ? "none" : "both" === t ? "both" : "vertical"
},
p = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
v = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
b = tinymce.util.Tools.resolve("tinymce.util.I18n"),
s = function(e) {
return e.fire("SkinLoaded")
},
y = function(e) {
return e.fire("ResizeEditor")
},
x = function(e) {
return e.fire("BeforeRenderUI")
},
a = function(t, n) {
return function() {
var e = t.find(n)[0];
e && e.focus(!0)
}
},
_ = function(e, t) {
e.shortcuts.add("Alt+F9", "", a(t, "menubar")), e.shortcuts.add("Alt+F10,F10", "", a(t, "toolbar")), e.shortcuts.add("Alt+F11", "", a(t, "elementpath")), t.on("cancel", function() {
e.focus()
})
},
R = tinymce.util.Tools.resolve("tinymce.geom.Rect"),
u = tinymce.util.Tools.resolve("tinymce.util.Delay"),
C = function(e) {
return function() {
return e
}
},
k = C(!1),
E = C(!0),
H = {
noop: function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
},
noarg: function(n) {
return function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
return n()
}
},
compose: function(n, i) {
return function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
return n(i.apply(null, arguments))
}
},
constant: C,
identity: function(e) {
return e
},
tripleEquals: function(e, t) {
return e === t
},
curry: function(o) {
for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];
for (var s = new Array(arguments.length - 1), n = 1; n < arguments.length; n++) s[n - 1] = arguments[n];
return function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
for (var n = new Array(arguments.length), i = 0; i < n.length; i++) n[i] = arguments[i];
var r = s.concat(n);
return o.apply(null, r)
}
},
not: function(n) {
return function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
return !n.apply(null, arguments)
}
},
die: function(e) {
return function() {
throw new Error(e)
}
},
apply: function(e) {
return e()
},
call: function(e) {
e()
},
never: k,
always: E
},
S = H.never,
M = H.always,
T = function() {
return P
},
P = (i = {
fold: function(e, t) {
return e()
},
is: S,
isSome: S,
isNone: M,
getOr: n = function(e) {
return e
},
getOrThunk: t = function(e) {
return e()
},
getOrDie: function(e) {
throw new Error(e || "error: getOrDie called on none.")
},
or: n,
orThunk: t,
map: T,
ap: T,
each: function() {},
bind: T,
flatten: T,
exists: S,
forall: M,
filter: T,
equals: e = function(e) {
return e.isNone()
},
equals_: e,
toArray: function() {
return []
},
toString: H.constant("none()")
}, Object.freeze && Object.freeze(i), i),
W = function(n) {
var e = function() {
return n
},
t = function() {
return r
},
i = function(e) {
return e(n)
},
r = {
fold: function(e, t) {
return t(n)
},
is: function(e) {
return n === e
},
isSome: M,
isNone: S,
getOr: e,
getOrThunk: e,
getOrDie: e,
or: t,
orThunk: t,
map: function(e) {
return W(e(n))
},
ap: function(e) {
return e.fold(T, function(e) {
return W(e(n))
})
},
each: function(e) {
e(n)
},
bind: i,
flatten: e,
exists: i,
forall: i,
filter: function(e) {
return e(n) ? r : P
},
equals: function(e) {
return e.is(n)
},
equals_: function(e, t) {
return e.fold(S, function(e) {
return t(n, e)
})
},
toArray: function() {
return [n]
},
toString: function() {
return "some(" + n + ")"
}
};
return r
},
N = {
some: W,
none: T,
from: function(e) {
return null === e || e === undefined ? P : W(e)
}
},
D = function(e) {
return e ? e.getRoot().uiContainer : null
},
A = {
getUiContainerDelta: function(e) {
var t = D(e);
if (t && "static" !== p.DOM.getStyle(t, "position", !0)) {
var n = p.DOM.getPos(t),
i = t.scrollLeft - n.x,
r = t.scrollTop - n.y;
return N.some({
x: i,
y: r
})
}
return N.none()
},
setUiContainer: function(e, t) {
var n = p.DOM.select(e.settings.ui_container)[0];
t.getRoot().uiContainer = n
},
getUiContainer: D,
inheritUiContainer: function(e, t) {
return t.uiContainer = D(e)
}
},
B = function(i, e, r) {
var o, s = [];
if (e) return w.each(e.split(/[ ,]/), function(t) {
var e, n = function() {
var e = i.selection;
t.settings.stateSelector && e.selectorChanged(t.settings.stateSelector, function(e) {
t.active(e)
}, !0), t.settings.disabledStateSelector && e.selectorChanged(t.settings.disabledStateSelector, function(e) {
t.disabled(e)
})
};
"|" === t ? o = null : (o || (o = {
type: "buttongroup",
items: []
}, s.push(o)), i.buttons[t] && (e = t, "function" == typeof(t = i.buttons[e]) && (t = t()), t.type = t.type || "button", t.size = r, t = v.create(t), o.items.push(t), i.initialized ? n() : i.on("init", n)))
}), {
type: "toolbar",
layout: "flow",
items: s
}
},
O = B,
z = function(n, i) {
var e, t, r = [];
if (w.each(!1 === (t = (e = n).getParam("toolbar")) ? [] : w.isArray(t) ? w.grep(t, function(e) {
return 0 < e.length
}) : function(e, t) {
for (var n = [], i = 1; i < 10; i++) {
var r = e["toolbar" + i];
if (!r) break;
n.push(r)
}
var o = e.toolbar ? [e.toolbar] : [t];
return 0 < n.length ? n : o
}(e.settings, "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"), function(e) {
var t;
(t = e) && r.push(B(n, t, i))
}), r.length) return {
type: "panel",
layout: "stack",
classes: "toolbar-grp",
ariaRoot: !0,
ariaRemember: !0,
items: r
}
},
L = p.DOM,
I = function(e) {
return {
left: e.x,
top: e.y,
width: e.w,
height: e.h,
right: e.x + e.w,
bottom: e.y + e.h
}
},
F = function(e, t) {
e.moveTo(t.left, t.top)
},
U = function(e, t, n, i, r, o) {
return o = I({
x: t,
y: n,
w: o.w,
h: o.h
}), e && (o = e({
elementRect: I(i),
contentAreaRect: I(r),
panelRect: o
})), o
},
V = function(x) {
var i, o = function() {
return x.contextToolbars || []
},
n = function(e, t) {
var n, i, r, o, s, a, l, u = x.getParam("inline_toolbar_position_handler");
if (!x.removed) {
if (!e || !e.toolbar.panel) return c = x, void w.each(c.contextToolbars, function(e) {
e.panel && e.panel.hide()
});
var c, d, f, h, m;
l = ["bc-tc", "tc-bc", "tl-bl", "bl-tl", "tr-br", "br-tr"], s = e.toolbar.panel, t && s.show(), d = e.element, f = L.getPos(x.getContentAreaContainer()), h = x.dom.getRect(d), "BODY" === (m = x.dom.getRoot()).nodeName && (h.x -= m.ownerDocument.documentElement.scrollLeft || m.scrollLeft, h.y -= m.ownerDocument.documentElement.scrollTop || m.scrollTop), h.x += f.x, h.y += f.y, r = h, i = L.getRect(s.getEl()), o = L.getRect(x.getContentAreaContainer() || x.getBody());
var g, p, v, b = A.getUiContainerDelta(s).getOr({
x: 0,
y: 0
});
if (r.x += b.x, r.y += b.y, i.x += b.x, i.y += b.y, o.x += b.x, o.y += b.y, "inline" !== L.getStyle(e.element, "display", !0)) {
var y = e.element.getBoundingClientRect();
r.w = y.width, r.h = y.height
}
x.inline || (o.w = x.getDoc().documentElement.offsetWidth), x.selection.controlSelection.isResizable(e.element) && r.w < 25 && (r = R.inflate(r, 0, 8)), n = R.findBestRelativePosition(i, r, o, l), r = R.clamp(r, o), n ? (a = R.relativePosition(i, r, n), F(s, U(u, a.x, a.y, r, o, i))) : (o.h += i.h, (r = R.intersect(o, r)) ? (n = R.findBestRelativePosition(i, r, o, ["bc-tc", "bl-tl", "br-tr"])) ? (a = R.relativePosition(i, r, n), F(s, U(u, a.x, a.y, r, o, i))) : F(s, U(u, r.x, r.y, r, o, i)) : s.hide()), g = s, v = function(e, t) {
return e === t
}, p = (p = n) ? p.substr(0, 2) : "", w.each({
t: "down",
b: "up"
}, function(e, t) {
g.classes.toggle("arrow-" + e, v(t, p.substr(0, 1)))
}), w.each({
l: "left",
r: "right"
}, function(e, t) {
g.classes.toggle("arrow-" + e, v(t, p.substr(1, 1)))
})
}
},
r = function(e) {
return function() {
u.requestAnimationFrame(function() {
x.selection && n(a(x.selection.getNode()), e)
})
}
},
t = function(e) {
var t;
if (e.toolbar.panel) return e.toolbar.panel.show(), void n(e);
t = v.create({
type: "floatpanel",
role: "dialog",
classes: "tinymce tinymce-inline arrow",
ariaLabel: "Inline toolbar",
layout: "flex",
direction: "column",
align: "stretch",
autohide: !1,
autofix: !0,
fixed: !0,
border: 1,
items: O(x, e.toolbar.items),
oncancel: function() {
x.focus()
}
}), A.setUiContainer(x, t),
function(e) {
if (!i) {
var t = r(!0),
n = A.getUiContainer(e);
i = x.selection.getScrollContainer() || x.getWin(), L.bind(i, "scroll", t), L.bind(n, "scroll", t), x.on("remove", function() {
L.unbind(i, "scroll", t), L.unbind(n, "scroll", t)
})
}
}(t), (e.toolbar.panel = t).renderTo().reflow(), n(e)
},
s = function() {
w.each(o(), function(e) {
e.panel && e.panel.hide()
})
},
a = function(e) {
var t, n, i, r = o();
for (t = (i = x.$(e).parents().add(e)).length - 1; 0 <= t; t--)
for (n = r.length - 1; 0 <= n; n--)
if (r[n].predicate(i[t])) return {
toolbar: r[n],
element: i[t]
};
return null
};
x.on("click keyup setContent ObjectResized", function(e) {
("setcontent" !== e.type || e.selection) && u.setEditorTimeout(x, function() {
var e;
(e = a(x.selection.getNode())) ? (s(), t(e)) : s()
})
}), x.on("blur hide contextmenu", s), x.on("ObjectResizeStart", function() {
var e = a(x.selection.getNode());
e && e.toolbar.panel && e.toolbar.panel.hide()
}), x.on("ResizeEditor ResizeWindow", r(!0)), x.on("nodeChange", r(!1)), x.on("remove", function() {
w.each(o(), function(e) {
e.panel && e.panel.remove()
}), x.contextToolbars = {}
}), x.shortcuts.add("ctrl+shift+e > ctrl+shift+p", "", function() {
var e = a(x.selection.getNode());
e && e.toolbar.panel && e.toolbar.panel.items()[0].focus()
})
},
j = function(t) {
return function(e) {
return function(e) {
if (null === e) return "null";
var t = typeof e;
return "object" === t && Array.prototype.isPrototypeOf(e) ? "array" : "object" === t && String.prototype.isPrototypeOf(e) ? "string" : t
}(e) === t
}
},
q = {
isString: j("string"),
isObject: j("object"),
isArray: j("array"),
isNull: j("null"),
isBoolean: j("boolean"),
isUndefined: j("undefined"),
isFunction: j("function"),
isNumber: j("number")
},
Y = (r = Array.prototype.indexOf) === undefined ? function(e, t) {
return Q(e, t)
} : function(e, t) {
return r.call(e, t)
},
$ = function(e, t) {
return -1 < Y(e, t)
},
X = function(e, t) {
for (var n = e.length, i = new Array(n), r = 0; r < n; r++) {
var o = e[r];
i[r] = t(o, r, e)
}
return i
},
J = function(e, t) {
for (var n = 0, i = e.length; n < i; n++) t(e[n], n, e)
},
G = function(e, t) {
for (var n = e.length - 1; 0 <= n; n--) t(e[n], n, e)
},
K = function(e, t) {
for (var n = [], i = 0, r = e.length; i < r; i++) {
var o = e[i];
t(o, i, e) && n.push(o)
}
return n
},
Z = function(e, t) {
for (var n = 0, i = e.length; n < i; n++)
if (t(e[n], n, e)) return N.some(n);
return N.none()
},
Q = function(e, t) {
for (var n = 0, i = e.length; n < i; ++n)
if (e[n] === t) return n;
return -1
},
ee = Array.prototype.push,
te = function(e) {
for (var t = [], n = 0, i = e.length; n < i; ++n) {
if (!Array.prototype.isPrototypeOf(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
ee.apply(t, e[n])
}
return t
},
ne = function(e, t) {
for (var n = 0, i = e.length; n < i; ++n)
if (!0 !== t(e[n], n, e)) return !1;
return !0
},
ie = Array.prototype.slice,
re = q.isFunction(Array.from) ? Array.from : function(e) {
return ie.call(e)
},
oe = {
map: X,
each: J,
eachr: G,
partition: function(e, t) {
for (var n = [], i = [], r = 0, o = e.length; r < o; r++) {
var s = e[r];
(t(s, r, e) ? n : i).push(s)
}
return {
pass: n,
fail: i
}
},
filter: K,
groupBy: function(e, t) {
if (0 === e.length) return [];
for (var n = t(e[0]), i = [], r = [], o = 0, s = e.length; o < s; o++) {
var a = e[o],
l = t(a);
l !== n && (i.push(r), r = []), n = l, r.push(a)
}
return 0 !== r.length && i.push(r), i
},
indexOf: function(e, t) {
var n = Y(e, t);
return -1 === n ? N.none() : N.some(n)
},
foldr: function(e, t, n) {
return G(e, function(e) {
n = t(n, e)
}), n
},
foldl: function(e, t, n) {
return J(e, function(e) {
n = t(n, e)
}), n
},
find: function(e, t) {
for (var n = 0, i = e.length; n < i; n++) {
var r = e[n];
if (t(r, n, e)) return N.some(r)
}
return N.none()
},
findIndex: Z,
flatten: te,
bind: function(e, t) {
var n = X(e, t);
return te(n)
},
forall: ne,
exists: function(e, t) {
return Z(e, t).isSome()
},
contains: $,
equal: function(e, n) {
return e.length === n.length && ne(e, function(e, t) {
return e === n[t]
})
},
reverse: function(e) {
var t = ie.call(e, 0);
return t.reverse(), t
},
chunk: function(e, t) {
for (var n = [], i = 0; i < e.length; i += t) {
var r = e.slice(i, i + t);
n.push(r)
}
return n
},
difference: function(e, t) {
return K(e, function(e) {
return !$(t, e)
})
},
mapToObject: function(e, t) {
for (var n = {}, i = 0, r = e.length; i < r; i++) {
var o = e[i];
n[String(o)] = t(o, i)
}
return n
},
pure: function(e) {
return [e]
},
sort: function(e, t) {
var n = ie.call(e, 0);
return n.sort(t), n
},
range: function(e, t) {
for (var n = [], i = 0; i < e; i++) n.push(t(i));
return n
},
head: function(e) {
return 0 === e.length ? N.none() : N.some(e[0])
},
last: function(e) {
return 0 === e.length ? N.none() : N.some(e[e.length - 1])
},
from: re
},
se = {
file: {
title: "File",
items: "newdocument restoredraft | preview | print"
},
edit: {
title: "Edit",
items: "undo redo | cut copy paste pastetext | selectall"
},
view: {
title: "View",
items: "code | visualaid visualchars visualblocks | spellchecker | preview fullscreen"
},
insert: {
title: "Insert",
items: "image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime"
},
format: {
title: "Format",
items: "bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat"
},
tools: {
title: "Tools",
items: "spellchecker spellcheckerlanguage | a11ycheck code"
},
table: {
title: "Table"
},
help: {
title: "Help"
}
},
ae = function(e, t) {
return "|" === e ? {
name: "|",
item: {
text: "|"
}
} : t ? {
name: e,
item: t
} : null
},
le = function(e) {
return e && "|" === e.item.text
},
ue = function(n, e, t, r) {
var i, o, s, a, l, u, c, d;
return e ? (o = e[r], a = !0) : o = se[r], o && (i = {
text: o.title
}, s = [], w.each((o.items || "").split(/[ ,]/), function(e) {
var t = ae(e, n[e]);
t && s.push(t)
}), a || w.each(n, function(e, t) {
var n, i;
e.context !== r || (n = s, i = t, oe.findIndex(n, function(e) {
return e.name === i
}).isSome()) || ("before" === e.separator && s.push({
name: "|",
item: {
text: "|"
}
}), e.prependToContext ? s.unshift(ae(t, e)) : s.push(ae(t, e)), "after" === e.separator && s.push({
name: "|",
item: {
text: "|"
}
}))
}), i.menu = oe.map((l = s, u = t, c = oe.filter(l, function(e) {
return !1 === u.hasOwnProperty(e.name)
}), d = oe.filter(c, function(e, t, n) {
return !le(e) || !le(n[t - 1])
}), oe.filter(d, function(e, t, n) {
return !le(e) || 0 < t && t < n.length - 1
})), function(e) {
return e.item
}), !i.menu.length) ? null : i
},
ce = function(e) {
for (var t, n = [], i = function(e) {
var t, n = [],
i = h(e);
if (i)
for (t in i) n.push(t);
else
for (t in se) n.push(t);
return n
}(e), r = w.makeMap((t = e, t.getParam("removed_menuitems", "")).split(/[ ,]/)), o = c(e), s = "string" == typeof o ? o.split(/[ ,]/) : i, a = 0; a < s.length; a++) {
var l = s[a],
u = ue(e.menuItems, h(e), r, l);
u && n.push(u)
}
return n
},
de = p.DOM,
fe = function(e) {
return {
width: e.clientWidth,
height: e.clientHeight
}
},
he = function(e, t, n) {
var i, r, o, s;
i = e.getContainer(), r = e.getContentAreaContainer().firstChild, o = fe(i), s = fe(r), null !== t && (t = Math.max(e.getParam("min_width", 100, "number"), t), t = Math.min(e.getParam("max_width", 65535, "number"), t), de.setStyle(i, "width", t + (o.width - s.width)), de.setStyle(r, "width", t)), n = Math.max(e.getParam("min_height", 100, "number"), n), n = Math.min(e.getParam("max_height", 65535, "number"), n), de.setStyle(r, "height", n), y(e)
},
me = he,
ge = function(e, t, n) {
var i = e.getContentAreaContainer();
he(e, i.clientWidth + t, i.clientHeight + n)
},
pe = tinymce.util.Tools.resolve("tinymce.Env"),
ve = function(e, t, n) {
var i, r = e.settings[n];
r && r((i = t.getEl("body"), {
element: function() {
return i
}
}))
},
be = function(c, d, f) {
return function(e) {
var t, n, i, r, o, s = e.control,
a = s.parents().filter("panel")[0],
l = a.find("#" + d)[0],
u = (t = f, n = d, w.grep(t, function(e) {
return e.name === n
})[0]);
i = d, r = a, o = f, w.each(o, function(e) {
var t = r.items().filter("#" + e.name)[0];
t && t.visible() && e.name !== i && (ve(e, t, "onhide"), t.visible(!1))
}), s.parent().items().each(function(e) {
e.active(!1)
}), l && l.visible() ? (ve(u, l, "onhide"), l.hide(), s.active(!1)) : (l ? l.show() : (l = v.create({
type: "container",
name: d,
layout: "stack",
classes: "sidebar-panel",
html: ""
}), a.prepend(l), ve(u, l, "onrender")), ve(u, l, "onshow"), s.active(!0)), y(c)
}
},
ye = function(e) {
return !(pe.ie && !(11 <= pe.ie) || !e.sidebars) && 0 < e.sidebars.length
},
xe = function(n) {
return {
type: "panel",
name: "sidebar",
layout: "stack",
classes: "sidebar",
items: [{
type: "toolbar",
layout: "stack",
classes: "sidebar-toolbar",
items: w.map(n.sidebars, function(e) {
var t = e.settings;
return {
type: "button",
icon: t.icon,
image: t.image,
tooltip: t.tooltip,
onclick: be(n, e.name, n.sidebars)
}
})
}]
}
},
we = function(e) {
var t = function() {
e._skinLoaded = !0, s(e)
};
return function() {
e.initialized ? t() : e.on("init", t)
}
},
_e = p.DOM,
Re = function(e) {
return {
type: "panel",
name: "iframe",
layout: "stack",
classes: "edit-area",
border: e,
html: ""
}
},
Ce = function(t, e, n) {
var i, r, o, s, a;
if (!1 === m(t) && n.skinUiCss ? _e.styleSheetLoader.load(n.skinUiCss, we(t)) : we(t)(), i = e.panel = v.create({
type: "panel",
role: "application",
classes: "tinymce",
style: "visibility: hidden",
layout: "stack",
border: 1,
items: [{
type: "container",
classes: "top-part",
items: [!1 === d(t) ? null : {
type: "menubar",
border: "0 0 1 0",
items: ce(t)
}, z(t, f(t))]
}, ye(t) ? (s = t, {
type: "panel",
layout: "stack",
classes: "edit-aria-container",
border: "1 0 0 0",
items: [Re("0"), xe(s)]
}) : Re("1 0 0 0")]
}), A.setUiContainer(t, i), "none" !== g(t) && (r = {
type: "resizehandle",
direction: g(t),
onResizeStart: function() {
var e = t.getContentAreaContainer().firstChild;
o = {
width: e.clientWidth,
height: e.clientHeight
}
},
onResize: function(e) {
"both" === g(t) ? me(t, o.width + e.deltaX, o.height + e.deltaY) : me(t, null, o.height + e.deltaY)
}
}), t.getParam("statusbar", !0, "boolean")) {
var l = '',
u = t.getParam("branding", !0, "boolean") ? {
type: "label",
classes: "branding",
html: " " + l
} : null;
i.add({
type: "panel",
name: "statusbar",
classes: "statusbar",
layout: "flow",
border: "1 0 0 0",
ariaRoot: !0,
items: [{
type: "elementpath",
editor: t
}, r, u]
})
}
return x(t), t.on("SwitchMode", (a = i, function(e) {
a.find("*").disabled("readonly" === e.mode)
})), i.renderBefore(n.targetNode).reflow(), t.getParam("readonly", !1, "boolean") && t.setMode("readonly"), n.width && _e.setStyle(i.getEl(), "width", n.width), t.on("remove", function() {
i.remove(), i = null
}), _(t, i), V(t), {
iframeContainer: i.find("#iframe")[0].getEl(),
editorContainer: i.getEl()
}
},
ke = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),
Ee = 0,
He = {
id: function() {
return "mceu_" + Ee++
},
create: function(e, t, n) {
var i = document.createElement(e);
return p.DOM.setAttribs(i, t), "string" == typeof n ? i.innerHTML = n : w.each(n, function(e) {
e.nodeType && i.appendChild(e)
}), i
},
createFragment: function(e) {
return p.DOM.createFragment(e)
},
getWindowSize: function() {
return p.DOM.getViewPort()
},
getSize: function(e) {
var t, n;
if (e.getBoundingClientRect) {
var i = e.getBoundingClientRect();
t = Math.max(i.width || i.right - i.left, e.offsetWidth), n = Math.max(i.height || i.bottom - i.bottom, e.offsetHeight)
} else t = e.offsetWidth, n = e.offsetHeight;
return {
width: t,
height: n
}
},
getPos: function(e, t) {
return p.DOM.getPos(e, t || He.getContainer())
},
getContainer: function() {
return pe.container ? pe.container : document.body
},
getViewPort: function(e) {
return p.DOM.getViewPort(e)
},
get: function(e) {
return document.getElementById(e)
},
addClass: function(e, t) {
return p.DOM.addClass(e, t)
},
removeClass: function(e, t) {
return p.DOM.removeClass(e, t)
},
hasClass: function(e, t) {
return p.DOM.hasClass(e, t)
},
toggleClass: function(e, t, n) {
return p.DOM.toggleClass(e, t, n)
},
css: function(e, t, n) {
return p.DOM.setStyle(e, t, n)
},
getRuntimeStyle: function(e, t) {
return p.DOM.getStyle(e, t, !0)
},
on: function(e, t, n, i) {
return p.DOM.bind(e, t, n, i)
},
off: function(e, t, n) {
return p.DOM.unbind(e, t, n)
},
fire: function(e, t, n) {
return p.DOM.fire(e, t, n)
},
innerHtml: function(e, t) {
p.DOM.setHTML(e, t)
}
},
Se = function(e) {
return "static" === He.getRuntimeStyle(e, "position")
},
Me = function(e) {
return e.state.get("fixed")
};
function Te(e, t, n) {
var i, r, o, s, a, l, u, c, d, f;
return d = Pe(), o = (r = He.getPos(t, A.getUiContainer(e))).x, s = r.y, Me(e) && Se(document.body) && (o -= d.x, s -= d.y), i = e.getEl(), a = (f = He.getSize(i)).width, l = f.height, u = (f = He.getSize(t)).width, c = f.height, "b" === (n = (n || "").split(""))[0] && (s += c), "r" === n[1] && (o += u), "c" === n[0] && (s += Math.round(c / 2)), "c" === n[1] && (o += Math.round(u / 2)), "b" === n[3] && (s -= l), "r" === n[4] && (o -= a), "c" === n[3] && (s -= Math.round(l / 2)), "c" === n[4] && (o -= Math.round(a / 2)), {
x: o,
y: s,
w: a,
h: l
}
}
var Pe = function() {
var e = window,
t = Math.max(e.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft),
n = Math.max(e.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);
return {
x: t,
y: n,
w: t + (e.innerWidth || document.documentElement.clientWidth),
h: n + (e.innerHeight || document.documentElement.clientHeight)
}
},
We = function(e) {
var t, n = A.getUiContainer(e);
return n && !Me(e) ? {
x: 0,
y: 0,
w: (t = n).scrollWidth - 1,
h: t.scrollHeight - 1
} : Pe()
},
Ne = {
testMoveRel: function(e, t) {
for (var n = We(this), i = 0; i < t.length; i++) {
var r = Te(this, e, t[i]);
if (Me(this)) {
if (0 < r.x && r.x + r.w < n.w && 0 < r.y && r.y + r.h < n.h) return t[i]
} else if (r.x > n.x && r.x + r.w < n.w && r.y > n.y && r.y + r.h < n.h) return t[i]
}
return t[0]
},
moveRel: function(e, t) {
"string" != typeof t && (t = this.testMoveRel(e, t));
var n = Te(this, e, t);
return this.moveTo(n.x, n.y)
},
moveBy: function(e, t) {
var n = this.layoutRect();
return this.moveTo(n.x + e, n.y + t), this
},
moveTo: function(e, t) {
var n = this;
function i(e, t, n) {
return e < 0 ? 0 : t < e + n && (e = t - n) < 0 ? 0 : e
}
if (n.settings.constrainToViewport) {
var r = We(this),
o = n.layoutRect();
e = i(e, r.w, o.w), t = i(t, r.h, o.h)
}
var s = A.getUiContainer(n);
return s && Se(s) && !Me(n) && (e -= s.scrollLeft, t -= s.scrollTop), s && (e += 1, t += 1), n.state.get("rendered") ? n.layoutRect({
x: e,
y: t
}).repaint() : (n.settings.x = e, n.settings.y = t), n.fire("move", {
x: e,
y: t
}), n
}
},
De = tinymce.util.Tools.resolve("tinymce.util.Class"),
Ae = tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),
Be = function(e) {
var t;
if (e) return "number" == typeof e ? {
top: e = e || 0,
left: e,
bottom: e,
right: e
} : (1 === (t = (e = e.split(" ")).length) ? e[1] = e[2] = e[3] = e[0] : 2 === t ? (e[2] = e[0], e[3] = e[1]) : 3 === t && (e[3] = e[1]), {
top: parseInt(e[0], 10) || 0,
right: parseInt(e[1], 10) || 0,
bottom: parseInt(e[2], 10) || 0,
left: parseInt(e[3], 10) || 0
})
},
Oe = function(i, e) {
function t(e) {
var t = parseFloat(function(e) {
var t = i.ownerDocument.defaultView;
if (t) {
var n = t.getComputedStyle(i, null);
return n ? (e = e.replace(/[A-Z]/g, function(e) {
return "-" + e
}), n.getPropertyValue(e)) : null
}
return i.currentStyle[e]
}(e));
return isNaN(t) ? 0 : t
}
return {
top: t(e + "TopWidth"),
right: t(e + "RightWidth"),
bottom: t(e + "BottomWidth"),
left: t(e + "LeftWidth")
}
};
function ze() {}
function Le(e) {
this.cls = [], this.cls._map = {}, this.onchange = e || ze, this.prefix = ""
}
w.extend(Le.prototype, {
add: function(e) {
return e && !this.contains(e) && (this.cls._map[e] = !0, this.cls.push(e), this._change()), this
},
remove: function(e) {
if (this.contains(e)) {
var t = void 0;
for (t = 0; t < this.cls.length && this.cls[t] !== e; t++);
this.cls.splice(t, 1), delete this.cls._map[e], this._change()
}
return this
},
toggle: function(e, t) {
var n = this.contains(e);
return n !== t && (n ? this.remove(e) : this.add(e), this._change()), this
},
contains: function(e) {
return !!this.cls._map[e]
},
_change: function() {
delete this.clsValue, this.onchange.call(this)
}
}), Le.prototype.toString = function() {
var e;
if (this.clsValue) return this.clsValue;
e = "";
for (var t = 0; t < this.cls.length; t++) 0 < t && (e += " "), e += this.prefix + this.cls[t];
return e
};
var Ie, Fe, Ue, Ve = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,
je = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
qe = /^\s*|\s*$/g,
Ye = De.extend({
init: function(e) {
var o = this.match;
function s(e, t, n) {
var i;
function r(e) {
e && t.push(e)
}
return r(function(t) {
if (t) return t = t.toLowerCase(),
function(e) {
return "*" === t || e.type === t
}
}((i = Ve.exec(e.replace(qe, "")))[1])), r(function(t) {
if (t) return function(e) {
return e._name === t
}
}(i[2])), r(function(n) {
if (n) return n = n.split("."),
function(e) {
for (var t = n.length; t--;)
if (!e.classes.contains(n[t])) return !1;
return !0
}
}(i[3])), r(function(n, i, r) {
if (n) return function(e) {
var t = e[n] ? e[n]() : "";
return i ? "=" === i ? t === r : "*=" === i ? 0 <= t.indexOf(r) : "~=" === i ? 0 <= (" " + t + " ").indexOf(" " + r + " ") : "!=" === i ? t !== r : "^=" === i ? 0 === t.indexOf(r) : "$=" === i && t.substr(t.length - r.length) === r : !!r
}
}(i[4], i[5], i[6])), r(function(i) {
var t;
if (i) return (i = /(?:not\((.+)\))|(.+)/i.exec(i))[1] ? (t = a(i[1], []), function(e) {
return !o(e, t)
}) : (i = i[2], function(e, t, n) {
return "first" === i ? 0 === t : "last" === i ? t === n - 1 : "even" === i ? t % 2 == 0 : "odd" === i ? t % 2 == 1 : !!e[i] && e[i]()
})
}(i[7])), t.pseudo = !!i[7], t.direct = n, t
}
function a(e, t) {
var n, i, r, o = [];
do {
if (je.exec(""), (i = je.exec(e)) && (e = i[3], o.push(i[1]), i[2])) {
n = i[3];
break
}
} while (i);
for (n && a(n, t), e = [], r = 0; r < o.length; r++) ">" !== o[r] && e.push(s(o[r], [], ">" === o[r - 1]));
return t.push(e), t
}
this._selectors = a(e, [])
},
match: function(e, t) {
var n, i, r, o, s, a, l, u, c, d, f, h, m;
for (n = 0, i = (t = t || this._selectors).length; n < i; n++) {
for (m = e, h = 0, r = (o = (s = t[n]).length) - 1; 0 <= r; r--)
for (u = s[r]; m;) {
if (u.pseudo)
for (c = d = (f = m.parent().items()).length; c-- && f[c] !== m;);
for (a = 0, l = u.length; a < l; a++)
if (!u[a](m, c, d)) {
a = l + 1;
break
}
if (a === l) {
h++;
break
}
if (r === o - 1) break;
m = m.parent()
}
if (h === o) return !0
}
return !1
},
find: function(e) {
var t, n, u = [],
i = this._selectors;
function c(e, t, n) {
var i, r, o, s, a, l = t[n];
for (i = 0, r = e.length; i < r; i++) {
for (a = e[i], o = 0, s = l.length; o < s; o++)
if (!l[o](a, i, r)) {
o = s + 1;
break
}
if (o === s) n === t.length - 1 ? u.push(a) : a.items && c(a.items(), t, n + 1);
else if (l.direct) return;
a.items && c(a.items(), t, n)
}
}
if (e.items) {
for (t = 0, n = i.length; t < n; t++) c(e.items(), i[t], 0);
1 < n && (u = function(e) {
for (var t, n = [], i = e.length; i--;)(t = e[i]).__checked || (n.push(t), t.__checked = 1);
for (i = n.length; i--;) delete n[i].__checked;
return n
}(u))
}
return Ie || (Ie = Ye.Collection), new Ie(u)
}
}),
$e = Array.prototype.push,
Xe = Array.prototype.slice;
Ue = {
length: 0,
init: function(e) {
e && this.add(e)
},
add: function(e) {
return w.isArray(e) ? $e.apply(this, e) : e instanceof Fe ? this.add(e.toArray()) : $e.call(this, e), this
},
set: function(e) {
var t, n = this,
i = n.length;
for (n.length = 0, n.add(e), t = n.length; t < i; t++) delete n[t];
return n
},
filter: function(t) {
var e, n, i, r, o = [];
for ("string" == typeof t ? (t = new Ye(t), r = function(e) {
return t.match(e)
}) : r = t, e = 0, n = this.length; e < n; e++) r(i = this[e]) && o.push(i);
return new Fe(o)
},
slice: function() {
return new Fe(Xe.apply(this, arguments))
},
eq: function(e) {
return -1 === e ? this.slice(e) : this.slice(e, +e + 1)
},
each: function(e) {
return w.each(this, e), this
},
toArray: function() {
return w.toArray(this)
},
indexOf: function(e) {
for (var t = this.length; t-- && this[t] !== e;);
return t
},
reverse: function() {
return new Fe(w.toArray(this).reverse())
},
hasClass: function(e) {
return !!this[0] && this[0].classes.contains(e)
},
prop: function(t, n) {
var e;
return n !== undefined ? (this.each(function(e) {
e[t] && e[t](n)
}), this) : (e = this[0]) && e[t] ? e[t]() : void 0
},
exec: function(t) {
var n = w.toArray(arguments).slice(1);
return this.each(function(e) {
e[t] && e[t].apply(e, n)
}), this
},
remove: function() {
for (var e = this.length; e--;) this[e].remove();
return this
},
addClass: function(t) {
return this.each(function(e) {
e.classes.add(t)
})
},
removeClass: function(t) {
return this.each(function(e) {
e.classes.remove(t)
})
}
}, w.each("fire on off show hide append prepend before after reflow".split(" "), function(n) {
Ue[n] = function() {
var t = w.toArray(arguments);
return this.each(function(e) {
n in e && e[n].apply(e, t)
}), this
}
}), w.each("text name disabled active selected checked visible parent value data".split(" "), function(t) {
Ue[t] = function(e) {
return this.prop(t, e)
}
}), Fe = De.extend(Ue);
var Je = Ye.Collection = Fe,
Ge = function(e) {
this.create = e.create
};
Ge.create = function(r, o) {
return new Ge({
create: function(t, n) {
var i, e = function(e) {
t.set(n, e.value)
};
return t.on("change:" + n, function(e) {
r.set(o, e.value)
}), r.on("change:" + o, e), (i = t._bindings) || (i = t._bindings = [], t.on("destroy", function() {
for (var e = i.length; e--;) i[e]()
})), i.push(function() {
r.off("change:" + o, e)
}), r.get(o)
}
})
};
var Ke = tinymce.util.Tools.resolve("tinymce.util.Observable");
function Ze(e) {
return 0 < e.nodeType
}
var Qe, et, tt = De.extend({
Mixins: [Ke],
init: function(e) {
var t, n;
for (t in e = e || {})(n = e[t]) instanceof Ge && (e[t] = n.create(this, t));
this.data = e
},
set: function(t, n) {
var i, r, o = this.data[t];
if (n instanceof Ge && (n = n.create(this, t)), "object" == typeof t) {
for (i in t) this.set(i, t[i]);
return this
}
return function e(t, n) {
var i, r;
if (t === n) return !0;
if (null === t || null === n) return t === n;
if ("object" != typeof t || "object" != typeof n) return t === n;
if (w.isArray(n)) {
if (t.length !== n.length) return !1;
for (i = t.length; i--;)
if (!e(t[i], n[i])) return !1
}
if (Ze(t) || Ze(n)) return t === n;
for (i in r = {}, n) {
if (!e(t[i], n[i])) return !1;
r[i] = !0
}
for (i in t)
if (!r[i] && !e(t[i], n[i])) return !1;
return !0
}(o, n) || (this.data[t] = n, r = {
target: this,
name: t,
value: n,
oldValue: o
}, this.fire("change:" + t, r), this.fire("change", r)), this
},
get: function(e) {
return this.data[e]
},
has: function(e) {
return e in this.data
},
bind: function(e) {
return Ge.create(this, e)
},
destroy: function() {
this.fire("destroy")
}
}),
nt = {},
it = {
add: function(e) {
var t = e.parent();
if (t) {
if (!t._layout || t._layout.isNative()) return;
nt[t._id] || (nt[t._id] = t), Qe || (Qe = !0, u.requestAnimationFrame(function() {
var e, t;
for (e in Qe = !1, nt)(t = nt[e]).state.get("rendered") && t.reflow();
nt = {}
}, document.body))
}
},
remove: function(e) {
nt[e._id] && delete nt[e._id]
}
},
rt = "onmousewheel" in document,
ot = !1,
st = 0,
at = {
Statics: {
classPrefix: "mce-"
},
isRtl: function() {
return et.rtl
},
classPrefix: "mce-",
init: function(t) {
var e, n, i = this;
function r(e) {
var t;
for (e = e.split(" "), t = 0; t < e.length; t++) i.classes.add(e[t])
}
i.settings = t = w.extend({}, i.Defaults, t), i._id = t.id || "mceu_" + st++, i._aria = {
role: t.role
}, i._elmCache = {}, i.$ = ke, i.state = new tt({
visible: !0,
active: !1,
disabled: !1,
value: ""
}), i.data = new tt(t.data), i.classes = new Le(function() {
i.state.get("rendered") && (i.getEl().className = this.toString())
}), i.classes.prefix = i.classPrefix, (e = t.classes) && (i.Defaults && (n = i.Defaults.classes) && e !== n && r(n), r(e)), w.each("title text name visible disabled active value".split(" "), function(e) {
e in t && i[e](t[e])
}), i.on("click", function() {
if (i.disabled()) return !1
}), i.settings = t, i.borderBox = Be(t.border), i.paddingBox = Be(t.padding), i.marginBox = Be(t.margin), t.hidden && i.hide()
},
Properties: "parent,name",
getContainerElm: function() {
var e = A.getUiContainer(this);
return e || He.getContainer()
},
getParentCtrl: function(e) {
for (var t, n = this.getRoot().controlIdLookup; e && n && !(t = n[e.id]);) e = e.parentNode;
return t
},
initLayoutRect: function() {
var e, t, n, i, r, o, s, a, l, u, c = this,
d = c.settings,
f = c.getEl();
e = c.borderBox = c.borderBox || Oe(f, "border"), c.paddingBox = c.paddingBox || Oe(f, "padding"), c.marginBox = c.marginBox || Oe(f, "margin"), u = He.getSize(f), a = d.minWidth, l = d.minHeight, r = a || u.width, o = l || u.height, n = d.width, i = d.height, s = void 0 !== (s = d.autoResize) ? s : !n && !i, n = n || r, i = i || o;
var h = e.left + e.right,
m = e.top + e.bottom,
g = d.maxWidth || 65535,
p = d.maxHeight || 65535;
return c._layoutRect = t = {
x: d.x || 0,
y: d.y || 0,
w: n,
h: i,
deltaW: h,
deltaH: m,
contentW: n - h,
contentH: i - m,
innerW: n - h,
innerH: i - m,
startMinWidth: a || 0,
startMinHeight: l || 0,
minW: Math.min(r, g),
minH: Math.min(o, p),
maxW: g,
maxH: p,
autoResize: s,
scrollW: 0
}, c._lastLayoutRect = {}, t
},
layoutRect: function(e) {
var t, n, i, r, o, s = this,
a = s._layoutRect;
return a || (a = s.initLayoutRect()), e ? (i = a.deltaW, r = a.deltaH, e.x !== undefined && (a.x = e.x), e.y !== undefined && (a.y = e.y), e.minW !== undefined && (a.minW = e.minW), e.minH !== undefined && (a.minH = e.minH), (n = e.w) !== undefined && (n = (n = n < a.minW ? a.minW : n) > a.maxW ? a.maxW : n, a.w = n, a.innerW = n - i), (n = e.h) !== undefined && (n = (n = n < a.minH ? a.minH : n) > a.maxH ? a.maxH : n, a.h = n, a.innerH = n - r), (n = e.innerW) !== undefined && (n = (n = n < a.minW - i ? a.minW - i : n) > a.maxW - i ? a.maxW - i : n, a.innerW = n, a.w = n + i), (n = e.innerH) !== undefined && (n = (n = n < a.minH - r ? a.minH - r : n) > a.maxH - r ? a.maxH - r : n, a.innerH = n, a.h = n + r), e.contentW !== undefined && (a.contentW = e.contentW), e.contentH !== undefined && (a.contentH = e.contentH), (t = s._lastLayoutRect).x === a.x && t.y === a.y && t.w === a.w && t.h === a.h || ((o = et.repaintControls) && o.map && !o.map[s._id] && (o.push(s), o.map[s._id] = !0), t.x = a.x, t.y = a.y, t.w = a.w, t.h = a.h), s) : a
},
repaint: function() {
var e, t, n, i, r, o, s, a, l, u, c = this;
l = document.createRange ? function(e) {
return e
} : Math.round, e = c.getEl().style, i = c._layoutRect, a = c._lastRepaintRect || {}, o = (r = c.borderBox).left + r.right, s = r.top + r.bottom, i.x !== a.x && (e.left = l(i.x) + "px", a.x = i.x), i.y !== a.y && (e.top = l(i.y) + "px", a.y = i.y), i.w !== a.w && (u = l(i.w - o), e.width = (0 <= u ? u : 0) + "px", a.w = i.w), i.h !== a.h && (u = l(i.h - s), e.height = (0 <= u ? u : 0) + "px", a.h = i.h), c._hasBody && i.innerW !== a.innerW && (u = l(i.innerW), (n = c.getEl("body")) && ((t = n.style).width = (0 <= u ? u : 0) + "px"), a.innerW = i.innerW), c._hasBody && i.innerH !== a.innerH && (u = l(i.innerH), (n = n || c.getEl("body")) && ((t = t || n.style).height = (0 <= u ? u : 0) + "px"), a.innerH = i.innerH), c._lastRepaintRect = a, c.fire("repaint", {}, !1)
},
updateLayoutRect: function() {
var e = this;
e.parent()._lastRect = null, He.css(e.getEl(), {
width: "",
height: ""
}), e._layoutRect = e._lastRepaintRect = e._lastLayoutRect = null, e.initLayoutRect()
},
on: function(e, t) {
var n, i, r, o = this;
return lt(o).on(e, "string" != typeof(n = t) ? n : function(e) {
return i || o.parentsAndSelf().each(function(e) {
var t = e.settings.callbacks;
if (t && (i = t[n])) return r = e, !1
}), i ? i.call(r, e) : (e.action = n, void this.fire("execute", e))
}), o
},
off: function(e, t) {
return lt(this).off(e, t), this
},
fire: function(e, t, n) {
if ((t = t || {}).control || (t.control = this), t = lt(this).fire(e, t), !1 !== n && this.parent)
for (var i = this.parent(); i && !t.isPropagationStopped();) i.fire(e, t, !1), i = i.parent();
return t
},
hasEventListeners: function(e) {
return lt(this).has(e)
},
parents: function(e) {
var t, n = new Je;
for (t = this.parent(); t; t = t.parent()) n.add(t);
return e && (n = n.filter(e)), n
},
parentsAndSelf: function(e) {
return new Je(this).add(this.parents(e))
},
next: function() {
var e = this.parent().items();
return e[e.indexOf(this) + 1]
},
prev: function() {
var e = this.parent().items();
return e[e.indexOf(this) - 1]
},
innerHtml: function(e) {
return this.$el.html(e), this
},
getEl: function(e) {
var t = e ? this._id + "-" + e : this._id;
return this._elmCache[t] || (this._elmCache[t] = ke("#" + t)[0]), this._elmCache[t]
},
show: function() {
return this.visible(!0)
},
hide: function() {
return this.visible(!1)
},
focus: function() {
try {
this.getEl().focus()
} catch (e) {}
return this
},
blur: function() {
return this.getEl().blur(), this
},
aria: function(e, t) {
var n = this,
i = n.getEl(n.ariaTarget);
return void 0 === t ? n._aria[e] : (n._aria[e] = t, n.state.get("rendered") && i.setAttribute("role" === e ? e : "aria-" + e, t), n)
},
encode: function(e, t) {
return !1 !== t && (e = this.translate(e)), (e || "").replace(/[&<>"]/g, function(e) {
return "&#" + e.charCodeAt(0) + ";"
})
},
translate: function(e) {
return et.translate ? et.translate(e) : e
},
before: function(e) {
var t = this.parent();
return t && t.insert(e, t.items().indexOf(this), !0), this
},
after: function(e) {
var t = this.parent();
return t && t.insert(e, t.items().indexOf(this)), this
},
remove: function() {
var t, e, n = this,
i = n.getEl(),
r = n.parent();
if (n.items) {
var o = n.items().toArray();
for (e = o.length; e--;) o[e].remove()
}
r && r.items && (t = [], r.items().each(function(e) {
e !== n && t.push(e)
}), r.items().set(t), r._lastRect = null), n._eventsRoot && n._eventsRoot === n && ke(i).off();
var s = n.getRoot().controlIdLookup;
return s && delete s[n._id], i && i.parentNode && i.parentNode.removeChild(i), n.state.set("rendered", !1), n.state.destroy(), n.fire("remove"), n
},
renderBefore: function(e) {
return ke(e).before(this.renderHtml()), this.postRender(), this
},
renderTo: function(e) {
return ke(e || this.getContainerElm()).append(this.renderHtml()), this.postRender(), this
},
preRender: function() {},
render: function() {},
renderHtml: function() {
return '<div id="' + this._id + '" class="' + this.classes + '"></div>'
},
postRender: function() {
var e, t, n, i, r, o = this,
s = o.settings;
for (i in o.$el = ke(o.getEl()), o.state.set("rendered", !0), s) 0 === i.indexOf("on") && o.on(i.substr(2), s[i]);
if (o._eventsRoot) {
for (n = o.parent(); !r && n; n = n.parent()) r = n._eventsRoot;
if (r)
for (i in r._nativeEvents) o._nativeEvents[i] = !0
}
ut(o), s.style && (e = o.getEl()) && (e.setAttribute("style", s.style), e.style.cssText = s.style), o.settings.border && (t = o.borderBox, o.$el.css({
"border-top-width": t.top,
"border-right-width": t.right,
"border-bottom-width": t.bottom,
"border-left-width": t.left
}));
var a = o.getRoot();
for (var l in a.controlIdLookup || (a.controlIdLookup = {}), (a.controlIdLookup[o._id] = o)._aria) o.aria(l, o._aria[l]);
!1 === o.state.get("visible") && (o.getEl().style.display = "none"), o.bindStates(), o.state.on("change:visible", function(e) {
var t, n = e.value;
o.state.get("rendered") && (o.getEl().style.display = !1 === n ? "none" : "", o.getEl().getBoundingClientRect()), (t = o.parent()) && (t._lastRect = null), o.fire(n ? "show" : "hide"), it.add(o)
}), o.fire("postrender", {}, !1)
},
bindStates: function() {},
scrollIntoView: function(e) {
var t, n, i, r, o, s, a = this.getEl(),
l = a.parentNode,
u = function(e, t) {
var n, i, r = e;
for (n = i = 0; r && r !== t && r.nodeType;) n += r.offsetLeft || 0, i += r.offsetTop || 0, r = r.offsetParent;
return {
x: n,
y: i
}
}(a, l);
return t = u.x, n = u.y, i = a.offsetWidth, r = a.offsetHeight, o = l.clientWidth, s = l.clientHeight, "end" === e ? (t -= o - i, n -= s - r) : "center" === e && (t -= o / 2 - i / 2, n -= s / 2 - r / 2), l.scrollLeft = t, l.scrollTop = n, this
},
getRoot: function() {
for (var e, t = this, n = []; t;) {
if (t.rootControl) {
e = t.rootControl;
break
}
n.push(t), t = (e = t).parent()
}
e || (e = this);
for (var i = n.length; i--;) n[i].rootControl = e;
return e
},
reflow: function() {
it.remove(this);
var e = this.parent();
return e && e._layout && !e._layout.isNative() && e.reflow(), this
}
};
function lt(n) {
return n._eventDispatcher || (n._eventDispatcher = new Ae({
scope: n,
toggleEvent: function(e, t) {
t && Ae.isNative(e) && (n._nativeEvents || (n._nativeEvents = {}), n._nativeEvents[e] = !0, n.state.get("rendered") && ut(n))
}
})), n._eventDispatcher
}
function ut(a) {
var e, t, n, l, i, r;
function o(e) {
var t = a.getParentCtrl(e.target);
t && t.fire(e.type, e)
}
function s() {
var e = l._lastHoverCtrl;
e && (e.fire("mouseleave", {
target: e.getEl()
}), e.parents().each(function(e) {
e.fire("mouseleave", {
target: e.getEl()
})
}), l._lastHoverCtrl = null)
}
function u(e) {
var t, n, i, r = a.getParentCtrl(e.target),
o = l._lastHoverCtrl,
s = 0;
if (r !== o) {
if ((n = (l._lastHoverCtrl = r).parents().toArray().reverse()).push(r), o) {
for ((i = o.parents().toArray().reverse()).push(o), s = 0; s < i.length && n[s] === i[s]; s++);
for (t = i.length - 1; s <= t; t--)(o = i[t]).fire("mouseleave", {
target: o.getEl()
})
}
for (t = s; t < n.length; t++)(r = n[t]).fire("mouseenter", {
target: r.getEl()
})
}
}
function c(e) {
e.preventDefault(), "mousewheel" === e.type ? (e.deltaY = -.025 * e.wheelDelta, e.wheelDeltaX && (e.deltaX = -.025 * e.wheelDeltaX)) : (e.deltaX = 0, e.deltaY = e.detail), e = a.fire("wheel", e)
}
if (i = a._nativeEvents) {
for ((n = a.parents().toArray()).unshift(a), e = 0, t = n.length; !l && e < t; e++) l = n[e]._eventsRoot;
for (l || (l = n[n.length - 1] || a), a._eventsRoot = l, t = e, e = 0; e < t; e++) n[e]._eventsRoot = l;
var d = l._delegates;
for (r in d || (d = l._delegates = {}), i) {
if (!i) return !1;
"wheel" !== r || ot ? ("mouseenter" === r || "mouseleave" === r ? l._hasMouseEnter || (ke(l.getEl()).on("mouseleave", s).on("mouseover", u), l._hasMouseEnter = 1) : d[r] || (ke(l.getEl()).on(r, o), d[r] = !0), i[r] = !1) : rt ? ke(a.getEl()).on("mousewheel", c) : ke(a.getEl()).on("DOMMouseScroll", c)
}
}
}
w.each("text title visible disabled active value".split(" "), function(t) {
at[t] = function(e) {
return 0 === arguments.length ? this.state.get(t) : (void 0 !== e && this.state.set(t, e), this)
}
});
var ct = et = De.extend(at),
dt = function(e) {
return !!e.getAttribute("data-mce-tabstop")
};
function ft(e) {
var o, r, n = e.root;
function i(e) {
return e && 1 === e.nodeType
}
try {
o = document.activeElement
} catch (t) {
o = document.body
}
function s(e) {
return i(e = e || o) ? e.getAttribute("role") : null
}
function a(e) {
for (var t, n = e || o; n = n.parentNode;)
if (t = s(n)) return t
}
function l(e) {
var t = o;
if (i(t)) return t.getAttribute("aria-" + e)
}
function u(e) {
var t = e.tagName.toUpperCase();
return "INPUT" === t || "TEXTAREA" === t || "SELECT" === t
}
function c(t) {
var r = [];
return function e(t) {
if (1 === t.nodeType && "none" !== t.style.display && !t.disabled) {
var n;
(u(n = t) && !n.hidden || dt(n) || /^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n))) && r.push(t);
for (var i = 0; i < t.childNodes.length; i++) e(t.childNodes[i])
}
}(t || n.getEl()), r
}
function d(e) {
var t, n;
(n = (e = e || r).parents().toArray()).unshift(e);
for (var i = 0; i < n.length && !(t = n[i]).settings.ariaRoot; i++);
return t
}
function f(e, t) {
return e < 0 ? e = t.length - 1 : e >= t.length && (e = 0), t[e] && t[e].focus(), e
}
function h(e, t) {
var n = -1,
i = d();
t = t || c(i.getEl());
for (var r = 0; r < t.length; r++) t[r] === o && (n = r);
n += e, i.lastAriaIndex = f(n, t)
}
function m() {
"tablist" === a() ? h(-1, c(o.parentNode)) : r.parent().submenu ? b() : h(-1)
}
function g() {
var e = s(),
t = a();
"tablist" === t ? h(1, c(o.parentNode)) : "menuitem" === e && "menu" === t && l("haspopup") ? y() : h(1)
}
function p() {
h(-1)
}
function v() {
var e = s(),
t = a();
"menuitem" === e && "menubar" === t ? y() : "button" === e && l("haspopup") ? y({
key: "down"
}) : h(1)
}
function b() {
r.fire("cancel")
}
function y(e) {
e = e || {}, r.fire("click", {
target: o,
aria: e
})
}
return r = n.getParentCtrl(o), n.on("keydown", function(e) {
function t(e, t) {
u(o) || dt(o) || "slider" !== s(o) && !1 !== t(e) && e.preventDefault()
}
if (!e.isDefaultPrevented()) switch (e.keyCode) {
case 37:
t(e, m);
break;
case 39:
t(e, g);
break;
case 38:
t(e, p);
break;
case 40:
t(e, v);
break;
case 27:
b();
break;
case 14:
case 13:
case 32:
t(e, y);
break;
case 9:
! function(e) {
if ("tablist" === a()) {
var t = c(r.getEl("body"))[0];
t && t.focus()
} else h(e.shiftKey ? -1 : 1)
}(e), e.preventDefault()
}
}), n.on("focusin", function(e) {
o = e.target, r = e.control
}), {
focusFirst: function(e) {
var t = d(e),
n = c(t.getEl());
t.settings.ariaRemember && "lastAriaIndex" in t ? f(t.lastAriaIndex, n) : f(0, n)
}
}
}
var ht = {},
mt = ct.extend({
init: function(e) {
var t = this;
t._super(e), (e = t.settings).fixed && t.state.set("fixed", !0), t._items = new Je, t.isRtl() && t.classes.add("rtl"), t.bodyClasses = new Le(function() {
t.state.get("rendered") && (t.getEl("body").className = this.toString())
}), t.bodyClasses.prefix = t.classPrefix, t.classes.add("container"), t.bodyClasses.add("container-body"), e.containerCls && t.classes.add(e.containerCls), t._layout = v.create((e.layout || "") + "layout"), t.settings.items ? t.add(t.settings.items) : t.add(t.render()), t._hasBody = !0
},
items: function() {
return this._items
},
find: function(e) {
return (e = ht[e] = ht[e] || new Ye(e)).find(this)
},
add: function(e) {
return this.items().add(this.create(e)).parent(this), this
},
focus: function(e) {
var t, n, i, r = this;
if (!e || !(n = r.keyboardNav || r.parents().eq(-1)[0].keyboardNav)) return i = r.find("*"), r.statusbar && i.add(r.statusbar.items()), i.each(function(e) {
if (e.settings.autofocus) return t = null, !1;
e.canFocus && (t = t || e)
}), t && t.focus(), r;
n.focusFirst(r)
},
replace: function(e, t) {
for (var n, i = this.items(), r = i.length; r--;)
if (i[r] === e) {
i[r] = t;
break
}
0 <= r && ((n = t.getEl()) && n.parentNode.removeChild(n), (n = e.getEl()) && n.parentNode.removeChild(n)), t.parent(this)
},
create: function(e) {
var t, n = this,
i = [];
return w.isArray(e) || (e = [e]), w.each(e, function(e) {
e && (e instanceof ct || ("string" == typeof e && (e = {
type: e
}), t = w.extend({}, n.settings.defaults, e), e.type = t.type = t.type || e.type || n.settings.defaultType || (t.defaults ? t.defaults.type : null), e = v.create(t)), i.push(e))
}), i
},
renderNew: function() {
var i = this;
return i.items().each(function(e, t) {
var n;
e.parent(i), e.state.get("rendered") || ((n = i.getEl("body")).hasChildNodes() && t <= n.childNodes.length - 1 ? ke(n.childNodes[t]).before(e.renderHtml()) : ke(n).append(e.renderHtml()), e.postRender(), it.add(e))
}), i._layout.applyClasses(i.items().filter(":visible")), i._lastRect = null, i
},
append: function(e) {
return this.add(e).renderNew()
},
prepend: function(e) {
return this.items().set(this.create(e).concat(this.items().toArray())), this.renderNew()
},
insert: function(e, t, n) {
var i, r, o;
return e = this.create(e), i = this.items(), !n && t < i.length - 1 && (t += 1), 0 <= t && t < i.length && (r = i.slice(0, t).toArray(), o = i.slice(t).toArray(), i.set(r.concat(e, o))), this.renderNew()
},
fromJSON: function(e) {
for (var t in e) this.find("#" + t).value(e[t]);
return this
},
toJSON: function() {
var i = {};
return this.find("*").each(function(e) {
var t = e.name(),
n = e.value();
t && void 0 !== n && (i[t] = n)
}), i
},
renderHtml: function() {
var e = this,
t = e._layout,
n = this.settings.role;
return e.preRender(), t.preRender(e), '<div id="' + e._id + '" class="' + e.classes + '"' + (n ? ' role="' + this.settings.role + '"' : "") + '><div id="' + e._id + '-body" class="' + e.bodyClasses + '">' + (e.settings.html || "") + t.renderHtml(e) + "</div></div>"
},
postRender: function() {
var e, t = this;
return t.items().exec("postRender"), t._super(), t._layout.postRender(t), t.state.set("rendered", !0), t.settings.style && t.$el.css(t.settings.style), t.settings.border && (e = t.borderBox, t.$el.css({
"border-top-width": e.top,
"border-right-width": e.right,
"border-bottom-width": e.bottom,
"border-left-width": e.left
})), t.parent() || (t.keyboardNav = ft({
root: t
})), t
},
initLayoutRect: function() {
var e = this._super();
return this._layout.recalc(this), e
},
recalc: function() {
var e = this,
t = e._layoutRect,
n = e._lastRect;
if (!n || n.w !== t.w || n.h !== t.h) return e._layout.recalc(e), t = e.layoutRect(), e._lastRect = {
x: t.x,
y: t.y,
w: t.w,
h: t.h
}, !0
},
reflow: function() {
var e;
if (it.remove(this), this.visible()) {
for (ct.repaintControls = [], ct.repaintControls.map = {}, this.recalc(), e = ct.repaintControls.length; e--;) ct.repaintControls[e].repaint();
"flow" !== this.settings.layout && "stack" !== this.settings.layout && this.repaint(), ct.repaintControls = []
}
return this
}
});
function gt(e) {
var t, n;
if (e.changedTouches)
for (t = "screenX screenY pageX pageY clientX clientY".split(" "), n = 0; n < t.length; n++) e[t[n]] = e.changedTouches[0][t[n]]
}
function pt(e, h) {
var m, g, t, p, v, b, y, x = h.document || document;
h = h || {};
var w = x.getElementById(h.handle || e);
t = function(e) {
var t, n, i, r, o, s, a, l, u, c, d, f = (t = x, u = Math.max, n = t.documentElement, i = t.body, r = u(n.scrollWidth, i.scrollWidth), o = u(n.clientWidth, i.clientWidth), s = u(n.offsetWidth, i.offsetWidth), a = u(n.scrollHeight, i.scrollHeight), l = u(n.clientHeight, i.clientHeight), {
width: r < s ? o : r,
height: a < u(n.offsetHeight, i.offsetHeight) ? l : a
});
gt(e), e.preventDefault(), g = e.button, c = w, b = e.screenX, y = e.screenY, d = window.getComputedStyle ? window.getComputedStyle(c, null).getPropertyValue("cursor") : c.runtimeStyle.cursor, m = ke("<div></div>").css({
position: "absolute",
top: 0,
left: 0,
width: f.width,
height: f.height,
zIndex: 2147483647,
opacity: 1e-4,
cursor: d
}).appendTo(x.body), ke(x).on("mousemove touchmove", v).on("mouseup touchend", p), h.start(e)
}, v = function(e) {
if (gt(e), e.button !== g) return p(e);
e.deltaX = e.screenX - b, e.deltaY = e.screenY - y, e.preventDefault(), h.drag(e)
}, p = function(e) {
gt(e), ke(x).off("mousemove touchmove", v).off("mouseup touchend", p), m.remove(), h.stop && h.stop(e)
}, this.destroy = function() {
ke(w).off()
}, ke(w).on("mousedown touchstart", t)
}
var vt, bt, yt, xt, wt = {
init: function() {
this.on("repaint", this.renderScroll)
},
renderScroll: function() {
var p = this;
function n() {
var m, g, e;
function t(e, t, n, i, r, o) {
var s, a, l, u, c, d, f, h;
if (a = p.getEl("scroll" + e)) {
if (f = t.toLowerCase(), h = n.toLowerCase(), ke(p.getEl("absend")).css(f, p.layoutRect()[i] - 1), !r) return void ke(a).css("display", "none");
ke(a).css("display", "block"), s = p.getEl("body"), l = p.getEl("scroll" + e + "t"), u = s["client" + n] - 4, c = (u -= m && g ? a["client" + o] : 0) / s["scroll" + n], (d = {})[f] = s["offset" + t] + 2, d[h] = u, ke(a).css(d), (d = {})[f] = s["scroll" + t] * c, d[h] = u * c, ke(l).css(d)
}
}
e = p.getEl("body"), m = e.scrollWidth > e.clientWidth, g = e.scrollHeight > e.clientHeight, t("h", "Left", "Width", "contentW", m, "Height"), t("v", "Top", "Height", "contentH", g, "Width")
}
p.settings.autoScroll && (p._hasScroll || (p._hasScroll = !0, function() {
function e(s, a, l, u, c) {
var d, e = p._id + "-scroll" + s,
t = p.classPrefix;
ke(p.getEl()).append('<div id="' + e + '" class="' + t + "scrollbar " + t + "scrollbar-" + s + '"><div id="' + e + 't" class="' + t + 'scrollbar-thumb"></div></div>'), p.draghelper = new pt(e + "t", {
start: function() {
d = p.getEl("body")["scroll" + a], ke("#" + e).addClass(t + "active")
},
drag: function(e) {
var t, n, i, r, o = p.layoutRect();
n = o.contentW > o.innerW, i = o.contentH > o.innerH, r = p.getEl("body")["client" + l] - 4, t = (r -= n && i ? p.getEl("scroll" + s)["client" + c] : 0) / p.getEl("body")["scroll" + l], p.getEl("body")["scroll" + a] = d + e["delta" + u] / t
},
stop: function() {
ke("#" + e).removeClass(t + "active")
}
})
}
p.classes.add("scroll"), e("v", "Top", "Height", "Y", "Width"), e("h", "Left", "Width", "X", "Height")
}(), p.on("wheel", function(e) {
var t = p.getEl("body");
t.scrollLeft += 10 * (e.deltaX || 0), t.scrollTop += 10 * e.deltaY, n()
}), ke(p.getEl("body")).on("scroll", n)), n())
}
},
_t = mt.extend({
Defaults: {
layout: "fit",
containerCls: "panel"
},
Mixins: [wt],
renderHtml: function() {
var e = this,
t = e._layout,
n = e.settings.html;
return e.preRender(), t.preRender(e), void 0 === n ? n = '<div id="' + e._id + '-body" class="' + e.bodyClasses + '">' + t.renderHtml(e) + "</div>" : ("function" == typeof n && (n = n.call(e)), e._hasBody = !1), '<div id="' + e._id + '" class="' + e.classes + '" hidefocus="1" tabindex="-1" role="group">' + (e._preBodyHtml || "") + n + "</div>"
}
}),
Rt = {
resizeToContent: function() {
this._layoutRect.autoResize = !0, this._lastRect = null, this.reflow()
},
resizeTo: function(e, t) {
if (e <= 1 || t <= 1) {
var n = He.getWindowSize();
e = e <= 1 ? e * n.w : e, t = t <= 1 ? t * n.h : t
}
return this._layoutRect.autoResize = !1, this.layoutRect({
minW: e,
minH: t,
w: e,
h: t
}).reflow()
},
resizeBy: function(e, t) {
var n = this.layoutRect();
return this.resizeTo(n.w + e, n.h + t)
}
},
Ct = [],
kt = [];
function Et(e, t) {
for (; e;) {
if (e === t) return !0;
e = e.parent()
}
}
function Ht() {
vt || (vt = function(e) {
2 !== e.button && function(e) {
for (var t = Ct.length; t--;) {
var n = Ct[t],
i = n.getParentCtrl(e.target);
if (n.settings.autohide) {
if (i && (Et(i, n) || n.parent() === i)) continue;
(e = n.fire("autohide", {
target: e.target
})).isDefaultPrevented() || n.hide()
}
}
}(e)
}, ke(document).on("click touchstart", vt))
}
function St(r) {
var e = He.getViewPort().y;
function t(e, t) {
for (var n, i = 0; i < Ct.length; i++)
if (Ct[i] !== r)
for (n = Ct[i].parent(); n && (n = n.parent());) n === r && Ct[i].fixed(e).moveBy(0, t).repaint()
}
r.settings.autofix && (r.state.get("fixed") ? r._autoFixY > e && (r.fixed(!1).layoutRect({
y: r._autoFixY
}).repaint(), t(!1, r._autoFixY - e)) : (r._autoFixY = r.layoutRect().y, r._autoFixY < e && (r.fixed(!0).layoutRect({
y: 0
}).repaint(), t(!0, e - r._autoFixY))))
}
function Mt(e, t) {
var n, i, r = Tt.zIndex || 65535;
if (e) kt.push(t);
else
for (n = kt.length; n--;) kt[n] === t && kt.splice(n, 1);
if (kt.length)
for (n = 0; n < kt.length; n++) kt[n].modal && (r++, i = kt[n]), kt[n].getEl().style.zIndex = r, kt[n].zIndex = r, r++;
var o = ke("#" + t.classPrefix + "modal-block", t.getContainerElm())[0];
i ? ke(o).css("z-index", i.zIndex - 1) : o && (o.parentNode.removeChild(o), xt = !1), Tt.currentZIndex = r
}
var Tt = _t.extend({
Mixins: [Ne, Rt],
init: function(e) {
var i = this;
i._super(e), (i._eventsRoot = i).classes.add("floatpanel"), e.autohide && (Ht(), function() {
if (!yt) {
var e = document.documentElement,
t = e.clientWidth,
n = e.clientHeight;
yt = function() {
document.all && t === e.clientWidth && n === e.clientHeight || (t = e.clientWidth, n = e.clientHeight, Tt.hideAll())
}, ke(window).on("resize", yt)
}
}(), Ct.push(i)), e.autofix && (bt || (bt = function() {
var e;
for (e = Ct.length; e--;) St(Ct[e])
}, ke(window).on("scroll", bt)), i.on("move", function() {
St(this)
})), i.on("postrender show", function(e) {
if (e.control === i) {
var t, n = i.classPrefix;
i.modal && !xt && ((t = ke("#" + n + "modal-block", i.getContainerElm()))[0] || (t = ke('<div id="' + n + 'modal-block" class="' + n + "reset " + n + 'fade"></div>').appendTo(i.getContainerElm())), u.setTimeout(function() {
t.addClass(n + "in"), ke(i.getEl()).addClass(n + "in")
}), xt = !0), Mt(!0, i)
}
}), i.on("show", function() {
i.parents().each(function(e) {
if (e.state.get("fixed")) return i.fixed(!0), !1
})
}), e.popover && (i._preBodyHtml = '<div class="' + i.classPrefix + 'arrow"></div>', i.classes.add("popover").add("bottom").add(i.isRtl() ? "end" : "start")), i.aria("label", e.ariaLabel), i.aria("labelledby", i._id), i.aria("describedby", i.describedBy || i._id + "-none")
},
fixed: function(e) {
var t = this;
if (t.state.get("fixed") !== e) {
if (t.state.get("rendered")) {
var n = He.getViewPort();
e ? t.layoutRect().y -= n.y : t.layoutRect().y += n.y
}
t.classes.toggle("fixed", e), t.state.set("fixed", e)
}
return t
},
show: function() {
var e, t = this._super();
for (e = Ct.length; e-- && Ct[e] !== this;);
return -1 === e && Ct.push(this), t
},
hide: function() {
return Pt(this), Mt(!1, this), this._super()
},
hideAll: function() {
Tt.hideAll()
},
close: function() {
return this.fire("close").isDefaultPrevented() || (this.remove(), Mt(!1, this)), this
},
remove: function() {
Pt(this), this._super()
},
postRender: function() {
return this.settings.bodyRole && this.getEl("body").setAttribute("role", this.settings.bodyRole), this._super()
}
});
function Pt(e) {
var t;
for (t = Ct.length; t--;) Ct[t] === e && Ct.splice(t, 1);
for (t = kt.length; t--;) kt[t] === e && kt.splice(t, 1)
}
Tt.hideAll = function() {
for (var e = Ct.length; e--;) {
var t = Ct[e];
t && t.settings.autohide && (t.hide(), Ct.splice(e, 1))
}
};
var Wt = function(e, t) {
return !(!e || t.settings.ui_container)
},
Nt = function(s, e, t) {
var a, n, l = p.DOM,
i = s.getParam("fixed_toolbar_container");
i && (n = l.select(i)[0]);
var r = function() {
if (a && a.moveRel && a.visible() && !a._fixed) {
var e = s.selection.getScrollContainer(),
t = s.getBody(),
n = 0,
i = 0;
if (e) {
var r = l.getPos(t),
o = l.getPos(e);
n = Math.max(0, o.x - r.x), i = Math.max(0, o.y - r.y)
}
a.fixed(!1).moveRel(t, s.rtl ? ["tr-br", "br-tr"] : ["tl-bl", "bl-tl", "tr-br"]).moveBy(n, i)
}
},
o = function() {
a && (a.show(), r(), l.addClass(s.getBody(), "mce-edit-focus"))
},
u = function() {
a && (a.hide(), Tt.hideAll(), l.removeClass(s.getBody(), "mce-edit-focus"))
},
c = function() {
a ? a.visible() || o() : (a = e.panel = v.create({
type: n ? "panel" : "floatpanel",
role: "application",
classes: "tinymce tinymce-inline",
layout: "flex",
direction: "column",
align: "stretch",
autohide: !1,
autofix: Wt(n, s),
fixed: Wt(n, s),
border: 1,
items: [!1 === d(s) ? null : {
type: "menubar",
border: "0 0 1 0",
items: ce(s)
}, z(s, f(s))]
}), A.setUiContainer(s, a), x(s), n ? a.renderTo(n).reflow() : a.renderTo().reflow(), _(s, a), o(), V(s), s.on("nodeChange", r), s.on("ResizeWindow", r), s.on("activate", o), s.on("deactivate", u), s.nodeChanged())
};
return s.settings.content_editable = !0, s.on("focus", function() {
!1 === m(s) && t.skinUiCss ? l.styleSheetLoader.load(t.skinUiCss, c, c) : c()
}), s.on("blur hide", u), s.on("remove", function() {
a && (a.remove(), a = null)
}), !1 === m(s) && t.skinUiCss ? l.styleSheetLoader.load(t.skinUiCss, we(s)) : we(s)(), {}
};
function Dt(i, r) {
var o, s, a = this,
l = ct.classPrefix;
a.show = function(e, t) {
function n() {
o && (ke(i).append('<div class="' + l + "throbber" + (r ? " " + l + "throbber-inline" : "") + '"></div>'), t && t())
}
return a.hide(), o = !0, e ? s = u.setTimeout(n, e) : n(), a
}, a.hide = function() {
var e = i.lastChild;
return u.clearTimeout(s), e && -1 !== e.className.indexOf("throbber") && e.parentNode.removeChild(e), o = !1, a
}
}
var At = function(e, t) {
var n;
e.on("ProgressState", function(e) {
n = n || new Dt(t.panel.getEl("body")), e.state ? n.show(e.time) : n.hide()
})
},
Bt = function(e, t, n) {
var i = function(e) {
var t = e.settings,
n = t.skin,
i = t.skin_url;
if (!1 !== n) {
var r = n || "lightgray";
i = i ? e.documentBaseURI.toAbsolute(i) : l.baseURL + "/../../css/"
}
return i
}(e);
return i && (n.skinUiCss = i + "/../../css/skin.min.css", e.contentCSS.push(i + "/content" + (e.inline ? ".inline" : "") + ".min.css")), At(e, t), e.getParam("inline", !1, "boolean") ? Nt(e, t, n) : Ce(e, t, n)
},
Ot = ct.extend({
Mixins: [Ne],
Defaults: {
classes: "widget tooltip tooltip-n"
},
renderHtml: function() {
var e = this,
t = e.classPrefix;
return '<div id="' + e._id + '" class="' + e.classes + '" role="presentation"><div class="' + t + 'tooltip-arrow"></div><div class="' + t + 'tooltip-inner">' + e.encode(e.state.get("text")) + "</div></div>"
},
bindStates: function() {
var t = this;
return t.state.on("change:text", function(e) {
t.getEl().lastChild.innerHTML = t.encode(e.value)
}), t._super()
},
repaint: function() {
var e, t;
e = this.getEl().style, t = this._layoutRect, e.left = t.x + "px", e.top = t.y + "px", e.zIndex = 131070
}
}),
zt = ct.extend({
init: function(i) {
var r = this;
r._super(i), i = r.settings, r.canFocus = !0, i.tooltip && !1 !== zt.tooltips && (r.on("mouseenter", function(e) {
var t = r.tooltip().moveTo(-65535);
if (e.control === r) {
var n = t.text(i.tooltip).show().testMoveRel(r.getEl(), ["bc-tc", "bc-tl", "bc-tr"]);
t.classes.toggle("tooltip-n", "bc-tc" === n), t.classes.toggle("tooltip-nw", "bc-tl" === n), t.classes.toggle("tooltip-ne", "bc-tr" === n), t.moveRel(r.getEl(), n)
} else t.hide()
}), r.on("mouseleave mousedown click", function() {
r.tooltip().remove(), r._tooltip = null
})), r.aria("label", i.ariaLabel || i.tooltip)
},
tooltip: function() {
return this._tooltip || (this._tooltip = new Ot({
type: "tooltip"
}), A.inheritUiContainer(this, this._tooltip), this._tooltip.renderTo()), this._tooltip
},
postRender: function() {
var e = this,
t = e.settings;
e._super(), e.parent() || !t.width && !t.height || (e.initLayoutRect(), e.repaint()), t.autofocus && e.focus()
},
bindStates: function() {
var t = this;
function n(e) {
t.aria("disabled", e), t.classes.toggle("disabled", e)
}
function i(e) {
t.aria("pressed", e), t.classes.toggle("active", e)
}
return t.state.on("change:disabled", function(e) {
n(e.value)
}), t.state.on("change:active", function(e) {
i(e.value)
}), t.state.get("disabled") && n(!0), t.state.get("active") && i(!0), t._super()
},
remove: function() {
this._super(), this._tooltip && (this._tooltip.remove(), this._tooltip = null)
}
}),
Lt = zt.extend({
Defaults: {
value: 0
},
init: function(e) {
this._super(e), this.classes.add("progress"), this.settings.filter || (this.settings.filter = function(e) {
return Math.round(e)
})
},
renderHtml: function() {
var e = this._id,
t = this.classPrefix;
return '<div id="' + e + '" class="' + this.classes + '"><div class="' + t + 'bar-container"><div class="' + t + 'bar"></div></div><div class="' + t + 'text">0%</div></div>'
},
postRender: function() {
return this._super(), this.value(this.settings.value), this
},
bindStates: function() {
var t = this;
function n(e) {
e = t.settings.filter(e), t.getEl().lastChild.innerHTML = e + "%", t.getEl().firstChild.firstChild.style.width = e + "%"
}
return t.state.on("change:value", function(e) {
n(e.value)
}), n(t.state.get("value")), t._super()
}
}),
It = function(e, t) {
e.getEl().lastChild.textContent = t + (e.progressBar ? " " + e.progressBar.value() + "%" : "")
},
Ft = ct.extend({
Mixins: [Ne],
Defaults: {
classes: "widget notification"
},
init: function(e) {
var t = this;
t._super(e), t.maxWidth = e.maxWidth, e.text && t.text(e.text), e.icon && (t.icon = e.icon), e.color && (t.color = e.color), e.type && t.classes.add("notification-" + e.type), e.timeout && (e.timeout < 0 || 0 < e.timeout) && !e.closeButton ? t.closeButton = !1 : (t.classes.add("has-close"), t.closeButton = !0), e.progressBar && (t.progressBar = new Lt), t.on("click", function(e) {
-1 !== e.target.className.indexOf(t.classPrefix + "close") && t.close()
})
},
renderHtml: function() {
var e, t = this,
n = t.classPrefix,
i = "",
r = "",
o = "";
return t.icon && (i = '<i class="' + n + "ico " + n + "i-" + t.icon + '"></i>'), e = ' style="max-width: ' + t.maxWidth + "px;" + (t.color ? "background-color: " + t.color + ';"' : '"'), t.closeButton && (r = '<button type="button" class="' + n + 'close" aria-hidden="true">\xd7</button>'), t.progressBar && (o = t.progressBar.renderHtml()), '<div id="' + t._id + '" class="' + t.classes + '"' + e + ' role="presentation">' + i + '<div class="' + n + 'notification-inner">' + t.state.get("text") + "</div>" + o + r + '<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'
},
postRender: function() {
var e = this;
return u.setTimeout(function() {
e.$el.addClass(e.classPrefix + "in"), It(e, e.state.get("text"))
}, 100), e._super()
},
bindStates: function() {
var t = this;
return t.state.on("change:text", function(e) {
t.getEl().firstChild.innerHTML = e.value, It(t, e.value)
}), t.progressBar && (t.progressBar.bindStates(), t.progressBar.state.on("change:value", function(e) {
It(t, t.state.get("text"))
})), t._super()
},
close: function() {
return this.fire("close").isDefaultPrevented() || this.remove(), this
},
repaint: function() {
var e, t;
e = this.getEl().style, t = this._layoutRect, e.left = t.x + "px", e.top = t.y + "px", e.zIndex = 65534
}
});
function Ut(o) {
var s = function(e) {
return e.inline ? e.getElement() : e.getContentAreaContainer()
};
return {
open: function(e, t) {
var n, i = w.extend(e, {
maxWidth: (n = s(o), He.getSize(n).width)
}),
r = new Ft(i);
return 0 < (r.args = i).timeout && (r.timer = setTimeout(function() {
r.close(), t()
}, i.timeout)), r.on("close", function() {
t()
}), r.renderTo(), r
},
close: function(e) {
e.close()
},
reposition: function(e) {
var t;
t = e, oe.each(t, function(e) {
e.moveTo(0, 0)
}),
function(n) {
if (0 < n.length) {
var e = n.slice(0, 1)[0],
t = s(o);
e.moveRel(t, "tc-tc"), oe.each(n, function(e, t) {
0 < t && e.moveRel(n[t - 1].getEl(), "bc-tc")
})
}
}(e)
},
getArgs: function(e) {
return e.args
}
}
}
var Vt = [],
jt = "";
function qt(e) {
var t, n = ke("meta[name=viewport]")[0];
!1 !== pe.overrideViewPort && (n || ((n = document.createElement("meta")).setAttribute("name", "viewport"), document.getElementsByTagName("head")[0].appendChild(n)), (t = n.getAttribute("content")) && void 0 !== jt && (jt = t), n.setAttribute("content", e ? "width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" : jt))
}
function Yt(e, t) {
(function() {
for (var e = 0; e < Vt.length; e++)
if (Vt[e]._fullscreen) return !0;
return !1
})() && !1 === t && ke([document.documentElement, document.body]).removeClass(e + "fullscreen")
}
var $t = Tt.extend({
modal: !0,
Defaults: {
border: 1,
layout: "flex",
containerCls: "panel",
role: "dialog",
callbacks: {
submit: function() {
this.fire("submit", {
data: this.toJSON()
})
},
close: function() {
this.close()
}
}
},
init: function(e) {
var n = this;
n._super(e), n.isRtl() && n.classes.add("rtl"), n.classes.add("window"), n.bodyClasses.add("window-body"), n.state.set("fixed", !0), e.buttons && (n.statusbar = new _t({
layout: "flex",
border: "1 0 0 0",
spacing: 3,
padding: 10,
align: "center",
pack: n.isRtl() ? "start" : "end",
defaults: {
type: "button"
},
items: e.buttons
}), n.statusbar.classes.add("foot"), n.statusbar.parent(n)), n.on("click", function(e) {
var t = n.classPrefix + "close";
(He.hasClass(e.target, t) || He.hasClass(e.target.parentNode, t)) && n.close()
}), n.on("cancel", function() {
n.close()
}), n.on("move", function(e) {
e.control === n && Tt.hideAll()
}), n.aria("describedby", n.describedBy || n._id + "-none"), n.aria("label", e.title), n._fullscreen = !1
},
recalc: function() {
var e, t, n, i, r = this,
o = r.statusbar;
r._fullscreen && (r.layoutRect(He.getWindowSize()), r.layoutRect().contentH = r.layoutRect().innerH), r._super(), e = r.layoutRect(), r.settings.title && !r._fullscreen && (t = e.headerW) > e.w && (n = e.x - Math.max(0, t / 2), r.layoutRect({
w: t,
x: n
}), i = !0), o && (o.layoutRect({
w: r.layoutRect().innerW
}).recalc(), (t = o.layoutRect().minW + e.deltaW) > e.w && (n = e.x - Math.max(0, t - e.w), r.layoutRect({
w: t,
x: n
}), i = !0)), i && r.recalc()
},
initLayoutRect: function() {
var e, t = this,
n = t._super(),
i = 0;
if (t.settings.title && !t._fullscreen) {
e = t.getEl("head");
var r = He.getSize(e);
n.headerW = r.width, n.headerH = r.height, i += n.headerH
}
t.statusbar && (i += t.statusbar.layoutRect().h), n.deltaH += i, n.minH += i, n.h += i;
var o = He.getWindowSize();
return n.x = t.settings.x || Math.max(0, o.w / 2 - n.w / 2), n.y = t.settings.y || Math.max(0, o.h / 2 - n.h / 2), n
},
renderHtml: function() {
var e = this,
t = e._layout,
n = e._id,
i = e.classPrefix,
r = e.settings,
o = "",
s = "",
a = r.html;
return e.preRender(), t.preRender(e), r.title && (o = '<div id="' + n + '-head" class="' + i + 'window-head"><div id="' + n + '-title" class="' + i + 'title">' + e.encode(r.title) + '</div><div id="' + n + '-dragh" class="' + i + 'dragh"></div><button type="button" class="' + i + 'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'), r.url && (a = '<iframe src="' + r.url + '" tabindex="-1"></iframe>'), void 0 === a && (a = t.renderHtml(e)), e.statusbar && (s = e.statusbar.renderHtml()), '<div id="' + n + '" class="' + e.classes + '" hidefocus="1"><div class="' + e.classPrefix + 'reset" role="application">' + o + '<div id="' + n + '-body" class="' + e.bodyClasses + '">' + a + "</div>" + s + "</div></div>"
},
fullscreen: function(e) {
var n, t, i = this,
r = document.documentElement,
o = i.classPrefix;
if (e !== i._fullscreen)
if (ke(window).on("resize", function() {
var e;
if (i._fullscreen)
if (n) i._timer || (i._timer = u.setTimeout(function() {
var e = He.getWindowSize();
i.moveTo(0, 0).resizeTo(e.w, e.h), i._timer = 0
}, 50));
else {
e = (new Date).getTime();
var t = He.getWindowSize();
i.moveTo(0, 0).resizeTo(t.w, t.h), 50 < (new Date).getTime() - e && (n = !0)
}
}), t = i.layoutRect(), i._fullscreen = e) {
i._initial = {
x: t.x,
y: t.y,
w: t.w,
h: t.h
}, i.borderBox = Be("0"), i.getEl("head").style.display = "none", t.deltaH -= t.headerH + 2, ke([r, document.body]).addClass(o + "fullscreen"), i.classes.add("fullscreen");
var s = He.getWindowSize();
i.moveTo(0, 0).resizeTo(s.w, s.h)
} else i.borderBox = Be(i.settings.border), i.getEl("head").style.display = "", t.deltaH += t.headerH, ke([r, document.body]).removeClass(o + "fullscreen"), i.classes.remove("fullscreen"), i.moveTo(i._initial.x, i._initial.y).resizeTo(i._initial.w, i._initial.h);
return i.reflow()
},
postRender: function() {
var t, n = this;
setTimeout(function() {
n.classes.add("in"), n.fire("open")
}, 0), n._super(), n.statusbar && n.statusbar.postRender(), n.focus(), this.dragHelper = new pt(n._id + "-dragh", {
start: function() {
t = {
x: n.layoutRect().x,
y: n.layoutRect().y
}
},
drag: function(e) {
n.moveTo(t.x + e.deltaX, t.y + e.deltaY)
}
}), n.on("submit", function(e) {
e.isDefaultPrevented() || n.close()
}), Vt.push(n), qt(!0)
},
submit: function() {
return this.fire("submit", {
data: this.toJSON()
})
},
remove: function() {
var e, t = this;
for (t.dragHelper.destroy(), t._super(), t.statusbar && this.statusbar.remove(), Yt(t.classPrefix, !1), e = Vt.length; e--;) Vt[e] === t && Vt.splice(e, 1);
qt(0 < Vt.length)
},
getContentWindow: function() {
var e = this.getEl().getElementsByTagName("iframe")[0];
return e ? e.contentWindow : null
}
});
! function() {
if (!pe.desktop) {
var n = {
w: window.innerWidth,
h: window.innerHeight
};
u.setInterval(function() {
var e = window.innerWidth,
t = window.innerHeight;
n.w === e && n.h === t || (n = {
w: e,
h: t
}, ke(window).trigger("resize"))
}, 100)
}
ke(window).on("resize", function() {
var e, t, n = He.getWindowSize();
for (e = 0; e < Vt.length; e++) t = Vt[e].layoutRect(), Vt[e].moveTo(Vt[e].settings.x || Math.max(0, n.w / 2 - t.w / 2), Vt[e].settings.y || Math.max(0, n.h / 2 - t.h / 2))
})
}();
var Xt, Jt = $t.extend({
init: function(e) {
e = {
border: 1,
padding: 20,
layout: "flex",
pack: "center",
align: "center",
containerCls: "panel",
autoScroll: !0,
buttons: {
type: "button",
text: "Ok",
action: "ok"
},
items: {
type: "label",
multiline: !0,
maxWidth: 500,
maxHeight: 200
}
}, this._super(e)
},
Statics: {
OK: 1,
OK_CANCEL: 2,
YES_NO: 3,
YES_NO_CANCEL: 4,
msgBox: function(e) {
var t, i = e.callback || function() {};
function n(e, t, n) {
return {
type: "button",
text: e,
subtype: n ? "primary" : "",
onClick: function(e) {
e.control.parents()[1].close(), i(t)
}
}
}
switch (e.buttons) {
case Jt.OK_CANCEL:
t = [n("Ok", !0, !0), n("Cancel", !1)];
break;
case Jt.YES_NO:
case Jt.YES_NO_CANCEL:
t = [n("Yes", 1, !0), n("No", 0)], e.buttons === Jt.YES_NO_CANCEL && t.push(n("Cancel", -1));
break;
default:
t = [n("Ok", !0, !0)]
}
return new $t({
padding: 20,
x: e.x,
y: e.y,
minWidth: 300,
minHeight: 100,
layout: "flex",
pack: "center",
align: "center",
buttons: t,
title: e.title,
role: "alertdialog",
items: {
type: "label",
multiline: !0,
maxWidth: 500,
maxHeight: 200,
text: e.text
},
onPostRender: function() {
this.aria("describedby", this.items()[0]._id)
},
onClose: e.onClose,
onCancel: function() {
i(!1)
}
}).renderTo(document.body).reflow()
},
alert: function(e, t) {
return "string" == typeof e && (e = {
text: e
}), e.callback = t, Jt.msgBox(e)
},
confirm: function(e, t) {
return "string" == typeof e && (e = {
text: e
}), e.callback = t, e.buttons = Jt.OK_CANCEL, Jt.msgBox(e)
}
}
}),
Gt = function(n) {
return {
renderUI: function(e) {
return Bt(n, this, e)
},
resizeTo: function(e, t) {
return me(n, e, t)
},
resizeBy: function(e, t) {
return ge(n, e, t)
},
getNotificationManagerImpl: function() {
return Ut(n)
},
getWindowManagerImpl: function() {
return {
open: function(n, e, t) {
var i;
return n.title = n.title || " ", n.url = n.url || n.file, n.url && (n.width = parseInt(n.width || 320, 10), n.height = parseInt(n.height || 240, 10)), n.body && (n.items = {
defaults: n.defaults,
type: n.bodyType || "form",
items: n.body,
data: n.data,
callbacks: n.commands
}), n.url || n.buttons || (n.buttons = [{
text: "Ok",
subtype: "primary",
onclick: function() {
i.find("form")[0].submit()
}
}, {
text: "Cancel",
onclick: function() {
i.close()
}
}]), (i = new $t(n)).on("close", function() {
t(i)
}), n.data && i.on("postRender", function() {
this.find("*").each(function(e) {
var t = e.name();
t in n.data && e.value(n.data[t])
})
}), i.features = n || {}, i.params = e || {}, i = i.renderTo(document.body).reflow()
},
alert: function(e, t, n) {
var i;
return (i = Jt.alert(e, function() {
t()
})).on("close", function() {
n(i)
}), i
},
confirm: function(e, t, n) {
var i;
return (i = Jt.confirm(e, function(e) {
t(e)
})).on("close", function() {
n(i)
}), i
},
close: function(e) {
e.close()
},
getParams: function(e) {
return e.params
},
setParams: function(e, t) {
e.params = t
}
}
}
}
},
Kt = De.extend({
Defaults: {
firstControlClass: "first",
lastControlClass: "last"
},
init: function(e) {
this.settings = w.extend({}, this.Defaults, e)
},
preRender: function(e) {
e.bodyClasses.add(this.settings.containerClass)
},
applyClasses: function(e) {
var t, n, i, r, o = this.settings;
t = o.firstControlClass, n = o.lastControlClass, e.each(function(e) {
e.classes.remove(t).remove(n).add(o.controlClass), e.visible() && (i || (i = e), r = e)
}), i && i.classes.add(t), r && r.classes.add(n)
},
renderHtml: function(e) {
var t = "";
return this.applyClasses(e.items()), e.items().each(function(e) {
t += e.renderHtml()
}), t
},
recalc: function() {},
postRender: function() {},
isNative: function() {
return !1
}
}),
Zt = Kt.extend({
Defaults: {
containerClass: "abs-layout",
controlClass: "abs-layout-item"
},
recalc: function(e) {
e.items().filter(":visible").each(function(e) {
var t = e.settings;
e.layoutRect({
x: t.x,
y: t.y,
w: t.w,
h: t.h
}), e.recalc && e.recalc()
})
},
renderHtml: function(e) {
return '<div id="' + e._id + '-absend" class="' + e.classPrefix + 'abs-end"></div>' + this._super(e)
}
}),
Qt = zt.extend({
Defaults: {
classes: "widget btn",
role: "button"
},
init: function(e) {
var t, n = this;
n._super(e), e = n.settings, t = n.settings.size, n.on("click mousedown", function(e) {
e.preventDefault()
}), n.on("touchstart", function(e) {
n.fire("click", e), e.preventDefault()
}), e.subtype && n.classes.add(e.subtype), t && n.classes.add("btn-" + t), e.icon && n.icon(e.icon)
},
icon: function(e) {
return arguments.length ? (this.state.set("icon", e), this) : this.state.get("icon")
},
repaint: function() {
var e, t = this.getEl().firstChild;
t && ((e = t.style).width = e.height = "100%"), this._super()
},
renderHtml: function() {
var e, t, n = this,
i = n._id,
r = n.classPrefix,
o = n.state.get("icon"),
s = n.state.get("text"),
a = "",
l = n.settings;
return (e = l.image) ? (o = "none", "string" != typeof e && (e = window.getSelection ? e[0] : e[1]), e = " style=\"background-image: url('" + e + "')\"") : e = "", s && (n.classes.add("btn-has-text"), a = '<span class="' + r + 'txt">' + n.encode(s) + "</span>"), o = o ? r + "ico " + r + "i-" + o : "", t = "boolean" == typeof l.active ? ' aria-pressed="' + l.active + '"' : "", '<div id="' + i + '" class="' + n.classes + '" tabindex="-1"' + t + '><button id="' + i + '-button" role="presentation" type="button" tabindex="-1">' + (o ? '<i class="' + o + '"' + e + "></i>" : "") + a + "</button></div>"
},
bindStates: function() {
var o = this,
n = o.$,
i = o.classPrefix + "txt";
function s(e) {
var t = n("span." + i, o.getEl());
e ? (t[0] || (n("button:first", o.getEl()).append('<span class="' + i + '"></span>'), t = n("span." + i, o.getEl())), t.html(o.encode(e))) : t.remove(), o.classes.toggle("btn-has-text", !!e)
}
return o.state.on("change:text", function(e) {
s(e.value)
}), o.state.on("change:icon", function(e) {
var t = e.value,
n = o.classPrefix;
t = (o.settings.icon = t) ? n + "ico " + n + "i-" + o.settings.icon : "";
var i = o.getEl().firstChild,
r = i.getElementsByTagName("i")[0];
t ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = t) : r && i.removeChild(r), s(o.state.get("text"))
}), o._super()
}
}),
en = Qt.extend({
init: function(e) {
e = w.extend({
text: "Browse...",
multiple: !1,
accept: null
}, e), this._super(e), this.classes.add("browsebutton"), e.multiple && this.classes.add("multiple")
},
postRender: function() {
var n = this,
t = He.create("input", {
type: "file",
id: n._id + "-browse",
accept: n.settings.accept
});
n._super(), ke(t).on("change", function(e) {
var t = e.target.files;
n.value = function() {
return t.length ? n.settings.multiple ? t : t[0] : null
}, e.preventDefault(), t.length && n.fire("change", e)
}), ke(t).on("click", function(e) {
e.stopPropagation()
}), ke(n.getEl("button")).on("click", function(e) {
e.stopPropagation(), t.click()
}), n.getEl().appendChild(t)
},
remove: function() {
ke(this.getEl("button")).off(), ke(this.getEl("input")).off(), this._super()
}
}),
tn = mt.extend({
Defaults: {
defaultType: "button",
role: "group"
},
renderHtml: function() {
var e = this,
t = e._layout;
return e.classes.add("btn-group"), e.preRender(), t.preRender(e), '<div id="' + e._id + '" class="' + e.classes + '"><div id="' + e._id + '-body">' + (e.settings.html || "") + t.renderHtml(e) + "</div></div>"
}
}),
nn = zt.extend({
Defaults: {
classes: "checkbox",
role: "checkbox",
checked: !1
},
init: function(e) {
var t = this;
t._super(e), t.on("click mousedown", function(e) {
e.preventDefault()
}), t.on("click", function(e) {
e.preventDefault(), t.disabled() || t.checked(!t.checked())
}), t.checked(t.settings.checked)
},
checked: function(e) {
return arguments.length ? (this.state.set("checked", e), this) : this.state.get("checked")
},
value: function(e) {
return arguments.length ? this.checked(e) : this.checked()
},
renderHtml: function() {
var e = this,
t = e._id,
n = e.classPrefix;
return '<div id="' + t + '" class="' + e.classes + '" unselectable="on" aria-labelledby="' + t + '-al" tabindex="-1"><i class="' + n + "ico " + n + 'i-checkbox"></i><span id="' + t + '-al" class="' + n + 'label">' + e.encode(e.state.get("text")) + "</span></div>"
},
bindStates: function() {
var o = this;
function t(e) {
o.classes.toggle("checked", e), o.aria("checked", e)
}
return o.state.on("change:text", function(e) {
o.getEl("al").firstChild.data = o.translate(e.value)
}), o.state.on("change:checked change:value", function(e) {
o.fire("change"), t(e.value)
}), o.state.on("change:icon", function(e) {
var t = e.value,
n = o.classPrefix;
if (void 0 === t) return o.settings.icon;
t = (o.settings.icon = t) ? n + "ico " + n + "i-" + o.settings.icon : "";
var i = o.getEl().firstChild,
r = i.getElementsByTagName("i")[0];
t ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = t) : r && i.removeChild(r)
}), o.state.get("checked") && t(!0), o._super()
}
}),
rn = tinymce.util.Tools.resolve("tinymce.util.VK"),
on = zt.extend({
init: function(i) {
var r = this;
r._super(i), i = r.settings, r.classes.add("combobox"), r.subinput = !0, r.ariaTarget = "inp", i.menu = i.menu || i.values, i.menu && (i.icon = "caret"), r.on("click", function(e) {
var t = e.target,
n = r.getEl();
if (ke.contains(n, t) || t === n)
for (; t && t !== n;) t.id && -1 !== t.id.indexOf("-open") && (r.fire("action"), i.menu && (r.showMenu(), e.aria && r.menu.items()[0].focus())), t = t.parentNode
}), r.on("keydown", function(e) {
var t;
13 === e.keyCode && "INPUT" === e.target.nodeName && (e.preventDefault(), r.parents().reverse().each(function(e) {
if (e.toJSON) return t = e, !1
}), r.fire("submit", {
data: t.toJSON()
}))
}), r.on("keyup", function(e) {
if ("INPUT" === e.target.nodeName) {
var t = r.state.get("value"),
n = e.target.value;
n !== t && (r.state.set("value", n), r.fire("autocomplete", e))
}
}), r.on("mouseover", function(e) {
var t = r.tooltip().moveTo(-65535);
if (r.statusLevel() && -1 !== e.target.className.indexOf(r.classPrefix + "status")) {
var n = r.statusMessage() || "Ok",
i = t.text(n).show().testMoveRel(e.target, ["bc-tc", "bc-tl", "bc-tr"]);
t.classes.toggle("tooltip-n", "bc-tc" === i), t.classes.toggle("tooltip-nw", "bc-tl" === i), t.classes.toggle("tooltip-ne", "bc-tr" === i), t.moveRel(e.target, i)
}
})
},
statusLevel: function(e) {
return 0 < arguments.length && this.state.set("statusLevel", e), this.state.get("statusLevel")
},
statusMessage: function(e) {
return 0 < arguments.length && this.state.set("statusMessage", e), this.state.get("statusMessage")
},
showMenu: function() {
var e, t = this,
n = t.settings;
t.menu || ((e = n.menu || []).length ? e = {
type: "menu",
items: e
} : e.type = e.type || "menu", t.menu = v.create(e).parent(t).renderTo(t.getContainerElm()), t.fire("createmenu"), t.menu.reflow(), t.menu.on("cancel", function(e) {
e.control === t.menu && t.focus()
}), t.menu.on("show hide", function(e) {
e.control.items().each(function(e) {
e.active(e.value() === t.value())
})
}).fire("show"), t.menu.on("select", function(e) {
t.value(e.control.value())
}), t.on("focusin", function(e) {
"INPUT" === e.target.tagName.toUpperCase() && t.menu.hide()
}), t.aria("expanded", !0)), t.menu.show(), t.menu.layoutRect({
w: t.layoutRect().w
}), t.menu.moveRel(t.getEl(), t.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"])
},
focus: function() {
this.getEl("inp").focus()
},
repaint: function() {
var e, t, n = this,
i = n.getEl(),
r = n.getEl("open"),
o = n.layoutRect(),
s = 0,
a = i.firstChild;
n.statusLevel() && "none" !== n.statusLevel() && (s = parseInt(He.getRuntimeStyle(a, "padding-right"), 10) - parseInt(He.getRuntimeStyle(a, "padding-left"), 10)), e = r ? o.w - He.getSize(r).width - 10 : o.w - 10;
var l = document;
return l.all && (!l.documentMode || l.documentMode <= 8) && (t = n.layoutRect().h - 2 + "px"), ke(a).css({
width: e - s,
lineHeight: t
}), n._super(), n
},
postRender: function() {
var t = this;
return ke(this.getEl("inp")).on("change", function(e) {
t.state.set("value", e.target.value), t.fire("change", e)
}), t._super()
},
renderHtml: function() {
var e, t, n, i = this,
r = i._id,
o = i.settings,
s = i.classPrefix,
a = i.state.get("value") || "",
l = "",
u = "";
return "spellcheck" in o && (u += ' spellcheck="' + o.spellcheck + '"'), o.maxLength && (u += ' maxlength="' + o.maxLength + '"'), o.size && (u += ' size="' + o.size + '"'), o.subtype && (u += ' type="' + o.subtype + '"'), n = '<i id="' + r + '-status" class="mce-status mce-ico" style="display: none"></i>', i.disabled() && (u += ' disabled="disabled"'), (e = o.icon) && "caret" !== e && (e = s + "ico " + s + "i-" + o.icon), t = i.state.get("text"), (e || t) && (l = '<div id="' + r + '-open" class="' + s + "btn " + s + 'open" tabIndex="-1" role="button"><button id="' + r + '-action" type="button" hidefocus="1" tabindex="-1">' + ("caret" !== e ? '<i class="' + e + '"></i>' : '<i class="' + s + 'caret"></i>') + (t ? (e ? " " : "") + t : "") + "</button></div>", i.classes.add("has-open")), '<div id="' + r + '" class="' + i.classes + '"><input id="' + r + '-inp" class="' + s + 'textbox" value="' + i.encode(a, !1) + '" hidefocus="1"' + u + ' placeholder="' + i.encode(o.placeholder) + '" />' + n + l + "</div>"
},
value: function(e) {
return arguments.length ? (this.state.set("value", e), this) : (this.state.get("rendered") && this.state.set("value", this.getEl("inp").value), this.state.get("value"))
},
showAutoComplete: function(e, i) {
var r = this;
if (0 !== e.length) {
r.menu ? r.menu.items().remove() : r.menu = v.create({
type: "menu",
classes: "combobox-menu",
layout: "flow"
}).parent(r).renderTo(), w.each(e, function(e) {
var t, n;
r.menu.add({
text: e.title,
url: e.previewUrl,
match: i,
classes: "menu-item-ellipsis",
onclick: (t = e.value, n = e.title, function() {
r.fire("selectitem", {
title: n,
value: t
})
})
})
}), r.menu.renderNew(), r.hideMenu(), r.menu.on("cancel", function(e) {
e.control.parent() === r.menu && (e.stopPropagation(), r.focus(), r.hideMenu())
}), r.menu.on("select", function() {
r.focus()
});
var t = r.layoutRect().w;
r.menu.layoutRect({
w: t,
minW: 0,
maxW: t
}), r.menu.repaint(), r.menu.reflow(), r.menu.show(), r.menu.moveRel(r.getEl(), r.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"])
} else r.hideMenu()
},
hideMenu: function() {
this.menu && this.menu.hide()
},
bindStates: function() {
var r = this;
r.state.on("change:value", function(e) {
r.getEl("inp").value !== e.value && (r.getEl("inp").value = e.value)
}), r.state.on("change:disabled", function(e) {
r.getEl("inp").disabled = e.value
}), r.state.on("change:statusLevel", function(e) {
var t = r.getEl("status"),
n = r.classPrefix,
i = e.value;
He.css(t, "display", "none" === i ? "none" : ""), He.toggleClass(t, n + "i-checkmark", "ok" === i), He.toggleClass(t, n + "i-warning", "warn" === i), He.toggleClass(t, n + "i-error", "error" === i), r.classes.toggle("has-status", "none" !== i), r.repaint()
}), He.on(r.getEl("status"), "mouseleave", function() {
r.tooltip().hide()
}), r.on("cancel", function(e) {
r.menu && r.menu.visible() && (e.stopPropagation(), r.hideMenu())
});
var n = function(e, t) {
t && 0 < t.items().length && t.items().eq(e)[0].focus()
};
return r.on("keydown", function(e) {
var t = e.keyCode;
"INPUT" === e.target.nodeName && (t === rn.DOWN ? (e.preventDefault(), r.fire("autocomplete"), n(0, r.menu)) : t === rn.UP && (e.preventDefault(), n(-1, r.menu)))
}), r._super()
},
remove: function() {
ke(this.getEl("inp")).off(), this.menu && this.menu.remove(), this._super()
}
}),
sn = on.extend({
init: function(e) {
var t = this;
e.spellcheck = !1, e.onaction && (e.icon = "none"), t._super(e), t.classes.add("colorbox"), t.on("change keyup postrender", function() {
t.repaintColor(t.value())
})
},
repaintColor: function(e) {
var t = this.getEl("open"),
n = t ? t.getElementsByTagName("i")[0] : null;
if (n) try {
n.style.background = e
} catch (i) {}
},
bindStates: function() {
var t = this;
return t.state.on("change:value", function(e) {
t.state.get("rendered") && t.repaintColor(e.value)
}), t._super()
}
}),
an = Qt.extend({
showPanel: function() {
var t = this,
e = t.settings;
if (t.classes.add("opened"), t.panel) t.panel.show();
else {
var n = e.panel;
n.type && (n = {
layout: "grid",
items: n
}), n.role = n.role || "dialog", n.popover = !0, n.autohide = !0, n.ariaRoot = !0, t.panel = new Tt(n).on("hide", function() {
t.classes.remove("opened")
}).on("cancel", function(e) {
e.stopPropagation(), t.focus(), t.hidePanel()
}).parent(t).renderTo(t.getContainerElm()), t.panel.fire("show"), t.panel.reflow()
}
var i = t.panel.testMoveRel(t.getEl(), e.popoverAlign || (t.isRtl() ? ["bc-tc", "bc-tl", "bc-tr"] : ["bc-tc", "bc-tr", "bc-tl", "tc-bc", "tc-br", "tc-bl"]));
t.panel.classes.toggle("start", "l" === i.substr(-1)), t.panel.classes.toggle("end", "r" === i.substr(-1));
var r = "t" === i.substr(0, 1);
t.panel.classes.toggle("bottom", !r), t.panel.classes.toggle("top", r), t.panel.moveRel(t.getEl(), i)
},
hidePanel: function() {
this.panel && this.panel.hide()
},
postRender: function() {
var t = this;
return t.aria("haspopup", !0), t.on("click", function(e) {
e.control === t && (t.panel && t.panel.visible() ? t.hidePanel() : (t.showPanel(), t.panel.focus(!!e.aria)))
}), t._super()
},
remove: function() {
return this.panel && (this.panel.remove(), this.panel = null), this._super()
}
}),
ln = p.DOM,
un = an.extend({
init: function(e) {
this._super(e), this.classes.add("splitbtn"), this.classes.add("colorbutton")
},
color: function(e) {
return e ? (this._color = e, this.getEl("preview").style.backgroundColor = e, this) : this._color
},
resetColor: function() {
return this._color = null, this.getEl("preview").style.backgroundColor = null, this
},
renderHtml: function() {
var e = this,
t = e._id,
n = e.classPrefix,
i = e.state.get("text"),
r = e.settings.icon ? n + "ico " + n + "i-" + e.settings.icon : "",
o = e.settings.image ? " style=\"background-image: url('" + e.settings.image + "')\"" : "",
s = "";
return i && (e.classes.add("btn-has-text"), s = '<span class="' + n + 'txt">' + e.encode(i) + "</span>"), '<div id="' + t + '" class="' + e.classes + '" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (r ? '<i class="' + r + '"' + o + "></i>" : "") + '<span id="' + t + '-preview" class="' + n + 'preview"></span>' + s + '</button><button type="button" class="' + n + 'open" hidefocus="1" tabindex="-1"> <i class="' + n + 'caret"></i></button></div>'
},
postRender: function() {
var t = this,
n = t.settings.onclick;
return t.on("click", function(e) {
e.aria && "down" === e.aria.key || e.control !== t || ln.getParent(e.target, "." + t.classPrefix + "open") || (e.stopImmediatePropagation(), n.call(t, e))
}), delete t.settings.onclick, t._super()
}
}),
cn = tinymce.util.Tools.resolve("tinymce.util.Color"),
dn = zt.extend({
Defaults: {
classes: "widget colorpicker"
},
init: function(e) {
this._super(e)
},
postRender: function() {
var n, i, r, o, s, a = this,
l = a.color();
function u(e, t) {
var n, i, r = He.getPos(e);
return n = t.pageX - r.x, i = t.pageY - r.y, {
x: n = Math.max(0, Math.min(n / e.clientWidth, 1)),
y: i = Math.max(0, Math.min(i / e.clientHeight, 1))
}
}
function c(e, t) {
var n = (360 - e.h) / 360;
He.css(r, {
top: 100 * n + "%"
}), t || He.css(s, {
left: e.s + "%",
top: 100 - e.v + "%"
}), o.style.background = cn({
s: 100,
v: 100,
h: e.h
}).toHex(), a.color().parse({
s: e.s,
v: e.v,
h: e.h
})
}
function e(e) {
var t;
t = u(o, e), n.s = 100 * t.x, n.v = 100 * (1 - t.y), c(n), a.fire("change")
}
function t(e) {
var t;
t = u(i, e), (n = l.toHsv()).h = 360 * (1 - t.y), c(n, !0), a.fire("change")
}
i = a.getEl("h"), r = a.getEl("hp"), o = a.getEl("sv"), s = a.getEl("svp"), a._repaint = function() {
c(n = l.toHsv())
}, a._super(), a._svdraghelper = new pt(a._id + "-sv", {
start: e,
drag: e
}), a._hdraghelper = new pt(a._id + "-h", {
start: t,
drag: t
}), a._repaint()
},
rgb: function() {
return this.color().toRgb()
},
value: function(e) {
if (!arguments.length) return this.color().toHex();
this.color().parse(e), this._rendered && this._repaint()
},
color: function() {
return this._color || (this._color = cn()), this._color
},
renderHtml: function() {
var e, t = this._id,
o = this.classPrefix,
s = "#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";
return e = '<div id="' + t + '-h" class="' + o + 'colorpicker-h" style="background: -ms-linear-gradient(top,#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000);background: linear-gradient(to bottom,#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000);">' + function() {
var e, t, n, i, r = "";
for (n = "filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=", e = 0, t = (i = s.split(",")).length - 1; e < t; e++) r += '<div class="' + o + 'colorpicker-h-chunk" style="height:' + 100 / t + "%;" + n + i[e] + ",endColorstr=" + i[e + 1] + ");-ms-" + n + i[e] + ",endColorstr=" + i[e + 1] + ')"></div>';
return r
}() + '<div id="' + t + '-hp" class="' + o + 'colorpicker-h-marker"></div></div>', '<div id="' + t + '" class="' + this.classes + '"><div id="' + t + '-sv" class="' + o + 'colorpicker-sv"><div class="' + o + 'colorpicker-overlay1"><div class="' + o + 'colorpicker-overlay2"><div id="' + t + '-svp" class="' + o + 'colorpicker-selector1"><div class="' + o + 'colorpicker-selector2"></div></div></div></div></div>' + e + "</div>"
}
}),
fn = zt.extend({
init: function(e) {
e = w.extend({
height: 100,
text: "Drop an image here",
multiple: !1,
accept: null
}, e), this._super(e), this.classes.add("dropzone"), e.multiple && this.classes.add("multiple")
},
renderHtml: function() {
var e, t, n = this.settings;
return e = {
id: this._id,
hidefocus: "1"
}, t = He.create("div", e, "<span>" + this.translate(n.text) + "</span>"), n.height && He.css(t, "height", n.height + "px"), n.width && He.css(t, "width", n.width + "px"), t.className = this.classes, t.outerHTML
},
postRender: function() {
var i = this,
e = function(e) {
e.preventDefault(), i.classes.toggle("dragenter"), i.getEl().className = i.classes
};
i._super(), i.$el.on("dragover", function(e) {
e.preventDefault()
}), i.$el.on("dragenter", e), i.$el.on("dragleave", e), i.$el.on("drop", function(e) {
if (e.preventDefault(), !i.state.get("disabled")) {
var t = function(e) {
var t = i.settings.accept;
if ("string" != typeof t) return e;
var n = new RegExp("(" + t.split(/\s*,\s*/).join("|") + ")$", "i");
return w.grep(e, function(e) {
return n.test(e.name)
})
}(e.dataTransfer.files);
i.value = function() {
return t.length ? i.settings.multiple ? t : t[0] : null
}, t.length && i.fire("change", e)
}
})
},
remove: function() {
this.$el.off(), this._super()
}
}),
hn = zt.extend({
init: function(e) {
var n = this;
e.delimiter || (e.delimiter = "\xbb"), n._super(e), n.classes.add("path"), n.canFocus = !0, n.on("click", function(e) {
var t;
(t = e.target.getAttribute("data-index")) && n.fire("select", {
value: n.row()[t],
index: t
})
}), n.row(n.settings.row)
},
focus: function() {
return this.getEl().firstChild.focus(), this
},
row: function(e) {
return arguments.length ? (this.state.set("row", e), this) : this.state.get("row")
},
renderHtml: function() {
return '<div id="' + this._id + '" class="' + this.classes + '">' + this._getDataPathHtml(this.state.get("row")) + "</div>"
},
bindStates: function() {
var t = this;
return t.state.on("change:row", function(e) {
t.innerHtml(t._getDataPathHtml(e.value))
}), t._super()
},
_getDataPathHtml: function(e) {
var t, n, i = e || [],
r = "",
o = this.classPrefix;
for (t = 0, n = i.length; t < n; t++) r += (0 < t ? '<div class="' + o + 'divider" aria-hidden="true"> ' + this.settings.delimiter + " </div>" : "") + '<div role="button" class="' + o + "path-item" + (t === n - 1 ? " " + o + "last" : "") + '" data-index="' + t + '" tabindex="-1" id="' + this._id + "-" + t + '" aria-level="' + (t + 1) + '">' + i[t].name + "</div>";
return r || (r = '<div class="' + o + 'path-item">\xa0</div>'), r
}
}),
mn = hn.extend({
postRender: function() {
var o = this,
s = o.settings.editor;
function a(e) {
if (1 === e.nodeType) {
if ("BR" === e.nodeName || e.getAttribute("data-mce-bogus")) return !0;
if ("bookmark" === e.getAttribute("data-mce-type")) return !0
}
return !1
}
return !1 !== s.settings.elementpath && (o.on("select", function(e) {
s.focus(), s.selection.select(this.row()[e.index].element), s.nodeChanged()
}), s.on("nodeChange", function(e) {
for (var t = [], n = e.parents, i = n.length; i--;)
if (1 === n[i].nodeType && !a(n[i])) {
var r = s.fire("ResolveName", {
name: n[i].nodeName.toLowerCase(),
target: n[i]
});
if (r.isDefaultPrevented() || t.push({
name: r.name,
element: n[i]
}), r.isPropagationStopped()) break
}
o.row(t)
})), o._super()
}
}),
gn = mt.extend({
Defaults: {
layout: "flex",
align: "center",
defaults: {
flex: 1
}
},
renderHtml: function() {
var e = this,
t = e._layout,
n = e.classPrefix;
return e.classes.add("formitem"), t.preRender(e), '<div id="' + e._id + '" class="' + e.classes + '" hidefocus="1" tabindex="-1">' + (e.settings.title ? '<div id="' + e._id + '-title" class="' + n + 'title">' + e.settings.title + "</div>" : "") + '<div id="' + e._id + '-body" class="' + e.bodyClasses + '">' + (e.settings.html || "") + t.renderHtml(e) + "</div></div>"
}
}),
pn = mt.extend({
Defaults: {
containerCls: "form",
layout: "flex",
direction: "column",
align: "stretch",
flex: 1,
padding: 15,
labelGap: 30,
spacing: 10,
callbacks: {
submit: function() {
this.submit()
}
}
},
preRender: function() {
var i = this,
e = i.items();
i.settings.formItemDefaults || (i.settings.formItemDefaults = {
layout: "flex",
autoResize: "overflow",
defaults: {
flex: 1
}
}), e.each(function(e) {
var t, n = e.settings.label;
n && ((t = new gn(w.extend({
items: {
type: "label",
id: e._id + "-l",
text: n,
flex: 0,
forId: e._id,
disabled: e.disabled()
}
}, i.settings.formItemDefaults))).type = "formitem", e.aria("labelledby", e._id + "-l"), "undefined" == typeof e.settings.flex && (e.settings.flex = 1), i.replace(e, t), t.add(e))
})
},
submit: function() {
return this.fire("submit", {
data: this.toJSON()
})
},
postRender: function() {
this._super(), this.fromJSON(this.settings.data)
},
bindStates: function() {
var n = this;
function e() {
var e, t, i = 0,
r = [];
if (!1 !== n.settings.labelGapCalc)
for (("children" === n.settings.labelGapCalc ? n.find("formitem") : n.items()).filter("formitem").each(function(e) {
var t = e.items()[0],
n = t.getEl().clientWidth;
i = i < n ? n : i, r.push(t)
}), t = n.settings.labelGap || 0, e = r.length; e--;) r[e].settings.minWidth = i + t
}
n._super(), n.on("show", e), e()
}
}),
vn = pn.extend({
Defaults: {
containerCls: "fieldset",
layout: "flex",
direction: "column",
align: "stretch",
flex: 1,
padding: "25 15 5 15",
labelGap: 30,
spacing: 10,
border: 1
},
renderHtml: function() {
var e = this,
t = e._layout,
n = e.classPrefix;
return e.preRender(), t.preRender(e), '<fieldset id="' + e._id + '" class="' + e.classes + '" hidefocus="1" tabindex="-1">' + (e.settings.title ? '<legend id="' + e._id + '-title" class="' + n + 'fieldset-title">' + e.settings.title + "</legend>" : "") + '<div id="' + e._id + '-body" class="' + e.bodyClasses + '">' + (e.settings.html || "") + t.renderHtml(e) + "</div></fieldset>"
}
}),
bn = 0,
yn = function(e) {
var t = (new Date).getTime();
return e + "_" + Math.floor(1e9 * Math.random()) + ++bn + String(t)
},
xn = function(e) {
if (null === e || e === undefined) throw new Error("Node cannot be null or undefined");
return {
dom: H.constant(e)
}
},
wn = {
fromHtml: function(e, t) {
var n = (t || document).createElement("div");
if (n.innerHTML = e, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", e), "HTML must have a single root node";
return xn(n.childNodes[0])
},
fromTag: function(e, t) {
var n = (t || document).createElement(e);
return xn(n)
},
fromText: function(e, t) {
var n = (t || document).createTextNode(e);
return xn(n)
},
fromDom: xn,
fromPoint: function(e, t, n) {
return N.from(e.dom().elementFromPoint(t, n)).map(xn)
}
},
_n = function(e) {
var t, n = !1;
return function() {
return n || (n = !0, t = e.apply(null, arguments)), t
}
},
Rn = 9,
Cn = 1,
kn = 3,
En = function(e) {
return e.dom().nodeType
},
Hn = function(t) {
return function(e) {
return En(e) === t
}
},
Sn = (Hn(Cn), Hn(kn), Hn(Rn), _n(function() {
return Sn(wn.fromDom(document))
}), function(e) {
var t = e.dom().body;
if (null === t || t === undefined) throw "Body is not available yet";
return wn.fromDom(t)
}),
Mn = (Xt = Object.keys) === undefined ? function(e) {
var t = [];
for (var n in e) e.hasOwnProperty(n) && t.push(n);
return t
} : Xt,
Tn = function(e, t) {
for (var n = Mn(e), i = 0, r = n.length; i < r; i++) {
var o = n[i];
t(e[o], o, e)
}
},
Pn = function(i, r) {
var o = {};
return Tn(i, function(e, t) {
var n = r(e, t, i);
o[n.k] = n.v
}), o
},
Wn = function(e, n) {
var i = [];
return Tn(e, function(e, t) {
i.push(n(e, t))
}), i
},
Nn = function(e) {
return Wn(e, function(e) {
return e
})
},
Dn = {
bifilter: function(e, n) {
var i = {},
r = {};
return Tn(e, function(e, t) {
(n(e, t) ? i : r)[t] = e
}), {
t: i,
f: r
}
},
each: Tn,
map: function(e, i) {
return Pn(e, function(e, t, n) {
return {
k: t,
v: i(e, t, n)
}
})
},
mapToArray: Wn,
tupleMap: Pn,
find: function(e, t) {
for (var n = Mn(e), i = 0, r = n.length; i < r; i++) {
var o = n[i],
s = e[o];
if (t(s, o, e)) return N.some(s)
}
return N.none()
},
keys: Mn,
values: Nn,
size: function(e) {
return Nn(e).length
}
},
An = function(e) {
return e.slice(0).sort()
},
Bn = function(e, t) {
throw new Error("All required keys (" + An(e).join(", ") + ") were not specified. Specified keys were: " + An(t).join(", ") + ".")
},
On = function(e) {
throw new Error("Unsupported keys for object: " + An(e).join(", "))
},
zn = function(t, e) {
if (!q.isArray(e)) throw new Error("The " + t + " fields must be an array. Was: " + e + ".");
oe.each(e, function(e) {
if (!q.isString(e)) throw new Error("The value " + e + " in the " + t + " fields was not a string.")
})
},
Ln = function(e) {
var n = An(e);
oe.find(n, function(e, t) {
return t < n.length - 1 && e === n[t + 1]
}).each(function(e) {
throw new Error("The field: " + e + " occurs more than once in the combined fields: [" + n.join(", ") + "].")
})
},
In = {
immutable: function() {
for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
return function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
if (t.length !== n.length) throw new Error('Wrong number of arguments to struct. Expected "[' + t.length + ']", got ' + n.length + " arguments");
var i = {};
return oe.each(t, function(e, t) {
i[e] = H.constant(n[t])
}), i
}
},
immutableBag: function(r, o) {
var s = r.concat(o);
if (0 === s.length) throw new Error("You must specify at least one required or optional field.");
return zn("required", r), zn("optional", o), Ln(s),
function(t) {
var n = Dn.keys(t);
oe.forall(r, function(e) {
return oe.contains(n, e)
}) || Bn(r, n);
var e = oe.filter(n, function(e) {
return !oe.contains(s, e)
});
0 < e.length && On(e);
var i = {};
return oe.each(r, function(e) {
i[e] = H.constant(t[e])
}), oe.each(o, function(e) {
i[e] = H.constant(Object.prototype.hasOwnProperty.call(t, e) ? N.some(t[e]) : N.none())
}), i
}
}
},
Fn = ("undefined" != typeof window ? window : Function("return this;")(), function(e, t) {
var n = function(e, t) {
for (var n = 0; n < e.length; n++) {
var i = e[n];
if (i.test(t)) return i
}
return undefined
}(e, t);
if (!n) return {
major: 0,
minor: 0
};
var i = function(e) {
return Number(t.replace(n, "$" + e))
};
return Vn(i(1), i(2))
}),
Un = function() {
return Vn(0, 0)
},
Vn = function(e, t) {
return {
major: e,
minor: t
}
},
jn = {
nu: Vn,
detect: function(e, t) {
var n = String(t).toLowerCase();
return 0 === e.length ? Un() : Fn(e, n)
},
unknown: Un
},
qn = "Firefox",
Yn = function(e, t) {
return function() {
return t === e
}
},
$n = function(e) {
var t = e.current;
return {
current: t,
version: e.version,
isEdge: Yn("Edge", t),
isChrome: Yn("Chrome", t),
isIE: Yn("IE", t),
isOpera: Yn("Opera", t),
isFirefox: Yn(qn, t),
isSafari: Yn("Safari", t)
}
},
Xn = {
unknown: function() {
return $n({
current: undefined,
version: jn.unknown()
})
},
nu: $n,
edge: H.constant("Edge"),
chrome: H.constant("Chrome"),
ie: H.constant("IE"),
opera: H.constant("Opera"),
firefox: H.constant(qn),
safari: H.constant("Safari")
},
Jn = "Windows",
Gn = "Android",
Kn = "Solaris",
Zn = "FreeBSD",
Qn = function(e, t) {
return function() {
return t === e
}
},
ei = function(e) {
var t = e.current;
return {
current: t,
version: e.version,
isWindows: Qn(Jn, t),
isiOS: Qn("iOS", t),
isAndroid: Qn(Gn, t),
isOSX: Qn("OSX", t),
isLinux: Qn("Linux", t),
isSolaris: Qn(Kn, t),
isFreeBSD: Qn(Zn, t)
}
},
ti = {
unknown: function() {
return ei({
current: undefined,
version: jn.unknown()
})
},
nu: ei,
windows: H.constant(Jn),
ios: H.constant("iOS"),
android: H.constant(Gn),
linux: H.constant("Linux"),
osx: H.constant("OSX"),
solaris: H.constant(Kn),
freebsd: H.constant(Zn)
},
ni = function(e, t) {
var n = String(t).toLowerCase();
return oe.find(e, function(e) {
return e.search(n)
})
},
ii = function(e, n) {
return ni(e, n).map(function(e) {
var t = jn.detect(e.versionRegexes, n);
return {
current: e.name,
version: t
}
})
},
ri = function(e, n) {
return ni(e, n).map(function(e) {
var t = jn.detect(e.versionRegexes, n);
return {
current: e.name,
version: t
}
})
},
oi = function(e, t) {
return -1 !== e.indexOf(t)
},
si = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
ai = function(t) {
return function(e) {
return oi(e, t)
}
},
li = [{
name: "Edge",
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function(e) {
return oi(e, "edge/") && oi(e, "chrome") && oi(e, "safari") && oi(e, "applewebkit")
}
}, {
name: "Chrome",
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, si],
search: function(e) {
return oi(e, "chrome") && !oi(e, "chromeframe")
}
}, {
name: "IE",
versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
search: function(e) {
return oi(e, "msie") || oi(e, "trident")
}
}, {
name: "Opera",
versionRegexes: [si, /.*?opera\/([0-9]+)\.([0-9]+).*/],
search: ai("opera")
}, {
name: "Firefox",
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: ai("firefox")
}, {
name: "Safari",
versionRegexes: [si, /.*?cpu os ([0-9]+)_([0-9]+).*/],
search: function(e) {
return (oi(e, "safari") || oi(e, "mobile/")) && oi(e, "applewebkit")
}
}],
ui = [{
name: "Windows",
search: ai("win"),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "iOS",
search: function(e) {
return oi(e, "iphone") || oi(e, "ipad")
},
versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
}, {
name: "Android",
search: ai("android"),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "OSX",
search: ai("os x"),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
}, {
name: "Linux",
search: ai("linux"),
versionRegexes: []
}, {
name: "Solaris",
search: ai("sunos"),
versionRegexes: []
}, {
name: "FreeBSD",
search: ai("freebsd"),
versionRegexes: []
}],
ci = {
browsers: H.constant(li),
oses: H.constant(ui)
},
di = function(e) {
var t, n, i, r, o, s, a, l, u, c, d, f = ci.browsers(),
h = ci.oses(),
m = ii(f, e).fold(Xn.unknown, Xn.nu),
g = ri(h, e).fold(ti.unknown, ti.nu);
return {
browser: m,
os: g,
deviceType: (n = m, i = e, r = (t = g).isiOS() && !0 === /ipad/i.test(i), o = t.isiOS() && !r, s = t.isAndroid() && 3 === t.version.major, a = t.isAndroid() && 4 === t.version.major, l = r || s || a && !0 === /mobile/i.test(i), u = t.isiOS() || t.isAndroid(), c = u && !l, d = n.isSafari() && t.isiOS() && !1 === /safari/i.test(i), {
isiPad: H.constant(r),
isiPhone: H.constant(o),
isTablet: H.constant(l),
isPhone: H.constant(c),
isTouch: H.constant(u),
isAndroid: t.isAndroid,
isiOS: t.isiOS,
isWebView: H.constant(d)
})
}
},
fi = _n(function() {
var e = navigator.userAgent;
return di(e)
}),
hi = Cn,
mi = Rn,
gi = function(e) {
return e.nodeType !== hi && e.nodeType !== mi || 0 === e.childElementCount
},
pi = {
all: function(e, t) {
var n = t === undefined ? document : t.dom();
return gi(n) ? [] : oe.map(n.querySelectorAll(e), wn.fromDom)
},
is: function(e, t) {
var n = e.dom();
if (n.nodeType !== hi) return !1;
if (n.matches !== undefined) return n.matches(t);
if (n.msMatchesSelector !== undefined) return n.msMatchesSelector(t);
if (n.webkitMatchesSelector !== undefined) return n.webkitMatchesSelector(t);
if (n.mozMatchesSelector !== undefined) return n.mozMatchesSelector(t);
throw new Error("Browser lacks native selectors")
},
one: function(e, t) {
var n = t === undefined ? document : t.dom();
return gi(n) ? N.none() : N.from(n.querySelector(e)).map(wn.fromDom)
}
},
vi = (fi().browser.isIE(), In.immutable("element", "offset"), function(e, t) {
return pi.all(t, e)
}),
bi = w.trim,
yi = function(t) {
return function(e) {
if (e && 1 === e.nodeType) {
if (e.contentEditable === t) return !0;
if (e.getAttribute("data-mce-contenteditable") === t) return !0
}
return !1
}
},
xi = yi("true"),
wi = yi("false"),
_i = function(e, t, n, i, r) {
return {
type: e,
title: t,
url: n,
level: i,
attach: r
}
},
Ri = function(e) {
return e.innerText || e.textContent
},
Ci = function(e) {
return (t = e) && "A" === t.nodeName && (t.id || t.name) && Ei(e);
var t
},
ki = function(e) {
return e && /^(H[1-6])$/.test(e.nodeName)
},
Ei = function(e) {
return function(e) {
for (; e = e.parentNode;) {
var t = e.contentEditable;
if (t && "inherit" !== t) return xi(e)
}
return !1
}(e) && !wi(e)
},
Hi = function(e) {
return ki(e) && Ei(e)
},
Si = function(e) {
var t, n, i = (t = e).id ? t.id : yn("h");
return _i("header", Ri(e), "#" + i, ki(n = e) ? parseInt(n.nodeName.substr(1), 10) : 0, function() {
e.id = i
})
},
Mi = function(e) {
var t = e.id || e.name,
n = Ri(e);
return _i("anchor", n || "#" + t, "#" + t, 0, H.noop)
},
Ti = function(e) {
var t, n;
return t = "h1,h2,h3,h4,h5,h6,a:not([href])", n = e, oe.map(vi(wn.fromDom(n), t), function(e) {
return e.dom()
})
},
Pi = function(e) {
return 0 < bi(e.title).length
},
Wi = function(e) {
var t, n, i = Ti(e);
return oe.filter((n = i, oe.map(oe.filter(n, Hi), Si)).concat((t = i, oe.map(oe.filter(t, Ci), Mi))), Pi)
},
Ni = {},
Di = function(e) {
return {
title: e.title,
value: {
title: {
raw: e.title
},
url: e.url,
attach: e.attach
}
}
},
Ai = function(e, t) {
return {
title: e,
value: {
title: e,
url: t,
attach: H.noop
}
}
},
Bi = function(e, t, n) {
var i = t in e ? e[t] : n;
return !1 === i ? null : i
},
Oi = function(e, i, r, t) {
var n, o, s, a, l = {
title: "-"
},
u = function(e) {
var t = e.hasOwnProperty(r) ? e[r] : [],
n = oe.filter(t, function(e) {
return t = e, n = i, !oe.exists(n, function(e) {
return e.url === t
});
var t, n
});
return w.map(n, function(e) {
return {
title: e,
value: {
title: e,
url: e,
attach: H.noop
}
}
})
},
c = function(t) {
var e, n = oe.filter(i, function(e) {
return e.type === t
});
return e = n, w.map(e, Di)
};
return !1 === t.typeahead_urls ? [] : "file" === r ? (n = [zi(e, u(Ni)), zi(e, c("header")), zi(e, (o = c("anchor"), s = Bi(t, "anchor_top", "#top"), a = Bi(t, "anchor_bottom", "#bottom"), null !== s && o.unshift(Ai("<top>", s)), null !== a && o.push(Ai("<bottom>", a)), o))], oe.foldl(n, function(e, t) {
return 0 === e.length || 0 === t.length ? e.concat(t) : e.concat(l, t)
}, [])) : zi(e, u(Ni))
},
zi = function(e, t) {
var n = e.toLowerCase(),
i = w.grep(t, function(e) {
return -1 !== e.title.toLowerCase().indexOf(n)
});
return 1 === i.length && i[0].title === e ? [] : i
},
Li = function(r, i, o, s) {
var t = function(e) {
var t = Wi(o),
n = Oi(e, t, s, i);
r.showAutoComplete(n, e)
};
r.on("autocomplete", function() {
t(r.value())
}), r.on("selectitem", function(e) {
var t = e.value;
r.value(t.url);
var n, i = (n = t.title).raw ? n.raw : n;
"image" === s ? r.fire("change", {
meta: {
alt: i,
attach: t.attach
}
}) : r.fire("change", {
meta: {
text: i,
attach: t.attach
}
}), r.focus()
}), r.on("click", function(e) {
0 === r.value().length && "INPUT" === e.target.nodeName && t("")
}), r.on("PostRender", function() {
r.getRoot().on("submit", function(e) {
var t, n, i;
e.isDefaultPrevented() || (t = r.value(), i = Ni[n = s], /^https?/.test(t) && (i ? oe.indexOf(i, t).isNone() && (Ni[n] = i.slice(0, 5).concat(t)) : Ni[n] = [t]))
})
})
},
Ii = function(o, e, n) {
var i = e.filepicker_validator_handler;
i && o.state.on("change:value", function(e) {
var t;
0 !== (t = e.value).length ? i({
url: t,
type: n
}, function(e) {
var t, n, i, r = (n = (t = e).status, i = t.message, "valid" === n ? {
status: "ok",
message: i
} : "unknown" === n ? {
status: "warn",
message: i
} : "invalid" === n ? {
status: "warn",
message: i
} : {
status: "none",
message: ""
});
o.statusMessage(r.message), o.statusLevel(r.status)
}) : o.statusLevel("none")
})
},
Fi = on.extend({
Statics: {
clearHistory: function() {
Ni = {}
}
},
init: function(e) {
var t, n, i, r = this,
o = window.tinymce ? window.tinymce.activeEditor : l.activeEditor,
s = o.settings,
a = e.filetype;
e.spellcheck = !1, (i = s.file_picker_types || s.file_browser_callback_types) && (i = w.makeMap(i, /[, ]/)), i && !i[a] || (!(n = s.file_picker_callback) || i && !i[a] ? !(n = s.file_browser_callback) || i && !i[a] || (t = function() {
n(r.getEl("inp").id, r.value(), a, window)
}) : t = function() {
var e = r.fire("beforecall").meta;
e = w.extend({
filetype: a
}, e), n.call(o, function(e, t) {
r.value(e).fire("change", {
meta: t
})
}, r.value(), e)
}), t && (e.icon = "browse", e.onaction = t), r._super(e), r.classes.add("filepicker"), Li(r, s, o.getBody(), a), Ii(r, s, a)
}
}),
Ui = Zt.extend({
recalc: function(e) {
var t = e.layoutRect(),
n = e.paddingBox;
e.items().filter(":visible").each(function(e) {
e.layoutRect({
x: n.left,
y: n.top,
w: t.innerW - n.right - n.left,
h: t.innerH - n.top - n.bottom
}), e.recalc && e.recalc()
})
}
}),
Vi = Zt.extend({
recalc: function(e) {
var t, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, R, C, k, E, H, S, M, T, P, W, N, D, A, B, O, z = [],
L = Math.max,
I = Math.min;
for (i = e.items().filter(":visible"), r = e.layoutRect(), o = e.paddingBox, s = e.settings, f = e.isRtl() ? s.direction || "row-reversed" : s.direction, a = s.align, l = e.isRtl() ? s.pack || "end" : s.pack, u = s.spacing || 0, "row-reversed" !== f && "column-reverse" !== f || (i = i.set(i.toArray().reverse()), f = f.split("-")[0]), "column" === f ? (C = "y", _ = "h", R = "minH", k = "maxH", H = "innerH", E = "top", S = "deltaH", M = "contentH", D = "left", W = "w", T = "x", P = "innerW", N = "minW", A = "right", B = "deltaW", O = "contentW") : (C = "x", _ = "w", R = "minW", k = "maxW", H = "innerW", E = "left", S = "deltaW", M = "contentW", D = "top", W = "h", T = "y", P = "innerH", N = "minH", A = "bottom", B = "deltaH", O = "contentH"), d = r[H] - o[E] - o[E], w = c = 0, t = 0, n = i.length; t < n; t++) m = (h = i[t]).layoutRect(), d -= t < n - 1 ? u : 0, 0 < (g = h.settings.flex) && (c += g, m[k] && z.push(h), m.flex = g), d -= m[R], w < (p = o[D] + m[N] + o[A]) && (w = p);
if ((y = {})[R] = d < 0 ? r[R] - d + r[S] : r[H] - d + r[S], y[N] = w + r[B], y[M] = r[H] - d, y[O] = w, y.minW = I(y.minW, r.maxW), y.minH = I(y.minH, r.maxH), y.minW = L(y.minW, r.startMinWidth), y.minH = L(y.minH, r.startMinHeight), !r.autoResize || y.minW === r.minW && y.minH === r.minH) {
for (b = d / c, t = 0, n = z.length; t < n; t++)(v = (m = (h = z[t]).layoutRect())[k]) < (p = m[R] + m.flex * b) ? (d -= m[k] - m[R], c -= m.flex, m.flex = 0, m.maxFlexSize = v) : m.maxFlexSize = 0;
for (b = d / c, x = o[E], y = {}, 0 === c && ("end" === l ? x = d + o[E] : "center" === l ? (x = Math.round(r[H] / 2 - (r[H] - d) / 2) + o[E]) < 0 && (x = o[E]) : "justify" === l && (x = o[E], u = Math.floor(d / (i.length - 1)))), y[T] = o[D], t = 0, n = i.length; t < n; t++) p = (m = (h = i[t]).layoutRect()).maxFlexSize || m[R], "center" === a ? y[T] = Math.round(r[P] / 2 - m[W] / 2) : "stretch" === a ? (y[W] = L(m[N] || 0, r[P] - o[D] - o[A]), y[T] = o[D]) : "end" === a && (y[T] = r[P] - m[W] - o.top), 0 < m.flex && (p += m.flex * b), y[_] = p, y[C] = x, h.layoutRect(y), h.recalc && h.recalc(), x += p + u
} else if (y.w = y.minW, y.h = y.minH, e.layoutRect(y), this.recalc(e), null === e._lastRect) {
var F = e.parent();
F && (F._lastRect = null, F.recalc())
}
}
}),
ji = Kt.extend({
Defaults: {
containerClass: "flow-layout",
controlClass: "flow-layout-item",
endClass: "break"
},
recalc: function(e) {
e.items().filter(":visible").each(function(e) {
e.recalc && e.recalc()
})
},
isNative: function() {
return !0
}
}),
qi = function(e, t) {
return pi.one(t, e)
},
Yi = function(e, t) {
return function() {
e.execCommand("mceToggleFormat", !1, t)
}
},
$i = function(e, t, n) {
var i = function(e) {
n(e, t)
};
e.formatter ? e.formatter.formatChanged(t, i) : e.on("init", function() {
e.formatter.formatChanged(t, i)
})
},
Xi = function(e, n) {
return function(t) {
$i(e, n, function(e) {
t.control.active(e)
})
}
},
Ji = function(i) {
var t = ["alignleft", "aligncenter", "alignright", "alignjustify"],
r = "alignleft",
e = [{
text: "Left",
icon: "alignleft",
onclick: Yi(i, "alignleft")
}, {
text: "Center",
icon: "aligncenter",
onclick: Yi(i, "aligncenter")
}, {
text: "Right",
icon: "alignright",
onclick: Yi(i, "alignright")
}, {
text: "Justify",
icon: "alignjustify",
onclick: Yi(i, "alignjustify")
}];
i.addMenuItem("align", {
text: "Align",
menu: e
}), i.addButton("align", {
type: "menubutton",
icon: r,
menu: e,
onShowMenu: function(e) {
var n = e.control.menu;
w.each(t, function(t, e) {
n.items().eq(e).each(function(e) {
return e.active(i.formatter.match(t))
})
})
},
onPostRender: function(e) {
var n = e.control;
w.each(t, function(t, e) {
$i(i, t, function(e) {
n.icon(r), e && n.icon(t)
})
})
}
}), w.each({
alignleft: ["Align left", "JustifyLeft"],
aligncenter: ["Align center", "JustifyCenter"],
alignright: ["Align right", "JustifyRight"],
alignjustify: ["Justify", "JustifyFull"],
alignnone: ["No alignment", "JustifyNone"]
}, function(e, t) {
i.addButton(t, {
active: !1,
tooltip: e[0],
cmd: e[1],
onPostRender: Xi(i, t)
})
})
},
Gi = function(e) {
return e ? e.split(",")[0] : ""
},
Ki = function(l, u) {
return function() {
var a = this;
l.on("init nodeChange", function(e) {
var t, n, i, r, o = l.queryCommandValue("FontName"),
s = (t = u, r = (n = o) ? n.toLowerCase() : "", w.each(t, function(e) {
e.value.toLowerCase() === r && (i = e.value)
}), w.each(t, function(e) {
i || Gi(e.value).toLowerCase() !== Gi(r).toLowerCase() || (i = e.value)
}), i);
a.value(s || null), !s && o && a.text(Gi(o))
})
}
},
Zi = function(n) {
n.addButton("fontselect", function() {
var e, t = (e = function(e) {
for (var t = (e = e.replace(/;$/, "").split(";")).length; t--;) e[t] = e[t].split("=");
return e
}(n.settings.font_formats || "Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"), w.map(e, function(e) {
return {
text: {
raw: e[0]
},
value: e[1],
textStyle: -1 === e[1].indexOf("dings") ? "font-family:" + e[1] : ""
}
}));
return {
type: "listbox",
text: "Font Family",
tooltip: "Font Family",
values: t,
fixedWidth: !0,
onPostRender: Ki(n, t),
onselect: function(e) {
e.control.settings.value && n.execCommand("FontName", !1, e.control.settings.value)
}
}
})
},
Qi = function(e) {
Zi(e)
},
er = function(e, t) {
return /[0-9.]+px$/.test(e) ? (n = 72 * parseInt(e, 10) / 96, i = t || 0, r = Math.pow(10, i), Math.round(n * r) / r + "pt") : e;
var n, i, r
},
tr = function(e, t, n) {
var i;
return w.each(e, function(e) {
e.value === n ? i = n : e.value === t && (i = t)
}), i
},
nr = function(n) {
n.addButton("fontsizeselect", function() {
var e, s, a, t = (e = n.settings.fontsize_formats || "8pt 10pt 12pt 14pt 18pt 24pt 36pt", w.map(e.split(" "), function(e) {
var t = e,
n = e,
i = e.split("=");
return 1 < i.length && (t = i[0], n = i[1]), {
text: t,
value: n
}
}));
return {
type: "listbox",
text: "Font Sizes",
tooltip: "Font Sizes",
values: t,
fixedWidth: !0,
onPostRender: (s = n, a = t, function() {
var o = this;
s.on("init nodeChange", function(e) {
var t, n, i, r;
if (t = s.queryCommandValue("FontSize"))
for (i = 3; !r && 0 <= i; i--) n = er(t, i), r = tr(a, n, t);
o.value(r || null), r || o.text(n)
})
}),
onclick: function(e) {
e.control.settings.value && n.execCommand("FontSize", !1, e.control.settings.value)
}
}
})
},
ir = function(e) {
nr(e)
},
rr = function(n, e) {
var i = e.length;
return w.each(e, function(e) {
e.menu && (e.hidden = 0 === rr(n, e.menu));
var t = e.format;
t && (e.hidden = !n.formatter.canApply(t)), e.hidden && i--
}), i
},
or = function(n, e) {
var i = e.items().length;
return e.items().each(function(e) {
e.menu && e.visible(0 < or(n, e.menu)), !e.menu && e.settings.menu && e.visible(0 < rr(n, e.settings.menu));
var t = e.settings.format;
t && e.visible(n.formatter.canApply(t)), e.visible() || i--
}), i
},
sr = function(e) {
var i, r, o, t, s, n, a, l, u = (r = 0, o = [], t = [{
title: "Headings",
items: [{
title: "Heading 1",
format: "h1"
}, {
title: "Heading 2",
format: "h2"
}, {
title: "Heading 3",
format: "h3"
}, {
title: "Heading 4",
format: "h4"
}, {
title: "Heading 5",
format: "h5"
}, {
title: "Heading 6",
format: "h6"
}]
}, {
title: "Inline",
items: [{
title: "Bold",
icon: "bold",
format: "bold"
}, {
title: "Italic",
icon: "italic",
format: "italic"
}, {
title: "Underline",
icon: "underline",
format: "underline"
}, {
title: "Strikethrough",
icon: "strikethrough",
format: "strikethrough"
}, {
title: "Superscript",
icon: "superscript",
format: "superscript"
}, {
title: "Subscript",
icon: "subscript",
format: "subscript"
}, {
title: "Code",
icon: "code",
format: "code"
}]
}, {
title: "Blocks",
items: [{
title: "Paragraph",
format: "p"
}, {
title: "Blockquote",
format: "blockquote"
}, {
title: "Div",
format: "div"
}, {
title: "Pre",
format: "pre"
}]
}, {
title: "Alignment",
items: [{
title: "Left",
icon: "alignleft",
format: "alignleft"
}, {
title: "Center",
icon: "aligncenter",
format: "aligncenter"
}, {
title: "Right",
icon: "alignright",
format: "alignright"
}, {
title: "Justify",
icon: "alignjustify",
format: "alignjustify"
}]
}], s = function(e) {
var i = [];
if (e) return w.each(e, function(e) {
var t = {
text: e.title,
icon: e.icon
};
if (e.items) t.menu = s(e.items);
else {
var n = e.format || "custom" + r++;
e.format || (e.name = n, o.push(e)), t.format = n, t.cmd = e.cmd
}
i.push(t)
}), i
}, (i = e).on("init", function() {
w.each(o, function(e) {
i.formatter.register(e.name, e)
})
}), {
type: "menu",
items: i.settings.style_formats_merge ? i.settings.style_formats ? s(t.concat(i.settings.style_formats)) : s(t) : s(i.settings.style_formats || t),
onPostRender: function(e) {
i.fire("renderFormatsMenu", {
control: e.control
})
},
itemDefaults: {
preview: !0,
textStyle: function() {
if (this.settings.format) return i.formatter.getCssText(this.settings.format)
},
onPostRender: function() {
var n = this;
n.parent().on("show", function() {
var e, t;
(e = n.settings.format) && (n.disabled(!i.formatter.canApply(e)), n.active(i.formatter.match(e))), (t = n.settings.cmd) && n.active(i.queryCommandState(t))
})
},
onclick: function() {
this.settings.format && Yi(i, this.settings.format)(), this.settings.cmd && i.execCommand(this.settings.cmd)
}
}
});
n = u, e.addMenuItem("formats", {
text: "Formats",
menu: n
}), l = u, (a = e).addButton("styleselect", {
type: "menubutton",
text: "Formats",
menu: l,
onShowMenu: function() {
a.settings.style_formats_autohide && or(a, this.menu)
}
})
},
ar = function(n, e) {
return function() {
var r, o, s, t = [];
return w.each(e, function(e) {
t.push({
text: e[0],
value: e[1],
textStyle: function() {
return n.formatter.getCssText(e[1])
}
})
}), {
type: "listbox",
text: e[0][0],
values: t,
fixedWidth: !0,
onselect: function(e) {
if (e.control) {
var t = e.control.value();
Yi(n, t)()
}
},
onPostRender: (r = n, o = t, function() {
var t = this;
r.on("nodeChange", function(e) {
var n = r.formatter,
i = null;
w.each(e.parents, function(t) {
if (w.each(o, function(e) {
if (s ? n.matchNode(t, s, {
value: e.value
}) && (i = e.value) : n.matchNode(t, e.value) && (i = e.value), i) return !1
}), i) return !1
}), t.value(i)
})
})
}
}
},
lr = function(e) {
var t, n, i = function(e) {
for (var t = (e = e.replace(/;$/, "").split(";")).length; t--;) e[t] = e[t].split("=");
return e
}(e.settings.block_formats || "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");
e.addMenuItem("blockformats", {
text: "Blocks",
menu: (t = e, n = i, w.map(n, function(e) {
return {
text: e[0],
onclick: Yi(t, e[1]),
textStyle: function() {
return t.formatter.getCssText(e[1])
}
}
}))
}), e.addButton("formatselect", ar(e, i))
},
ur = function(t, e) {
var n, i;
if ("string" == typeof e) i = e.split(" ");
else if (w.isArray(e)) return oe.flatten(w.map(e, function(e) {
return ur(t, e)
}));
return n = w.grep(i, function(e) {
return "|" === e || e in t.menuItems
}), w.map(n, function(e) {
return "|" === e ? {
text: "-"
} : t.menuItems[e]
})
},
cr = function(e) {
return e && "-" === e.text
},
dr = function(e) {
var t = oe.filter(e, function(e, t, n) {
return !cr(e) || !cr(n[t - 1])
});
return oe.filter(t, function(e, t, n) {
return !cr(e) || 0 < t && t < n.length - 1
})
},
fr = function(e) {
var t, n, i, r, o = e.settings.insert_button_items;
return dr(o ? ur(e, o) : (t = e, n = "insert", i = [{
text: "-"
}], r = w.grep(t.menuItems, function(e) {
return e.context === n
}), w.each(r, function(e) {
"before" === e.separator && i.push({
text: "|"
}), e.prependToContext ? i.unshift(e) : i.push(e), "after" === e.separator && i.push({
text: "|"
})
}), i))
},
hr = function(e) {
var t;
(t = e).addButton("insert", {
type: "menubutton",
icon: "insert",
menu: [],
oncreatemenu: function() {
this.menu.add(fr(t)), this.menu.renderNew()
}
})
},
mr = function(e) {
var n, i, r;
n = e, w.each({
bold: "Bold",
italic: "Italic",
underline: "Underline",
strikethrough: "Strikethrough",
subscript: "Subscript",
superscript: "Superscript"
}, function(e, t) {
n.addButton(t, {
active: !1,
tooltip: e,
onPostRender: Xi(n, t),
onclick: Yi(n, t)
})
}), i = e, w.each({
outdent: ["Decrease indent", "Outdent"],
indent: ["Increase indent", "Indent"],
cut: ["Cut", "Cut"],
copy: ["Copy", "Copy"],
paste: ["Paste", "Paste"],
help: ["Help", "mceHelp"],
selectall: ["Select all", "SelectAll"],
visualaid: ["Visual aids", "mceToggleVisualAid"],
newdocument: ["New document", "mceNewDocument"],
removeformat: ["Clear formatting", "RemoveFormat"],
remove: ["Remove", "Delete"]
}, function(e, t) {
i.addButton(t, {
tooltip: e[0],
cmd: e[1]
})
}), r = e, w.each({
blockquote: ["Blockquote", "mceBlockQuote"],
subscript: ["Subscript", "Subscript"],
superscript: ["Superscript", "Superscript"]
}, function(e, t) {
r.addButton(t, {
active: !1,
tooltip: e[0],
cmd: e[1],
onPostRender: Xi(r, t)
})
})
},
gr = function(e) {
var n;
mr(e), n = e, w.each({
bold: ["Bold", "Bold", "Meta+B"],
italic: ["Italic", "Italic", "Meta+I"],
underline: ["Underline", "Underline", "Meta+U"],
strikethrough: ["Strikethrough", "Strikethrough"],
subscript: ["Subscript", "Subscript"],
superscript: ["Superscript", "Superscript"],
removeformat: ["Clear formatting", "RemoveFormat"],
newdocument: ["New document", "mceNewDocument"],
cut: ["Cut", "Cut", "Meta+X"],
copy: ["Copy", "Copy", "Meta+C"],
paste: ["Paste", "Paste", "Meta+V"],
selectall: ["Select all", "SelectAll", "Meta+A"]
}, function(e, t) {
n.addMenuItem(t, {
text: e[0],
icon: t,
shortcut: e[2],
cmd: e[1]
})
}), n.addMenuItem("codeformat", {
text: "Code",
icon: "code",
onclick: Yi(n, "code")
})
},
pr = function(n, i) {
return function() {
var e = this,
t = function() {
var e = "redo" === i ? "hasRedo" : "hasUndo";
return !!n.undoManager && n.undoManager[e]()
};
e.disabled(!t()), n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode", function() {
e.disabled(n.readonly || !t())
})
}
},
vr = function(e) {
var t, n;
(t = e).addMenuItem("undo", {
text: "Undo",
icon: "undo",
shortcut: "Meta+Z",
onPostRender: pr(t, "undo"),
cmd: "undo"
}), t.addMenuItem("redo", {
text: "Redo",
icon: "redo",
shortcut: "Meta+Y",
onPostRender: pr(t, "redo"),
cmd: "redo"
}), (n = e).addButton("undo", {
tooltip: "Undo",
onPostRender: pr(n, "undo"),
cmd: "undo"
}), n.addButton("redo", {
tooltip: "Redo",
onPostRender: pr(n, "redo"),
cmd: "redo"
})
},
br = function(e) {
var t, n;
(t = e).addMenuItem("visualaid", {
text: "Visual aids",
selectable: !0,
onPostRender: (n = t, function() {
var t = this;
n.on("VisualAid", function(e) {
t.active(e.hasVisual)
}), t.active(n.hasVisual)
}),
cmd: "mceToggleVisualAid"
})
},
yr = {
setup: function(e) {
var t;
e.rtl && (ct.rtl = !0), e.on("mousedown", function() {
Tt.hideAll()
}), (t = e).settings.ui_container && (pe.container = qi(wn.fromDom(document.body), t.settings.ui_container).fold(H.constant(null), function(e) {
return e.dom()
})), zt.tooltips = !pe.iOS, ct.translate = function(e) {
return l.translate(e)
}, lr(e), Ji(e), gr(e), vr(e), ir(e), Qi(e), sr(e), br(e), hr(e)
}
},
xr = Zt.extend({
recalc: function(e) {
var t, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, R, C, k, E, H, S, M = [],
T = [];
t = e.settings, r = e.items().filter(":visible"), o = e.layoutRect(), i = t.columns || Math.ceil(Math.sqrt(r.length)), n = Math.ceil(r.length / i), b = t.spacingH || t.spacing || 0, y = t.spacingV || t.spacing || 0, x = t.alignH || t.align, w = t.alignV || t.align, p = e.paddingBox, S = "reverseRows" in t ? t.reverseRows : e.isRtl(), x && "string" == typeof x && (x = [x]), w && "string" == typeof w && (w = [w]);
for (d = 0; d < i; d++) M.push(0);
for (f = 0; f < n; f++) T.push(0);
for (f = 0; f < n; f++)
for (d = 0; d < i && (c = r[f * i + d]); d++) C = (u = c.layoutRect()).minW, k = u.minH, M[d] = C > M[d] ? C : M[d], T[f] = k > T[f] ? k : T[f];
for (E = o.innerW - p.left - p.right, d = _ = 0; d < i; d++) _ += M[d] + (0 < d ? b : 0), E -= (0 < d ? b : 0) + M[d];
for (H = o.innerH - p.top - p.bottom, f = R = 0; f < n; f++) R += T[f] + (0 < f ? y : 0), H -= (0 < f ? y : 0) + T[f];
if (_ += p.left + p.right, R += p.top + p.bottom, (l = {}).minW = _ + (o.w - o.innerW), l.minH = R + (o.h - o.innerH), l.contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH, l.minW = Math.min(l.minW, o.maxW), l.minH = Math.min(l.minH, o.maxH), l.minW = Math.max(l.minW, o.startMinWidth), l.minH = Math.max(l.minH, o.startMinHeight), !o.autoResize || l.minW === o.minW && l.minH === o.minH) {
var P;
o.autoResize && ((l = e.layoutRect(l)).contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH), P = "start" === t.packV ? 0 : 0 < H ? Math.floor(H / n) : 0;
var W = 0,
N = t.flexWidths;
if (N)
for (d = 0; d < N.length; d++) W += N[d];
else W = i;
var D = E / W;
for (d = 0; d < i; d++) M[d] += N ? N[d] * D : D;
for (m = p.top, f = 0; f < n; f++) {
for (h = p.left, a = T[f] + P, d = 0; d < i && (c = r[S ? f * i + i - 1 - d : f * i + d]); d++) g = c.settings, u = c.layoutRect(), s = Math.max(M[d], u.startMinWidth), u.x = h, u.y = m, "center" === (v = g.alignH || (x ? x[d] || x[0] : null)) ? u.x = h + s / 2 - u.w / 2 : "right" === v ? u.x = h + s - u.w : "stretch" === v && (u.w = s), "center" === (v = g.alignV || (w ? w[d] || w[0] : null)) ? u.y = m + a / 2 - u.h / 2 : "bottom" === v ? u.y = m + a - u.h : "stretch" === v && (u.h = a), c.layoutRect(u), h += s + b, c.recalc && c.recalc();
m += a + y
}
} else if (l.w = l.minW, l.h = l.minH, e.layoutRect(l), this.recalc(e), null === e._lastRect) {
var A = e.parent();
A && (A._lastRect = null, A.recalc())
}
}
}),
wr = zt.extend({
renderHtml: function() {
var e = this;
return e.classes.add("iframe"), e.canFocus = !1, '<iframe id="' + e._id + '" class="' + e.classes + '" tabindex="-1" src="' + (e.settings.url || "javascript:''") + '" frameborder="0"></iframe>'
},
src: function(e) {
this.getEl().src = e
},
html: function(e, t) {
var n = this,
i = this.getEl().contentWindow.document.body;
return i ? (i.innerHTML = e, t && t()) : u.setTimeout(function() {
n.html(e)
}), this
}
}),
_r = zt.extend({
init: function(e) {
this._super(e), this.classes.add("widget").add("infobox"), this.canFocus = !1
},
severity: function(e) {
this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(e)
},
help: function(e) {
this.state.set("help", e)
},
renderHtml: function() {
var e = this,
t = e.classPrefix;
return '<div id="' + e._id + '" class="' + e.classes + '"><div id="' + e._id + '-body">' + e.encode(e.state.get("text")) + '<button role="button" tabindex="-1"><i class="' + t + "ico " + t + 'i-help"></i></button></div></div>'
},
bindStates: function() {
var t = this;
return t.state.on("change:text", function(e) {
t.getEl("body").firstChild.data = t.encode(e.value), t.state.get("rendered") && t.updateLayoutRect()
}), t.state.on("change:help", function(e) {
t.classes.toggle("has-help", e.value), t.state.get("rendered") && t.updateLayoutRect()
}), t._super()
}
}),
Rr = zt.extend({
init: function(e) {
var t = this;
t._super(e), t.classes.add("widget").add("label"), t.canFocus = !1, e.multiline && t.classes.add("autoscroll"), e.strong && t.classes.add("strong")
},
initLayoutRect: function() {
var e = this,
t = e._super();
return e.settings.multiline && (He.getSize(e.getEl()).width > t.maxW && (t.minW = t.maxW, e.classes.add("multiline")), e.getEl().style.width = t.minW + "px", t.startMinH = t.h = t.minH = Math.min(t.maxH, He.getSize(e.getEl()).height)), t
},
repaint: function() {
return this.settings.multiline || (this.getEl().style.lineHeight = this.layoutRect().h + "px"), this._super()
},
severity: function(e) {
this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(e)
},
renderHtml: function() {
var e, t, n = this,
i = n.settings.forId,
r = n.settings.html ? n.settings.html : n.encode(n.state.get("text"));
return !i && (t = n.settings.forName) && (e = n.getRoot().find("#" + t)[0]) && (i = e._id), i ? '<label id="' + n._id + '" class="' + n.classes + '"' + (i ? ' for="' + i + '"' : "") + ">" + r + "</label>" : '<span id="' + n._id + '" class="' + n.classes + '">' + r + "</span>"
},
bindStates: function() {
var t = this;
return t.state.on("change:text", function(e) {
t.innerHtml(t.encode(e.value)), t.state.get("rendered") && t.updateLayoutRect()
}), t._super()
}
}),
Cr = mt.extend({
Defaults: {
role: "toolbar",
layout: "flow"
},
init: function(e) {
this._super(e), this.classes.add("toolbar")
},
postRender: function() {
return this.items().each(function(e) {
e.classes.add("toolbar-item")
}), this._super()
}
}),
kr = Cr.extend({
Defaults: {
role: "menubar",
containerCls: "menubar",
ariaRoot: !0,
defaults: {
type: "menubutton"
}
}
}),
Er = Qt.extend({
init: function(e) {
var t = this;
t._renderOpen = !0, t._super(e), e = t.settings, t.classes.add("menubtn"), e.fixedWidth && t.classes.add("fixed-width"), t.aria("haspopup", !0), t.state.set("menu", e.menu || t.render())
},
showMenu: function(e) {
var t, n = this;
if (n.menu && n.menu.visible() && !1 !== e) return n.hideMenu();
n.menu || (t = n.state.get("menu") || [], n.classes.add("opened"), t.length ? t = {
type: "menu",
animate: !0,
items: t
} : (t.type = t.type || "menu", t.animate = !0), t.renderTo ? n.menu = t.parent(n).show().renderTo() : n.menu = v.create(t).parent(n).renderTo(), n.fire("createmenu"), n.menu.reflow(), n.menu.on("cancel", function(e) {
e.control.parent() === n.menu && (e.stopPropagation(), n.focus(), n.hideMenu())
}), n.menu.on("select", function() {
n.focus()
}), n.menu.on("show hide", function(e) {
e.control === n.menu && (n.activeMenu("show" === e.type), n.classes.toggle("opened", "show" === e.type)), n.aria("expanded", "show" === e.type)
}).fire("show")), n.menu.show(), n.menu.layoutRect({
w: n.layoutRect().w
}), n.menu.repaint(), n.menu.moveRel(n.getEl(), n.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]), n.fire("showmenu")
},
hideMenu: function() {
this.menu && (this.menu.items().each(function(e) {
e.hideMenu && e.hideMenu()
}), this.menu.hide())
},
activeMenu: function(e) {
this.classes.toggle("active", e)
},
renderHtml: function() {
var e, t = this,
n = t._id,
i = t.classPrefix,
r = t.settings.icon,
o = t.state.get("text"),
s = "";
return (e = t.settings.image) ? (r = "none", "string" != typeof e && (e = window.getSelection ? e[0] : e[1]), e = " style=\"background-image: url('" + e + "')\"") : e = "", o && (t.classes.add("btn-has-text"), s = '<span class="' + i + 'txt">' + t.encode(o) + "</span>"), r = t.settings.icon ? i + "ico " + i + "i-" + r : "", t.aria("role", t.parent() instanceof kr ? "menuitem" : "button"), '<div id="' + n + '" class="' + t.classes + '" tabindex="-1" aria-labelledby="' + n + '"><button id="' + n + '-open" role="presentation" type="button" tabindex="-1">' + (r ? '<i class="' + r + '"' + e + "></i>" : "") + s + ' <i class="' + i + 'caret"></i></button></div>'
},
postRender: function() {
var r = this;
return r.on("click", function(e) {
e.control === r && function(e, t) {
for (; e;) {
if (t === e) return !0;
e = e.parentNode
}
return !1
}(e.target, r.getEl()) && (r.focus(), r.showMenu(!e.aria), e.aria && r.menu.items().filter(":visible")[0].focus())
}), r.on("mouseenter", function(e) {
var t, n = e.control,
i = r.parent();
n && i && n instanceof Er && n.parent() === i && (i.items().filter("MenuButton").each(function(e) {
e.hideMenu && e !== n && (e.menu && e.menu.visible() && (t = !0), e.hideMenu())
}), t && (n.focus(), n.showMenu()))
}), r._super()
},
bindStates: function() {
var e = this;
return e.state.on("change:menu", function() {
e.menu && e.menu.remove(), e.menu = null
}), e._super()
},
remove: function() {
this._super(), this.menu && this.menu.remove()
}
}),
Hr = Tt.extend({
Defaults: {
defaultType: "menuitem",
border: 1,
layout: "stack",
role: "application",
bodyRole: "menu",
ariaRoot: !0
},
init: function(e) {
if (e.autohide = !0, e.constrainToViewport = !0, "function" == typeof e.items && (e.itemsFactory = e.items, e.items = []), e.itemDefaults)
for (var t = e.items, n = t.length; n--;) t[n] = w.extend({}, e.itemDefaults, t[n]);
this._super(e), this.classes.add("menu"), e.animate && 11 !== pe.ie && this.classes.add("animate")
},
repaint: function() {
return this.classes.toggle("menu-align", !0), this._super(), this.getEl().style.height = "", this.getEl("body").style.height = "", this
},
cancel: function() {
this.hideAll(), this.fire("select")
},
load: function() {
var t, n = this;
function i() {
n.throbber && (n.throbber.hide(), n.throbber = null)
}
n.settings.itemsFactory && (n.throbber || (n.throbber = new Dt(n.getEl("body"), !0), 0 === n.items().length ? (n.throbber.show(), n.fire("loading")) : n.throbber.show(100, function() {
n.items().remove(), n.fire("loading")
}), n.on("hide close", i)), n.requestTime = t = (new Date).getTime(), n.settings.itemsFactory(function(e) {
0 !== e.length ? n.requestTime === t && (n.getEl().style.width = "", n.getEl("body").style.width = "", i(), n.items().remove(), n.getEl("body").innerHTML = "", n.add(e), n.renderNew(), n.fire("loaded")) : n.hide()
}))
},
hideAll: function() {
return this.find("menuitem").exec("hideMenu"), this._super()
},
preRender: function() {
var n = this;
return n.items().each(function(e) {
var t = e.settings;
if (t.icon || t.image || t.selectable) return !(n._hasIcons = !0)
}), n.settings.itemsFactory && n.on("postrender", function() {
n.settings.itemsFactory && n.load()
}), n.on("show hide", function(e) {
e.control === n && ("show" === e.type ? u.setTimeout(function() {
n.classes.add("in")
}, 0) : n.classes.remove("in"))
}), n._super()
}
}),
Sr = Er.extend({
init: function(i) {
var t, r, o, n, s = this;
s._super(i), i = s.settings, s._values = t = i.values, t && ("undefined" != typeof i.value && function e(t) {
for (var n = 0; n < t.length; n++) {
if (r = t[n].selected || i.value === t[n].value) return o = o || t[n].text, s.state.set("value", t[n].value), !0;
if (t[n].menu && e(t[n].menu)) return !0
}
}(t), !r && 0 < t.length && (o = t[0].text, s.state.set("value", t[0].value)), s.state.set("menu", t)), s.state.set("text", i.text || o), s.classes.add("listbox"), s.on("select", function(e) {
var t = e.control;
n && (e.lastControl = n), i.multiple ? t.active(!t.active()) : s.value(e.control.value()), n = t
})
},
value: function(t) {
return 0 === arguments.length ? this.state.get("value") : (void 0 === t || (this.settings.values ? 0 < w.grep(this.settings.values, function(e) {
return e.value === t
}).length ? this.state.set("value", t) : null === t && this.state.set("value", null) : this.state.set("value", t)), this)
},
bindStates: function() {
var i = this;
return i.on("show", function(e) {
var t, n;
t = e.control, n = i.value(), t instanceof Hr && t.items().each(function(e) {
e.hasMenus() || e.active(e.value() === n)
})
}), i.state.on("change:value", function(t) {
var n = function e(t, n) {
var i;
if (t)
for (var r = 0; r < t.length; r++) {
if (t[r].value === n) return t[r];
if (t[r].menu && (i = e(t[r].menu, n))) return i
}
}(i.state.get("menu"), t.value);
n ? i.text(n.text) : i.text(i.settings.text)
}), i._super()
}
}),
Mr = zt.extend({
Defaults: {
border: 0,
role: "menuitem"
},
init: function(e) {
var t, n = this;
n._super(e), e = n.settings, n.classes.add("menu-item"), e.menu && n.classes.add("menu-item-expand"), e.preview && n.classes.add("menu-item-preview"), "-" !== (t = n.state.get("text")) && "|" !== t || (n.classes.add("menu-item-sep"), n.aria("role", "separator"), n.state.set("text", "-")), e.selectable && (n.aria("role", "menuitemcheckbox"), n.classes.add("menu-item-checkbox"), e.icon = "selected"), e.preview || e.selectable || n.classes.add("menu-item-normal"), n.on("mousedown", function(e) {
e.preventDefault()
}), e.menu && !e.ariaHideMenu && n.aria("haspopup", !0)
},
hasMenus: function() {
return !!this.settings.menu
},
showMenu: function() {
var t, n = this,
e = n.settings,
i = n.parent();
if (i.items().each(function(e) {
e !== n && e.hideMenu()
}), e.menu) {
(t = n.menu) ? t.show(): ((t = e.menu).length ? t = {
type: "menu",
items: t
} : t.type = t.type || "menu", i.settings.itemDefaults && (t.itemDefaults = i.settings.itemDefaults), (t = n.menu = v.create(t).parent(n).renderTo()).reflow(), t.on("cancel", function(e) {
e.stopPropagation(), n.focus(), t.hide()
}), t.on("show hide", function(e) {
e.control.items && e.control.items().each(function(e) {
e.active(e.settings.selected)
})
}).fire("show"), t.on("hide", function(e) {
e.control === t && n.classes.remove("selected")
}), t.submenu = !0), t._parentMenu = i, t.classes.add("menu-sub");
var r = t.testMoveRel(n.getEl(), n.isRtl() ? ["tl-tr", "bl-br", "tr-tl", "br-bl"] : ["tr-tl", "br-bl", "tl-tr", "bl-br"]);
t.moveRel(n.getEl(), r), r = "menu-sub-" + (t.rel = r), t.classes.remove(t._lastRel).add(r), t._lastRel = r, n.classes.add("selected"), n.aria("expanded", !0)
}
},
hideMenu: function() {
var e = this;
return e.menu && (e.menu.items().each(function(e) {
e.hideMenu && e.hideMenu()
}), e.menu.hide(), e.aria("expanded", !1)), e
},
renderHtml: function() {
var e, t = this,
n = t._id,
i = t.settings,
r = t.classPrefix,
o = t.state.get("text"),
s = t.settings.icon,
a = "",
l = i.shortcut,
u = t.encode(i.url);
function c(e) {
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
}
function d(e) {
var t = i.match || "";
return t ? e.replace(new RegExp(c(t), "gi"), function(e) {
return "!mce~match[" + e + "]mce~match!"
}) : e
}
function f(e) {
return e.replace(new RegExp(c("!mce~match["), "g"), "<b>").replace(new RegExp(c("]mce~match!"), "g"), "</b>")
}
return s && t.parent().classes.add("menu-has-icons"), i.image && (a = " style=\"background-image: url('" + i.image + "')\""), l && (l = function(e) {
var t, n, i = {};
for (i = pe.mac ? {
alt: "&#x2325;",
ctrl: "&#x2318;",
shift: "&#x21E7;",
meta: "&#x2318;"
} : {
meta: "Ctrl"
}, e = e.split("+"), t = 0; t < e.length; t++)(n = i[e[t].toLowerCase()]) && (e[t] = n);
return e.join("+")
}(l)), s = r + "ico " + r + "i-" + (t.settings.icon || "none"), e = "-" !== o ? '<i class="' + s + '"' + a + "></i>\xa0" : "", o = f(t.encode(d(o))), u = f(t.encode(d(u))), '<div id="' + n + '" class="' + t.classes + '" tabindex="-1">' + e + ("-" !== o ? '<span id="' + n + '-text" class="' + r + 'text">' + o + "</span>" : "") + (l ? '<div id="' + n + '-shortcut" class="' + r + 'menu-shortcut">' + l + "</div>" : "") + (i.menu ? '<div class="' + r + 'caret"></div>' : "") + (u ? '<div class="' + r + 'menu-item-link">' + u + "</div>" : "") + "</div>"
},
postRender: function() {
var t = this,
n = t.settings,
e = n.textStyle;
if ("function" == typeof e && (e = e.call(this)), e) {
var i = t.getEl("text");
i && (i.setAttribute("style", e), t._textStyle = e)
}
return t.on("mouseenter click", function(e) {
e.control === t && (n.menu || "click" !== e.type ? (t.showMenu(), e.aria && t.menu.focus(!0)) : (t.fire("select"), u.requestAnimationFrame(function() {
t.parent().hideAll()
})))
}), t._super(), t
},
hover: function() {
return this.parent().items().each(function(e) {
e.classes.remove("selected")
}), this.classes.toggle("selected", !0), this
},
active: function(e) {
return function(e, t) {
var n = e._textStyle;
if (n) {
var i = e.getEl("text");
i.setAttribute("style", n), t && (i.style.color = "", i.style.backgroundColor = "")
}
}(this, e), void 0 !== e && this.aria("checked", e), this._super(e)
},
remove: function() {
this._super(), this.menu && this.menu.remove()
}
}),
Tr = nn.extend({
Defaults: {
classes: "radio",
role: "radio"
}
}),
Pr = zt.extend({
renderHtml: function() {
var e = this,
t = e.classPrefix;
return e.classes.add("resizehandle"), "both" === e.settings.direction && e.classes.add("resizehandle-both"), e.canFocus = !1, '<div id="' + e._id + '" class="' + e.classes + '"><i class="' + t + "ico " + t + 'i-resize"></i></div>'
},
postRender: function() {
var t = this;
t._super(), t.resizeDragHelper = new pt(this._id, {
start: function() {
t.fire("ResizeStart")
},
drag: function(e) {
"both" !== t.settings.direction && (e.deltaX = 0), t.fire("Resize", e)
},
stop: function() {
t.fire("ResizeEnd")
}
})
},
remove: function() {
return this.resizeDragHelper && this.resizeDragHelper.destroy(), this._super()
}
});
function Wr(e) {
var t = "";
if (e)
for (var n = 0; n < e.length; n++) t += '<option value="' + e[n] + '">' + e[n] + "</option>";
return t
}
var Nr = zt.extend({
Defaults: {
classes: "selectbox",
role: "selectbox",
options: []
},
init: function(e) {
var n = this;
n._super(e), n.settings.size && (n.size = n.settings.size), n.settings.options && (n._options = n.settings.options), n.on("keydown", function(e) {
var t;
13 === e.keyCode && (e.preventDefault(), n.parents().reverse().each(function(e) {
if (e.toJSON) return t = e, !1
}), n.fire("submit", {
data: t.toJSON()
}))
})
},
options: function(e) {
return arguments.length ? (this.state.set("options", e), this) : this.state.get("options")
},
renderHtml: function() {
var e, t = this,
n = "";
return e = Wr(t._options), t.size && (n = ' size = "' + t.size + '"'), '<select id="' + t._id + '" class="' + t.classes + '"' + n + ">" + e + "</select>"
},
bindStates: function() {
var t = this;
return t.state.on("change:options", function(e) {
t.getEl().innerHTML = Wr(e.value)
}), t._super()
}
});
function Dr(e, t, n) {
return e < t && (e = t), n < e && (e = n), e
}
function Ar(e, t, n) {
e.setAttribute("aria-" + t, n)
}
function Br(e, t) {
var n, i, r, o, s;
"v" === e.settings.orientation ? (r = "top", i = "height", n = "h") : (r = "left", i = "width", n = "w"), s = e.getEl("handle"), o = ((e.layoutRect()[n] || 100) - He.getSize(s)[i]) * ((t - e._minValue) / (e._maxValue - e._minValue)) + "px", s.style[r] = o, s.style.height = e.layoutRect().h + "px", Ar(s, "valuenow", t), Ar(s, "valuetext", "" + e.settings.previewFilter(t)), Ar(s, "valuemin", e._minValue), Ar(s, "valuemax", e._maxValue)
}
var Or = zt.extend({
init: function(e) {
var t = this;
e.previewFilter || (e.previewFilter = function(e) {
return Math.round(100 * e) / 100
}), t._super(e), t.classes.add("slider"), "v" === e.orientation && t.classes.add("vertical"), t._minValue = q.isNumber(e.minValue) ? e.minValue : 0, t._maxValue = q.isNumber(e.maxValue) ? e.maxValue : 100, t._initValue = t.state.get("value")
},
renderHtml: function() {
var e = this._id,
t = this.classPrefix;
return '<div id="' + e + '" class="' + this.classes + '"><div id="' + e + '-handle" class="' + t + 'slider-handle" role="slider" tabindex="-1"></div></div>'
},
reset: function() {
this.value(this._initValue).repaint()
},
postRender: function() {
var e, t, n, i, r, o, s, a, l, u, c, d, f, h, m = this;
e = m._minValue, t = m._maxValue, "v" === m.settings.orientation ? (n = "screenY", i = "top", r = "height", o = "h") : (n = "screenX", i = "left", r = "width", o = "w"), m._super(),
function(o, s) {
function t(e) {
var t, n, i, r;
t = Dr(t = (((t = m.value()) + (r = n = o)) / ((i = s) - r) + .05 * e) * (i - n) - n, o, s), m.value(t), m.fire("dragstart", {
value: t
}), m.fire("drag", {
value: t
}), m.fire("dragend", {
value: t
})
}
m.on("keydown", function(e) {
switch (e.keyCode) {
case 37:
case 38:
t(-1);
break;
case 39:
case 40:
t(1)
}
})
}(e, t), s = e, a = t, l = m.getEl("handle"), m._dragHelper = new pt(m._id, {
handle: m._id + "-handle",
start: function(e) {
u = e[n], c = parseInt(m.getEl("handle").style[i], 10), d = (m.layoutRect()[o] || 100) - He.getSize(l)[r], m.fire("dragstart", {
value: h
})
},
drag: function(e) {
var t = e[n] - u;
f = Dr(c + t, 0, d), l.style[i] = f + "px", h = s + f / d * (a - s), m.value(h), m.tooltip().text("" + m.settings.previewFilter(h)).show().moveRel(l, "bc tc"), m.fire("drag", {
value: h
})
},
stop: function() {
m.tooltip().hide(), m.fire("dragend", {
value: h
})
}
})
},
repaint: function() {
this._super(), Br(this, this.value())
},
bindStates: function() {
var t = this;
return t.state.on("change:value", function(e) {
Br(t, e.value)
}), t._super()
}
}),
zr = zt.extend({
renderHtml: function() {
return this.classes.add("spacer"), this.canFocus = !1, '<div id="' + this._id + '" class="' + this.classes + '"></div>'
}
}),
Lr = Er.extend({
Defaults: {
classes: "widget btn splitbtn",
role: "button"
},
repaint: function() {
var e, t, n = this.getEl(),
i = this.layoutRect();
return this._super(), e = n.firstChild, t = n.lastChild, ke(e).css({
width: i.w - He.getSize(t).width,
height: i.h - 2
}), ke(t).css({
height: i.h - 2
}), this
},
activeMenu: function(e) {
ke(this.getEl().lastChild).toggleClass(this.classPrefix + "active", e)
},
renderHtml: function() {
var e, t, n = this,
i = n._id,
r = n.classPrefix,
o = n.state.get("icon"),
s = n.state.get("text"),
a = n.settings,
l = "";
return (e = a.image) ? (o = "none", "string" != typeof e && (e = window.getSelection ? e[0] : e[1]), e = " style=\"background-image: url('" + e + "')\"") : e = "", o = a.icon ? r + "ico " + r + "i-" + o : "", s && (n.classes.add("btn-has-text"), l = '<span class="' + r + 'txt">' + n.encode(s) + "</span>"), t = "boolean" == typeof a.active ? ' aria-pressed="' + a.active + '"' : "", '<div id="' + i + '" class="' + n.classes + '" role="button"' + t + ' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">' + (o ? '<i class="' + o + '"' + e + "></i>" : "") + l + '</button><button type="button" class="' + r + 'open" hidefocus="1" tabindex="-1">' + (n._menuBtnText ? (o ? "\xa0" : "") + n._menuBtnText : "") + ' <i class="' + r + 'caret"></i></button></div>'
},
postRender: function() {
var n = this.settings.onclick;
return this.on("click", function(e) {
var t = e.target;
if (e.control === this)
for (; t;) {
if (e.aria && "down" !== e.aria.key || "BUTTON" === t.nodeName && -1 === t.className.indexOf("open")) return e.stopImmediatePropagation(), void(n && n.call(this, e));
t = t.parentNode
}
}), delete this.settings.onclick, this._super()
}
}),
Ir = ji.extend({
Defaults: {
containerClass: "stack-layout",
controlClass: "stack-layout-item",
endClass: "break"
},
isNative: function() {
return !0
}
}),
Fr = _t.extend({
Defaults: {
layout: "absolute",
defaults: {
type: "panel"
}
},
activateTab: function(n) {
var e;
this.activeTabId && (e = this.getEl(this.activeTabId), ke(e).removeClass(this.classPrefix + "active"), e.setAttribute("aria-selected", "false")), this.activeTabId = "t" + n, (e = this.getEl("t" + n)).setAttribute("aria-selected", "true"), ke(e).addClass(this.classPrefix + "active"), this.items()[n].show().fire("showtab"), this.reflow(), this.items().each(function(e, t) {
n !== t && e.hide()
})
},
renderHtml: function() {
var i = this,
e = i._layout,
r = "",
o = i.classPrefix;
return i.preRender(), e.preRender(i), i.items().each(function(e, t) {
var n = i._id + "-t" + t;
e.aria("role", "tabpanel"), e.aria("labelledby", n), r += '<div id="' + n + '" class="' + o + 'tab" unselectable="on" role="tab" aria-controls="' + e._id + '" aria-selected="false" tabIndex="-1">' + i.encode(e.settings.title) + "</div>"
}), '<div id="' + i._id + '" class="' + i.classes + '" hidefocus="1" tabindex="-1"><div id="' + i._id + '-head" class="' + o + 'tabs" role="tablist">' + r + '</div><div id="' + i._id + '-body" class="' + i.bodyClasses + '">' + e.renderHtml(i) + "</div></div>"
},
postRender: function() {
var i = this;
i._super(), i.settings.activeTab = i.settings.activeTab || 0, i.activateTab(i.settings.activeTab), this.on("click", function(e) {
var t = e.target.parentNode;
if (t && t.id === i._id + "-head")
for (var n = t.childNodes.length; n--;) t.childNodes[n] === e.target && i.activateTab(n)
})
},
initLayoutRect: function() {
var e, t, n, i = this;
t = (t = He.getSize(i.getEl("head")).width) < 0 ? 0 : t, n = 0, i.items().each(function(e) {
t = Math.max(t, e.layoutRect().minW), n = Math.max(n, e.layoutRect().minH)
}), i.items().each(function(e) {
e.settings.x = 0, e.settings.y = 0, e.settings.w = t, e.settings.h = n, e.layoutRect({
x: 0,
y: 0,
w: t,
h: n
})
});
var r = He.getSize(i.getEl("head")).height;
return i.settings.minWidth = t, i.settings.minHeight = n + r, (e = i._super()).deltaH += r, e.innerH = e.h - e.deltaH, e
}
}),
Ur = zt.extend({
init: function(e) {
var n = this;
n._super(e), n.classes.add("textbox"), e.multiline ? n.classes.add("multiline") : (n.on("keydown", function(e) {
var t;
13 === e.keyCode && (e.preventDefault(), n.parents().reverse().each(function(e) {
if (e.toJSON) return t = e, !1
}), n.fire("submit", {
data: t.toJSON()
}))
}), n.on("keyup", function(e) {
n.state.set("value", e.target.value)
}))
},
repaint: function() {
var e, t, n, i, r, o = this,
s = 0;
e = o.getEl().style, t = o._layoutRect, r = o._lastRepaintRect || {};
var a = document;
return !o.settings.multiline && a.all && (!a.documentMode || a.documentMode <= 8) && (e.lineHeight = t.h - s + "px"), i = (n = o.borderBox).left + n.right + 8, s = n.top + n.bottom + (o.settings.multiline ? 8 : 0), t.x !== r.x && (e.left = t.x + "px", r.x = t.x), t.y !== r.y && (e.top = t.y + "px", r.y = t.y), t.w !== r.w && (e.width = t.w - i + "px", r.w = t.w), t.h !== r.h && (e.height = t.h - s + "px", r.h = t.h), o._lastRepaintRect = r, o.fire("repaint", {}, !1), o
},
renderHtml: function() {
var t, e, n = this,
i = n.settings;
return t = {
id: n._id,
hidefocus: "1"
}, w.each(["rows", "spellcheck", "maxLength", "size", "readonly", "min", "max", "step", "list", "pattern", "placeholder", "required", "multiple"], function(e) {
t[e] = i[e]
}), n.disabled() && (t.disabled = "disabled"), i.subtype && (t.type = i.subtype), (e = He.create(i.multiline ? "textarea" : "input", t)).value = n.state.get("value"), e.className = n.classes.toString(), e.outerHTML
},
value: function(e) {
return arguments.length ? (this.state.set("value", e), this) : (this.state.get("rendered") && this.state.set("value", this.getEl().value), this.state.get("value"))
},
postRender: function() {
var t = this;
t.getEl().value = t.state.get("value"), t._super(), t.$el.on("change", function(e) {
t.state.set("value", e.target.value), t.fire("change", e)
})
},
bindStates: function() {
var t = this;
return t.state.on("change:value", function(e) {
t.getEl().value !== e.value && (t.getEl().value = e.value)
}), t.state.on("change:disabled", function(e) {
t.getEl().disabled = e.value
}), t._super()
},
remove: function() {
this.$el.off(), this._super()
}
}),
Vr = function() {
return {
Selector: Ye,
Collection: Je,
ReflowQueue: it,
Control: ct,
Factory: v,
KeyboardNavigation: ft,
Container: mt,
DragHelper: pt,
Scrollable: wt,
Panel: _t,
Movable: Ne,
Resizable: Rt,
FloatPanel: Tt,
Window: $t,
MessageBox: Jt,
Tooltip: Ot,
Widget: zt,
Progress: Lt,
Notification: Ft,
Layout: Kt,
AbsoluteLayout: Zt,
Button: Qt,
ButtonGroup: tn,
Checkbox: nn,
ComboBox: on,
ColorBox: sn,
PanelButton: an,
ColorButton: un,
ColorPicker: dn,
Path: hn,
ElementPath: mn,
FormItem: gn,
Form: pn,
FieldSet: vn,
FilePicker: Fi,
FitLayout: Ui,
FlexLayout: Vi,
FlowLayout: ji,
FormatControls: yr,
GridLayout: xr,
Iframe: wr,
InfoBox: _r,
Label: Rr,
Toolbar: Cr,
MenuBar: kr,
MenuButton: Er,
MenuItem: Mr,
Throbber: Dt,
Menu: Hr,
ListBox: Sr,
Radio: Tr,
ResizeHandle: Pr,
SelectBox: Nr,
Slider: Or,
Spacer: zr,
SplitButton: Lr,
StackLayout: Ir,
TabPanel: Fr,
TextBox: Ur,
DropZone: fn,
BrowseButton: en
}
},
jr = function(n) {
n.ui ? w.each(Vr(), function(e, t) {
n.ui[t] = e
}) : n.ui = Vr()
};
w.each(Vr(), function(e, t) {
v.add(t, e)
}), jr(window.tinymce ? window.tinymce : {}), o.add("modern", function(e) {
return yr.setup(e), Gt(e)
})
}();