"
},
bindStates: function() {
var o = this;
function e(t) {
o.classes.toggle("checked", t), o.aria("checked", t)
}
return o.state.on("change:text", function(t) {
o.getEl("al").firstChild.data = o.translate(t.value)
}), o.state.on("change:checked change:value", function(t) {
o.fire("change"), e(t.value)
}), o.state.on("change:icon", function(t) {
var e = t.value,
n = o.classPrefix;
if (void 0 === e) return o.settings.icon;
e = (o.settings.icon = e) ? n + "ico " + n + "i-" + o.settings.icon : "";
var i = o.getEl().firstChild,
r = i.getElementsByTagName("i")[0];
e ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = e) : r && i.removeChild(r)
}), o.state.get("checked") && e(!0), o._super()
}
}),
Bn = tinymce.util.Tools.resolve("tinymce.util.VK"),
Ln = be.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(t) {
var e = t.target,
n = r.getEl();
if (Nt.contains(n, e) || e === n) for (; e && e !== n;) e.id && -1 !== e.id.indexOf("-open") && (r.fire("action"), i.menu && (r.showMenu(), t.aria && r.menu.items()[0].focus())), e = e.parentNode
}), r.on("keydown", function(t) {
var e;
13 === t.keyCode && "INPUT" === t.target.nodeName && (t.preventDefault(), r.parents().reverse().each(function(t) {
if (t.toJSON) return e = t, !1
}), r.fire("submit", {
data: e.toJSON()
}))
}), r.on("keyup", function(t) {
if ("INPUT" === t.target.nodeName) {
var e = r.state.get("value"),
n = t.target.value;
n !== e && (r.state.set("value", n), r.fire("autocomplete", t))
}
}), r.on("mouseover", function(t) {
var e = r.tooltip().moveTo(-65535);
if (r.statusLevel() && -1 !== t.target.className.indexOf(r.classPrefix + "status")) {
var n = r.statusMessage() || "Ok",
i = e.text(n).show().testMoveRel(t.target, ["bc-tc", "bc-tl", "bc-tr"]);
e.classes.toggle("tooltip-n", "bc-tc" === i), e.classes.toggle("tooltip-nw", "bc-tl" === i), e.classes.toggle("tooltip-ne", "bc-tr" === i), e.moveRel(t.target, i)
}
})
},
statusLevel: function(t) {
return 0 < arguments.length && this.state.set("statusLevel", t), this.state.get("statusLevel")
},
statusMessage: function(t) {
return 0 < arguments.length && this.state.set("statusMessage", t), this.state.get("statusMessage")
},
showMenu: function() {
var t, e = this,
n = e.settings;
e.menu || ((t = n.menu || []).length ? t = {
type: "menu",
items: t
} : t.type = t.type || "menu", e.menu = Ee.create(t).parent(e).renderTo(e.getContainerElm()), e.fire("createmenu"), e.menu.reflow(), e.menu.on("cancel", function(t) {
t.control === e.menu && e.focus()
}), e.menu.on("show hide", function(t) {
t.control.items().each(function(t) {
t.active(t.value() === e.value())
})
}).fire("show"), e.menu.on("select", function(t) {
e.value(t.control.value())
}), e.on("focusin", function(t) {
"INPUT" === t.target.tagName.toUpperCase() && e.menu.hide()
}), e.aria("expanded", !0)), e.menu.show(), e.menu.layoutRect({
w: e.layoutRect().w
}), e.menu.moveRel(e.getEl(), e.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"])
},
focus: function() {
this.getEl("inp").focus()
},
repaint: function() {
var t, e, n = this,
i = n.getEl(),
r = n.getEl("open"),
o = n.layoutRect(),
s = 0,
a = i.firstChild;
n.statusLevel() && "none" !== n.statusLevel() && (s = parseInt(St.getRuntimeStyle(a, "padding-right"), 10) - parseInt(St.getRuntimeStyle(a, "padding-left"), 10)), t = r ? o.w - St.getSize(r).width - 10 : o.w - 10;
var l = document;
return l.all && (!l.documentMode || l.documentMode <= 8) && (e = n.layoutRect().h - 2 + "px"), Nt(a).css({
width: t - s,
lineHeight: e
}), n._super(), n
},
postRender: function() {
var e = this;
return Nt(this.getEl("inp")).on("change", function(t) {
e.state.set("value", t.target.value), e.fire("change", t)
}), e._super()
},
renderHtml: function() {
var t, e, 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.disabled() && (u += ' disabled="disabled"'), (t = o.icon) && "caret" !== t && (t = s + "ico " + s + "i-" + o.icon), e = i.state.get("text"), (t || e) && (l = '", i.classes.add("has-open")), '
' + n + l + "
"
},
value: function(t) {
return arguments.length ? (this.state.set("value", t), this) : (this.state.get("rendered") && this.state.set("value", this.getEl("inp").value), this.state.get("value"))
},
showAutoComplete: function(t, i) {
var r = this;
if (0 !== t.length) {
r.menu ? r.menu.items().remove() : r.menu = Ee.create({
type: "menu",
classes: "combobox-menu",
layout: "flow"
}).parent(r).renderTo(), C.each(t, function(t) {
var e, n;
r.menu.add({
text: t.title,
url: t.previewUrl,
match: i,
classes: "menu-item-ellipsis",
onclick: (e = t.value, n = t.title, function() {
r.fire("selectitem", {
title: n,
value: e
})
})
})
}), r.menu.renderNew(), r.hideMenu(), r.menu.on("cancel", function(t) {
t.control.parent() === r.menu && (t.stopPropagation(), r.focus(), r.hideMenu())
}), r.menu.on("select", function() {
r.focus()
});
var e = r.layoutRect().w;
r.menu.layoutRect({
w: e,
minW: 0,
maxW: e
}), 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(t) {
r.getEl("inp").value !== t.value && (r.getEl("inp").value = t.value)
}), r.state.on("change:disabled", function(t) {
r.getEl("inp").disabled = t.value
}), r.state.on("change:statusLevel", function(t) {
var e = r.getEl("status"),
n = r.classPrefix,
i = t.value;
St.css(e, "display", "none" === i ? "none" : ""), St.toggleClass(e, n + "i-checkmark", "ok" === i), St.toggleClass(e, n + "i-warning", "warn" === i), St.toggleClass(e, n + "i-error", "error" === i), r.classes.toggle("has-status", "none" !== i), r.repaint()
}), St.on(r.getEl("status"), "mouseleave", function() {
r.tooltip().hide()
}), r.on("cancel", function(t) {
r.menu && r.menu.visible() && (t.stopPropagation(), r.hideMenu())
});
var n = function(t, e) {
e && 0 < e.items().length && e.items().eq(t)[0].focus()
};
return r.on("keydown", function(t) {
var e = t.keyCode;
"INPUT" === t.target.nodeName && (e === Bn.DOWN ? (t.preventDefault(), r.fire("autocomplete"), n(0, r.menu)) : e === Bn.UP && (t.preventDefault(), n(-1, r.menu)))
}), r._super()
},
remove: function() {
Nt(this.getEl("inp")).off(), this.menu && this.menu.remove(), this._super()
}
}),
In = Ln.extend({
init: function(t) {
var e = this;
t.spellcheck = !1, t.onaction && (t.icon = "none"), e._super(t), e.classes.add("colorbox"), e.on("change keyup postrender", function() {
e.repaintColor(e.value())
})
},
repaintColor: function(t) {
var e = this.getEl("open"),
n = e ? e.getElementsByTagName("i")[0] : null;
if (n) try {
n.style.background = t
} catch (i) {}
},
bindStates: function() {
var e = this;
return e.state.on("change:value", function(t) {
e.state.get("rendered") && e.repaintColor(t.value)
}), e._super()
}
}),
zn = Dn.extend({
showPanel: function() {
var e = this,
t = e.settings;
if (e.classes.add("opened"), e.panel) e.panel.show();
else {
var n = t.panel;
n.type && (n = {
layout: "grid",
items: n
}), n.role = n.role || "dialog", n.popover = !0, n.autohide = !0, n.ariaRoot = !0, e.panel = new Ve(n).on("hide", function() {
e.classes.remove("opened")
}).on("cancel", function(t) {
t.stopPropagation(), e.focus(), e.hidePanel()
}).parent(e).renderTo(e.getContainerElm()), e.panel.fire("show"), e.panel.reflow()
}
var i = e.panel.testMoveRel(e.getEl(), t.popoverAlign || (e.isRtl() ? ["bc-tc", "bc-tl", "bc-tr"] : ["bc-tc", "bc-tr", "bc-tl", "tc-bc", "tc-br", "tc-bl"]));
e.panel.classes.toggle("start", "l" === i.substr(-1)), e.panel.classes.toggle("end", "r" === i.substr(-1));
var r = "t" === i.substr(0, 1);
e.panel.classes.toggle("bottom", !r), e.panel.classes.toggle("top", r), e.panel.moveRel(e.getEl(), i)
},
hidePanel: function() {
this.panel && this.panel.hide()
},
postRender: function() {
var e = this;
return e.aria("haspopup", !0), e.on("click", function(t) {
t.control === e && (e.panel && e.panel.visible() ? e.hidePanel() : (e.showPanel(), e.panel.focus( !! t.aria)))
}), e._super()
},
remove: function() {
return this.panel && (this.panel.remove(), this.panel = null), this._super()
}
}),
Fn = v.DOM,
Un = zn.extend({
init: function(t) {
this._super(t), this.classes.add("splitbtn"), this.classes.add("colorbutton")
},
color: function(t) {
return t ? (this._color = t, this.getEl("preview").style.backgroundColor = t, this) : this._color
},
resetColor: function() {
return this._color = null, this.getEl("preview").style.backgroundColor = null, this
},
renderHtml: function() {
var t = this,
e = t._id,
n = t.classPrefix,
i = t.state.get("text"),
r = t.settings.icon ? n + "ico " + n + "i-" + t.settings.icon : "",
o = t.settings.image ? " style=\"background-image: url('" + t.settings.image + "')\"" : "",
s = "";
return i && (t.classes.add("btn-has-text"), s = '' + t.encode(i) + ""), ''
},
postRender: function() {
var e = this,
n = e.settings.onclick;
return e.on("click", function(t) {
t.aria && "down" === t.aria.key || t.control !== e || Fn.getParent(t.target, "." + e.classPrefix + "open") || (t.stopImmediatePropagation(), n.call(e, t))
}), delete e.settings.onclick, e._super()
}
}),
Vn = tinymce.util.Tools.resolve("tinymce.util.Color"),
qn = be.extend({
Defaults: {
classes: "widget colorpicker"
},
init: function(t) {
this._super(t)
},
postRender: function() {
var n, i, r, o, s, a = this,
l = a.color();
function u(t, e) {
var n, i, r = St.getPos(t);
return n = e.pageX - r.x, i = e.pageY - r.y, {
x: n = Math.max(0, Math.min(n / t.clientWidth, 1)),
y: i = Math.max(0, Math.min(i / t.clientHeight, 1))
}
}
function c(t, e) {
var n = (360 - t.h) / 360;
St.css(r, {
top: 100 * n + "%"
}), e || St.css(s, {
left: t.s + "%",
top: 100 - t.v + "%"
}), o.style.background = Vn({
s: 100,
v: 100,
h: t.h
}).toHex(), a.color().parse({
s: t.s,
v: t.v,
h: t.h
})
}
function t(t) {
var e;
e = u(o, t), n.s = 100 * e.x, n.v = 100 * (1 - e.y), c(n), a.fire("change")
}
function e(t) {
var e;
e = u(i, t), (n = l.toHsv()).h = 360 * (1 - e.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 Re(a._id + "-sv", {
start: t,
drag: t
}), a._hdraghelper = new Re(a._id + "-h", {
start: e,
drag: e
}), a._repaint()
},
rgb: function() {
return this.color().toRgb()
},
value: function(t) {
if (!arguments.length) return this.color().toHex();
this.color().parse(t), this._rendered && this._repaint()
},
color: function() {
return this._color || (this._color = Vn()), this._color
},
renderHtml: function() {
var t, e = this._id,
o = this.classPrefix,
s = "#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";
return t = '
' +
function() {
var t, e, n, i, r = "";
for (n = "filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=", t = 0, e = (i = s.split(",")).length - 1; t < e; t++) r += '';
return r
}() + '
', '
' + t + "
"
}
}),
Yn = be.extend({
init: function(t) {
t = C.extend({
height: 100,
text: "Drop an image here",
multiple: !1,
accept: null
}, t), this._super(t), this.classes.add("dropzone"), t.multiple && this.classes.add("multiple")
},
renderHtml: function() {
var t, e, n = this.settings;
return t = {
id: this._id,
hidefocus: "1"
}, e = St.create("div", t, "" + this.translate(n.text) + ""), n.height && St.css(e, "height", n.height + "px"), n.width && St.css(e, "width", n.width + "px"), e.className = this.classes, e.outerHTML
},
postRender: function() {
var i = this,
t = function(t) {
t.preventDefault(), i.classes.toggle("dragenter"), i.getEl().className = i.classes
};
i._super(), i.$el.on("dragover", function(t) {
t.preventDefault()
}), i.$el.on("dragenter", t), i.$el.on("dragleave", t), i.$el.on("drop", function(t) {
if (t.preventDefault(), !i.state.get("disabled")) {
var e = function(t) {
var e = i.settings.accept;
if ("string" != typeof e) return t;
var n = new RegExp("(" + e.split(/\s*,\s*/).join("|") + ")$", "i");
return C.grep(t, function(t) {
return n.test(t.name)
})
}(t.dataTransfer.files);
i.value = function() {
return e.length ? i.settings.multiple ? e : e[0] : null
}, e.length && i.fire("change", t)
}
})
},
remove: function() {
this.$el.off(), this._super()
}
}),
$n = be.extend({
init: function(t) {
var n = this;
t.delimiter || (t.delimiter = "\xbb"), n._super(t), n.classes.add("path"), n.canFocus = !0, n.on("click", function(t) {
var e;
(e = t.target.getAttribute("data-index")) && n.fire("select", {
value: n.row()[e],
index: e
})
}), n.row(n.settings.row)
},
focus: function() {
return this.getEl().firstChild.focus(), this
},
row: function(t) {
return arguments.length ? (this.state.set("row", t), this) : this.state.get("row")
},
renderHtml: function() {
return '
"
},
bindStates: function() {
var e = this;
return e.state.on("change:row", function(t) {
e.innerHtml(e._getDataPathHtml(t.value))
}), e._super()
},
_getDataPathHtml: function(t) {
var e, n, i = t || [],
r = "",
o = this.classPrefix;
for (e = 0, n = i.length; e < n; e++) r += (0 < e ? '
' + this.settings.delimiter + "
" : "") + '
' + i[e].name + "
";
return r || (r = '
\xa0
'), r
}
}),
Xn = $n.extend({
postRender: function() {
var o = this,
s = o.settings.editor;
function a(t) {
if (1 === t.nodeType) {
if ("BR" === t.nodeName || t.getAttribute("data-mce-bogus")) return !0;
if ("bookmark" === t.getAttribute("data-mce-type")) return !0
}
return !1
}
return !1 !== s.settings.elementpath && (o.on("select", function(t) {
s.focus(), s.selection.select(this.row()[t.index].element), s.nodeChanged()
}), s.on("nodeChange", function(t) {
for (var e = [], n = t.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() || e.push({
name: r.name,
element: n[i]
}), r.isPropagationStopped()) break
}
o.row(e)
})), o._super()
}
}),
jn = De.extend({
Defaults: {
layout: "flex",
align: "center",
defaults: {
flex: 1
}
},
renderHtml: function() {
var t = this,
e = t._layout,
n = t.classPrefix;
return t.classes.add("formitem"), e.preRender(t), '
' + (t.settings.title ? '
' + t.settings.title + "
" : "") + '
' + (t.settings.html || "") + e.renderHtml(t) + "
"
}
}),
Jn = De.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,
t = i.items();
i.settings.formItemDefaults || (i.settings.formItemDefaults = {
layout: "flex",
autoResize: "overflow",
defaults: {
flex: 1
}
}), t.each(function(t) {
var e, n = t.settings.label;
n && ((e = new jn(C.extend({
items: {
type: "label",
id: t._id + "-l",
text: n,
flex: 0,
forId: t._id,
disabled: t.disabled()
}
}, i.settings.formItemDefaults))).type = "formitem", t.aria("labelledby", t._id + "-l"), "undefined" == typeof t.settings.flex && (t.settings.flex = 1), i.replace(t, e), e.add(t))
})
},
submit: function() {
return this.fire("submit", {
data: this.toJSON()
})
},
postRender: function() {
this._super(), this.fromJSON(this.settings.data)
},
bindStates: function() {
var n = this;
function t() {
var t, e, i = 0,
r = [];
if (!1 !== n.settings.labelGapCalc) for (("children" === n.settings.labelGapCalc ? n.find("formitem") : n.items()).filter("formitem").each(function(t) {
var e = t.items()[0],
n = e.getEl().clientWidth;
i = i < n ? n : i, r.push(e)
}), e = n.settings.labelGap || 0, t = r.length; t--;) r[t].settings.minWidth = i + e
}
n._super(), n.on("show", t), t()
}
}),
Gn = Jn.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 t = this,
e = t._layout,
n = t.classPrefix;
return t.preRender(), e.preRender(t), '"
}
}),
Kn = 0,
Zn = function(t) {
if (null === t || t === undefined) throw new Error("Node cannot be null or undefined");
return {
dom: lt(t)
}
},
Qn = {
fromHtml: function(t, e) {
var n = (e || document).createElement("div");
if (n.innerHTML = t, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", t), "HTML must have a single root node";
return Zn(n.childNodes[0])
},
fromTag: function(t, e) {
var n = (e || document).createElement(t);
return Zn(n)
},
fromText: function(t, e) {
var n = (e || document).createTextNode(t);
return Zn(n)
},
fromDom: Zn,
fromPoint: function(t, e, n) {
var i = t.dom();
return pt.from(i.elementFromPoint(e, n)).map(Zn)
}
},
ti = function(n) {
var i, r = !1;
return function() {
for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
return r || (r = !0, i = n.apply(null, t)), i
}
},
ei = {
ATTRIBUTE: Node.ATTRIBUTE_NODE,
CDATA_SECTION: Node.CDATA_SECTION_NODE,
COMMENT: Node.COMMENT_NODE,
DOCUMENT: Node.DOCUMENT_NODE,
DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,
DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,
ELEMENT: Node.ELEMENT_NODE,
TEXT: Node.TEXT_NODE,
PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,
ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,
ENTITY: Node.ENTITY_NODE,
NOTATION: Node.NOTATION_NODE
},
ni = function(t) {
return t.dom().nodeType
},
ii = function(e) {
return function(t) {
return ni(t) === e
}
},
ri = (ii(ei.ELEMENT), ii(ei.TEXT), ii(ei.DOCUMENT), ti(function() {
return ri(Qn.fromDom(document))
}), function(t) {
var e = t.dom().body;
if (null === e || e === undefined) throw "Body is not available yet";
return Qn.fromDom(e)
}),
oi = function(t, e) {
var n = function(t, e) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
if (i.test(e)) return i
}
return undefined
}(t, e);
if (!n) return {
major: 0,
minor: 0
};
var i = function(t) {
return Number(e.replace(n, "$" + t))
};
return ai(i(1), i(2))
},
si = function() {
return ai(0, 0)
},
ai = function(t, e) {
return {
major: t,
minor: e
}
},
li = {
nu: ai,
detect: function(t, e) {
var n = String(e).toLowerCase();
return 0 === t.length ? si() : oi(t, n)
},
unknown: si
},
ui = "Firefox",
ci = function(t, e) {
return function() {
return e === t
}
},
di = function(t) {
var e = t.current;
return {
current: e,
version: t.version,
isEdge: ci("Edge", e),
isChrome: ci("Chrome", e),
isIE: ci("IE", e),
isOpera: ci("Opera", e),
isFirefox: ci(ui, e),
isSafari: ci("Safari", e)
}
},
fi = {
unknown: function() {
return di({
current: undefined,
version: li.unknown()
})
},
nu: di,
edge: lt("Edge"),
chrome: lt("Chrome"),
ie: lt("IE"),
opera: lt("Opera"),
firefox: lt(ui),
safari: lt("Safari")
},
hi = "Windows",
mi = "Android",
gi = "Solaris",
pi = "FreeBSD",
vi = function(t, e) {
return function() {
return e === t
}
},
bi = function(t) {
var e = t.current;
return {
current: e,
version: t.version,
isWindows: vi(hi, e),
isiOS: vi("iOS", e),
isAndroid: vi(mi, e),
isOSX: vi("OSX", e),
isLinux: vi("Linux", e),
isSolaris: vi(gi, e),
isFreeBSD: vi(pi, e)
}
},
yi = {
unknown: function() {
return bi({
current: undefined,
version: li.unknown()
})
},
nu: bi,
windows: lt(hi),
ios: lt("iOS"),
android: lt(mi),
linux: lt("Linux"),
osx: lt("OSX"),
solaris: lt(gi),
freebsd: lt(pi)
},
xi = function(t, e) {
var n = String(e).toLowerCase();
return Et(t, function(t) {
return t.search(n)
})
},
wi = function(t, n) {
return xi(t, n).map(function(t) {
var e = li.detect(t.versionRegexes, n);
return {
current: t.name,
version: e
}
})
},
_i = function(t, n) {
return xi(t, n).map(function(t) {
var e = li.detect(t.versionRegexes, n);
return {
current: t.name,
version: e
}
})
},
Ci = function(t, e) {
return -1 !== t.indexOf(e)
},
Ri = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
Ei = function(e) {
return function(t) {
return Ci(t, e)
}
},
ki = [{
name: "Edge",
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function(t) {
return Ci(t, "edge/") && Ci(t, "chrome") && Ci(t, "safari") && Ci(t, "applewebkit")
}
}, {
name: "Chrome",
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Ri],
search: function(t) {
return Ci(t, "chrome") && !Ci(t, "chromeframe")
}
}, {
name: "IE",
versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
search: function(t) {
return Ci(t, "msie") || Ci(t, "trident")
}
}, {
name: "Opera",
versionRegexes: [Ri, /.*?opera\/([0-9]+)\.([0-9]+).*/],
search: Ei("opera")
}, {
name: "Firefox",
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: Ei("firefox")
}, {
name: "Safari",
versionRegexes: [Ri, /.*?cpu os ([0-9]+)_([0-9]+).*/],
search: function(t) {
return (Ci(t, "safari") || Ci(t, "mobile/")) && Ci(t, "applewebkit")
}
}],
Ti = [{
name: "Windows",
search: Ei("win"),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "iOS",
search: function(t) {
return Ci(t, "iphone") || Ci(t, "ipad")
},
versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
}, {
name: "Android",
search: Ei("android"),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "OSX",
search: Ei("os x"),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
}, {
name: "Linux",
search: Ei("linux"),
versionRegexes: []
}, {
name: "Solaris",
search: Ei("sunos"),
versionRegexes: []
}, {
name: "FreeBSD",
search: Ei("freebsd"),
versionRegexes: []
}],
Hi = {
browsers: lt(ki),
oses: lt(Ti)
},
Mi = function(t) {
var e, n, i, r, o, s, a, l, u, c, d, f = Hi.browsers(),
h = Hi.oses(),
m = wi(f, t).fold(fi.unknown, fi.nu),
g = _i(h, t).fold(yi.unknown, yi.nu);
return {
browser: m,
os: g,
deviceType: (n = m, i = t, r = (e = g).isiOS() && !0 === /ipad/i.test(i), o = e.isiOS() && !r, s = e.isAndroid() && 3 === e.version.major, a = e.isAndroid() && 4 === e.version.major, l = r || s || a && !0 === /mobile/i.test(i), u = e.isiOS() || e.isAndroid(), c = u && !l, d = n.isSafari() && e.isiOS() && !1 === /safari/i.test(i), {
isiPad: lt(r),
isiPhone: lt(o),
isTablet: lt(l),
isPhone: lt(c),
isTouch: lt(u),
isAndroid: e.isAndroid,
isiOS: e.isiOS,
isWebView: lt(d)
})
}
},
Si = ti(function() {
var t = navigator.userAgent;
return Mi(t)
}),
Ni = ei.ELEMENT,
Oi = ei.DOCUMENT,
Di = function(t) {
return t.nodeType !== Ni && t.nodeType !== Oi || 0 === t.childElementCount
},
Pi = {
all: function(t, e) {
var n = e === undefined ? document : e.dom();
return Di(n) ? [] : _t(n.querySelectorAll(t), Qn.fromDom)
},
is: function(t, e) {
var n = t.dom();
if (n.nodeType !== Ni) return !1;
if (n.matches !== undefined) return n.matches(e);
if (n.msMatchesSelector !== undefined) return n.msMatchesSelector(e);
if (n.webkitMatchesSelector !== undefined) return n.webkitMatchesSelector(e);
if (n.mozMatchesSelector !== undefined) return n.mozMatchesSelector(e);
throw new Error("Browser lacks native selectors")
},
one: function(t, e) {
var n = e === undefined ? document : e.dom();
return Di(n) ? pt.none() : pt.from(n.querySelector(t)).map(Qn.fromDom)
}
},
Wi = (Si().browser.isIE(), function() {
for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]
}("element", "offset"), function(t, e) {
return Pi.all(e, t)
}),
Ai = C.trim,
Bi = function(e) {
return function(t) {
if (t && 1 === t.nodeType) {
if (t.contentEditable === e) return !0;
if (t.getAttribute("data-mce-contenteditable") === e) return !0
}
return !1
}
},
Li = Bi("true"),
Ii = Bi("false"),
zi = function(t, e, n, i, r) {
return {
type: t,
title: e,
url: n,
level: i,
attach: r
}
},
Fi = function(t) {
return t.innerText || t.textContent
},
Ui = function(t) {
return t.id ? t.id : (e = "h", n = (new Date).getTime(), e + "_" + Math.floor(1e9 * Math.random()) + ++Kn + String(n));
var e, n
},
Vi = function(t) {
return (e = t) && "A" === e.nodeName && (e.id || e.name) && Yi(t);
var e
},
qi = function(t) {
return t && /^(H[1-6])$/.test(t.nodeName)
},
Yi = function(t) {
return function(t) {
for (; t = t.parentNode;) {
var e = t.contentEditable;
if (e && "inherit" !== e) return Li(t)
}
return !1
}(t) && !Ii(t)
},
$i = function(t) {
return qi(t) && Yi(t)
},
Xi = function(t) {
var e, n = Ui(t);
return zi("header", Fi(t), "#" + n, qi(e = t) ? parseInt(e.nodeName.substr(1), 10) : 0, function() {
t.id = n
})
},
ji = function(t) {
var e = t.id || t.name,
n = Fi(t);
return zi("anchor", n || "#" + e, "#" + e, 0, at)
},
Ji = function(t) {
var e, n;
return e = "h1,h2,h3,h4,h5,h6,a:not([href])", n = t, _t(Wi(Qn.fromDom(n), e), function(t) {
return t.dom()
})
},
Gi = function(t) {
return 0 < Ai(t.title).length
},
Ki = function(t) {
var e, n = Ji(t);
return Rt((e = n, _t(Rt(e, $i), Xi)).concat(_t(Rt(n, Vi), ji)), Gi)
},
Zi = {},
Qi = function(t) {
return {
title: t.title,
value: {
title: {
raw: t.title
},
url: t.url,
attach: t.attach
}
}
},
tr = function(t, e) {
return {
title: t,
value: {
title: t,
url: e,
attach: at
}
}
},
er = function(t, e, n) {
var i = e in t ? t[e] : n;
return !1 === i ? null : i
},
nr = function(t, i, r, e) {
var n, o, s, a, l, u, c = {
title: "-"
},
d = function(t) {
var e = t.hasOwnProperty(r) ? t[r] : [],
n = Rt(e, function(t) {
return e = t, !wt(i, function(t) {
return t.url === e
});
var e
});
return C.map(n, function(t) {
return {
title: t,
value: {
title: t,
url: t,
attach: at
}
}
})
},
f = function(e) {
var t, n = Rt(i, function(t) {
return t.type === e
});
return t = n, C.map(t, Qi)
};
return !1 === e.typeahead_urls ? [] : "file" === r ? (n = [rr(t, d(Zi)), rr(t, f("header")), rr(t, (a = f("anchor"), l = er(e, "anchor_top", "#top"), u = er(e, "anchor_bottom", "#bottom"), null !== l && a.unshift(tr("", l)), null !== u && a.push(tr("", u)), a))], o = function(t, e) {
return 0 === t.length || 0 === e.length ? t.concat(e) : t.concat(c, e)
}, s = [], Ct(n, function(t) {
s = o(s, t)
}), s) : rr(t, d(Zi))
},
ir = function(t, e) {
var n, i, r, o = Zi[e];
/^https?/.test(t) && (o ? (n = o, i = t, r = xt(n, i), -1 === r ? pt.none() : pt.some(r)).isNone() && (Zi[e] = o.slice(0, 5).concat(t)) : Zi[e] = [t])
},
rr = function(t, e) {
var n = t.toLowerCase(),
i = C.grep(e, function(t) {
return -1 !== t.title.toLowerCase().indexOf(n)
});
return 1 === i.length && i[0].title === t ? [] : i
},
or = function(o, t, n) {
var i = t.filepicker_validator_handler;
i && o.state.on("change:value", function(t) {
var e;
0 !== (e = t.value).length ? i({
url: e,
type: n
}, function(t) {
var e, n, i, r = (n = (e = t).status, i = e.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")
})
},
sr = Ln.extend({
Statics: {
clearHistory: function() {
Zi = {}
}
},
init: function(t) {
var e, n, i, r, o, s, a, l, u = this,
c = window.tinymce ? window.tinymce.activeEditor : S.activeEditor,
d = c.settings,
f = t.filetype;
t.spellcheck = !1, (i = d.file_picker_types || d.file_browser_callback_types) && (i = C.makeMap(i, /[, ]/)), i && !i[f] || (!(n = d.file_picker_callback) || i && !i[f] ? !(n = d.file_browser_callback) || i && !i[f] || (e = function() {
n(u.getEl("inp").id, u.value(), f, window)
}) : e = function() {
var t = u.fire("beforecall").meta;
t = C.extend({
filetype: f
}, t), n.call(c, function(t, e) {
u.value(t).fire("change", {
meta: e
})
}, u.value(), t)
}), e && (t.icon = "browse", t.onaction = e), u._super(t), u.classes.add("filepicker"), r = u, o = d, s = c.getBody(), a = f, l = function(t) {
var e = Ki(s),
n = nr(t, e, a, o);
r.showAutoComplete(n, t)
}, r.on("autocomplete", function() {
l(r.value())
}), r.on("selectitem", function(t) {
var e = t.value;
r.value(e.url);
var n, i = (n = e.title).raw ? n.raw : n;
"image" === a ? r.fire("change", {
meta: {
alt: i,
attach: e.attach
}
}) : r.fire("change", {
meta: {
text: i,
attach: e.attach
}
}), r.focus()
}), r.on("click", function(t) {
0 === r.value().length && "INPUT" === t.target.nodeName && l("")
}), r.on("PostRender", function() {
r.getRoot().on("submit", function(t) {
t.isDefaultPrevented() || ir(r.value(), a)
})
}), or(u, d, f)
}
}),
ar = On.extend({
recalc: function(t) {
var e = t.layoutRect(),
n = t.paddingBox;
t.items().filter(":visible").each(function(t) {
t.layoutRect({
x: n.left,
y: n.top,
w: e.innerW - n.right - n.left,
h: e.innerH - n.top - n.bottom
}), t.recalc && t.recalc()
})
}
}),
lr = On.extend({
recalc: function(t) {
var e, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, C, R, E, k, T, H, M, S, N, O, D, P, W, A, B, L = [],
I = Math.max,
z = Math.min;
for (i = t.items().filter(":visible"), r = t.layoutRect(), o = t.paddingBox, s = t.settings, f = t.isRtl() ? s.direction || "row-reversed" : s.direction, a = s.align, l = t.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 ? (R = "y", _ = "h", C = "minH", E = "maxH", T = "innerH", k = "top", H = "deltaH", M = "contentH", P = "left", O = "w", S = "x", N = "innerW", D = "minW", W = "right", A = "deltaW", B = "contentW") : (R = "x", _ = "w", C = "minW", E = "maxW", T = "innerW", k = "left", H = "deltaW", M = "contentW", P = "top", O = "h", S = "y", N = "innerH", D = "minH", W = "bottom", A = "deltaH", B = "contentH"), d = r[T] - o[k] - o[k], w = c = 0, e = 0, n = i.length; e < n; e++) m = (h = i[e]).layoutRect(), d -= e < n - 1 ? u : 0, 0 < (g = h.settings.flex) && (c += g, m[E] && L.push(h), m.flex = g), d -= m[C], w < (p = o[P] + m[D] + o[W]) && (w = p);
if ((y = {})[C] = d < 0 ? r[C] - d + r[H] : r[T] - d + r[H], y[D] = w + r[A], y[M] = r[T] - d, y[B] = w, y.minW = z(y.minW, r.maxW), y.minH = z(y.minH, r.maxH), y.minW = I(y.minW, r.startMinWidth), y.minH = I(y.minH, r.startMinHeight), !r.autoResize || y.minW === r.minW && y.minH === r.minH) {
for (b = d / c, e = 0, n = L.length; e < n; e++)(v = (m = (h = L[e]).layoutRect())[E]) < (p = m[C] + m.flex * b) ? (d -= m[E] - m[C], c -= m.flex, m.flex = 0, m.maxFlexSize = v) : m.maxFlexSize = 0;
for (b = d / c, x = o[k], y = {}, 0 === c && ("end" === l ? x = d + o[k] : "center" === l ? (x = Math.round(r[T] / 2 - (r[T] - d) / 2) + o[k]) < 0 && (x = o[k]) : "justify" === l && (x = o[k], u = Math.floor(d / (i.length - 1)))), y[S] = o[P], e = 0, n = i.length; e < n; e++) p = (m = (h = i[e]).layoutRect()).maxFlexSize || m[C], "center" === a ? y[S] = Math.round(r[N] / 2 - m[O] / 2) : "stretch" === a ? (y[O] = I(m[D] || 0, r[N] - o[P] - o[W]), y[S] = o[P]) : "end" === a && (y[S] = r[N] - m[O] - o.top), 0 < m.flex && (p += m.flex * b), y[_] = p, y[R] = x, h.layoutRect(y), h.recalc && h.recalc(), x += p + u
} else if (y.w = y.minW, y.h = y.minH, t.layoutRect(y), this.recalc(t), null === t._lastRect) {
var F = t.parent();
F && (F._lastRect = null, F.recalc())
}
}
}),
ur = Nn.extend({
Defaults: {
containerClass: "flow-layout",
controlClass: "flow-layout-item",
endClass: "break"
},
recalc: function(t) {
t.items().filter(":visible").each(function(t) {
t.recalc && t.recalc()
})
},
isNative: function() {
return !0
}
}),
cr = function(t, e) {
return Pi.one(e, t)
},
dr = function(t, e) {
return function() {
t.execCommand("mceToggleFormat", !1, e)
}
},
fr = function(t, e, n) {
var i = function(t) {
n(t, e)
};
t.formatter ? t.formatter.formatChanged(e, i) : t.on("init", function() {
t.formatter.formatChanged(e, i)
})
},
hr = function(t, n) {
return function(e) {
fr(t, n, function(t) {
e.control.active(t)
})
}
},
mr = function(i) {
var e = ["alignleft", "aligncenter", "alignright", "alignjustify"],
r = "alignleft",
t = [{
text: "Left",
icon: "alignleft",
onclick: dr(i, "alignleft")
}, {
text: "Center",
icon: "aligncenter",
onclick: dr(i, "aligncenter")
}, {
text: "Right",
icon: "alignright",
onclick: dr(i, "alignright")
}, {
text: "Justify",
icon: "alignjustify",
onclick: dr(i, "alignjustify")
}];
i.addMenuItem("align", {
text: "Align",
menu: t
}), i.addButton("align", {
type: "menubutton",
icon: r,
menu: t,
onShowMenu: function(t) {
var n = t.control.menu;
C.each(e, function(e, t) {
n.items().eq(t).each(function(t) {
return t.active(i.formatter.match(e))
})
})
},
onPostRender: function(t) {
var n = t.control;
C.each(e, function(e, t) {
fr(i, e, function(t) {
n.icon(r), t && n.icon(e)
})
})
}
}), C.each({
alignleft: ["Align left", "JustifyLeft"],
aligncenter: ["Align center", "JustifyCenter"],
alignright: ["Align right", "JustifyRight"],
alignjustify: ["Justify", "JustifyFull"],
alignnone: ["No alignment", "JustifyNone"]
}, function(t, e) {
i.addButton(e, {
active: !1,
tooltip: t[0],
cmd: t[1],
onPostRender: hr(i, e)
})
})
},
gr = function(t) {
return t ? t.split(",")[0] : ""
},
pr = function(l, u) {
return function() {
var a = this;
a.state.set("value", null), l.on("init nodeChange", function(t) {
var e, n, i, r, o = l.queryCommandValue("FontName"),
s = (e = u, r = (n = o) ? n.toLowerCase() : "", C.each(e, function(t) {
t.value.toLowerCase() === r && (i = t.value)
}), C.each(e, function(t) {
i || gr(t.value).toLowerCase() !== gr(r).toLowerCase() || (i = t.value)
}), i);
a.value(s || null), !s && o && a.text(gr(o))
})
}
},
vr = function(n) {
n.addButton("fontselect", function() {
var t, e = (t = function(t) {
for (var e = (t = t.replace(/;$/, "").split(";")).length; e--;) t[e] = t[e].split("=");
return t
}(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"), C.map(t, function(t) {
return {
text: {
raw: t[0]
},
value: t[1],
textStyle: -1 === t[1].indexOf("dings") ? "font-family:" + t[1] : ""
}
}));
return {
type: "listbox",
text: "Font Family",
tooltip: "Font Family",
values: e,
fixedWidth: !0,
onPostRender: pr(n, e),
onselect: function(t) {
t.control.settings.value && n.execCommand("FontName", !1, t.control.settings.value)
}
}
})
},
br = function(t) {
vr(t)
},
yr = function(t, e) {
return /[0-9.]+px$/.test(t) ? (n = 72 * parseInt(t, 10) / 96, i = e || 0, r = Math.pow(10, i), Math.round(n * r) / r + "pt") : t;
var n, i, r
},
xr = function(t, e, n) {
var i;
return C.each(t, function(t) {
t.value === n ? i = n : t.value === e && (i = e)
}), i
},
wr = function(n) {
n.addButton("fontsizeselect", function() {
var t, s, a, e = (t = n.settings.fontsize_formats || "8pt 10pt 12pt 14pt 18pt 24pt 36pt", C.map(t.split(" "), function(t) {
var e = t,
n = t,
i = t.split("=");
return 1 < i.length && (e = i[0], n = i[1]), {
text: e,
value: n
}
}));
return {
type: "listbox",
text: "Font Sizes",
tooltip: "Font Sizes",
values: e,
fixedWidth: !0,
onPostRender: (s = n, a = e, function() {
var o = this;
s.on("init nodeChange", function(t) {
var e, n, i, r;
if (e = s.queryCommandValue("FontSize")) for (i = 3; !r && 0 <= i; i--) n = yr(e, i), r = xr(a, n, e);
o.value(r || null), r || o.text(n)
})
}),
onclick: function(t) {
t.control.settings.value && n.execCommand("FontSize", !1, t.control.settings.value)
}
}
})
},
_r = function(t) {
wr(t)
},
Cr = function(n, t) {
var i = t.length;
return C.each(t, function(t) {
t.menu && (t.hidden = 0 === Cr(n, t.menu));
var e = t.format;
e && (t.hidden = !n.formatter.canApply(e)), t.hidden && i--
}), i
},
Rr = function(n, t) {
var i = t.items().length;
return t.items().each(function(t) {
t.menu && t.visible(0 < Rr(n, t.menu)), !t.menu && t.settings.menu && t.visible(0 < Cr(n, t.settings.menu));
var e = t.settings.format;
e && t.visible(n.formatter.canApply(e)), t.visible() || i--
}), i
},
Er = function(t) {
var i, r, o, e, s, n, a, l, u = (r = 0, o = [], e = [{
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: "左对齐",
icon: "alignleft",
format: "alignleft"
}, {
title: "居中对齐",
icon: "aligncenter",
format: "aligncenter"
}, {
title: "右对齐",
icon: "alignright",
format: "alignright"
}, {
title: "两侧对齐",
icon: "alignjustify",
format: "alignjustify"
}]
}], s = function(t) {
var i = [];
if (t) return C.each(t, function(t) {
var e = {
text: t.title,
icon: t.icon
};
if (t.items) e.menu = s(t.items);
else {
var n = t.format || "custom" + r++;
t.format || (t.name = n, o.push(t)), e.format = n, e.cmd = t.cmd
}
i.push(e)
}), i
}, (i = t).on("init", function() {
C.each(o, function(t) {
i.formatter.register(t.name, t)
})
}), {
type: "menu",
items: i.settings.style_formats_merge ? i.settings.style_formats ? s(e.concat(i.settings.style_formats)) : s(e) : s(i.settings.style_formats || e),
onPostRender: function(t) {
i.fire("renderFormatsMenu", {
control: t.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 t, e;
(t = n.settings.format) && (n.disabled(!i.formatter.canApply(t)), n.active(i.formatter.match(t))), (e = n.settings.cmd) && n.active(i.queryCommandState(e))
})
},
onclick: function() {
this.settings.format && dr(i, this.settings.format)(), this.settings.cmd && i.execCommand(this.settings.cmd)
}
}
});
n = u, t.addMenuItem("formats", {
text: "Formats",
menu: n
}), l = u, (a = t).addButton("styleselect", {
type: "menubutton",
text: "Formats",
menu: l,
onShowMenu: function() {
a.settings.style_formats_autohide && Rr(a, this.menu)
}
})
},
kr = function(n, t) {
return function() {
var r, o, s, e = [];
return C.each(t, function(t) {
e.push({
text: t[0],
value: t[1],
textStyle: function() {
return n.formatter.getCssText(t[1])
}
})
}), {
type: "listbox",
text: t[0][0],
values: e,
fixedWidth: !0,
onselect: function(t) {
if (t.control) {
var e = t.control.value();
dr(n, e)()
}
},
onPostRender: (r = n, o = e, function() {
var e = this;
r.on("nodeChange", function(t) {
var n = r.formatter,
i = null;
C.each(t.parents, function(e) {
if (C.each(o, function(t) {
if (s ? n.matchNode(e, s, {
value: t.value
}) && (i = t.value) : n.matchNode(e, t.value) && (i = t.value), i) return !1
}), i) return !1
}), e.value(i)
})
})
}
}
},
Tr = function(t) {
var e, n, i = function(t) {
for (var e = (t = t.replace(/;$/, "").split(";")).length; e--;) t[e] = t[e].split("=");
return t
}(t.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");
t.addMenuItem("blockformats", {
text: "Blocks",
menu: (e = t, n = i, C.map(n, function(t) {
return {
text: t[0],
onclick: dr(e, t[1]),
textStyle: function() {
return e.formatter.getCssText(t[1])
}
}
}))
}), t.addButton("formatselect", kr(t, i))
},
Hr = function(e, t) {
var n, i;
if ("string" == typeof t) i = t.split(" ");
else if (C.isArray(t)) return function(t) {
for (var e = [], n = 0, i = t.length; n < i; ++n) {
if (!Array.prototype.isPrototypeOf(t[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + t);
Ht.apply(e, t[n])
}
return e
}(C.map(t, function(t) {
return Hr(e, t)
}));
return n = C.grep(i, function(t) {
return "|" === t || t in e.menuItems
}), C.map(n, function(t) {
return "|" === t ? {
text: "-"
} : e.menuItems[t]
})
},
Mr = function(t) {
return t && "-" === t.text
},
Sr = function(t) {
var e = Rt(t, function(t, e, n) {
return !Mr(t) || !Mr(n[e - 1])
});
return Rt(e, function(t, e, n) {
return !Mr(t) || 0 < e && e < n.length - 1
})
},
Nr = function(t) {
var e, n, i, r, o = t.settings.insert_button_items;
return Sr(o ? Hr(t, o) : (e = t, n = "insert", i = [{
text: "-"
}], r = C.grep(e.menuItems, function(t) {
return t.context === n
}), C.each(r, function(t) {
"before" === t.separator && i.push({
text: "|"
}), t.prependToContext ? i.unshift(t) : i.push(t), "after" === t.separator && i.push({
text: "|"
})
}), i))
},
Or = function(t) {
var e;
(e = t).addButton("insert", {
type: "menubutton",
icon: "insert",
menu: [],
oncreatemenu: function() {
this.menu.add(Nr(e)), this.menu.renderNew()
}
})
},
Dr = function(t) {
var n, i, r;
n = t, C.each({
bold: "Bold",
italic: "Italic",
underline: "Underline",
strikethrough: "Strikethrough",
subscript: "Subscript",
superscript: "Superscript"
}, function(t, e) {
n.addButton(e, {
active: !1,
tooltip: t,
onPostRender: hr(n, e),
onclick: dr(n, e)
})
}), i = t, C.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: ["新建文件", "mceNewDocument"],
removeformat: ["Clear formatting", "RemoveFormat"],
remove: ["Remove", "Delete"]
}, function(t, e) {
i.addButton(e, {
tooltip: t[0],
cmd: t[1]
})
}), r = t, C.each({
blockquote: ["Blockquote", "mceBlockQuote"],
subscript: ["Subscript", "Subscript"],
superscript: ["Superscript", "Superscript"]
}, function(t, e) {
r.addButton(e, {
active: !1,
tooltip: t[0],
cmd: t[1],
onPostRender: hr(r, e)
})
})
},
Pr = function(t) {
var n;
Dr(t), n = t, C.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: ["新建文件", "mceNewDocument"],
cut: ["Cut", "Cut", "Meta+X"],
copy: ["Copy", "Copy", "Meta+C"],
paste: ["Paste", "Paste", "Meta+V"],
selectall: ["Select all", "SelectAll", "Meta+A"]
}, function(t, e) {
n.addMenuItem(e, {
text: t[0],
icon: e,
shortcut: t[2],
cmd: t[1]
})
}), n.addMenuItem("codeformat", {
text: "Code",
icon: "code",
onclick: dr(n, "code")
})
},
Wr = function(n, i) {
return function() {
var t = this,
e = function() {
var t = "redo" === i ? "hasRedo" : "hasUndo";
return !!n.undoManager && n.undoManager[t]()
};
t.disabled(!e()), n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode", function() {
t.disabled(n.readonly || !e())
})
}
},
Ar = function(t) {
var e, n;
(e = t).addMenuItem("undo", {
text: "Undo",
icon: "undo",
shortcut: "Meta+Z",
onPostRender: Wr(e, "undo"),
cmd: "undo"
}), e.addMenuItem("redo", {
text: "Redo",
icon: "redo",
shortcut: "Meta+Y",
onPostRender: Wr(e, "redo"),
cmd: "redo"
}), (n = t).addButton("undo", {
tooltip: "Undo",
onPostRender: Wr(n, "undo"),
cmd: "undo"
}), n.addButton("redo", {
tooltip: "Redo",
onPostRender: Wr(n, "redo"),
cmd: "redo"
})
},
Br = function(t) {
var e, n;
(e = t).addMenuItem("visualaid", {
text: "Visual aids",
selectable: !0,
onPostRender: (n = e, function() {
var e = this;
n.on("VisualAid", function(t) {
e.active(t.hasVisual)
}), e.active(n.hasVisual)
}),
cmd: "mceToggleVisualAid"
})
},
Lr = {
setup: function(t) {
var e;
t.rtl && (ce.rtl = !0), t.on("mousedown", function() {
Ve.hideAll()
}), (e = t).settings.ui_container && (h.container = cr(Qn.fromDom(document.body), e.settings.ui_container).fold(lt(null), function(t) {
return t.dom()
})), be.tooltips = !h.iOS, ce.translate = function(t) {
return S.translate(t)
}, Tr(t), mr(t), Pr(t), Ar(t), _r(t), br(t), Er(t), Br(t), Or(t)
}
},
Ir = On.extend({
recalc: function(t) {
var e, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, C, R, E, k, T, H, M = [],
S = [];
e = t.settings, r = t.items().filter(":visible"), o = t.layoutRect(), i = e.columns || Math.ceil(Math.sqrt(r.length)), n = Math.ceil(r.length / i), b = e.spacingH || e.spacing || 0, y = e.spacingV || e.spacing || 0, x = e.alignH || e.align, w = e.alignV || e.align, p = t.paddingBox, H = "reverseRows" in e ? e.reverseRows : t.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++) S.push(0);
for (f = 0; f < n; f++) for (d = 0; d < i && (c = r[f * i + d]); d++) R = (u = c.layoutRect()).minW, E = u.minH, M[d] = R > M[d] ? R : M[d], S[f] = E > S[f] ? E : S[f];
for (k = o.innerW - p.left - p.right, d = _ = 0; d < i; d++) _ += M[d] + (0 < d ? b : 0), k -= (0 < d ? b : 0) + M[d];
for (T = o.innerH - p.top - p.bottom, f = C = 0; f < n; f++) C += S[f] + (0 < f ? y : 0), T -= (0 < f ? y : 0) + S[f];
if (_ += p.left + p.right, C += p.top + p.bottom, (l = {}).minW = _ + (o.w - o.innerW), l.minH = C + (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 N;
o.autoResize && ((l = t.layoutRect(l)).contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH), N = "start" === e.packV ? 0 : 0 < T ? Math.floor(T / n) : 0;
var O = 0,
D = e.flexWidths;
if (D) for (d = 0; d < D.length; d++) O += D[d];
else O = i;
var P = k / O;
for (d = 0; d < i; d++) M[d] += D ? D[d] * P : P;
for (m = p.top, f = 0; f < n; f++) {
for (h = p.left, a = S[f] + N, d = 0; d < i && (c = r[H ? 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, t.layoutRect(l), this.recalc(t), null === t._lastRect) {
var W = t.parent();
W && (W._lastRect = null, W.recalc())
}
}
}),
zr = be.extend({
renderHtml: function() {
var t = this;
return t.classes.add("iframe"), t.canFocus = !1, ''
},
src: function(t) {
this.getEl().src = t
},
html: function(t, e) {
var n = this,
i = this.getEl().contentWindow.document.body;
return i ? (i.innerHTML = t, e && e()) : c.setTimeout(function() {
n.html(t)
}), this
}
}),
Fr = be.extend({
init: function(t) {
this._super(t), this.classes.add("widget").add("infobox"), this.canFocus = !1
},
severity: function(t) {
this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(t)
},
help: function(t) {
this.state.set("help", t)
},
renderHtml: function() {
var t = this,
e = t.classPrefix;
return '
' + t.encode(t.state.get("text")) + '
'
},
bindStates: function() {
var e = this;
return e.state.on("change:text", function(t) {
e.getEl("body").firstChild.data = e.encode(t.value), e.state.get("rendered") && e.updateLayoutRect()
}), e.state.on("change:help", function(t) {
e.classes.toggle("has-help", t.value), e.state.get("rendered") && e.updateLayoutRect()
}), e._super()
}
}),
Ur = be.extend({
init: function(t) {
var e = this;
e._super(t), e.classes.add("widget").add("label"), e.canFocus = !1, t.multiline && e.classes.add("autoscroll"), t.strong && e.classes.add("strong")
},
initLayoutRect: function() {
var t = this,
e = t._super();
return t.settings.multiline && (St.getSize(t.getEl()).width > e.maxW && (e.minW = e.maxW, t.classes.add("multiline")), t.getEl().style.width = e.minW + "px", e.startMinH = e.h = e.minH = Math.min(e.maxH, St.getSize(t.getEl()).height)), e
},
repaint: function() {
return this.settings.multiline || (this.getEl().style.lineHeight = this.layoutRect().h + "px"), this._super()
},
severity: function(t) {
this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(t)
},
renderHtml: function() {
var t, e, n = this,
i = n.settings.forId,
r = n.settings.html ? n.settings.html : n.encode(n.state.get("text"));
return !i && (e = n.settings.forName) && (t = n.getRoot().find("#" + e)[0]) && (i = t._id), i ? '" : '' + r + ""
},
bindStates: function() {
var e = this;
return e.state.on("change:text", function(t) {
e.innerHtml(e.encode(t.value)), e.state.get("rendered") && e.updateLayoutRect()
}), e._super()
}
}),
Vr = De.extend({
Defaults: {
role: "toolbar",
layout: "flow"
},
init: function(t) {
this._super(t), this.classes.add("toolbar")
},
postRender: function() {
return this.items().each(function(t) {
t.classes.add("toolbar-item")
}), this._super()
}
}),
qr = Vr.extend({
Defaults: {
role: "menubar",
containerCls: "menubar",
ariaRoot: !0,
defaults: {
type: "menubutton"
}
}
}),
Yr = Dn.extend({
init: function(t) {
var e = this;
e._renderOpen = !0, e._super(t), t = e.settings, e.classes.add("menubtn"), t.fixedWidth && e.classes.add("fixed-width"), e.aria("haspopup", !0), e.state.set("menu", t.menu || e.render())
},
showMenu: function(t) {
var e, n = this;
if (n.menu && n.menu.visible() && !1 !== t) return n.hideMenu();
n.menu || (e = n.state.get("menu") || [], n.classes.add("opened"), e.length ? e = {
type: "menu",
animate: !0,
items: e
} : (e.type = e.type || "menu", e.animate = !0), e.renderTo ? n.menu = e.parent(n).show().renderTo() : n.menu = Ee.create(e).parent(n).renderTo(), n.fire("createmenu"), n.menu.reflow(), n.menu.on("cancel", function(t) {
t.control.parent() === n.menu && (t.stopPropagation(), n.focus(), n.hideMenu())
}), n.menu.on("select", function() {
n.focus()
}), n.menu.on("show hide", function(t) {
t.control === n.menu && (n.activeMenu("show" === t.type), n.classes.toggle("opened", "show" === t.type)), n.aria("expanded", "show" === t.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(t) {
t.hideMenu && t.hideMenu()
}), this.menu.hide())
},
activeMenu: function(t) {
this.classes.toggle("active", t)
},
renderHtml: function() {
var t, e = this,
n = e._id,
i = e.classPrefix,
r = e.settings.icon,
o = e.state.get("text"),
s = "";
return (t = e.settings.image) ? (r = "none", "string" != typeof t && (t = window.getSelection ? t[0] : t[1]), t = " style=\"background-image: url('" + t + "')\"") : t = "", o && (e.classes.add("btn-has-text"), s = '' + e.encode(o) + ""), r = e.settings.icon ? i + "ico " + i + "i-" + r : "", e.aria("role", e.parent() instanceof qr ? "menuitem" : "button"), ''
},
postRender: function() {
var r = this;
return r.on("click", function(t) {
t.control === r &&
function(t, e) {
for (; t;) {
if (e === t) return !0;
t = t.parentNode
}
return !1
}(t.target, r.getEl()) && (r.focus(), r.showMenu(!t.aria), t.aria && r.menu.items().filter(":visible")[0].focus())
}), r.on("mouseenter", function(t) {
var e, n = t.control,
i = r.parent();
n && i && n instanceof Yr && n.parent() === i && (i.items().filter("MenuButton").each(function(t) {
t.hideMenu && t !== n && (t.menu && t.menu.visible() && (e = !0), t.hideMenu())
}), e && (n.focus(), n.showMenu()))
}), r._super()
},
bindStates: function() {
var t = this;
return t.state.on("change:menu", function() {
t.menu && t.menu.remove(), t.menu = null
}), t._super()
},
remove: function() {
this._super(), this.menu && this.menu.remove()
}
});
function $r(i, r) {
var o, s, a = this,
l = ce.classPrefix;
a.show = function(t, e) {
function n() {
o && (Nt(i).append(''), e && e())
}
return a.hide(), o = !0, t ? s = c.setTimeout(n, t) : n(), a
}, a.hide = function() {
var t = i.lastChild;
return c.clearTimeout(s), t && -1 !== t.className.indexOf("throbber") && t.parentNode.removeChild(t), o = !1, a
}
}
var Xr = Ve.extend({
Defaults: {
defaultType: "menuitem",
border: 1,
layout: "stack",
role: "application",
bodyRole: "menu",
ariaRoot: !0
},
init: function(t) {
if (t.autohide = !0, t.constrainToViewport = !0, "function" == typeof t.items && (t.itemsFactory = t.items, t.items = []), t.itemDefaults) for (var e = t.items, n = e.length; n--;) e[n] = C.extend({}, t.itemDefaults, e[n]);
this._super(t), this.classes.add("menu"), t.animate && 11 !== h.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 e, n = this;
function i() {
n.throbber && (n.throbber.hide(), n.throbber = null)
}
n.settings.itemsFactory && (n.throbber || (n.throbber = new $r(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 = e = (new Date).getTime(), n.settings.itemsFactory(function(t) {
0 !== t.length ? n.requestTime === e && (n.getEl().style.width = "", n.getEl("body").style.width = "", i(), n.items().remove(), n.getEl("body").innerHTML = "", n.add(t), 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(t) {
var e = t.settings;
if (e.icon || e.image || e.selectable) return !(n._hasIcons = !0)
}), n.settings.itemsFactory && n.on("postrender", function() {
n.settings.itemsFactory && n.load()
}), n.on("show hide", function(t) {
t.control === n && ("show" === t.type ? c.setTimeout(function() {
n.classes.add("in")
}, 0) : n.classes.remove("in"))
}), n._super()
}
}),
jr = Yr.extend({
init: function(i) {
var e, r, o, n, s = this;
s._super(i), i = s.settings, s._values = e = i.values, e && ("undefined" != typeof i.value &&
function t(e) {
for (var n = 0; n < e.length; n++) {
if (r = e[n].selected || i.value === e[n].value) return o = o || e[n].text, s.state.set("value", e[n].value), !0;
if (e[n].menu && t(e[n].menu)) return !0
}
}(e), !r && 0 < e.length && (o = e[0].text, s.state.set("value", e[0].value)), s.state.set("menu", e)), s.state.set("text", i.text || o), s.classes.add("listbox"), s.on("select", function(t) {
var e = t.control;
n && (t.lastControl = n), i.multiple ? e.active(!e.active()) : s.value(t.control.value()), n = e
})
},
value: function(e) {
return 0 === arguments.length ? this.state.get("value") : (void 0 === e || (this.settings.values ? 0 < C.grep(this.settings.values, function(t) {
return t.value === e
}).length ? this.state.set("value", e) : null === e && this.state.set("value", null) : this.state.set("value", e)), this)
},
bindStates: function() {
var i = this;
return i.on("show", function(t) {
var e, n;
e = t.control, n = i.value(), e instanceof Xr && e.items().each(function(t) {
t.hasMenus() || t.active(t.value() === n)
})
}), i.state.on("change:value", function(e) {
var n = function t(e, n) {
var i;
if (e) for (var r = 0; r < e.length; r++) {
if (e[r].value === n) return e[r];
if (e[r].menu && (i = t(e[r].menu, n))) return i
}
}(i.state.get("menu"), e.value);
n ? i.text(n.text) : i.text(i.settings.text)
}), i._super()
}
}),
Jr = be.extend({
Defaults: {
border: 0,
role: "menuitem"
},
init: function(t) {
var e, n = this;
n._super(t), t = n.settings, n.classes.add("menu-item"), t.menu && n.classes.add("menu-item-expand"), t.preview && n.classes.add("menu-item-preview"), "-" !== (e = n.state.get("text")) && "|" !== e || (n.classes.add("menu-item-sep"), n.aria("role", "separator"), n.state.set("text", "-")), t.selectable && (n.aria("role", "menuitemcheckbox"), n.classes.add("menu-item-checkbox"), t.icon = "selected"), t.preview || t.selectable || n.classes.add("menu-item-normal"), n.on("mousedown", function(t) {
t.preventDefault()
}), t.menu && !t.ariaHideMenu && n.aria("haspopup", !0)
},
hasMenus: function() {
return !!this.settings.menu
},
showMenu: function() {
var e, n = this,
t = n.settings,
i = n.parent();
if (i.items().each(function(t) {
t !== n && t.hideMenu()
}), t.menu) {
(e = n.menu) ? e.show() : ((e = t.menu).length ? e = {
type: "menu",
items: e
} : e.type = e.type || "menu", i.settings.itemDefaults && (e.itemDefaults = i.settings.itemDefaults), (e = n.menu = Ee.create(e).parent(n).renderTo()).reflow(), e.on("cancel", function(t) {
t.stopPropagation(), n.focus(), e.hide()
}), e.on("show hide", function(t) {
t.control.items && t.control.items().each(function(t) {
t.active(t.settings.selected)
})
}).fire("show"), e.on("hide", function(t) {
t.control === e && n.classes.remove("selected")
}), e.submenu = !0), e._parentMenu = i, e.classes.add("menu-sub");
var r = e.testMoveRel(n.getEl(), n.isRtl() ? ["tl-tr", "bl-br", "tr-tl", "br-bl"] : ["tr-tl", "br-bl", "tl-tr", "bl-br"]);
e.moveRel(n.getEl(), r), r = "menu-sub-" + (e.rel = r), e.classes.remove(e._lastRel).add(r), e._lastRel = r, n.classes.add("selected"), n.aria("expanded", !0)
}
},
hideMenu: function() {
var t = this;
return t.menu && (t.menu.items().each(function(t) {
t.hideMenu && t.hideMenu()
}), t.menu.hide(), t.aria("expanded", !1)), t
},
renderHtml: function() {
var t, e = this,
n = e._id,
i = e.settings,
r = e.classPrefix,
o = e.state.get("text"),
s = e.settings.icon,
a = "",
l = i.shortcut,
u = e.encode(i.url);
function c(t) {
return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
}
function d(t) {
var e = i.match || "";
return e ? t.replace(new RegExp(c(e), "gi"), function(t) {
return "!mce~match[" + t + "]mce~match!"
}) : t
}
function f(t) {
return t.replace(new RegExp(c("!mce~match["), "g"), "").replace(new RegExp(c("]mce~match!"), "g"), "")
}
return s && e.parent().classes.add("menu-has-icons"), i.image && (a = " style=\"background-image: url('" + i.image + "')\""), l && (l = function(t) {
var e, n, i = {};
for (i = h.mac ? {
alt: "⌥",
ctrl: "⌘",
shift: "⇧",
meta: "⌘"
} : {
meta: "Ctrl"
}, t = t.split("+"), e = 0; e < t.length; e++)(n = i[t[e].toLowerCase()]) && (t[e] = n);
return t.join("+")
}(l)), s = r + "ico " + r + "i-" + (e.settings.icon || "none"), t = "-" !== o ? '\xa0" : "", o = f(e.encode(d(o))), u = f(e.encode(d(u))), '
' + t + ("-" !== o ? '' + o + "" : "") + (l ? '
' + l + "
" : "") + (i.menu ? '' : "") + (u ? '
' + u + "
" : "") + "
"
},
postRender: function() {
var e = this,
n = e.settings,
t = n.textStyle;
if ("function" == typeof t && (t = t.call(this)), t) {
var i = e.getEl("text");
i && (i.setAttribute("style", t), e._textStyle = t)
}
return e.on("mouseenter click", function(t) {
t.control === e && (n.menu || "click" !== t.type ? (e.showMenu(), t.aria && e.menu.focus(!0)) : (e.fire("select"), c.requestAnimationFrame(function() {
e.parent().hideAll()
})))
}), e._super(), e
},
hover: function() {
return this.parent().items().each(function(t) {
t.classes.remove("selected")
}), this.classes.toggle("selected", !0), this
},
active: function(t) {
return function(t, e) {
var n = t._textStyle;
if (n) {
var i = t.getEl("text");
i.setAttribute("style", n), e && (i.style.color = "", i.style.backgroundColor = "")
}
}(this, t), void 0 !== t && this.aria("checked", t), this._super(t)
},
remove: function() {
this._super(), this.menu && this.menu.remove()
}
}),
Gr = An.extend({
Defaults: {
classes: "radio",
role: "radio"
}
}),
Kr = be.extend({
renderHtml: function() {
var t = this,
e = t.classPrefix;
return t.classes.add("resizehandle"), "both" === t.settings.direction && t.classes.add("resizehandle-both"), t.canFocus = !1, '
'
},
postRender: function() {
var e = this;
e._super(), e.resizeDragHelper = new Re(this._id, {
start: function() {
e.fire("ResizeStart")
},
drag: function(t) {
"both" !== e.settings.direction && (t.deltaX = 0), e.fire("Resize", t)
},
stop: function() {
e.fire("ResizeEnd")
}
})
},
remove: function() {
return this.resizeDragHelper && this.resizeDragHelper.destroy(), this._super()
}
});
function Zr(t) {
var e = "";
if (t) for (var n = 0; n < t.length; n++) e += '";
return e
}
var Qr = be.extend({
Defaults: {
classes: "selectbox",
role: "selectbox",
options: []
},
init: function(t) {
var n = this;
n._super(t), n.settings.size && (n.size = n.settings.size), n.settings.options && (n._options = n.settings.options), n.on("keydown", function(t) {
var e;
13 === t.keyCode && (t.preventDefault(), n.parents().reverse().each(function(t) {
if (t.toJSON) return e = t, !1
}), n.fire("submit", {
data: e.toJSON()
}))
})
},
options: function(t) {
return arguments.length ? (this.state.set("options", t), this) : this.state.get("options")
},
renderHtml: function() {
var t, e = this,
n = "";
return t = Zr(e._options), e.size && (n = ' size = "' + e.size + '"'), '"
},
bindStates: function() {
var e = this;
return e.state.on("change:options", function(t) {
e.getEl().innerHTML = Zr(t.value)
}), e._super()
}
});
function to(t, e, n) {
return t < e && (t = e), n < t && (t = n), t
}
function eo(t, e, n) {
t.setAttribute("aria-" + e, n)
}
function no(t, e) {
var n, i, r, o, s;
"v" === t.settings.orientation ? (r = "top", i = "height", n = "h") : (r = "left", i = "width", n = "w"), s = t.getEl("handle"), o = ((t.layoutRect()[n] || 100) - St.getSize(s)[i]) * ((e - t._minValue) / (t._maxValue - t._minValue)) + "px", s.style[r] = o, s.style.height = t.layoutRect().h + "px", eo(s, "valuenow", e), eo(s, "valuetext", "" + t.settings.previewFilter(e)), eo(s, "valuemin", t._minValue), eo(s, "valuemax", t._maxValue)
}
var io = be.extend({
init: function(t) {
var e = this;
t.previewFilter || (t.previewFilter = function(t) {
return Math.round(100 * t) / 100
}), e._super(t), e.classes.add("slider"), "v" === t.orientation && e.classes.add("vertical"), e._minValue = yt(t.minValue) ? t.minValue : 0, e._maxValue = yt(t.maxValue) ? t.maxValue : 100, e._initValue = e.state.get("value")
},
renderHtml: function() {
var t = this._id,
e = this.classPrefix;
return '
'
},
reset: function() {
this.value(this._initValue).repaint()
},
postRender: function() {
var t, e, n, i, r, o, s, a, l, u, c, d, f, h, m = this;
t = m._minValue, e = 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 e(t) {
var e, n, i, r;
e = to(e = (((e = m.value()) + (r = n = o)) / ((i = s) - r) + .05 * t) * (i - n) - n, o, s), m.value(e), m.fire("dragstart", {
value: e
}), m.fire("drag", {
value: e
}), m.fire("dragend", {
value: e
})
}
m.on("keydown", function(t) {
switch (t.keyCode) {
case 37:
case 38:
e(-1);
break;
case 39:
case 40:
e(1)
}
})
}(t, e), s = t, a = e, l = m.getEl("handle"), m._dragHelper = new Re(m._id, {
handle: m._id + "-handle",
start: function(t) {
u = t[n], c = parseInt(m.getEl("handle").style[i], 10), d = (m.layoutRect()[o] || 100) - St.getSize(l)[r], m.fire("dragstart", {
value: h
})
},
drag: function(t) {
var e = t[n] - u;
f = to(c + e, 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(), no(this, this.value())
},
bindStates: function() {
var e = this;
return e.state.on("change:value", function(t) {
no(e, t.value)
}), e._super()
}
}),
ro = be.extend({
renderHtml: function() {
return this.classes.add("spacer"), this.canFocus = !1, ''
}
}),
oo = Yr.extend({
Defaults: {
classes: "widget btn splitbtn",
role: "button"
},
repaint: function() {
var t, e, n = this.getEl(),
i = this.layoutRect();
return this._super(), t = n.firstChild, e = n.lastChild, Nt(t).css({
width: i.w - St.getSize(e).width,
height: i.h - 2
}), Nt(e).css({
height: i.h - 2
}), this
},
activeMenu: function(t) {
Nt(this.getEl().lastChild).toggleClass(this.classPrefix + "active", t)
},
renderHtml: function() {
var t, e, n = this,
i = n._id,
r = n.classPrefix,
o = n.state.get("icon"),
s = n.state.get("text"),
a = n.settings,
l = "";
return (t = a.image) ? (o = "none", "string" != typeof t && (t = window.getSelection ? t[0] : t[1]), t = " style=\"background-image: url('" + t + "')\"") : t = "", o = a.icon ? r + "ico " + r + "i-" + o : "", s && (n.classes.add("btn-has-text"), l = '' + n.encode(s) + ""), e = "boolean" == typeof a.active ? ' aria-pressed="' + a.active + '"' : "", ''
},
postRender: function() {
var n = this.settings.onclick;
return this.on("click", function(t) {
var e = t.target;
if (t.control === this) for (; e;) {
if (t.aria && "down" !== t.aria.key || "BUTTON" === e.nodeName && -1 === e.className.indexOf("open")) return t.stopImmediatePropagation(), void(n && n.call(this, t));
e = e.parentNode
}
}), delete this.settings.onclick, this._super()
}
}),
so = ur.extend({
Defaults: {
containerClass: "stack-layout",
controlClass: "stack-layout-item",
endClass: "break"
},
isNative: function() {
return !0
}
}),
ao = We.extend({
Defaults: {
layout: "absolute",
defaults: {
type: "panel"
}
},
activateTab: function(n) {
var t;
this.activeTabId && (t = this.getEl(this.activeTabId), Nt(t).removeClass(this.classPrefix + "active"), t.setAttribute("aria-selected", "false")), this.activeTabId = "t" + n, (t = this.getEl("t" + n)).setAttribute("aria-selected", "true"), Nt(t).addClass(this.classPrefix + "active"), this.items()[n].show().fire("showtab"), this.reflow(), this.items().each(function(t, e) {
n !== e && t.hide()
})
},
renderHtml: function() {
var i = this,
t = i._layout,
r = "",
o = i.classPrefix;
return i.preRender(), t.preRender(i), i.items().each(function(t, e) {
var n = i._id + "-t" + e;
t.aria("role", "tabpanel"), t.aria("labelledby", n), r += '
' + i.encode(t.settings.title) + "
"
}), '
' + r + '
' + t.renderHtml(i) + "
"
},
postRender: function() {
var i = this;
i._super(), i.settings.activeTab = i.settings.activeTab || 0, i.activateTab(i.settings.activeTab), this.on("click", function(t) {
var e = t.target.parentNode;
if (e && e.id === i._id + "-head") for (var n = e.childNodes.length; n--;) e.childNodes[n] === t.target && i.activateTab(n)
})
},
initLayoutRect: function() {
var t, e, n, i = this;
e = (e = St.getSize(i.getEl("head")).width) < 0 ? 0 : e, n = 0, i.items().each(function(t) {
e = Math.max(e, t.layoutRect().minW), n = Math.max(n, t.layoutRect().minH)
}), i.items().each(function(t) {
t.settings.x = 0, t.settings.y = 0, t.settings.w = e, t.settings.h = n, t.layoutRect({
x: 0,
y: 0,
w: e,
h: n
})
});
var r = St.getSize(i.getEl("head")).height;
return i.settings.minWidth = e, i.settings.minHeight = n + r, (t = i._super()).deltaH += r, t.innerH = t.h - t.deltaH, t
}
}),
lo = be.extend({
init: function(t) {
var n = this;
n._super(t), n.classes.add("textbox"), t.multiline ? n.classes.add("multiline") : (n.on("keydown", function(t) {
var e;
13 === t.keyCode && (t.preventDefault(), n.parents().reverse().each(function(t) {
if (t.toJSON) return e = t, !1
}), n.fire("submit", {
data: e.toJSON()
}))
}), n.on("keyup", function(t) {
n.state.set("value", t.target.value)
}))
},
repaint: function() {
var t, e, n, i, r, o = this,
s = 0;
t = o.getEl().style, e = o._layoutRect, r = o._lastRepaintRect || {};
var a = document;
return !o.settings.multiline && a.all && (!a.documentMode || a.documentMode <= 8) && (t.lineHeight = e.h - s + "px"), i = (n = o.borderBox).left + n.right + 8, s = n.top + n.bottom + (o.settings.multiline ? 8 : 0), e.x !== r.x && (t.left = e.x + "px", r.x = e.x), e.y !== r.y && (t.top = e.y + "px", r.y = e.y), e.w !== r.w && (t.width = e.w - i + "px", r.w = e.w), e.h !== r.h && (t.height = e.h - s + "px", r.h = e.h), o._lastRepaintRect = r, o.fire("repaint", {}, !1), o
},
renderHtml: function() {
var e, t, n = this,
i = n.settings;
return e = {
id: n._id,
hidefocus: "1"
}, C.each(["rows", "spellcheck", "maxLength", "size", "readonly", "min", "max", "step", "list", "pattern", "placeholder", "required", "multiple"], function(t) {
e[t] = i[t]
}), n.disabled() && (e.disabled = "disabled"), i.subtype && (e.type = i.subtype), (t = St.create(i.multiline ? "textarea" : "input", e)).value = n.state.get("value"), t.className = n.classes.toString(), t.outerHTML
},
value: function(t) {
return arguments.length ? (this.state.set("value", t), this) : (this.state.get("rendered") && this.state.set("value", this.getEl().value), this.state.get("value"))
},
postRender: function() {
var e = this;
e.getEl().value = e.state.get("value"), e._super(), e.$el.on("change", function(t) {
e.state.set("value", t.target.value), e.fire("change", t)
})
},
bindStates: function() {
var e = this;
return e.state.on("change:value", function(t) {
e.getEl().value !== t.value && (e.getEl().value = t.value)
}), e.state.on("change:disabled", function(t) {
e.getEl().disabled = t.value
}), e._super()
},
remove: function() {
this.$el.off(), this._super()
}
}),
uo = function() {
return {
Selector: qt,
Collection: Xt,
ReflowQueue: ee,
Control: ce,
Factory: Ee,
KeyboardNavigation: Te,
Container: De,
DragHelper: Re,
Scrollable: Pe,
Panel: We,
Movable: pe,
Resizable: Ae,
FloatPanel: Ve,
Window: Je,
MessageBox: Ge,
Tooltip: ve,
Widget: be,
Progress: ye,
Notification: we,
Layout: Nn,
AbsoluteLayout: On,
Button: Dn,
ButtonGroup: Wn,
Checkbox: An,
ComboBox: Ln,
ColorBox: In,
PanelButton: zn,
ColorButton: Un,
ColorPicker: qn,
Path: $n,
ElementPath: Xn,
FormItem: jn,
Form: Jn,
FieldSet: Gn,
FilePicker: sr,
FitLayout: ar,
FlexLayout: lr,
FlowLayout: ur,
FormatControls: Lr,
GridLayout: Ir,
Iframe: zr,
InfoBox: Fr,
Label: Ur,
Toolbar: Vr,
MenuBar: qr,
MenuButton: Yr,
MenuItem: Jr,
Throbber: $r,
Menu: Xr,
ListBox: jr,
Radio: Gr,
ResizeHandle: Kr,
SelectBox: Qr,
Slider: io,
Spacer: ro,
SplitButton: oo,
StackLayout: so,
TabPanel: ao,
TextBox: lo,
DropZone: Yn,
BrowseButton: Pn
}
},
co = function(n) {
n.ui ? C.each(uo(), function(t, e) {
n.ui[e] = t
}) : n.ui = uo()
};
C.each(uo(), function(t, e) {
Ee.add(e, t)
}), co(window.tinymce ? window.tinymce : {}), o.add("inlite", function(t) {
var e = Sn();
return Lr.setup(t), Cn(t, e), Ke(t, e)
})
}();
!
function() {
"use strict";
var n, e, t, r, o, i, u, a, k = function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]
},
v = function(t, r) {
return function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
return t(r.apply(null, arguments))
}
},
E = function(n) {
return function() {
return n
}
},
h = function(n) {
return n
},
l = function(i) {
for (var n = [], e = 1; e < arguments.length; e++) n[e - 1] = arguments[e];
for (var u = new Array(arguments.length - 1), t = 1; t < arguments.length; t++) u[t - 1] = arguments[t];
return function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
for (var t = new Array(arguments.length), r = 0; r < t.length; r++) t[r] = arguments[r];
var o = u.concat(t);
return i.apply(null, o)
}
},
T = function(t) {
return function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
return !t.apply(null, arguments)
}
},
c = function(n) {
return function() {
throw new Error(n)
}
},
s = function(n) {
return n()
},
f = E(!1),
d = E(!0),
m = function(e) {
return function(n) {
return function(n) {
if (null === n) return "null";
var e = typeof n;
return "object" === e && Array.prototype.isPrototypeOf(n) ? "array" : "object" === e && String.prototype.isPrototypeOf(n) ? "string" : e
}(n) === e
}
},
b = m("string"),
g = m("object"),
p = m("array"),
y = m("boolean"),
w = m("function"),
x = m("number"),
S = Object.prototype.hasOwnProperty,
O = function(u) {
return function() {
for (var n = new Array(arguments.length), e = 0; e < n.length; e++) n[e] = arguments[e];
if (0 === n.length) throw new Error("Can't merge zero objects");
for (var t = {}, r = 0; r < n.length; r++) {
var o = n[r];
for (var i in o) S.call(o, i) && (t[i] = u(t[i], o[i]))
}
return t
}
},
C = O(function(n, e) {
return g(n) && g(e) ? C(n, e) : e
}),
D = O(function(n, e) {
return e
}),
A = f,
R = d,
M = function() {
return I
},
I = (r = {
fold: function(n, e) {
return n()
},
is: A,
isSome: A,
isNone: R,
getOr: t = function(n) {
return n
},
getOrThunk: e = function(n) {
return n()
},
getOrDie: function(n) {
throw new Error(n || "error: getOrDie called on none.")
},
getOrNull: function() {
return null
},
getOrUndefined: function() {
return undefined
},
or: t,
orThunk: e,
map: M,
ap: M,
each: function() {},
bind: M,
flatten: M,
exists: A,
forall: R,
filter: M,
equals: n = function(n) {
return n.isNone()
},
equals_: n,
toArray: function() {
return []
},
toString: E("none()")
}, Object.freeze && Object.freeze(r), r),
N = function(t) {
var n = function() {
return t
},
e = function() {
return o
},
r = function(n) {
return n(t)
},
o = {
fold: function(n, e) {
return e(t)
},
is: function(n) {
return t === n
},
isSome: R,
isNone: A,
getOr: n,
getOrThunk: n,
getOrDie: n,
getOrNull: n,
getOrUndefined: n,
or: e,
orThunk: e,
map: function(n) {
return N(n(t))
},
ap: function(n) {
return n.fold(M, function(n) {
return N(n(t))
})
},
each: function(n) {
n(t)
},
bind: r,
flatten: n,
exists: r,
forall: r,
filter: function(n) {
return n(t) ? o : I
},
equals: function(n) {
return n.is(t)
},
equals_: function(n, e) {
return n.fold(A, function(n) {
return e(t, n)
})
},
toArray: function() {
return [t]
},
toString: function() {
return "some(" + t + ")"
}
};
return o
},
B = {
some: N,
none: M,
from: function(n) {
return null === n || n === undefined ? I : N(n)
}
},
F = Object.keys,
V = function(n, e) {
for (var t = F(n), r = 0, o = t.length; r < o; r++) {
var i = t[r];
e(n[i], i, n)
}
},
H = function(n, r) {
return z(n, function(n, e, t) {
return {
k: e,
v: r(n, e, t)
}
})
},
z = function(r, o) {
var i = {};
return V(r, function(n, e) {
var t = o(n, e, r);
i[t.k] = t.v
}), i
},
j = function(n, t) {
var r = [];
return V(n, function(n, e) {
r.push(t(n, e))
}), r
},
L = E("touchstart"),
U = E("touchmove"),
P = E("touchend"),
_ = E("mousedown"),
W = E("mousemove"),
$ = E("mouseup"),
G = E("mouseover"),
q = E("keydown"),
Y = E("input"),
X = E("change"),
K = E("click"),
J = E("transitionend"),
Q = E("selectstart"),
Z = function(t) {
var r, o = !1;
return function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
return o || (o = !0, r = t.apply(null, n)), r
}
},
nn = function(n, e) {
var t = function(n, e) {
for (var t = 0; t < n.length; t++) {
var r = n[t];
if (r.test(e)) return r
}
return undefined
}(n, e);
if (!t) return {
major: 0,
minor: 0
};
var r = function(n) {
return Number(e.replace(t, "$" + n))
};
return tn(r(1), r(2))
},
en = function() {
return tn(0, 0)
},
tn = function(n, e) {
return {
major: n,
minor: e
}
},
rn = {
nu: tn,
detect: function(n, e) {
var t = String(e).toLowerCase();
return 0 === n.length ? en() : nn(n, t)
},
unknown: en
},
on = "Firefox",
un = function(n, e) {
return function() {
return e === n
}
},
an = function(n) {
var e = n.current;
return {
current: e,
version: n.version,
isEdge: un("Edge", e),
isChrome: un("Chrome", e),
isIE: un("IE", e),
isOpera: un("Opera", e),
isFirefox: un(on, e),
isSafari: un("Safari", e)
}
},
cn = {
unknown: function() {
return an({
current: undefined,
version: rn.unknown()
})
},
nu: an,
edge: E("Edge"),
chrome: E("Chrome"),
ie: E("IE"),
opera: E("Opera"),
firefox: E(on),
safari: E("Safari")
},
sn = "Windows",
fn = "Android",
ln = "Solaris",
dn = "FreeBSD",
mn = function(n, e) {
return function() {
return e === n
}
},
gn = function(n) {
var e = n.current;
return {
current: e,
version: n.version,
isWindows: mn(sn, e),
isiOS: mn("iOS", e),
isAndroid: mn(fn, e),
isOSX: mn("OSX", e),
isLinux: mn("Linux", e),
isSolaris: mn(ln, e),
isFreeBSD: mn(dn, e)
}
},
vn = {
unknown: function() {
return gn({
current: undefined,
version: rn.unknown()
})
},
nu: gn,
windows: E(sn),
ios: E("iOS"),
android: E(fn),
linux: E("Linux"),
osx: E("OSX"),
solaris: E(ln),
freebsd: E(dn)
},
pn = (o = Array.prototype.indexOf) === undefined ?
function(n, e) {
return kn(n, e)
} : function(n, e) {
return o.call(n, e)
}, hn = function(n, e) {
return -1 < pn(n, e)
}, bn = function(n, e) {
return Cn(n, e).isSome()
}, yn = function(n, e) {
for (var t = n.length, r = new Array(t), o = 0; o < t; o++) {
var i = n[o];
r[o] = e(i, o, n)
}
return r
}, wn = function(n, e) {
for (var t = 0, r = n.length; t < r; t++) e(n[t], t, n)
}, xn = function(n, e) {
for (var t = [], r = 0, o = n.length; r < o; r++) {
var i = n[r];
e(i, r, n) && t.push(i)
}
return t
}, Tn = function(n, e, t) {
return function(n, e) {
for (var t = n.length - 1; 0 <= t; t--) e(n[t], t, n)
}(n, function(n) {
t = e(t, n)
}), t
}, Sn = function(n, e, t) {
return wn(n, function(n) {
t = e(t, n)
}), t
}, On = function(n, e) {
for (var t = 0, r = n.length; t < r; t++) {
var o = n[t];
if (e(o, t, n)) return B.some(o)
}
return B.none()
}, Cn = function(n, e) {
for (var t = 0, r = n.length; t < r; t++) if (e(n[t], t, n)) return B.some(t);
return B.none()
}, kn = function(n, e) {
for (var t = 0, r = n.length; t < r; ++t) if (n[t] === e) return t;
return -1
}, En = Array.prototype.push, Dn = function(n) {
for (var e = [], t = 0, r = n.length; t < r; ++t) {
if (!Array.prototype.isPrototypeOf(n[t])) throw new Error("Arr.flatten item " + t + " was not an array, input: " + n);
En.apply(e, n[t])
}
return e
}, An = function(n, e) {
var t = yn(n, e);
return Dn(t)
}, Rn = function(n, e) {
for (var t = 0, r = n.length; t < r; ++t) if (!0 !== e(n[t], t, n)) return !1;
return !0
}, Mn = Array.prototype.slice, In = function(n) {
var e = Mn.call(n, 0);
return e.reverse(), e
}, Nn = function(n) {
return [n]
}, Bn = (w(Array.from) && Array.from, function(n, e) {
var t = String(e).toLowerCase();
return On(n, function(n) {
return n.search(t)
})
}), Fn = function(n, t) {
return Bn(n, t).map(function(n) {
var e = rn.detect(n.versionRegexes, t);
return {
current: n.name,
version: e
}
})
}, Vn = function(n, t) {
return Bn(n, t).map(function(n) {
var e = rn.detect(n.versionRegexes, t);
return {
current: n.name,
version: e
}
})
}, Hn = function(n, e) {
return -1 !== n.indexOf(e)
}, zn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, jn = function(e) {
return function(n) {
return Hn(n, e)
}
}, Ln = [{
name: "Edge",
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function(n) {
return Hn(n, "edge/") && Hn(n, "chrome") && Hn(n, "safari") && Hn(n, "applewebkit")
}
}, {
name: "Chrome",
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, zn],
search: function(n) {
return Hn(n, "chrome") && !Hn(n, "chromeframe")
}
}, {
name: "IE",
versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
search: function(n) {
return Hn(n, "msie") || Hn(n, "trident")
}
}, {
name: "Opera",
versionRegexes: [zn, /.*?opera\/([0-9]+)\.([0-9]+).*/],
search: jn("opera")
}, {
name: "Firefox",
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: jn("firefox")
}, {
name: "Safari",
versionRegexes: [zn, /.*?cpu os ([0-9]+)_([0-9]+).*/],
search: function(n) {
return (Hn(n, "safari") || Hn(n, "mobile/")) && Hn(n, "applewebkit")
}
}], Un = [{
name: "Windows",
search: jn("win"),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "iOS",
search: function(n) {
return Hn(n, "iphone") || Hn(n, "ipad")
},
versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
}, {
name: "Android",
search: jn("android"),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "OSX",
search: jn("os x"),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
}, {
name: "Linux",
search: jn("linux"),
versionRegexes: []
}, {
name: "Solaris",
search: jn("sunos"),
versionRegexes: []
}, {
name: "FreeBSD",
search: jn("freebsd"),
versionRegexes: []
}], Pn = {
browsers: E(Ln),
oses: E(Un)
}, _n = function(n) {
var e, t, r, o, i, u, a, c, s, f, l, d = Pn.browsers(),
m = Pn.oses(),
g = Fn(d, n).fold(cn.unknown, cn.nu),
v = Vn(m, n).fold(vn.unknown, vn.nu);
return {
browser: g,
os: v,
deviceType: (t = g, r = n, o = (e = v).isiOS() && !0 === /ipad/i.test(r), i = e.isiOS() && !o, u = e.isAndroid() && 3 === e.version.major, a = e.isAndroid() && 4 === e.version.major, c = o || u || a && !0 === /mobile/i.test(r), s = e.isiOS() || e.isAndroid(), f = s && !c, l = t.isSafari() && e.isiOS() && !1 === /safari/i.test(r), {
isiPad: E(o),
isiPhone: E(i),
isTablet: E(c),
isPhone: E(f),
isTouch: E(s),
isAndroid: e.isAndroid,
isiOS: e.isiOS,
isWebView: E(l)
})
}
}, Wn = {
detect: Z(function() {
var n = navigator.userAgent;
return _n(n)
})
}, $n = {
tap: E("alloy.tap")
}, Gn = E("alloy.focus"), qn = E("alloy.blur.post"), Yn = E("alloy.receive"), Xn = E("alloy.execute"), Kn = E("alloy.focus.item"), Jn = $n.tap, Qn = Wn.detect().deviceType.isTouch() ? $n.tap : K, Zn = E("alloy.longpress"), ne = E("alloy.system.init"), ee = E("alloy.system.scroll"), te = E("alloy.system.attached"), re = E("alloy.system.detached"), oe = function(n, e) {
ce(n, n.element(), e, {})
}, ie = function(n, e, t) {
ce(n, n.element(), e, t)
}, ue = function(n) {
oe(n, Xn())
}, ae = function(n, e, t) {
ce(n, e, t, {})
}, ce = function(n, e, t, r) {
var o = C({
target: e
}, r);
n.getSystem().triggerEvent(t, e, H(o, E))
}, se = function(n) {
if (null === n || n === undefined) throw new Error("Node cannot be null or undefined");
return {
dom: E(n)
}
}, fe = {
fromHtml: function(n, e) {
var t = (e || document).createElement("div");
if (t.innerHTML = n, !t.hasChildNodes() || 1 < t.childNodes.length) throw console.error("HTML does not have a single root node", n), "HTML must have a single root node";
return se(t.childNodes[0])
},
fromTag: function(n, e) {
var t = (e || document).createElement(n);
return se(t)
},
fromText: function(n, e) {
var t = (e || document).createTextNode(n);
return se(t)
},
fromDom: se,
fromPoint: function(n, e, t) {
var r = n.dom();
return B.from(r.elementFromPoint(e, t)).map(se)
}
}, le = {
ATTRIBUTE: Node.ATTRIBUTE_NODE,
CDATA_SECTION: Node.CDATA_SECTION_NODE,
COMMENT: Node.COMMENT_NODE,
DOCUMENT: Node.DOCUMENT_NODE,
DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,
DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,
ELEMENT: Node.ELEMENT_NODE,
TEXT: Node.TEXT_NODE,
PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,
ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,
ENTITY: Node.ENTITY_NODE,
NOTATION: Node.NOTATION_NODE
}, de = function(n) {
return n.dom().nodeName.toLowerCase()
}, me = function(n) {
return n.dom().nodeType
}, ge = function(e) {
return function(n) {
return me(n) === e
}
}, ve = ge(le.ELEMENT), pe = ge(le.TEXT), he = ge(le.DOCUMENT), be = {
name: de,
type: me,
value: function(n) {
return n.dom().nodeValue
},
isElement: ve,
isText: pe,
isDocument: he,
isComment: function(n) {
return me(n) === le.COMMENT || "#comment" === de(n)
}
}, ye = Z(function() {
return we(fe.fromDom(document))
}), we = function(n) {
var e = n.dom().body;
if (null === e || e === undefined) throw "Body is not available yet";
return fe.fromDom(e)
}, xe = {
body: ye,
getBody: we,
inBody: function(n) {
var e = be.isText(n) ? n.dom().parentNode : n.dom();
return e !== undefined && null !== e && e.ownerDocument.body.contains(e)
}
}, Te = function() {
for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
return function() {
for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
if (e.length !== t.length) throw new Error('Wrong number of arguments to struct. Expected "[' + e.length + ']", got ' + t.length + " arguments");
var r = {};
return wn(e, function(n, e) {
r[n] = E(t[e])
}), r
}
}, Se = function(n) {
return n.slice(0).sort()
}, Oe = function(n, e) {
throw new Error("All required keys (" + Se(n).join(", ") + ") were not specified. Specified keys were: " + Se(e).join(", ") + ".")
}, Ce = function(n) {
throw new Error("Unsupported keys for object: " + Se(n).join(", "))
}, ke = function(e, n) {
if (!p(n)) throw new Error("The " + e + " fields must be an array. Was: " + n + ".");
wn(n, function(n) {
if (!b(n)) throw new Error("The value " + n + " in the " + e + " fields was not a string.")
})
}, Ee = function(n) {
var t = Se(n);
On(t, function(n, e) {
return e < t.length - 1 && n === t[e + 1]
}).each(function(n) {
throw new Error("The field: " + n + " occurs more than once in the combined fields: [" + t.join(", ") + "].")
})
}, De = function(o, i) {
var u = o.concat(i);
if (0 === u.length) throw new Error("You must specify at least one required or optional field.");
return ke("required", o), ke("optional", i), Ee(u), function(e) {
var t = F(e);
Rn(o, function(n) {
return hn(t, n)
}) || Oe(o, t);
var n = xn(t, function(n) {
return !hn(u, n)
});
0 < n.length && Ce(n);
var r = {};
return wn(o, function(n) {
r[n] = E(e[n])
}), wn(i, function(n) {
r[n] = E(Object.prototype.hasOwnProperty.call(e, n) ? B.some(e[n]) : B.none())
}), r
}
}, Ae = function(n, e) {
for (var t = [], r = function(n) {
return t.push(n), e(n)
}, o = e(n);
(o = o.bind(r)).isSome(););
return t
}, Re = "undefined" != typeof window ? window : Function("return this;")(), Me = function(n, e) {
return function(n, e) {
for (var t = e !== undefined && null !== e ? e : Re, r = 0; r < n.length && t !== undefined && null !== t; ++r) t = t[n[r]];
return t
}(n.split("."), e)
}, Ie = {
getOrDie: function(n, e) {
var t = Me(n, e);
if (t === undefined || null === t) throw n + " not available on this browser";
return t
}
}, Ne = le.ELEMENT, Be = le.DOCUMENT, Fe = function(n) {
return n.nodeType !== Ne && n.nodeType !== Be || 0 === n.childElementCount
}, Ve = {
all: function(n, e) {
var t = e === undefined ? document : e.dom();
return Fe(t) ? [] : yn(t.querySelectorAll(n), fe.fromDom)
},
is: function(n, e) {
var t = n.dom();
if (t.nodeType !== Ne) return !1;
if (t.matches !== undefined) return t.matches(e);
if (t.msMatchesSelector !== undefined) return t.msMatchesSelector(e);
if (t.webkitMatchesSelector !== undefined) return t.webkitMatchesSelector(e);
if (t.mozMatchesSelector !== undefined) return t.mozMatchesSelector(e);
throw new Error("Browser lacks native selectors")
},
one: function(n, e) {
var t = e === undefined ? document : e.dom();
return Fe(t) ? B.none() : B.from(t.querySelector(n)).map(fe.fromDom)
}
}, He = function(n, e) {
return n.dom() === e.dom()
}, ze = (Wn.detect().browser.isIE(), He), je = function(n) {
var e = n.dom();
return B.from(e.parentNode).map(fe.fromDom)
}, Le = function(n) {
var e = n.dom();
return B.from(e.previousSibling).map(fe.fromDom)
}, Ue = function(n) {
var e = n.dom();
return B.from(e.nextSibling).map(fe.fromDom)
}, Pe = function(n) {
var e = n.dom();
return yn(e.childNodes, fe.fromDom)
}, _e = function(n, e) {
var t = n.dom().childNodes;
return B.from(t[e]).map(fe.fromDom)
}, We = Te("element", "offset"), $e = {
owner: function(n) {
return fe.fromDom(n.dom().ownerDocument)
},
defaultView: function(n) {
var e = n.dom().ownerDocument.defaultView;
return fe.fromDom(e)
},
documentElement: function(n) {
return fe.fromDom(n.dom().ownerDocument.documentElement)
},
parent: je,
findIndex: function(t) {
return je(t).bind(function(n) {
var e = Pe(n);
return Cn(e, function(n) {
return ze(t, n)
})
})
},
parents: function(n, e) {
for (var t = w(e) ? e : E(!1), r = n.dom(), o = []; null !== r.parentNode && r.parentNode !== undefined;) {
var i = r.parentNode,
u = fe.fromDom(i);
if (o.push(u), !0 === t(u)) break;
r = i
}
return o
},
siblings: function(e) {
return je(e).map(Pe).map(function(n) {
return xn(n, function(n) {
return !ze(e, n)
})
}).getOr([])
},
prevSibling: Le,
offsetParent: function(n) {
var e = n.dom();
return B.from(e.offsetParent).map(fe.fromDom)
},
prevSiblings: function(n) {
return In(Ae(n, Le))
},
nextSibling: Ue,
nextSiblings: function(n) {
return Ae(n, Ue)
},
children: Pe,
child: _e,
firstChild: function(n) {
return _e(n, 0)
},
lastChild: function(n) {
return _e(n, n.dom().childNodes.length - 1)
},
childNodesCount: function(n) {
return n.dom().childNodes.length
},
hasChildNodes: function(n) {
return n.dom().hasChildNodes()
},
leaf: function(n, e) {
var t = Pe(n);
return 0 < t.length && e < t.length ? We(t[e], 0) : We(n, e)
}
}, Ge = function(e, t) {
$e.parent(e).each(function(n) {
n.dom().insertBefore(t.dom(), e.dom())
})
}, qe = function(n, e) {
n.dom().appendChild(e.dom())
}, Ye = {
before: Ge,
after: function(n, e) {
$e.nextSibling(n).fold(function() {
$e.parent(n).each(function(n) {
qe(n, e)
})
}, function(n) {
Ge(n, e)
})
},
prepend: function(e, t) {
$e.firstChild(e).fold(function() {
qe(e, t)
}, function(n) {
e.dom().insertBefore(t.dom(), n.dom())
})
},
append: qe,
appendAt: function(n, e, t) {
$e.child(n, t).fold(function() {
qe(n, e)
}, function(n) {
Ge(n, e)
})
},
wrap: function(n, e) {
Ge(n, e), qe(e, n)
}
}, Xe = function(e, n) {
wn(n, function(n) {
Ye.before(e, n)
})
}, Ke = function(e, n) {
wn(n, function(n) {
Ye.append(e, n)
})
}, Je = function(n) {
var e = n.dom();
null !== e.parentNode && e.parentNode.removeChild(e)
}, Qe = {
empty: function(n) {
n.dom().textContent = "", wn($e.children(n), function(n) {
Je(n)
})
},
remove: Je,
unwrap: function(n) {
var e = $e.children(n);
0 < e.length && Xe(n, e), Je(n)
}
}, Ze = function(n) {
oe(n, re());
var e = n.components();
wn(e, Ze)
}, nt = function(n) {
var e = n.components();
wn(e, nt), oe(n, te())
}, et = function(n, e) {
tt(n, e, Ye.append)
}, tt = function(n, e, t) {
n.getSystem().addToWorld(e), t(n.element(), e.element()), xe.inBody(n.element()) && nt(e), n.syncComponents()
}, rt = function(n) {
Ze(n), Qe.remove(n.element()), n.getSystem().removeFromWorld(n)
}, ot = function(e) {
var n = $e.parent(e.element()).bind(function(n) {
return e.getSystem().getByDom(n).fold(B.none, B.some)
});
rt(e), n.each(function(n) {
n.syncComponents()
})
}, it = function(t) {
return {
is: function(n) {
return t === n
},
isValue: d,
isError: f,
getOr: E(t),
getOrThunk: E(t),
getOrDie: E(t),
or: function(n) {
return it(t)
},
orThunk: function(n) {
return it(t)
},
fold: function(n, e) {
return e(t)
},
map: function(n) {
return it(n(t))
},
each: function(n) {
n(t)
},
bind: function(n) {
return n(t)
},
exists: function(n) {
return n(t)
},
forall: function(n) {
return n(t)
},
toOption: function() {
return B.some(t)
}
}
}, ut = function(t) {
return {
is: f,
isValue: f,
isError: d,
getOr: h,
getOrThunk: function(n) {
return n()
},
getOrDie: function() {
return c(String(t))()
},
or: function(n) {
return n
},
orThunk: function(n) {
return n()
},
fold: function(n, e) {
return n(t)
},
map: function(n) {
return ut(t)
},
each: k,
bind: function(n) {
return ut(t)
},
exists: f,
forall: d,
toOption: B.none
}
}, at = {
value: it,
error: ut
}, ct = function(u) {
if (!p(u)) throw new Error("cases must be an array");
if (0 === u.length) throw new Error("there must be at least one case");
var a = [],
t = {};
return wn(u, function(n, r) {
var e = F(n);
if (1 !== e.length) throw new Error("one and only one name per case");
var o = e[0],
i = n[o];
if (t[o] !== undefined) throw new Error("duplicate key detected:" + o);
if ("cata" === o) throw new Error("cannot have a case named cata (sorry)");
if (!p(i)) throw new Error("case arguments must be an array");
a.push(o), t[o] = function() {
var n = arguments.length;
if (n !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + n);
for (var t = new Array(n), e = 0; e < t.length; e++) t[e] = arguments[e];
return {
fold: function() {
if (arguments.length !== u.length) throw new Error("Wrong number of arguments to fold. Expected " + u.length + ", got " + arguments.length);
return arguments[r].apply(null, t)
},
match: function(n) {
var e = F(n);
if (a.length !== e.length) throw new Error("Wrong number of arguments to match. Expected: " + a.join(",") + "\nActual: " + e.join(","));
if (!Rn(a, function(n) {
return hn(e, n)
})) throw new Error("Not all branches were specified when using match. Specified: " + e.join(", ") + "\nRequired: " + a.join(", "));
return n[o].apply(null, t)
},
log: function(n) {
console.log(n, {
constructors: a,
constructor: o,
params: t
})
}
}
}
}), t
}, st = ct([{
strict: []
}, {
defaultedThunk: ["fallbackThunk"]
}, {
asOption: []
}, {
asDefaultedOptionThunk: ["fallbackThunk"]
}, {
mergeWithThunk: ["baseThunk"]
}]), ft = function(n) {
return st.defaultedThunk(E(n))
}, lt = st.strict, dt = st.asOption, mt = st.defaultedThunk, gt = (st.asDefaultedOptionThunk, st.mergeWithThunk), vt = (ct([{
bothErrors: ["error1", "error2"]
}, {
firstError: ["error1", "value2"]
}, {
secondError: ["value1", "error2"]
}, {
bothValues: ["value1", "value2"]
}]), function(n) {
var e = [],
t = [];
return wn(n, function(n) {
n.fold(function(n) {
e.push(n)
}, function(n) {
t.push(n)
})
}), {
errors: e,
values: t
}
}), pt = function(n) {
return v(at.error, Dn)(n)
}, ht = function(n, e) {
var t, r, o = vt(n);
return 0 < o.errors.length ? pt(o.errors) : (t = o.values, r = e, at.value(C.apply(undefined, [r].concat(t))))
}, bt = function(n) {
var e = vt(n);
return 0 < e.errors.length ? pt(e.errors) : at.value(e.values)
}, yt = function(e) {
return function(n) {
return n.hasOwnProperty(e) ? B.from(n[e]) : B.none()
}
}, wt = function(n, e) {
return yt(e)(n)
}, xt = function(n, e) {
var t = {};
return t[n] = e, t
}, Tt = function(n, e) {
return t = n, r = {}, wn(e, function(n) {
t[n] !== undefined && t.hasOwnProperty(n) && (r[n] = t[n])
}), r;
var t, r
}, St = function(n, e) {
return t = e, r = {}, V(n, function(n, e) {
hn(t, e) || (r[e] = n)
}), r;
var t, r
}, Ot = function(n) {
return yt(n)
}, Ct = function(n, e) {
return t = n, r = e, function(n) {
return yt(t)(n).getOr(r)
};
var t, r
}, kt = function(n, e) {
return wt(n, e)
}, Et = function(n, e) {
return xt(n, e)
}, Dt = function(n) {
return e = {}, wn(n, function(n) {
e[n.key] = n.value
}), e;
var e
}, At = function(n, e) {
return ht(n, e)
}, Rt = function(n, e) {
return r = e, (t = n).hasOwnProperty(r) && t[r] !== undefined && null !== t[r];
var t, r
}, Mt = ct([{
setOf: ["validator", "valueType"]
}, {
arrOf: ["valueType"]
}, {
objOf: ["fields"]
}, {
itemOf: ["validator"]
}, {
choiceOf: ["key", "branches"]
}, {
thunk: ["description"]
}, {
func: ["args", "outputSchema"]
}]), It = ct([{
field: ["name", "presence", "type"]
}, {
state: ["name"]
}]), Nt = function() {
return Ie.getOrDie("JSON")
}, Bt = function(n, e, t) {
return Nt().stringify(n, e, t)
}, Ft = function(n) {
return g(n) && 100 < F(n).length ? " removed due to size" : Bt(n, null, 2)
}, Vt = function(n, e) {
return at.error([{
path: n,
getErrorInfo: e
}])
}, Ht = ct([{
field: ["key", "okey", "presence", "prop"]
}, {
state: ["okey", "instantiator"]
}]), zt = function(t, r, o) {
return wt(r, o).fold(function() {
return n = o, e = r, Vt(t, function() {
return 'Could not find valid *strict* value for "' + n + '" in ' + Ft(e)
});
var n, e
}, at.value)
}, jt = function(n, e, t) {
var r = wt(n, e).fold(function() {
return t(n)
}, h);
return at.value(r)
}, Lt = function(o, a, n, c) {
return n.fold(function(i, e, n, t) {
var r = function(n) {
return t.extract(o.concat([i]), c, n).map(function(n) {
return xt(e, c(n))
})
},
u = function(n) {
return n.fold(function() {
var n = xt(e, c(B.none()));
return at.value(n)
}, function(n) {
return t.extract(o.concat([i]), c, n).map(function(n) {
return xt(e, c(B.some(n)))
})
})
};
return n.fold(function() {
return zt(o, a, i).bind(r)
}, function(n) {
return jt(a, i, n).bind(r)
}, function() {
return (n = a, e = i, at.value(wt(n, e))).bind(u);
var n, e
}, function(n) {
return (e = a, t = i, r = n, o = wt(e, t).map(function(n) {
return !0 === n ? r(e) : n
}), at.value(o)).bind(u);
var e, t, r, o
}, function(n) {
var e = n(a);
return jt(a, i, E({})).map(function(n) {
return C(e, n)
}).bind(r)
})
}, function(n, e) {
var t = e(a);
return at.value(xt(n, c(t)))
})
}, Ut = function(r) {
return {
extract: function(t, n, e) {
return r(e, n).fold(function(n) {
return e = n, Vt(t, function() {
return e
});
var e
}, at.value)
},
toString: function() {
return "val"
},
toDsl: function() {
return Mt.itemOf(r)
}
}
}, Pt = function(n) {
var c = _t(n),
s = Tn(n, function(e, n) {
return n.fold(function(n) {
return C(e, Et(n, !0))
}, E(e))
}, {});
return {
extract: function(n, e, t) {
var r, o, i, u = y(t) ? [] : (o = F(r = t), xn(o, function(n) {
return Rt(r, n)
})),
a = xn(u, function(n) {
return !Rt(s, n)
});
return 0 === a.length ? c.extract(n, e, t) : (i = a, Vt(n, function() {
return "There are unsupported fields: [" + i.join(", ") + "] specified"
}))
},
toString: c.toString,
toDsl: c.toDsl
}
}, _t = function(a) {
return {
extract: function(n, e, t) {
return r = n, o = t, i = e, u = yn(a, function(n) {
return Lt(r, o, n, i)
}), ht(u, {});
var r, o, i, u
},
toString: function() {
return "obj{\n" + yn(a, function(n) {
return n.fold(function(n, e, t, r) {
return n + " -> " + r.toString()
}, function(n, e) {
return "state(" + n + ")"
})
}).join("\n") + "}"
},
toDsl: function() {
return Mt.objOf(yn(a, function(n) {
return n.fold(function(n, e, t, r) {
return It.field(n, t, r)
}, function(n, e) {
return It.state(n)
})
}))
}
}
}, Wt = function(t, i) {
var e = function(n, e) {
return (o = Ut(t), {
extract: function(t, r, n) {
var e = yn(n, function(n, e) {
return o.extract(t.concat(["[" + e + "]"]), r, n)
});
return bt(e)
},
toString: function() {
return "array(" + o.toString() + ")"
},
toDsl: function() {
return Mt.arrOf(o)
}
}).extract(n, h, e);
var o
};
return {
extract: function(t, r, o) {
var n = F(o);
return e(t, n).bind(function(n) {
var e = yn(n, function(n) {
return Ht.field(n, n, lt(), i)
});
return _t(e).extract(t, r, o)
})
},
toString: function() {
return "setOf(" + i.toString() + ")"
},
toDsl: function() {
return Mt.setOf(t, i)
}
}
}, $t = E(Ut(at.value)), Gt = Ht.state, qt = Ht.field, Yt = function(t, e, r, o, i) {
return kt(o, i).fold(function() {
return n = o, e = i, Vt(t, function() {
return 'The chosen schema: "' + e + '" did not exist in branches: ' + Ft(n)
});
var n, e
}, function(n) {
return _t(n).extract(t.concat(["branch: " + i]), e, r)
})
}, Xt = function(o, i) {
return {
extract: function(e, t, r) {
return kt(r, o).fold(function() {
return n = o, Vt(e, function() {
return 'Choice schema did not contain choice key: "' + n + '"'
});
var n
}, function(n) {
return Yt(e, t, r, i, n)
})
},
toString: function() {
return "chooseOn(" + o + "). Possible values: " + F(i)
},
toDsl: function() {
return Mt.choiceOf(o, i)
}
}
}, Kt = Ut(at.value), Jt = function(n, e, t, r) {
return e.extract([n], t, r).fold(function(n) {
return at.error({
input: r,
errors: n
})
}, at.value)
}, Qt = function(n, e, t) {
return Jt(n, e, E, t)
}, Zt = function(n) {
return n.fold(function(n) {
throw new Error(tr(n))
}, h)
}, nr = function(n, e, t) {
return Zt(Jt(n, e, h, t))
}, er = function(n, e, t) {
return Zt(Qt(n, e, t))
}, tr = function(n) {
return "Errors: \n" + (e = n.errors, t = 10 < e.length ? e.slice(0, 10).concat([{
path: [],
getErrorInfo: function() {
return "... (only showing first ten failures)"
}
}]) : e, yn(t, function(n) {
return "Failed path: (" + n.path.join(" > ") + ")\n" + n.getErrorInfo()
})) + "\n\nInput object: " + Ft(n.input);
var e, t
}, rr = function(n, e) {
return Xt(n, e)
}, or = E(Kt), ir = (i = w, u = "function", Ut(function(n) {
var e = typeof n;
return i(n) ? at.value(n) : at.error("Expected type: " + u + " but got: " + e)
})), ur = function(n) {
return qt(n, n, lt(), $t())
}, ar = function(n, e) {
return qt(n, n, lt(), e)
}, cr = function(n) {
return ar(n, ir)
}, sr = function(n, e) {
return qt(n, n, lt(), _t(e))
}, fr = function(n) {
return qt(n, n, dt(), $t())
}, lr = function(n, e) {
return qt(n, n, dt(), _t(e))
}, dr = function(n, e) {
return qt(n, n, dt(), Pt(e))
}, mr = function(n, e) {
return qt(n, n, ft(e), $t())
}, gr = function(n, e, t) {
return qt(n, n, ft(e), t)
}, vr = function(n, e) {
return Gt(n, e)
}, pr = function(n) {
if (!Rt(n, "can") && !Rt(n, "abort") && !Rt(n, "run")) throw new Error("EventHandler defined by: " + Bt(n, null, 2) + " does not have can, abort, or run!");
return nr("Extracting event.handler", Pt([mr("can", E(!0)), mr("abort", E(!1)), mr("run", k)]), n)
}, hr = function(t) {
var e, r, o, i, n = (e = t, r = function(n) {
return n.can
}, function() {
for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return Sn(e, function(n, e) {
return n && r(e).apply(undefined, t)
}, !0)
}),
u = (o = t, i = function(n) {
return n.abort
}, function() {
for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return Sn(o, function(n, e) {
return n || i(e).apply(undefined, t)
}, !1)
});
return pr({
can: n,
abort: u,
run: function() {
for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
wn(t, function(n) {
n.run.apply(undefined, e)
})
}
})
}, br = function(n) {
return Dt(n)
}, yr = function(n, e) {
return {
key: n,
value: pr({
abort: e
})
}
}, wr = function(n, e) {
return {
key: n,
value: pr({
run: e
})
}
}, xr = function(n, e, t) {
return {
key: n,
value: pr({
run: function(n) {
e.apply(undefined, [n].concat(t))
}
})
}
}, Tr = function(n) {
return function(r) {
return {
key: n,
value: pr({
run: function(n, e) {
var t;
t = e, ze(n.element(), t.event().target()) && r(n, e)
}
})
}
}
}, Sr = function(n, e, t) {
var u, r, o = e.partUids()[t];
return r = o, wr(u = n, function(n, i) {
n.getSystem().getByUid(r).each(function(n) {
var e, t, r, o;
t = (e = n).element(), r = u, o = i, e.getSystem().triggerEvent(r, t, o.event())
})
})
}, Or = function(n) {
return wr(n, function(n, e) {
e.cut()
})
}, Cr = Tr(te()), kr = Tr(re()), Er = Tr(ne()), Dr = (a = Xn(), function(n) {
return wr(a, n)
}), Ar = function(n) {
return yn(n, function(n) {
return r = e = "/*", o = (t = n).length - e.length, "" !== r && (t.length < r.length || t.substr(o, o + r.length) !== r) ? n : n.substring(0, n.length - "/*".length);
var e, t, r, o
})
}, Rr = function(n, e) {
var t = n.toString(),
r = t.indexOf(")") + 1,
o = t.indexOf("("),
i = t.substring(o + 1, r - 1).split(/,\s*/);
return n.toFunctionAnnotation = function() {
return {
name: e,
parameters: Ar(i)
}
}, n
}, Mr = De(["tag"], ["classes", "attributes", "styles", "value", "innerHtml", "domChildren", "defChildren"]), Ir = function(n) {
return {
tag: n.tag(),
classes: n.classes().getOr([]),
attributes: n.attributes().getOr({}),
styles: n.styles().getOr({}),
value: n.value().getOr(""),
innerHtml: n.innerHtml().getOr(""),
defChildren: n.defChildren().fold(function() {
return ""
}, function(n) {
return Bt(n, null, 2)
}),
domChildren: n.domChildren().fold(function() {
return ""
}, function(n) {
return 0 === n.length ? "0 children, but still specified" : String(n.length)
})
}
}, Nr = De([], ["classes", "attributes", "styles", "value", "innerHtml", "defChildren", "domChildren"]), Br = function(e, n, t) {
return n.fold(function() {
return t.fold(function() {
return {}
}, function(n) {
return Et(e, n)
})
}, function(n) {
return t.fold(function() {
return Et(e, n)
}, function(n) {
return Et(e, n)
})
})
}, Fr = function(t, r, o) {
return Er(function(n, e) {
o(n, t, r)
})
}, Vr = function(n, e, t, r, o, i) {
var u, a, c = n,
s = lr(e, [(u = "config", a = n, qt(u, u, dt(), a))]);
return jr(c, s, e, t, r, o, i)
}, Hr = function(o, i, u) {
var n, e, t, r, a, c;
return n = function(t) {
for (var n = [], e = 1; e < arguments.length; e++) n[e - 1] = arguments[e];
var r = [t].concat(n);
return t.config({
name: E(o)
}).fold(function() {
throw new Error("We could not find any behaviour configuration for: " + o + ". Using API: " + u)
}, function(n) {
var e = Array.prototype.slice.call(r, 1);
return i.apply(undefined, [t, n.config, n.state].concat(e))
})
}, e = u, t = i.toString(), r = t.indexOf(")") + 1, a = t.indexOf("("), c = t.substring(a + 1, r - 1).split(/,\s*/), n.toFunctionAnnotation = function() {
return {
name: e,
parameters: Ar(c.slice(0, 1).concat(c.slice(3)))
}
}, n
}, zr = function(n) {
return {
key: n,
value: undefined
}
}, jr = function(t, n, r, o, e, i, u) {
var a = function(n) {
return Rt(n, r) ? n[r]() : B.none()
},
c = H(e, function(n, e) {
return Hr(r, n, e)
}),
s = H(i, function(n, e) {
return Rr(n, e)
}),
f = C(s, c, {
revoke: l(zr, r),
config: function(n) {
var e = er(r + "-config", t, n);
return {
key: r,
value: {
config: e,
me: f,
configAsRaw: Z(function() {
return nr(r + "-config", t, n)
}),
initialConfig: n,
state: u
}
}
},
schema: function() {
return n
},
exhibit: function(n, t) {
return a(n).bind(function(e) {
return kt(o, "exhibit").map(function(n) {
return n(t, e.config, e.state)
})
}).getOr(Nr({}))
},
name: function() {
return r
},
handlers: function(n) {
return a(n).bind(function(e) {
return kt(o, "events").map(function(n) {
return n(e.config, e.state)
})
}).getOr({})
}
});
return f
}, Lr = function(n, e) {
return Ur(n, e, {
validate: w,
label: "function"
})
}, Ur = function(r, o, i) {
if (0 === o.length) throw new Error("You must specify at least one required field.");
return ke("required", o), Ee(o), function(e) {
var t = F(e);
Rn(o, function(n) {
return hn(t, n)
}) || Oe(o, t), r(o, t);
var n = xn(o, function(n) {
return !i.validate(e[n], n)
});
return 0 < n.length &&
function(n, e) {
throw new Error("All values need to be of type: " + e + ". Keys (" + Se(n).join(", ") + ") were not.")
}(n, i.label), e
}
}, Pr = function(e, n) {
var t = xn(n, function(n) {
return !hn(e, n)
});
0 < t.length && Ce(t)
}, _r = k, Wr = function(n) {
return Lr(Pr, n)
}, $r = {
init: function() {
return Gr({
readState: function() {
return "No State required"
}
})
}
}, Gr = function(n) {
return Lr(_r, ["readState"])(n), n
}, qr = function(n) {
return Dt(n)
}, Yr = Pt([ur("fields"), ur("name"), mr("active", {}), mr("apis", {}), mr("state", $r), mr("extra", {})]), Xr = function(n) {
var e, t, r, o, i, u, a, c, s = nr("Creating behaviour: " + n.name, Yr, n);
return e = s.fields, t = s.name, r = s.active, o = s.apis, i = s.extra, u = s.state, a = Pt(e), c = lr(t, [dr("config", e)]), jr(a, c, t, r, o, i, u)
}, Kr = Pt([ur("branchKey"), ur("branches"), ur("name"), mr("active", {}), mr("apis", {}), mr("state", $r), mr("extra", {})]), Jr = E(undefined);
function Qr(n, e, t) {
var r = t || !1,
o = function() {
e(), r = !0
},
i = function() {
n(), r = !1
};
return {
on: o,
off: i,
toggle: function() {
(r ? i : o)()
},
isOn: function() {
return r
}
}
}
var Zr = function(n, e, t) {
if (!(b(t) || y(t) || x(t))) throw console.error("Invalid call to Attr.set. Key ", e, ":: Value ", t, ":: Element ", n), new Error("Attribute value was not simple");
n.setAttribute(e, t + "")
},
no = function(n, e, t) {
Zr(n.dom(), e, t)
},
eo = function(n, e) {
var t = n.dom().getAttribute(e);
return null === t ? undefined : t
},
to = function(n, e) {
var t = n.dom();
return !(!t || !t.hasAttribute) && t.hasAttribute(e)
},
ro = {
clone: function(n) {
return Sn(n.dom().attributes, function(n, e) {
return n[e.name] = e.value, n
}, {})
},
set: no,
setAll: function(n, e) {
var t = n.dom();
V(e, function(n, e) {
Zr(t, e, n)
})
},
get: eo,
has: to,
remove: function(n, e) {
n.dom().removeAttribute(e)
},
hasNone: function(n) {
var e = n.dom().attributes;
return e === undefined || null === e || 0 === e.length
},
transfer: function(o, i, n) {
be.isElement(o) && be.isElement(i) && wn(n, function(n) {
var e, t, r;
t = i, to(e = o, r = n) && !to(t, r) && no(t, r, eo(e, r))
})
}
},
oo = function(n, e) {
var t = ro.get(n, e);
return t === undefined || "" === t ? [] : t.split(" ")
},
io = oo,
uo = function(n, e, t) {
var r = oo(n, e).concat([t]);
return ro.set(n, e, r.join(" ")), !0
},
ao = function(n, e, t) {
var r = xn(oo(n, e), function(n) {
return n !== t
});
return 0 < r.length ? ro.set(n, e, r.join(" ")) : ro.remove(n, e), !1
},
co = function(n) {
return io(n, "class")
},
so = function(n, e) {
return uo(n, "class", e)
},
fo = function(n, e) {
return ao(n, "class", e)
},
lo = co,
mo = so,
go = fo,
vo = function(n, e) {
return hn(co(n), e) ? fo(n, e) : so(n, e)
},
po = function(n) {
return n.dom().classList !== undefined
},
ho = function(n, e) {
return po(n) && n.dom().classList.contains(e)
},
bo = {
add: function(n, e) {
po(n) ? n.dom().classList.add(e) : mo(n, e)
},
remove: function(n, e) {
var t;
po(n) ? n.dom().classList.remove(e) : go(n, e), 0 === (po(t = n) ? t.dom().classList : lo(t)).length && ro.remove(t, "class")
},
toggle: function(n, e) {
return po(n) ? n.dom().classList.toggle(e) : vo(n, e)
},
toggler: function(n, e) {
var t = po(n),
r = n.dom().classList;
return Qr(function() {
t ? r.remove(e) : go(n, e)
}, function() {
t ? r.add(e) : mo(n, e)
}, ho(n, e))
},
has: ho
},
yo = function(n, e, t) {
bo.remove(n, t), bo.add(n, e)
},
wo = Object.freeze({
toAlpha: function(n, e, t) {
yo(n.element(), e.alpha(), e.omega())
},
toOmega: function(n, e, t) {
yo(n.element(), e.omega(), e.alpha())
},
isAlpha: function(n, e, t) {
return bo.has(n.element(), e.alpha())
},
isOmega: function(n, e, t) {
return bo.has(n.element(), e.omega())
},
clear: function(n, e, t) {
bo.remove(n.element(), e.alpha()), bo.remove(n.element(), e.omega())
}
}),
xo = [ur("alpha"), ur("omega")],
To = Xr({
fields: xo,
name: "swapping",
apis: wo
}),
So = function(n) {
var e = n,
t = function() {
return e
};
return {
get: t,
set: function(n) {
e = n
},
clone: function() {
return So(t())
}
}
};
function Oo(n, e, t, r, o) {
return n(t, r) ? B.some(t) : w(o) && o(t) ? B.none() : e(t, r, o)
}
var Co = function(n, e, t) {
for (var r = n.dom(), o = w(t) ? t : E(!1); r.parentNode;) {
r = r.parentNode;
var i = fe.fromDom(r);
if (e(i)) return B.some(i);
if (o(i)) break
}
return B.none()
},
ko = function(n, e) {
return On(n.dom().childNodes, v(e, fe.fromDom)).map(fe.fromDom)
},
Eo = function(n, r) {
var o = function(n) {
for (var e = 0; e < n.childNodes.length; e++) {
if (r(fe.fromDom(n.childNodes[e]))) return B.some(fe.fromDom(n.childNodes[e]));
var t = o(n.childNodes[e]);
if (t.isSome()) return t
}
return B.none()
};
return o(n.dom())
},
Do = {
first: function(n) {
return Eo(xe.body(), n)
},
ancestor: Co,
closest: function(n, e, t) {
return Oo(function(n) {
return e(n)
}, Co, n, e, t)
},
sibling: function(e, t) {
var n = e.dom();
return n.parentNode ? ko(fe.fromDom(n.parentNode), function(n) {
return !ze(e, n) && t(n)
}) : B.none()
},
child: ko,
descendant: Eo
},
Ao = function(n) {
n.dom().focus()
},
Ro = function(n) {
var e = n !== undefined ? n.dom() : document;
return B.from(e.activeElement).map(fe.fromDom)
},
Mo = function(n) {
var e = $e.owner(n).dom();
return n.dom() === e.activeElement
},
Io = Ao,
No = function(n) {
n.dom().blur()
},
Bo = Ro,
Fo = function(e) {
return Ro($e.owner(e)).filter(function(n) {
return e.dom().contains(n.dom())
})
},
Vo = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
Ho = tinymce.util.Tools.resolve("tinymce.ThemeManager"),
zo = function(n) {
var e = document.createElement("a");
e.target = "_blank", e.href = n.href, e.rel = "noreferrer noopener";
var t = document.createEvent("MouseEvents");
t.initMouseEvent("click", !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), document.body.appendChild(e), e.dispatchEvent(t), document.body.removeChild(e)
},
jo = {
formatChanged: E("formatChanged"),
orientationChanged: E("orientationChanged"),
dropupDismissed: E("dropupDismissed")
},
Lo = function(n, e) {
var t = (e || document).createElement("div");
return t.innerHTML = n, $e.children(fe.fromDom(t))
},
Uo = function(n) {
return n.dom().innerHTML
},
Po = Uo,
_o = function(n, e) {
var t = $e.owner(n).dom(),
r = fe.fromDom(t.createDocumentFragment()),
o = Lo(e, t);
Ke(r, o), Qe.empty(n), Ye.append(n, r)
},
Wo = function(n) {
var e = fe.fromTag("div"),
t = fe.fromDom(n.dom().cloneNode(!0));
return Ye.append(e, t), Uo(e)
},
$o = function(n, e) {
return fe.fromDom(n.dom().cloneNode(e))
},
Go = function(n) {
return $o(n, !1)
},
qo = function(n) {
return e = Go(n), Wo(e);
var e
},
Yo = Object.freeze({
events: function(a) {
return br([wr(Yn(), function(o, i) {
var n, e, u = a.channels(),
t = F(u),
r = (n = t, (e = i).universal() ? n : xn(n, function(n) {
return hn(e.channels(), n)
}));
wn(r, function(n) {
var e = u[n](),
t = e.schema(),
r = er("channel[" + n + "] data\nReceiver: " + qo(o.element()), t, i.data());
e.onReceive()(o, r)
})
})])
}
}),
Xo = function(n) {
for (var e = [], t = function(n) {
e.push(n)
}, r = 0; r < n.length; r++) n[r].each(t);
return e
},
Ko = function(n, e) {
for (var t = 0; t < n.length; t++) {
var r = e(n[t], t);
if (r.isSome()) return r
}
return B.none()
},
Jo = "unknown",
Qo = [],
Zo = ["alloy/data/Fields", "alloy/debugging/Debugging"],
ni = {
logEventCut: k,
logEventStopped: k,
logNoParent: k,
logEventNoHandlers: k,
logEventResponse: k,
write: k
},
ei = function(n, e, t) {
var r, o = "*" === Qo || hn(Qo, n) ? (r = [], {
logEventCut: function(n, e, t) {
r.push({
outcome: "cut",
target: e,
purpose: t
})
},
logEventStopped: function(n, e, t) {
r.push({
outcome: "stopped",
target: e,
purpose: t
})
},
logNoParent: function(n, e, t) {
r.push({
outcome: "no-parent",
target: e,
purpose: t
})
},
logEventNoHandlers: function(n, e) {
r.push({
outcome: "no-handlers-left",
target: e
})
},
logEventResponse: function(n, e, t) {
r.push({
outcome: "response",
purpose: t,
target: e
})
},
write: function() {
hn(["mousemove", "mouseover", "mouseout", ne()], n) || console.log(n, {
event: n,
target: e.dom(),
sequence: yn(r, function(n) {
return hn(["cut", "stopped", "response"], n.outcome) ? "{" + n.purpose + "} " + n.outcome + " at (" + qo(n.target) + ")" : n.outcome
})
})
}
}) : ni,
i = t(o);
return o.write(), i
},
ti = E([ur("menu"), ur("selectedMenu")]),
ri = E([ur("item"), ur("selectedItem")]),
oi = (E(Pt(ri().concat(ti()))), E(Pt(ri()))),
ii = sr("initSize", [ur("numColumns"), ur("numRows")]),
ui = function(n, e, t) {
var r;
return function() {
var n = new Error;
if (n.stack !== undefined) {
var e = n.stack.split("\n");
On(e, function(e) {
return 0 < e.indexOf("alloy") && !bn(Zo, function(n) {
return -1 < e.indexOf(n)
})
}).getOr(Jo)
}
}(), qt(e, e, t, (r = function(t) {
return at.value(function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
return t.apply(undefined, n)
})
}, Ut(function(n) {
return r(n)
})))
},
ai = function(n) {
return ui(0, n, ft(k))
},
ci = function(n) {
return ui(0, n, ft(B.none))
},
si = function(n) {
return ui(0, n, lt())
},
fi = function(n) {
return ui(0, n, lt())
},
li = function(n, e) {
return vr(n, E(e))
},
di = function(n) {
return vr(n, h)
},
mi = E(ii),
gi = [ar("channels", Wt(at.value, Pt([si("onReceive"), mr("schema", or())])))],
vi = Xr({
fields: gi,
name: "receiving",
active: Yo
}),
pi = function(n, e) {
var t = wi(n, e),
r = e.aria();
r.update()(n, r, t)
},
hi = function(n, e, t) {
bo.toggle(n.element(), e.toggleClass()), pi(n, e)
},
bi = function(n, e, t) {
bo.add(n.element(), e.toggleClass()), pi(n, e)
},
yi = function(n, e, t) {
bo.remove(n.element(), e.toggleClass()), pi(n, e)
},
wi = function(n, e) {
return bo.has(n.element(), e.toggleClass())
},
xi = function(n, e, t) {
(e.selected() ? bi : yi)(n, e, t)
},
Ti = Object.freeze({
onLoad: xi,
toggle: hi,
isOn: wi,
on: bi,
off: yi
}),
Si = Object.freeze({
exhibit: function(n, e, t) {
return Nr({})
},
events: function(n, e) {
var t, r, o, i = (t = n, r = e, o = hi, Dr(function(n) {
o(n, t, r)
})),
u = Fr(n, e, xi);
return br(Dn([n.toggleOnExecute() ? [i] : [],
[u]
]))
}
}),
Oi = function(n, e, t) {
ro.set(n.element(), "aria-expanded", t)
},
Ci = [mr("selected", !1), ur("toggleClass"), mr("toggleOnExecute", !0), gr("aria", {
mode: "none"
}, rr("mode", {
pressed: [mr("syncWithExpanded", !1), li("update", function(n, e, t) {
ro.set(n.element(), "aria-pressed", t), e.syncWithExpanded() && Oi(n, e, t)
})],
checked: [li("update", function(n, e, t) {
ro.set(n.element(), "aria-checked", t)
})],
expanded: [li("update", Oi)],
selected: [li("update", function(n, e, t) {
ro.set(n.element(), "aria-selected", t)
})],
none: [li("update", k)]
}))],
ki = Xr({
fields: Ci,
name: "toggling",
active: Si,
apis: Ti
}),
Ei = function(t, r) {
return vi.config({
channels: Et(jo.formatChanged(), {
onReceive: function(n, e) {
e.command === t && r(n, e.state)
}
})
})
},
Di = function(n) {
return vi.config({
channels: Et(jo.orientationChanged(), {
onReceive: n
})
})
},
Ai = function(n, e) {
return {
key: n,
value: {
onReceive: e
}
}
},
Ri = "tinymce-mobile",
Mi = {
resolve: function(n) {
return Ri + "-" + n
},
prefix: E(Ri)
},
Ii = function(n, e) {
e.ignore() || (Io(n.element()), e.onFocus()(n))
},
Ni = Object.freeze({
focus: Ii,
blur: function(n, e) {
e.ignore() || No(n.element())
},
isFocused: function(n) {
return Mo(n.element())
}
}),
Bi = Object.freeze({
exhibit: function(n, e) {
return e.ignore() ? Nr({}) : Nr({
attributes: {
tabindex: "-1"
}
})
},
events: function(t) {
return br([wr(Gn(), function(n, e) {
Ii(n, t), e.stop()
})])
}
}),
Fi = [ai("onFocus"), mr("ignore", !1)],
Vi = Xr({
fields: Fi,
name: "focusing",
active: Bi,
apis: Ni
}),
Hi = function(n) {
return n.style !== undefined
},
zi = function(n, e, t) {
if (!b(t)) throw console.error("Invalid call to CSS.set. Property ", e, ":: Value ", t, ":: Element ", n), new Error("CSS value must be a string: " + t);
Hi(n) && n.style.setProperty(e, t)
},
ji = function(n, e) {
Hi(n) && n.style.removeProperty(e)
},
Li = function(n, e, t) {
var r = n.dom();
zi(r, e, t)
},
Ui = function(n, e) {
return Hi(n) ? n.style.getPropertyValue(e) : ""
},
Pi = function(n, e) {
var t = n.dom(),
r = Ui(t, e);
return B.from(r).filter(function(n) {
return 0 < n.length
})
},
_i = {
copy: function(n, e) {
var t = n.dom(),
r = e.dom();
Hi(t) && Hi(r) && (r.style.cssText = t.style.cssText)
},
set: Li,
preserve: function(n, e) {
var t = ro.get(n, "style"),
r = e(n);
return (t === undefined ? ro.remove : ro.set)(n, "style", t), r
},
setAll: function(n, e) {
var t = n.dom();
V(e, function(n, e) {
zi(t, e, n)
})
},
setOptions: function(n, e) {
var t = n.dom();
V(e, function(n, e) {
n.fold(function() {
ji(t, e)
}, function(n) {
zi(t, e, n)
})
})
},
remove: function(n, e) {
var t = n.dom();
ji(t, e), ro.has(n, "style") && "" === ro.get(n, "style").replace(/^\s+|\s+$/g, "") && ro.remove(n, "style")
},
get: function(n, e) {
var t = n.dom(),
r = window.getComputedStyle(t).getPropertyValue(e),
o = "" !== r || xe.inBody(n) ? r : Ui(t, e);
return null === o ? undefined : o
},
getRaw: Pi,
getAllRaw: function(n) {
var e = {},
t = n.dom();
if (Hi(t)) for (var r = 0; r < t.style.length; r++) {
var o = t.style.item(r);
e[o] = t.style[o]
}
return e
},
isValidValue: function(n, e, t) {
var r = fe.fromTag(n);
return Li(r, e, t), Pi(r, e).isSome()
},
reflow: function(n) {
return n.dom().offsetWidth
},
transfer: function(r, o, n) {
be.isElement(r) && be.isElement(o) && wn(n, function(n) {
var e, t;
e = o, Pi(r, t = n).each(function(n) {
Pi(e, t).isNone() && Li(e, t, n)
})
})
}
};
function Wi(r, o) {
var n = function(n) {
var e = o(n);
if (e <= 0 || null === e) {
var t = _i.get(n, r);
return parseFloat(t) || 0
}
return e
},
i = function(o, n) {
return Sn(n, function(n, e) {
var t = _i.get(o, e),
r = t === undefined ? 0 : parseInt(t, 10);
return isNaN(r) ? n : n + r
}, 0)
};
return {
set: function(n, e) {
if (!x(e) && !e.match(/^[0-9]+$/)) throw r + ".set accepts only positive integer values. Value was " + e;
var t = n.dom();
Hi(t) && (t.style[r] = e + "px")
},
get: n,
getOuter: n,
aggregate: i,
max: function(n, e, t) {
var r = i(n, t);
return r < e ? e - r : 0
}
}
}
var $i, Gi, qi = Wi("height", function(n) {
var e = n.dom();
return xe.inBody(n) ? e.getBoundingClientRect().height : e.offsetHeight
}),
Yi = function(n) {
return qi.get(n)
},
Xi = function(n, e, t) {
return xn($e.parents(n, t), e)
},
Ki = function(n, e) {
return xn($e.siblings(n), e)
},
Ji = function(n) {
return Ve.all(n)
},
Qi = function(n, e, t) {
return Xi(n, function(n) {
return Ve.is(n, e)
}, t)
},
Zi = function(n, e) {
return Ki(n, function(n) {
return Ve.is(n, e)
})
},
nu = function(n, e) {
return Ve.all(e, n)
},
eu = function(n, e, t) {
return Do.ancestor(n, function(n) {
return Ve.is(n, e)
}, t)
},
tu = function(n) {
return Ve.one(n)
},
ru = eu,
ou = function(n, e) {
return Ve.one(e, n)
},
iu = function(n, e, t) {
return Oo(Ve.is, eu, n, e, t)
},
uu = function(n, e, t) {
var r = In(n.slice(0, e)),
o = In(n.slice(e + 1));
return On(r.concat(o), t)
},
au = function(n, e, t) {
var r = In(n.slice(0, e));
return On(r, t)
},
cu = function(n, e, t) {
var r = n.slice(0, e),
o = n.slice(e + 1);
return On(o.concat(r), t)
},
su = function(n, e, t) {
var r = n.slice(e + 1);
return On(r, t)
},
fu = function(t) {
return function(n) {
var e = n.raw();
return hn(t, e.which)
}
},
lu = function(n) {
return function(e) {
return Rn(n, function(n) {
return n(e)
})
}
},
du = function(n) {
return !0 === n.raw().shiftKey
},
mu = function(n) {
return !0 === n.raw().ctrlKey
},
gu = T(du),
vu = function(n, e) {
return {
matches: n,
classification: e
}
},
pu = function(n, e, t, r) {
var o = n + e;
return r < o ? t : o < t ? r : o
},
hu = function(n, e, t) {
return n <= e ? e : t <= n ? t : n
},
bu = function(e, t, n) {
var r = nu(e.element(), "." + t.highlightClass());
wn(r, function(n) {
bo.remove(n, t.highlightClass()), e.getSystem().getByDom(n).each(function(n) {
t.onDehighlight()(e, n)
})
})
},
yu = function(n, e, t, r) {
var o = wu(n, e, t, r);
bu(n, e), bo.add(r.element(), e.highlightClass()), o || e.onHighlight()(n, r)
},
wu = function(n, e, t, r) {
return bo.has(r.element(), e.highlightClass())
},
xu = function(n, e, t, r) {
var o = nu(n.element(), "." + e.itemClass());
return B.from(o[r]).fold(function() {
return at.error("No element found with index " + r)
}, n.getSystem().getByDom)
},
Tu = function(e, n, t) {
return ou(e.element(), "." + n.itemClass()).bind(function(n) {
return e.getSystem().getByDom(n).toOption()
})
},
Su = function(e, n, t) {
var r = nu(e.element(), "." + n.itemClass());
return (0 < r.length ? B.some(r[r.length - 1]) : B.none()).bind(function(n) {
return e.getSystem().getByDom(n).toOption()
})
},
Ou = function(t, e, n, r) {
var o = nu(t.element(), "." + e.itemClass());
return Cn(o, function(n) {
return bo.has(n, e.highlightClass())
}).bind(function(n) {
var e = pu(n, r, 0, o.length - 1);
return t.getSystem().getByDom(o[e]).toOption()
})
},
Cu = Object.freeze({
dehighlightAll: bu,
dehighlight: function(n, e, t, r) {
var o = wu(n, e, t, r);
bo.remove(r.element(), e.highlightClass()), o && e.onDehighlight()(n, r)
},
highlight: yu,
highlightFirst: function(e, t, r) {
Tu(e, t, r).each(function(n) {
yu(e, t, r, n)
})
},
highlightLast: function(e, t, r) {
Su(e, t, r).each(function(n) {
yu(e, t, r, n)
})
},
highlightAt: function(e, t, r, n) {
xu(e, t, r, n).fold(function(n) {
throw new Error(n)
}, function(n) {
yu(e, t, r, n)
})
},
highlightBy: function(e, t, r, n) {
var o = nu(e.element(), "." + t.itemClass()),
i = Xo(yn(o, function(n) {
return e.getSystem().getByDom(n).toOption()
}));
On(i, n).each(function(n) {
yu(e, t, r, n)
})
},
isHighlighted: wu,
getHighlighted: function(e, n, t) {
return ou(e.element(), "." + n.highlightClass()).bind(function(n) {
return e.getSystem().getByDom(n).toOption()
})
},
getFirst: Tu,
getLast: Su,
getPrevious: function(n, e, t) {
return Ou(n, e, 0, -1)
},
getNext: function(n, e, t) {
return Ou(n, e, 0, 1)
}
}),
ku = [ur("highlightClass"), ur("itemClass"), ai("onHighlight"), ai("onDehighlight")],
Eu = Xr({
fields: ku,
name: "highlighting",
apis: Cu
}),
Du = function() {
return {
get: function(n) {
return Fo(n.element())
},
set: function(n, e) {
n.getSystem().triggerFocus(e, n.element())
}
}
},
Au = function(n, e, a, t, r, i) {
var u = function(e, t, r, o) {
var n, i, u = a(e, t, r, o);
return (n = u, i = t.event(), On(n, function(n) {
return n.matches(i)
}).map(function(n) {
return n.classification
})).bind(function(n) {
return n(e, t, r, o)
})
},
o = {
schema: function() {
return n.concat([mr("focusManager", Du()), li("handler", o), li("state", e)])
},
processKey: u,
toEvents: function(r, o) {
var n = t(r, o),
e = br(i.map(function(t) {
return wr(Gn(), function(n, e) {
t(n, r, o, e), e.stop()
})
}).toArray().concat([wr(q(), function(n, e) {
u(n, e, r, o).each(function(n) {
e.stop()
})
})]));
return C(n, e)
},
toApis: r
};
return o
},
Ru = function(n) {
var e = [fr("onEscape"), fr("onEnter"), mr("selector", '[data-alloy-tabstop="true"]'), mr("firstTabstop", 0), mr("useTabstopAt", E(!0)), fr("visibilitySelector")].concat([n]),
u = function(n, e) {
var t = n.visibilitySelector().bind(function(n) {
return iu(e, n)
}).getOr(e);
return 0 < Yi(t)
},
a = function(e, n, t, r, o) {
return o(n, t, function(n) {
return u(e = r, t = n) && e.useTabstopAt()(t);
var e, t
}).fold(function() {
return r.cyclic() ? B.some(!0) : B.none()
}, function(n) {
return r.focusManager().set(e, n), B.some(!0)
})
},
i = function(e, n, t, r) {
var o, i, u = nu(e.element(), t.selector());
return (o = e, i = t, i.focusManager().get(o).bind(function(n) {
return iu(n, i.selector())
})).bind(function(n) {
return Cn(u, l(ze, n)).bind(function(n) {
return a(e, u, n, t, r)
})
})
},
t = E([vu(lu([du, fu([9])]), function(n, e, t, r) {
var o = t.cyclic() ? uu : au;
return i(n, 0, t, o)
}), vu(fu([9]), function(n, e, t, r) {
var o = t.cyclic() ? cu : su;
return i(n, 0, t, o)
}), vu(fu([27]), function(e, t, n, r) {
return n.onEscape().bind(function(n) {
return n(e, t)
})
}), vu(lu([gu, fu([13])]), function(e, t, n, r) {
return n.onEnter().bind(function(n) {
return n(e, t)
})
})]),
r = E({}),
o = E({});
return Au(e, $r.init, t, r, o, B.some(function(e, t) {
var n, r, o, i;
(n = e, r = t, o = nu(n.element(), r.selector()), i = xn(o, function(n) {
return u(r, n)
}), B.from(i[r.firstTabstop()])).each(function(n) {
t.focusManager().set(e, n)
})
}))
},
Mu = Ru(vr("cyclic", E(!1))),
Iu = Ru(vr("cyclic", E(!0))),
Nu = function(n) {
return "input" === be.name(n) && "radio" !== ro.get(n, "type") || "textarea" === be.name(n)
},
Bu = function(n, e, t) {
return Nu(t) && fu([32])(e.event()) ? B.none() : (ae(n, t, Xn()), B.some(!0))
},
Fu = [mr("execute", Bu), mr("useSpace", !1), mr("useEnter", !0), mr("useControlEnter", !1), mr("useDown", !1)],
Vu = function(n, e, t) {
return t.execute()(n, e, n.element())
},
Hu = E({}),
zu = E({}),
ju = Au(Fu, $r.init, function(n, e, t, r) {
var o = t.useSpace() && !Nu(n.element()) ? [32] : [],
i = t.useEnter() ? [13] : [],
u = t.useDown() ? [40] : [],
a = o.concat(i).concat(u);
return [vu(fu(a), Vu)].concat(t.useControlEnter() ? [vu(lu([mu, fu([13])]), Vu)] : [])
}, Hu, zu, B.none()),
Lu = function(n) {
var t = So(B.none());
return Gr({
readState: E({}),
setGridSize: function(n, e) {
t.set(B.some({
numRows: E(n),
numColumns: E(e)
}))
},
getNumRows: function() {
return t.get().map(function(n) {
return n.numRows()
})
},
getNumColumns: function() {
return t.get().map(function(n) {
return n.numColumns()
})
}
})
},
Uu = Object.freeze({
flatgrid: Lu,
init: function(n) {
return n.state()(n)
}
}),
Pu = function(n) {
return "rtl" === _i.get(n, "direction") ? "rtl" : "ltr"
},
_u = function(e, t) {
return function(n) {
return "rtl" === Pu(n) ? t : e
}
},
Wu = function(i) {
return function(n, e, t, r) {
var o = i(n.element());
return Yu(o, n, e, t, r)
}
},
$u = function(n, e) {
var t = _u(n, e);
return Wu(t)
},
Gu = function(n, e) {
var t = _u(e, n);
return Wu(t)
},
qu = function(o) {
return function(n, e, t, r) {
return Yu(o, n, e, t, r)
}
},
Yu = function(e, t, n, r, o) {
return r.focusManager().get(t).bind(function(n) {
return e(t.element(), n, r, o)
}).map(function(n) {
return r.focusManager().set(t, n), !0
})
},
Xu = qu,
Ku = qu,
Ju = qu,
Qu = function(n) {
var e, t = n.dom();
return !((e = t).offsetWidth <= 0 && e.offsetHeight <= 0)
},
Zu = De(["index", "candidates"], []),
na = function(n, e, t) {
return ea(n, e, t, Qu)
},
ea = function(n, e, t, r) {
var o, i = l(ze, e),
u = nu(n, t),
a = xn(u, Qu);
return Cn(o = a, i).map(function(n) {
return Zu({
index: n,
candidates: o
})
})
},
ta = function(n, e) {
return Cn(n, function(n) {
return ze(e, n)
})
},
ra = function(t, n, r, e) {
return e(Math.floor(n / r), n % r).bind(function(n) {
var e = n.row() * r + n.column();
return 0 <= e && e < t.length ? B.some(t[e]) : B.none()
})
},
oa = function(o, n, i, u, a) {
return ra(o, n, u, function(n, e) {
var t = n === i - 1 ? o.length - n * u : u,
r = pu(e, a, 0, t - 1);
return B.some({
row: E(n),
column: E(r)
})
})
},
ia = function(i, n, u, a, c) {
return ra(i, n, a, function(n, e) {
var t = pu(n, c, 0, u - 1),
r = t === u - 1 ? i.length - t * a : a,
o = hu(e, 0, r - 1);
return B.some({
row: E(t),
column: E(o)
})
})
},
ua = [ur("selector"), mr("execute", Bu), ci("onEscape"), mr("captureTab", !1), mi()],
aa = function(o) {
return function(n, e, t, r) {
return na(n, e, t.selector()).bind(function(n) {
return o(n.candidates(), n.index(), r.getNumRows().getOr(t.initSize().numRows()), r.getNumColumns().getOr(t.initSize().numColumns()))
})
}
},
ca = function(n, e, t, r) {
return t.captureTab() ? B.some(!0) : B.none()
},
sa = aa(function(n, e, t, r) {
return oa(n, e, t, r, -1)
}),
fa = aa(function(n, e, t, r) {
return oa(n, e, t, r, 1)
}),
la = aa(function(n, e, t, r) {
return ia(n, e, t, r, -1)
}),
da = aa(function(n, e, t, r) {
return ia(n, e, t, r, 1)
}),
ma = E([vu(fu([37]), $u(sa, fa)), vu(fu([39]), Gu(sa, fa)), vu(fu([38]), Xu(la)), vu(fu([40]), Ku(da)), vu(lu([du, fu([9])]), ca), vu(lu([gu, fu([9])]), ca), vu(fu([27]), function(n, e, t, r) {
return t.onEscape()(n, e)
}), vu(fu([32].concat([13])), function(e, t, r, n) {
return (o = e, i = r, i.focusManager().get(o).bind(function(n) {
return iu(n, i.selector())
})).bind(function(n) {
return r.execute()(e, t, n)
});
var o, i
})]),
ga = E({}),
va = Au(ua, Lu, ma, ga, {}, B.some(function(e, t, n) {
ou(e.element(), t.selector()).each(function(n) {
t.focusManager().set(e, n)
})
})),
pa = function(n, e, t, o) {
return na(n, t, e).bind(function(n) {
var e = n.index(),
t = n.candidates(),
r = pu(e, o, 0, t.length - 1);
return B.from(t[r])
})
},
ha = [ur("selector"), mr("getInitial", B.none), mr("execute", Bu), mr("executeOnMove", !1), mr("allowVertical", !0)],
ba = function(e, t, r) {
return (n = e, o = r, o.focusManager().get(n).bind(function(n) {
return iu(n, o.selector())
})).bind(function(n) {
return r.execute()(e, t, n)
});
var n, o
},
ya = function(n, e, t) {
return pa(n, t.selector(), e, -1)
},
wa = function(n, e, t) {
return pa(n, t.selector(), e, 1)
},
xa = function(r) {
return function(n, e, t) {
return r(n, e, t).bind(function() {
return t.executeOnMove() ? ba(n, e, t) : B.some(!0)
})
}
},
Ta = E({}),
Sa = E({}),
Oa = Au(ha, $r.init, function(n, e, t, r) {
var o = [37].concat(t.allowVertical() ? [38] : []),
i = [39].concat(t.allowVertical() ? [40] : []);
return [vu(fu(o), xa($u(ya, wa))), vu(fu(i), xa(Gu(ya, wa))), vu(fu([13]), ba), vu(fu([32]), ba)]
}, Ta, Sa, B.some(function(e, t) {
t.getInitial()(e).or(ou(e.element(), t.selector())).each(function(n) {
t.focusManager().set(e, n)
})
})),
Ca = De(["rowIndex", "columnIndex", "cell"], []),
ka = function(n, e, t) {
return B.from(n[e]).bind(function(n) {
return B.from(n[t]).map(function(n) {
return Ca({
rowIndex: e,
columnIndex: t,
cell: n
})
})
})
},
Ea = function(n, e, t, r) {
var o = n[e].length,
i = pu(t, r, 0, o - 1);
return ka(n, e, i)
},
Da = function(n, e, t, r) {
var o = pu(t, r, 0, n.length - 1),
i = n[o].length,
u = hu(e, 0, i - 1);
return ka(n, o, u)
},
Aa = function(n, e, t, r) {
var o = n[e].length,
i = hu(t + r, 0, o - 1);
return ka(n, e, i)
},
Ra = function(n, e, t, r) {
var o = hu(t + r, 0, n.length - 1),
i = n[o].length,
u = hu(e, 0, i - 1);
return ka(n, o, u)
},
Ma = [sr("selectors", [ur("row"), ur("cell")]), mr("cycles", !0), mr("previousSelector", B.none), mr("execute", Bu)],
Ia = function(n, e) {
return function(t, r, i) {
var u = i.cycles() ? n : e;
return iu(r, i.selectors().row()).bind(function(n) {
var e = nu(n, i.selectors().cell());
return ta(e, r).bind(function(r) {
var o = nu(t, i.selectors().row());
return ta(o, n).bind(function(n) {
var e, t = (e = i, yn(o, function(n) {
return nu(n, e.selectors().cell())
}));
return u(t, n, r).map(function(n) {
return n.cell()
})
})
})
})
}
},
Na = Ia(function(n, e, t) {
return Ea(n, e, t, -1)
}, function(n, e, t) {
return Aa(n, e, t, -1)
}),
Ba = Ia(function(n, e, t) {
return Ea(n, e, t, 1)
}, function(n, e, t) {
return Aa(n, e, t, 1)
}),
Fa = Ia(function(n, e, t) {
return Da(n, t, e, -1)
}, function(n, e, t) {
return Ra(n, t, e, -1)
}),
Va = Ia(function(n, e, t) {
return Da(n, t, e, 1)
}, function(n, e, t) {
return Ra(n, t, e, 1)
}),
Ha = E([vu(fu([37]), $u(Na, Ba)), vu(fu([39]), Gu(Na, Ba)), vu(fu([38]), Xu(Fa)), vu(fu([40]), Ku(Va)), vu(fu([32].concat([13])), function(e, t, r) {
return Fo(e.element()).bind(function(n) {
return r.execute()(e, t, n)
})
})]),
za = E({}),
ja = E({}),
La = Au(Ma, $r.init, Ha, za, ja, B.some(function(e, t) {
t.previousSelector()(e).orThunk(function() {
var n = t.selectors();
return ou(e.element(), n.cell())
}).each(function(n) {
t.focusManager().set(e, n)
})
})),
Ua = [ur("selector"), mr("execute", Bu), mr("moveOnTab", !1)],
Pa = function(e, t, r) {
return r.focusManager().get(e).bind(function(n) {
return r.execute()(e, t, n)
})
},
_a = function(n, e, t) {
return pa(n, t.selector(), e, -1)
},
Wa = function(n, e, t) {
return pa(n, t.selector(), e, 1)
},
$a = E([vu(fu([38]), Ju(_a)), vu(fu([40]), Ju(Wa)), vu(lu([du, fu([9])]), function(n, e, t) {
return t.moveOnTab() ? Ju(_a)(n, e, t) : B.none()
}), vu(lu([gu, fu([9])]), function(n, e, t) {
return t.moveOnTab() ? Ju(Wa)(n, e, t) : B.none()
}), vu(fu([13]), Pa), vu(fu([32]), Pa)]),
Ga = E({}),
qa = E({}),
Ya = Au(Ua, $r.init, $a, Ga, qa, B.some(function(e, t) {
ou(e.element(), t.selector()).each(function(n) {
t.focusManager().set(e, n)
})
})),
Xa = [ci("onSpace"), ci("onEnter"), ci("onShiftEnter"), ci("onLeft"), ci("onRight"), ci("onTab"), ci("onShiftTab"), ci("onUp"), ci("onDown"), ci("onEscape"), fr("focusIn")],
Ka = Au(Xa, $r.init, function(n, e, t) {
return [vu(fu([32]), t.onSpace()), vu(lu([gu, fu([13])]), t.onEnter()), vu(lu([du, fu([13])]), t.onShiftEnter()), vu(lu([du, fu([9])]), t.onShiftTab()), vu(lu([gu, fu([9])]), t.onTab()), vu(fu([38]), t.onUp()), vu(fu([40]), t.onDown()), vu(fu([37]), t.onLeft()), vu(fu([39]), t.onRight()), vu(fu([32]), t.onSpace()), vu(fu([27]), t.onEscape())]
}, function() {
return {}
}, function() {
return {}
}, B.some(function(e, t) {
return t.focusIn().bind(function(n) {
return n(e, t)
})
})),
Ja = Mu.schema(),
Qa = Iu.schema(),
Za = Oa.schema(),
nc = va.schema(),
ec = La.schema(),
tc = ju.schema(),
rc = Ya.schema(),
oc = Ka.schema(),
ic = Object.freeze({
acyclic: Ja,
cyclic: Qa,
flow: Za,
flatgrid: nc,
matrix: ec,
execution: tc,
menu: rc,
special: oc
}),
uc = (Gi = nr("Creating behaviour: " + ($i = {
branchKey: "mode",
branches: ic,
name: "keying",
active: {
events: function(n, e) {
return n.handler().toEvents(n, e)
}
},
apis: {
focusIn: function(n) {
n.getSystem().triggerFocus(n.element(), n.element())
},
setGridSize: function(n, e, t, r, o) {
Rt(t, "setGridSize") ? t.setGridSize(r, o) : console.error("Layout does not support setGridSize")
}
},
state: Uu
}).name, Kr, $i), Vr(rr(Gi.branchKey, Gi.branches), Gi.name, Gi.active, Gi.apis, Gi.extra, Gi.state)),
ac = function(r, n) {
return e = r, t = {}, o = yn(n, function(n) {
return e = n.name(), t = "Cannot configure " + n.name() + " for " + r, qt(e, e, dt(), Ut(function(n) {
return at.error("The field: " + e + " is forbidden. " + t)
}));
var e, t
}).concat([vr("dump", h)]), qt(e, e, ft(t), _t(o));
var e, t, o
},
cc = function(n) {
return n.dump()
},
sc = "placeholder",
fc = ct([{
single: ["required", "valueThunk"]
}, {
multiple: ["required", "valueThunks"]
}]),
lc = function(n, e, t, r) {
return t.uiType === sc ? (i = t, u = r, (o = n).exists(function(n) {
return n !== i.owner
}) ? fc.single(!0, E(i)) : kt(u, i.name).fold(function() {
throw new Error("Unknown placeholder component: " + i.name + "\nKnown: [" + F(u) + "]\nNamespace: " + o.getOr("none") + "\nSpec: " + Bt(i, null, 2))
}, function(n) {
return n.replace()
})) : fc.single(!1, E(t));
var o, i, u
},
dc = function(i, u, a, c) {
return lc(i, 0, a, c).fold(function(n, e) {
var t = e(u, a.config, a.validated),
r = kt(t, "components").getOr([]),
o = An(r, function(n) {
return dc(i, u, n, c)
});
return [C(t, {
components: o
})]
}, function(n, e) {
return e(u, a.config, a.validated)
})
},
mc = function(e, t, n, r) {
var o, i, u, a = H(r, function(n, e) {
return r = n, o = !1, {
name: E(t = e),
required: function() {
return r.fold(function(n, e) {
return n
}, function(n, e) {
return n
})
},
used: function() {
return o
},
replace: function() {
if (!0 === o) throw new Error("Trying to use the same placeholder more than once: " + t);
return o = !0, r
}
};
var t, r, o
}),
c = (o = e, i = t, u = a, An(n, function(n) {
return dc(o, i, n, u)
}));
return V(a, function(n) {
if (!1 === n.used() && n.required()) throw new Error("Placeholder: " + n.name() + " was not found in components list\nNamespace: " + e.getOr("none") + "\nComponents: " + Bt(t.components(), null, 2))
}), c
},
gc = fc.single,
vc = fc.multiple,
pc = E(sc),
hc = 0,
bc = function(n) {
var e = (new Date).getTime();
return n + "_" + Math.floor(1e9 * Math.random()) + ++hc + String(e)
},
yc = ct([{
required: ["data"]
}, {
external: ["data"]
}, {
optional: ["data"]
}, {
group: ["data"]
}]),
wc = mr("factory", {
sketch: h
}),
xc = mr("schema", []),
Tc = ur("name"),
Sc = qt("pname", "pname", mt(function(n) {
return ""
}), or()),
Oc = mr("defaults", E({})),
Cc = mr("overrides", E({})),
kc = _t([wc, xc, Tc, Sc, Oc, Cc]),
Ec = _t([wc, xc, Tc, Oc, Cc]),
Dc = _t([wc, xc, Tc, Sc, Oc, Cc]),
Ac = _t([wc, xc, Tc, ur("unit"), Sc, Oc, Cc]),
Rc = function(n) {
var e = function(n) {
return n.name()
};
return n.fold(e, e, e, e)
},
Mc = function(t, r) {
return function(n) {
var e = er("Converting part type", r, n);
return t(e)
}
},
Ic = Mc(yc.required, kc),
Nc = (Mc(yc.external, Ec), Mc(yc.optional, Dc)),
Bc = Mc(yc.group, Ac),
Fc = E("entirety"),
Vc = function(n, e, t, r) {
var o = t;
return C(e.defaults()(n, t, r), t, {
uid: n.partUids()[e.name()]
}, e.overrides()(n, t, r), {
"debug.sketcher": Et("part-" + e.name(), o)
})
},
Hc = function(o, n) {
var i = {};
return wn(n, function(n) {
var e;
(e = n, e.fold(B.some, B.none, B.some, B.some)).each(function(t) {
var r = zc(o, t.pname());
i[t.name()] = function(n) {
var e = nr("Part: " + t.name() + " in " + o, _t(t.schema()), n);
return C(r, {
config: n,
validated: e
})
}
})
}), i
},
zc = function(n, e) {
return {
uiType: pc(),
owner: n,
name: e
}
},
jc = function(n, e, t) {
return r = e, i = {}, o = {}, wn(t, function(n) {
n.fold(function(r) {
i[r.pname()] = gc(!0, function(n, e, t) {
return r.factory().sketch(Vc(n, r, e, t))
})
}, function(n) {
var e = r.parts()[n.name()]();
o[n.name()] = E(Vc(r, n, e[Fc()]()))
}, function(r) {
i[r.pname()] = gc(!1, function(n, e, t) {
return r.factory().sketch(Vc(n, r, e, t))
})
}, function(o) {
i[o.pname()] = vc(!0, function(e, n, t) {
var r = e[o.name()]();
return yn(r, function(n) {
return o.factory().sketch(C(o.defaults()(e, n), n, o.overrides()(e, n)))
})
})
})
}), {
internals: E(i),
externals: E(o)
};
var r, i, o
},
Lc = function(n, e, t) {
return mc(B.some(n), e, e.components(), t)
},
Uc = function(n, e, t) {
var r = e.partUids()[t];
return n.getSystem().getByUid(r).toOption()
},
Pc = function(n, e, t) {
return Uc(n, e, t).getOrDie("Could not find part: " + t)
},
_c = function(e, n) {
var t = yn(n, Rc);
return Dt(yn(t, function(n) {
return {
key: n,
value: e + "-" + n
}
}))
},
Wc = function(e) {
return qt("partUids", "partUids", gt(function(n) {
return _c(n.uid, e)
}), or())
},
$c = bc("alloy-premade"),
Gc = bc("api"),
qc = function(n) {
return Et($c, n)
},
Yc = function(o) {
return n = function(n) {
for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];
var r = n.config(Gc);
return o.apply(undefined, [r].concat([n].concat(e)))
}, e = o.toString(), t = e.indexOf(")") + 1, r = e.indexOf("("), i = e.substring(r + 1, t - 1).split(/,\s*/), n.toFunctionAnnotation = function() {
return {
name: "OVERRIDE",
parameters: Ar(i.slice(1))
}
}, n;
var n, e, t, r, i
},
Xc = E(Gc),
Kc = E("alloy-id-"),
Jc = E("data-alloy-id"),
Qc = Kc(),
Zc = Jc(),
ns = function(n) {
var e = be.isElement(n) ? ro.get(n, Zc) : null;
return B.from(e)
},
es = function(n) {
return bc(n)
},
ts = function(n, e, t, r, o) {
var i, u, a = (u = o, (0 < (i = r).length ? [sr("parts", i)] : []).concat([ur("uid"), mr("dom", {}), mr("components", []), di("originalSpec"), mr("debug.sketcher", {})]).concat(u));
return er(n + " [SpecSchema]", Pt(a.concat(e)), t)
},
rs = function(n, e, t, r, o) {
var i = os(o),
u = An(t, function(n) {
return n.fold(B.none, B.some, B.none, B.none).map(function(n) {
return sr(n.name(), n.schema().concat([di(Fc())]))
}).toArray()
}),
a = Wc(t),
c = ts(n, e, i, u, [a]),
s = jc(0, c, t),
f = Lc(n, c, s.internals());
return C(r(c, f, i, s.externals()), {
"debug.sketcher": Et(n, o)
})
},
os = function(n) {
return C({
uid: es("uid")
}, n)
},
is = Pt([ur("name"), ur("factory"), ur("configFields"), mr("apis", {}), mr("extraApis", {})]),
us = Pt([ur("name"), ur("factory"), ur("configFields"), ur("partFields"), mr("apis", {}), mr("extraApis", {})]),
as = function(n) {
var a = nr("Sketcher for " + n.name, is, n),
e = H(a.apis, Yc),
t = H(a.extraApis, function(n, e) {
return Rr(n, e)
});
return C({
name: E(a.name),
partFields: E([]),
configFields: E(a.configFields),
sketch: function(n) {
return e = a.name, t = a.configFields, r = a.factory, i = os(o = n), u = ts(e, t, i, [], []), C(r(u, i), {
"debug.sketcher": Et(e, o)
});
var e, t, r, o, i, u
}
}, e, t)
},
cs = function(n) {
var e = nr("Sketcher for " + n.name, us, n),
t = Hc(e.name, e.partFields),
r = H(e.apis, Yc),
o = H(e.extraApis, function(n, e) {
return Rr(n, e)
});
return C({
name: E(e.name),
partFields: E(e.partFields),
configFields: E(e.configFields),
sketch: function(n) {
return rs(e.name, e.configFields, e.partFields, e.factory, n)
},
parts: E(t)
}, r, o)
},
ss = as({
name: "Button",
factory: function(n) {
var e, t, r, o = (e = n.action(), t = function(n, e) {
e.stop(), ue(n)
}, r = Wn.detect().deviceType.isTouch() ? [wr(Jn(), t)] : [wr(K(), t), wr(_(), function(n, e) {
e.cut()
})], br(Dn([e.map(function(t) {
return wr(Xn(), function(n, e) {
t(n), e.stop()
})
}).toArray(), r]))),
i = kt(n.dom(), "attributes").bind(Ot("type")),
u = kt(n.dom(), "tag");
return {
uid: n.uid(),
dom: n.dom(),
components: n.components(),
events: o,
behaviours: C(qr([Vi.config({}), uc.config({
mode: "execution",
useSpace: !0,
useEnter: !0
})]), cc(n.buttonBehaviours())),
domModification: {
attributes: C(i.fold(function() {
return u.is("button") ? {
type: "button"
} : {}
}, function(n) {
return {}
}), {
role: n.role().getOr("button")
})
},
eventOrder: n.eventOrder()
}
},
configFields: [mr("uid", undefined), ur("dom"), mr("components", []), ac("buttonBehaviours", [Vi, uc]), fr("action"), fr("role"), mr("eventOrder", {})]
}),
fs = Object.freeze({
events: function(n) {
return br([yr(Q(), E(!0))])
},
exhibit: function(n, e) {
return Nr({
styles: {
"-webkit-user-select": "none",
"user-select": "none",
"-ms-user-select": "none",
"-moz-user-select": "-moz-none"
},
attributes: {
unselectable: "on"
}
})
}
}),
ls = Xr({
fields: [],
name: "unselecting",
active: fs
}),
ds = function(n) {
var e, t, r, o = fe.fromHtml(n),
i = $e.children(o),
u = (t = (e = o).dom().attributes !== undefined ? e.dom().attributes : [], Sn(t, function(n, e) {
return "class" === e.name ? n : C(n, Et(e.name, e.value))
}, {})),
a = (r = o, Array.prototype.slice.call(r.dom().classList, 0)),
c = 0 === i.length ? {} : {
innerHtml: Po(o)
};
return C({
tag: be.name(o),
classes: a,
attributes: u
}, c)
},
ms = function(n) {
var e, o, t = (e = n, o = {
prefix: Mi.prefix()
}, e.replace(/\$\{([^{}]*)\}/g, function(n, e) {
var t, r = o[e];
return "string" == (t = typeof r) || "number" === t ? r.toString() : n
}));
return ds(t)
},
gs = function(n) {
return {
dom: ms(n)
}
},
vs = function(n) {
return qr([ki.config({
toggleClass: Mi.resolve("toolbar-button-selected"),
toggleOnExecute: !1,
aria: {
mode: "pressed"
}
}), Ei(n, function(n, e) {
(e ? ki.on : ki.off)(n)
})])
},
ps = function(n, e, t) {
return ss.sketch({
dom: ms(''),
action: e,
buttonBehaviours: C(qr([ls.config({})]), t)
})
},
hs = {
forToolbar: ps,
forToolbarCommand: function(n, e) {
return ps(e, function() {
n.execCommand(e)
}, {})
},
forToolbarStateAction: function(n, e, t, r) {
var o = vs(t);
return ps(e, r, o)
},
forToolbarStateCommand: function(n, e) {
var t = vs(e);
return ps(e, function() {
n.execCommand(e)
}, t)
}
},
bs = function(t, r) {
return {
left: E(t),
top: E(r),
translate: function(n, e) {
return bs(t + n, r + e)
}
}
},
ys = bs,
ws = function(n, e, t) {
return Math.max(e, Math.min(t, n))
},
xs = function(n, e, t, r, o, i, u) {
var a = t - e;
if (r < n.left) return e - 1;
if (r > n.right) return t + 1;
var c, s, f, l, d = Math.min(n.right, Math.max(r, n.left)) - n.left,
m = ws(d / n.width * a + e, e - 1, t + 1),
g = Math.round(m);
return i && e <= m && m <= t ? (c = m, s = e, f = t, l = o, u.fold(function() {
var n = c - s,
e = Math.round(n / l) * l;
return ws(s + e, s - 1, f + 1)
}, function(n) {
var e = (c - n) % l,
t = Math.round(e / l),
r = Math.floor((c - n) / l),
o = Math.floor((f - n) / l),
i = n + Math.min(o, r + t) * l;
return Math.max(n, i)
})) : g
},
Ts = "slider.change.value",
Ss = Wn.detect().deviceType.isTouch(),
Os = function(n) {
return function(n) {
var e = n.event().raw();
if (Ss) {
var t = e;
return t.touches !== undefined && 1 === t.touches.length ? B.some(t.touches[0]).map(function(n) {
return ys(n.clientX, n.clientY)
}) : B.none()
}
var r = e;
return r.clientX !== undefined ? B.some(r).map(function(n) {
return ys(n.clientX, n.clientY)
}) : B.none()
}(n).map(function(n) {
return n.left()
})
},
Cs = function(n, e) {
ie(n, Ts, {
value: e
})
},
ks = function(i, u, a, n) {
return Os(n).map(function(n) {
var e, t, r, o;
return e = i, r = n, o = xs(a, (t = u).min(), t.max(), r, t.stepSize(), t.snapToGrid(), t.snapStart()), Cs(e, o), n
})
},
Es = function(n, e) {
var t, r, o, i, u = (t = e.value().get(), r = e.min(), o = e.max(), i = e.stepSize(), t < r ? t : o < t ? o : t === r ? r - 1 : Math.max(r, t - i));
Cs(n, u)
},
Ds = function(n, e) {
var t, r, o, i, u = (t = e.value().get(), r = e.min(), o = e.max(), i = e.stepSize(), o < t ? t : t < r ? r : t === o ? o + 1 : Math.min(o, t + i));
Cs(n, u)
},
As = Wn.detect().deviceType.isTouch(),
Rs = function(n, r) {
return Nc({
name: n + "-edge",
overrides: function(n) {
var e = br([xr(L(), r, [n])]),
t = br([xr(_(), r, [n]), xr(W(), function(n, e) {
e.mouseIsDown().get() && r(n, e)
}, [n])]);
return {
events: As ? e : t
}
}
})
},
Ms = [Rs("left", function(n, e) {
Cs(n, e.min() - 1)
}), Rs("right", function(n, e) {
Cs(n, e.max() + 1)
}), Ic({
name: "thumb",
defaults: E({
dom: {
styles: {
position: "absolute"
}
}
}),
overrides: function(n) {
return {
events: br([Sr(L(), n, "spectrum"), Sr(U(), n, "spectrum"), Sr(P(), n, "spectrum")])
}
}
}), Ic({
schema: [vr("mouseIsDown", function() {
return So(!1)
})],
name: "spectrum",
overrides: function(r) {
var t = function(n, e) {
var t = n.element().dom().getBoundingClientRect();
ks(n, r, t, e)
},
n = br([wr(L(), t), wr(U(), t)]),
e = br([wr(_(), t), wr(W(), function(n, e) {
r.mouseIsDown().get() && t(n, e)
})]);
return {
behaviours: qr(As ? [] : [uc.config({
mode: "special",
onLeft: function(n) {
return Es(n, r), B.some(!0)
},
onRight: function(n) {
return Ds(n, r), B.some(!0)
}
}), Vi.config({})]),
events: As ? n : e
}
}
})],
Is = function(n, e, t) {
e.store().manager().onLoad(n, e, t)
},
Ns = function(n, e, t) {
e.store().manager().onUnload(n, e, t)
},
Bs = Object.freeze({
onLoad: Is,
onUnload: Ns,
setValue: function(n, e, t, r) {
e.store().manager().setValue(n, e, t, r)
},
getValue: function(n, e, t) {
return e.store().manager().getValue(n, e, t)
}
}),
Fs = Object.freeze({
events: function(t, r) {
var n = t.resetOnDom() ? [Cr(function(n, e) {
Is(n, t, r)
}), kr(function(n, e) {
Ns(n, t, r)
})] : [Fr(t, r, Is)];
return br(n)
}
}),
Vs = function() {
var n = So(null);
return Gr({
set: n.set,
get: n.get,
isNotSet: function() {
return null === n.get()
},
clear: function() {
n.set(null)
},
readState: function() {
return {
mode: "memory",
value: n.get()
}
}
})
},
Hs = function() {
var n = So({});
return Gr({
readState: function() {
return {
mode: "dataset",
dataset: n.get()
}
},
set: n.set,
get: n.get
})
},
zs = Object.freeze({
memory: Vs,
dataset: Hs,
manual: function() {
return Gr({
readState: function() {}
})
},
init: function(n) {
return n.store().manager().state(n)
}
}),
js = function(n, e, t, r) {
e.store().getDataKey(), t.set({}), e.store().setData()(n, r), e.onSetValue()(n, r)
},
Ls = [fr("initialValue"), ur("getFallbackEntry"), ur("getDataKey"), ur("setData"), li("manager", {
setValue: js,
getValue: function(n, e, t) {
var r = e.store().getDataKey()(n),
o = t.get();
return kt(o, r).fold(function() {
return e.store().getFallbackEntry()(r)
}, function(n) {
return n
})
},
onLoad: function(e, t, r) {
t.store().initialValue().each(function(n) {
js(e, t, r, n)
})
},
onUnload: function(n, e, t) {
t.set({})
},
state: Hs
})],
Us = [ur("getValue"), mr("setValue", k), fr("initialValue"), li("manager", {
setValue: function(n, e, t, r) {
e.store().setValue()(n, r), e.onSetValue()(n, r)
},
getValue: function(n, e, t) {
return e.store().getValue()(n)
},
onLoad: function(e, t, n) {
t.store().initialValue().each(function(n) {
t.store().setValue()(e, n)
})
},
onUnload: k,
state: $r.init
})],
Ps = [fr("initialValue"), li("manager", {
setValue: function(n, e, t, r) {
t.set(r), e.onSetValue()(n, r)
},
getValue: function(n, e, t) {
return t.get()
},
onLoad: function(n, e, t) {
e.store().initialValue().each(function(n) {
t.isNotSet() && t.set(n)
})
},
onUnload: function(n, e, t) {
t.clear()
},
state: Vs
})],
_s = [gr("store", {
mode: "memory"
}, rr("mode", {
memory: Ps,
manual: Us,
dataset: Ls
})), ai("onSetValue"), mr("resetOnDom", !1)],
Ws = Xr({
fields: _s,
name: "representing",
active: Fs,
apis: Bs,
extra: {
setValueFrom: function(n, e) {
var t = Ws.getValue(e);
Ws.setValue(n, t)
}
},
state: zs
}),
$s = Wn.detect().deviceType.isTouch(),
Gs = [ur("min"), ur("max"), mr("stepSize", 1), mr("onChange", k), mr("onInit", k), mr("onDragStart", k), mr("onDragEnd", k), mr("snapToGrid", !1), fr("snapStart"), ur("getInitialValue"), ac("sliderBehaviours", [uc, Ws]), vr("value", function(n) {
return So(n.min)
})].concat($s ? [] : [vr("mouseIsDown", function() {
return So(!1)
})]),
qs = Wi("width", function(n) {
return n.dom().offsetWidth
}),
Ys = function(n, e) {
qs.set(n, e)
},
Xs = function(n) {
return qs.get(n)
},
Ks = Wn.detect().deviceType.isTouch(),
Js = cs({
name: "Slider",
configFields: Gs,
partFields: Ms,
factory: function(c, n, e, t) {
var s = c.max() - c.min(),
f = function(n) {
var e = n.element().dom().getBoundingClientRect();
return (e.left + e.right) / 2
},
o = function(n) {
return Pc(n, c, "thumb")
},
i = function(n) {
var e, t, r, o, i = Pc(n, c, "spectrum").element().dom().getBoundingClientRect(),
u = n.element().dom().getBoundingClientRect(),
a = (e = n, t = i, (o = (r = c).value().get()) < r.min() ? Uc(e, r, "left-edge").fold(function() {
return 0
}, function(n) {
return f(n) - t.left
}) : o > r.max() ? Uc(e, r, "right-edge").fold(function() {
return t.width
}, function(n) {
return f(n) - t.left
}) : (r.value().get() - r.min()) / s * t.width);
return i.left - u.left + a
},
u = function(n) {
var e = i(n),
t = o(n),
r = Xs(t.element()) / 2;
_i.set(t.element(), "left", e - r + "px")
},
r = function(n, e) {
var t = c.value().get(),
r = o(n);
return t !== e || _i.getRaw(r.element(), "left").isNone() ? (c.value().set(e), u(n), c.onChange()(n, r, e), B.some(!0)) : B.none()
},
a = Ks ? [wr(L(), function(n, e) {
c.onDragStart()(n, o(n))
}), wr(P(), function(n, e) {
c.onDragEnd()(n, o(n))
})] : [wr(_(), function(n, e) {
e.stop(), c.onDragStart()(n, o(n)), c.mouseIsDown().set(!0)
}), wr($(), function(n, e) {
c.onDragEnd()(n, o(n)), c.mouseIsDown().set(!1)
})];
return {
uid: c.uid(),
dom: c.dom(),
components: n,
behaviours: C(qr(Dn([Ks ? [] : [uc.config({
mode: "special",
focusIn: function(n) {
return Uc(n, c, "spectrum").map(uc.focusIn).map(E(!0))
}
})],
[Ws.config({
store: {
mode: "manual",
getValue: function(n) {
return c.value().get()
}
}
})]
])), cc(c.sliderBehaviours())),
events: br([wr(Ts, function(n, e) {
r(n, e.event().value())
}), Cr(function(n, e) {
c.value().set(c.getInitialValue()());
var t = o(n);
u(n), c.onInit()(n, t, c.value().get())
})].concat(a)),
apis: {
resetToMin: function(n) {
r(n, c.min())
},
resetToMax: function(n) {
r(n, c.max())
},
refresh: u
},
domModification: {
styles: {
position: "relative"
}
}
}
},
apis: {
resetToMin: function(n, e) {
n.resetToMin(e)
},
resetToMax: function(n, e) {
n.resetToMax(e)
},
refresh: function(n, e) {
n.refresh(e)
}
}
}),
Qs = function(e, t, r) {
return hs.forToolbar(t, function() {
var n = r();
e.setContextToolbar([{
label: t + " group",
items: n
}])
}, {})
},
Zs = function(n) {
return [(o = n, i = function(n) {
return n < 0 ? "black" : 360 < n ? "white" : "hsl(" + n + ", 100%, 50%)"
}, Js.sketch({
dom: ms(''),
components: [Js.parts()["left-edge"](gs('')), Js.parts().spectrum({
dom: ms(''),
components: [gs('')],
behaviours: qr([ki.config({
toggleClass: Mi.resolve("thumb-active")
})])
}), Js.parts()["right-edge"](gs('')), Js.parts().thumb({
dom: ms(''),
behaviours: qr([ki.config({
toggleClass: Mi.resolve("thumb-active")
})])
})],
onChange: function(n, e, t) {
var r = i(t);
_i.set(e.element(), "background-color", r), o.onChange(n, e, r)
},
onDragStart: function(n, e) {
ki.on(e)
},
onDragEnd: function(n, e) {
ki.off(e)
},
onInit: function(n, e, t) {
var r = i(t);
_i.set(e.element(), "background-color", r)
},
stepSize: 10,
min: 0,
max: 360,
getInitialValue: o.getInitialValue,
sliderBehaviours: qr([Di(Js.refresh)])
}))];
var o, i
},
nf = function(n, r) {
var e = {
onChange: function(n, e, t) {
r.undoManager.transact(function() {
r.formatter.apply("forecolor", {
value: t
}), r.nodeChanged()
})
},
getInitialValue: function() {
return -1
}
};
return Qs(n, "color", function() {
return Zs(e)
})
},
ef = Pt([ur("getInitialValue"), ur("onChange"), ur("category"), ur("sizes")]),
tf = function(n) {
var o = nr("SizeSlider", ef, n);
return Js.sketch({
dom: {
tag: "div",
classes: [Mi.resolve("slider-" + o.category + "-size-container"), Mi.resolve("slider"), Mi.resolve("slider-size-container")]
},
onChange: function(n, e, t) {
var r;
0 <= (r = t) && r < o.sizes.length && o.onChange(t)
},
onDragStart: function(n, e) {
ki.on(e)
},
onDragEnd: function(n, e) {
ki.off(e)
},
min: 0,
max: o.sizes.length - 1,
stepSize: 1,
getInitialValue: o.getInitialValue,
snapToGrid: !0,
sliderBehaviours: qr([Di(Js.refresh)]),
components: [Js.parts().spectrum({
dom: ms(''),
components: [gs('')]
}), Js.parts().thumb({
dom: ms(''),
behaviours: qr([ki.config({
toggleClass: Mi.resolve("thumb-active")
})])
})]
})
},
rf = ["9px", "10px", "11px", "12px", "14px", "16px", "18px", "20px", "24px", "32px", "36px"],
of = function(n) {
var e, t, r = n.selection.getStart(),
o = fe.fromDom(r),
i = fe.fromDom(n.getBody()),
u = (e = function(n) {
return ze(i, n)
}, t = o, (be.isElement(t) ? B.some(t) : $e.parent(t)).map(function(n) {
return Do.closest(n, function(n) {
return _i.getRaw(n, "font-size").isSome()
}, e).bind(function(n) {
return _i.getRaw(n, "font-size")
}).getOrThunk(function() {
return _i.get(n, "font-size")
})
}).getOr(""));
return On(rf, function(n) {
return u === n
}).getOr("medium")
},
uf = {
candidates: E(rf),
get: function(n) {
var e, t = of(n);
return (e = t, Cn(rf, function(n) {
return n === e
})).getOr(2)
},
apply: function(r, n) {
var e;
(e = n, B.from(rf[e])).each(function(n) {
var e, t;
t = n, of(e = r) !== t && e.execCommand("fontSize", !1, t)
})
}
},
af = uf.candidates(),
cf = function(n) {
return [gs(''), (e = n, tf({
onChange: e.onChange,
sizes: af,
category: "font",
getInitialValue: e.getInitialValue
})), gs('')];
var e
},
sf = function(n) {
var e = n.uid !== undefined && Rt(n, "uid") ? n.uid : es("memento");
return {
get: function(n) {
return n.getSystem().getByUid(e).getOrDie()
},
getOpt: function(n) {
return n.getSystem().getByUid(e).fold(B.none, B.some)
},
asSpec: function() {
return C(n, {
uid: e
})
}
}
};
function ff(n, e) {
return df(document.createElement("canvas"), n, e)
}
function lf(n) {
return n.getContext("2d")
}
function df(n, e, t) {
return n.width = e, n.height = t, n
}
var mf = {
create: ff,
clone: function(n) {
var e;
return lf(e = ff(n.width, n.height)).drawImage(n, 0, 0), e
},
resize: df,
get2dContext: lf,
get3dContext: function(n) {
var e = null;
try {
e = n.getContext("webgl") || n.getContext("experimental-webgl")
} catch (t) {}
return e || (e = null), e
}
},
gf = {
getWidth: function(n) {
return n.naturalWidth || n.width
},
getHeight: function(n) {
return n.naturalHeight || n.height
}
},
vf = window.Promise ? window.Promise : function() {
var n = function(n) {
if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
if ("function" != typeof n) throw new TypeError("not a function");
this._state = null, this._value = null, this._deferreds = [], s(n, r(o, this), r(u, this))
},
e = n.immediateFn || "function" == typeof setImmediate && setImmediate ||
function(n) {
setTimeout(n, 1)
};
function r(n, e) {
return function() {
n.apply(e, arguments)
}
}
var t = Array.isArray ||
function(n) {
return "[object Array]" === Object.prototype.toString.call(n)
};
function i(r) {
var o = this;
null !== this._state ? e(function() {
var n = o._state ? r.onFulfilled : r.onRejected;
if (null !== n) {
var e;
try {
e = n(o._value)
} catch (t) {
return void r.reject(t)
}
r.resolve(e)
} else(o._state ? r.resolve : r.reject)(o._value)
}) : this._deferreds.push(r)
}
function o(n) {
try {
if (n === this) throw new TypeError("A promise cannot be resolved with itself.");
if (n && ("object" == typeof n || "function" == typeof n)) {
var e = n.then;
if ("function" == typeof e) return void s(r(e, n), r(o, this), r(u, this))
}
this._state = !0, this._value = n, a.call(this)
} catch (t) {
u.call(this, t)
}
}
function u(n) {
this._state = !1, this._value = n, a.call(this)
}
function a() {
for (var n = 0, e = this._deferreds.length; n < e; n++) i.call(this, this._deferreds[n]);
this._deferreds = null
}
function c(n, e, t, r) {
this.onFulfilled = "function" == typeof n ? n : null, this.onRejected = "function" == typeof e ? e : null, this.resolve = t, this.reject = r
}
function s(n, e, t) {
var r = !1;
try {
n(function(n) {
r || (r = !0, e(n))
}, function(n) {
r || (r = !0, t(n))
})
} catch (o) {
if (r) return;
r = !0, t(o)
}
}
return n.prototype["catch"] = function(n) {
return this.then(null, n)
}, n.prototype.then = function(t, r) {
var o = this;
return new n(function(n, e) {
i.call(o, new c(t, r, n, e))
})
}, n.all = function() {
var c = Array.prototype.slice.call(1 === arguments.length && t(arguments[0]) ? arguments[0] : arguments);
return new n(function(o, i) {
if (0 === c.length) return o([]);
var u = c.length;
function a(e, n) {
try {
if (n && ("object" == typeof n || "function" == typeof n)) {
var t = n.then;
if ("function" == typeof t) return void t.call(n, function(n) {
a(e, n)
}, i)
}
c[e] = n, 0 == --u && o(c)
} catch (r) {
i(r)
}
}
for (var n = 0; n < c.length; n++) a(n, c[n])
})
}, n.resolve = function(e) {
return e && "object" == typeof e && e.constructor === n ? e : new n(function(n) {
n(e)
})
}, n.reject = function(t) {
return new n(function(n, e) {
e(t)
})
}, n.race = function(o) {
return new n(function(n, e) {
for (var t = 0, r = o.length; t < r; t++) o[t].then(n, e)
})
}, n
}();
function pf() {
return new(Ie.getOrDie("FileReader"))
}
var hf = {
atob: function(n) {
return Ie.getOrDie("atob")(n)
},
requestAnimationFrame: function(n) {
Ie.getOrDie("requestAnimationFrame")(n)
}
};
function bf(a) {
return new vf(function(n, e) {
var t = URL.createObjectURL(a),
r = new Image,
o = function() {
r.removeEventListener("load", i), r.removeEventListener("error", u)
};
function i() {
o(), n(r)
}
function u() {
o(), e("Unable to load data of type " + a.type + ": " + t)
}
r.addEventListener("load", i), r.addEventListener("error", u), r.src = t, r.complete && i()
})
}
function yf(r) {
return new vf(function(n, t) {
var e = new XMLHttpRequest;
e.open("GET", r, !0), e.responseType = "blob", e.onload = function() {
200 == this.status && n(this.response)
}, e.onerror = function() {
var n, e = this;
t(0 === this.status ? ((n = new Error("No access to download image")).code = 18, n.name = "SecurityError", n) : new Error("Error " + e.status + " downloading image"))
}, e.send()
})
}
function wf(n) {
var e = n.split(","),
t = /data:([^;]+)/.exec(e[0]);
if (!t) return B.none();
for (var r, o, i, u = t[1], a = e[1], c = hf.atob(a), s = c.length, f = Math.ceil(s / 1024), l = new Array(f), d = 0; d < f; ++d) {
for (var m = 1024 * d, g = Math.min(m + 1024, s), v = new Array(g - m), p = m, h = 0; p < g; ++h, ++p) v[h] = c[p].charCodeAt(0);
l[d] = (r = v, new(Ie.getOrDie("Uint8Array"))(r))
}
return B.some((o = l, i = {
type: u
}, new(Ie.getOrDie("Blob"))(o, i)))
}
function xf(t) {
return new vf(function(n, e) {
wf(t).fold(function() {
e("uri is not base64: " + t)
}, n)
})
}
function Tf(t) {
return new vf(function(n) {
var e = new pf;
e.onloadend = function() {
n(e.result)
}, e.readAsDataURL(t)
})
}
var Sf, Of, Cf, kf, Ef, Df, Af, Rf, Mf = {
blobToImage: bf,
imageToBlob: function(n) {
var e = n.src;
return 0 === e.indexOf("data:") ? xf(e) : yf(e)
},
blobToArrayBuffer: function(t) {
return new vf(function(n) {
var e = new pf;
e.onloadend = function() {
n(e.result)
}, e.readAsArrayBuffer(t)
})
},
blobToDataUri: Tf,
blobToBase64: function(n) {
return Tf(n).then(function(n) {
return n.split(",")[1]
})
},
dataUriToBlobSync: wf,
canvasToBlob: function(n, t, r) {
return t = t || "image/png", HTMLCanvasElement.prototype.toBlob ? new vf(function(e) {
n.toBlob(function(n) {
e(n)
}, t, r)
}) : xf(n.toDataURL(t, r))
},
canvasToDataURL: function(n, e, t) {
return e = e || "image/png", n.then(function(n) {
return n.toDataURL(e, t)
})
},
blobToCanvas: function(n) {
return bf(n).then(function(n) {
var e, t;
return e = n, URL.revokeObjectURL(e.src), t = mf.create(gf.getWidth(n), gf.getHeight(n)), mf.get2dContext(t).drawImage(n, 0, 0), t
})
},
uriToBlob: function(n) {
return 0 === n.indexOf("blob:") ? yf(n) : 0 === n.indexOf("data:") ? xf(n) : null
}
},
If = function(n) {
return Mf.blobToBase64(n)
},
Nf = function(u) {
var e = sf({
dom: {
tag: "input",
attributes: {
accept: "image/*",
type: "file",
title: ""
},
styles: {
visibility: "hidden",
position: "absolute"
}
},
events: br([Or(K()), wr(X(), function(n, e) {
var t, r, o;
(t = e, r = t.event(), o = r.raw().target.files || r.raw().dataTransfer.files, B.from(o[0])).each(function(n) {
var o, i;
o = u, If(i = n).then(function(r) {
o.undoManager.transact(function() {
var n = o.editorUpload.blobCache,
e = n.create(bc("mceu"), i, r);
n.add(e);
var t = o.dom.createHTML("img", {
src: e.blobUri()
});
o.insertContent(t)
})
})
})
})])
});
return ss.sketch({
dom: ms(''),
components: [e.asSpec()],
action: function(n) {
e.get(n).element().dom().click()
}
})
},
Bf = function(n) {
return n.dom().textContent
},
Ff = function(n, e) {
n.dom().textContent = e
},
Vf = function(n) {
return 0 < n.length
},
Hf = function(n) {
return n === undefined || null === n ? "" : n
},
zf = function(e, t, n) {
return n.text.filter(Vf).fold(function() {
return ro.get(n = e, "href") === Bf(n) ? B.some(t) : B.none();
var n
}, B.some)
},
jf = function(n) {
var e = fe.fromDom(n.selection.getStart());
return iu(e, "a")
},
Lf = {
getInfo: function(n) {
return jf(n).fold(function() {
return {
url: "",
text: n.selection.getContent({
format: "text"
}),
title: "",
target: "",
link: B.none()
}
}, function(n) {
return t = Bf(e = n), r = ro.get(e, "href"), o = ro.get(e, "title"), i = ro.get(e, "target"), {
url: Hf(r),
text: t !== r ? Hf(t) : "",
title: Hf(o),
target: Hf(i),
link: B.some(e)
};
var e, t, r, o, i
})
},
applyInfo: function(o, i) {
i.url.filter(Vf).fold(function() {
var e;
e = o, i.link.bind(h).each(function(n) {
e.execCommand("unlink")
})
}, function(t) {
var n, e, r = (n = i, (e = {}).href = t, n.title.filter(Vf).each(function(n) {
e.title = n
}), n.target.filter(Vf).each(function(n) {
e.target = n
}), e);
i.link.bind(h).fold(function() {
var n = i.text.filter(Vf).getOr(t);
o.insertContent(o.dom.createHTML("a", r, o.dom.encode(n)))
}, function(e) {
var n = zf(e, t, i);
ro.setAll(e, r), n.each(function(n) {
Ff(e, n)
})
})
})
},
query: jf
},
Uf = Wn.detect(),
Pf = function(n, e) {
var t = e.selection.getRng();
n(), e.selection.setRng(t)
},
_f = function(n, e) {
(Uf.os.isAndroid() ? Pf : s)(e, n)
},
Wf = function(n, e) {
var t, r;
return {
key: n,
value: {
config: {},
me: (t = n, r = br(e), Xr({
fields: [ur("enabled")],
name: t,
active: {
events: E(r)
}
})),
configAsRaw: E({}),
initialConfig: {},
state: $r
}
}
},
$f = Object.freeze({
getCurrent: function(n, e, t) {
return e.find()(n)
}
}),
Gf = [ur("find")],
qf = Xr({
fields: Gf,
name: "composing",
apis: $f
}),
Yf = as({
name: "Container",
factory: function(n) {
return {
uid: n.uid(),
dom: C({
tag: "div",
attributes: {
role: "presentation"
}
}, n.dom()),
components: n.components(),
behaviours: cc(n.containerBehaviours()),
events: n.events(),
domModification: n.domModification(),
eventOrder: n.eventOrder()
}
},
configFields: [mr("components", []), ac("containerBehaviours", []), mr("events", {}), mr("domModification", {}), mr("eventOrder", {})]
}),
Xf = as({
name: "DataField",
factory: function(t) {
return {
uid: t.uid(),
dom: t.dom(),
behaviours: C(qr([Ws.config({
store: {
mode: "memory",
initialValue: t.getInitialValue()()
}
}), qf.config({
find: B.some
})]), cc(t.dataBehaviours())),
events: br([Cr(function(n, e) {
Ws.setValue(n, t.getInitialValue()())
})])
}
},
configFields: [ur("uid"), ur("dom"), ur("getInitialValue"), ac("dataBehaviours", [Ws, qf])]
}),
Kf = function(n, e) {
if (e === undefined) throw new Error("Value.set was undefined");
n.dom().value = e
},
Jf = function(n) {
return n.dom().value
},
Qf = E([fr("data"), mr("inputAttributes", {}), mr("inputStyles", {}), mr("type", "input"), mr("tag", "input"), mr("inputClasses", []), ai("onSetValue"), mr("styles", {}), fr("placeholder"), mr("eventOrder", {}), ac("inputBehaviours", [Ws, Vi]), mr("selectOnFocus", !0)]),
Zf = function(n) {
return C(qr([Ws.config({
store: {
mode: "manual",
initialValue: n.data().getOr(undefined),
getValue: function(n) {
return Jf(n.element())
},
setValue: function(n, e) {
Jf(n.element()) !== e && Kf(n.element(), e)
}
},
onSetValue: n.onSetValue()
})]), (e = n, qr([Vi.config({
onFocus: !1 === e.selectOnFocus() ? k : function(n) {
var e = n.element(),
t = Jf(e);
e.dom().setSelectionRange(0, t.length)
}
})])), cc(n.inputBehaviours()));
var e
},
nl = as({
name: "Input",
configFields: Qf(),
factory: function(n, e) {
return {
uid: n.uid(),
dom: (t = n, {
tag: t.tag(),
attributes: C(Dt([{
key: "type",
value: t.type()
}].concat(t.placeholder().map(function(n) {
return {
key: "placeholder",
value: n
}
}).toArray())), t.inputAttributes()),
styles: t.inputStyles(),
classes: t.inputClasses()
}),
components: [],
behaviours: Zf(n),
eventOrder: n.eventOrder()
};
var t
}
}),
el = Object.freeze({
exhibit: function(n, e) {
return Nr({
attributes: Dt([{
key: e.tabAttr(),
value: "true"
}])
})
}
}),
tl = [mr("tabAttr", "data-alloy-tabstop")],
rl = Xr({
fields: tl,
name: "tabstopping",
active: el
}),
ol = function(n, e) {
var t = sf(nl.sketch({
placeholder: e,
onSetValue: function(n, e) {
oe(n, Y())
},
inputBehaviours: qr([qf.config({
find: B.some
}), rl.config({}), uc.config({
mode: "execution"
})]),
selectOnFocus: !1
})),
r = sf(ss.sketch({
dom: ms(''),
action: function(n) {
var e = t.get(n);
Ws.setValue(e, "")
}
}));
return {
name: n,
spec: Yf.sketch({
dom: ms(''),
components: [t.asSpec(), r.asSpec()],
containerBehaviours: qr([ki.config({
toggleClass: Mi.resolve("input-container-empty")
}), qf.config({
find: function(n) {
return B.some(t.get(n))
}
}), Wf("input-clearing", [wr(Y(), function(n) {
var e = t.get(n);
(0 < Ws.getValue(e).length ? ki.off : ki.on)(n)
})])])
})
}
},
il = ["input", "button", "textarea"],
ul = function(n, e, t) {
e.disabled() && dl(n, e, t)
},
al = function(n) {
return hn(il, be.name(n.element()))
},
cl = function(n) {
ro.set(n.element(), "disabled", "disabled")
},
sl = function(n) {
ro.remove(n.element(), "disabled")
},
fl = function(n) {
ro.set(n.element(), "aria-disabled", "true")
},
ll = function(n) {
ro.set(n.element(), "aria-disabled", "false")
},
dl = function(e, n, t) {
n.disableClass().each(function(n) {
bo.add(e.element(), n)
}), (al(e) ? cl : fl)(e)
},
ml = function(n) {
return al(n) ? ro.has(n.element(), "disabled") : "true" === ro.get(n.element(), "aria-disabled")
},
gl = Object.freeze({
enable: function(e, n, t) {
n.disableClass().each(function(n) {
bo.remove(e.element(), n)
}), (al(e) ? sl : ll)(e)
},
disable: dl,
isDisabled: ml,
onLoad: ul
}),
vl = Object.freeze({
exhibit: function(n, e, t) {
return Nr({
classes: e.disabled() ? e.disableClass().map(Nn).getOr([]) : []
})
},
events: function(n, e) {
return br([yr(Xn(), function(n, e) {
return ml(n)
}), Fr(n, e, ul)])
}
}),
pl = [mr("disabled", !1), fr("disableClass")],
hl = Xr({
fields: pl,
name: "disabling",
active: vl,
apis: gl
}),
bl = [ac("formBehaviours", [Ws])],
yl = function(n) {
return ""
},
wl = function(o, n, e) {
return C({
"debug.sketcher": {
Form: e
},
uid: o.uid(),
dom: o.dom(),
components: n,
behaviours: C(qr([Ws.config({
store: {
mode: "manual",
getValue: function(n) {
var e, t, r = (e = o, t = n.getSystem(), H(e.partUids(), function(n, e) {
return E(t.getByUid(n))
}));
return H(r, function(n, e) {
return n().bind(qf.getCurrent).map(Ws.getValue)
})
},
setValue: function(t, n) {
V(n, function(e, n) {
Uc(t, o, n).each(function(n) {
qf.getCurrent(n).each(function(n) {
Ws.setValue(n, e)
})
})
})
}
}
})]), cc(o.formBehaviours())),
apis: {
getField: function(n, e) {
return Uc(n, o, e).bind(qf.getCurrent)
}
}
})
},
xl = (Yc(function(n, e, t) {
return n.getField(e, t)
}), function(n) {
var i, e = (i = [], {
field: function(n, e) {
return i.push(n), t = "form", r = yl(n), o = e, {
uiType: pc(),
owner: t,
name: r,
config: o,
validated: {}
};
var t, r, o
},
record: function() {
return i
}
}),
t = n(e),
r = e.record(),
o = yn(r, function(n) {
return Ic({
name: n,
pname: yl(n)
})
});
return rs("form", bl, o, wl, t)
}),
Tl = function() {
var e = So(B.none()),
t = function() {
e.get().each(function(n) {
n.destroy()
})
};
return {
clear: function() {
t(), e.set(B.none())
},
isSet: function() {
return e.get().isSome()
},
set: function(n) {
t(), e.set(B.some(n))
},
run: function(n) {
e.get().each(n)
}
}
},
Sl = function() {
var e = So(B.none());
return {
clear: function() {
e.set(B.none())
},
set: function(n) {
e.set(B.some(n))
},
isSet: function() {
return e.get().isSome()
},
on: function(n) {
e.get().each(n)
}
}
},
Ol = function(n) {
return {
xValue: n,
points: []
}
},
Cl = function(n, e) {
if (e === n.xValue) return n;
var t = 0 < e - n.xValue ? 1 : -1,
r = {
direction: t,
xValue: e
};
return {
xValue: e,
points: (0 === n.points.length ? [] : n.points[n.points.length - 1].direction === t ? n.points.slice(0, n.points.length - 1) : n.points).concat([r])
}
},
kl = function(n) {
if (0 === n.points.length) return 0;
var e = n.points[0].direction,
t = n.points[n.points.length - 1].direction;
return -1 === e && -1 === t ? -1 : 1 === e && 1 === t ? 1 : 0
},
El = function(n) {
var r = "navigateEvent",
e = _t([ur("fields"), mr("maxFieldIndex", n.fields.length - 1), ur("onExecute"), ur("getInitialValue"), vr("state", function() {
return {
dialogSwipeState: Sl(),
currentScreen: So(0)
}
})]),
u = nr("SerialisedDialog", e, n),
o = function(e, n, t) {
return ss.sketch({
dom: ms(''),
action: function(n) {
ie(n, r, {
direction: e
})
},
buttonBehaviours: qr([hl.config({
disableClass: Mi.resolve("toolbar-navigation-disabled"),
disabled: !t
})])
})
},
i = function(n, o) {
var i = nu(n.element(), "." + Mi.resolve("serialised-dialog-screen"));
ou(n.element(), "." + Mi.resolve("serialised-dialog-chain")).each(function(r) {
0 <= u.state.currentScreen.get() + o && u.state.currentScreen.get() + o < i.length && (_i.getRaw(r, "left").each(function(n) {
var e = parseInt(n, 10),
t = Xs(i[0]);
_i.set(r, "left", e - o * t + "px")
}), u.state.currentScreen.set(u.state.currentScreen.get() + o))
})
},
a = function(r) {
var n = nu(r.element(), "input");
B.from(n[u.state.currentScreen.get()]).each(function(n) {
r.getSystem().getByDom(n).each(function(n) {
var e, t;
e = r, t = n.element(), e.getSystem().triggerFocus(t, e.element())
})
});
var e = s.get(r);
Eu.highlightAt(e, u.state.currentScreen.get())
},
c = sf(xl(function(t) {
return {
dom: ms(''),
components: [Yf.sketch({
dom: ms(''),
components: yn(u.fields, function(n, e) {
return e <= u.maxFieldIndex ? Yf.sketch({
dom: ms(''),
components: Dn([
[o(-1, "previous", 0 < e)],
[t.field(n.name, n.spec)],
[o(1, "next", e < u.maxFieldIndex)]
])
}) : t.field(n.name, n.spec)
})
})],
formBehaviours: qr([Di(function(n, e) {
var t;
t = e, ou(n.element(), "." + Mi.resolve("serialised-dialog-chain")).each(function(n) {
_i.set(n, "left", -u.state.currentScreen.get() * t.width + "px")
})
}), uc.config({
mode: "special",
focusIn: function(n) {
a(n)
},
onTab: function(n) {
return i(n, 1), B.some(!0)
},
onShiftTab: function(n) {
return i(n, -1), B.some(!0)
}
}), Wf("form-events", [Cr(function(e, n) {
u.state.currentScreen.set(0), u.state.dialogSwipeState.clear();
var t = s.get(e);
Eu.highlightFirst(t), u.getInitialValue(e).each(function(n) {
Ws.setValue(e, n)
})
}), Dr(u.onExecute), wr(J(), function(n, e) {
"left" === e.event().raw().propertyName && a(n)
}), wr(r, function(n, e) {
var t = e.event().direction();
i(n, t)
})])])
}
})),
s = sf({
dom: ms(''),
behaviours: qr([Eu.config({
highlightClass: Mi.resolve("dot-active"),
itemClass: Mi.resolve("dot-item")
})]),
components: An(u.fields, function(n, e) {
return e <= u.maxFieldIndex ? [gs('')] : []
})
});
return {
dom: ms(''),
components: [c.asSpec(), s.asSpec()],
behaviours: qr([uc.config({
mode: "special",
focusIn: function(n) {
var e = c.get(n);
uc.focusIn(e)
}
}), Wf("serializer-wrapper-events", [wr(L(), function(n, e) {
var t = e.event();
u.state.dialogSwipeState.set(Ol(t.touches[0].clientX))
}), wr(U(), function(n, e) {
var t = e.event();
u.state.dialogSwipeState.on(function(n) {
e.event().prevent(), u.state.dialogSwipeState.set(Cl(n, t.raw().touches[0].clientX))
})
}), wr(P(), function(r) {
u.state.dialogSwipeState.on(function(n) {
var e = c.get(r),
t = -1 * kl(n);
i(e, t)
})
})])])
}
},
Dl = Z(function(t, r) {
return [{
label: "the link group",
items: [El({
fields: [ol("url", "Type or paste URL"), ol("text", "Link text"), ol("title", "Link title"), ol("target", "Link target"), (n = "link", {
name: n,
spec: Xf.sketch({
dom: {
tag: "span",
styles: {
display: "none"
}
},
getInitialValue: function() {
return B.none()
}
})
})],
maxFieldIndex: ["url", "text", "title", "target"].length - 1,
getInitialValue: function() {
return B.some(Lf.getInfo(r))
},
onExecute: function(n) {
var e = Ws.getValue(n);
Lf.applyInfo(r, e), t.restoreToolbar(), r.focus()
}
})]
}];
var n
}),
Al = [{
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"
}]
}],
Rl = br([(Sf = Gn(), Of = function(n, e) {
var t, r, o = e.event().originator(),
i = e.event().target();
return r = i, !(ze(t = o, n.element()) && !ze(t, r) && (console.warn(Gn() + " did not get interpreted by the desired target. \nOriginator: " + qo(o) + "\nTarget: " + qo(i) + "\nCheck the " + Gn() + " event handlers"), 1))
}, {
key: Sf,
value: pr({
can: Of
})
})]),
Ml = Object.freeze({
events: Rl
}),
Il = h,
Nl = Wr(["debugInfo", "triggerFocus", "triggerEvent", "triggerEscape", "addToWorld", "removeFromWorld", "addToGui", "removeFromGui", "build", "getByUid", "getByDom", "broadcast", "broadcastOn", "isConnected"]),
Bl = function(e) {
var n = function(n) {
return function() {
throw new Error("The component must be in a context to send: " + n + "\n" + qo(e().element()) + " is not in context.")
}
};
return Nl({
debugInfo: E("fake"),
triggerEvent: n("triggerEvent"),
triggerFocus: n("triggerFocus"),
triggerEscape: n("triggerEscape"),
build: n("build"),
addToWorld: n("addToWorld"),
removeFromWorld: n("removeFromWorld"),
addToGui: n("addToGui"),
removeFromGui: n("removeFromGui"),
getByUid: n("getByUid"),
getByDom: n("getByDom"),
broadcast: n("broadcast"),
broadcastOn: n("broadcastOn"),
isConnected: E(!1)
})
},
Fl = function(n, o) {
var i = {};
return V(n, function(n, r) {
V(n, function(n, e) {
var t = Ct(e, [])(i);
i[e] = t.concat([o(r, n)])
})
}), i
},
Vl = function(n, e) {
return 1 < n.length ? at.error('Multiple behaviours have tried to change DOM "' + e + '". The guilty behaviours are: ' + Bt(yn(n, function(n) {
return n.name()
})) + ". At this stage, this is not supported. Future releases might provide strategies for resolving this.") : 0 === n.length ? at.value({}) : at.value(n[0].modification().fold(function() {
return {}
}, function(n) {
return Et(e, n)
}))
},
Hl = function(u, a) {
return Sn(u, function(n, e) {
var t = e.modification().getOr({});
return n.bind(function(i) {
var n = j(t, function(n, e) {
return i[e] !== undefined ? (t = a, r = e, o = u, at.error("Mulitple behaviours have tried to change the _" + r + '_ "' + t + '". The guilty behaviours are: ' + Bt(An(o, function(n) {
return n.modification().getOr({})[r] !== undefined ? [n.name()] : []
}), null, 2) + ". This is not currently supported.")) : at.value(Et(e, n));
var t, r, o
});
return At(n, i)
})
}, at.value({})).map(function(n) {
return Et(a, n)
})
},
zl = {
classes: function(n, e) {
var t = An(n, function(n) {
return n.modification().getOr([])
});
return at.value(Et(e, t))
},
attributes: Hl,
styles: Hl,
domChildren: Vl,
defChildren: Vl,
innerHtml: Vl,
value: Vl
},
jl = function(n, e) {
return t = l.apply(undefined, [n.handler].concat(e)), r = n.purpose(), {
cHandler: t,
purpose: E(r)
};
var t, r
},
Ll = function(n) {
return n.cHandler
},
Ul = function(n, e) {
return {
name: E(n),
handler: E(e)
}
},
Pl = function(n, e, t) {
var r, o, i = C(t, (r = n, o = {}, wn(e, function(n) {
o[n.name()] = n.handlers(r)
}), o));
return Fl(i, Ul)
},
_l = function(n) {
var e, i = w(e = n) ? {
can: E(!0),
abort: E(!1),
run: e
} : e;
return function(n, e) {
for (var t = [], r = 2; r < arguments.length; r++) t[r - 2] = arguments[r];
var o = [n, e].concat(t);
i.abort.apply(undefined, o) ? e.stop() : i.can.apply(undefined, o) && i.run.apply(undefined, o)
}
},
Wl = function(n, e, t) {
var r, o, i = e[t];
return i ?
function(u, a, n, c) {
var e = n.slice(0);
try {
var t = e.sort(function(n, e) {
var t = n[a](),
r = e[a](),
o = c.indexOf(t),
i = c.indexOf(r);
if (-1 === o) throw new Error("The ordering for " + u + " does not have an entry for " + t + ".\nOrder specified: " + Bt(c, null, 2));
if (-1 === i) throw new Error("The ordering for " + u + " does not have an entry for " + r + ".\nOrder specified: " + Bt(c, null, 2));
return o < i ? -1 : i < o ? 1 : 0
});
return at.value(t)
} catch (r) {
return at.error([r])
}
}("Event: " + t, "name", n, i).map(function(n) {
var e = yn(n, function(n) {
return n.handler()
});
return hr(e)
}) : (r = t, o = n, at.error(["The event (" + r + ') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: ' + Bt(yn(o, function(n) {
return n.name()
}), null, 2)]))
},
$l = function(n, i) {
var e = j(n, function(r, o) {
return (1 === r.length ? at.value(r[0].handler()) : Wl(r, i, o)).map(function(n) {
var e = _l(n),
t = 1 < r.length ? xn(i, function(e) {
return hn(r, function(n) {
return n.name() === e
})
}).join(" > ") : r[0].name();
return Et(o, {
handler: e,
purpose: E(t)
})
})
});
return At(e, {})
},
Gl = function(n) {
return Qt("custom.definition", Pt([qt("dom", "dom", lt(), Pt([ur("tag"), mr("styles", {}), mr("classes", []), mr("attributes", {}), fr("value"), fr("innerHtml")])), ur("components"), ur("uid"), mr("events", {}), mr("apis", E({})), qt("eventOrder", "eventOrder", (e = {
"alloy.execute": ["disabling", "alloy.base.behaviour", "toggling"],
"alloy.focus": ["alloy.base.behaviour", "focusing", "keying"],
"alloy.system.init": ["alloy.base.behaviour", "disabling", "toggling", "representing"],
input: ["alloy.base.behaviour", "representing", "streaming", "invalidating"],
"alloy.system.detached": ["alloy.base.behaviour", "representing"]
}, st.mergeWithThunk(E(e))), or()), fr("domModification"), di("originalSpec"), mr("debug.sketcher", "unknown")]), n);
var e
},
ql = function(n) {
var e, t = {
tag: n.dom().tag(),
classes: n.dom().classes(),
attributes: C((e = n, Et(Jc(), e.uid())), n.dom().attributes()),
styles: n.dom().styles(),
domChildren: yn(n.components(), function(n) {
return n.element()
})
};
return Mr(C(t, n.dom().innerHtml().map(function(n) {
return Et("innerHtml", n)
}).getOr({}), n.dom().value().map(function(n) {
return Et("value", n)
}).getOr({})))
},
Yl = function(e, n) {
wn(n, function(n) {
bo.add(e, n)
})
},
Xl = function(e, n) {
wn(n, function(n) {
bo.remove(e, n)
})
},
Kl = function(e) {
if (e.domChildren().isSome() && e.defChildren().isSome()) throw new Error("Cannot specify children and child specs! Must be one or the other.\nDef: " + (n = Ir(e), Bt(n, null, 2)));
return e.domChildren().fold(function() {
var n = e.defChildren().getOr([]);
return yn(n, Ql)
}, function(n) {
return n
});
var n
},
Jl = function(n) {
var e = fe.fromTag(n.tag());
ro.setAll(e, n.attributes().getOr({})), Yl(e, n.classes().getOr([])), _i.setAll(e, n.styles().getOr({})), _o(e, n.innerHtml().getOr(""));
var t = Kl(n);
return Ke(e, t), n.value().each(function(n) {
Kf(e, n)
}), e
},
Ql = function(n) {
var e = Mr(n);
return Jl(e)
},
Zl = function(n, e) {
return t = n, o = yn(r = e, function(n) {
return lr(n.name(), [ur("config"), mr("state", $r)])
}), i = Qt("component.behaviours", _t(o), t.behaviours).fold(function(n) {
throw new Error(tr(n) + "\nComplete spec:\n" + Bt(t, null, 2))
}, function(n) {
return n
}), {
list: r,
data: H(i, function(n) {
var e = n().map(function(n) {
return {
config: n.config(),
state: n.state().init(n.config())
}
});
return function() {
return e
}
})
};
var t, r, o, i
},
nd = function(n) {
var e, t, r = (e = kt(n, "behaviours").getOr({}), t = xn(F(e), function(n) {
return e[n] !== undefined
}), yn(t, function(n) {
return e[n].me
}));
return Zl(n, r)
},
ed = Wr(["getSystem", "config", "hasConfigured", "spec", "connect", "disconnect", "element", "syncComponents", "readState", "components", "events"]),
td = function(n, e, t) {
var r, o, i, u, a = ql(n),
c = function(e, n, t, r) {
var o = C({}, n);
wn(t, function(n) {
o[n.name()] = n.exhibit(e, r)
});
var i = Fl(o, function(n, e) {
return {
name: function() {
return n
},
modification: e
}
}),
u = H(i, function(n, e) {
return An(n, function(e) {
return e.modification().fold(function() {
return []
}, function(n) {
return [e]
})
})
}),
a = j(u, function(e, t) {
return kt(zl, t).fold(function() {
return at.error("Unknown field type: " + t)
}, function(n) {
return n(e, t)
})
});
return At(a, {}).map(Nr)
}(t, {
"alloy.base.modification": (r = n, r.domModification().fold(function() {
return Nr({})
}, Nr))
}, e, a).getOrDie();
return i = c, u = C({
tag: (o = a).tag(),
classes: i.classes().getOr([]).concat(o.classes().getOr([])),
attributes: D(o.attributes().getOr({}), i.attributes().getOr({})),
styles: D(o.styles().getOr({}), i.styles().getOr({}))
}, i.innerHtml().or(o.innerHtml()).map(function(n) {
return Et("innerHtml", n)
}).getOr({}), Br("domChildren", i.domChildren(), o.domChildren()), Br("defChildren", i.defChildren(), o.defChildren()), i.value().or(o.value()).map(function(n) {
return Et("value", n)
}).getOr({})), Mr(u)
},
rd = function(n, e, t) {
var r, o, i, u, a, c, s = {
"alloy.base.behaviour": (r = n, r.events())
};
return (o = t, i = n.eventOrder(), u = e, a = s, c = Pl(o, u, a), $l(c, i)).getOrDie()
},
od = function(n) {
var e, t, r, o, i, u, a, c, s, f, l, d, m, g, v = Il(n),
p = (e = v, t = Ct("components", [])(e), yn(t, ad)),
h = C(Ml, v, Et("components", p));
return at.value((r = h, i = So(Bl(o = function() {
return g
})), u = Zt(Gl(C(r, {
behaviours: undefined
}))), a = nd(r), c = a.list, s = a.data, f = td(u, c, s), l = Jl(f), d = rd(u, c, s), m = So(u.components()), g = ed({
getSystem: i.get,
config: function(n) {
if (n === Xc()) return u.apis();
if (b(n)) throw new Error("Invalid input: only API constant is allowed");
var e = s;
return (w(e[n.name()]) ? e[n.name()] : function() {
throw new Error("Could not find " + n.name() + " in " + Bt(r, null, 2))
})()
},
hasConfigured: function(n) {
return w(s[n.name()])
},
spec: E(r),
readState: function(n) {
return s[n]().map(function(n) {
return n.state.readState()
}).getOr("not enabled")
},
connect: function(n) {
i.set(n)
},
disconnect: function() {
i.set(Bl(o))
},
element: E(l),
syncComponents: function() {
var n = $e.children(l),
e = An(n, function(n) {
return i.get().getByDom(n).fold(function() {
return []
}, function(n) {
return [n]
})
});
m.set(e)
},
components: m.get,
events: E(d)
})))
},
id = function(n) {
var e = fe.fromText(n);
return ud({
element: e
})
},
ud = function(n) {
var t = er("external.component", Pt([ur("element"), fr("uid")]), n),
e = So(Bl());
t.uid().each(function(n) {
var e;
e = t.element(), ro.set(e, Zc, n)
});
var r = ed({
getSystem: e.get,
config: B.none,
hasConfigured: E(!1),
connect: function(n) {
e.set(n)
},
disconnect: function() {
e.set(Bl(function() {
return r
}))
},
element: E(t.element()),
spec: E(n),
readState: E("No state"),
syncComponents: k,
components: E([]),
events: E({})
});
return qc(r)
},
ad = function(e) {
return (n = e, kt(n, $c)).fold(function() {
var n = C({
uid: es("")
}, e);
return od(n).getOrDie()
}, function(n) {
return n
});
var n
},
cd = qc,
sd = "alloy.item-hover",
fd = "alloy.item-focus",
ld = function(n) {
(Fo(n.element()).isNone() || Vi.isFocused(n)) && (Vi.isFocused(n) || Vi.focus(n), ie(n, sd, {
item: n
}))
},
dd = function(n) {
ie(n, fd, {
item: n
})
},
md = E(sd),
gd = E(fd),
vd = [ur("data"), ur("components"), ur("dom"), fr("toggling"), mr("itemBehaviours", {}), mr("ignoreFocus", !1), mr("domModification", {}), li("builder", function(n) {
return {
dom: C(n.dom(), {
attributes: {
role: n.toggling().isSome() ? "menuitemcheckbox" : "menuitem"
}
}),
behaviours: C(qr([n.toggling().fold(ki.revoke, function(n) {
return ki.config(C({
aria: {
mode: "checked"
}
}, n))
}), Vi.config({
ignore: n.ignoreFocus(),
onFocus: function(n) {
dd(n)
}
}), uc.config({
mode: "execution"
}), Ws.config({
store: {
mode: "memory",
initialValue: n.data()
}
})]), n.itemBehaviours()),
events: br([(e = Qn(), r = ue, wr(e, function(e, t) {
var n = t.event();
e.getSystem().getByDom(n.target()).each(function(n) {
r(e, n, t)
})
})), Or(_()), wr(G(), ld), wr(Kn(), Vi.focus)]),
components: n.components(),
domModification: n.domModification(),
eventOrder: n.eventOrder()
};
var e, r
}), mr("eventOrder", {})],
pd = [ur("dom"), ur("components"), li("builder", function(n) {
return {
dom: n.dom(),
components: n.components(),
events: br([(e = Kn(), wr(e, function(n, e) {
e.stop()
}))])
};
var e
})],
hd = E([Ic({
name: "widget",
overrides: function(e) {
return {
behaviours: qr([Ws.config({
store: {
mode: "manual",
getValue: function(n) {
return e.data()
},
setValue: function() {}
}
})])
}
}
})]),
bd = [ur("uid"), ur("data"), ur("components"), ur("dom"), mr("autofocus", !1), mr("domModification", {}), Wc(hd()), li("builder", function(t) {
var n = jc(0, t, hd()),
e = Lc("item-widget", t, n.internals()),
r = function(n) {
return Uc(n, t, "widget").map(function(n) {
return uc.focusIn(n), n
})
},
o = function(n, e) {
return Nu(e.event().target()) || t.autofocus() && e.setSource(n.element()), B.none()
};
return C({
dom: t.dom(),
components: e,
domModification: t.domModification(),
events: br([Dr(function(n, e) {
r(n).each(function(n) {
e.stop()
})
}), wr(G(), ld), wr(Kn(), function(n, e) {
t.autofocus() ? r(n) : Vi.focus(n)
})]),
behaviours: qr([Ws.config({
store: {
mode: "memory",
initialValue: t.data()
}
}), Vi.config({
onFocus: function(n) {
dd(n)
}
}), uc.config({
mode: "special",
focusIn: t.autofocus() ?
function(n) {
r(n)
} : Jr(),
onLeft: o,
onRight: o,
onEscape: function(n, e) {
return Vi.isFocused(n) || t.autofocus() ? (t.autofocus() && e.setSource(n.element()), B.none()) : (Vi.focus(n), B.some(!0))
}
})])
})
})],
yd = rr("type", {
widget: bd,
item: vd,
separator: pd
}),
wd = E([Bc({
factory: {
sketch: function(n) {
var e = er("menu.spec item", yd, n);
return e.builder()(e)
}
},
name: "items",
unit: "item",
defaults: function(n, e) {
var t = es("");
return C({
uid: t
}, e)
},
overrides: function(n, e) {
return {
type: e.type,
ignoreFocus: n.fakeFocus(),
domModification: {
classes: [n.markers().item()]
}
}
}
})]),
xd = E([ur("value"), ur("items"), ur("dom"), ur("components"), mr("eventOrder", {}), ac("menuBehaviours", [Eu, Ws, qf, uc]), gr("movement", {
mode: "menu",
moveOnTab: !0
}, rr("mode", {
grid: [mi(), li("config", function(n, e) {
return {
mode: "flatgrid",
selector: "." + n.markers().item(),
initSize: {
numColumns: e.initSize().numColumns(),
numRows: e.initSize().numRows()
},
focusManager: n.focusManager()
}
})],
menu: [mr("moveOnTab", !0), li("config", function(n, e) {
return {
mode: "menu",
selector: "." + n.markers().item(),
moveOnTab: e.moveOnTab(),
focusManager: n.focusManager()
}
})]
})), ar("markers", oi()), mr("fakeFocus", !1), mr("focusManager", Du()), ai("onHighlight")]),
Td = E("alloy.menu-focus"),
Sd = cs({
name: "Menu",
configFields: xd(),
partFields: wd(),
factory: function(n, e, t, r) {
return C({
dom: C(n.dom(), {
attributes: {
role: "menu"
}
}),
uid: n.uid(),
behaviours: C(qr([Eu.config({
highlightClass: n.markers().selectedItem(),
itemClass: n.markers().item(),
onHighlight: n.onHighlight()
}), Ws.config({
store: {
mode: "memory",
initialValue: n.value()
}
}), qf.config({
find: B.some
}), uc.config(n.movement().config()(n, n.movement()))]), cc(n.menuBehaviours())),
events: br([wr(gd(), function(e, t) {
var n = t.event();
e.getSystem().getByDom(n.target()).each(function(n) {
Eu.highlight(e, n), t.stop(), ie(e, Td(), {
menu: e,
item: n
})
})
}), wr(md(), function(n, e) {
var t = e.event().item();
Eu.highlight(n, t)
})]),
components: e,
eventOrder: n.eventOrder()
})
}
}),
Od = function(n, e, t, r) {
var o = n.getSystem().build(r);
tt(n, o, t)
},
Cd = function(n, e) {
return n.components()
},
kd = Object.freeze({
append: function(n, e, t, r) {
Od(n, 0, Ye.append, r)
},
prepend: function(n, e, t, r) {
Od(n, 0, Ye.prepend, r)
},
remove: function(n, e, t, r) {
var o = Cd(n, e);
On(o, function(n) {
return ze(r.element(), n.element())
}).each(ot)
},
set: function(e, n, t, r) {
var o, i, u, a, c, s;
i = (o = e).components(), wn(i, rt), Qe.empty(o.element()), o.syncComponents(), u = function() {
var n = yn(r, e.getSystem().build);
wn(n, function(n) {
et(e, n)
})
}, a = e.element(), c = $e.owner(a), s = Bo(c).bind(function(e) {
var n = function(n) {
return ze(e, n)
};
return n(a) ? B.some(a) : Do.descendant(a, n)
}), u(a), s.each(function(e) {
Bo(c).filter(function(n) {
return ze(n, e)
}).fold(function() {
Io(e)
}, k)
})
},
contents: Cd
}),
Ed = Xr({
fields: [],
name: "replacing",
apis: kd
}),
Dd = function(t, r, o, n) {
return kt(o, n).bind(function(n) {
return kt(t, n).bind(function(n) {
var e = Dd(t, r, o, n);
return B.some([n].concat(e))
})
}).getOr([])
},
Ad = function(n, e) {
var t = {};
V(n, function(n, e) {
wn(n, function(n) {
t[n] = e
})
});
var r = e,
o = z(e, function(n, e) {
return {
k: n,
v: e
}
}),
i = H(o, function(n, e) {
return [e].concat(Dd(t, r, o, e))
});
return H(t, function(n) {
return kt(i, n).getOr([n])
})
},
Rd = function() {
var i = So({}),
u = So({}),
a = So({}),
c = So(B.none()),
s = So({}),
n = function(n) {
return kt(u.get(), n)
};
return {
setContents: function(n, e, t, r) {
c.set(B.some(n)), i.set(t), u.set(e), s.set(r);
var o = Ad(r, t);
a.set(o)
},
expand: function(t) {
return kt(i.get(), t).map(function(n) {
var e = kt(a.get(), t).getOr([]);
return [n].concat(e)
})
},
refresh: function(n) {
return kt(a.get(), n)
},
collapse: function(n) {
return kt(a.get(), n).bind(function(n) {
return 1 < n.length ? B.some(n.slice(1)) : B.none()
})
},
lookupMenu: n,
otherMenus: function(n) {
var e, t, r = s.get();
return e = F(r), t = n, xn(e, function(n) {
return !hn(t, n)
})
},
getPrimary: function() {
return c.get().bind(n)
},
getMenus: function() {
return u.get()
},
clear: function() {
i.set({}), u.set({}), a.set({}), c.set(B.none())
},
isClear: function() {
return c.get().isNone()
}
}
},
Md = E("collapse-item"),
Id = as({
name: "TieredMenu",
configFields: [fi("onExecute"), fi("onEscape"), si("onOpenMenu"), si("onOpenSubmenu"), ai("onCollapseMenu"), mr("openImmediately", !0), sr("data", [ur("primary"), ur("menus"), ur("expansions")]), mr("fakeFocus", !1), ai("onHighlight"), ai("onHover"), sr("markers", [ur("backgroundMenu")].concat(ti()).concat(ri())), ur("dom"), mr("navigateOnHover", !0), mr("stayInDom", !1), ac("tmenuBehaviours", [uc, Eu, qf, Ed]), mr("eventOrder", {})],
apis: {
collapseMenu: function(n, e) {
n.collapseMenu(e)
}
},
factory: function(u, o) {
var i = function(r, n) {
return H(n, function(n, e) {
var t = Sd.sketch(C(n, {
value: e,
items: n.items,
markers: Tt(o.markers, ["item", "selectedItem"]),
fakeFocus: u.fakeFocus(),
onHighlight: u.onHighlight(),
focusManager: u.fakeFocus() ? {
get: function(n) {
return Eu.getHighlighted(n).map(function(n) {
return n.element()
})
},
set: function(e, n) {
e.getSystem().getByDom(n).fold(k, function(n) {
Eu.highlight(e, n)
})
}
} : Du()
}));
return r.getSystem().build(t)
})
},
a = Rd(),
c = function(n) {
return Ws.getValue(n).value
},
s = function(n) {
return H(u.data().menus(), function(n, e) {
return An(n.items, function(n) {
return "separator" === n.type ? [] : [n.data.value]
})
})
},
f = function(e, n) {
Eu.highlight(e, n), Eu.getHighlighted(n).orThunk(function() {
return Eu.getFirst(n)
}).each(function(n) {
ae(e, n.element(), Kn())
})
},
l = function(n, e) {
return Xo(yn(e, n.lookupMenu))
},
d = function(r, o, i) {
return B.from(i[0]).bind(o.lookupMenu).map(function(n) {
var e = l(o, i.slice(1));
wn(e, function(n) {
bo.add(n.element(), u.markers().backgroundMenu())
}), xe.inBody(n.element()) || Ed.append(r, cd(n)), Xl(n.element(), [u.markers().backgroundMenu()]), f(r, n);
var t = l(o, o.otherMenus(i));
return wn(t, function(n) {
Xl(n.element(), [u.markers().backgroundMenu()]), u.stayInDom() || Ed.remove(r, n)
}), n
})
},
m = function(e, t) {
var n = c(t);
return a.expand(n).bind(function(n) {
return B.from(n[0]).bind(a.lookupMenu).each(function(n) {
xe.inBody(n.element()) || Ed.append(e, cd(n)), u.onOpenSubmenu()(e, t, n), Eu.highlightFirst(n)
}), d(e, a, n)
})
},
r = function(e, t) {
var n = c(t);
return a.collapse(n).bind(function(n) {
return d(e, a, n).map(function(n) {
return u.onCollapseMenu()(e, t, n), n
})
})
},
n = function(t) {
return function(e, n) {
return iu(n.getSource(), "." + u.markers().item()).bind(function(n) {
return e.getSystem().getByDom(n).toOption().bind(function(n) {
return t(e, n).map(function() {
return !0
})
})
})
}
},
e = br([wr(Td(), function(n, e) {
var t = e.event().menu();
Eu.highlight(n, t)
}), Dr(function(e, n) {
var t = n.event().target();
e.getSystem().getByDom(t).each(function(n) {
0 === c(n).indexOf("collapse-item") && r(e, n), m(e, n).fold(function() {
u.onExecute()(e, n)
}, function() {})
})
}), Cr(function(e, n) {
var t, r, o;
(t = e, r = i(t, u.data().menus()), o = s(t), a.setContents(u.data().primary(), r, u.data().expansions(), o), a.getPrimary()).each(function(n) {
Ed.append(e, cd(n)), u.openImmediately() && (f(e, n), u.onOpenMenu()(e, n))
})
})].concat(u.navigateOnHover() ? [wr(md(), function(n, e) {
var t, r, o = e.event().item();
t = n, r = c(o), a.refresh(r).bind(function(n) {
return d(t, a, n)
}), m(n, o), u.onHover()(n, o)
})] : []));
return {
uid: u.uid(),
dom: u.dom(),
behaviours: C(qr([uc.config({
mode: "special",
onRight: n(function(n, e) {
return Nu(e.element()) ? B.none() : m(n, e)
}),
onLeft: n(function(n, e) {
return Nu(e.element()) ? B.none() : r(n, e)
}),
onEscape: n(function(n, e) {
return r(n, e).orThunk(function() {
return u.onEscape()(n, e).map(function() {
return n
})
})
}),
focusIn: function(e, n) {
a.getPrimary().each(function(n) {
ae(e, n.element(), Kn())
})
}
}), Eu.config({
highlightClass: u.markers().selectedMenu(),
itemClass: u.markers().menu()
}), qf.config({
find: function(n) {
return Eu.getHighlighted(n)
}
}), Ed.config({})]), cc(u.tmenuBehaviours())),
eventOrder: u.eventOrder(),
apis: {
collapseMenu: function(e) {
Eu.getHighlighted(e).each(function(n) {
Eu.getHighlighted(n).each(function(n) {
r(e, n)
})
})
}
},
events: e
}
},
extraApis: {
tieredData: function(n, e, t) {
return {
primary: n,
menus: e,
expansions: t
}
},
singleData: function(n, e) {
return {
primary: n,
menus: Et(n, e),
expansions: {}
}
},
collapseItem: function(n) {
return {
value: bc(Md()),
text: n
}
}
}
}),
Nd = function(n, e, t, r) {
return kt(e.routes(), r.start()).map(s).bind(function(n) {
return kt(n, r.destination()).map(s)
})
},
Bd = function(n, e, t, r) {
return Nd(0, e, 0, r).bind(function(e) {
return e.transition().map(function(n) {
return {
transition: E(n),
route: E(e)
}
})
})
},
Fd = function(t, r, n) {
var e, o, i;
(e = t, o = r, i = n, Vd(e, o, i).bind(function(n) {
return Bd(e, o, i, n)
})).each(function(n) {
var e = n.transition();
bo.remove(t.element(), e.transitionClass()), ro.remove(t.element(), r.destinationAttr())
})
},
Vd = function(n, e, t) {
var r = n.element();
return ro.has(r, e.destinationAttr()) ? B.some({
start: E(ro.get(n.element(), e.stateAttr())),
destination: E(ro.get(n.element(), e.destinationAttr()))
}) : B.none()
},
Hd = function(n, e, t, r) {
Fd(n, e, t), ro.has(n.element(), e.stateAttr()) && ro.get(n.element(), e.stateAttr()) !== r && e.onFinish()(n, r), ro.set(n.element(), e.stateAttr(), r)
},
zd = Object.freeze({
findRoute: Nd,
disableTransition: Fd,
getCurrentRoute: Vd,
jumpTo: Hd,
progressTo: function(t, r, o, i) {
var n, e;
e = r, ro.has((n = t).element(), e.destinationAttr()) && (ro.set(n.element(), e.stateAttr(), ro.get(n.element(), e.destinationAttr())), ro.remove(n.element(), e.destinationAttr()));
var u, a, c = (u = r, a = i, {
start: E(ro.get(t.element(), u.stateAttr())),
destination: E(a)
});
Bd(t, r, o, c).fold(function() {
Hd(t, r, o, i)
}, function(n) {
Fd(t, r, o);
var e = n.transition();
bo.add(t.element(), e.transitionClass()), ro.set(t.element(), r.destinationAttr(), i)
})
},
getState: function(n, e, t) {
var r = n.element();
return ro.has(r, e.stateAttr()) ? B.some(ro.get(r, e.stateAttr())) : B.none()
}
}),
jd = Object.freeze({
events: function(o, i) {
return br([wr(J(), function(t, n) {
var r = n.event().raw();
Vd(t, o, i).each(function(e) {
Nd(0, o, 0, e).each(function(n) {
n.transition().each(function(n) {
r.propertyName === n.property() && (Hd(t, o, i, e.destination()), o.onTransition()(t, e))
})
})
})
}), Cr(function(n, e) {
Hd(n, o, i, o.initialState())
})])
}
}),
Ld = [mr("destinationAttr", "data-transitioning-destination"), mr("stateAttr", "data-transitioning-state"), ur("initialState"), ai("onTransition"), ai("onFinish"), ar("routes", Wt(at.value, Wt(at.value, Pt([dr("transition", [ur("property"), ur("transitionClass")])]))))],
Ud = Xr({
fields: Ld,
name: "transitioning",
active: jd,
apis: zd,
extra: {
createRoutes: function(n) {
var r = {};
return V(n, function(n, e) {
var t = e.split("<->");
r[t[0]] = Et(t[1], n), r[t[1]] = Et(t[0], n)
}), r
},
createBistate: function(n, e, t) {
return Dt([{
key: n,
value: Et(e, t)
}, {
key: e,
value: Et(n, t)
}])
},
createTristate: function(n, e, t, r) {
return Dt([{
key: n,
value: Dt([{
key: e,
value: r
}, {
key: t,
value: r
}])
}, {
key: e,
value: Dt([{
key: n,
value: r
}, {
key: t,
value: r
}])
}, {
key: t,
value: Dt([{
key: n,
value: r
}, {
key: e,
value: r
}])
}])
}
}
}),
Pd = Mi.resolve("scrollable"),
_d = {
register: function(n) {
bo.add(n, Pd)
},
deregister: function(n) {
bo.remove(n, Pd)
},
scrollable: E(Pd)
},
Wd = function(n) {
return kt(n, "format").getOr(n.title)
},
$d = function(n, e, t, r, o) {
return {
data: {
value: n,
text: e
},
type: "item",
dom: {
tag: "div",
classes: o ? [Mi.resolve("styles-item-is-menu")] : []
},
toggling: {
toggleOnExecute: !1,
toggleClass: Mi.resolve("format-matches"),
selected: t
},
itemBehaviours: qr(o ? [] : [Ei(n, function(n, e) {
(e ? ki.on : ki.off)(n)
})]),
components: [{
dom: {
tag: "div",
attributes: {
style: r
},
innerHtml: e
}
}]
}
},
Gd = function(n, e, t, r) {
return {
value: n,
dom: {
tag: "div"
},
components: [ss.sketch({
dom: {
tag: "div",
classes: [Mi.resolve("styles-collapser")]
},
components: r ? [{
dom: {
tag: "span",
classes: [Mi.resolve("styles-collapse-icon")]
}
},
id(n)] : [id(n)],
action: function(n) {
if (r) {
var e = t().get(n);
Id.collapseMenu(e)
}
}
}),
{
dom: {
tag: "div",
classes: [Mi.resolve("styles-menu-items-container")]
},
components: [Sd.parts().items({})],
behaviours: qr([Wf("adhoc-scrollable-menu", [Cr(function(n, e) {
_i.set(n.element(), "overflow-y", "auto"), _i.set(n.element(), "-webkit-overflow-scrolling", "touch"), _d.register(n.element())
}), kr(function(n) {
_i.remove(n.element(), "overflow-y"), _i.remove(n.element(), "-webkit-overflow-scrolling"), _d.deregister(n.element())
})])])
}],
items: e,
menuBehaviours: qr([Ud.config({
initialState: "after",
routes: Ud.createTristate("before", "current", "after", {
transition: {
property: "transform",
transitionClass: "transitioning"
}
})
})])
}
},
qd = function(r) {
var o, i, n, e, t, u = (o = r.formats, i = function() {
return a
}, n = Gd("Styles", [].concat(yn(o.items, function(n) {
return $d(Wd(n), n.title, n.isSelected(), n.getPreview(), Rt(o.expansions, Wd(n)))
})), i, !1), e = H(o.menus, function(n, e) {
var t = yn(n, function(n) {
return $d(Wd(n), n.title, n.isSelected !== undefined && n.isSelected(), n.getPreview !== undefined ? n.getPreview() : "", Rt(o.expansions, Wd(n)))
});
return Gd(e, t, i, !0)
}), t = C(e, Et("styles", n)), {
tmenu: Id.tieredData("styles", t, o.expansions)
}),
a = sf(Id.sketch({
dom: {
tag: "div",
classes: [Mi.resolve("styles-menu")]
},
components: [],
fakeFocus: !0,
stayInDom: !0,
onExecute: function(n, e) {
var t = Ws.getValue(e);
return r.handle(e, t.value), B.none()
},
onEscape: function() {
return B.none()
},
onOpenMenu: function(n, e) {
var t = Xs(n.element());
Ys(e.element(), t), Ud.jumpTo(e, "current")
},
onOpenSubmenu: function(n, e, t) {
var r = Xs(n.element()),
o = ru(e.element(), '[role="menu"]').getOrDie("hacky"),
i = n.getSystem().getByDom(o).getOrDie();
Ys(t.element(), r), Ud.progressTo(i, "before"), Ud.jumpTo(t, "after"), Ud.progressTo(t, "current")
},
onCollapseMenu: function(n, e, t) {
var r = ru(e.element(), '[role="menu"]').getOrDie("hacky"),
o = n.getSystem().getByDom(r).getOrDie();
Ud.progressTo(o, "after"), Ud.progressTo(t, "current")
},
navigateOnHover: !1,
openImmediately: !0,
data: u.tmenu,
markers: {
backgroundMenu: Mi.resolve("styles-background-menu"),
menu: Mi.resolve("styles-menu"),
selectedMenu: Mi.resolve("styles-selected-menu"),
item: Mi.resolve("styles-item"),
selectedItem: Mi.resolve("styles-selected-item")
}
}));
return a.asSpec()
},
Yd = function(n) {
return Rt(n, "items") ? (t = C(St(e = n, ["items"]), {
menu: !0
}), r = Xd(e.items), {
item: t,
menus: C(r.menus, Et(e.title, r.items)),
expansions: C(r.expansions, Et(e.title, e.title))
}) : {
item: n,
menus: {},
expansions: {}
};
var e, t, r
},
Xd = function(n) {
return Tn(n, function(n, e) {
var t = Yd(e);
return {
menus: C(n.menus, t.menus),
items: [t.item].concat(n.items),
expansions: C(n.expansions, t.expansions)
}
}, {
menus: {},
expansions: {},
items: []
})
},
Kd = {
expand: Xd
},
Jd = function(u, n) {
var a = function(n) {
return function() {
return u.formatter.match(n)
}
},
c = function(n) {
return function() {
return u.formatter.getCssText(n)
}
},
e = kt(n, "style_formats").getOr(Al),
s = function(n) {
return yn(n, function(n) {
if (Rt(n, "items")) {
var e = s(n.items);
return C(C(n, {
isSelected: E(!1),
getPreview: E("")
}), {
items: e
})
}
return Rt(n, "format") ? C(i = n, {
isSelected: a(i.format),
getPreview: c(i.format)
}) : (r = bc((t = n).title), o = C(t, {
format: r,
isSelected: a(r),
getPreview: c(r)
}), u.formatter.register(r, o), o);
var t, r, o, i
})
};
return s(e)
},
Qd = function(t, n, r) {
var e, o, i, u = (e = t, i = (o = function(n) {
return An(n, function(n) {
return n.items !== undefined ? 0 < o(n.items).length ? [n] : [] : !Rt(n, "format") || e.formatter.canApply(n.format) ? [n] : []
})
})(n), Kd.expand(i));
return qd({
formats: u,
handle: function(n, e) {
t.undoManager.transact(function() {
ki.isOn(n) ? t.formatter.remove(e) : t.formatter.apply(e)
}), r()
}
})
},
Zd = ["undo", "bold", "italic", "link", "image", "bullist", "styleselect"],
nm = function(n) {
var e = n.replace(/\|/g, " ").trim();
return 0 < e.length ? e.split(/\s+/) : []
},
em = function(n) {
return An(n, function(n) {
return p(n) ? em(n) : nm(n)
})
},
tm = function(n) {
var e = n.toolbar !== undefined ? n.toolbar : Zd;
return p(e) ? em(e) : nm(e)
},
rm = function(r, o) {
var n = function(n) {
return function() {
return hs.forToolbarCommand(o, n)
}
},
e = function(n) {
return function() {
return hs.forToolbarStateCommand(o, n)
}
},
t = function(n, e, t) {
return function() {
return hs.forToolbarStateAction(o, n, e, t)
}
},
i = n("undo"),
u = n("redo"),
a = e("bold"),
c = e("italic"),
s = e("underline"),
f = n("removeformat"),
l = t("unlink", "link", function() {
o.execCommand("unlink", null, !1)
}),
d = t("unordered-list", "ul", function() {
o.execCommand("InsertUnorderedList", null, !1)
}),
m = t("ordered-list", "ol", function() {
o.execCommand("InsertOrderedList", null, !1)
}),
g = Jd(o, o.settings),
v = function() {
return Qd(o, g, function() {
o.fire("scrollIntoView")
})
},
p = function(n, e) {
return {
isSupported: function() {
return n.forall(function(n) {
return Rt(o.buttons, n)
})
},
sketch: e
}
};
return {
undo: p(B.none(), i),
redo: p(B.none(), u),
bold: p(B.none(), a),
italic: p(B.none(), c),
underline: p(B.none(), s),
removeformat: p(B.none(), f),
link: p(B.none(), function() {
return e = r, t = o, hs.forToolbarStateAction(t, "link", "link", function() {
var n = Dl(e, t);
e.setContextToolbar(n), _f(t, function() {
e.focusToolbar()
}), Lf.query(t).each(function(n) {
t.selection.select(n.dom())
})
});
var e, t
}),
unlink: p(B.none(), l),
image: p(B.none(), function() {
return Nf(o)
}),
bullist: p(B.some("bullist"), d),
numlist: p(B.some("numlist"), m),
fontsizeselect: p(B.none(), function() {
return e = o, n = {
onChange: function(n) {
uf.apply(e, n)
},
getInitialValue: function() {
return uf.get(e)
}
}, Qs(r, "font-size", function() {
return cf(n)
});
var e, n
}),
forecolor: p(B.none(), function() {
return nf(r, o)
}),
styleselect: p(B.none(), function() {
return hs.forToolbar("style-formats", function(n) {
o.fire("toReading"), r.dropup().appear(v, ki.on, n)
}, qr([ki.config({
toggleClass: Mi.resolve("toolbar-button-selected"),
toggleOnExecute: !1,
aria: {
mode: "pressed"
}
}), vi.config({
channels: Dt([Ai(jo.orientationChanged(), ki.off), Ai(jo.dropupDismissed(), ki.off)])
})]))
})
}
},
om = function(n, t) {
var e = tm(n),
r = {};
return An(e, function(n) {
var e = !Rt(r, n) && Rt(t, n) && t[n].isSupported() ? [t[n].sketch()] : [];
return r[n] = !0, e
})
},
im = function(m, g) {
return function(n) {
if (m(n)) {
var e, t, r, o, i, u, a, c = fe.fromDom(n.target),
s = function() {
n.stopPropagation()
},
f = function() {
n.preventDefault()
},
l = v(f, s),
d = (e = c, t = n.clientX, r = n.clientY, o = s, i = f, u = l, a = n, {
target: E(e),
x: E(t),
y: E(r),
stop: o,
prevent: i,
kill: u,
raw: E(a)
});
g(d)
}
}
},
um = function(n, e, t, r, o) {
var i = im(t, r);
return n.dom().addEventListener(e, i, o), {
unbind: l(am, n, e, i, o)
}
},
am = function(n, e, t, r) {
n.dom().removeEventListener(e, t, r)
},
cm = function(n, e, t, r) {
return um(n, e, t, r, !1)
},
sm = function(n, e, t, r) {
return um(n, e, t, r, !0)
},
fm = E(!0),
lm = function(n, e, t) {
return cm(n, e, fm, t)
},
dm = function(n, e, t) {
return sm(n, e, fm, t)
},
mm = function(n) {
var e = n.matchMedia("(orientation: portrait)").matches;
return {
isPortrait: E(e)
}
},
gm = mm,
vm = function(r, e) {
var n = fe.fromDom(r),
o = null,
t = lm(n, "orientationchange", function() {
clearInterval(o);
var n = mm(r);
e.onChange(n), i(function() {
e.onReady(n)
})
}),
i = function(n) {
clearInterval(o);
var e = r.innerHeight,
t = 0;
o = setInterval(function() {
e !== r.innerHeight ? (clearInterval(o), n(B.some(r.innerHeight))) : 20 < t && (clearInterval(o), n(B.none())), t++
}, 50)
};
return {
onAdjustment: i,
destroy: function() {
t.unbind()
}
}
},
pm = function(n) {
var e = Wn.detect().os.isiOS(),
t = mm(n).isPortrait();
return e && !t ? n.screen.height : n.screen.width
},
hm = function(n) {
var e = n.raw();
return e.touches === undefined || 1 !== e.touches.length ? B.none() : B.some(e.touches[0])
},
bm = function(t) {
var r, o, i, u = So(B.none()),
a = (r = function(n) {
u.set(B.none()), t.triggerEvent(Zn(), n)
}, o = 400, i = null, {
cancel: function() {
null !== i && (clearTimeout(i), i = null)
},
schedule: function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
i = setTimeout(function() {
r.apply(null, n), i = null
}, o)
}
}),
c = Dt([{
key: L(),
value: function(t) {
return hm(t).each(function(n) {
a.cancel();
var e = {
x: E(n.clientX),
y: E(n.clientY),
target: t.target
};
a.schedule(t), u.set(B.some(e))
}), B.none()
}
}, {
key: U(),
value: function(n) {
return a.cancel(), hm(n).each(function(i) {
u.get().each(function(n) {
var e, t, r, o;
e = i, t = n, r = Math.abs(e.clientX - t.x()), o = Math.abs(e.clientY - t.y()), (5 < r || 5 < o) && u.set(B.none())
})
}), B.none()
}
}, {
key: P(),
value: function(e) {
return a.cancel(), u.get().filter(function(n) {
return ze(n.target(), e.target())
}).map(function(n) {
return t.triggerEvent(Jn(), e)
})
}
}]);
return {
fireIfReady: function(e, n) {
return kt(c, n).bind(function(n) {
return n(e)
})
}
}
},
ym = function(t) {
var e = bm({
triggerEvent: function(n, e) {
t.onTapContent(e)
}
});
return {
fireTouchstart: function(n) {
e.fireIfReady(n, "touchstart")
},
onTouchend: function() {
return lm(t.body(), "touchend", function(n) {
e.fireIfReady(n, "touchend")
})
},
onTouchmove: function() {
return lm(t.body(), "touchmove", function(n) {
e.fireIfReady(n, "touchmove")
})
}
}
},
wm = 6 <= Wn.detect().os.version.major,
xm = function(r, e, t) {
var o = ym(r),
i = $e.owner(e),
u = function(n) {
return !ze(n.start(), n.finish()) || n.soffset() !== n.foffset()
},
n = function() {
var n = r.doc().dom().hasFocus() && r.getSelection().exists(u);
t.getByDom(e).each(!0 === (n || Bo(i).filter(function(n) {
return "input" === be.name(n)
}).exists(function(n) {
return n.dom().selectionStart !== n.dom().selectionEnd
})) ? ki.on : ki.off)
},
a = [lm(r.body(), "touchstart", function(n) {
r.onTouchContent(), o.fireTouchstart(n)
}), o.onTouchmove(), o.onTouchend(), lm(e, "touchstart", function(n) {
r.onTouchToolstrip()
}), r.onToReading(function() {
No(r.body())
}), r.onToEditing(k), r.onScrollToCursor(function(n) {
n.preventDefault(), r.getCursorBox().each(function(n) {
var e = r.win(),
t = n.top() > e.innerHeight || n.bottom() > e.innerHeight ? n.bottom() - e.innerHeight + 50 : 0;
0 !== t && e.scrollTo(e.pageXOffset, e.pageYOffset + t)
})
})].concat(!0 === wm ? [] : [lm(fe.fromDom(r.win()), "blur", function() {
t.getByDom(e).each(ki.off)
}), lm(i, "select", n), lm(r.doc(), "selectionchange", n)]);
return {
destroy: function() {
wn(a, function(n) {
n.unbind()
})
}
}
},
Tm = function(n, e) {
var t = parseInt(ro.get(n, e), 10);
return isNaN(t) ? 0 : t
},
Sm = (Cf = be.isText, kf = "text", Ef = function(n) {
return Cf(n) ? B.from(n.dom().nodeValue) : B.none()
}, Df = Wn.detect().browser, {
get: function(n) {
if (!Cf(n)) throw new Error("Can only get " + kf + " value of a " + kf + " node");
return Af(n).getOr("")
},
getOption: Af = Df.isIE() && 10 === Df.version.major ?
function(n) {
try {
return Ef(n)
} catch (e) {
return B.none()
}
} : Ef,
set: function(n, e) {
if (!Cf(n)) throw new Error("Can only set raw " + kf + " value of a " + kf + " node");
n.dom().nodeValue = e
}
}),
Om = function(n) {
return Sm.getOption(n)
},
Cm = function(n) {
return "img" === be.name(n) ? 1 : Om(n).fold(function() {
return $e.children(n).length
}, function(n) {
return n.length
})
},
km = Cm,
Em = ct([{
before: ["element"]
}, {
on: ["element", "offset"]
}, {
after: ["element"]
}]),
Dm = {
before: Em.before,
on: Em.on,
after: Em.after,
cata: function(n, e, t, r) {
return n.fold(e, t, r)
},
getStart: function(n) {
return n.fold(h, h, h)
}
},
Am = ct([{
domRange: ["rng"]
}, {
relative: ["startSitu", "finishSitu"]
}, {
exact: ["start", "soffset", "finish", "foffset"]
}]),
Rm = Te("start", "soffset", "finish", "foffset"),
Mm = {
domRange: Am.domRange,
relative: Am.relative,
exact: Am.exact,
exactFromRange: function(n) {
return Am.exact(n.start(), n.soffset(), n.finish(), n.foffset())
},
range: Rm,
getWin: function(n) {
var e = n.match({
domRange: function(n) {
return fe.fromDom(n.startContainer)
},
relative: function(n, e) {
return Dm.getStart(n)
},
exact: function(n, e, t, r) {
return n
}
});
return $e.defaultView(e)
}
},
Im = function(n, e, t, r) {
var o = $e.owner(n).dom().createRange();
return o.setStart(n.dom(), e), o.setEnd(t.dom(), r), o
},
Nm = function(n, e, t, r) {
var o = Im(n, e, t, r),
i = ze(n, t) && e === r;
return o.collapsed && !i
},
Bm = function(n, e) {
n.selectNodeContents(e.dom())
},
Fm = function(n) {
n.deleteContents()
},
Vm = function(n) {
return {
left: E(n.left),
top: E(n.top),
right: E(n.right),
bottom: E(n.bottom),
width: E(n.width),
height: E(n.height)
}
},
Hm = {
create: function(n) {
return n.document.createRange()
},
replaceWith: function(n, e) {
Fm(n), n.insertNode(e.dom())
},
selectNodeContents: function(n, e) {
var t = n.document.createRange();
return Bm(t, e), t
},
selectNodeContentsUsing: Bm,
relativeToNative: function(n, e, t) {
var r, o, i = n.document.createRange();
return r = i, e.fold(function(n) {
r.setStartBefore(n.dom())
}, function(n, e) {
r.setStart(n.dom(), e)
}, function(n) {
r.setStartAfter(n.dom())
}), o = i, t.fold(function(n) {
o.setEndBefore(n.dom())
}, function(n, e) {
o.setEnd(n.dom(), e)
}, function(n) {
o.setEndAfter(n.dom())
}), i
},
exactToNative: function(n, e, t, r, o) {
var i = n.document.createRange();
return i.setStart(e.dom(), t), i.setEnd(r.dom(), o), i
},
deleteContents: Fm,
cloneFragment: function(n) {
var e = n.cloneContents();
return fe.fromDom(e)
},
getFirstRect: function(n) {
var e = n.getClientRects(),
t = 0 < e.length ? e[0] : n.getBoundingClientRect();
return 0 < t.width || 0 < t.height ? B.some(t).map(Vm) : B.none()
},
getBounds: function(n) {
var e = n.getBoundingClientRect();
return 0 < e.width || 0 < e.height ? B.some(e).map(Vm) : B.none()
},
isWithin: function(n, e) {
return e.compareBoundaryPoints(n.END_TO_START, n) < 1 && -1 < e.compareBoundaryPoints(n.START_TO_END, n)
},
toString: function(n) {
return n.toString()
}
},
zm = ct([{
ltr: ["start", "soffset", "finish", "foffset"]
}, {
rtl: ["start", "soffset", "finish", "foffset"]
}]),
jm = function(n, e, t) {
return e(fe.fromDom(t.startContainer), t.startOffset, fe.fromDom(t.endContainer), t.endOffset)
},
Lm = function(n, e) {
var o, t, r, i = (o = n, e.match({
domRange: function(n) {
return {
ltr: E(n),
rtl: B.none
}
},
relative: function(n, e) {
return {
ltr: Z(function() {
return Hm.relativeToNative(o, n, e)
}),
rtl: Z(function() {
return B.some(Hm.relativeToNative(o, e, n))
})
}
},
exact: function(n, e, t, r) {
return {
ltr: Z(function() {
return Hm.exactToNative(o, n, e, t, r)
}),
rtl: Z(function() {
return B.some(Hm.exactToNative(o, t, r, n, e))
})
}
}
}));
return (r = (t = i).ltr()).collapsed ? t.rtl().filter(function(n) {
return !1 === n.collapsed
}).map(function(n) {
return zm.rtl(fe.fromDom(n.endContainer), n.endOffset, fe.fromDom(n.startContainer), n.startOffset)
}).getOrThunk(function() {
return jm(0, zm.ltr, r)
}) : jm(0, zm.ltr, r)
},
Um = (zm.ltr, zm.rtl, Lm),
Pm = function(i, n) {
return Lm(i, n).match({
ltr: function(n, e, t, r) {
var o = i.document.createRange();
return o.setStart(n.dom(), e), o.setEnd(t.dom(), r), o
},
rtl: function(n, e, t, r) {
var o = i.document.createRange();
return o.setStart(t.dom(), r), o.setEnd(n.dom(), e), o
}
})
},
_m = (document.caretPositionFromPoint || document.caretRangeFromPoint, function(n, e) {
var t = be.name(n);
return "input" === t ? Dm.after(n) : hn(["br", "img"], t) ? 0 === e ? Dm.before(n) : Dm.after(n) : Dm.on(n, e)
}),
Wm = function(n, e, t, r) {
var o = _m(n, e),
i = _m(t, r);
return Mm.relative(o, i)
},
$m = Wm,
Gm = function(n, e) {
B.from(n.getSelection()).each(function(n) {
n.removeAllRanges(), n.addRange(e)
})
},
qm = function(n, e, t, r, o) {
var i = Hm.exactToNative(n, e, t, r, o);
Gm(n, i)
},
Ym = function(l, n) {
return Um(l, n).match({
ltr: function(n, e, t, r) {
qm(l, n, e, t, r)
},
rtl: function(n, e, t, r) {
var o, i, u, a, c, s = l.getSelection();
if (s.setBaseAndExtent) s.setBaseAndExtent(n.dom(), e, t.dom(), r);
else if (s.extend) try {
i = n, u = e, a = t, c = r, (o = s).collapse(i.dom(), u), o.extend(a.dom(), c)
} catch (f) {
qm(l, t, r, n, e)
} else qm(l, t, r, n, e)
}
})
},
Xm = function(n) {
var e = fe.fromDom(n.anchorNode),
t = fe.fromDom(n.focusNode);
return Nm(e, n.anchorOffset, t, n.focusOffset) ? B.some(Mm.range(fe.fromDom(n.anchorNode), n.anchorOffset, fe.fromDom(n.focusNode), n.focusOffset)) : function(n) {
if (0 < n.rangeCount) {
var e = n.getRangeAt(0),
t = n.getRangeAt(n.rangeCount - 1);
return B.some(Mm.range(fe.fromDom(e.startContainer), e.startOffset, fe.fromDom(t.endContainer), t.endOffset))
}
return B.none()
}(n)
},
Km = function(n) {
return B.from(n.getSelection()).filter(function(n) {
return 0 < n.rangeCount
}).bind(Xm)
},
Jm = function(n, e, t, r, o) {
var i = $m(e, t, r, o);
Ym(n, i)
},
Qm = Km,
Zm = function(n) {
return Km(n).map(function(n) {
return Mm.exact(n.start(), n.soffset(), n.finish(), n.foffset())
})
},
ng = function(n) {
n.getSelection().removeAllRanges()
},
eg = function(n, e) {
var t = Pm(n, e);
return Hm.getFirstRect(t)
},
tg = function(n) {
return {
left: n.left,
top: n.top,
right: n.right,
bottom: n.bottom,
width: E(2),
height: n.height
}
},
rg = function(n) {
return {
left: E(n.left),
top: E(n.top),
right: E(n.right),
bottom: E(n.bottom),
width: E(n.width),
height: E(n.height)
}
},
og = function(n) {
var e = n.getSelection();
return e !== undefined && 0 < e.rangeCount ?
function(t) {
if (t.collapsed) {
var r = fe.fromDom(t.startContainer);
return $e.parent(r).bind(function(n) {
var e = Mm.exact(r, t.startOffset, n, km(n));
return eg(t.startContainer.ownerDocument.defaultView, e).map(tg).map(Nn)
}).getOr([])
}
return yn(t.getClientRects(), rg)
}(e.getRangeAt(0)) : []
},
ig = function(n) {
n.focus();
var e = fe.fromDom(n.document.body);
(Bo().exists(function(n) {
return hn(["input", "textarea"], be.name(n))
}) ?
function(n) {
setTimeout(function() {
n()
}, 0)
} : s)(function() {
Bo().each(No), Io(e)
})
},
ug = "data-" + Mi.resolve("last-outer-height"),
ag = function(n, e) {
ro.set(n, ug, e)
},
cg = function(n) {
return {
top: E(n.top()),
bottom: E(n.top() + n.height())
}
},
sg = function(n, e) {
var t = Tm(e, ug),
r = n.innerHeight;
return r < t ? B.some(t - r) : B.none()
},
fg = function(n, u) {
var e = fe.fromDom(u.document.body),
t = lm(fe.fromDom(n), "resize", function() {
sg(n, e).each(function(i) {
var n, e;
(n = u, e = og(n), 0 < e.length ? B.some(e[0]).map(cg) : B.none()).each(function(n) {
var e, t, r, o = (e = u, r = i, (t = n).top() > e.innerHeight || t.bottom() > e.innerHeight ? Math.min(r, t.bottom() - e.innerHeight + 50) : 0);
0 !== o && u.scrollTo(u.pageXOffset, u.pageYOffset + o)
})
}), ag(e, n.innerHeight)
});
return ag(e, n.innerHeight), {
toEditing: function() {
ig(u)
},
destroy: function() {
t.unbind()
}
}
},
lg = function(n) {
return B.some(fe.fromDom(n.dom().contentWindow.document.body))
},
dg = function(n) {
return B.some(fe.fromDom(n.dom().contentWindow.document))
},
mg = function(n) {
return B.from(n.dom().contentWindow)
},
gg = function(n) {
return mg(n).bind(Qm)
},
vg = function(n) {
return n.getFrame()
},
pg = function(n, t) {
return function(e) {
return e[n].getOrThunk(function() {
var n = vg(e);
return function() {
return t(n)
}
})()
}
},
hg = function(n, e, t, r) {
return n[t].getOrThunk(function() {
return function(n) {
return lm(e, r, n)
}
})
},
bg = function(n) {
return {
left: E(n.left),
top: E(n.top),
right: E(n.right),
bottom: E(n.bottom),
width: E(n.width),
height: E(n.height)
}
},
yg = {
getBody: pg("getBody", lg),
getDoc: pg("getDoc", dg),
getWin: pg("getWin", mg),
getSelection: pg("getSelection", gg),
getFrame: vg,
getActiveApi: function(a) {
var c = vg(a);
return lg(c).bind(function(u) {
return dg(c).bind(function(i) {
return mg(c).map(function(o) {
var n = fe.fromDom(i.dom().documentElement),
e = a.getCursorBox.getOrThunk(function() {
return function() {
return Zm(o).bind(function(n) {
return eg(o, n).orThunk(function() {
return Qm(o).filter(function(n) {
return ze(n.start(), n.finish()) && n.soffset() === n.foffset()
}).bind(function(n) {
var e = n.start().dom().getBoundingClientRect();
return 0 < e.width || 0 < e.height ? B.some(e).map(bg) : B.none()
})
})
})
}
}),
t = a.setSelection.getOrThunk(function() {
return function(n, e, t, r) {
Jm(o, n, e, t, r)
}
}),
r = a.clearSelection.getOrThunk(function() {
return function() {
ng(o)
}
});
return {
body: E(u),
doc: E(i),
win: E(o),
html: E(n),
getSelection: l(gg, c),
setSelection: t,
clearSelection: r,
frame: E(c),
onKeyup: hg(a, i, "onKeyup", "keyup"),
onNodeChanged: hg(a, i, "onNodeChanged", "selectionchange"),
onDomChanged: a.onDomChanged,
onScrollToCursor: a.onScrollToCursor,
onScrollToElement: a.onScrollToElement,
onToReading: a.onToReading,
onToEditing: a.onToEditing,
onToolbarScrollStart: a.onToolbarScrollStart,
onTouchContent: a.onTouchContent,
onTapContent: a.onTapContent,
onTouchToolstrip: a.onTouchToolstrip,
getCursorBox: e
}
})
})
})
}
},
wg = "data-ephox-mobile-fullscreen-style",
xg = "position:absolute!important;",
Tg = "top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;",
Sg = Wn.detect().os.isAndroid(),
Og = function(n, e) {
var t, r, o = function(r) {
return function(n) {
var e = ro.get(n, "style"),
t = e === undefined ? "no-styles" : e.trim();
t !== r && (ro.set(n, wg, t), ro.set(n, "style", r))
}
},
i = Qi(n, "*"),
u = An(i, function(n) {
return Zi(n, "*")
}),
a = (t = e, (r = _i.get(t, "background-color")) !== undefined && "" !== r ? "background-color:" + r + "!important" : "background-color:rgb(255,255,255)!important;");
wn(u, o("display:none!important;")), wn(i, o(xg + Tg + a)), o((!0 === Sg ? "" : xg) + Tg + a)(n)
},
Cg = function() {
var n = Ji("[" + wg + "]");
wn(n, function(n) {
var e = ro.get(n, wg);
"no-styles" !== e ? ro.set(n, "style", e) : ro.remove(n, "style"), ro.remove(n, wg)
})
},
kg = function() {
var e = tu("head").getOrDie(),
n = tu('meta[name="viewport"]').getOrThunk(function() {
var n = fe.fromTag("meta");
return ro.set(n, "name", "viewport"), Ye.append(e, n), n
}),
t = ro.get(n, "content");
return {
maximize: function() {
ro.set(n, "content", "width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0")
},
restore: function() {
t !== undefined && null !== t && 0 < t.length ? ro.set(n, "content", t) : ro.set(n, "content", "user-scalable=yes")
}
}
},
Eg = function(e, n) {
var t = kg(),
r = Tl(),
o = Tl();
return {
enter: function() {
n.hide(), bo.add(e.container, Mi.resolve("fullscreen-maximized")), bo.add(e.container, Mi.resolve("android-maximized")), t.maximize(), bo.add(e.body, Mi.resolve("android-scroll-reload")), r.set(fg(e.win, yg.getWin(e.editor).getOrDie("no"))), yg.getActiveApi(e.editor).each(function(n) {
Og(e.container, n.body()), o.set(xm(n, e.toolstrip, e.alloy))
})
},
exit: function() {
t.restore(), n.show(), bo.remove(e.container, Mi.resolve("fullscreen-maximized")), bo.remove(e.container, Mi.resolve("android-maximized")), Cg(), bo.remove(e.body, Mi.resolve("android-scroll-reload")), o.clear(), r.clear()
}
}
},
Dg = function(t, r) {
var o = null;
return {
cancel: function() {
null !== o && (clearTimeout(o), o = null)
},
throttle: function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
null !== o && clearTimeout(o), o = setTimeout(function() {
t.apply(null, n), o = null
}, r)
}
}
},
Ag = function(n, e) {
var t, r, o, i = sf(Yf.sketch({
dom: ms(''),
containerBehaviours: qr([ki.config({
toggleClass: Mi.resolve("mask-tap-icon-selected"),
toggleOnExecute: !1
})])
})),
u = (t = n, r = 200, o = null, {
cancel: function() {
null !== o && (clearTimeout(o), o = null)
},
throttle: function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
null === o && (o = setTimeout(function() {
t.apply(null, n), o = null
}, r))
}
});
return Yf.sketch({
dom: ms(''),
components: [Yf.sketch({
dom: ms(''),
components: [ss.sketch({
dom: ms(''),
components: [i.asSpec()],
action: function(n) {
u.throttle()
},
buttonBehaviours: qr([ki.config({
toggleClass: Mi.resolve("mask-tap-icon-selected")
})])
})]
})]
})
},
Rg = _t([sr("editor", [ur("getFrame"), fr("getBody"), fr("getDoc"), fr("getWin"), fr("getSelection"), fr("setSelection"), fr("clearSelection"), fr("cursorSaver"), fr("onKeyup"), fr("onNodeChanged"), fr("getCursorBox"), ur("onDomChanged"), mr("onTouchContent", k), mr("onTapContent", k), mr("onTouchToolstrip", k), mr("onScrollToCursor", E({
unbind: k
})), mr("onScrollToElement", E({
unbind: k
})), mr("onToEditing", E({
unbind: k
})), mr("onToReading", E({
unbind: k
})), mr("onToolbarScrollStart", h)]), ur("socket"), ur("toolstrip"), ur("dropup"), ur("toolbar"), ur("container"), ur("alloy"), vr("win", function(n) {
return $e.owner(n.socket).dom().defaultView
}), vr("body", function(n) {
return fe.fromDom(n.socket.dom().ownerDocument.body)
}), mr("translate", h), mr("setReadOnly", k), mr("readOnlyOnInit", E(!0))]),
Mg = function(n) {
var e = nr("Getting AndroidWebapp schema", Rg, n);
_i.set(e.toolstrip, "width", "100%");
var t = ad(Ag(function() {
e.setReadOnly(e.readOnlyOnInit()), o.enter()
}, e.translate));
e.alloy.add(t);
var r = {
show: function() {
e.alloy.add(t)
},
hide: function() {
e.alloy.remove(t)
}
};
Ye.append(e.container, t.element());
var o = Eg(e, r);
return {
setReadOnly: e.setReadOnly,
refreshStructure: k,
enter: o.enter,
exit: o.exit,
destroy: k
}
},
Ig = E([mr("shell", !0), ac("toolbarBehaviours", [Ed])]),
Ng = E([Nc({
name: "groups",
overrides: function(n) {
return {
behaviours: qr([Ed.config({})])
}
}
})]),
Bg = cs({
name: "Toolbar",
configFields: Ig(),
partFields: Ng(),
factory: function(e, n, t, r) {
var o = function(n) {
return e.shell() ? B.some(n) : Uc(n, e, "groups")
},
i = e.shell() ? {
behaviours: [Ed.config({})],
components: []
} : {
behaviours: [],
components: n
};
return {
uid: e.uid(),
dom: e.dom(),
components: i.components,
behaviours: C(qr(i.behaviours), cc(e.toolbarBehaviours())),
apis: {
setGroups: function(n, e) {
o(n).fold(function() {
throw console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"), new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")
}, function(n) {
Ed.set(n, e)
})
}
},
domModification: {
attributes: {
role: "group"
}
}
}
},
apis: {
setGroups: function(n, e, t) {
n.setGroups(e, t)
}
}
}),
Fg = E([ur("items"), (Rf = ["itemClass"], sr("markers", yn(Rf, ur))), ac("tgroupBehaviours", [uc])]),
Vg = E([Bc({
name: "items",
unit: "item",
overrides: function(n) {
return {
domModification: {
classes: [n.markers().itemClass()]
}
}
}
})]),
Hg = cs({
name: "ToolbarGroup",
configFields: Fg(),
partFields: Vg(),
factory: function(n, e, t, r) {
return C({
dom: {
attributes: {
role: "toolbar"
}
}
}, {
uid: n.uid(),
dom: n.dom(),
components: e,
behaviours: C(qr([uc.config({
mode: "flow",
selector: "." + n.markers().itemClass()
})]), cc(n.tgroupBehaviours())),
"debug.sketcher": t["debug.sketcher"]
})
}
}),
zg = "data-" + Mi.resolve("horizontal-scroll"),
jg = function(n) {
return "true" === ro.get(n, zg) ? 0 < (t = n).dom().scrollLeft ||
function(n) {
n.dom().scrollLeft = 1;
var e = 0 !== n.dom().scrollLeft;
return n.dom().scrollLeft = 0, e
}(t) : 0 < (e = n).dom().scrollTop ||
function(n) {
n.dom().scrollTop = 1;
var e = 0 !== n.dom().scrollTop;
return n.dom().scrollTop = 0, e
}(e);
var e, t
},
Lg = {
exclusive: function(n, e) {
return lm(n, "touchmove", function(n) {
iu(n.target(), e).filter(jg).fold(function() {
n.raw().preventDefault()
}, k)
})
},
markAsHorizontal: function(n) {
ro.set(n, zg, "true")
}
};
function Ug() {
var e = function(n) {
var e = !0 === n.scrollable ? "${prefix}-toolbar-scrollable-group" : "";
return {
dom: ms(''),
tgroupBehaviours: qr([Wf("adhoc-scrollable-toolbar", !0 === n.scrollable ? [Er(function(n, e) {
_i.set(n.element(), "overflow-x", "auto"), Lg.markAsHorizontal(n.element()), _d.register(n.element())
})] : [])]),
components: [Yf.sketch({
components: [Hg.parts().items({})]
})],
markers: {
itemClass: Mi.resolve("toolbar-group-item")
},
items: n.items
}
},
t = ad(Bg.sketch({
dom: ms(''),
components: [Bg.parts().groups({})],
toolbarBehaviours: qr([ki.config({
toggleClass: Mi.resolve("context-toolbar"),
toggleOnExecute: !1,
aria: {
mode: "none"
}
}), uc.config({
mode: "cyclic"
})]),
shell: !0
})),
n = ad(Yf.sketch({
dom: {
classes: [Mi.resolve("toolstrip")]
},
components: [cd(t)],
containerBehaviours: qr([ki.config({
toggleClass: Mi.resolve("android-selection-context-toolbar"),
toggleOnExecute: !1
})])
})),
r = function() {
Bg.setGroups(t, o.get()), ki.off(t)
},
o = So([]);
return {
wrapper: E(n),
toolbar: E(t),
createGroups: function(n) {
return yn(n, v(Hg.sketch, e))
},
setGroups: function(n) {
o.set(n), r()
},
setContextToolbar: function(n) {
ki.on(t), Bg.setGroups(t, n)
},
restoreToolbar: function() {
ki.isOn(t) && r()
},
refresh: function() {},
focus: function() {
uc.focusIn(t)
}
}
}
var Pg = function(n, e) {
Ed.append(n, cd(e))
},
_g = function(n, e) {
Ed.remove(n, e)
},
Wg = function(n) {
return ad(ss.sketch({
dom: ms(''),
action: function() {
n.run(function(n) {
n.setReadOnly(!1)
})
}
}))
},
$g = function() {
return ad(Yf.sketch({
dom: ms(''),
components: [],
containerBehaviours: qr([Ed.config({})])
}))
},
Gg = function(n, e, t, r) {
(!0 === t ? To.toAlpha : To.toOmega)(r), (t ? Pg : _g)(n, e)
},
qg = function(e, n) {
return n.getAnimationRoot().fold(function() {
return e.element()
}, function(n) {
return n(e)
})
},
Yg = function(n) {
return n.dimension().property()
},
Xg = function(n, e) {
return n.dimension().getDimension()(e)
},
Kg = function(n, e) {
var t = qg(n, e);
Xl(t, [e.shrinkingClass(), e.growingClass()])
},
Jg = function(n, e) {
bo.remove(n.element(), e.openClass()), bo.add(n.element(), e.closedClass()), _i.set(n.element(), Yg(e), "0px"), _i.reflow(n.element())
},
Qg = function(n, e) {
bo.remove(n.element(), e.closedClass()), bo.add(n.element(), e.openClass()), _i.remove(n.element(), Yg(e))
},
Zg = function(n, e, t) {
t.setCollapsed(), _i.set(n.element(), Yg(e), Xg(e, n.element())), _i.reflow(n.element());
var r = qg(n, e);
bo.add(r, e.shrinkingClass()), Jg(n, e), e.onStartShrink()(n)
},
nv = function(n, e, t) {
var r = function(n, e) {
Qg(n, e);
var t = Xg(e, n.element());
return Jg(n, e), t
}(n, e),
o = qg(n, e);
bo.add(o, e.growingClass()), Qg(n, e), _i.set(n.element(), Yg(e), r), t.setExpanded(), e.onStartGrow()(n)
},
ev = function(n, e, t) {
var r = qg(n, e);
return !0 === bo.has(r, e.growingClass())
},
tv = function(n, e, t) {
var r = qg(n, e);
return !0 === bo.has(r, e.shrinkingClass())
},
rv = Object.freeze({
grow: function(n, e, t) {
t.isExpanded() || nv(n, e, t)
},
shrink: function(n, e, t) {
t.isExpanded() && Zg(n, e, t)
},
immediateShrink: function(n, e, t) {
var r, o;
t.isExpanded() && (r = n, o = e, t.setCollapsed(), _i.set(r.element(), Yg(o), Xg(o, r.element())), _i.reflow(r.element()), Kg(r, o), Jg(r, o), o.onStartShrink()(r), o.onShrunk()(r))
},
hasGrown: function(n, e, t) {
return t.isExpanded()
},
hasShrunk: function(n, e, t) {
return t.isCollapsed()
},
isGrowing: ev,
isShrinking: tv,
isTransitioning: function(n, e, t) {
return !0 === ev(n, e) || !0 === tv(n, e)
},
toggleGrow: function(n, e, t) {
(t.isExpanded() ? Zg : nv)(n, e, t)
},
disableTransitions: Kg
}),
ov = Object.freeze({
exhibit: function(n, e) {
var t = e.expanded();
return Nr(t ? {
classes: [e.openClass()],
styles: {}
} : {
classes: [e.closedClass()],
styles: Et(e.dimension().property(), "0px")
})
},
events: function(t, r) {
return br([wr(J(), function(n, e) {
e.event().raw().propertyName === t.dimension().property() && (Kg(n, t), r.isExpanded() && _i.remove(n.element(), t.dimension().property()), (r.isExpanded() ? t.onGrown() : t.onShrunk())(n))
})])
}
}),
iv = [ur("closedClass"), ur("openClass"), ur("shrinkingClass"), ur("growingClass"), fr("getAnimationRoot"), ai("onShrunk"), ai("onStartShrink"), ai("onGrown"), ai("onStartGrow"), mr("expanded", !1), ar("dimension", rr("property", {
width: [li("property", "width"), li("getDimension", function(n) {
return Xs(n) + "px"
})],
height: [li("property", "height"), li("getDimension", function(n) {
return Yi(n) + "px"
})]
}))],
uv = Object.freeze({
init: function(n) {
var e = So(n.expanded());
return Gr({
isExpanded: function() {
return !0 === e.get()
},
isCollapsed: function() {
return !1 === e.get()
},
setCollapsed: l(e.set, !1),
setExpanded: l(e.set, !0),
readState: function() {
return "expanded: " + e.get()
}
})
}
}),
av = Xr({
fields: iv,
name: "sliding",
active: ov,
apis: rv,
state: uv
}),
cv = function(e, t) {
var r = ad(Yf.sketch({
dom: {
tag: "div",
classes: [Mi.resolve("dropup")]
},
components: [],
containerBehaviours: qr([Ed.config({}), av.config({
closedClass: Mi.resolve("dropup-closed"),
openClass: Mi.resolve("dropup-open"),
shrinkingClass: Mi.resolve("dropup-shrinking"),
growingClass: Mi.resolve("dropup-growing"),
dimension: {
property: "height"
},
onShrunk: function(n) {
e(), t(), Ed.set(n, [])
},
onGrown: function(n) {
e(), t()
}
}), Di(function(n, e) {
o(k)
})])
})),
o = function(n) {
window.requestAnimationFrame(function() {
n(), av.shrink(r)
})
};
return {
appear: function(n, e, t) {
!0 === av.hasShrunk(r) && !1 === av.isTransitioning(r) && window.requestAnimationFrame(function() {
e(t), Ed.set(r, [n()]), av.grow(r)
})
},
disappear: o,
component: E(r),
element: r.element
}
},
sv = Wn.detect().browser.isFirefox(),
fv = Pt([cr("triggerEvent"), cr("broadcastEvent"), mr("stopBackspace", !0)]),
lv = function(e, n) {
var t, r, o, i, u = nr("Getting GUI events settings", fv, n),
a = Wn.detect().deviceType.isTouch() ? ["touchstart", "touchmove", "touchend", "gesturestart"] : ["mousedown", "mouseup", "mouseover", "mousemove", "mouseout", "click"],
c = bm(u),
s = yn(a.concat(["selectstart", "input", "contextmenu", "change", "transitionend", "drag", "dragstart", "dragend", "dragenter", "dragleave", "dragover", "drop"]), function(n) {
return lm(e, n, function(e) {
c.fireIfReady(e, n).each(function(n) {
n && e.kill()
}), u.triggerEvent(n, e) && e.kill()
})
}),
f = lm(e, "keydown", function(n) {
var e;
u.triggerEvent("keydown", n) ? n.kill() : !0 !== u.stopBackspace || 8 !== (e = n).raw().which || hn(["input", "textarea"], be.name(e.target())) || n.prevent()
}),
l = (t = e, r = function(n) {
u.triggerEvent("focusin", n) && n.kill()
}, sv ? dm(t, "focus", r) : lm(t, "focusin", r)),
d = (o = e, i = function(n) {
u.triggerEvent("focusout", n) && n.kill(), setTimeout(function() {
u.triggerEvent(qn(), n)
}, 0)
}, sv ? dm(o, "blur", i) : lm(o, "focusout", i)),
m = $e.defaultView(e),
g = lm(m, "scroll", function(n) {
u.broadcastEvent(ee(), n) && n.kill()
});
return {
unbind: function() {
wn(s, function(n) {
n.unbind()
}), f.unbind(), l.unbind(), d.unbind(), g.unbind()
}
}
},
dv = function(n, e) {
var t = kt(n, "target").map(function(n) {
return n()
}).getOr(e);
return So(t)
},
mv = ct([{
stopped: []
}, {
resume: ["element"]
}, {
complete: []
}]),
gv = function(n, r, e, t, o, i) {
var u, a, c, s, f = n(r, t),
l = (u = e, a = o, c = So(!1), s = So(!1), {
stop: function() {
c.set(!0)
},
cut: function() {
s.set(!0)
},
isStopped: c.get,
isCut: s.get,
event: E(u),
setSource: a.set,
getSource: a.get
});
return f.fold(function() {
return i.logEventNoHandlers(r, t), mv.complete()
}, function(e) {
var t = e.descHandler();
return Ll(t)(l), l.isStopped() ? (i.logEventStopped(r, e.element(), t.purpose()), mv.stopped()) : l.isCut() ? (i.logEventCut(r, e.element(), t.purpose()), mv.complete()) : $e.parent(e.element()).fold(function() {
return i.logNoParent(r, e.element(), t.purpose()), mv.complete()
}, function(n) {
return i.logEventResponse(r, e.element(), t.purpose()), mv.resume(n)
})
})
},
vv = function(e, t, r, n, o, i) {
return gv(e, t, r, n, o, i).fold(function() {
return !0
}, function(n) {
return vv(e, t, r, n, o, i)
}, function() {
return !1
})
},
pv = function(n, e, t) {
var r, o, i = (r = e, o = So(!1), {
stop: function() {
o.set(!0)
},
cut: k,
isStopped: o.get,
isCut: E(!1),
event: E(r),
setSource: c("Cannot set source of a broadcasted event"),
getSource: c("Cannot get source of a broadcasted event")
});
return wn(n, function(n) {
var e = n.descHandler();
Ll(e)(i)
}), i.isStopped()
},
hv = function(n, e, t, r, o) {
var i = dv(t, r);
return vv(n, e, t, r, i, o)
},
bv = function(n, e, t) {
return Do.closest(n, function(n) {
return e(n).isSome()
}, t).bind(e)
},
yv = Te("element", "descHandler"),
wv = function(n, e) {
return {
id: E(n),
descHandler: E(e)
}
};
function xv() {
var i = {};
return {
registerId: function(r, o, n) {
V(n, function(n, e) {
var t = i[e] !== undefined ? i[e] : {};
t[o] = jl(n, r), i[e] = t
})
},
unregisterId: function(t) {
V(i, function(n, e) {
n.hasOwnProperty(t) && delete n[t]
})
},
filterByType: function(n) {
return kt(i, n).map(function(n) {
return j(n, function(n, e) {
return wv(e, n)
})
}).getOr([])
},
find: function(n, e, t) {
var o = Ot(e)(i);
return bv(t, function(n) {
return t = o, ns(r = n).fold(function() {
return B.none()
}, function(n) {
var e = Ot(n);
return t.bind(e).map(function(n) {
return yv(r, n)
})
});
var t, r
}, n)
}
}
}
function Tv() {
var r = xv(),
o = {},
i = function(r) {
var n = r.element();
return ns(n).fold(function() {
return n = "uid-", e = r.element(), t = bc(Qc + n), ro.set(e, Zc, t), t;
var n, e, t
}, function(n) {
return n
})
},
u = function(n) {
ns(n.element()).each(function(n) {
o[n] = undefined, r.unregisterId(n)
})
};
return {
find: function(n, e, t) {
return r.find(n, e, t)
},
filter: function(n) {
return r.filterByType(n)
},
register: function(n) {
var e = i(n);
Rt(o, e) &&
function(n, e) {
var t = o[e];
if (t !== n) throw new Error('The tagId "' + e + '" is already used by: ' + qo(t.element()) + "\nCannot use it for: " + qo(n.element()) + "\nThe conflicting element is" + (xe.inBody(t.element()) ? " " : " not ") + "already in the DOM");
u(n)
}(n, e);
var t = [n];
r.registerId(t, e, n.events()), o[e] = n
},
unregister: u,
getById: function(n) {
return Ot(n)(o)
}
}
}
var Sv = function(t) {
var r = function(e) {
return $e.parent(t.element()).fold(function() {
return !0
}, function(n) {
return ze(e, n)
})
},
o = Tv(),
s = function(n, e) {
return o.find(r, n, e)
},
n = lv(t.element(), {
triggerEvent: function(u, a) {
return ei(u, a.target(), function(n) {
return e = s, t = u, o = n, i = (r = a).target(), hv(e, t, r, i, o);
var e, t, r, o, i
})
},
broadcastEvent: function(n, e) {
var t = o.filter(n);
return pv(t, e)
}
}),
i = Nl({
debugInfo: E("real"),
triggerEvent: function(e, t, r) {
ei(e, t, function(n) {
hv(s, e, r, t, n)
})
},
triggerFocus: function(a, c) {
ns(a).fold(function() {
Io(a)
}, function(n) {
ei(Gn(), a, function(n) {
var e, t, r, o, i, u;
e = s, t = Gn(), r = {
originator: E(c),
kill: k,
prevent: k,
target: E(a)
}, i = n, u = dv(r, o = a), gv(e, t, r, o, u, i)
})
})
},
triggerEscape: function(n, e) {
i.triggerEvent("keydown", n.element(), e.event())
},
getByUid: function(n) {
return m(n)
},
getByDom: function(n) {
return g(n)
},
build: ad,
addToGui: function(n) {
a(n)
},
removeFromGui: function(n) {
c(n)
},
addToWorld: function(n) {
e(n)
},
removeFromWorld: function(n) {
u(n)
},
broadcast: function(n) {
l(n)
},
broadcastOn: function(n, e) {
d(n, e)
},
isConnected: E(!0)
}),
e = function(n) {
n.connect(i), be.isText(n.element()) || (o.register(n), wn(n.components(), e), i.triggerEvent(ne(), n.element(), {
target: E(n.element())
}))
},
u = function(n) {
be.isText(n.element()) || (wn(n.components(), u), o.unregister(n)), n.disconnect()
},
a = function(n) {
et(t, n)
},
c = function(n) {
ot(n)
},
f = function(t) {
var n = o.filter(Yn());
wn(n, function(n) {
var e = n.descHandler();
Ll(e)(t)
})
},
l = function(n) {
f({
universal: E(!0),
data: E(n)
})
},
d = function(n, e) {
f({
universal: E(!1),
channels: E(n),
data: E(e)
})
},
m = function(n) {
return o.getById(n).fold(function() {
return at.error(new Error('Could not find component with uid: "' + n + '" in system.'))
}, at.value)
},
g = function(n) {
var e = ns(n).getOr("not found");
return m(e)
};
return e(t), {
root: E(t),
element: t.element,
destroy: function() {
n.unbind(), Qe.remove(t.element())
},
add: a,
remove: c,
getByUid: m,
getByDom: g,
addToWorld: e,
removeFromWorld: u,
broadcast: l,
broadcastOn: d
}
},
Ov = E(Mi.resolve("readonly-mode")),
Cv = E(Mi.resolve("edit-mode"));
function kv(n) {
var e = ad(Yf.sketch({
dom: {
classes: [Mi.resolve("outer-container")].concat(n.classes)
},
containerBehaviours: qr([To.config({
alpha: Ov(),
omega: Cv()
})])
}));
return Sv(e)
}
var Ev = function(n, e) {
var t = fe.fromTag("input");
_i.setAll(t, {
opacity: "0",
position: "absolute",
top: "-1000px",
left: "-1000px"
}), Ye.append(n, t), Io(t), e(t), Qe.remove(t)
},
Dv = function(n) {
var e = n.getSelection();
if (0 < e.rangeCount) {
var t = e.getRangeAt(0),
r = n.document.createRange();
r.setStart(t.startContainer, t.startOffset), r.setEnd(t.endContainer, t.endOffset), e.removeAllRanges(), e.addRange(r)
}
},
Av = function(n, e) {
Bo().each(function(n) {
ze(n, e) || No(n)
}), n.focus(), Io(fe.fromDom(n.document.body)), Dv(n)
},
Rv = {
stubborn: function(n, e, t, r) {
var o = function() {
Av(e, r)
},
i = lm(t, "keydown", function(n) {
hn(["input", "textarea"], be.name(n.target())) || o()
});
return {
toReading: function() {
Ev(n, No)
},
toEditing: o,
onToolbarTouch: function() {},
destroy: function() {
i.unbind()
}
}
},
timid: function(n, e, t, r) {
var o = function() {
No(r)
};
return {
toReading: function() {
o()
},
toEditing: function() {
Av(e, r)
},
onToolbarTouch: function() {
o()
},
destroy: k
}
}
},
Mv = function(t, r, o, i, n) {
var u = function() {
r.run(function(n) {
n.refreshSelection()
})
},
e = function(n, e) {
var t = n - i.dom().scrollTop;
r.run(function(n) {
n.scrollIntoView(t, t + e)
})
},
a = function() {
r.run(function(n) {
n.clearSelection()
})
},
c = function() {
t.getCursorBox().each(function(n) {
e(n.top(), n.height())
}), r.run(function(n) {
n.syncHeight()
})
},
s = ym(t),
f = Dg(c, 300),
l = [t.onKeyup(function() {
a(), f.throttle()
}), t.onNodeChanged(u), t.onDomChanged(f.throttle), t.onDomChanged(u), t.onScrollToCursor(function(n) {
n.preventDefault(), f.throttle()
}), t.onScrollToElement(function(n) {
n.element(), e(r, i)
}), t.onToEditing(function() {
r.run(function(n) {
n.toEditing()
})
}), t.onToReading(function() {
r.run(function(n) {
n.toReading()
})
}), lm(t.doc(), "touchend", function(n) {
ze(t.html(), n.target()) || ze(t.body(), n.target())
}), lm(o, "transitionend", function(n) {
var e;
"height" === n.raw().propertyName && (e = Yi(o), r.run(function(n) {
n.setViewportOffset(e)
}), u(), c())
}), dm(o, "touchstart", function(n) {
var e;
r.run(function(n) {
n.highlightSelection()
}), e = n, r.run(function(n) {
n.onToolbarTouch(e)
}), t.onTouchToolstrip()
}), lm(t.body(), "touchstart", function(n) {
a(), t.onTouchContent(), s.fireTouchstart(n)
}), s.onTouchmove(), s.onTouchend(), lm(t.body(), "click", function(n) {
n.kill()
}), lm(o, "touchmove", function() {
t.onToolbarScrollStart()
})];
return {
destroy: function() {
wn(l, function(n) {
n.unbind()
})
}
}
},
Iv = function(n) {
var t = B.none(),
e = [],
r = function(n) {
o() ? u(n) : e.push(n)
},
o = function() {
return t.isSome()
},
i = function(n) {
wn(n, u)
},
u = function(e) {
t.each(function(n) {
setTimeout(function() {
e(n)
}, 0)
})
};
return n(function(n) {
t = B.some(n), i(e), e = []
}), {
get: r,
map: function(t) {
return Iv(function(e) {
r(function(n) {
e(t(n))
})
})
},
isReady: o
}
},
Nv = {
nu: Iv,
pure: function(e) {
return Iv(function(n) {
n(e)
})
}
},
Bv = function(e) {
var n = function(n) {
var r;
e((r = n, function() {
for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
var t = this;
setTimeout(function() {
r.apply(t, n)
}, 0)
}))
};
return {
map: function(r) {
return Bv(function(t) {
n(function(n) {
var e = r(n);
t(e)
})
})
},
bind: function(t) {
return Bv(function(e) {
n(function(n) {
t(n).get(e)
})
})
},
anonBind: function(t) {
return Bv(function(e) {
n(function(n) {
t.get(e)
})
})
},
toLazy: function() {
return Nv.nu(n)
},
get: n
}
},
Fv = {
nu: Bv,
pure: function(e) {
return Bv(function(n) {
n(e)
})
}
},
Vv = function(n, e, t) {
return Math.abs(n - e) <= t ? B.none() : n < e ? B.some(n + t) : B.some(n - t)
},
Hv = function() {
var s = null;
return {
animate: function(r, o, n, i, e, t) {
var u = !1,
a = function(n) {
u = !0, e(n)
};
clearInterval(s);
var c = function(n) {
clearInterval(s), a(n)
};
s = setInterval(function() {
var t = r();
Vv(t, o, n).fold(function() {
clearInterval(s), a(o)
}, function(n) {
if (i(n, c), !u) {
var e = r();
(e !== n || Math.abs(e - o) > Math.abs(t - o)) && (clearInterval(s), a(o))
}
})
}, t)
}
}
},
zv = function(e, t) {
return Ko([{
width: 320,
height: 480,
keyboard: {
portrait: 300,
landscape: 240
}
}, {
width: 320,
height: 568,
keyboard: {
portrait: 300,
landscape: 240
}
}, {
width: 375,
height: 667,
keyboard: {
portrait: 305,
landscape: 240
}
}, {
width: 414,
height: 736,
keyboard: {
portrait: 320,
landscape: 240
}
}, {
width: 768,
height: 1024,
keyboard: {
portrait: 320,
landscape: 400
}
}, {
width: 1024,
height: 1366,
keyboard: {
portrait: 380,
landscape: 460
}
}], function(n) {
return e <= n.width && t <= n.height ? B.some(n.keyboard) : B.none()
}).getOr({
portrait: t / 5,
landscape: e / 4
})
},
jv = function(n) {
var e, t = gm(n).isPortrait(),
r = zv((e = n).screen.width, e.screen.height),
o = t ? r.portrait : r.landscape;
return (t ? n.screen.height : n.screen.width) - n.innerHeight > o ? 0 : o
},
Lv = function(n, e) {
var t = $e.owner(n).dom().defaultView;
return Yi(n) + Yi(e) - jv(t)
},
Uv = Lv,
Pv = function(n, e, t) {
var r = Lv(e, t),
o = Yi(e) + Yi(t) - r;
_i.set(n, "padding-bottom", o + "px")
},
_v = ct([{
fixed: ["element", "property", "offsetY"]
}, {
scroller: ["element", "offsetY"]
}]),
Wv = "data-" + Mi.resolve("position-y-fixed"),
$v = "data-" + Mi.resolve("y-property"),
Gv = "data-" + Mi.resolve("scrolling"),
qv = "data-" + Mi.resolve("last-window-height"),
Yv = function(n) {
return Tm(n, Wv)
},
Xv = function(n, e) {
var t = ro.get(n, $v);
return _v.fixed(n, t, e)
},
Kv = function(n, e) {
return _v.scroller(n, e)
},
Jv = function(n) {
var e = Yv(n);
return ("true" === ro.get(n, Gv) ? Kv : Xv)(n, e)
},
Qv = function(n, e, t) {
var r = $e.owner(n).dom().defaultView.innerHeight;
return ro.set(n, qv, r + "px"), r - e - t
},
Zv = function(n) {
var e = nu(n, "[" + Wv + "]");
return yn(e, Jv)
},
np = function(r, o, i, u) {
var n, e, t, a, c, s, f, l, d = $e.owner(r).dom().defaultView,
m = (l = ro.get(f = i, "style"), _i.setAll(f, {
position: "absolute",
top: "0px"
}), ro.set(f, Wv, "0px"), ro.set(f, $v, "top"), {
restore: function() {
ro.set(f, "style", l || ""), ro.remove(f, Wv), ro.remove(f, $v)
}
}),
g = Yi(i),
v = Yi(u),
p = Qv(r, g, v),
h = (t = g, a = p, s = ro.get(c = r, "style"), _d.register(c), _i.setAll(c, {
position: "absolute",
height: a + "px",
width: "100%",
top: t + "px"
}), ro.set(c, Wv, t + "px"), ro.set(c, Gv, "true"), ro.set(c, $v, "top"), {
restore: function() {
_d.deregister(c), ro.set(c, "style", s || ""), ro.remove(c, Wv), ro.remove(c, Gv), ro.remove(c, $v)
}
}),
b = (e = ro.get(n = u, "style"), _i.setAll(n, {
position: "absolute",
bottom: "0px"
}), ro.set(n, Wv, "0px"), ro.set(n, $v, "bottom"), {
restore: function() {
ro.set(n, "style", e || ""), ro.remove(n, Wv), ro.remove(n, $v)
}
}),
y = !0,
w = function() {
var n = d.innerHeight;
return Tm(r, qv) < n
},
x = function() {
if (y) {
var n = Yi(i),
e = Yi(u),
t = Qv(r, n, e);
ro.set(r, Wv, n + "px"), _i.set(r, "height", t + "px"), _i.set(u, "bottom", -(n + t + e) + "px"), Pv(o, r, u)
}
};
return Pv(o, r, u), {
setViewportOffset: function(n) {
ro.set(r, Wv, n + "px"), x()
},
isExpanding: w,
isShrinking: T(w),
refresh: x,
restore: function() {
y = !1, m.restore(), h.restore(), b.restore()
}
}
},
ep = Yv,
tp = Hv(),
rp = "data-" + Mi.resolve("last-scroll-top"),
op = function(n) {
var e = _i.getRaw(n, "top").getOr("0");
return parseInt(e, 10)
},
ip = function(n) {
return parseInt(n.dom().scrollTop, 10)
},
up = function(n, e) {
var t = e + ep(n) + "px";
_i.set(n, "top", t)
},
ap = function(t, r, o) {
return Fv.nu(function(n) {
var e = l(ip, t);
tp.animate(e, r, 15, function(n) {
t.dom().scrollTop = n, _i.set(t, "top", op(t) + 15 + "px")
}, function() {
t.dom().scrollTop = r, _i.set(t, "top", o + "px"), n(r)
}, 10)
})
},
cp = function(o, i) {
return Fv.nu(function(n) {
var e = l(ip, o);
ro.set(o, rp, e());
var t = Math.abs(i - e()),
r = Math.ceil(t / 10);
tp.animate(e, i, r, function(n, e) {
Tm(o, rp) !== o.dom().scrollTop ? e(o.dom().scrollTop) : (o.dom().scrollTop = n, ro.set(o, rp, n))
}, function() {
o.dom().scrollTop = i, ro.set(o, rp, i), n(i)
}, 10)
})
},
sp = function(i, u) {
return Fv.nu(function(n) {
var e = l(op, i),
t = function(n) {
_i.set(i, "top", n + "px")
},
r = Math.abs(u - e()),
o = Math.ceil(r / 10);
tp.animate(e, u, o, t, function() {
t(u), n(u)
}, 10)
})
},
fp = function(e, t, r) {
var o = $e.owner(e).dom().defaultView;
return Fv.nu(function(n) {
up(e, r), up(t, r), o.scrollTo(0, r), n(r)
})
},
lp = function(n, e, t, r, o) {
var i = Uv(e, t),
u = l(Dv, n);
i < r || i < o ? cp(e, e.dom().scrollTop - i + o).get(u) : r < 0 && cp(e, e.dom().scrollTop + r).get(u)
},
dp = function(u, n) {
return n(function(r) {
var o = [],
i = 0;
0 === u.length ? r([]) : wn(u, function(n, e) {
var t;
n.get((t = e, function(n) {
o[t] = n, ++i >= u.length && r(o)
}))
})
})
},
mp = function(n, c) {
return n.fold(function(n, e, t) {
return r = n, o = e, u = c + (i = t), _i.set(r, o, u + "px"), Fv.pure(i);
var r, o, i, u
}, function(n, e) {
return t = n, o = c + (r = e), i = _i.getRaw(t, "top").getOr(r), u = o - parseInt(i, 10), a = t.dom().scrollTop + u, ap(t, a, o);
var t, r, o, i, u, a
})
},
gp = function(n, e) {
var t = Zv(n),
r = yn(t, function(n) {
return mp(n, e)
});
return dp(r, Fv.nu)
},
vp = function(e, t, n, r, o, i) {
var u, a, c = (u = function(n) {
return fp(e, t, n)
}, a = So(Nv.pure({})), {
start: function(e) {
var n = Nv.nu(function(n) {
return u(e).get(n)
});
a.set(n)
},
idle: function(n) {
a.get().get(function() {
n()
})
}
}),
s = Dg(function() {
c.idle(function() {
gp(n, r.pageYOffset).get(function() {
var n;
(n = og(i), B.from(n[0]).bind(function(n) {
var e = n.top() - t.dom().scrollTop;
return e > r.innerHeight + 5 || e < -5 ? B.some({
top: E(e),
bottom: E(e + n.height())
}) : B.none()
})).each(function(n) {
t.dom().scrollTop = t.dom().scrollTop + n.top()
}), c.start(0), o.refresh()
})
})
}, 1e3),
f = lm(fe.fromDom(r), "scroll", function() {
r.pageYOffset < 0 || s.throttle()
});
return gp(n, r.pageYOffset).get(h), {
unbind: f.unbind
}
},
pp = function(n) {
var t = n.cWin(),
e = n.ceBody(),
r = n.socket(),
o = n.toolstrip(),
i = n.toolbar(),
u = n.contentElement(),
a = n.keyboardType(),
c = n.outerWindow(),
s = n.dropup(),
f = np(r, e, o, s),
l = a(n.outerBody(), t, xe.body(), u, o, i),
d = vm(c, {
onChange: k,
onReady: f.refresh
});
d.onAdjustment(function() {
f.refresh()
});
var m = lm(fe.fromDom(c), "resize", function() {
f.isExpanding() && f.refresh()
}),
g = vp(o, r, n.outerBody(), c, f, t),
v = function(t, e) {
var n = t.document,
r = fe.fromTag("div");
bo.add(r, Mi.resolve("unfocused-selections")), Ye.append(fe.fromDom(n.documentElement), r);
var o = lm(r, "touchstart", function(n) {
n.prevent(), Av(t, e), u()
}),
i = function(n) {
var e = fe.fromTag("span");
return Yl(e, [Mi.resolve("layer-editor"), Mi.resolve("unfocused-selection")]), _i.setAll(e, {
left: n.left() + "px",
top: n.top() + "px",
width: n.width() + "px",
height: n.height() + "px"
}), e
},
u = function() {
Qe.empty(r)
};
return {
update: function() {
u();
var n = og(t),
e = yn(n, i);
Ke(r, e)
},
isActive: function() {
return 0 < $e.children(r).length
},
destroy: function() {
o.unbind(), Qe.remove(r)
},
clear: u
}
}(t, u),
p = function() {
v.clear()
};
return {
toEditing: function() {
l.toEditing(), p()
},
toReading: function() {
l.toReading()
},
onToolbarTouch: function(n) {
l.onToolbarTouch(n)
},
refreshSelection: function() {
v.isActive() && v.update()
},
clearSelection: p,
highlightSelection: function() {
v.update()
},
scrollIntoView: function(n, e) {
lp(t, r, s, n, e)
},
updateToolbarPadding: k,
setViewportOffset: function(n) {
f.setViewportOffset(n), sp(r, n).get(h)
},
syncHeight: function() {
_i.set(u, "height", u.dom().contentWindow.document.body.scrollHeight + "px")
},
refreshStructure: f.refresh,
destroy: function() {
f.restore(), d.destroy(), g.unbind(), m.unbind(), l.destroy(), v.destroy(), Ev(xe.body(), No)
}
}
},
hp = function(r, n) {
var o = kg(),
i = Sl(),
u = Sl(),
a = Tl(),
c = Tl();
return {
enter: function() {
n.hide();
var t = fe.fromDom(document);
yg.getActiveApi(r.editor).each(function(n) {
i.set({
socketHeight: _i.getRaw(r.socket, "height"),
iframeHeight: _i.getRaw(n.frame(), "height"),
outerScroll: document.body.scrollTop
}), u.set({
exclusives: Lg.exclusive(t, "." + _d.scrollable())
}), bo.add(r.container, Mi.resolve("fullscreen-maximized")), Og(r.container, n.body()), o.maximize(), _i.set(r.socket, "overflow", "scroll"), _i.set(r.socket, "-webkit-overflow-scrolling", "touch"), Io(n.body());
var e = De(["cWin", "ceBody", "socket", "toolstrip", "toolbar", "dropup", "contentElement", "cursor", "keyboardType", "isScrolling", "outerWindow", "outerBody"], []);
a.set(pp(e({
cWin: n.win(),
ceBody: n.body(),
socket: r.socket,
toolstrip: r.toolstrip,
toolbar: r.toolbar,
dropup: r.dropup.element(),
contentElement: n.frame(),
cursor: k,
outerBody: r.body,
outerWindow: r.win,
keyboardType: Rv.stubborn,
isScrolling: function() {
return u.get().exists(function(n) {
return n.socket.isScrolling()
})
}
}))), a.run(function(n) {
n.syncHeight()
}), c.set(Mv(n, a, r.toolstrip, r.socket, r.dropup))
})
},
refreshStructure: function() {
a.run(function(n) {
n.refreshStructure()
})
},
exit: function() {
o.restore(), c.clear(), a.clear(), n.show(), i.on(function(n) {
n.socketHeight.each(function(n) {
_i.set(r.socket, "height", n)
}), n.iframeHeight.each(function(n) {
_i.set(r.editor.getFrame(), "height", n)
}), document.body.scrollTop = n.scrollTop
}), i.clear(), u.on(function(n) {
n.exclusives.unbind()
}), u.clear(), bo.remove(r.container, Mi.resolve("fullscreen-maximized")), Cg(), _d.deregister(r.toolbar), _i.remove(r.socket, "overflow"), _i.remove(r.socket, "-webkit-overflow-scrolling"), No(r.editor.getFrame()), yg.getActiveApi(r.editor).each(function(n) {
n.clearSelection()
})
}
}
},
bp = function(n) {
var e = nr("Getting IosWebapp schema", Rg, n);
_i.set(e.toolstrip, "width", "100%"), _i.set(e.container, "position", "relative");
var t = ad(Ag(function() {
e.setReadOnly(e.readOnlyOnInit()), r.enter()
}, e.translate));
e.alloy.add(t);
var r = hp(e, {
show: function() {
e.alloy.add(t)
},
hide: function() {
e.alloy.remove(t)
}
});
return {
setReadOnly: e.setReadOnly,
refreshStructure: r.refreshStructure,
enter: r.enter,
exit: r.exit,
destroy: k
}
},
yp = tinymce.util.Tools.resolve("tinymce.EditorManager"),
wp = function(n) {
var e = kt(n.settings, "skin_url").fold(function() {
return yp.baseURL + "/skins/lightgray"
}, function(n) {
return n
});
return {
content: e + "/content.mobile.min.css",
ui: e + "/skin.mobile.min.css"
}
},
xp = function(n, e, t) {
n.system().broadcastOn([jo.formatChanged()], {
command: e,
state: t
})
},
Tp = function(r, n) {
var e = F(n.formatter.get());
wn(e, function(e) {
n.formatter.formatChanged(e, function(n) {
xp(r, e, n)
})
}), wn(["ul", "ol"], function(t) {
n.selection.selectorChanged(t, function(n, e) {
xp(r, t, n)
})
})
},
Sp = (E(["x-small", "small", "medium", "large", "x-large"]), function(n) {
var e = function() {
n._skinLoaded = !0, n.fire("SkinLoaded")
};
return function() {
n.initialized ? e() : n.on("init", e)
}
}),
Op = E("toReading"),
Cp = E("toEditing");
Ho.add("mobile", function(C) {
return {
getNotificationManagerImpl: function() {
return {
open: h,
close: k,
reposition: k,
getArgs: h
}
},
renderUI: function(n) {
var e = wp(C);
0 == (!1 === C.settings.skin) ? (C.contentCSS.push(e.content), Vo.DOM.styleSheetLoader.load(e.ui, Sp(C))) : Sp(C)();
var t, r, o, i, u, a, c, s, f, l, d, m, g, v, p = function() {
C.fire("scrollIntoView")
},
h = fe.fromTag("div"),
b = Wn.detect().os.isAndroid() ? (s = p, f = kv({
classes: [Mi.resolve("android-container")]
}), l = Ug(), d = Tl(), m = Wg(d), g = $g(), v = cv(k, s), f.add(l.wrapper()), f.add(g), f.add(v.component()), {
system: E(f),
element: f.element,
init: function(n) {
d.set(Mg(n))
},
exit: function() {
d.run(function(n) {
n.exit(), Ed.remove(g, m)
})
},
setToolbarGroups: function(n) {
var e = l.createGroups(n);
l.setGroups(e)
},
setContextToolbar: function(n) {
var e = l.createGroups(n);
l.setContextToolbar(e)
},
focusToolbar: function() {
l.focus()
},
restoreToolbar: function() {
l.restoreToolbar()
},
updateMode: function(n) {
Gg(g, m, n, f.root())
},
socket: E(g),
dropup: E(v)
}) : (t = p, r = kv({
classes: [Mi.resolve("ios-container")]
}), o = Ug(), i = Tl(), u = Wg(i), a = $g(), c = cv(function() {
i.run(function(n) {
n.refreshStructure()
})
}, t), r.add(o.wrapper()), r.add(a), r.add(c.component()), {
system: E(r),
element: r.element,
init: function(n) {
i.set(bp(n))
},
exit: function() {
i.run(function(n) {
Ed.remove(a, u), n.exit()
})
},
setToolbarGroups: function(n) {
var e = o.createGroups(n);
o.setGroups(e)
},
setContextToolbar: function(n) {
var e = o.createGroups(n);
o.setContextToolbar(e)
},
focusToolbar: function() {
o.focus()
},
restoreToolbar: function() {
o.restoreToolbar()
},
updateMode: function(n) {
Gg(a, u, n, r.root())
},
socket: E(a),
dropup: E(c)
}),
y = fe.fromDom(n.targetNode);
Ye.after(y, h), function(n, e) {
Ye.append(n, e.element());
var t = $e.children(e.element());
wn(t, function(n) {
e.getByDom(n).each(nt)
})
}(h, b.system());
var w = n.targetNode.ownerDocument.defaultView,
x = vm(w, {
onChange: function() {
b.system().broadcastOn([jo.orientationChanged()], {
width: pm(w)
})
},
onReady: k
}),
T = function(n, e, t, r) {
!1 === r && C.selection.collapse();
var o = S(n, e, t);
b.setToolbarGroups(!0 === r ? o.readOnly : o.main), C.setMode(!0 === r ? "readonly" : "design"), C.fire(!0 === r ? Op() : Cp()), b.updateMode(r)
},
S = function(n, e, t) {
var r = n.get(),
o = {
readOnly: r.backToMask.concat(e.get()),
main: r.backToMask.concat(t.get())
};
return o
},
O = function(n, e) {
return C.on(n, e), {
unbind: function() {
C.off(n)
}
}
};
return C.on("init", function() {
b.init({
editor: {
getFrame: function() {
return fe.fromDom(C.contentAreaContainer.querySelector("iframe"))
},
onDomChanged: function() {
return {
unbind: k
}
},
onToReading: function(n) {
return O(Op(), n)
},
onToEditing: function(n) {
return O(Cp(), n)
},
onScrollToCursor: function(e) {
return C.on("scrollIntoView", function(n) {
e(n)
}), {
unbind: function() {
C.off("scrollIntoView"), x.destroy()
}
}
},
onTouchToolstrip: function() {
t()
},
onTouchContent: function() {
var n, e = fe.fromDom(C.editorContainer.querySelector("." + Mi.resolve("toolbar")));
(n = e, Fo(n).bind(function(n) {
return b.system().getByDom(n).toOption()
})).each(ue), b.restoreToolbar(), t()
},
onTapContent: function(n) {
var e = n.target();
"img" === be.name(e) ? (C.selection.select(e.dom()), n.kill()) : "a" === be.name(e) && b.system().getByDom(fe.fromDom(C.editorContainer)).each(function(n) {
To.isAlpha(n) && zo(e.dom())
})
}
},
container: fe.fromDom(C.editorContainer),
socket: fe.fromDom(C.contentAreaContainer),
toolstrip: fe.fromDom(C.editorContainer.querySelector("." + Mi.resolve("toolstrip"))),
toolbar: fe.fromDom(C.editorContainer.querySelector("." + Mi.resolve("toolbar"))),
dropup: b.dropup(),
alloy: b.system(),
translate: k,
setReadOnly: function(n) {
T(c, a, u, n)
},
readOnlyOnInit: function() {
return !1
}
});
var t = function() {
b.dropup().disappear(function() {
b.system().broadcastOn([jo.dropupDismissed()], {})
})
},
n = {
label: "The first group",
scrollable: !1,
items: [hs.forToolbar("back", function() {
C.selection.collapse(), b.exit()
}, {})]
},
e = {
label: "Back to read only",
scrollable: !1,
items: [hs.forToolbar("readonly-back", function() {
T(c, a, u, !0)
}, {})]
},
r = rm(b, C),
o = om(C.settings, r),
i = {
label: "The extra group",
scrollable: !1,
items: []
},
u = So([{
label: "the action group",
scrollable: !0,
items: o
},
i]),
a = So([{
label: "The read only mode group",
scrollable: !0,
items: []
},
i]),
c = So({
backToMask: [n],
backToReadOnly: [e]
});
Tp(b, C)
}), {
iframeContainer: b.socket().element().dom(),
editorContainer: b.element().dom()
}
}
}
})
}();
!
function() {
"use strict";
var e, t, n, i, r, o = tinymce.util.Tools.resolve("tinymce.ThemeManager"),
h = 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")
},
m = function(e) {
return e.getParam("menu")
},
g = function(e) {
return !1 === e.settings.skin
},
p = function(e) {
var t = e.getParam("resize", "vertical");
return !1 === t ? "none" : "both" === t ? "both" : "vertical"
},
v = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
b = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
y = tinymce.util.Tools.resolve("tinymce.util.I18n"),
s = function(e) {
return e.fire("SkinLoaded")
},
x = function(e) {
return e.fire("ResizeEditor")
},
_ = function(e) {
return e.fire("BeforeRenderUI")
},
a = function(t, n) {
return function() {
var e = t.find(n)[0];
e && e.focus(!0)
}
},
C = 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"),
E = function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
},
k = function(e) {
return function() {
return e
}
},
l = k(!1),
T = k(!0),
H = l,
S = T,
M = function() {
return N
},
N = (i = {
fold: function(e, t) {
return e()
},
is: H,
isSome: H,
isNone: S,
getOr: n = function(e) {
return e
},
getOrThunk: t = function(e) {
return e()
},
getOrDie: function(e) {
throw new Error(e || "error: getOrDie called on none.")
},
getOrNull: function() {
return null
},
getOrUndefined: function() {
return undefined
},
or: n,
orThunk: t,
map: M,
ap: M,
each: function() {},
bind: M,
flatten: M,
exists: H,
forall: S,
filter: M,
equals: e = function(e) {
return e.isNone()
},
equals_: e,
toArray: function() {
return []
},
toString: k("none()")
}, Object.freeze && Object.freeze(i), i),
P = 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: S,
isNone: H,
getOr: e,
getOrThunk: e,
getOrDie: e,
getOrNull: e,
getOrUndefined: e,
or: t,
orThunk: t,
map: function(e) {
return P(e(n))
},
ap: function(e) {
return e.fold(M, function(e) {
return P(e(n))
})
},
each: function(e) {
e(n)
},
bind: i,
flatten: e,
exists: i,
forall: i,
filter: function(e) {
return e(n) ? r : N
},
equals: function(e) {
return e.is(n)
},
equals_: function(e, t) {
return e.fold(H, function(e) {
return t(n, e)
})
},
toArray: function() {
return [n]
},
toString: function() {
return "some(" + n + ")"
}
};
return r
},
D = {
some: P,
none: M,
from: function(e) {
return null === e || e === undefined ? N : P(e)
}
},
W = function(e) {
return e ? e.getRoot().uiContainer : null
},
O = {
getUiContainerDelta: function(e) {
var t = W(e);
if (t && "static" !== v.DOM.getStyle(t, "position", !0)) {
var n = v.DOM.getPos(t),
i = t.scrollLeft - n.x,
r = t.scrollTop - n.y;
return D.some({
x: i,
y: r
})
}
return D.none()
},
setUiContainer: function(e, t) {
var n = v.DOM.select(e.settings.ui_container)[0];
t.getRoot().uiContainer = n
},
getUiContainer: W,
inheritUiContainer: function(e, t) {
return t.uiContainer = W(e)
}
},
A = 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 = b.create(t), o.items.push(t), i.initialized ? n() : i.on("init", n)))
}), {
type: "toolbar",
layout: "flow",
items: s
}
},
B = A,
L = 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(A(n, t, i))
}), r.length) return {
type: "panel",
layout: "stack",
classes: "toolbar-grp",
ariaRoot: !0,
ariaRemember: !0,
items: r
}
},
I = v.DOM,
z = 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 = z({
x: t,
y: n,
w: o.w,
h: o.h
}), e && (o = e({
elementRect: z(i),
contentAreaRect: z(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 = I.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 = I.getRect(s.getEl()), o = I.getRect(x.getContentAreaContainer() || x.getBody());
var g, p, v, b = O.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" !== I.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 = b.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: B(x, e.toolbar.items),
oncancel: function() {
x.focus()
}
}), O.setUiContainer(x, t), function(e) {
if (!i) {
var t = r(!0),
n = O.getUiContainer(e);
i = x.selection.getScrollContainer() || x.getWin(), I.bind(i, "scroll", t), I.bind(n, "scroll", t), x.on("remove", function() {
I.unbind(i, "scroll", t), I.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()
})
},
Y = 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
}
},
$ = Y("function"),
X = Y("number"),
q = (r = Array.prototype.indexOf) === undefined ?
function(e, t) {
return ee(e, t)
} : function(e, t) {
return r.call(e, t)
}, j = function(e, t) {
return Q(e, t).isSome()
}, J = 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
}, G = function(e, t) {
for (var n = 0, i = e.length; n < i; 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++) {
var r = e[n];
if (t(r, n, e)) return D.some(r)
}
return D.none()
}, Q = function(e, t) {
for (var n = 0, i = e.length; n < i; n++) if (t(e[n], n, e)) return D.some(n);
return D.none()
}, ee = function(e, t) {
for (var n = 0, i = e.length; n < i; ++n) if (e[n] === t) return n;
return -1
}, te = Array.prototype.push, ne = (Array.prototype.slice, $(Array.from) && Array.from, {
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"
}
}), ie = function(e, t) {
return "|" === e ? {
name: "|",
item: {
text: "|"
}
} : t ? {
name: e,
item: t
} : null
}, re = function(e) {
return e && "|" === e.item.text
}, oe = function(n, e, t, i) {
var r, o, s, a, l, u, c;
return e ? (o = e[i], a = !0) : o = ne[i], o && (r = {
text: o.title
}, s = [], w.each((o.items || "").split(/[ ,]/), function(e) {
var t = ie(e, n[e]);
t && s.push(t)
}), a || w.each(n, function(e, t) {
var n;
e.context !== i || (n = t, Q(s, function(e) {
return e.name === n
}).isSome()) || ("before" === e.separator && s.push({
name: "|",
item: {
text: "|"
}
}), e.prependToContext ? s.unshift(ie(t, e)) : s.push(ie(t, e)), "after" === e.separator && s.push({
name: "|",
item: {
text: "|"
}
}))
}), r.menu = J((l = t, u = K(s, function(e) {
return !1 === l.hasOwnProperty(e.name)
}), c = K(u, function(e, t, n) {
return !re(e) || !re(n[t - 1])
}), K(c, function(e, t, n) {
return !re(e) || 0 < t && t < n.length - 1
})), function(e) {
return e.item
}), !r.menu.length) ? null : r
}, se = function(e) {
for (var t, n = [], i = function(e) {
var t, n = [],
i = m(e);
if (i) for (t in i) n.push(t);
else for (t in ne) 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 = oe(e.menuItems, m(e), r, l);
u && n.push(u)
}
return n
}, ae = v.DOM, le = function(e) {
return {
width: e.clientWidth,
height: e.clientHeight
}
}, ue = function(e, t, n) {
var i, r, o, s;
i = e.getContainer(), r = e.getContentAreaContainer().firstChild, o = le(i), s = le(r), null !== t && (t = Math.max(e.getParam("min_width", 100, "number"), t), t = Math.min(e.getParam("max_width", 65535, "number"), t), ae.setStyle(i, "width", t + (o.width - s.width)), ae.setStyle(r, "width", t)), n = Math.max(e.getParam("min_height", 100, "number"), n), n = Math.min(e.getParam("max_height", 65535, "number"), n), ae.setStyle(r, "height", n), x(e)
}, ce = ue, de = function(e, t, n) {
var i = e.getContentAreaContainer();
ue(e, i.clientWidth + t, i.clientHeight + n)
}, fe = tinymce.util.Tools.resolve("tinymce.Env"), he = function(e, t, n) {
var i, r = e.settings[n];
r && r((i = t.getEl("body"), {
element: function() {
return i
}
}))
}, me = 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 && (he(e, t, "onhide"), t.visible(!1))
}), s.parent().items().each(function(e) {
e.active(!1)
}), l && l.visible() ? (he(u, l, "onhide"), l.hide(), s.active(!1)) : (l ? l.show() : (l = b.create({
type: "container",
name: d,
layout: "stack",
classes: "sidebar-panel",
html: ""
}), a.prepend(l), he(u, l, "onrender")), he(u, l, "onshow"), s.active(!0)), x(c)
}
}, ge = function(e) {
return !(fe.ie && !(11 <= fe.ie) || !e.sidebars) && 0 < e.sidebars.length
}, pe = 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: me(n, e.name, n.sidebars)
}
})
}]
}
}, ve = function(e) {
var t = function() {
e._skinLoaded = !0, s(e)
};
return function() {
e.initialized ? t() : e.on("init", t)
}
}, be = v.DOM, ye = function(e) {
return {
type: "panel",
name: "iframe",
layout: "stack",
classes: "edit-area",
border: e,
html: ""
}
}, xe = function(t, e, n) {
var i, r, o, s, a;
if (!1 === g(t) && n.skinUiCss ? be.styleSheetLoader.load(n.skinUiCss, ve(t)) : ve(t)(), i = e.panel = b.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: se(t)
},
L(t, f(t))]
},
ge(t) ? (s = t, {
type: "panel",
layout: "stack",
classes: "edit-aria-container",
border: "1 0 0 0",
items: [ye("0"), pe(s)]
}) : ye("1 0 0 0")]
}), O.setUiContainer(t, i), "none" !== p(t) && (r = {
type: "resizehandle",
direction: p(t),
onResizeStart: function() {
var e = t.getContentAreaContainer().firstChild;
o = {
width: e.clientWidth,
height: e.clientHeight
}
},
onResize: function(e) {
"both" === p(t) ? ce(t, o.width + e.deltaX, o.height + e.deltaY) : ce(t, null, o.height + e.deltaY)
}
}), t.getParam("statusbar", !0, "boolean")) {
////去掉 tinymce 驱动
//var l = y.translate(["Powered by {0}", 'tinymce']),
var l = y.translate(["", '']),
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 _(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 && be.setStyle(i.getEl(), "width", n.width), t.on("remove", function() {
i.remove(), i = null
}), C(t, i), V(t), {
iframeContainer: i.find("#iframe")[0].getEl(),
editorContainer: i.getEl()
}
}, we = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"), _e = 0, Ce = {
id: function() {
return "mceu_" + _e++
},
create: function(e, t, n) {
var i = document.createElement(e);
return v.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 v.DOM.createFragment(e)
},
getWindowSize: function() {
return v.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 v.DOM.getPos(e, t || Ce.getContainer())
},
getContainer: function() {
return fe.container ? fe.container : document.body
},
getViewPort: function(e) {
return v.DOM.getViewPort(e)
},
get: function(e) {
return document.getElementById(e)
},
addClass: function(e, t) {
return v.DOM.addClass(e, t)
},
removeClass: function(e, t) {
return v.DOM.removeClass(e, t)
},
hasClass: function(e, t) {
return v.DOM.hasClass(e, t)
},
toggleClass: function(e, t, n) {
return v.DOM.toggleClass(e, t, n)
},
css: function(e, t, n) {
return v.DOM.setStyle(e, t, n)
},
getRuntimeStyle: function(e, t) {
return v.DOM.getStyle(e, t, !0)
},
on: function(e, t, n, i) {
return v.DOM.bind(e, t, n, i)
},
off: function(e, t, n) {
return v.DOM.unbind(e, t, n)
},
fire: function(e, t, n) {
return v.DOM.fire(e, t, n)
},
innerHtml: function(e, t) {
v.DOM.setHTML(e, t)
}
}, Re = function(e) {
return "static" === Ce.getRuntimeStyle(e, "position")
}, Ee = function(e) {
return e.state.get("fixed")
};
function ke(e, t, n) {
var i, r, o, s, a, l, u, c, d, f;
return d = Te(), o = (r = Ce.getPos(t, O.getUiContainer(e))).x, s = r.y, Ee(e) && Re(document.body) && (o -= d.x, s -= d.y), i = e.getEl(), a = (f = Ce.getSize(i)).width, l = f.height, u = (f = Ce.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 Te = 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)
}
},
He = function(e) {
var t, n = O.getUiContainer(e);
return n && !Ee(e) ? {
x: 0,
y: 0,
w: (t = n).scrollWidth - 1,
h: t.scrollHeight - 1
} : Te()
},
Se = {
testMoveRel: function(e, t) {
for (var n = He(this), i = 0; i < t.length; i++) {
var r = ke(this, e, t[i]);
if (Ee(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 = ke(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 = He(this),
o = n.layoutRect();
e = i(e, r.w, o.w), t = i(t, r.h, o.h)
}
var s = O.getUiContainer(n);
return s && Re(s) && !Ee(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
}
},
Me = tinymce.util.Tools.resolve("tinymce.util.Class"),
Ne = tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),
Pe = 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
})
},
De = 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 We() {}
function Oe(e) {
this.cls = [], this.cls._map = {}, this.onchange = e || We, this.prefix = ""
}
w.extend(Oe.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)
}
}), Oe.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 Ae, Be, Le, Ie = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,
ze = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
Fe = /^\s*|\s*$/g,
Ue = Me.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 = Ie.exec(e.replace(Fe, "")))[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 (ze.exec(""), (i = ze.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 Ae || (Ae = Ue.Collection), new Ae(u)
}
}),
Ve = Array.prototype.push,
Ye = Array.prototype.slice;
Le = {
length: 0,
init: function(e) {
e && this.add(e)
},
add: function(e) {
return w.isArray(e) ? Ve.apply(this, e) : e instanceof Be ? this.add(e.toArray()) : Ve.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 Ue(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 Be(o)
},
slice: function() {
return new Be(Ye.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 Be(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) {
Le[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) {
Le[t] = function(e) {
return this.prop(t, e)
}
}), Be = Me.extend(Le);
var $e = Ue.Collection = Be,
Xe = function(e) {
this.create = e.create
};
Xe.create = function(r, o) {
return new Xe({
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 qe = tinymce.util.Tools.resolve("tinymce.util.Observable");
function je(e) {
return 0 < e.nodeType
}
var Je, Ge, Ke = Me.extend({
Mixins: [qe],
init: function(e) {
var t, n;
for (t in e = e || {})(n = e[t]) instanceof Xe && (e[t] = n.create(this, t));
this.data = e
},
set: function(t, n) {
var i, r, o = this.data[t];
if (n instanceof Xe && (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 (je(t) || je(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 Xe.create(this, e)
},
destroy: function() {
this.fire("destroy")
}
}),
Ze = {},
Qe = {
add: function(e) {
var t = e.parent();
if (t) {
if (!t._layout || t._layout.isNative()) return;
Ze[t._id] || (Ze[t._id] = t), Je || (Je = !0, u.requestAnimationFrame(function() {
var e, t;
for (e in Je = !1, Ze)(t = Ze[e]).state.get("rendered") && t.reflow();
Ze = {}
}, document.body))
}
},
remove: function(e) {
Ze[e._id] && delete Ze[e._id]
}
},
et = "onmousewheel" in document,
tt = !1,
nt = 0,
it = {
Statics: {
classPrefix: "mce-"
},
isRtl: function() {
return Ge.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_" + nt++, i._aria = {
role: t.role
}, i._elmCache = {}, i.$ = we, i.state = new Ke({
visible: !0,
active: !1,
disabled: !1,
value: ""
}), i.data = new Ke(t.data), i.classes = new Oe(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 = Pe(t.border), i.paddingBox = Pe(t.padding), i.marginBox = Pe(t.margin), t.hidden && i.hide()
},
Properties: "parent,name",
getContainerElm: function() {
var e = O.getUiContainer(this);
return e || Ce.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 || De(f, "border"), c.paddingBox = c.paddingBox || De(f, "padding"), c.marginBox = c.marginBox || De(f, "margin"), u = Ce.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 = Ge.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, Ce.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 rt(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 rt(this).off(e, t), this
},
fire: function(e, t, n) {
if ((t = t || {}).control || (t.control = this), t = rt(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 rt(this).has(e)
},
parents: function(e) {
var t, n = new $e;
for (t = this.parent(); t; t = t.parent()) n.add(t);
return e && (n = n.filter(e)), n
},
parentsAndSelf: function(e) {
return new $e(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] = we("#" + 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 Ge.translate ? Ge.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 && we(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 we(e).before(this.renderHtml()), this.postRender(), this
},
renderTo: function(e) {
return we(e || this.getContainerElm()).append(this.renderHtml()), this.postRender(), this
},
preRender: function() {},
render: function() {},
renderHtml: function() {
return ''
},
postRender: function() {
var e, t, n, i, r, o = this,
s = o.settings;
for (i in o.$el = we(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
}
ot(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"), Qe.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() {
Qe.remove(this);
var e = this.parent();
return e && e._layout && !e._layout.isNative() && e.reflow(), this
}
};
function rt(n) {
return n._eventDispatcher || (n._eventDispatcher = new Ne({
scope: n,
toggleEvent: function(e, t) {
t && Ne.isNative(e) && (n._nativeEvents || (n._nativeEvents = {}), n._nativeEvents[e] = !0, n.state.get("rendered") && ot(n))
}
})), n._eventDispatcher
}
function ot(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 || tt ? ("mouseenter" === r || "mouseleave" === r ? l._hasMouseEnter || (we(l.getEl()).on("mouseleave", s).on("mouseover", u), l._hasMouseEnter = 1) : d[r] || (we(l.getEl()).on(r, o), d[r] = !0), i[r] = !1) : et ? we(a.getEl()).on("mousewheel", c) : we(a.getEl()).on("DOMMouseScroll", c)
}
}
}
w.each("text title visible disabled active value".split(" "), function(t) {
it[t] = function(e) {
return 0 === arguments.length ? this.state.get(t) : (void 0 !== e && this.state.set(t, e), this)
}
});
var st = Ge = Me.extend(it),
at = function(e) {
return !!e.getAttribute("data-mce-tabstop")
};
function lt(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 || at(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) || at(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 ut = {},
ct = st.extend({
init: function(e) {
var t = this;
t._super(e), (e = t.settings).fixed && t.state.set("fixed", !0), t._items = new $e, t.isRtl() && t.classes.add("rtl"), t.bodyClasses = new Oe(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 = b.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 = ut[e] = ut[e] || new Ue(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 st || ("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 = b.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 ? we(n.childNodes[t]).before(e.renderHtml()) : we(n).append(e.renderHtml()), e.postRender(), Qe.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), '
' + (e.settings.html || "") + t.renderHtml(e) + "
"
},
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 = lt({
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 (Qe.remove(this), this.visible()) {
for (st.repaintControls = [], st.repaintControls.map = {}, this.recalc(), e = st.repaintControls.length; e--;) st.repaintControls[e].repaint();
"flow" !== this.settings.layout && "stack" !== this.settings.layout && this.repaint(), st.repaintControls = []
}
return this
}
});
function dt(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 ft(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
});
dt(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 = we("").css({
position: "absolute",
top: 0,
left: 0,
width: f.width,
height: f.height,
zIndex: 2147483647,
opacity: 1e-4,
cursor: d
}).appendTo(x.body), we(x).on("mousemove touchmove", v).on("mouseup touchend", p), h.start(e)
}, v = function(e) {
if (dt(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) {
dt(e), we(x).off("mousemove touchmove", v).off("mouseup touchend", p), m.remove(), h.stop && h.stop(e)
}, this.destroy = function() {
we(w).off()
}, we(w).on("mousedown touchstart", t)
}
var ht, mt, gt, pt, vt = {
init: function() {
this.on("repaint", this.renderScroll)
},
renderScroll: function() {
var p = this,
v = 2;
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(), we(p.getEl("absend")).css(f, p.layoutRect()[i] - 1), !r) return void we(a).css("display", "none");
we(a).css("display", "block"), s = p.getEl("body"), l = p.getEl("scroll" + e + "t"), u = s["client" + n] - 2 * v, c = (u -= m && g ? a["client" + o] : 0) / s["scroll" + n], (d = {})[f] = s["offset" + t] + v, d[h] = u, we(a).css(d), (d = {})[f] = s["scroll" + t] * c, d[h] = u * c, we(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;
we(p.getEl()).append('
'), p.draghelper = new ft(e + "t", {
start: function() {
d = p.getEl("body")["scroll" + a], we("#" + 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] - 2 * v, 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() {
we("#" + 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()
}), we(p.getEl("body")).on("scroll", n)), n())
}
},
bt = ct.extend({
Defaults: {
layout: "fit",
containerCls: "panel"
},
Mixins: [vt],
renderHtml: function() {
var e = this,
t = e._layout,
n = e.settings.html;
return e.preRender(), t.preRender(e), void 0 === n ? n = '
"
},
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()
}
}),
Zt = tinymce.util.Tools.resolve("tinymce.util.VK"),
Qt = Wt.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 (we.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 = b.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(Ce.getRuntimeStyle(a, "padding-right"), 10) - parseInt(Ce.getRuntimeStyle(a, "padding-left"), 10)), e = r ? o.w - Ce.getSize(r).width - 10 : o.w - 10;
var l = document;
return l.all && (!l.documentMode || l.documentMode <= 8) && (t = n.layoutRect().h - 2 + "px"), we(a).css({
width: e - s,
lineHeight: t
}), n._super(), n
},
postRender: function() {
var t = this;
return we(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.disabled() && (u += ' disabled="disabled"'), (e = o.icon) && "caret" !== e && (e = s + "ico " + s + "i-" + o.icon), t = i.state.get("text"), (e || t) && (l = '", i.classes.add("has-open")), '
' + n + l + "
"
},
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 = b.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;
Ce.css(t, "display", "none" === i ? "none" : ""), Ce.toggleClass(t, n + "i-checkmark", "ok" === i), Ce.toggleClass(t, n + "i-warning", "warn" === i), Ce.toggleClass(t, n + "i-error", "error" === i), r.classes.toggle("has-status", "none" !== i), r.repaint()
}), Ce.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 === Zt.DOWN ? (e.preventDefault(), r.fire("autocomplete"), n(0, r.menu)) : t === Zt.UP && (e.preventDefault(), n(-1, r.menu)))
}), r._super()
},
remove: function() {
we(this.getEl("inp")).off(), this.menu && this.menu.remove(), this._super()
}
}),
en = Qt.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()
}
}),
tn = jt.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 kt(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()
}
}),
nn = v.DOM,
rn = tn.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 = '' + e.encode(i) + ""), ''
},
postRender: function() {
var t = this,
n = t.settings.onclick;
return t.on("click", function(e) {
e.aria && "down" === e.aria.key || e.control !== t || nn.getParent(e.target, "." + t.classPrefix + "open") || (e.stopImmediatePropagation(), n.call(t, e))
}), delete t.settings.onclick, t._super()
}
}),
on = tinymce.util.Tools.resolve("tinymce.util.Color"),
sn = Wt.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 = Ce.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;
Ce.css(r, {
top: 100 * n + "%"
}), t || Ce.css(s, {
left: e.s + "%",
top: 100 - e.v + "%"
}), o.style.background = on({
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 ft(a._id + "-sv", {
start: e,
drag: e
}), a._hdraghelper = new ft(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 = on()), 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 = '
' +
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 += '';
return r
}() + '
', '
' + e + "
"
}
}),
an = Wt.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 = Ce.create("div", e, "" + this.translate(n.text) + ""), n.height && Ce.css(t, "height", n.height + "px"), n.width && Ce.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()
}
}),
ln = Wt.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 '
"
},
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 ? '
' + this.settings.delimiter + "
" : "") + '
' + i[t].name + "
";
return r || (r = '
\xa0
'), r
}
}),
un = ln.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()
}
}),
cn = ct.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), '
' + (e.settings.title ? '
' + e.settings.title + "
" : "") + '
' + (e.settings.html || "") + t.renderHtml(e) + "
"
}
}),
dn = ct.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 cn(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()
}
}),
fn = dn.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), '"
}
}),
hn = 0,
mn = function(e) {
if (null === e || e === undefined) throw new Error("Node cannot be null or undefined");
return {
dom: k(e)
}
},
gn = {
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 mn(n.childNodes[0])
},
fromTag: function(e, t) {
var n = (t || document).createElement(e);
return mn(n)
},
fromText: function(e, t) {
var n = (t || document).createTextNode(e);
return mn(n)
},
fromDom: mn,
fromPoint: function(e, t, n) {
var i = e.dom();
return D.from(i.elementFromPoint(t, n)).map(mn)
}
},
pn = function(n) {
var i, r = !1;
return function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
return r || (r = !0, i = n.apply(null, e)), i
}
},
vn = {
ATTRIBUTE: Node.ATTRIBUTE_NODE,
CDATA_SECTION: Node.CDATA_SECTION_NODE,
COMMENT: Node.COMMENT_NODE,
DOCUMENT: Node.DOCUMENT_NODE,
DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,
DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,
ELEMENT: Node.ELEMENT_NODE,
TEXT: Node.TEXT_NODE,
PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,
ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,
ENTITY: Node.ENTITY_NODE,
NOTATION: Node.NOTATION_NODE
},
bn = function(e) {
return e.dom().nodeType
},
yn = function(t) {
return function(e) {
return bn(e) === t
}
},
xn = (yn(vn.ELEMENT), yn(vn.TEXT), yn(vn.DOCUMENT), pn(function() {
return xn(gn.fromDom(document))
}), function(e) {
var t = e.dom().body;
if (null === t || t === undefined) throw "Body is not available yet";
return gn.fromDom(t)
}),
wn = ("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 Cn(i(1), i(2))
}),
_n = function() {
return Cn(0, 0)
},
Cn = function(e, t) {
return {
major: e,
minor: t
}
},
Rn = {
nu: Cn,
detect: function(e, t) {
var n = String(t).toLowerCase();
return 0 === e.length ? _n() : wn(e, n)
},
unknown: _n
},
En = "Firefox",
kn = function(e, t) {
return function() {
return t === e
}
},
Tn = function(e) {
var t = e.current;
return {
current: t,
version: e.version,
isEdge: kn("Edge", t),
isChrome: kn("Chrome", t),
isIE: kn("IE", t),
isOpera: kn("Opera", t),
isFirefox: kn(En, t),
isSafari: kn("Safari", t)
}
},
Hn = {
unknown: function() {
return Tn({
current: undefined,
version: Rn.unknown()
})
},
nu: Tn,
edge: k("Edge"),
chrome: k("Chrome"),
ie: k("IE"),
opera: k("Opera"),
firefox: k(En),
safari: k("Safari")
},
Sn = "Windows",
Mn = "Android",
Nn = "Solaris",
Pn = "FreeBSD",
Dn = function(e, t) {
return function() {
return t === e
}
},
Wn = function(e) {
var t = e.current;
return {
current: t,
version: e.version,
isWindows: Dn(Sn, t),
isiOS: Dn("iOS", t),
isAndroid: Dn(Mn, t),
isOSX: Dn("OSX", t),
isLinux: Dn("Linux", t),
isSolaris: Dn(Nn, t),
isFreeBSD: Dn(Pn, t)
}
},
On = {
unknown: function() {
return Wn({
current: undefined,
version: Rn.unknown()
})
},
nu: Wn,
windows: k(Sn),
ios: k("iOS"),
android: k(Mn),
linux: k("Linux"),
osx: k("OSX"),
solaris: k(Nn),
freebsd: k(Pn)
},
An = function(e, t) {
var n = String(t).toLowerCase();
return Z(e, function(e) {
return e.search(n)
})
},
Bn = function(e, n) {
return An(e, n).map(function(e) {
var t = Rn.detect(e.versionRegexes, n);
return {
current: e.name,
version: t
}
})
},
Ln = function(e, n) {
return An(e, n).map(function(e) {
var t = Rn.detect(e.versionRegexes, n);
return {
current: e.name,
version: t
}
})
},
In = function(e, t) {
return -1 !== e.indexOf(t)
},
zn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
Fn = function(t) {
return function(e) {
return In(e, t)
}
},
Un = [{
name: "Edge",
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function(e) {
return In(e, "edge/") && In(e, "chrome") && In(e, "safari") && In(e, "applewebkit")
}
}, {
name: "Chrome",
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, zn],
search: function(e) {
return In(e, "chrome") && !In(e, "chromeframe")
}
}, {
name: "IE",
versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
search: function(e) {
return In(e, "msie") || In(e, "trident")
}
}, {
name: "Opera",
versionRegexes: [zn, /.*?opera\/([0-9]+)\.([0-9]+).*/],
search: Fn("opera")
}, {
name: "Firefox",
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: Fn("firefox")
}, {
name: "Safari",
versionRegexes: [zn, /.*?cpu os ([0-9]+)_([0-9]+).*/],
search: function(e) {
return (In(e, "safari") || In(e, "mobile/")) && In(e, "applewebkit")
}
}],
Vn = [{
name: "Windows",
search: Fn("win"),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "iOS",
search: function(e) {
return In(e, "iphone") || In(e, "ipad")
},
versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
}, {
name: "Android",
search: Fn("android"),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
}, {
name: "OSX",
search: Fn("os x"),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
}, {
name: "Linux",
search: Fn("linux"),
versionRegexes: []
}, {
name: "Solaris",
search: Fn("sunos"),
versionRegexes: []
}, {
name: "FreeBSD",
search: Fn("freebsd"),
versionRegexes: []
}],
Yn = {
browsers: k(Un),
oses: k(Vn)
},
$n = function(e) {
var t, n, i, r, o, s, a, l, u, c, d, f = Yn.browsers(),
h = Yn.oses(),
m = Bn(f, e).fold(Hn.unknown, Hn.nu),
g = Ln(h, e).fold(On.unknown, On.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: k(r),
isiPhone: k(o),
isTablet: k(l),
isPhone: k(c),
isTouch: k(u),
isAndroid: t.isAndroid,
isiOS: t.isiOS,
isWebView: k(d)
})
}
},
Xn = pn(function() {
var e = navigator.userAgent;
return $n(e)
}),
qn = vn.ELEMENT,
jn = vn.DOCUMENT,
Jn = function(e) {
return e.nodeType !== qn && e.nodeType !== jn || 0 === e.childElementCount
},
Gn = {
all: function(e, t) {
var n = t === undefined ? document : t.dom();
return Jn(n) ? [] : J(n.querySelectorAll(e), gn.fromDom)
},
is: function(e, t) {
var n = e.dom();
if (n.nodeType !== qn) 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 Jn(n) ? D.none() : D.from(n.querySelector(e)).map(gn.fromDom)
}
},
Kn = (Xn().browser.isIE(), function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
}("element", "offset"), function(e, t) {
return Gn.all(t, e)
}),
Zn = w.trim,
Qn = 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
}
},
ei = Qn("true"),
ti = Qn("false"),
ni = function(e, t, n, i, r) {
return {
type: e,
title: t,
url: n,
level: i,
attach: r
}
},
ii = function(e) {
return e.innerText || e.textContent
},
ri = function(e) {
return e.id ? e.id : (t = "h", n = (new Date).getTime(), t + "_" + Math.floor(1e9 * Math.random()) + ++hn + String(n));
var t, n
},
oi = function(e) {
return (t = e) && "A" === t.nodeName && (t.id || t.name) && ai(e);
var t
},
si = function(e) {
return e && /^(H[1-6])$/.test(e.nodeName)
},
ai = function(e) {
return function(e) {
for (; e = e.parentNode;) {
var t = e.contentEditable;
if (t && "inherit" !== t) return ei(e)
}
return !1
}(e) && !ti(e)
},
li = function(e) {
return si(e) && ai(e)
},
ui = function(e) {
var t, n = ri(e);
return ni("header", ii(e), "#" + n, si(t = e) ? parseInt(t.nodeName.substr(1), 10) : 0, function() {
e.id = n
})
},
ci = function(e) {
var t = e.id || e.name,
n = ii(e);
return ni("anchor", n || "#" + t, "#" + t, 0, E)
},
di = function(e) {
var t, n;
return t = "h1,h2,h3,h4,h5,h6,a:not([href])", n = e, J(Kn(gn.fromDom(n), t), function(e) {
return e.dom()
})
},
fi = function(e) {
return 0 < Zn(e.title).length
},
hi = function(e) {
var t, n = di(e);
return K((t = n, J(K(t, li), ui)).concat(J(K(n, oi), ci)), fi)
},
mi = {},
gi = function(e) {
return {
title: e.title,
value: {
title: {
raw: e.title
},
url: e.url,
attach: e.attach
}
}
},
pi = function(e, t) {
return {
title: e,
value: {
title: e,
url: t,
attach: E
}
}
},
vi = function(e, t, n) {
var i = t in e ? e[t] : n;
return !1 === i ? null : i
},
bi = function(e, i, r, t) {
var n, o, s, a, l, u, c = {
title: "-"
},
d = function(e) {
var t = e.hasOwnProperty(r) ? e[r] : [],
n = K(t, function(e) {
return t = e, !j(i, function(e) {
return e.url === t
});
var t
});
return w.map(n, function(e) {
return {
title: e,
value: {
title: e,
url: e,
attach: E
}
}
})
},
f = function(t) {
var e, n = K(i, function(e) {
return e.type === t
});
return e = n, w.map(e, gi)
};
return !1 === t.typeahead_urls ? [] : "file" === r ? (n = [xi(e, d(mi)), xi(e, f("header")), xi(e, (a = f("anchor"), l = vi(t, "anchor_top", "#top"), u = vi(t, "anchor_bottom", "#bottom"), null !== l && a.unshift(pi("", l)), null !== u && a.push(pi("", u)), a))], o = function(e, t) {
return 0 === e.length || 0 === t.length ? e.concat(t) : e.concat(c, t)
}, s = [], G(n, function(e) {
s = o(s, e)
}), s) : xi(e, d(mi))
},
yi = function(e, t) {
var n, i, r, o = mi[t];
/^https?/.test(e) && (o ? (n = o, i = e, r = q(n, i), -1 === r ? D.none() : D.some(r)).isNone() && (mi[t] = o.slice(0, 5).concat(e)) : mi[t] = [e])
},
xi = 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
},
wi = 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")
})
},
_i = Qt.extend({
Statics: {
clearHistory: function() {
mi = {}
}
},
init: function(e) {
var t, n, i, r, o, s, a, l, u = this,
c = window.tinymce ? window.tinymce.activeEditor : h.activeEditor,
d = c.settings,
f = e.filetype;
e.spellcheck = !1, (i = d.file_picker_types || d.file_browser_callback_types) && (i = w.makeMap(i, /[, ]/)), i && !i[f] || (!(n = d.file_picker_callback) || i && !i[f] ? !(n = d.file_browser_callback) || i && !i[f] || (t = function() {
n(u.getEl("inp").id, u.value(), f, window)
}) : t = function() {
var e = u.fire("beforecall").meta;
e = w.extend({
filetype: f
}, e), n.call(c, function(e, t) {
u.value(e).fire("change", {
meta: t
})
}, u.value(), e)
}), t && (e.icon = "browse", e.onaction = t), u._super(e), u.classes.add("filepicker"), r = u, o = d, s = c.getBody(), a = f, l = function(e) {
var t = hi(s),
n = bi(e, t, a, o);
r.showAutoComplete(n, e)
}, r.on("autocomplete", function() {
l(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" === a ? 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 && l("")
}), r.on("PostRender", function() {
r.getRoot().on("submit", function(e) {
e.isDefaultPrevented() || yi(r.value(), a)
})
}), wi(u, d, f)
}
}),
Ci = qt.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()
})
}
}),
Ri = qt.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, _, C, R, E, k, T, H, S, M, N, P, D, W, O, A, B, L = [],
I = Math.max,
z = 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 ? (R = "y", _ = "h", C = "minH", E = "maxH", T = "innerH", k = "top", H = "deltaH", S = "contentH", W = "left", P = "w", M = "x", N = "innerW", D = "minW", O = "right", A = "deltaW", B = "contentW") : (R = "x", _ = "w", C = "minW", E = "maxW", T = "innerW", k = "left", H = "deltaW", S = "contentW", W = "top", P = "h", M = "y", N = "innerH", D = "minH", O = "bottom", A = "deltaH", B = "contentH"), d = r[T] - o[k] - o[k], 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[E] && L.push(h), m.flex = g), d -= m[C], w < (p = o[W] + m[D] + o[O]) && (w = p);
if ((y = {})[C] = d < 0 ? r[C] - d + r[H] : r[T] - d + r[H], y[D] = w + r[A], y[S] = r[T] - d, y[B] = w, y.minW = z(y.minW, r.maxW), y.minH = z(y.minH, r.maxH), y.minW = I(y.minW, r.startMinWidth), y.minH = I(y.minH, r.startMinHeight), !r.autoResize || y.minW === r.minW && y.minH === r.minH) {
for (b = d / c, t = 0, n = L.length; t < n; t++)(v = (m = (h = L[t]).layoutRect())[E]) < (p = m[C] + m.flex * b) ? (d -= m[E] - m[C], c -= m.flex, m.flex = 0, m.maxFlexSize = v) : m.maxFlexSize = 0;
for (b = d / c, x = o[k], y = {}, 0 === c && ("end" === l ? x = d + o[k] : "center" === l ? (x = Math.round(r[T] / 2 - (r[T] - d) / 2) + o[k]) < 0 && (x = o[k]) : "justify" === l && (x = o[k], u = Math.floor(d / (i.length - 1)))), y[M] = o[W], t = 0, n = i.length; t < n; t++) p = (m = (h = i[t]).layoutRect()).maxFlexSize || m[C], "center" === a ? y[M] = Math.round(r[N] / 2 - m[P] / 2) : "stretch" === a ? (y[P] = I(m[D] || 0, r[N] - o[W] - o[O]), y[M] = o[W]) : "end" === a && (y[M] = r[N] - m[P] - o.top), 0 < m.flex && (p += m.flex * b), y[_] = p, y[R] = 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())
}
}
}),
Ei = Xt.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
}
}),
ki = function(e, t) {
return Gn.one(t, e)
},
Ti = function(e, t) {
return function() {
e.execCommand("mceToggleFormat", !1, t)
}
},
Hi = 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)
})
},
Si = function(e, n) {
return function(t) {
Hi(e, n, function(e) {
t.control.active(e)
})
}
},
Mi = function(i) {
var t = ["alignleft", "aligncenter", "alignright", "alignjustify"],
r = "alignleft",
e = [{
text: "Left",
icon: "alignleft",
onclick: Ti(i, "alignleft")
}, {
text: "Center",
icon: "aligncenter",
onclick: Ti(i, "aligncenter")
}, {
text: "Right",
icon: "alignright",
onclick: Ti(i, "alignright")
}, {
text: "Justify",
icon: "alignjustify",
onclick: Ti(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) {
Hi(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: Si(i, t)
})
})
},
Ni = function(e) {
return e ? e.split(",")[0] : ""
},
Pi = function(l, u) {
return function() {
var a = this;
a.state.set("value", null), 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 || Ni(e.value).toLowerCase() !== Ni(r).toLowerCase() || (i = e.value)
}), i);
a.value(s || null), !s && o && a.text(Ni(o))
})
}
},
Di = 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: Pi(n, t),
onselect: function(e) {
e.control.settings.value && n.execCommand("FontName", !1, e.control.settings.value)
}
}
})
},
Wi = function(e) {
Di(e)
},
Oi = 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
},
Ai = function(e, t, n) {
var i;
return w.each(e, function(e) {
e.value === n ? i = n : e.value === t && (i = t)
}), i
},
Bi = 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 = Oi(t, i), r = Ai(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)
}
}
})
},
Li = function(e) {
Bi(e)
},
Ii = function(n, e) {
var i = e.length;
return w.each(e, function(e) {
e.menu && (e.hidden = 0 === Ii(n, e.menu));
var t = e.format;
t && (e.hidden = !n.formatter.canApply(t)), e.hidden && i--
}), i
},
zi = function(n, e) {
var i = e.items().length;
return e.items().each(function(e) {
e.menu && e.visible(0 < zi(n, e.menu)), !e.menu && e.settings.menu && e.visible(0 < Ii(n, e.settings.menu));
var t = e.settings.format;
t && e.visible(n.formatter.canApply(t)), e.visible() || i--
}), i
},
Fi = 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 && Ti(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 && zi(a, this.menu)
}
})
},
Ui = 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();
Ti(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)
})
})
}
}
},
Vi = 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: Ti(t, e[1]),
textStyle: function() {
return t.formatter.getCssText(e[1])
}
}
}))
}), e.addButton("formatselect", Ui(e, i))
},
Yi = function(t, e) {
var n, i;
if ("string" == typeof e) i = e.split(" ");
else if (w.isArray(e)) return 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);
te.apply(t, e[n])
}
return t
}(w.map(e, function(e) {
return Yi(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]
})
},
$i = function(e) {
return e && "-" === e.text
},
Xi = function(e) {
var t = K(e, function(e, t, n) {
return !$i(e) || !$i(n[t - 1])
});
return K(t, function(e, t, n) {
return !$i(e) || 0 < t && t < n.length - 1
})
},
qi = function(e) {
var t, n, i, r, o = e.settings.insert_button_items;
return Xi(o ? Yi(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))
},
ji = function(e) {
var t;
(t = e).addButton("insert", {
type: "menubutton",
icon: "insert",
menu: [],
oncreatemenu: function() {
this.menu.add(qi(t)), this.menu.renderNew()
}
})
},
Ji = 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: Si(n, t),
onclick: Ti(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: ["新建文件", "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: Si(r, t)
})
})
},
Gi = function(e) {
var n;
Ji(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: ["新建文件", "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: Ti(n, "code")
})
},
Ki = 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())
})
}
},
Zi = function(e) {
var t, n;
(t = e).addMenuItem("undo", {
text: "Undo",
icon: "undo",
shortcut: "Meta+Z",
onPostRender: Ki(t, "undo"),
cmd: "undo"
}), t.addMenuItem("redo", {
text: "Redo",
icon: "redo",
shortcut: "Meta+Y",
onPostRender: Ki(t, "redo"),
cmd: "redo"
}), (n = e).addButton("undo", {
tooltip: "Undo",
onPostRender: Ki(n, "undo"),
cmd: "undo"
}), n.addButton("redo", {
tooltip: "Redo",
onPostRender: Ki(n, "redo"),
cmd: "redo"
})
},
Qi = 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"
})
},
er = {
setup: function(e) {
var t;
e.rtl && (st.rtl = !0), e.on("mousedown", function() {
kt.hideAll()
}), (t = e).settings.ui_container && (fe.container = ki(gn.fromDom(document.body), t.settings.ui_container).fold(k(null), function(e) {
return e.dom()
})), Wt.tooltips = !fe.iOS, st.translate = function(e) {
return h.translate(e)
}, Vi(e), Mi(e), Gi(e), Zi(e), Li(e), Wi(e), Fi(e), Qi(e), ji(e)
}
},
tr = qt.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, _, C, R, E, k, T, H, S = [],
M = [];
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, H = "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++) S.push(0);
for (f = 0; f < n; f++) M.push(0);
for (f = 0; f < n; f++) for (d = 0; d < i && (c = r[f * i + d]); d++) R = (u = c.layoutRect()).minW, E = u.minH, S[d] = R > S[d] ? R : S[d], M[f] = E > M[f] ? E : M[f];
for (k = o.innerW - p.left - p.right, d = _ = 0; d < i; d++) _ += S[d] + (0 < d ? b : 0), k -= (0 < d ? b : 0) + S[d];
for (T = o.innerH - p.top - p.bottom, f = C = 0; f < n; f++) C += M[f] + (0 < f ? y : 0), T -= (0 < f ? y : 0) + M[f];
if (_ += p.left + p.right, C += p.top + p.bottom, (l = {}).minW = _ + (o.w - o.innerW), l.minH = C + (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 N;
o.autoResize && ((l = e.layoutRect(l)).contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH), N = "start" === t.packV ? 0 : 0 < T ? Math.floor(T / n) : 0;
var P = 0,
D = t.flexWidths;
if (D) for (d = 0; d < D.length; d++) P += D[d];
else P = i;
var W = k / P;
for (d = 0; d < i; d++) S[d] += D ? D[d] * W : W;
for (m = p.top, f = 0; f < n; f++) {
for (h = p.left, a = M[f] + N, d = 0; d < i && (c = r[H ? f * i + i - 1 - d : f * i + d]); d++) g = c.settings, u = c.layoutRect(), s = Math.max(S[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 O = e.parent();
O && (O._lastRect = null, O.recalc())
}
}
}),
nr = Wt.extend({
renderHtml: function() {
var e = this;
return e.classes.add("iframe"), e.canFocus = !1, ''
},
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
}
}),
ir = Wt.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 '
' + e.encode(e.state.get("text")) + '
'
},
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 = Wt.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 && (Ce.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, Ce.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 ? '" : '' + r + ""
},
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()
}
}),
or = ct.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()
}
}),
sr = or.extend({
Defaults: {
role: "menubar",
containerCls: "menubar",
ariaRoot: !0,
defaults: {
type: "menubutton"
}
}
}),
ar = jt.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 = b.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 = '' + t.encode(o) + ""), r = t.settings.icon ? i + "ico " + i + "i-" + r : "", t.aria("role", t.parent() instanceof sr ? "menuitem" : "button"), ''
},
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 ar && 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()
}
}),
lr = kt.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 !== fe.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 Mt(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()
}
}),
ur = ar.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 lr && 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()
}
}),
cr = Wt.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 = b.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"), "").replace(new RegExp(c("]mce~match!"), "g"), "")
}
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 = fe.mac ? {
alt: "⌥",
ctrl: "⌘",
shift: "⇧",
meta: "⌘"
} : {
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 ? '\xa0" : "", o = f(t.encode(d(o))), u = f(t.encode(d(u))), '
' + e + ("-" !== o ? '' + o + "" : "") + (l ? '
' + l + "
" : "") + (i.menu ? '' : "") + (u ? '
' + u + "
" : "") + "
"
},
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()
}
}),
dr = Kt.extend({
Defaults: {
classes: "radio",
role: "radio"
}
}),
fr = Wt.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, '
'
},
postRender: function() {
var t = this;
t._super(), t.resizeDragHelper = new ft(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 hr(e) {
var t = "";
if (e) for (var n = 0; n < e.length; n++) t += '";
return t
}
var mr = Wt.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 = hr(t._options), t.size && (n = ' size = "' + t.size + '"'), '"
},
bindStates: function() {
var t = this;
return t.state.on("change:options", function(e) {
t.getEl().innerHTML = hr(e.value)
}), t._super()
}
});
function gr(e, t, n) {
return e < t && (e = t), n < e && (e = n), e
}
function pr(e, t, n) {
e.setAttribute("aria-" + t, n)
}
function vr(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) - Ce.getSize(s)[i]) * ((t - e._minValue) / (e._maxValue - e._minValue)) + "px", s.style[r] = o, s.style.height = e.layoutRect().h + "px", pr(s, "valuenow", t), pr(s, "valuetext", "" + e.settings.previewFilter(t)), pr(s, "valuemin", e._minValue), pr(s, "valuemax", e._maxValue)
}
var br = Wt.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 = X(e.minValue) ? e.minValue : 0, t._maxValue = X(e.maxValue) ? e.maxValue : 100, t._initValue = t.state.get("value")
},
renderHtml: function() {
var e = this._id,
t = this.classPrefix;
return '
'
},
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 = gr(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 ft(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) - Ce.getSize(l)[r], m.fire("dragstart", {
value: h
})
},
drag: function(e) {
var t = e[n] - u;
f = gr(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(), vr(this, this.value())
},
bindStates: function() {
var t = this;
return t.state.on("change:value", function(e) {
vr(t, e.value)
}), t._super()
}
}),
yr = Wt.extend({
renderHtml: function() {
return this.classes.add("spacer"), this.canFocus = !1, ''
}
}),
xr = ar.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, we(e).css({
width: i.w - Ce.getSize(t).width,
height: i.h - 2
}), we(t).css({
height: i.h - 2
}), this
},
activeMenu: function(e) {
we(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 = '' + n.encode(s) + ""), t = "boolean" == typeof a.active ? ' aria-pressed="' + a.active + '"' : "", ''
},
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()
}
}),
wr = Ei.extend({
Defaults: {
containerClass: "stack-layout",
controlClass: "stack-layout-item",
endClass: "break"
},
isNative: function() {
return !0
}
}),
_r = bt.extend({
Defaults: {
layout: "absolute",
defaults: {
type: "panel"
}
},
activateTab: function(n) {
var e;
this.activeTabId && (e = this.getEl(this.activeTabId), we(e).removeClass(this.classPrefix + "active"), e.setAttribute("aria-selected", "false")), this.activeTabId = "t" + n, (e = this.getEl("t" + n)).setAttribute("aria-selected", "true"), we(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 += '
' + i.encode(e.settings.title) + "
"
}), '
' + r + '
' + e.renderHtml(i) + "
"
},
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 = Ce.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 = Ce.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
}
}),
Cr = Wt.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 = Ce.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()
}
}),
Rr = function() {
return {
Selector: Ue,
Collection: $e,
ReflowQueue: Qe,
Control: st,
Factory: b,
KeyboardNavigation: lt,
Container: ct,
DragHelper: ft,
Scrollable: vt,
Panel: bt,
Movable: Se,
Resizable: yt,
FloatPanel: kt,
Window: Vt,
MessageBox: Yt,
Tooltip: Dt,
Widget: Wt,
Progress: Ot,
Notification: Bt,
Layout: Xt,
AbsoluteLayout: qt,
Button: jt,
ButtonGroup: Gt,
Checkbox: Kt,
ComboBox: Qt,
ColorBox: en,
PanelButton: tn,
ColorButton: rn,
ColorPicker: sn,
Path: ln,
ElementPath: un,
FormItem: cn,
Form: dn,
FieldSet: fn,
FilePicker: _i,
FitLayout: Ci,
FlexLayout: Ri,
FlowLayout: Ei,
FormatControls: er,
GridLayout: tr,
Iframe: nr,
InfoBox: ir,
Label: rr,
Toolbar: or,
MenuBar: sr,
MenuButton: ar,
MenuItem: cr,
Throbber: Mt,
Menu: lr,
ListBox: ur,
Radio: dr,
ResizeHandle: fr,
SelectBox: mr,
Slider: br,
Spacer: yr,
SplitButton: xr,
StackLayout: wr,
TabPanel: _r,
TextBox: Cr,
DropZone: an,
BrowseButton: Jt
}
},
Er = function(n) {
n.ui ? w.each(Rr(), function(e, t) {
n.ui[t] = e
}) : n.ui = Rr()
};
w.each(Rr(), function(e, t) {
b.add(t, e)
}), Er(window.tinymce ? window.tinymce : {}), o.add("modern", function(e) {
return er.setup(e), $t(e)
})
}();
!
function() {
"use strict";
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
a = tinymce.util.Tools.resolve("tinymce.util.Tools"),
s = function(t, e, n) {
var r = "UL" === e ? "InsertUnorderedList" : "InsertOrderedList";
t.execCommand(r, !1, !1 === n ? null : {
"list-style-type": n
})
},
o = function(n) {
n.addCommand("ApplyUnorderedListStyle", function(t, e) {
s(n, "UL", e["list-style-type"])
}), n.addCommand("ApplyOrderedListStyle", function(t, e) {
s(n, "OL", e["list-style-type"])
})
},
e = function(t) {
var e = t.getParam("advlist_number_styles", "default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");
return e ? e.split(/[ ,]/) : []
},
n = function(t) {
var e = t.getParam("advlist_bullet_styles", "default,circle,disc,square");
return e ? e.split(/[ ,]/) : []
},
u = function(t) {
return t && /^(TH|TD)$/.test(t.nodeName)
},
c = function(r) {
return function(t) {
return t && /^(OL|UL|DL)$/.test(t.nodeName) && (n = t, (e = r).$.contains(e.getBody(), n));
var e, n
}
},
d = function(t) {
var e = t.dom.getParent(t.selection.getNode(), "ol,ul");
return t.dom.getStyle(e, "listStyleType") || ""
},
p = function(t) {
return a.map(t, function(t) {
return {
text: t.replace(/\-/g, " ").replace(/\b\w/g, function(t) {
return t.toUpperCase()
}),
data: "default" === t ? "" : t
}
})
},
f = function(i, l) {
return function(t) {
var o = t.control;
i.on("NodeChange", function(t) {
var e = function(t, e) {
for (var n = 0; n < t.length; n++) if (e(t[n])) return n;
return -1
}(t.parents, u),
n = -1 !== e ? t.parents.slice(0, e) : t.parents,
r = a.grep(n, c(i));
o.active(0 < r.length && r[0].nodeName === l)
})
}
},
m = function(e, t, n, r, o, i) {
var l;
e.addButton(t, {
active: !1,
type: "splitbutton",
tooltip: n,
menu: p(i),
onPostRender: f(e, o),
onshow: (l = e, function(t) {
var e = d(l);
t.control.items().each(function(t) {
t.active(t.settings.data === e)
})
}),
onselect: function(t) {
s(e, o, t.control.settings.data)
},
onclick: function() {
e.execCommand(r)
}
})
},
r = function(t, e, n, r, o, i) {
var l, a, s, u, c;
0 < i.length ? m(t, e, n, r, o, i) : (a = e, s = n, u = r, c = o, (l = t).addButton(a, {
active: !1,
type: "button",
tooltip: s,
onPostRender: f(l, c),
onclick: function() {
l.execCommand(u)
}
}))
},
i = function(t) {
r(t, "numlist", "Numbered list", "InsertOrderedList", "OL", e(t)), r(t, "bullist", "Bullet list", "InsertUnorderedList", "UL", n(t))
};
t.add("advlist", function(t) {
var e, n, r;
n = "lists", r = (e = t).settings.plugins ? e.settings.plugins : "", -1 !== a.inArray(r.split(/[ ,]/), n) && (i(t), o(t))
})
}();
!
function() {
"use strict";
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
a = function(t) {
return /^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)
},
e = function(t) {
var e = t.selection.getNode();
return "A" === e.tagName && "" === t.dom.getAttrib(e, "href") ? e.id || e.name : ""
},
i = function(t, e) {
var n = t.selection.getNode();
"A" === n.tagName && "" === t.dom.getAttrib(n, "href") ? (n.removeAttribute("name"), n.id = e, t.undoManager.add()) : (t.focus(), t.selection.collapse(!0), t.execCommand("mceInsertContent", !1, t.dom.createHTML("a", {
id: e
})))
},
n = function(r) {
var t = e(r);
r.windowManager.open({
title: "Anchor",
body: {
type: "textbox",
name: "id",
size: 40,
label: "Id",
value: t
},
onsubmit: function(t) {
var e, n, o = t.data.id;
e = r, (a(n = o) ? (i(e, n), 0) : (e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."), 1)) && t.preventDefault()
}
})
},
o = function(t) {
t.addCommand("mceAnchor", function() {
n(t)
})
},
r = function(o) {
return function(t) {
for (var e = 0; e < t.length; e++)(n = t[e]).attr("href") || !n.attr("id") && !n.attr("name") || n.firstChild || t[e].attr("contenteditable", o);
var n
}
},
c = function(t) {
t.on("PreInit", function() {
t.parser.addNodeFilter("a", r("false")), t.serializer.addNodeFilter("a", r(null))
})
},
d = function(t) {
t.addButton("anchor", {
icon: "anchor",
tooltip: "Anchor",
cmd: "mceAnchor",
stateSelector: "a:not([href])"
}), t.addMenuItem("anchor", {
icon: "anchor",
text: "Anchor",
context: "insert",
cmd: "mceAnchor"
})
};
t.add("anchor", function(t) {
c(t), o(t), d(t)
})
}();
!
function() {
"use strict";
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
i = tinymce.util.Tools.resolve("tinymce.Env"),
m = function(e) {
return e.getParam("autolink_pattern", /^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)
},
y = function(e) {
return e.getParam("default_link_target", "")
},
o = function(e, t) {
if (t < 0 && (t = 0), 3 === e.nodeType) {
var n = e.data.length;
n < t && (t = n)
}
return t
},
k = function(e, t, n) {
1 !== t.nodeType || t.hasChildNodes() ? e.setStart(t, o(t, n)) : e.setStartBefore(t)
},
p = function(e, t, n) {
1 !== t.nodeType || t.hasChildNodes() ? e.setEnd(t, o(t, n)) : e.setEndAfter(t)
},
r = function(e, t, n) {
var i, o, r, a, f, s, d, l, c, u, g = m(e),
h = y(e);
if ("A" !== e.selection.getNode().tagName) {
if ((i = e.selection.getRng(!0).cloneRange()).startOffset < 5) {
if (!(l = i.endContainer.previousSibling)) {
if (!i.endContainer.firstChild || !i.endContainer.firstChild.nextSibling) return;
l = i.endContainer.firstChild.nextSibling
}
if (c = l.length, k(i, l, c), p(i, l, c), i.endOffset < 5) return;
o = i.endOffset, a = l
} else {
if (3 !== (a = i.endContainer).nodeType && a.firstChild) {
for (; 3 !== a.nodeType && a.firstChild;) a = a.firstChild;
3 === a.nodeType && (k(i, a, 0), p(i, a, a.nodeValue.length))
}
o = 1 === i.endOffset ? 2 : i.endOffset - 1 - t
}
for (r = o; k(i, a, 2 <= o ? o - 2 : 0), p(i, a, 1 <= o ? o - 1 : 0), o -= 1, " " !== (u = i.toString()) && "" !== u && 160 !== u.charCodeAt(0) && 0 <= o - 2 && u !== n;);
var C;
(C = i.toString()) === n || " " === C || 160 === C.charCodeAt(0) ? (k(i, a, o), p(i, a, r), o += 1) : (0 === i.startOffset ? k(i, a, 0) : k(i, a, o), p(i, a, r)), "." === (s = i.toString()).charAt(s.length - 1) && p(i, a, r - 1), (d = (s = i.toString().trim()).match(g)) && ("www." === d[1] ? d[1] = "http://www." : /@$/.test(d[1]) && !/^mailto:/.test(d[1]) && (d[1] = "mailto:" + d[1]), f = e.selection.getBookmark(), e.selection.setRng(i), e.execCommand("createlink", !1, d[1] + d[2]), h && e.dom.setAttrib(e.selection.getNode(), "target", h), e.selection.moveToBookmark(f), e.nodeChanged())
}
},
t = function(t) {
var n;
t.on("keydown", function(e) {
13 !== e.keyCode || r(t, -1, "")
}), i.ie ? t.on("focus", function() {
if (!n) {
n = !0;
try {
t.execCommand("AutoUrlDetect", !1, !0)
} catch (e) {}
}
}) : (t.on("keypress", function(e) {
41 !== e.keyCode || r(t, -1, "(")
}), t.on("keyup", function(e) {
32 !== e.keyCode || r(t, 0, "")
}))
};
e.add("autolink", function(e) {
t(e)
})
}();
!
function() {
"use strict";
var i = function(t) {
var e = t,
n = function() {
return e
};
return {
get: n,
set: function(t) {
e = t
},
clone: function() {
return i(n())
}
}
},
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
y = tinymce.util.Tools.resolve("tinymce.Env"),
r = tinymce.util.Tools.resolve("tinymce.util.Delay"),
h = function(t) {
return parseInt(t.getParam("autoresize_min_height", t.getElement().offsetHeight), 10)
},
v = function(t) {
return parseInt(t.getParam("autoresize_max_height", 0), 10)
},
o = function(t) {
return t.getParam("autoresize_overflow_padding", 1)
},
a = function(t) {
return t.getParam("autoresize_bottom_margin", 50)
},
n = function(t) {
return t.getParam("autoresize_on_init", !0)
},
u = function(t, e, n, i, o) {
r.setEditorTimeout(t, function() {
_(t, e), n-- ? u(t, e, n, i, o) : o && o()
}, i)
},
S = function(t, e) {
var n = t.getBody();
n && (n.style.overflowY = e ? "" : "hidden", e || (n.scrollTop = 0))
},
_ = function(t, e) {
var n, i, o, r, a, u, s, l, g, c, f, d = t.dom;
if (i = t.getDoc()) if ((m = t).plugins.fullscreen && m.plugins.fullscreen.isFullscreen()) S(t, !0);
else {
var m;
o = i.body, r = h(t), u = d.getStyle(o, "margin-top", !0), s = d.getStyle(o, "margin-bottom", !0), l = d.getStyle(o, "padding-top", !0), g = d.getStyle(o, "padding-bottom", !0), c = d.getStyle(o, "border-top-width", !0), f = d.getStyle(o, "border-bottom-width", !0), a = o.offsetHeight + parseInt(u, 10) + parseInt(s, 10) + parseInt(l, 10) + parseInt(g, 10) + parseInt(c, 10) + parseInt(f, 10), (isNaN(a) || a <= 0) && (a = y.ie ? o.scrollHeight : y.webkit && 0 === o.clientHeight ? 0 : o.offsetHeight), a > h(t) && (r = a);
var p = v(t);
p && p < a ? (r = p, S(t, !0)) : S(t, !1), r !== e.get() && (n = r - e.get(), d.setStyle(t.iframeElement, "height", r + "px"), e.set(r), y.webkit && n < 0 && _(t, e))
}
},
s = {
setup: function(i, e) {
i.on("init", function() {
var t, e, n = i.dom;
t = o(i), e = a(i), !1 !== t && n.setStyles(i.getBody(), {
paddingLeft: t,
paddingRight: t
}), !1 !== e && n.setStyles(i.getBody(), {
paddingBottom: e
})
}), i.on("nodechange setcontent keyup FullscreenStateChanged", function(t) {
_(i, e)
}), n(i) && i.on("init", function() {
u(i, e, 20, 100, function() {
u(i, e, 5, 1e3)
})
})
},
resize: _
},
l = function(t, e) {
t.addCommand("mceAutoResize", function() {
s.resize(t, e)
})
};
t.add("autoresize", function(t) {
if (!t.inline) {
var e = i(0);
l(t, e), s.setup(t, e)
}
})
}();
!
function() {
"use strict";
var n = function(t) {
var e = t,
r = function() {
return e
};
return {
get: r,
set: function(t) {
e = t
},
clone: function() {
return n(r())
}
}
},
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
a = tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),
o = tinymce.util.Tools.resolve("tinymce.util.Tools"),
r = function(t) {
return t.fire("RestoreDraft")
},
i = function(t) {
return t.fire("StoreDraft")
},
s = function(t) {
return t.fire("RemoveDraft")
},
e = function(t, e) {
return ((t = /^(\d+)([ms]?)$/.exec("" + (t || e)))[2] ? {
s: 1e3,
m: 6e4
}[t[2]] : 1) * parseInt(t, 10)
},
u = function(t) {
return t.getParam("autosave_ask_before_unload", !0)
},
f = function(t) {
var e = t.getParam("autosave_prefix", "tinymce-autosave-{path}{query}{hash}-{id}-");
return e = (e = (e = (e = e.replace(/\{path\}/g, document.location.pathname)).replace(/\{query\}/g, document.location.search)).replace(/\{hash\}/g, document.location.hash)).replace(/\{id\}/g, t.id)
},
c = function(t) {
return e(t.settings.autosave_interval, "30s")
},
l = function(t) {
return e(t.settings.autosave_retention, "20m")
},
m = function(t, e) {
var r = t.settings.forced_root_block;
return "" === (e = o.trim(void 0 === e ? t.getBody().innerHTML : e)) || new RegExp("^<" + r + "[^>]*>((\xa0| |[ \t]| ]*>)+?|)" + r + ">| $", "i").test(e)
},
v = function(t) {
var e = parseInt(a.getItem(f(t) + "time"), 10) || 0;
return !((new Date).getTime() - e > l(t) && (d(t, !1), 1))
},
d = function(t, e) {
var r = f(t);
a.removeItem(r + "draft"), a.removeItem(r + "time"), !1 !== e && s(t)
},
D = function(t) {
var e = f(t);
!m(t) && t.isDirty() && (a.setItem(e + "draft", t.getContent({
format: "raw",
no_events: !0
})), a.setItem(e + "time", (new Date).getTime().toString()), i(t))
},
g = function(t) {
var e = f(t);
v(t) && (t.setContent(a.getItem(e + "draft"), {
format: "raw"
}), r(t))
},
y = {
isEmpty: m,
hasDraft: v,
removeDraft: d,
storeDraft: D,
restoreDraft: g,
startStoreDraft: function(t, e) {
var r = c(t);
e.get() || (setInterval(function() {
t.removed || D(t)
}, r), e.set(!0))
},
restoreLastDraft: function(t) {
t.undoManager.transact(function() {
g(t), d(t)
}), t.focus()
}
},
p = function(e, r) {
return function() {
var t = Array.prototype.slice.call(arguments);
return e.apply(null, [r].concat(t))
}
},
h = function(t) {
return {
hasDraft: p(y.hasDraft, t),
storeDraft: p(y.storeDraft, t),
restoreDraft: p(y.restoreDraft, t),
removeDraft: p(y.removeDraft, t),
isEmpty: p(y.isEmpty, t)
}
},
_ = tinymce.util.Tools.resolve("tinymce.EditorManager");
_._beforeUnloadHandler = function() {
var e;
return o.each(_.get(), function(t) {
t.plugins.autosave && t.plugins.autosave.storeDraft(), !e && t.isDirty() && u(t) && (e = t.translate("You have unsaved changes are you sure you want to navigate away?"))
}), e
};
var b = function(t) {
window.onbeforeunload = _._beforeUnloadHandler
},
I = function(r, n) {
return function(t) {
var e = t.control;
e.disabled(!y.hasDraft(r)), r.on("StoreDraft RestoreDraft RemoveDraft", function() {
e.disabled(!y.hasDraft(r))
}), y.startStoreDraft(r, n)
}
},
w = function(t, e) {
t.addButton("restoredraft", {
title: "Restore last draft",
onclick: function() {
y.restoreLastDraft(t)
},
onPostRender: I(t, e)
}), t.addMenuItem("restoredraft", {
text: "Restore last draft",
onclick: function() {
y.restoreLastDraft(t)
},
onPostRender: I(t, e),
context: "file"
})
};
t.add("autosave", function(t) {
var e = n(!1);
return b(t), w(t, e), h(t)
})
}();
!
function() {
"use strict";
var o = tinymce.util.Tools.resolve("tinymce.PluginManager"),
t = tinymce.util.Tools.resolve("tinymce.util.Tools"),
e = function(e) {
e = t.trim(e);
var o = function(o, t) {
e = e.replace(o, t)
};
return o(/(.*?)<\/a>/gi, "[url=$1]$2[/url]"), o(/(.*?)<\/font>/gi, "[code][color=$1]$2[/color][/code]"), o(/(.*?)<\/font>/gi, "[quote][color=$1]$2[/color][/quote]"), o(/(.*?)<\/font>/gi, "[code][color=$1]$2[/color][/code]"), o(/(.*?)<\/font>/gi, "[quote][color=$1]$2[/color][/quote]"), o(/(.*?)<\/span>/gi, "[color=$1]$2[/color]"), o(/(.*?)<\/font>/gi, "[color=$1]$2[/color]"), o(/(.*?)<\/span>/gi, "[size=$1]$2[/size]"), o(/(.*?)<\/font>/gi, "$1"), o(//gi, "[img]$1[/img]"), o(/(.*?)<\/span>/gi, "[code]$1[/code]"), o(/(.*?)<\/span>/gi, "[quote]$1[/quote]"), o(/(.*?)<\/strong>/gi, "[code][b]$1[/b][/code]"), o(/(.*?)<\/strong>/gi, "[quote][b]$1[/b][/quote]"), o(/(.*?)<\/em>/gi, "[code][i]$1[/i][/code]"), o(/(.*?)<\/em>/gi, "[quote][i]$1[/i][/quote]"), o(/(.*?)<\/u>/gi, "[code][u]$1[/u][/code]"), o(/(.*?)<\/u>/gi, "[quote][u]$1[/u][/quote]"), o(/<\/(strong|b)>/gi, "[/b]"), o(/<(strong|b)>/gi, "[b]"), o(/<\/(em|i)>/gi, "[/i]"), o(/<(em|i)>/gi, "[i]"), o(/<\/u>/gi, "[/u]"), o(/(.*?)<\/span>/gi, "[u]$1[/u]"), o(//gi, "[u]"), o(/