Files
cmanager/manage/cdn/tinymce5.6.2/plugins/image/plugin.min.js

712 lines
29 KiB
JavaScript
Raw Normal View History

2025-10-21 15:09:49 +08:00
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.6.2 (2020-12-08)
*/
!function () {
"use strict";
var t, e, n, r, o, a = tinymce.util.Tools.resolve("tinymce.PluginManager"), c = function () {
return (c = Object.assign || function (e) {
for (var t, n = 1, r = arguments.length; n < r; n++) for (var a in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, a) && (e[a] = t[a]);
return e
}).apply(this, arguments)
}, i = function (r) {
return function (e) {
return n = typeof (t = e), (null === t ? "null" : "object" == n && (Array.prototype.isPrototypeOf(t) || t.constructor && "Array" === t.constructor.name) ? "array" : "object" == n && (String.prototype.isPrototypeOf(t) || t.constructor && "String" === t.constructor.name) ? "string" : n) === r;
var t, n
}
}, l = function (t) {
return function (e) {
return typeof e === t
}
}, A = i("string"), s = i("object"), u = i("array"), m = function (e) {
return t === e
}, d = l("boolean"), g = l("number"), f = function () {
}, p = function (e) {
return function () {
return e
}
}, h = p(!1), b = p(!(t = null)), v = function () {
return y
}, y = (e = function (e) {
return e.isNone()
}, {
fold: function (e, t) {
return e()
},
is: h,
isSome: h,
isNone: b,
getOr: r = function (e) {
return e
},
getOrThunk: n = function (e) {
return e()
},
getOrDie: function (e) {
throw new Error(e || "error: getOrDie called on none.")
},
getOrNull: p(null),
getOrUndefined: p(undefined),
or: r,
orThunk: n,
map: v,
each: f,
bind: v,
exists: h,
forall: b,
filter: v,
equals: e,
equals_: e,
toArray: function () {
return []
},
toString: p("none()")
}), D = function (n) {
var e = p(n), t = function () {
return a
}, r = function (e) {
return e(n)
}, a = {
fold: function (e, t) {
return t(n)
},
is: function (e) {
return n === e
},
isSome: b,
isNone: h,
getOr: e,
getOrThunk: e,
getOrDie: e,
getOrNull: e,
getOrUndefined: e,
or: t,
orThunk: t,
map: function (e) {
return D(e(n))
},
each: function (e) {
e(n)
},
bind: r,
exists: r,
forall: r,
filter: function (e) {
return e(n) ? a : y
},
toArray: function () {
return [n]
},
toString: function () {
return "some(" + n + ")"
},
equals: function (e) {
return e.is(n)
},
equals_: function (e, t) {
return e.fold(h, function (e) {
return t(n, e)
})
}
};
return a
}, S = {
some: D, none: v, from: function (e) {
return null === e || e === undefined ? y : D(e)
}
}, w = Array.prototype.push, x = function (e) {
for (var t = [], n = 0, r = e.length; n < r; ++n) {
if (!u(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
w.apply(t, e[n])
}
return t
}, T = function (e) {
return t = e, (n = 0) <= n && n < t.length ? S.some(t[n]) : S.none();
var t, n
}, C = ("undefined" != typeof window || Function("return this;")(), function (e, t, n) {
!function (e, t, n) {
if (!(A(n) || d(n) || g(n))) throw console.error("Invalid call to Attribute.set. Key ", t, ":: Value ", n, ":: Element ", e), new Error("Attribute value was not simple");
e.setAttribute(t, n + "")
}(e.dom, t, n)
}), U = function (e) {
if (null === e || e === undefined) throw new Error("Node cannot be null or undefined");
return {dom: e}
}, O = {
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), new Error("HTML must have a single root node");
return U(n.childNodes[0])
}, fromTag: function (e, t) {
var n = (t || document).createElement(e);
return U(n)
}, fromText: function (e, t) {
var n = (t || document).createTextNode(e);
return U(n)
}, fromDom: U, fromPoint: function (e, t, n) {
return S.from(e.dom.elementFromPoint(t, n)).map(U)
}
}, I = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), N = tinymce.util.Tools.resolve("tinymce.util.Promise"),
P = tinymce.util.Tools.resolve("tinymce.util.XHR"), _ = function (e) {
return e.getParam("image_dimensions", !0, "boolean")
}, L = function (e) {
return e.getParam("images_upload_url", "", "string")
}, E = function (e) {
return e.getParam("images_upload_handler", undefined, "function")
}, M = function (e, t) {
return Math.max(parseInt(e, 10), parseInt(t, 10))
}, R = function (e) {
return e = e && e.replace(/px$/, "")
}, z = function (e) {
return 0 < e.length && /^[0-9]+$/.test(e) && (e += "px"), e
}, H = function (e) {
if (e.margin) {
var t = String(e.margin).split(" ");
switch (t.length) {
case 1:
e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[0], e["margin-bottom"] = e["margin-bottom"] || t[0], e["margin-left"] = e["margin-left"] || t[0];
break;
case 2:
e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[1], e["margin-bottom"] = e["margin-bottom"] || t[0], e["margin-left"] = e["margin-left"] || t[1];
break;
case 3:
e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[1], e["margin-bottom"] = e["margin-bottom"] || t[2], e["margin-left"] = e["margin-left"] || t[1];
break;
case 4:
e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[1], e["margin-bottom"] = e["margin-bottom"] || t[2], e["margin-left"] = e["margin-left"] || t[3]
}
delete e.margin
}
return e
}, k = function (e) {
return "IMG" === e.nodeName && (e.hasAttribute("data-mce-object") || e.hasAttribute("data-mce-placeholder"))
}, j = I.DOM, B = function (e) {
return e.style.marginLeft && e.style.marginRight && e.style.marginLeft === e.style.marginRight ? R(e.style.marginLeft) : ""
}, F = function (e) {
return e.style.marginTop && e.style.marginBottom && e.style.marginTop === e.style.marginBottom ? R(e.style.marginTop) : ""
}, G = function (e) {
return e.style.borderWidth ? R(e.style.borderWidth) : ""
}, W = function (e, t) {
return e.hasAttribute(t) ? e.getAttribute(t) : ""
}, q = function (e, t) {
return e.style[t] ? e.style[t] : ""
}, $ = function (e) {
return null !== e.parentNode && "FIGURE" === e.parentNode.nodeName
}, J = function (e, t, n) {
"" === n ? e.removeAttribute(t) : e.setAttribute(t, n)
}, X = function (e) {
var t, n, r, a;
$(e) ? (a = (r = e).parentNode, j.insertAfter(r, a), j.remove(a)) : (t = e, n = j.create("figure", {"class": "image"}), j.insertAfter(n, t), n.appendChild(t), n.appendChild(j.create("figcaption", {contentEditable: "true"}, "Caption")), n.contentEditable = "false")
}, V = function (e, t) {
var n = e.getAttribute("style"), r = t(null !== n ? n : "");
0 < r.length ? (e.setAttribute("style", r), e.setAttribute("data-mce-style", r)) : e.removeAttribute("style")
}, K = function (e, r) {
return function (e, t, n) {
e.style[t] ? (e.style[t] = z(n), V(e, r)) : J(e, t, n)
}
}, Z = function (e, t) {
return e.style[t] ? R(e.style[t]) : W(e, t)
}, Q = function (e, t) {
var n = z(t);
e.style.marginLeft = n, e.style.marginRight = n
}, Y = function (e, t) {
var n = z(t);
e.style.marginTop = n, e.style.marginBottom = n
}, ee = function (e, t) {
var n = z(t);
e.style.borderWidth = n
}, te = function (e, t) {
e.style.borderStyle = t
}, ne = function (e) {
return "FIGURE" === e.nodeName
}, re = function (e) {
return 0 === j.getAttrib(e, "alt").length && "presentation" === j.getAttrib(e, "role")
}, ae = function () {
return {
src: "",
alt: "",
title: "",
width: "",
height: "",
"class": "",
style: "",
caption: !1,
hspace: "",
vspace: "",
border: "",
borderStyle: "",
isDecorative: !1
}
}, ie = function (e, t) {
var n = document.createElement("img");
return J(n, "style", t.style), !B(n) && "" === t.hspace || Q(n, t.hspace), !F(n) && "" === t.vspace || Y(n, t.vspace), !G(n) && "" === t.border || ee(n, t.border), !q(n, "borderStyle") && "" === t.borderStyle || te(n, t.borderStyle), e(n.getAttribute("style"))
}, oe = function (e, t) {
return {
src: W(t, "src"),
alt: re(n = t) ? "" : W(n, "alt"),
title: W(t, "title"),
width: Z(t, "width"),
height: Z(t, "height"),
"class": W(t, "class"),
style: e(W(t, "style")),
caption: $(t),
hspace: B(t),
vspace: F(t),
border: G(t),
borderStyle: q(t, "borderStyle"),
isDecorative: re(t)
};
var n
}, le = function (e, t, n, r, a) {
n[r] !== t[r] && a(e, r, n[r])
}, se = function (e, t, n) {
var r, a;
n ? (j.setAttrib(e, "role", "presentation"), r = O.fromDom(e), C(r, "alt", "")) : (m(t) ? (r = O.fromDom(e), a = "alt", r.dom.removeAttribute(a)) : (r = O.fromDom(e), C(r, "alt", t)), "presentation" === j.getAttrib(e, "role") && j.setAttrib(e, "role", ""))
}, ue = function (r, a) {
return function (e, t, n) {
r(e, n), V(e, a)
}
}, ce = function (e, t, n) {
var r, a, i, o = oe(e, n);
le(n, o, t, "caption", function (e, t, n) {
return X(e), 0
}), le(n, o, t, "src", J), le(n, o, t, "title", J), le(n, o, t, "width", K(0, e)), le(n, o, t, "height", K(0, e)), le(n, o, t, "class", J), le(n, o, t, "style", ue(function (e, t) {
return J(e, "style", t), 0
}, e)), le(n, o, t, "hspace", ue(Q, e)), le(n, o, t, "vspace", ue(Y, e)), le(n, o, t, "border", ue(ee, e)), le(n, o, t, "borderStyle", ue(te, e)), r = n, a = o, (i = t).alt === a.alt && i.isDecorative === a.isDecorative || se(r, i.alt, i.isDecorative)
}, me = function (e, t) {
var n = e.dom.styles.parse(t), r = H(n), a = e.dom.styles.parse(e.dom.styles.serialize(r));
return e.dom.styles.serialize(a)
}, de = function (e) {
var t = e.selection.getNode(), n = e.dom.getParent(t, "figure.image");
return n ? e.dom.select("img", n)[0] : t && ("IMG" !== t.nodeName || k(t)) ? null : t
}, ge = function (t, e) {
var n = t.dom, r = n.getParent(e.parentNode, function (e) {
return !!t.schema.getTextBlockElements()[e.nodeName]
}, t.getBody());
return r ? n.split(r, e) : e
}, fe = function (t, e) {
var n = function (e, t) {
var n = document.createElement("img");
if (ce(e, c(c({}, t), {caption: !1}), n), se(n, t.alt, t.isDecorative), t.caption) {
var r = j.create("figure", {"class": "image"});
return r.appendChild(n), r.appendChild(j.create("figcaption", {contentEditable: "true"}, "Caption")), r.contentEditable = "false", r
}
return n
}(function (e) {
return me(t, e)
}, e);
t.dom.setAttrib(n, "data-mce-id", "__mcenew"), t.focus(), t.selection.setContent(n.outerHTML);
var r, a = t.dom.select('*[data-mce-id="__mcenew"]')[0];
t.dom.setAttrib(a, "data-mce-id", null), ne(a) ? (r = ge(t, a), t.selection.select(r)) : t.selection.select(a)
}, pe = function (t, e) {
var n, r, a, i, o, l, s = de(t);
ce(function (e) {
return me(t, e)
}, e, s), n = s, t.dom.setAttrib(n, "src", n.getAttribute("src")), ne(s.parentNode) ? (r = s.parentNode, ge(t, r), t.selection.select(s.parentNode)) : (t.selection.select(s), a = t, i = e, l = function () {
o.onload = o.onerror = null, a.selection && (a.selection.select(o), a.nodeChanged())
}, (o = s).onload = function () {
i.width || i.height || !_(a) || a.dom.setAttribs(o, {
width: String(o.clientWidth),
height: String(o.clientHeight)
}), l()
}, o.onerror = l)
}, he = Object.prototype.hasOwnProperty, be = (o = function (e, t) {
return s(e) && s(t) ? be(e, t) : t
}, function () {
for (var e = new Array(arguments.length), t = 0; t < e.length; t++) e[t] = arguments[t];
if (0 === e.length) throw new Error("Can't merge zero objects");
for (var n = {}, r = 0; r < e.length; r++) {
var a = e[r];
for (var i in a) he.call(a, i) && (n[i] = o(n[i], a[i]))
}
return n
}), ve = tinymce.util.Tools.resolve("tinymce.util.Tools"), ye = function (e) {
return A(e.value) ? e.value : ""
}, De = function (e, i) {
var o = [];
return ve.each(e, function (e) {
var t, n, r, a = A((t = e).text) ? t.text : A(t.title) ? t.title : "";
e.menu !== undefined ? (n = De(e.menu, i), o.push({text: a, items: n})) : (r = i(e), o.push({text: a, value: r}))
}), o
}, we = function (t) {
return void 0 === t && (t = ye), function (e) {
return e ? S.from(e).map(function (e) {
return De(e, t)
}) : S.none()
}
}, Ae = function (e, n) {
return function (e, t) {
for (var n = 0; n < e.length; n++) {
var r = t(e[n], n);
if (r.isSome()) return r
}
return S.none()
}(e, function (e) {
return t = e, Object.prototype.hasOwnProperty.call(t, "items") ? Ae(e.items, n) : e.value === n ? S.some(e) : S.none();
var t
})
}, Se = we, xe = function (e) {
return we(ye)(e)
}, Te = function (e, t) {
return e.bind(function (e) {
return Ae(e, t)
})
};
function Ce(o) {
var t = function (e, r, a, t) {
var i = new XMLHttpRequest;
i.open("POST", o.url), i.withCredentials = o.credentials, i.upload.onprogress = function (e) {
t(e.loaded / e.total * 100)
}, i.onerror = function () {
a("Image upload failed due to a XHR Transport error. Code: " + i.status)
}, i.onload = function () {
var e, t, n;
i.status < 200 || 300 <= i.status ? a("HTTP Error: " + i.status) : (e = JSON.parse(i.responseText)) && "string" == typeof e.location ? r((t = o.basePath, n = e.location, t ? t.replace(/\/$/, "") + "/" + n.replace(/^\//, "") : n)) : a("Invalid JSON: " + i.responseText)
};
var n = new FormData;
n.append("file", e.blob(), e.filename()), i.send(n)
};
return o = ve.extend({credentials: !1, handler: t}, o), {
upload: function (e) {
return o.url || o.handler !== t ? (r = e, a = o.handler, new N(function (e, t) {
try {
a(r, e, t, f)
} catch (n) {
t(n.message)
}
})) : N.reject("Upload url missing from the settings.");
var r, a
}
}
}
var Ue = function (e) {
return {
title: "Advanced",
name: "advanced",
items: [{type: "input", label: "Style", name: "style"}, {
type: "grid",
columns: 2,
items: [{type: "input", label: "Vertical space", name: "vspace", inputMode: "numeric"}, {
type: "input",
label: "Horizontal space",
name: "hspace",
inputMode: "numeric"
}, {type: "input", label: "Border width", name: "border", inputMode: "numeric"}, {
type: "listbox",
name: "borderstyle",
label: "Border style",
items: [{text: "Select...", value: ""}, {text: "Solid", value: "solid"}, {
text: "Dotted",
value: "dotted"
}, {text: "Dashed", value: "dashed"}, {text: "Double", value: "double"}, {
text: "Groove",
value: "groove"
}, {text: "Ridge", value: "ridge"}, {text: "Inset", value: "inset"}, {
text: "Outset",
value: "outset"
}, {text: "None", value: "none"}, {text: "Hidden", value: "hidden"}]
}]
}]
}
}, Oe = function (r) {
var t, e, a = Se(function (e) {
return r.convertURL(e.value || e.url, "src")
}), n = new N(function (t) {
var n, e;
n = function (e) {
t(a(e).map(function (e) {
return x([[{text: "None", value: ""}], e])
}))
}, "string" == typeof (e = r.getParam("image_list", !1)) ? P.send({
url: e, success: function (e) {
n(JSON.parse(e))
}
}) : "function" == typeof e ? e(n) : n(e)
}), i = xe(r.getParam("image_class_list")), o = r.getParam("image_advtab", !1, "boolean"),
l = r.getParam("image_uploadtab", !0, "boolean"), s = !!L(r), u = !!E(r), c = (e = de(t = r)) ? oe(function (e) {
return me(t, e)
}, e) : ae(), m = r.getParam("image_description", !0, "boolean"), d = r.getParam("image_title", !1, "boolean"),
g = _(r), f = r.getParam("image_caption", !1, "boolean"), p = r.getParam("a11y_advanced_options", !1, "boolean"),
h = L(r), b = r.getParam("images_upload_base_path", undefined, "string"),
v = r.getParam("images_upload_credentials", !1, "boolean"), y = E(r),
D = r.getParam("automatic_uploads", !0, "boolean"),
w = S.some(r.getParam("image_prepend_url", "", "string")).filter(function (e) {
return A(e) && 0 < e.length
});
return n.then(function (e) {
return {
image: c,
imageList: e,
classList: i,
hasAdvTab: o,
hasUploadTab: l,
hasUploadUrl: s,
hasUploadHandler: u,
hasDescription: m,
hasImageTitle: d,
hasDimensions: g,
hasImageCaption: f,
url: h,
basePath: b,
credentials: v,
handler: y,
prependURL: w,
hasAccessibilityOptions: p,
automaticUploads: D
}
})
}, Ie = function (e) {
var t = e.imageList.map(function (e) {
return {name: "images", type: "listbox", label: "Image list", items: e}
}), n = {
name: "alt",
type: "input",
label: "Alternative description",
disabled: e.hasAccessibilityOptions && e.image.isDecorative
}, r = e.classList.map(function (e) {
return {name: "classes", type: "listbox", label: "Class", items: e}
});
return x([[{
name: "src",
type: "urlinput",
filetype: "image",
label: "Source"
}], t.toArray(), e.hasAccessibilityOptions && e.hasDescription ? [{
type: "label",
label: "Accessibility",
items: [{name: "isDecorative", type: "checkbox", label: "Image is decorative"}]
}] : [], e.hasDescription ? [n] : [], e.hasImageTitle ? [{
name: "title",
type: "input",
label: "Image title"
}] : [], e.hasDimensions ? [{name: "dimensions", type: "sizeinput"}] : [], [{
type: "grid",
columns: 2,
items: x([r.toArray(), e.hasImageCaption ? [{
type: "label",
label: "Caption",
items: [{type: "checkbox", name: "caption", label: "Show caption"}]
}] : []])
}]])
}, Ne = function (e) {
return {title: "General", name: "general", items: Ie(e)}
}, Pe = Ie, _e = function (e) {
return {title: "Upload", name: "upload", items: [{type: "dropzone", name: "fileinput"}]}
}, Le = function (e) {
return {
src: {value: e.src, meta: {}},
images: e.src,
alt: e.alt,
title: e.title,
dimensions: {width: e.width, height: e.height},
classes: e["class"],
caption: e.caption,
style: e.style,
vspace: e.vspace,
border: e.border,
hspace: e.hspace,
borderstyle: e.borderStyle,
fileinput: [],
isDecorative: e.isDecorative
}
}, Ee = function (e, t) {
return {
src: e.src.value,
alt: 0 === e.alt.length && t ? null : e.alt,
title: e.title,
width: e.dimensions.width,
height: e.dimensions.height,
"class": e.classes,
style: e.style,
caption: e.caption,
hspace: e.hspace,
vspace: e.vspace,
border: e.border,
borderStyle: e.borderstyle,
isDecorative: e.isDecorative
}
}, Me = function (e, t) {
var n, r, a = t.getData();
n = e, r = a.src.value, (/^(?:[a-zA-Z]+:)?\/\//.test(r) ? S.none() : n.prependURL.bind(function (e) {
return r.substring(0, e.length) !== e ? S.some(e + r) : S.none()
})).each(function (e) {
t.setData({src: {value: e, meta: a.src.meta}})
})
}, Re = function (e, t) {
var n, r, a, i, o = t.getData(), l = o.src.meta;
l !== undefined && (n = be({}, o), a = n, i = l, (r = e).hasDescription && A(i.alt) && (a.alt = i.alt), r.hasAccessibilityOptions && (a.isDecorative = i.isDecorative || a.isDecorative || !1), r.hasImageTitle && A(i.title) && (a.title = i.title), r.hasDimensions && (A(i.width) && (a.dimensions.width = i.width), A(i.height) && (a.dimensions.height = i.height)), A(i["class"]) && Te(r.classList, i["class"]).each(function (e) {
a.classes = e.value
}), r.hasImageCaption && d(i.caption) && (a.caption = i.caption), r.hasAdvTab && (A(i.style) && (a.style = i.style), A(i.vspace) && (a.vspace = i.vspace), A(i.border) && (a.border = i.border), A(i.hspace) && (a.hspace = i.hspace), A(i.borderstyle) && (a.borderstyle = i.borderstyle)), t.setData(n))
}, ze = function (e, t, n, r) {
var a, i, o, l, s, u, c, m, d, g, f, p;
Me(t, r), Re(t, r), a = e, i = t, o = n, s = (l = r).getData(), u = s.src.value, (c = s.src.meta || {}).width || c.height || !i.hasDimensions || a.imageSize(u).then(function (e) {
o.open && l.setData({dimensions: e})
}), m = t, d = n, f = (g = r).getData(), p = Te(m.imageList, f.src.value), d.prevImage = p, g.setData({
images: p.map(function (e) {
return e.value
}).getOr("")
})
}, He = function (e, t, n) {
var r, a, i, o, l, s = H(e(n.style)), u = be({}, n);
return u.vspace = (r = s)["margin-top"] && r["margin-bottom"] && r["margin-top"] === r["margin-bottom"] ? R(String(r["margin-top"])) : "", u.hspace = (a = s)["margin-right"] && a["margin-left"] && a["margin-right"] === a["margin-left"] ? R(String(a["margin-right"])) : "", u.border = (i = s)["border-width"] ? R(String(i["border-width"])) : "", u.borderstyle = (o = s)["border-style"] ? String(o["border-style"]) : "", u.style = (l = t)(e(l(s))), u
}, ke = function (s, u, t, c) {
var e = c.getData();
c.block("Uploading image"), T(e.fileinput).fold(function () {
c.unblock()
}, function (n) {
var r, a = URL.createObjectURL(n),
i = Ce({url: u.url, basePath: u.basePath, credentials: u.credentials, handler: u.handler}), o = function () {
c.unblock(), URL.revokeObjectURL(a)
}, l = function (e) {
c.setData({src: {value: e, meta: {}}}), c.showTab("general"), ze(s, u, t, c)
};
r = n, new N(function (e, t) {
var n = new FileReader;
n.onload = function () {
e(n.result)
}, n.onerror = function () {
t(n.error.message)
}, n.readAsDataURL(r)
}).then(function (e) {
var t = s.createBlobCache(n, a, e);
u.automaticUploads ? i.upload(t).then(function (e) {
l(e), o()
})["catch"](function (e) {
o(), s.alertErr(e)
}) : (s.addToBlobCache(t), l(t.blobUri()), c.unblock())
})
})
}, je = function (h, b, v) {
return function (e, t) {
var n, r, a, i, o, l, s, u, c, m, d, g, f, p;
"src" === t.name ? ze(h, b, v, e) : "images" === t.name ? (c = h, m = b, d = v, f = (g = e).getData(), (p = Te(m.imageList, f.images)).each(function (e) {
"" === f.alt || d.prevImage.map(function (e) {
return e.text === f.alt
}).getOr(!1) ? "" === e.value ? g.setData({src: e, alt: d.prevAlt}) : g.setData({
src: e,
alt: e.text
}) : g.setData({src: e})
}), d.prevImage = p, ze(c, m, d, g)) : "alt" === t.name ? v.prevAlt = e.getData().alt : "style" === t.name ? (o = h, s = (l = e).getData(), u = He(o.parseStyle, o.serializeStyle, s), l.setData(u)) : "vspace" === t.name || "hspace" === t.name || "border" === t.name || "borderstyle" === t.name ? (n = h, r = e, a = be(Le(b.image), r.getData()), i = ie(n.normalizeCss, Ee(a, !1)), r.setData({style: i})) : "fileinput" === t.name ? ke(h, b, v, e) : "isDecorative" === t.name && (e.getData().isDecorative ? e.disable("alt") : e.enable("alt"))
}
}, Be = function (i) {
return function (e) {
var t, n, r, a = {prevImage: Te((t = e).imageList, t.image.src), prevAlt: t.image.alt, open: !0};
return {
title: "Insert/Edit Image",
size: "normal",
body: (r = e).hasAdvTab || r.hasUploadUrl || r.hasUploadHandler ? {
type: "tabpanel",
tabs: x([[Ne(r)], r.hasAdvTab ? [Ue(r)] : [], r.hasUploadTab && (r.hasUploadUrl || r.hasUploadHandler) ? [_e(r)] : []])
} : {type: "panel", items: Pe(r)},
buttons: [{type: "cancel", name: "cancel", text: "Cancel"}, {
type: "submit",
name: "save",
text: "Save",
primary: !0
}],
initialData: Le(e.image),
onSubmit: i.onSubmit(e),
onChange: je(i, e, a),
onClose: (n = a, function () {
n.open = !1
})
}
}
}, Fe = function (t) {
return function (e) {
return a = t.documentBaseURI.toAbsolute(e), new N(function (t) {
var n = document.createElement("img"), r = function (e) {
n.parentNode && n.parentNode.removeChild(n), t(e)
};
n.onload = function () {
var e = {width: M(n.width, n.clientWidth), height: M(n.height, n.clientHeight)};
r(N.resolve(e))
}, n.onerror = function () {
r(N.reject("Failed to get image dimensions for: " + a))
};
var e = n.style;
e.visibility = "hidden", e.position = "fixed", e.bottom = e.left = "0px", e.width = e.height = "auto", document.body.appendChild(n), n.src = a
}).then(function (e) {
return {width: String(e.width), height: String(e.height)}
});
var a
}
}, Ge = function (e) {
var n, t, r, a, i, o, l, s = {
onSubmit: function (n) {
return function (e) {
var t = be(Le(n.image), e.getData());
l.execCommand("mceUpdateImage", !1, Ee(t, n.hasAccessibilityOptions)), l.editorUpload.uploadImagesAuto(), e.close()
}
}, imageSize: Fe(l = e), addToBlobCache: function (e) {
o.editorUpload.blobCache.add(e)
}, createBlobCache: function (e, t, n) {
return i.editorUpload.blobCache.create({
blob: e,
blobUri: t,
name: e.name ? e.name.replace(/\.[^\.]+$/, "") : null,
filename: e.name,
base64: n.split(",")[1]
})
}, alertErr: function (e) {
a.windowManager.alert(e)
}, normalizeCss: function (e) {
return me(r, e)
}, parseStyle: function (e) {
return t.dom.parseStyle(e)
}, serializeStyle: (n = t = r = a = i = o = e, function (e, t) {
return n.dom.serializeStyle(e, t)
})
};
return {
open: function () {
Oe(e).then(Be(s)).then(e.windowManager.open)
}
}
}, We = function (u) {
u.addCommand("mceImage", Ge(u).open), u.addCommand("mceUpdateImage", function (e, s) {
u.undoManager.transact(function () {
return e = s, void ((l = de(t = u)) ? (n = oe(function (e) {
return me(t, e)
}, l), (r = c(c({}, n), e)).src ? pe(t, r) : (a = t, (i = l) && (o = a.dom.is(i.parentNode, "figure.image") ? i.parentNode : i, a.dom.remove(o), a.focus(), a.nodeChanged(), a.dom.isEmpty(a.getBody()) && (a.setContent(""), a.selection.setCursorLocation())))) : e.src && fe(t, c(c({}, ae()), e)));
var t, e, n, r, a, i, o, l
})
})
}, qe = function (i) {
return function (e) {
for (var t, n = e.length, r = function (e) {
e.attr("contenteditable", i ? "true" : null)
}; n--;) {
var a = e[n];
(t = a.attr("class")) && /\bimage\b/.test(t) && (a.attr("contenteditable", i ? "false" : null), ve.each(a.getAll("figcaption"), r))
}
}
};
a.add("image", function (e) {
var t, n;
(t = e).on("PreInit", function () {
t.parser.addNodeFilter("figure", qe(!0)), t.serializer.addNodeFilter("figure", qe(!1))
}), (n = e).ui.registry.addToggleButton("image", {
icon: "image",
tooltip: "Insert/edit image",
onAction: Ge(n).open,
onSetup: function (e) {
return n.selection.selectorChangedWithUnbind("img:not([data-mce-object],[data-mce-placeholder]),figure.image", e.setActive).unbind
}
}), n.ui.registry.addMenuItem("image", {
icon: "image",
text: "Image...",
onAction: Ge(n).open
}), n.ui.registry.addContextMenu("image", {
update: function (e) {
return ne(e) || "IMG" === e.nodeName && !k(e) ? ["image"] : []
}
}), We(e)
})
}();