maison_alexandra/www/js/tinymcenew/plugins/link/plugin.min.js

690 lines
29 KiB
JavaScript

!function () {
"use strict";
var n, t, e, r, o, i = tinymce.util.Tools.resolve("tinymce.PluginManager"),
u = tinymce.util.Tools.resolve("tinymce.util.VK"), a = function (n) {
return n.target_list
}, c = function (n) {
return n.rel_list
}, l = function (n) {
return n.link_class_list
}, p = function (n) {
return "boolean" == typeof n.link_assume_external_targets && n.link_assume_external_targets
}, f = function (n) {
return "boolean" == typeof n.link_context_toolbar && n.link_context_toolbar
}, s = function (n) {
return n.link_list
}, h = function (n) {
return "string" == typeof n.default_link_target
}, v = function (n) {
return n.default_link_target
}, g = a, d = function (n) {
return !1 !== a(n)
}, m = c, y = function (n) {
return c(n) !== undefined
}, x = l, k = function (n) {
return l(n) !== undefined
}, b = function (n) {
return !1 !== n.link_title
}, O = function (n) {
return "boolean" == typeof n.allow_unsafe_link_target && n.allow_unsafe_link_target
}, w = function (n) {
return !0 === n.link_quicklink
}, _ = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), A = tinymce.util.Tools.resolve("tinymce.Env"),
C = function (n) {
if (!A.ie || 10 < A.ie) {
var t = document.createElement("a");
t.target = "_blank", t.href = n, t.rel = "noreferrer noopener";
var e = document.createEvent("MouseEvents");
e.initMouseEvent("click", !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), i = t, u = e, document.body.appendChild(i), i.dispatchEvent(u), document.body.removeChild(i)
} else {
var r = window.open("", "_blank");
if (r) {
r.opener = null;
var o = r.document;
o.open(), o.write('<meta http-equiv="refresh" content="0; url=' + _.DOM.encode(n) + '">'), o.close()
}
}
var i, u
}, T = tinymce.util.Tools.resolve("tinymce.util.Tools"), N = function (n, t) {
var e, r, o = ["noopener"], i = n ? n.split(/\s+/) : [], u = function (n) {
return n.filter(function (n) {
return -1 === T.inArray(o, n)
})
};
return (i = t ? (e = u(e = i)).length ? e.concat(o) : o : u(i)).length ? (r = i, T.trim(r.sort().join(" "))) : null
}, S = function (n, t) {
return t = t || n.selection.getNode(), D(t) ? n.dom.select("a[href]", t)[0] : n.dom.getParent(t, "a[href]")
}, M = function (n) {
return n && "A" === n.nodeName && n.href
}, D = function (n) {
return n && "FIGURE" === n.nodeName && /\bimage\b/i.test(n.className)
}, z = function (n, t) {
var e, r;
(r = n.dom.select("img", t)[0]) && (e = n.dom.getParents(r, "a[href]", t)[0]) && (e.parentNode.insertBefore(r, e), n.dom.remove(e))
}, E = function (n, t, e) {
var r, o;
(o = n.dom.select("img", t)[0]) && (r = n.dom.create("a", e), o.parentNode.insertBefore(r, o), r.appendChild(o))
}, L = function (o, i) {
return function (r) {
o.undoManager.transact(function () {
var n = o.selection.getNode(), t = S(o, n), e = {
href: r.href,
target: r.target ? r.target : null,
rel: r.rel ? r.rel : null,
"class": r["class"] ? r["class"] : null,
title: r.title ? r.title : null
};
y(o.settings) || !1 !== O(o.settings) || (e.rel = N(e.rel, "_blank" === e.target)), r.href === i.href && (i.attach(), i = {}), t ? (o.focus(), r.hasOwnProperty("text") && ("innerText" in t ? t.innerText = r.text : t.textContent = r.text), o.dom.setAttribs(t, e), o.selection.select(t), o.undoManager.add()) : D(n) ? E(o, n, e) : r.hasOwnProperty("text") ? o.insertContent(o.dom.createHTML("a", e, o.dom.encode(r.text))) : o.execCommand("mceInsertLink", !1, e)
})
}
}, U = function (t) {
return function () {
t.undoManager.transact(function () {
var n = t.selection.getNode();
D(n) ? z(t, n) : t.execCommand("unlink")
})
}
}, P = function (n) {
return 0 < T.grep(n, M).length
}, R = function (n) {
var t = n.getAttribute("data-mce-href");
return t || n.getAttribute("href")
}, K = function (n) {
return !(/</.test(n) && (!/^<a [^>]+>[^<]+<\/a>$/.test(n) || -1 === n.indexOf("href=")))
}, q = S, I = function (n, t) {
var e = t ? t.innerText || t.textContent : n.getContent({format: "text"});
return e.replace(/\uFEFF/g, "")
}, j = N, V = function () {
for (var n = [], t = 0; t < arguments.length; t++) n[t] = arguments[t]
}, B = function (n) {
return function () {
return n
}
}, F = B(!1), W = B(!0), H = F, $ = W, G = function () {
return J
}, J = (r = {
fold: function (n, t) {
return n()
}, is: H, isSome: H, isNone: $, getOr: e = function (n) {
return n
}, getOrThunk: t = 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: e, orThunk: t, map: G, ap: G, each: function () {
}, bind: G, flatten: G, exists: H, forall: $, filter: G, equals: n = function (n) {
return n.isNone()
}, equals_: n, toArray: function () {
return []
}, toString: B("none()")
}, Object.freeze && Object.freeze(r), r), X = function (e) {
var n = function () {
return e
}, t = function () {
return o
}, r = function (n) {
return n(e)
}, o = {
fold: function (n, t) {
return t(e)
},
is: function (n) {
return e === n
},
isSome: $,
isNone: H,
getOr: n,
getOrThunk: n,
getOrDie: n,
getOrNull: n,
getOrUndefined: n,
or: t,
orThunk: t,
map: function (n) {
return X(n(e))
},
ap: function (n) {
return n.fold(G, function (n) {
return X(n(e))
})
},
each: function (n) {
n(e)
},
bind: r,
flatten: n,
exists: r,
forall: r,
filter: function (n) {
return n(e) ? o : J
},
equals: function (n) {
return n.is(e)
},
equals_: function (n, t) {
return n.fold(H, function (n) {
return t(e, n)
})
},
toArray: function () {
return [e]
},
toString: function () {
return "some(" + e + ")"
}
};
return o
}, Q = {
some: X, none: G, from: function (n) {
return null === n || n === undefined ? J : X(n)
}
}, Y = function (t) {
return function (n) {
return function (n) {
if (null === n) return "null";
var t = typeof n;
return "object" === t && Array.prototype.isPrototypeOf(n) ? "array" : "object" === t && String.prototype.isPrototypeOf(n) ? "string" : t
}(n) === t
}
}, Z = Y("string"), nn = Y("function"), tn = (o = Array.prototype.indexOf) === undefined ? function (n, t) {
return en(n, t)
} : function (n, t) {
return o.call(n, t)
}, en = function (n, t) {
for (var e = 0, r = n.length; e < r; ++e) if (n[e] === t) return e;
return -1
}, rn = Array.prototype.push, on = function (n) {
for (var t = [], e = 0, r = n.length; e < r; ++e) {
if (!Array.prototype.isPrototypeOf(n[e])) throw new Error("Arr.flatten item " + e + " was not an array, input: " + n);
rn.apply(t, n[e])
}
return t
}, un = function (n, t) {
var e = function (n, t) {
for (var e = n.length, r = new Array(e), o = 0; o < e; o++) {
var i = n[o];
r[o] = t(i, o, n)
}
return r
}(n, t);
return on(e)
}, an = (Array.prototype.slice, nn(Array.from) && Array.from, function (n, t) {
for (var e = 0; e < n.length; e++) {
var r = t(n[e], e);
if (r.isSome()) return r
}
return Q.none()
}), cn = function (n) {
return Z(n.value) ? n.value : ""
}, ln = function (n, o) {
var i = [];
return T.each(n, function (n) {
var t = Z(n.text) ? n.text : Z(n.title) ? n.title : "";
if (n.menu !== undefined) {
var e = ln(n.menu, o);
i.push({text: t, items: e})
} else {
var r = o(n);
i.push({text: t, value: r})
}
}), i
}, fn = function (t) {
return void 0 === t && (t = cn), function (n) {
return Q.from(n).map(function (n) {
return ln(n, t)
})
}
}, sn = {
sanitize: function (n) {
return fn(cn)(n)
}, sanitizeWith: fn, createUi: function (t, e) {
return function (n) {
return {name: t, type: "selectbox", label: e, items: n}
}
}, getValue: cn
}, gn = function (n) {
var t = n, e = function () {
return t
};
return {
get: e, set: function (n) {
t = n
}, clone: function () {
return gn(e())
}
}
}, dn = function (t, n) {
return an(n, function (n) {
return "items" in n ? dn(t, n.items) : Q.some(n).filter(function (n) {
return n.value === t
})
})
}, mn = function (t, n, e, r) {
var o = r[n], i = 0 < t.length;
return o !== undefined ? dn(o, e).map(function (n) {
return {url: {value: n.value, meta: {text: i ? t : n.text, attach: V}}, text: i ? t : n.text}
}) : Q.none()
}, pn = function (n, i) {
var u = gn(n.text), o = function (n, t) {
var e, r,
o = (e = i, r = t.name, "link" === r ? e.catalogs.link : "anchor" === r ? e.catalogs.anchor : Q.none()).getOr([]);
return mn(u.get(), t.name, o, n)
};
return {
onChange: function (n, t) {
return "url" === t.name ? function (n) {
if (u.get().length <= 0) {
var t = n.url.meta.text !== undefined ? n.url.meta.text : n.url.value;
return Q.some({text: t})
}
return Q.none()
}(n()) : (e = ["anchor", "link"], r = t.name, -1 < tn(e, r) ? o(n(), t) : ("text" === t.name && u.set(n().text), Q.none()));
var e, r
}
}
}, hn = function () {
return (hn = Object.assign || function (n) {
for (var t, e = 1, r = arguments.length; e < r; e++) for (var o in t = arguments[e]) Object.prototype.hasOwnProperty.call(t, o) && (n[o] = t[o]);
return n
}).apply(this, arguments)
}, vn = function (n) {
var e = Q.none(), t = [], r = function (n) {
o() ? u(n) : t.push(n)
}, o = function () {
return e.isSome()
}, i = function (n) {
!function (n, t) {
for (var e = 0, r = n.length; e < r; e++) t(n[e], e, n)
}(n, u)
}, u = function (t) {
e.each(function (n) {
setTimeout(function () {
t(n)
}, 0)
})
};
return n(function (n) {
e = Q.some(n), i(t), t = []
}), {
get: r, map: function (e) {
return vn(function (t) {
r(function (n) {
t(e(n))
})
})
}, isReady: o
}
}, yn = {
nu: vn, pure: function (t) {
return vn(function (n) {
n(t)
})
}
}, xn = function (t) {
var n = function (n) {
var r;
t((r = n, function () {
for (var n = [], t = 0; t < arguments.length; t++) n[t] = arguments[t];
var e = this;
setTimeout(function () {
r.apply(e, n)
}, 0)
}))
}, e = function () {
return yn.nu(n)
};
return {
map: function (r) {
return xn(function (e) {
n(function (n) {
var t = r(n);
e(t)
})
})
}, bind: function (e) {
return xn(function (t) {
n(function (n) {
e(n).get(t)
})
})
}, anonBind: function (e) {
return xn(function (t) {
n(function (n) {
e.get(t)
})
})
}, toLazy: e, toCached: function () {
var t = null;
return xn(function (n) {
null === t && (t = e()), t.get(n)
})
}, get: n
}
}, kn = {
nu: xn, pure: function (t) {
return xn(function (n) {
n(t)
})
}
}, bn = tinymce.util.Tools.resolve("tinymce.util.Delay"), On = function (n) {
var t = n.href;
return 0 < t.indexOf("@") && -1 === t.indexOf("//") && -1 === t.indexOf("mailto:") ? Q.some({
message: "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
preprocess: function (n) {
return hn({}, n, {href: "mailto:" + t})
}
}) : Q.none()
}, wn = function (u, n, a) {
return console.log("preprocessing"), an([On, (e = n, function (n) {
var t = n.href;
return !0 === e && !/^\w+:/i.test(t) || !1 === e && /^\s*www[\.|\d\.]/i.test(t) ? Q.some({
message: "The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",
preprocess: function (n) {
return hn({}, n, {href: "http://" + t})
}
}) : Q.none()
})], function (n) {
return n(a)
}).fold(function () {
return kn.pure(a)
}, function (i) {
return kn.nu(function (t) {
var e, n, r, o;
e = u, n = i.message, r = function (n) {
console.log("state", n), t(n ? i.preprocess(a) : a)
}, o = e.selection.getRng(), bn.setEditorTimeout(e, function () {
e.windowManager.confirm(n, function (n) {
e.selection.setRng(o), r(n)
})
})
})
});
var e
}, _n = function (n) {
var t = n.dom.select("a:not([href])"), e = un(t, function (n) {
var t = n.name || n.id;
return t ? [{text: t, value: "#" + t}] : []
});
return 0 < e.length ? Q.some([{text: "None", value: ""}].concat(e)) : Q.none()
}, An = function (n) {
if (k(n.settings)) {
var t = x(n.settings);
return sn.sanitize(t)
}
return Q.none()
}, Cn = tinymce.util.Tools.resolve("tinymce.util.XHR"), Tn = function (t) {
var e = function (n) {
return t.convertURL(n.value || n.url, "href")
}, n = s(t.settings);
return kn.nu(function (t) {
"string" == typeof n ? Cn.send({
url: n, success: function (n) {
return t(function (n) {
try {
return Q.some(JSON.parse(n))
} catch (t) {
return Q.none()
}
}(n))
}, error: function (n) {
return t(Q.none())
}
}) : "function" == typeof n ? n(function (n) {
return t(Q.some(n))
}) : t(Q.from(n))
}).map(function (n) {
return n.bind(sn.sanitizeWith(e))
})
}, Nn = function (n, t) {
if (y(n.settings)) {
var e = m(n.settings), r = t.is("_blank");
return (!1 === O(n.settings) ? sn.sanitizeWith(function (n) {
return j(sn.getValue(n), r)
}) : sn.sanitize)(e)
}
return Q.none()
}, Sn = [{text: "Current window", value: ""}, {text: "New window", value: "_blank"}], Mn = function (n) {
if (d(n.settings)) {
var t = g(n.settings);
return sn.sanitize(t).orThunk(function () {
return Q.some(Sn)
})
}
return Q.none()
}, Dn = function (n, t, e) {
var r = n.getAttrib(t, e);
return null !== r && 0 < r.length ? Q.some(r) : Q.none()
}, zn = function (d, m, p) {
return Tn(d).map(function (n) {
var t, e, r, o, i, u, a, c, l, f, s,
g = (e = m, r = p, o = (t = d).selection, i = t.dom, u = K(o.getContent()) ? Q.some(I(o, r)) : Q.none(), a = r ? Q.some(i.getAttrib(r, "href")) : Q.none(), c = h(e) ? Q.some(v(e)) : Q.none(), l = r ? Q.from(i.getAttrib(r, "target")) : c, f = Dn(i, r, "rel"), s = Dn(i, r, "class"), {
url: a,
text: u,
title: Dn(i, r, "title"),
target: l,
rel: f,
linkClass: s
});
return {
anchor: g,
catalogs: {targets: Mn(d), rels: Nn(d, g.target), classes: An(d), anchor: _n(d), link: n},
optNode: Q.from(p),
flags: {titleEnabled: b(m)}
}
})
}, En = function (m) {
var n, t, e;
(t = (n = m).settings, e = q(n), zn(n, t, e)).map(function (n) {
var u, a, c, l, t, e, r, o, i, f, s, g,
d = (u = m, c = (a = n).anchor.text, l = p(m.settings), function (n) {
var t = n.getData(), e = {
href: t.url.value,
text: t.text ? t.text : c.getOr(undefined),
target: t.target ? t.target : undefined,
rel: t.rel ? t.rel : undefined,
"class": t.classz ? t.classz : undefined,
title: t.title ? t.title : undefined
}, r = {
href: t.url.value,
attach: t.url.meta !== undefined && t.url.meta.attach ? t.url.meta.attach : function () {
}
}, o = L(u, r), i = U(u);
t.url.value ? ((c.is(t.text) || a.optNode.isNone() && !t.text) && delete e.text, wn(u, l, e).get(function (n) {
o(n)
}), n.close()) : i()
});
return e = d, o = (t = n).anchor.text.map(function () {
return {name: "text", type: "input", label: "Text to display"}
}).toArray(), i = t.flags.titleEnabled ? [{
name: "title",
type: "input",
label: "Title"
}] : [], f = {
url: {
value: (r = t).anchor.url.getOr(""), meta: {
attach: function () {
}, text: r.anchor.url.fold(function () {
return ""
}, function () {
return r.anchor.text.getOr("")
}), original: {value: r.anchor.url.getOr("")}
}
},
text: r.anchor.text.getOr(""),
title: r.anchor.title.getOr(""),
anchor: r.anchor.url.getOr(""),
link: r.anchor.url.getOr(""),
rel: r.anchor.rel.getOr(""),
target: r.anchor.target.getOr(""),
classz: r.anchor.linkClass.getOr("")
}, s = pn(f, t), g = t.catalogs, {
title: "Insert/Edit Link",
size: "normal",
body: {
type: "panel",
items: on([[{name: "url", type: "urlinput", filetype: "file", label: "URL"}], o, i, function (n) {
for (var t = [], e = function (n) {
t.push(n)
}, r = 0; r < n.length; r++) n[r].each(e);
return t
}([g.anchor.map(sn.createUi("anchor", "Anchors")), g.rels.map(sn.createUi("rel", "Rel")), g.targets.map(sn.createUi("target", "Open link in...")), g.link.map(sn.createUi("link", "Link list")), g.classes.map(sn.createUi("classz", "Class"))])])
},
buttons: [{type: "cancel", name: "cancel", text: "Cancel"}, {
type: "submit",
name: "save",
text: "Save",
primary: !0
}],
initialData: f,
onChange: function (t, n) {
var e = n.name;
s.onChange(t.getData, {name: e}).each(function (n) {
t.setData(n)
})
},
onSubmit: e
}
}).get(function (n) {
m.windowManager.open(n)
})
}, Ln = function (n, t) {
return n.dom.getParent(t, "a[href]")
}, Un = function (n) {
return Ln(n, n.selection.getStart())
}, Pn = function (n, t) {
if (t) {
var e = R(t);
if (/^#/.test(e)) {
var r = n.$(e);
r.length && n.selection.scrollIntoView(r[0], !0)
} else C(t.href)
}
}, Rn = function (n) {
return function () {
En(n)
}
}, Kn = function (n) {
return function () {
Pn(n, Un(n))
}
}, qn = function (r) {
r.on("click", function (n) {
var t = Ln(r, n.target);
t && u.metaKeyPressed(n) && (n.preventDefault(), Pn(r, t))
}), r.on("keydown", function (n) {
var t, e = Un(r);
e && 13 === n.keyCode && !0 === (t = n).altKey && !1 === t.shiftKey && !1 === t.ctrlKey && !1 === t.metaKey && (n.preventDefault(), Pn(r, e))
})
}, In = function (e) {
return function (t) {
var n = function (n) {
return t.setActive(!e.readonly && !!q(e, n.element))
};
return e.on("nodechange", n), function () {
return e.off("nodechange", n)
}
}
}, jn = function (e) {
return function (t) {
t.setDisabled(!P(e.dom.getParents(e.selection.getStart())));
var n = function (n) {
return t.setDisabled(!P(n.parents))
};
return e.on("nodechange", n), function () {
return e.off("nodechange", n)
}
}
}, Vn = function (n) {
n.addCommand("mceLink", function () {
w(n.settings) ? n.fire("contexttoolbar-show", {toolbarKey: "link-form"}) : Rn(n)()
})
}, Bn = function (n) {
n.addShortcut("Meta+K", "", function () {
n.execCommand("mceLink")
})
}, Fn = function (n) {
n.ui.registry.addToggleButton("link", {
icon: "link",
tooltip: "Insert/edit link",
onAction: Rn(n),
onSetup: In(n)
}), n.ui.registry.addButton("unlink", {icon: "unlink", onAction: U(n), onSetup: jn(n)})
}, Wn = function (n) {
n.ui.registry.addMenuItem("openlink", {
text: "Open link",
icon: "new-tab",
onAction: Kn(n),
onSetup: jn(n)
}), n.ui.registry.addMenuItem("link", {
icon: "link",
text: "Link...",
shortcut: "Meta+K",
onAction: Rn(n)
}), n.ui.registry.addMenuItem("unlink", {icon: "unlink", text: "Remove link", onAction: U(n), onSetup: jn(n)})
}, Hn = function (t) {
var e = ["link"], r = ["link", "unlink", "openlink"];
t.ui.registry.addContextMenu("link", {
update: function (n) {
return P(t.dom.getParents(n, "a")) ? r : e
}
})
}, $n = function (i) {
i.ui.registry.addContextForm("link-form", {
launch: {
type: "contextformtogglebutton",
icon: "link",
onSetup: In(i)
},
label: "Link",
predicate: function (n) {
return !!q(i, n) && f(i.settings)
},
initValue: function () {
var n = q(i);
return n ? R(n) : ""
},
commands: [{
type: "contextformtogglebutton",
icon: "link",
tooltip: "Link",
primary: !0,
onSetup: function (n) {
var t = i.selection.getNode();
return n.setActive(!!q(i, t)), In(i)(n)
},
onAction: function (n) {
var t = q(i), e = n.getValue();
if (t) i.dom.setAttrib(t, "href", e), i.selection.collapse(!1), n.hide(); else {
var r = {
href: e, attach: function () {
}
}, o = K(i.selection.getContent()) ? Q.some(I(i.selection, t)).filter(function (n) {
return 0 < n.length
}) : Q.none();
L(i, r)({href: e, text: o.getOr(e)}), n.hide()
}
}
}, {
type: "contextformtogglebutton",
icon: "unlink",
tooltip: "Remove link",
active: !1,
onSetup: function () {
return function () {
}
},
onAction: function (n) {
U(i)(), n.hide()
}
}]
})
};
i.add("link", function (n) {
Fn(n), Wn(n), Hn(n), $n(n), qn(n), Vn(n), Bn(n)
}), function Gn() {
}
}();